From shipshitdev-library
Guides creation of effective skills for Claude Code, covering SKILL.md structure, bundled resources (scripts, references, assets), and activation metadata.
How this skill is triggered — by the user, by Claude, or both
Slash command
/shipshitdev-library:skill-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Skills are modular packages that add task-specific workflows, tool instructions,
Skills are modular packages that add task-specific workflows, tool instructions, domain knowledge, scripts, references, and assets.
Every skill consists of a required SKILL.md file and optional bundled resources:
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter metadata (required)
│ │ ├── name: (required)
│ │ └── description: (required)
│ └── Markdown instructions (required)
└── Bundled Resources (optional)
├── scripts/ - Executable code (Python/Bash/etc.)
├── references/ - Documentation intended to be loaded into context as needed
└── assets/ - Files used in output (templates, icons, fonts, etc.)
Metadata: The name and description in YAML frontmatter determine when
the skill is activated. The description must include the task, trigger phrases,
and boundaries; avoid client-specific narration.
scripts/)Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten.
scripts/rotate_pdf.py for PDF rotation tasksreferences/)Documentation and reference material loaded only when required by the current task.
references/finance.md for financial schemas, references/mnda.md for company NDA template, references/policies.md for company policies, references/api_docs.md for API specificationsreferences/.assets/)Files not intended to be loaded into context, but rather used within the output the agent produces.
assets/logo.png for brand assets, assets/slides.pptx for PowerPoint templates, assets/frontend-template/ for HTML/React boilerplate, assets/font.ttf for typographySkills use a three-level loading system to manage context efficiently:
*Unlimited because scripts can be executed without reading into context window.
Follow the "Skill Creation Process" in order. Skip a step only when its precondition is already satisfied and note the reason.
Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill.
To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback.
For example, when building an image-editor skill, relevant questions include:
Ask at most one clarifying question unless missing input makes the skill unsafe or impossible to create. Put uncertain assumptions in the draft.
Conclude this step when trigger phrases, supported tasks, and excluded tasks are known.
To turn concrete examples into an effective skill, analyze each example by:
Example: When building a pdf-editor skill to handle queries like "Help me rotate this PDF," the analysis shows:
scripts/rotate_pdf.py script would be helpful to store in the skillExample: When designing a frontend-webapp-builder skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows:
assets/hello-world/ template containing the boilerplate HTML/React project files would be helpful to store in the skillExample: When building a big-query skill to handle queries like "How many users have logged in today?" the analysis shows:
references/schema.md file documenting the table schemas would be helpful to store in the skillTo establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets.
Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step.
When creating a new skill from scratch, always run the init_skill.py script.
The script generates the required directory, frontmatter, and resource folders.
Usage:
scripts/init_skill.py <skill-name> --path <output-directory>
The script:
scripts/, references/, and assets/After initialization, replace the generated SKILL.md placeholders and delete any unused example files.
When editing the skill, include only instructions that change another agent's observable behavior: triggers, required actions, forbidden actions, order gates, tool choices, output fields, limits, fallbacks, or evidence requirements.
Start implementation with the reusable resources identified above: scripts/,
references/, and assets/. If a required asset or source document is missing,
ask for that item or mark the affected workflow unsupported.
Also, delete any example files and directories not needed for the skill. The initialization script creates example files in scripts/, references/, and assets/ to demonstrate structure, but most skills won't need all of them.
Writing Style: Write the entire skill using imperative/infinitive form (verb-first instructions), not second person. Use objective, instructional language (e.g., "To accomplish X, do Y" rather than "You should do X" or "If you need to do X"). This maintains consistency and clarity for AI consumption.
To complete SKILL.md, answer the following questions:
Once the skill is ready, it should be packaged into a distributable zip file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements:
scripts/package_skill.py <path/to/skill-folder>
Optional output directory specification:
scripts/package_skill.py <path/to/skill-folder> ./dist
The packaging script will:
Validate the skill automatically, checking:
Package the skill if validation passes, creating a zip file named after the skill (e.g., my-skill.zip) that includes all files and maintains the proper directory structure for distribution.
If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again.
After testing the skill, use observed failures or repeated friction to update SKILL.md or bundled resources.
Iteration workflow:
npx claudepluginhub shipshitdev/skills --plugin worktreeGuides users in creating or updating skills that extend Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guides users through creating or updating skills that extend Claude's capabilities with specialized knowledge, workflows, and tool integrations.
Guides users through creating and updating skills that extend Claude's capabilities with specialized knowledge, workflows, and tool integrations. Includes anatomy of a skill, metadata best practices, and bundled resource patterns.