Back to Skills

skill-progressive-disclosure-design

Decide how to split skill content between SKILL.md and reference files for context efficiency and reliable triggering. Use this whenever creating a new Claude skill, refactoring an existing one, or when a SKILL.md is growing past 300-400 lines. Also trigger when the user mentions "progressive disclosure", "reference files", "splitting skills", "skill bundling", "context window for skills", "SKILL.md too long", "what goes in references/", "skill structure", or expresses any uncertainty about wher

152stars11forksUpdated 7/1/2026

Security Assessment

Low Risk(75/100)

Detected risks:

Remote Code Execution([SKILL.md] eval ()
Security Score75/100

About skill-progressive-disclosure-design

A decision aid for splitting Claude skill content between SKILL.md and reference files to balance context efficiency against reliable triggering. It is meant to be used whenever creating a new skill, refactoring an existing one, or when a SKILL.md grows past roughly 300-400 lines, and it treats its recommendations as trade-offs to reason from rather than rules to apply blindly, giving explicit pros and cons for each direction.

A first move is to separate two commonly conflated problems. Triggering — whether Claude invokes the skill at all — is driven entirely by the YAML description and is not affected by file splitting, so a skill that fails to trigger needs a description fix, not a split. Progressive disclosure is what loads after activation: the SKILL.md body always loads, references/* load only when SKILL.md tells the model to read a specific file, and scripts/* execute without loading into context at all. The default guidance is not to split; a monolithic SKILL.md is preferred until there is a real reason, such as exceeding roughly 400 lines with natural branches, empirical evidence that context is being wasted, or large content needed only in narrow conditions.

Three split axes are presented as ones that work: a variant branch where user intent selects exactly one path (for example cloud provider, database engine, framework, output format, or language); a workflow-versus-reference-data split where SKILL.md holds the procedure and references hold lookup material like schemas, error-code tables, or option matrices; and a depth tier where SKILL.md covers the common 80% case and a references file covers edge cases behind a sharp load condition. It also catalogs splits that do not work — topic-based splits where invocations do not cluster by topic, splitting merely to hit a line target without a real branching condition, and placing rare-but-critical content in references where the model may skip it. Each pattern is annotated with why it appears attractive and why it fails.

FAQ

Does splitting a skill into reference files help it trigger more reliably?

No. Triggering is driven entirely by the YAML description and file splitting does not affect it. If a skill does not trigger reliably, the guidance is to fix the description, not to split files.

When should I split a SKILL.md at all?

The default is not to split. Split only when at least one condition holds: SKILL.md exceeds about 400 lines with natural branches, eval transcripts show context wasted on irrelevant sections, or specific large content is needed only in narrow conditions.

What split patterns are recommended?

Three axes that work: a variant branch where intent selects one path, a workflow-versus-reference-data split with the procedure in SKILL.md and lookups in references, and a depth tier with the common case in SKILL.md and edge cases in a reference behind a sharp load condition.

What is the difference between references/ and scripts/ for context?

The SKILL.md body always loads, references/* load only when SKILL.md instructs the model to read a specific file, and scripts/* execute without loading into context at all, which is where context protection comes from.

Why is putting rare-but-critical content in references a mistake?

References are optional by design, so the model may skip them. If content is critical it must load reliably, which means it belongs in SKILL.md; 'rare' and 'critical' together is usually a warning sign.

All Files

2 files
SKILL.md16.7 KB
View
evals/evals.json19.0 KB
View

Install skill-progressive-disclosure-design

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill