Growing docs
Skill aj604/toolshed/plugins/doc-lifecycle/skills/growing-docs
Use when a repo already has baseline docs but a demand signal says they are no longer enough — the same question answered twice, a fact re-derived the hard way across sessions, an incident with no runbook, onboarding pain, a recurring "why is it like this?", someone asking "should we document X?", or a docs/doc-scope.md item whose promotion signal has fired — and for any direct ask to write a narrative doc: an ADR, tutorial, walkthrough, or architecture overview (writing-docs scopes those out by design; their REQUIRED template lives here). The demand-driven counterpart to bootstrapping-docs, which creates the minimum for a repo with no docs.From its SKILL.md
npx -y skills add aj604/toolshed --skill growing-docsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.9 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Growing Docs
Overview
A demand signal — not a sense of completeness — is what earns a new doc. bootstrapping-docs creates the smallest high-leverage doc set and deliberately stops; this skill is the other half of that bargain. When reality asks for more — the same fact re-derived, an incident with no runbook — the doc set grows by exactly the artifact that absorbs the signal, and no further.
Route first: gap or drift?
| What you found | Owner |
|---|---|
| An existing doc line is now false | detecting-doc-drift → fixing-doc-drift |
| The fact is simply absent — no doc line contradicts reality | this skill |
Drift tooling audits claims that exist; a pure gap has nothing to flag. Do not wait for a drift report to legitimize growth — it never will.
The second-rediscovery rule
The first time a fact is asked for or derived the hard way, answering is fine — but the
exemption costs one logged line: add - seen: <date> <one-line occurrence> under the
matching ## Deferred item in docs/doc-scope.md (create the item if absent). The second
rediscovery is usually a different session or a different person — without the log, nobody
can recognize a second occurrence as the second, and this rule never fires. The second
time, it has earned a doc — write it where the reader would have looked first (the doc they
opened, the section they scanned, the file they read). This is the positive twin of
writing-docs Rule 5: "cheaply inferable" is an empirical claim, and a second hard derivation
falsifies it.
Name the signal before writing ("second teammate this week hit exit 3", "third session re-deriving the migrate order"). If you cannot name one, you are completeness-chasing — stop.
Signal → smallest artifact
One signal → one smallest artifact. bootstrapping-docs' STOP list (route catalogs, signature lists, directory trees) still binds — a demand signal is not a license to catalogue.
| Signal | Smallest artifact that absorbs it |
|---|---|
| Fact re-explained / re-derived | CLAUDE.md gotcha, README section, or reference entry — whichever the reader would consult first (always-loaded placement must clear writing-docs' router rule) |
| Incident with no runbook | runbook (writing-docs' runbooks.md) |
| Onboarding pain | deepen README setup — or a narrative walkthrough (template below) |
| Recurring "why is it like this?" | marked+anchored rationale section — or an ADR (template below) |
| Unit became load-bearing / repo grew multi-unit | docs/reference/ per bootstrapping-docs' repo-shape.md |
The scope record: docs/doc-scope.md (this skill owns the format)
- On entry: if
docs/doc-scope.mdexists, read it alongside the live signal — the item may already carry a promotion condition that just fired. A Deferred item already carrying aseen:line means the live signal is the second rediscovery: promote it. - On exit: update it — create it if absent. Log what you wrote in Done with the signal
that fired (moving the item from Deferred if it was listed there); add any new deliberate
deferrals, each with a
promote when:signal; log any first occurrence you exempted as aseen:line (the second-rediscovery rule above).
# Doc scope record
<!-- format: doc-lifecycle growing-docs -->
## Deferred
- <artifact>: <what> — promote when: <signal>
- seen: <date> <one-line occurrence> <!-- first-rediscovery tally -->
## Done
- <date> <artifact> ← <signal that fired>
Read on demand; never a standing section in an always-loaded agent file (CLAUDE.md/AGENTS.md) — a pointer line is fine.
Quality routing
- Repo-tracking doc (README, runbook, CLAUDE.md/AGENTS.md, reference) → writing-docs, the one door — exactly as bootstrapping-docs routes.
- Narrative doc (walkthrough, tutorial, ADR) → writing-docs scopes these out by design; the template below is carried here and is REQUIRED.
Where narrative docs live
A narrative doc is a durable doc — it tracks the current repo, and must never be mistaken for a retire-on-landing planning artifact. Its home:
- Repo with a
docs/reference/tree: inside it, domain-grouped like everything else (a unit's walkthrough beside itsoverview.md; cross-unit narrative besidearchitecture.md). One containment subtree holds the whole agent doc set, claim-style and narrative alike. - Repo without one: under
docs/beside the team's docs; it moves intodocs/reference/if that tree later exists. - Never in
docs/plans/— that is where planning artifacts go to be distilled once their implementation lands; a narrative doc placed there will read as one.
Narrative doc template (REQUIRED)
- First line under the title, always:
> As of <YYYY-MM-DD> (<commit or file:line anchors current at writing>)— the staleness anchor readers can check against; a hook for future drift tooling (today's drift skills audit repo-tracking claims, not narrative docs). This line is also the doc's durable-narrative marker: bloat tooling classifies an anchored doc as narrative — never as a planning artifact to distill — wherever it sits. - Every command, path, symbol, and output inside the narrative is true of the repo now and was actually run. Narrative structure is exempt from the claim bar; fabrication is not.
- Still the smallest doc that absorbs the signal.
- Rationale gets one owner. If the "why" you are landing already lives as a code comment, trim that comment to a pointer at the new doc in the same change — duplicated rationale drifts apart; the pointer keeps the breadcrumb where the reader trips on it.
Rationalizations
| Thought | Reality |
|---|---|
| "I'll just answer in chat again" | The second answer is the signal. Write it where the reader would have looked first. |
| "Adding this violates the cut test — it's inferable" | A second hard derivation just proved it isn't cheap. That is the falsification writing-docs Rule 5 invites. |
| "The drift report didn't flag it, so there's nothing to fix" | Drift audits existing claims; gaps are this skill's job. |
| "The walkthrough isn't governed by writing-docs, so no rules apply" | The narrative template above applies — anchor line first, every embedded claim true and run. |
Red flags — STOP
- Answering the same question a second time and moving on → it has earned a doc; write it.
- Answering a first-time question and moving on without a
seen:line indocs/doc-scope.md→ the second rediscovery becomes unrecognizable across sessions; the exemption costs the log line. - Growing docs with no nameable signal (a milestone, a release, "while I'm here") → wrong trigger; demand grows docs, calendars don't.
- One signal producing a catalogue (routes, signatures, trees) → one smallest artifact; bootstrapping-docs' STOP list still binds.
- A walkthrough/tutorial/ADR without the
> As of …first line → the anchor is REQUIRED. - Finishing without updating
docs/doc-scope.md(creating it if absent) → the scope decision evaporates with the session. - Pasting doc-scope.md contents into CLAUDE.md/AGENTS.md → read on demand; a pointer line at most.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.