From creating-skills
Use when creating new skills, editing existing skills, or reviewing skill quality. Use when user mentions building, writing, or improving a SKILL.md file or skill folder. Guides skill authoring following Anthropic's official best practices.
npx claudepluginhub weorbitant/workbench-dev --plugin creating-skillsThis skill uses the workspace's default tool permissions.
Skills are instruction folders that teach Claude specialized workflows. The core principle is **progressive disclosure**: minimize tokens while maintaining expertise.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Designs, implements, and audits WCAG 2.2 AA accessible UIs for Web (ARIA/HTML5), iOS (SwiftUI traits), and Android (Compose semantics). Audits code for compliance gaps.
Skills are instruction folders that teach Claude specialized workflows. The core principle is progressive disclosure: minimize tokens while maintaining expertise.
skill-name/
├── SKILL.md # Required. Frontmatter + instructions
├── references/ # Optional. Deep documentation (loaded on-demand)
├── scripts/ # Optional. Executable code
└── assets/ # Optional. Templates, icons
---
name: kebab-case-name
description: Use when [trigger conditions]. [What it does]. [When to apply it].
---
# Skill Title
## Overview
One paragraph: what this skill does and the core principle.
## Instructions
Step-by-step guidance or reference content.
## References
- Link to [references/detail.md](references/detail.md) for deep content
The description field is the most critical part. It's always loaded in Claude's system prompt and determines auto-invocation.
Rules:
Good:
description: Use when creating new skills, editing existing skills, or reviewing skill quality. Use when user mentions building, writing, or improving a SKILL.md file.
Bad:
description: Helps with skills
The context window is shared. Claude is already smart — only add domain-specific knowledge it doesn't have. Keep SKILL.md body under 500 lines.
| Freedom | When | Format |
|---|---|---|
| High | Multiple valid approaches, creative work | Text guidelines |
| Medium | Preferred pattern exists, some variation OK | Pseudocode with params |
| Low | One correct approach, variations cause failure | Exact code/commands |
Pick one term per concept. Don't alternate between "skill", "command", and "instruction" — use "skill" throughout.
| Field | Default | Purpose |
|---|---|---|
name | Directory name | Display name, becomes /slash-command. Kebab-case, max 64 chars |
description | First paragraph | When to use. Claude uses this for auto-invocation |
argument-hint | — | Autocomplete hint: [issue-number], [filename] |
disable-model-invocation | false | true = manual-only (deploy, commit, dangerous ops) |
user-invocable | true | false = hidden from / menu (background knowledge) |
allowed-tools | — | Tool restrictions: Read, Grep, Bash(gh *) |
model | — | Override model for this skill |
context | — | fork = run in isolated subagent |
agent | general-purpose | Subagent type when context: fork |
Reference skills — Add knowledge Claude applies to current work (conventions, patterns, domain knowledge). Run inline with conversation context.
Task skills — Step-by-step instructions for specific actions. Often use disable-model-invocation: true and context: fork.
| Variable | Description |
|---|---|
$ARGUMENTS | All arguments passed to the skill |
$ARGUMENTS[N] or $N | Specific argument by index (0-based) |
${CLAUDE_SESSION_ID} | Current session ID |
| Level | Path | Scope |
|---|---|---|
| Personal | ~/.claude/skills/<name>/SKILL.md | All your projects |
| Project | .claude/skills/<name>/SKILL.md | This project only |
| Plugin | <plugin>/skills/<name>/SKILL.md | Where plugin enabled |
Priority: Enterprise > Personal > Project > Plugin.
Run these three test types before considering a skill complete:
/invoking it)/skill-name directly| Mistake | Fix |
|---|---|
| Description too vague | Add "Use when..." + specific trigger phrases |
| SKILL.md too long (>500 lines) | Move detail to references/ |
| Over-explaining basics Claude knows | Remove — Claude knows markdown, YAML, git, etc. |
| Inconsistent terminology | Pick one term per concept |
| No testing before deployment | Run all 3 test types |
Missing disable-model-invocation on dangerous ops | Add it for deploy, commit, send-message skills |