Skill-Details
skill-development
Directly guides developers authoring and validating Claude Code plugin skills.
Vor Nutzung prüfen
Die automatische Prüfung bewertet Relevanz, nicht Sicherheit oder Empfehlung. Lies vor der Nutzung die Quellanweisungen.
SKILL.md
Dieser Auszug wurde bei der Prüfung gespeichert. Die externe Quelle enthält die vollständige und aktuelle Version.
---
name: skill-development
description: |
Canonical guide to authoring SKILL.md files for Claude Code plugin skills.
PROACTIVELY activate for: (1) creating a new skill, (2) adding a skill to a plugin, (3) writing SKILL.md frontmatter, (4) fixing skills that never trigger, (5) organizing core vs references vs examples, (6) improving weak skill descriptions, (7) progressive disclosure design, (8) splitting oversized SKILL.md files, (9) imperative body style, (10) zero-frontmatter SKILL.md files, (11) removing boilerplate from YAML descriptions.
Provides: skill template, trigger checklist, size rules, and validation process.
---
# Skill Development for Claude Code Plugins
## Overview
Skills are modular knowledge packages that extend Claude's capabilities with specialized workflows, domain expertise, and bundled resources. They transform Claude from a general-purpose agent into a specialized expert.
Skills use **progressive disclosure** - a three-level loading system that manages context efficiently:
1. **Metadata** (name + description) - Always in context (~100 words)
2. **SKILL.md body** - Loaded when skill triggers (~1,500-2,000 words)
3. **Bundled resources** - Loaded as needed by Claude (unlimited)
## Skill Structure
```text
skill-name/
├── SKILL.md # Required: Core instructions
├── references/ # Optional: Detailed documentation
│ ├── patterns.md # Loaded when Claude needs detail
│ └── advanced.md
├── examples/ # Optional: Working code examples
│ └── example.sh # Users can copy and adapt
├── scripts/ # Optional: Executable utilities
│ └── validate.sh # Token-efficient, deterministic
└── assets/ # Optional: Output resources
└── template.html # Used in output, not loaded into context
```
**Only create directories you actually need.** A minimal skill is just `SKILL.md`.
## SKILL.md Format
### Frontmatter (Required)
This is the canonical shape every new skill MUST follow. Deviating is the #1 cause of skills that never trigger.
```yaml
---
name: skill-name # REQUIRED: kebab-case, matches directory name
description: One-sentence summary of what the skill covers. PROACTIVELY activate for: (1) concrete named trigger, (2) concrete named trigger, ..., (N) concrete named trigger. Provides: comma-separated capability nouns (concrete, not abstract).
---
```
Or, if the description is multi-line (only needed for very long descriptions — prefer single-line when practical):
```yaml
---
name: skill-name
description: |
One-sentence summary. PROACTIVELY activate for: (1) trigger, (2) trigger, ..., (N) trigger. Provides: capability list.
---
```
### Hard rules for the frontmatter
1. **`name:` is required** and must match the enclosing directory name exactly (`skills/skill-name/SKILL.md` → `name: skill-name`).
2. **`description:` is required** and MUST contain BOTH the `PROACTIVELY activate for: (1)... (N)...` enumeration AND a `Provides: ...` capability list.
3. **A SKILL.md with NO frontmatter at all is broken.** It will never trigger, will not appear in skill discovery, and should be treated as a P0 bug. If you open a SKILL.md and the first line is not `---`, fix the frontmatter before doing anything else.
4. **Enumerate concrete, named triggers — not abstract capabilities.** "PROACTIVELY activate for: (1) creating Azure Functions, (2) binding config" is good. "Use this skill when working with Azure" is NOT.
5. **Describe WHEN to use, not WHAT it does.** The description drives routing, so it must read as a trigger list from the user's point of view. Put the capability summary in `Provides: ...` at the end.
6. **Keep descriptions single-line YAML-safe.** If you use `|` block scalar, do not embed unescaped colons or other YAML-confusing characters in the middle of lines.
7. **Target 400-1000 characters for the description; hard ceiling is 1024 characters (Claude Code API spec).** ClaudeVollständige Quelle auf GitHub lesen (öffnet externe Seite)