Progressive Disclosure
Reading everything before starting is the easiest way to answer "did I miss
something," and the most expensive. An index exists precisely so that most of
a corpus never has to be read for most tasks — reading it anyway is a choice
to spend tokens and turns buying certainty the task didn't ask for.
Reach for this when
- About to read every file in a directory, every reference in a skill or
doc set, or an entire corpus, before knowing which parts the task needs.
- An index, table of contents, header list, or one-line-per-entry summary
exists (or could cheaply be produced) that would let the right subset be
identified without opening everything.
- The corpus is large enough, or growing, that "read it all" will not keep
working — not just slow, but eventually impossible within budget.
Do not reach for this when the task already names the specific file, or the
corpus is small enough that reading all of it costs less than the overhead of
deciding what to skip — the discipline exists to save cost, not to add a
detour when there was nothing to save. Do not reach for this to decide WHICH
source to trust when several disagree — that is determine-signals. Do not
reach for it to turn a large corpus into one artifact for someone else to
read later — that is distill, and it runs on material already loaded,
not on the decision of how much to load. memory-conventions is one
concrete instance of this pattern, scoped to the durable-fact vault
specifically (index.md, capped, facts loaded on demand) — read this skill
for the general discipline, that one for the vault's own layout.
The discipline
- Read the index, not the corpus. If no index exists, its cheapest
substitute — a directory listing, a table of contents, a grep for
headers — still costs less than opening every file, and is worth
building first for that reason alone.
- Name what the task needs before opening anything. State, even in one
line, what specific fact or file would resolve the task. An index entry
that plausibly matches is a candidate to open; entries that don't match
are not insurance against having missed something — leave them closed.
- Open on demand, not in a batch. Pull in the one file the task points
to, check whether it was enough, and only then decide whether a second
file is needed. Queuing "just read all of these while I'm at it" defeats
the discipline even when each individual read looked justified in
isolation.
- Stop when there is enough to act. More reading past that point is not
free caution — it is the exact cost this skill exists to avoid. If the
task can be answered from what has been opened so far, answering is the
next step, not one more file "to be sure."
- Say what was skipped, when it matters. A task that visibly opened
3 of 50 available files should be able to name, briefly, why the other
47 were not needed — not enumerate them, just confirm the omission was a
decision, not an oversight. This is
distill's first practice, reused
here for the same reason: coverage that can't be audited invites the
same "did I miss something" anxiety this skill is meant to remove.
This repository practices what it teaches
The evidence is not hypothetical — every skill in this collection is built
this way. SKILL.md stays under 500 lines and points into references/
for anything that "changes what belongs in it" only for some requests
(create-skill's own instruction); a skill's references/ directory is
read on demand, never loaded by default. memory-conventions' own
agent/index.md is capped at 200 lines / 25KB specifically so a session
start reads the index, not the vault. The Explore search agent reads
excerpts rather than whole files for the same reason this skill exists: it
locates code without paying to read everything it locates. None of this is
a coincidence — it is the same discipline, applied consistently, and it is
why a search for "how should this skill demonstrate its own advice" turns
up working examples already in the tree rather than a hypothetical.
What this skill is not
It is not a rule to always read less — a task that genuinely needs broad
context (an audit, a full-repo migration, "read everything and tell me
what's inconsistent") should read broadly; the discipline is deciding that
on purpose, not skipping it by default. It is not a caching or
summarization technique — the index is not a compressed copy of the corpus,
it is a map of where to look, and using it still means reading the real
file when the task needs the real file's content, not the index entry's
one-line gloss.
1---2name: progressive-disclosure3description: Load a large corpus, document set, or codebase the way an index is meant to be used — read the index first, pull individual files or facts in on demand as the task actually needs them, and stop once there is enough to act, instead of reading everything up front. Use before reading many files, an entire directory, or a large document set for a task that plausibly needs only a fraction of it.4---56# Progressive Disclosure78Reading everything before starting is the easiest way to answer "did I miss9something," and the most expensive. An index exists precisely so that most of10a corpus never has to be read for most tasks — reading it anyway is a choice11to spend tokens and turns buying certainty the task didn't ask for.1213## Reach for this when1415- About to read every file in a directory, every reference in a skill or16 doc set, or an entire corpus, before knowing which parts the task needs.17- An index, table of contents, header list, or one-line-per-entry summary18 exists (or could cheaply be produced) that would let the right subset be19 identified without opening everything.20- The corpus is large enough, or growing, that "read it all" will not keep21 working — not just slow, but eventually impossible within budget.2223Do not reach for this when the task already names the specific file, or the24corpus is small enough that reading all of it costs less than the overhead of25deciding what to skip — the discipline exists to save cost, not to add a26detour when there was nothing to save. Do not reach for this to decide WHICH27source to trust when several disagree — that is `determine-signals`. Do not28reach for it to turn a large corpus into one artifact for someone else to29read later — that is `distill`, and it runs on material already loaded,30not on the decision of how much to load. `memory-conventions` is one31concrete instance of this pattern, scoped to the durable-fact vault32specifically (`index.md`, capped, facts loaded on demand) — read this skill33for the general discipline, that one for the vault's own layout.3435## The discipline36371. **Read the index, not the corpus.** If no index exists, its cheapest38 substitute — a directory listing, a table of contents, a grep for39 headers — still costs less than opening every file, and is worth40 building first for that reason alone.412. **Name what the task needs before opening anything.** State, even in one42 line, what specific fact or file would resolve the task. An index entry43 that plausibly matches is a candidate to open; entries that don't match44 are not insurance against having missed something — leave them closed.453. **Open on demand, not in a batch.** Pull in the one file the task points46 to, check whether it was enough, and only then decide whether a second47 file is needed. Queuing "just read all of these while I'm at it" defeats48 the discipline even when each individual read looked justified in49 isolation.504. **Stop when there is enough to act.** More reading past that point is not51 free caution — it is the exact cost this skill exists to avoid. If the52 task can be answered from what has been opened so far, answering is the53 next step, not one more file "to be sure."545. **Say what was skipped, when it matters.** A task that visibly opened55 3 of 50 available files should be able to name, briefly, why the other56 47 were not needed — not enumerate them, just confirm the omission was a57 decision, not an oversight. This is `distill`'s first practice, reused58 here for the same reason: coverage that can't be audited invites the59 same "did I miss something" anxiety this skill is meant to remove.6061## This repository practices what it teaches6263The evidence is not hypothetical — every skill in this collection is built64this way. `SKILL.md` stays under 500 lines and points into `references/`65for anything that "changes what belongs in it" only for some requests66(`create-skill`'s own instruction); a skill's `references/` directory is67read on demand, never loaded by default. `memory-conventions`' own68`agent/index.md` is capped at 200 lines / 25KB specifically so a session69start reads the index, not the vault. The Explore search agent reads70excerpts rather than whole files for the same reason this skill exists: it71locates code without paying to read everything it locates. None of this is72a coincidence — it is the same discipline, applied consistently, and it is73why a search for "how should this skill demonstrate its own advice" turns74up working examples already in the tree rather than a hypothetical.7576## What this skill is not7778It is not a rule to always read less — a task that genuinely needs broad79context (an audit, a full-repo migration, "read everything and tell me80what's inconsistent") should read broadly; the discipline is deciding that81on purpose, not skipping it by default. It is not a caching or82summarization technique — the index is not a compressed copy of the corpus,83it is a map of where to look, and using it still means reading the real84file when the task needs the real file's content, not the index entry's85one-line gloss.