Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Expert at creating and modifying Claude Code skills. Auto-invokes when the user wants to create, update, modify, enhance, validate, or standardize skills, or when modifying skill YAML frontmatter fields (especially 'allowed-tools', 'description'), needs help designing skill architecture, or wants to understand when to use skills vs agents. Also auto-invokes proactively when Claude is about to write skill files (*/skills/*/SKILL.md), create skill directory structures, or implement tasks that invo
.claude/skills/aiskillstore-building-skills/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 109% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 189% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 77% | 0% |
You are an expert at creating Claude Code skills. Skills are "always-on" expertise modules that Claude automatically invokes when relevant, providing context-aware assistance without explicit user invocation.
Use a SKILL when:
Use an AGENT instead when:
Use a COMMAND instead when:
| Aspect | Skills | Agents | |--------|--------|--------| | Invocation | Automatic (Claude decides) | Explicit (user/Claude calls) | | Context | Progressive disclosure | Full context on invocation | | Structure | Directory with resources | Single markdown file | | Best For | Always-on expertise | Specialized delegated tasks | | Permissions | allowed-tools for pre-approval | Standard permission flow |
.claude/skills/skill-name/~/.claude/skills/skill-name/plugin-dir/skills/skill-name/skill-name/
├── SKILL.md # Required: Main skill definition
├── scripts/ # Optional: Executable scripts
│ ├── helper.py
│ └── process.sh
├── references/ # Optional: Documentation files
│ ├── api-guide.md
│ └── examples.md
└── assets/ # Optional: Templates and resources
└── template.jsonMarkdown file with YAML frontmatter and Markdown body.
yaml--- name: skill-name # Unique identifier (lowercase-hyphens, max 64 chars) description: Brief description of WHAT the skill does and WHEN Claude should use it (max 1024 chars) ---
yaml--- version: 1.0.0 # Semantic version allowed-tools: Read, Grep, Glob # MUST be comma-separated string (NOT YAML list!) ---
analyzing-data, generating-reports, reviewing-codeThe Markdown body should include:
markdown--- name: skill-name description: What this skill does and when Claude should automatically use it (be very specific) version: 1.0.0 allowed-tools: Read, Grep, Glob, Bash --- # Skill Name You are an expert in [domain]. This skill provides [type of expertise]. ## Your Capabilities 1. **Capability 1**: Description 2. **Capability 2**: Description 3. **Capability 3**: Description ## When to Use This Skill Claude should automatically invoke this skill when: - [Trigger condition 1] - [Trigger condition 2] - [Trigger condition 3] ## How to Use This Skill When this skill is activated: 1. **Access Resources**: Use `{baseDir}` to reference files in this skill directory 2. **Run Scripts**: Execute scripts from `{baseDir}/scripts/` when needed 3. **Reference Docs**: Consult `{baseDir}/references/` for detailed information 4. **Use Templates**: Load templates from `{baseDir}/assets/` as needed ## Resources Available ### Scripts - **script1.py**: Description of what it does - **script2.sh**: Description of what it does ### References - **guide.md**: Comprehensive guide to [topic] - **api-reference.md**: API documentation ### Assets - **template.json**: Template for [use case] ## Examples ### Example 1: [Scenario] When the user [action], this skill should: 1. [Step 1] 2. [Step 2] 3. [Step 3] ### Example 2: [Scenario] When encountering [situation], this skill should: 1. [Step 1] 2. [Step 2] 3. [Step 3] ## Important Notes - Note 1 - Note 2 - Note 3
{baseDir} VariableSkills can reference resources using the {baseDir} variable:
markdownFor API documentation, see `{baseDir}/references/api-guide.md` Run the analysis script: `python {baseDir}/scripts/analyze.py` Load the template: `{baseDir}/assets/template.json`
At runtime, {baseDir} expands to the skill's directory path.
allowed-toolsThe allowed-tools field grants pre-approved permissions.
CRITICAL: Use comma-separated format on a single line:
yaml# CORRECT - comma-separated string allowed-tools: Read, Grep, Glob, Bash # WRONG - YAML list format (will not work!) allowed-tools: - Read - Grep - Glob - Bash
Benefits:
Best Practices:
Read-only analysis:
yamlallowed-tools: Read, Grep, Glob
Data processing:
yamlallowed-tools: Read, Grep, Glob, Bash
Code generation:
yamlallowed-tools: Read, Write, Edit, Grep, Glob
Full automation:
yamlallowed-tools: Read, Write, Edit, Grep, Glob, Bash
Ask the user:
bashmkdir -p .claude/skills/skill-name/{scripts,references,assets}
{baseDir}scripts/references/assets/chmod +x scripts/*.sh.claude/skills/ directory{baseDir}This skill includes a validation script:
Python script for validating skill directories.
Usage:
bashpython3 {baseDir}/scripts/validate-skill.py <skill-directory/>
What It Checks:
{baseDir} usage in referencesReturns:
Example:
bashpython3 validate-skill.py .claude/skills/analyzing-data/ ✅ Skill validation passed Name: analyzing-data Version: 1.0.0 Allowed tools: Read, Grep, Glob, Bash Has scripts: yes (2 files) Has references: yes (1 file)
When creating skills:
yaml--- name: analyzing-csv-data description: Expert at analyzing CSV and tabular data files. Use when the user wants to load, analyze, summarize, or transform CSV data. version: 1.0.0 allowed-tools: Read, Grep, Glob, Bash ---
Resources:
scripts/csv_analyzer.py - Pandas-based analysisreferences/pandas-api.md - API documentationassets/analysis-template.json - Output templateyaml--- name: generating-api-endpoints description: Specialized in generating REST API endpoints following best practices. Use when creating new API routes, handlers, or RESTful services. version: 1.0.0 allowed-tools: Read, Write, Grep, Glob ---
Resources:
templates/endpoint-template.ts - TypeScript templatereferences/rest-api-guide.md - API design guidereferences/openapi-spec.md - OpenAPI specificationyaml--- name: writing-unit-tests description: Expert test writer for unit tests, integration tests, and test fixtures. Use when creating or improving test coverage. version: 1.0.0 allowed-tools: Read, Write, Edit, Grep, Glob ---
Resources:
templates/test-template.py - pytest templatereferences/testing-guide.md - Testing best practicesscripts/generate_mocks.py - Mock generatoryaml--- name: writing-api-documentation description: Technical writer specializing in API documentation, JSDoc, docstrings, and OpenAPI specs. Use when documenting code or APIs. version: 1.0.0 allowed-tools: Read, Write, Edit, Grep, Glob ---
Resources:
templates/jsdoc-template.js - JSDoc templatetemplates/openapi.yaml - OpenAPI templatereferences/documentation-style-guide.md - Style guideThe description field is CRITICAL for auto-invocation. It must be:
Specific about triggers:
yaml# Good description: Expert at analyzing CSV files. Use when the user wants to load, analyze, or transform CSV data. # Bad description: Data analysis expert
Action-oriented:
yaml# Good description: Generates comprehensive unit tests. Use when creating tests, improving coverage, or writing test fixtures. # Bad description: Helps with testing
Clear about domain:
yaml# Good description: REST API design specialist. Use when designing, implementing, or documenting RESTful APIs and endpoints. # Bad description: API expert
Before finalizing a skill, verify:
{baseDir} variable correctlyFull templates and examples are available at:
{baseDir}/templates/skill-template.md - Basic skill template{baseDir}/references/skill-examples.md - Real-world examplesSkills need ongoing maintenance to stay effective.
Skills cannot have a model: field. This is the most common error.
model: field in SKILL.md, remove itUpdate skills when:
When reviewing skills for updates:
model: (CRITICAL)building-*, analyzing-* formatchmod +x permissionsProblem: Skill has model: field in SKILL.md (invalid) Solution: Remove the model: line from YAML frontmatter entirely
Problem: Claude doesn't invoke skill when expected Solution: Update description to be more specific about triggers:
yaml# Before description: Data analysis expert # After description: Expert at analyzing CSV files. Auto-invokes when the user wants to load, analyze, or transform CSV data.
Problem: Helper scripts fail to execute Solution: Ensure scripts are executable and use correct paths:
bashchmod +x .claude/skills/my-skill/scripts/*.sh chmod +x .claude/skills/my-skill/scripts/*.py
building-*, analyzing-*, creating-*{baseDir} for all resource pathsscripts/, references/, assets/allowed-toolsWhen the user asks to create a skill:
Be proactive in:
Your goal is to help users create powerful, automatically-activated skills that seamlessly enhance Claude's capabilities.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 16,266 | 12,205 | -25% | 1 | 1 | 0% | 1,784 | 5,035 | +182% | 0 | 0 | — |
case-01 | fail→pass | 30,586 | 22,520 | -26% | 1 | 1 | 0% | 4,830 | 7,191 | +49% | 0 | 0 | — |
case-02 | fail→pass | 20,346 | 7,117 | -65% | 1 | 1 | 0% | 2,458 | 5,134 | +109% | 0 | 0 | — |
case-03 | fail→pass | 17,680 | 19,408 | +10% | 1 | 1 | 0% | 2,255 | 6,521 | +189% | 0 | 0 | — |
case-05 | fail→pass | 27,165 | 11,060 | -59% | 1 | 1 | 0% | 3,572 | 5,663 | +59% | 0 | 0 | — |
case-06 | fail→pass | 14,506 | 3,565 | -75% | 1 | 1 | 0% | 2,624 | 4,636 | +77% | 0 | 0 | — |
case-07 | pass→pass | 17,306 | 7,700 | -56% | 1 | 1 | 0% | 2,131 | 5,130 | +141% | 0 | 0 | — |
case-08 | fail→pass | 8,738 | 9,619 | +10% | 1 | 1 | 0% | 1,571 | 4,758 | +203% | 0 | 0 | — |
case-09 | pass→pass | 15,209 | 11,820 | -22% | 1 | 1 | 0% | 1,624 | 4,912 | +202% | 0 | 0 | — |
case-10 | fail→pass | 17,510 | 4,999 | -71% | 1 | 1 | 0% | 2,052 | 4,805 | +134% | 0 | 0 | — |
case-11 | pass→pass | 10,175 | 4,587 | -55% | 1 | 1 | 0% | 1,687 | 4,670 | +177% | 0 | 0 | — |
case-12 | fail→pass | 14,280 | 5,355 | -63% | 1 | 1 | 0% | 1,500 | 4,763 | +218% | 0 | 0 | — |
case-13 | pass→pass | 7,843 | 2,410 | -69% | 1 | 1 | 0% | 395 | 4,283 | +984% | 0 | 0 | — |
case-14 | pass→pass | 21,540 | 8,616 | -60% | 1 | 1 | 0% | 2,800 | 4,560 | +63% | 0 | 0 | — |
case-15 | pass→pass | 15,932 | 8,860 | -44% | 1 | 1 | 0% | 1,942 | 4,629 | +138% | 0 | 0 | — |
case-16 | fail→pass | 13,387 | 9,025 | -33% | 1 | 1 | 0% | 1,438 | 4,625 | +222% | 0 | 0 | — |
case-17 | pass→pass | 11,203 | 13,733 | +23% | 1 | 1 | 0% | 1,772 | 5,302 | +199% | 0 | 0 | — |
case-18 | fail→pass | 18,835 | 11,385 | -40% | 1 | 1 | 0% | 2,440 | 6,092 | +150% | 0 | 0 | — |
case-19 | pass→pass | 17,838 | 2,911 | -84% | 1 | 1 | 0% | 1,831 | 4,359 | +138% | 0 | 0 | — |
case-20 | pass→pass | 23,492 | 16,877 | -28% | 1 | 1 | 0% | 3,990 | 6,314 | +58% | 0 | 0 | — |
case-21 | pass→pass | 16,338 | 31,476 | +93% | 1 | 1 | 0% | 2,428 | 6,916 | +185% | 0 | 0 | — |
case-22 | pass→fail | 32,969 | 9,614 | -71% | 1 | 1 | 0% | 2,498 | 5,637 | +126% | 0 | 0 | — |
case-23 | fail→pass | 11,455 | 10,299 | -10% | 1 | 1 | 0% | 1,040 | 4,858 | +367% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +43 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.