Skill Creator
$ARGUMENTS
Create a new skill following the Agent Skills standard.
Workflow
- Capture intent -- ask: what should the skill do? Who invokes it?
- Classify -- task, hybrid, or knowledge? (see Classification Guide below)
- Interview -- gather: framework, tools, scope, output format, constraints
- Write SKILL.md -- frontmatter + body, under 500 lines
- Create supporting files -- reference/, templates/, scripts/ as needed
- Test and iterate -- invoke, observe, refine
Frontmatter Reference
| Field |
Type |
Required |
Description |
name |
string |
yes |
Lowercase, hyphens only, max 64 chars |
description |
string |
yes |
Third person, max 1024 chars, include key terms |
effort |
low/medium/high/xhigh/max |
no |
Controls model thinking budget (xhigh added for Opus 4.7) |
disable-model-invocation |
bool |
no |
true = only user can trigger (task skills) |
user-invocable |
bool |
no |
false = knowledge skill, Claude auto-loads |
allowed-tools |
csv or YAML list |
no |
Restrict tool access for safety; YAML-style lists accepted |
disallowedTools |
csv or YAML list |
no |
Block specific tools (plugin-shipped agents) |
model |
string |
no |
Override default model (accepts full IDs like claude-opus-4-8) |
context |
string |
no |
fork to run in isolated subagent |
agent |
string |
no |
Agent type to use when context: fork |
skills |
csv |
no |
Auto-load skills for the invoked subagent |
argument-hint |
string |
no |
Shown in autocomplete, e.g. "[target]" |
hooks |
object |
no |
Lifecycle hooks (PreToolUse, PostToolUse, Stop) scoped to the skill invocation |
maxTurns |
int |
no |
Cap turns when skill spawns a subagent |
memory |
user/project/local |
no |
Persistent memory scope (agents only) |
Classification Guide
| Type |
When to use |
Key fields |
| Task |
User-triggered actions with side effects (build, deploy, commit) |
disable-model-invocation: true, allowed-tools |
| Hybrid |
Both user and Claude invoke (review, analyze) |
defaults |
| Knowledge |
Domain patterns Claude auto-loads (clean-code, api-patterns) |
user-invocable: false |
Writing Guidelines
- Description: third person ("Generates...", "Provides..."), min 50 chars, include searchable key terms and a trigger hint (e.g., "Use when..."). Short descriptions cause over-triggering — adjacent skills fight for the same query.
- Name: lowercase, hyphens, max 64 chars -- match the directory name
- Length: SKILL.md under 500 lines; use
reference/ for overflow
- Be concise: Claude is smart -- give structure, not lectures
- Degrees of freedom: be specific on format/constraints, flexible on implementation
- File references: max 1 level deep (e.g.,
reference/details.md)
- Use
$ARGUMENTS: place it early so user input is visible
- Tables over prose: for options, patterns, mappings
Mandatory Sections (meta-architect audit criteria)
Every SKILL.md must contain all five, or it will lower the toolkit quality score:
- Description ≥50 chars with trigger hint in frontmatter
- At least one concrete example — fenced code block or
## Example section
- Hard rules using uppercase markers:
MUST, NEVER, CRITICAL, MANDATORY, or DO NOT
- "When NOT to Use" section — list 2-3 adjacent skills and the boundary between them
- Under 500 lines — split into
reference/ if needed
These map directly to the mutation strategies in meta-architect.md:
add_example, add_constraint, add_edge_case, restructure.
Rules vs Gotchas — different semantic buckets
Split the "hard rules" criterion into two sections when both apply:
## Rules — prescriptive process constraints (always-true MUST / NEVER): "MUST form a testable hypothesis before changing code", "NEVER force-push main". Required in every skill.
## Gotchas — environment-specific traps the agent would miss without being told, taken from Anthropic's best practices. Example from their docs: "The users table uses soft deletes. Queries must include WHERE deleted_at IS NULL or results will include deactivated accounts." Add this section only when real domain traps exist — do not pad with a (none) placeholder.
Directory Structure
skill-name/
SKILL.md # Main instructions (required, <500 lines)
reference/ # Detailed docs (loaded on-demand)
templates/ # Reusable templates for output
scripts/ # Executable helper scripts
Only create subdirectories when the skill needs them. Most skills are a single SKILL.md.
SKILL.md Template
---
name: {name}
description: "{Third-person description, min 50 chars, with trigger hint like 'Use when...'}"
argument-hint: "[hint]"
allowed-tools: Read, Grep, Glob
---
# {Title}
$ARGUMENTS
{One-line purpose statement.}
## Usage
\`\`\`
/{name} [arguments]
\`\`\`
## What This Command Does
1. **Step one**
2. **Step two**
3. **Step three**
## Example
\`\`\`
/{name} example-argument
\`\`\`
{Expected observable behavior.}
## Rules
- **MUST** {non-negotiable rule 1}
- **NEVER** {forbidden action}
- **CRITICAL**: {safety constraint}
## Gotchas
- {environment-specific trap the agent would miss — concrete, not general}
- {non-obvious behavior of a tool, API, or data layout}
## When NOT to Use
- For {adjacent use case} -- use `/{other-skill}` instead
- For {another case} -- use `/{another-skill}`
- If {precondition} is not met
Leave out ## Gotchas entirely when the skill has no domain-specific traps — it is not mandatory, and a stub with nothing concrete is worse than no section.
Quality Checklist
Before finalizing, verify:
Evaluation
After creating the skill, test it:
- Invoke with a representative prompt
- Check output matches expected structure
- Verify dynamic injection (
$ARGUMENTS) works
- Test with varied argument patterns
- Confirm
allowed-tools are sufficient but not excessive
- Iterate: tighten instructions where output diverges
Installation
After creating the skill:
- Verify the skill directory exists under
app/skills/{name}/
- Update
skills-catalog.md if it exists
- Update
ARCHITECTURE.md skill counts if referenced
- Run
validate.sh if available
- Run
evaluate-skills.sh if available
Common Mistakes
| Mistake |
Fix |
| Description too vague |
Add specific terms: "Python", "REST API", "migration" |
| SKILL.md too long |
Move details to reference/ subdirectory |
Missing $ARGUMENTS |
Add after the H1 heading for task/hybrid skills |
| Over-specifying steps |
Give structure, let Claude fill details |
| Wrong classification |
Task = side effects, Knowledge = patterns, Hybrid = both |
1---2name: skill-creator3description: Creates new skills from templates via guided workflow. Triggers: new skill, create skill, skill scaffold, skill template.4---56# Skill Creator78$ARGUMENTS910Create a new skill following the Agent Skills standard.1112## Workflow13141. **Capture intent** -- ask: what should the skill do? Who invokes it?152. **Classify** -- task, hybrid, or knowledge? (see Classification Guide below)163. **Interview** -- gather: framework, tools, scope, output format, constraints174. **Write SKILL.md** -- frontmatter + body, under 500 lines185. **Create supporting files** -- reference/, templates/, scripts/ as needed196. **Test and iterate** -- invoke, observe, refine2021## Frontmatter Reference2223| Field | Type | Required | Description |24|-------|------|----------|-------------|25| `name` | string | yes | Lowercase, hyphens only, max 64 chars |26| `description` | string | yes | Third person, max 1024 chars, include key terms |27| `effort` | low/medium/high/xhigh/max | no | Controls model thinking budget (xhigh added for Opus 4.7) |28| `disable-model-invocation` | bool | no | `true` = only user can trigger (task skills) |29| `user-invocable` | bool | no | `false` = knowledge skill, Claude auto-loads |30| `allowed-tools` | csv or YAML list | no | Restrict tool access for safety; YAML-style lists accepted |31| `disallowedTools` | csv or YAML list | no | Block specific tools (plugin-shipped agents) |32| `model` | string | no | Override default model (accepts full IDs like `claude-opus-4-8`) |33| `context` | string | no | `fork` to run in isolated subagent |34| `agent` | string | no | Agent type to use when `context: fork` |35| `skills` | csv | no | Auto-load skills for the invoked subagent |36| `argument-hint` | string | no | Shown in autocomplete, e.g. `"[target]"` |37| `hooks` | object | no | Lifecycle hooks (`PreToolUse`, `PostToolUse`, `Stop`) scoped to the skill invocation |38| `maxTurns` | int | no | Cap turns when skill spawns a subagent |39| `memory` | user/project/local | no | Persistent memory scope (agents only) |4041## Classification Guide4243| Type | When to use | Key fields |44|------|-------------|------------|45| **Task** | User-triggered actions with side effects (build, deploy, commit) | `disable-model-invocation: true`, `allowed-tools` |46| **Hybrid** | Both user and Claude invoke (review, analyze) | defaults |47| **Knowledge** | Domain patterns Claude auto-loads (clean-code, api-patterns) | `user-invocable: false` |4849## Writing Guidelines5051- **Description**: third person ("Generates...", "Provides..."), **min 50 chars**, include searchable key terms **and a trigger hint** (e.g., "Use when..."). Short descriptions cause over-triggering — adjacent skills fight for the same query.52- **Name**: lowercase, hyphens, max 64 chars -- match the directory name53- **Length**: SKILL.md under 500 lines; use `reference/` for overflow54- **Be concise**: Claude is smart -- give structure, not lectures55- **Degrees of freedom**: be specific on format/constraints, flexible on implementation56- **File references**: max 1 level deep (e.g., `reference/details.md`)57- **Use `$ARGUMENTS`**: place it early so user input is visible58- **Tables over prose**: for options, patterns, mappings5960## Mandatory Sections (meta-architect audit criteria)6162Every SKILL.md must contain all five, or it will lower the toolkit quality score:63641. **Description ≥50 chars** with trigger hint in frontmatter652. **At least one concrete example** — fenced code block or `## Example` section663. **Hard rules** using uppercase markers: `MUST`, `NEVER`, `CRITICAL`, `MANDATORY`, or `DO NOT`674. **"When NOT to Use" section** — list 2-3 adjacent skills and the boundary between them685. **Under 500 lines** — split into `reference/` if needed6970These map directly to the mutation strategies in `meta-architect.md`:71`add_example`, `add_constraint`, `add_edge_case`, `restructure`.7273### Rules vs Gotchas — different semantic buckets7475Split the "hard rules" criterion into two sections when both apply:7677- **`## Rules`** — prescriptive process constraints (always-true MUST / NEVER): *"MUST form a testable hypothesis before changing code"*, *"NEVER force-push main"*. Required in every skill.78- **`## Gotchas`** — environment-specific traps the agent would miss without being told, taken from [Anthropic's best practices](https://agentskills.io/skill-creation/best-practices.md#gotchas-sections). Example from their docs: *"The `users` table uses soft deletes. Queries must include `WHERE deleted_at IS NULL` or results will include deactivated accounts."* Add this section only when real domain traps exist — do not pad with a `(none)` placeholder.7980## Directory Structure8182```83skill-name/84 SKILL.md # Main instructions (required, <500 lines)85 reference/ # Detailed docs (loaded on-demand)86 templates/ # Reusable templates for output87 scripts/ # Executable helper scripts88```8990Only create subdirectories when the skill needs them. Most skills are a single SKILL.md.9192## SKILL.md Template9394```markdown95---96name: {name}97description: "{Third-person description, min 50 chars, with trigger hint like 'Use when...'}"98argument-hint: "[hint]"99allowed-tools: Read, Grep, Glob100---101102# {Title}103104$ARGUMENTS105106{One-line purpose statement.}107108## Usage109110\`\`\`111/{name} [arguments]112\`\`\`113114## What This Command Does1151161. **Step one**1172. **Step two**1183. **Step three**119120## Example121122\`\`\`123/{name} example-argument124\`\`\`125126{Expected observable behavior.}127128## Rules129130- **MUST** {non-negotiable rule 1}131- **NEVER** {forbidden action}132- **CRITICAL**: {safety constraint}133134## Gotchas135136- {environment-specific trap the agent would miss — concrete, not general}137- {non-obvious behavior of a tool, API, or data layout}138139## When NOT to Use140141- For {adjacent use case} -- use `/{other-skill}` instead142- For {another case} -- use `/{another-skill}`143- If {precondition} is not met144```145146Leave out `## Gotchas` entirely when the skill has no domain-specific traps — it is not mandatory, and a stub with nothing concrete is worse than no section.147148## Quality Checklist149150Before finalizing, verify:151152- [ ] Description ≥50 chars, third-person, with trigger hint153- [ ] At least one concrete code-fenced example154- [ ] `## Rules` section with prescriptive MUST / NEVER / CRITICAL / MANDATORY155- [ ] `## Gotchas` section when the domain has real environment-specific traps (otherwise omit)156- [ ] `## When NOT to Use` section naming 2-3 adjacent skills157- [ ] SKILL.md under 500 lines158- [ ] No time-sensitive information (versions, dates)159- [ ] Consistent terminology throughout160- [ ] File references max 1 level deep161- [ ] Workflows have numbered steps162- [ ] Frontmatter fields match classification type163- [ ] `$ARGUMENTS` is present for task/hybrid skills164- [ ] `allowed-tools` is minimal (principle of least privilege)165166## Evaluation167168After creating the skill, test it:1691701. Invoke with a representative prompt1712. Check output matches expected structure1723. Verify dynamic injection (`$ARGUMENTS`) works1734. Test with varied argument patterns1745. Confirm `allowed-tools` are sufficient but not excessive1756. Iterate: tighten instructions where output diverges176177## Installation178179After creating the skill:1801811. Verify the skill directory exists under `app/skills/{name}/`1822. Update `skills-catalog.md` if it exists1833. Update `ARCHITECTURE.md` skill counts if referenced1844. Run `validate.sh` if available1855. Run `evaluate-skills.sh` if available186187## Common Mistakes188189| Mistake | Fix |190|---------|-----|191| Description too vague | Add specific terms: "Python", "REST API", "migration" |192| SKILL.md too long | Move details to `reference/` subdirectory |193| Missing `$ARGUMENTS` | Add after the H1 heading for task/hybrid skills |194| Over-specifying steps | Give structure, let Claude fill details |195| Wrong classification | Task = side effects, Knowledge = patterns, Hybrid = both |