add-skill
Add Skill
Create properly structured Claude Code skills from user requirements.
Quick Mode
For rapid creation, user can provide all info at once:
/add-skill name=my-skill purpose="Does X" trigger="when user asks for Y"
Parse and generate without interactive prompts.
Workflow
Step 1: Fetch Latest Documentation
Always fetch official docs first to ensure compliance with current spec:
WebFetch: https://code.claude.com/docs/en/skills
Prompt: Extract skill file format, required fields, naming rules, and best practices
If WebFetch fails, fallback:
WebSearch: "Claude Code skills SKILL.md format site:code.claude.com"
Step 2: Gather Requirements
Ask user (or parse from quick mode):
- Scope: Global skill or repo-local skill?
- Global →
~/.claude/skills/{skill-name}/(available in all projects) - Repo-local →
.claude/skills/{skill-name}/(only this repo, committed with code)
- Global →
- Name: lowercase, hyphens only (prefer gerund:
processing-pdfs,testing-code) - Purpose: What does it do? (1-2 sentences)
- Trigger: When should Claude use it? (keywords, scenarios)
- Complexity: Instructions-only, or needs scripts/references?
- Freedom level: Rigid (exact steps) vs flexible (general guidance)?
Step 3: Create Skill Structure
{base-path}/skills/{skill-name}/
├── SKILL.md # Required: Main instructions (<500 lines)
├── scripts/ # Optional: Executable code
│ └── main.py
└── references/ # Optional: Detailed docs (one level deep)
└── examples.md
Step 4: Generate SKILL.md
---
name: {skill-name}
description: {What it does in third person}. Use when {trigger conditions}.
---
# {Skill Title}
{Brief overview - assume Claude is smart, only add context it doesn't already have}
## Quick Start
{Minimal working example or first step}
## Instructions
{Step-by-step guidance with appropriate freedom level}
## Advanced Features
**Feature A**: See [references/feature-a.md](references/feature-a.md)
Step 5: Check Line Count & Apply Progressive Disclosure
After drafting SKILL.md, count its lines. If approaching or exceeding 500 lines:
- Inform the user: "The SKILL.md is {N} lines — exceeding the recommended 500-line limit."
- Identify splittable sections: detailed references, long examples, advanced features
- Move to reference files:
references/{topic}.md— one level deep only - Replace in SKILL.md with a short summary + link
- Add table of contents to any reference file over 100 lines
Step 6: Validate
Run through the validation checklist before finalizing.
Step 7: Verify
ls -la ~/.claude/skills/{skill-name}/
cat ~/.claude/skills/{skill-name}/SKILL.md
Test with: claude --debug to check for loading errors.
Naming Rules
- Length: 1-64 characters
- Format: lowercase letters, numbers, hyphens only
- Prefer gerund form:
processing-pdfs,testing-code,writing-documentation - Acceptable alternatives:
pdf-processing,process-pdfs - Not allowed: start/end with
-, consecutive--, reserved words (anthropic,claude), XML tags - Avoid: vague names (
helper,utils,tools), overly generic (documents,data) - Must match: folder name
Description Rules
- Maximum: 1024 characters, non-empty, no XML tags
- Always third person: "Processes Excel files" not "I can help you"
- Include both: what it does AND when to use it
- Be specific: Claude uses descriptions to choose from 100+ skills
Good:
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.
Bad: "Helps with documents", "Processes data", "Does stuff with files"
Core Principles
Conciseness
Challenge each piece of information:
- "Does Claude really need this explanation?"
- "Can I assume Claude knows this?"
- "Does this paragraph justify its token cost?"
Degrees of Freedom
| Freedom | Use When | Example |
|---|---|---|
| High (text instructions) | Multiple valid approaches | Code review guidelines |
| Medium (pseudocode/params) | Preferred pattern exists | Report generation template |
| Low (exact scripts) | Fragile operations, consistency critical | Database migrations |
Consistent Terminology
Pick one term and use it throughout. Don't mix "API endpoint" / "URL" / "API route".
Patterns
Workflow with Checklist
For complex multi-step operations, provide a copyable checklist.
Feedback Loop
Run validator → fix errors → repeat until passing.
Conditional Workflow
Guide through decision points: Creating new? → "Creation workflow" / Editing existing? → "Editing workflow"
Scripts Best Practices
- Handle errors explicitly — don't punt to Claude
- No voodoo constants — justify and document all values
- List dependencies with install instructions
- Make execution intent clear: "Run
script.py" (execute) vs "Seescript.py" (reference) - Use forward slashes in all file paths
- MCP tool references — use fully qualified names:
ServerName:tool_name
Anti-Patterns
- Explaining things Claude already knows
- Offering too many tool/library options — provide a default with escape hatch
- Time-sensitive information — use
<details>tag for old patterns - Deeply nested references (file → file → file)
- Assuming packages are installed without install instructions
Validation Checklist
Core Quality
- Name: lowercase, numbers, hyphens only, 1-64 chars, no reserved words
- Description: third person, specific, includes what + when, under 1024 chars
- SKILL.md body under 500 lines
- Additional details in separate reference files (one level deep)
- No time-sensitive information
- Consistent terminology throughout
- Concrete examples (not abstract)
- Progressive disclosure used appropriately
Scripts (if applicable)
- Scripts handle errors explicitly
- No voodoo constants (all values justified)
- Required packages listed with install instructions
- Forward slashes in all paths
Testing
- Tested with real usage scenarios
- Works across target models (Haiku needs more guidance, Opus needs less)
Further Reading
- Eval-driven development: See references/eval-driven-development.md
- Examples: See references/examples.md
- Official docs: https://code.claude.com/docs/en/skills
More from htlin222/dotfiles
cpp
Write modern C++ with RAII, smart pointers, and STL. Use for C++ development, memory safety, or performance optimization.
130refactor
Refactor code for quality and maintainability. Use for cleanup and tech debt reduction.
74data-science
Data analysis, SQL queries, BigQuery operations, and data insights. Use for data analysis tasks and queries.
52c-lang
Write efficient C code with proper memory management and system calls. Use for C optimization, memory issues, or system programming.
46quarto-book
Generate Quarto Book project structure with chapters, configuration, and output settings. Use when user wants to create a book, multi-chapter document, technical manual, or asks about Quarto book setup.
45scientific-figure-assembly
Assemble multi-panel scientific figures with panel labels (A, B, C) at publication quality (300 DPI) using R. Use when combining individual plots into journal-ready figures.
43