This skill should be used when the user asks to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", "SKILL.md format", "skill frontmatter", "skill triggers", "trigger phrases for skills", "progressive disclosure", "skill references folder", "skill examples folder", "validate skill", or needs guidance on skill structure, file organization, writing style, or skill development best practices for Claude Code plugins.
/plugin marketplace add sjnims/plugin-dev/plugin install plugin-dev@plugin-dev-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
examples/complete-skill.mdexamples/frontmatter-templates.mdexamples/minimal-skill.mdreferences/skill-creation-workflow.mdreferences/skill-creator-original.mdThis skill provides guidance for creating effective skills for Claude Code plugins.
Skills are modular, self-contained packages that extend Claude's capabilities by providing specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific domains or tasks—they transform Claude from a general-purpose agent into a specialized agent equipped with procedural knowledge that no model can fully possess.
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 Quality: The name and description in YAML frontmatter determine when Claude will use the skill. Be specific about what the skill does and when to use it. Use the third-person (e.g. "This skill should be used when..." instead of "Use this skill when...").
Optionally restrict which tools Claude can use when the skill is active:
---
name: code-reviewer
description: Review code for best practices...
allowed-tools: Read, Grep, Glob
---
Use allowed-tools for:
When specified, Claude can only use the listed tools without needing permission. If omitted, Claude follows the standard permission model.
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 intended to be loaded as needed into context.
references/schema.md for database schemas, references/api_docs.md for API specificationsassets/)Files not intended to be loaded into context, but rather used within the output Claude produces.
assets/logo.png for brand assets, assets/slides.pptx for templatesSkills use a three-level loading system to manage context efficiently:
*Unlimited because scripts can be executed without reading into context window.
To create a skill, follow these six steps. For detailed instructions on each step, see references/skill-creation-workflow.md.
mkdir -p skills/skill-name/{references,examples,scripts}Plugin skills live in the plugin's skills/ directory:
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── commands/
├── agents/
└── skills/
└── my-skill/
├── SKILL.md
├── references/
├── examples/
└── scripts/
Claude Code automatically discovers skills:
skills/ directorySKILL.mdPlugin skills are distributed as part of the plugin, not as separate ZIP files. Users get skills when they install the plugin.
Test skills by installing plugin locally:
# Test with --plugin-dir
claude --plugin-dir /path/to/plugin
# Ask questions that should trigger the skill
# Verify skill loads correctly
Study the skills in this plugin as examples of best practices:
hook-development skill:
agent-development skill:
plugin-settings skill:
Each demonstrates progressive disclosure and strong triggering.
Before finalizing a skill:
Structure:
name and description fieldsallowed-tools field if restricting tool accessDescription Quality:
Content Quality:
Testing:
skill-name/
└── SKILL.md
Good for: Simple knowledge, no complex resources needed
skill-name/
├── SKILL.md
├── references/
│ └── detailed-guide.md
└── examples/
└── working-example.sh
Good for: Most plugin skills with detailed documentation
skill-name/
├── SKILL.md
├── references/
│ ├── patterns.md
│ └── advanced.md
├── examples/
│ ├── example1.sh
│ └── example2.json
└── scripts/
└── validate.sh
Good for: Complex domains with validation utilities
DO:
DON'T:
Copy-paste ready skill templates in examples/:
examples/minimal-skill.md - Bare-bones skill with just SKILL.md (git conventions example)examples/complete-skill.md - Full skill with references/, examples/, and scripts/ (API testing example)examples/frontmatter-templates.md - Quick-reference frontmatter patterns for common use casesFor detailed guidance, consult:
references/skill-creation-workflow.md - Plugin-specific skill creation workflow (recommended for plugin skills)references/skill-creator-original.md - Original generic skill-creator methodology (includes init/packaging scripts for standalone skills)Plugin-dev's skills demonstrate best practices:
../hook-development/ - Progressive disclosure, utilities../agent-development/ - AI-assisted creation, references../mcp-integration/ - Comprehensive references../plugin-settings/ - Real-world examples../command-development/ - Clear critical concepts../plugin-structure/ - Good organizationThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.