| name | skill-creator |
| description | Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit or optimize an existing skill, write test cases, or improve a skill's description for better triggering accuracy. Trigger whenever the user says "create a skill", "make a skill for X", "turn this into a skill", "improve this skill", or wants to capture a workflow as a reusable skill. |
Skill Creator
A skill for creating new skills and iteratively improving them.
At a high level, the process of creating a skill goes like this:
- Decide what you want the skill to do and roughly how it should do it
- Write a draft of the skill
- Create a few test prompts and run claude-with-access-to-the-skill on them
- Help the user evaluate the results both qualitatively and quantitatively
- Rewrite the skill based on feedback from evaluation
- Repeat until satisfied
- Expand the test set and try again at larger scale
Your job when using this skill is to figure out where the user is in this process and then jump in and help them progress through these stages.
Note on eval infrastructure: The full evaluation workflow (benchmark scripts, eval-viewer, grading agents) requires additional scripts in skill-creator/scripts/, skill-creator/agents/, and skill-creator/eval-viewer/. These are not bundled with this base template. Without them, follow the qualitative evaluation workflow described in the Claude.ai-specific instructions section โ it works just as well for most skill development.
Communicating with the user
Pay attention to context cues to understand how to phrase your communication. Users range from experienced developers to complete beginners. Briefly explain terms if in doubt.
Creating a skill
Capture Intent
Start by understanding the user's intent. The current conversation might already contain a workflow the user wants to capture. If so, extract answers from the conversation history first โ the tools used, the sequence of steps, corrections the user made, input/output formats observed. The user may need to fill gaps.
- What should this skill enable Claude to do?
- When should this skill trigger? (what user phrases/contexts)
- What's the expected output format?
- Should we set up test cases to verify the skill works?
Interview and Research
Proactively ask questions about edge cases, input/output formats, example files, success criteria, and dependencies. Wait to write test prompts until you've got this part ironed out.
Check available MCPs โ if useful for research, use them. Come prepared with context to reduce burden on the user.
Write the SKILL.md
Based on the user interview, fill in these components:
- name: Skill identifier (lowercase-with-hyphens, matches directory name)
- description: When to trigger, what it does. This is the primary triggering mechanism โ include both what the skill does AND specific contexts for when to use it. Make it slightly "pushy" โ lean toward triggering when relevant, not away.
- the rest of the skill body: Instructions, examples, output formats
Skill Writing Guide
Anatomy of a Skill
skill-name/
โโโ SKILL.md (required)
โ โโโ YAML frontmatter (name, description required)
โ โโโ Markdown instructions
โโโ Bundled Resources (optional)
โโโ scripts/ - Executable code for deterministic/repetitive tasks
โโโ references/ - Docs loaded into context as needed
โโโ assets/ - Files used in output (templates, icons, fonts)
Progressive Disclosure
Skills use a three-level loading system:
- Metadata (name + description) โ Always in context (~100 words)
- SKILL.md body โ In context whenever skill triggers (<500 lines ideal)
- Bundled resources โ As needed (unlimited)
Keep SKILL.md under 500 lines. If approaching this limit, add an additional layer of hierarchy with clear pointers to follow-up files.
Domain organization: When a skill supports multiple domains/frameworks, organize by variant:
cloud-deploy/
โโโ SKILL.md (workflow + selection)
โโโ references/
โโโ aws.md
โโโ gcp.md
โโโ azure.md
Writing Patterns
Prefer the imperative form in instructions.
Defining output formats:
## Report structure
ALWAYS use this exact template:
# [Title]
## Executive summary
## Key findings
## Recommendations
Examples pattern:
## Commit message format
**Example 1:**
Input: Added user authentication with JWT tokens
Output: feat(auth): implement JWT-based authentication
Writing Style
Explain to the model why things are important rather than heavy-handed MUSTs. Use theory of mind. Start by writing a draft, then look at it with fresh eyes and improve it. If you find yourself writing ALWAYS or NEVER in all caps, reframe and explain the reasoning instead.
Test Cases
After writing the skill draft, come up with 2โ3 realistic test prompts โ the kind a real user would actually say. Share them with the user for confirmation, then run them.
Running and evaluating test cases
Without eval infrastructure (qualitative)
For each test case:
- Read the skill's SKILL.md
- Follow its instructions to accomplish the test prompt yourself
- Present the output to the user
- Ask for feedback: "How does this look? Anything you'd change?"
- Improve the skill based on feedback and repeat
Organize outputs into iteration directories on the filesystem:
{skill-name}-workspace/
โโโ iteration-1/
โ โโโ eval-0/output.md
โ โโโ eval-1/output.md
โโโ iteration-2/
โโโ ...
With eval infrastructure (if scripts/ is available)
If skill-creator/scripts/ exists, follow the full eval workflow:
- Save test cases to
evals/evals.json
- Spawn with-skill and baseline subagents in parallel for each test case
- Draft assertions while runs are in progress
- Grade results and aggregate into
benchmark.json
- Launch the viewer:
python -m scripts.aggregate_benchmark + eval-viewer/generate_review.py
- Read
feedback.json after user review
- Improve and repeat
See agents/grader.md, agents/analyzer.md, and references/schemas.md if those files exist.
Improving the skill
How to think about improvements
-
Generalize from the feedback. The skill will run many times across many prompts. Avoid overfitting to the test cases โ use different metaphors or patterns if something is stubborn.
-
Keep the prompt lean. Remove things that aren't pulling their weight. If the skill is making the model waste time on unproductive steps, cut those parts.
-
Explain the why. Try hard to explain the reasoning behind each instruction. LLMs respond better to understanding than to rigid rules.
-
Look for repeated work. If test runs all independently wrote the same helper script, bundle it in scripts/.
The iteration loop
- Apply improvements to the skill
- Rerun all test cases into a new
iteration-{N+1}/ directory
- Present outputs to the user (or use viewer if available)
- Read feedback, improve, repeat
Keep going until:
- The user says they're happy
- The feedback is all empty (everything looks good)
- You're not making meaningful progress
Description Optimization
The description field is the primary mechanism that determines whether Claude invokes a skill. After creating or improving a skill, offer to optimize it.
Manual approach (without scripts)
- Write 10 test queries โ half should trigger the skill, half should not
- For each query, determine whether the current description would cause Claude to use this skill
- Identify patterns in what the description misses
- Revise the description to cover the missed cases while excluding the non-cases
- Repeat until precision and recall are both high
Automated approach (if scripts/run_loop.py is available)
- Generate 20 eval queries (10 should-trigger, 10 should-not-trigger) and save as JSON
- Run:
python -m scripts.run_loop --eval-set <path> --skill-path <path> --max-iterations 5
- Apply
best_description from the JSON output to the skill's frontmatter
Claude.ai-specific instructions
In Claude.ai, the core workflow is the same (draft โ test โ review โ improve โ repeat), but subagents are not available. Adapt as follows:
- Running test cases: Read the skill's SKILL.md, then follow its instructions yourself for each test prompt, one at a time
- Reviewing results: Present results directly in the conversation
- Benchmarking: Skip quantitative benchmarking โ focus on qualitative feedback
- Description optimization: Run the manual approach above
Updating an existing skill
- Preserve the original name (directory name and frontmatter
name field)
- Read the existing SKILL.md before editing
- If the installed skill path may be read-only, copy to a writable location first
Three-tier skill architecture (this template)
New skills created with this skill go into .ai/skills/{name}/SKILL.md (source of truth).
Run /update-skills after creating or editing to sync:
.claude/skills/{name}/SKILL.md โ thin wrapper for Claude Code
.github/skills/{name}/SKILL.md โ full copy for GitHub Copilot