This skill should be used when creating skills, writing SKILL.md files, or when "create skill", "new skill", "validate skill", or "SKILL.md" are mentioned.
Creates and validates agent skills following the Agent Skills specification with archetype templates.
/plugin marketplace add outfitter-dev/agents/plugin install agent-kit@outfitterThis skill is limited to using the following tools:
references/best-practices.mdreferences/claude.mdreferences/codex.mdreferences/compatibility.mdreferences/implementations.mdreferences/invocations.mdreferences/patterns.mdreferences/quick-reference.mdscripts/init-skill.tstemplates/skill-archetypes/api-wrapper/scripts/client.tstemplates/skill-archetypes/dev-workflow/scripts/run.tstemplates/skill-archetypes/document-processor/scripts/process.tsCreate skills that follow the Agent Skills specification—an open format supported by Claude Code, Cursor, VS Code, GitHub, and other agent products.
Ask about the skill:
~/.claude/skills/, project .claude/skills/, or plugin)| Archetype | Use When | Example |
|---|---|---|
| simple | Basic skill without scripts | Quick reference, style guide |
| api-wrapper | Wrapping external APIs | GitHub API, Stripe API |
| document-processor | Working with file formats | PDF extractor, Excel analyzer |
| dev-workflow | Automating development tasks | Git workflow, project scaffolder |
| research-synthesizer | Gathering and synthesizing information | Competitive analysis, literature review |
Templates in templates/skill-archetypes/.
Run the init script:
bun run ${CLAUDE_PLUGIN_ROOT}/skills/skills-development/scripts/init-skill.ts <skill-name> <output-dir> --template <archetype>
Output directories:
~/.claude/skills/<skill-name>/.claude/skills/<skill-name>/<plugin-dir>/skills/<skill-name>/skill-name/
├── SKILL.md # Required: instructions + metadata
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation
└── assets/ # Optional: templates, resources
---
name: skill-name
description: What it does and when to use it. Include trigger keywords.
license: Apache-2.0 # optional
compatibility: Requires git and jq # optional
metadata: # optional
author: your-org
version: "1.0"
allowed-tools: Read Grep Glob # optional, experimental
user-invocable: true # optional, makes skill a /command
---
| Field | Required | Constraints |
|---|---|---|
name | Yes | 1-64 chars, lowercase/numbers/hyphens, must match directory |
description | Yes | 1-1024 chars, describes what + when |
user-invocable | No | Boolean, enables /skill-name command (Claude Code) |
license | No | License name or reference |
compatibility | No | 1-500 chars, environment requirements |
allowed-tools | No | Space-delimited tool list (experimental) |
metadata | No | Object for custom fields (see below) |
When user-invocable: true, the skill becomes callable as a slash command:
---
name: code-review
description: Reviews code for bugs and best practices...
user-invocable: true
---
Users can then invoke with /code-review instead of waiting for auto-activation. The skill content becomes the command prompt.
Custom fields must be nested under metadata:
---
name: my-skill
description: ...
metadata:
author: your-org
version: "1.0"
category: development
tags: [typescript, testing]
---
Top-level custom fields are not allowed and may cause parsing errors.
[WHAT] + [WHEN] + [TRIGGERS]
description: Extracts text and tables from PDF files, fills forms, merges documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
Checklist:
api-wrapper:
scripts/client.ts with API endpointsreferences/endpoints.md if API is largedocument-processor:
scripts/process.ts with format logicdev-workflow:
scripts/run.ts with commandsresearch-synthesizer:
Validate before committing. Use the CLI or run checks manually:
skills-ref validate ./my-skill
--- on line 1, closes with ---name and description present (required)--, leading/trailing hyphensanthropic or claude in namereferences/)After validation passes, review for quality:
| Aspect | Check |
|---|---|
| Discoverability | Would Claude know when to activate? |
| Conciseness | Does each paragraph justify its token cost? |
| Clarity | Are instructions step-by-step and actionable? |
# Skill Check: {skill-name}
**Status**: PASS | WARNINGS | FAIL
**Issues**: {critical} critical, {warnings} warnings
## Critical (must fix)
1. {issue with fix}
## Warnings (should fix)
1. {issue with fix}
## Strengths
- {what's done well}
Vague description:
# Before
description: Helps with PDF files
# After
description: Extracts text and tables from PDF files, fills forms, merges documents. Use when working with PDFs, forms, or document extraction.
Wrong voice:
# Before
description: I can help you process data files
# After
description: Processes data files and converts between formats (CSV, JSON, XML). Use when working with data files or format conversion.
Context window is shared. Only include what the agent doesn't already know. Challenge each paragraph—does it justify its token cost?
Descriptions inject into system prompt:
Keep SKILL.md under 500 lines. Move details to:
references/ - Detailed docs, API referencesscripts/ - Executable utilities (code never enters context)assets/ - Templates, data filesToken loading:
Match instruction specificity to task requirements:
See patterns.md for detailed examples.
--anthropic or claudeRecommended: Gerund form (processing-pdfs, reviewing-code)
Use allowed-tools to limit capabilities (experimental):
# Read-only
allowed-tools: Read Grep Glob
# With shell access
allowed-tools: Bash(git:*) Bash(jq:*) Read
# Full access (default)
# Omit field entirely
skills-ref validate# Find all skills
find ~/.claude/skills .claude/skills -name "SKILL.md" 2>/dev/null
# Check for tab characters (YAML requires spaces)
grep -P "\t" SKILL.md
# Find broken markdown links
grep -oE '\[[^]]+\]\([^)]+\)' SKILL.md | while read link; do
file=$(echo "$link" | sed 's/.*(\(.*\))/\1/')
[ ! -f "$file" ] && echo "Missing: $file"
done
Each tool has specific implementation details beyond the common spec:
--debug testing, troubleshooting, command/hook integration$skill-name invocation, AGENTS.md relationship, feature flags, built-in skillsSee implementations.md for storage paths and platform-specific notes.
This 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.