Appearance
A Skill Pack is a SKILL.md + resources directory that Claude auto-loads when your request matches its description — metadata is always visible, instructions load on trigger, resources load on demand.
Primitive
Skill Pack
The three-level progressive disclosure
Different context costs. Loaded at different moments.
1
~100 tokens
Metadata (name + description)
Always in context. Claude scans all metadata to decide whether the skill matches the user's request. If the description is wrong, the skill never triggers.
2
≤ 5k words
SKILL.md body (instructions)
Loaded on trigger. When Claude decides the skill applies, the body gets inlined into context. Keep it lean — budget matters.
3
unbounded
Resources (templates, docs, scripts)
Loaded on demand. SKILL.md references files in the dir. Claude opens them only when the branch of the workflow needs them.
Level 1 is cheap and always-on. Level 2 is triggered. Level 3 is lazy. Context usage scales with skill depth, not skill size.
What a Skill Pack looks like
One required file. Everything else is optional.
.claude/skills/meta-skill/
meta-skill/├── SKILL.mdREQUIRED# YAML frontmatter + body├── docs/# reference files loaded on demand│ ├── progressive-disclosure.md│ └── vs-orchestrator-skill.md├── templates/# skeletons the skill fills in│ └── SKILL.template.md├── examples/# few-shot references└── scripts/# tools the skill invokes └── validate_skill.py
The required file
Two frontmatter fields. Description is the whole trigger.
SKILL.md
---name: meta-skill← unique identifierdescription: Use when creating← THE trigger conditionnew Skill Packs. GeneratesSKILL.md with proper structure.---# Meta-SkillInstructions, workflow, references to docs/...
The description is the match condition. Vague description → skill never loads. Too-broad description → skill loads for unrelated requests. Write it like a trigger, not like documentation.
How loading happens
Implicit. Claude decides, not you.
01
User asks
"make a new skill"
→
02
Claude scans descriptions
finds meta-skill match
→
03
SKILL.md loads
body inlined into context
Unlike Skill (orchestrator), a Skill Pack is never explicitly invoked by a slash command. The description is the trigger. This makes Skill Packs great for domain knowledge that should activate by intent — and terrible when you need deterministic invocation.
When to use Skill Pack vs alternatives
Pick by how the knowledge should activate.
Skill Pack
Domain knowledge that should load when user intent matches. Description triggers it. Example: "meta-skill" activates when user asks to build a skill.
Skill (orchestrator)
Multi-step workflow you invoke explicitly. Slash command or ADW fires it. Example: /product-spec runs a 6-agent pipeline.
Mental Model
Expertise that should be read at task start for a specific domain. Structured YAML, 1000-line cap, self-improved.
The discipline
The description is the loading contract.
Level 1 metadata always visible, Level 2 instructions triggered, Level 3 resources on-demand. Context scales with the branch you hit, not with the total size of the skill. A Skill Pack with a vague description is a file Claude never opens; with a precise description it's expertise that activates at the moment it matters.