agentsclimarketplace

Drydocs

Skill johanes/drydocs/plugins/drydocs

Slim your CLAUDE.md into a lean index and move the detail into a well-organized docs/ folder, so the always-loaded context stays small (token savings) and detail loads on demand. Classifies with MOC (Maps of Content) + PARA (Projects/Areas/Resources/Archives) + Zettelkasten (atomic, linked notes). Non-destructive (leaves your CLAUDE.md untouched; writes dry-CLAUDE.md), idempotent, git-reversible. Use when a CLAUDE.md is too long, or the user says "slim my CLAUDE.md", "my CLAUDE.md is huge", "organize CLAUDE.md into docs", "make CLAUDE.md a lean index". This is the subtractive counterpart to onboarding skills that *add* structure — drydocs *removes* inline bulk and leaves pointers.From its SKILL.md

Install
npx -y skills add johanes/drydocs --skill drydocs

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • skips confirmationTells the agent to proceed without asking first, 2 times: "Just run it end-to-end, don't stop to ask." and 1 more.
  • 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.
  • runs commandsInstructs the agent to run 6 commands, including `python3 "$H" outline CLAUDE.md` and 5 more.

SKILL.md

7.7 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

drydocs — slim CLAUDE.md into a lean index

CLAUDE.md loads into context every session. When it's a monolith, every turn pays for detail it doesn't need. drydocs turns it into a lean index (identity + always-apply rules + pointers) and moves the bulk into a docs/ folder of atomic, linked notes.

It is non-destructive: it never touches your live CLAUDE.md. It writes the proposed lean version as dry-CLAUDE.md (one new file; your original stays put, and git keeps its history), and leaves the final mv dry-CLAUDE.md CLAUDE.md to you.

Quick start

H="${CLAUDE_SKILL_DIR}/scripts/slim_claude_md.py"   # the deterministic helper (stdlib-only)

python3 "$H" outline CLAUDE.md                       # 1. see sections + sizes (JSON)
# 2. classify each section (agent judgment) → KEEP vs EXTRACT + PARA bucket
python3 "$H" begin --apply                            # 3. make the dry-CLAUDE.md working copy
python3 "$H" refs --heading "<H>"                    #    find who references a block BEFORE moving it
python3 "$H" extract dry-CLAUDE.md --heading "<H>" --into docs/<bucket>/<note>.md --apply
# … repoint referrers (Edit), repeat per block …
python3 "$H" moc --root dry-CLAUDE.md --apply         # 4. (re)build the grouped link index
python3 "$H" finalize                                 # 5. report size drop + review/promote help (CLAUDE.md untouched)

Just run it end-to-end, don't stop to ask. The output is non-destructive: it never overwrites CLAUDE.md, it only produces fat-/dry- copies + notes as one git revert-able commit. So drive the whole flow with --apply and report the result when done. (The helper's --dry-run default is only for previewing a single command by hand.) The one thing you never do automatically is the final mv dry-CLAUDE.md CLAUDE.md promotion. That stays the user's call.

When it activates

Triggers: "slim/shrink my CLAUDE.md", "my CLAUDE.md is too long/huge", "organize CLAUDE.md into docs", "make CLAUDE.md a lean index / an MOC", "reduce CLAUDE.md tokens".

Guard — refuse unless inside a git work tree. git is the undo mechanism; the helper enforces this and refuses to run otherwise. Recommend working on a branch.

Organization model (summary)

Classification is grounded in three established methods — full detail + citations in references/organization-model.md:

  • MOC (Maps of Content): CLAUDE.md becomes the root MOC — a lean hub of links + the few always-apply rules. Large areas get their own sub-MOC hub page.
  • Zettelkasten: each extracted block becomes an atomic note (one topic), connected by links; "link, don't duplicate" resolves the case where a block already lives in an existing doc.
  • PARA: the docs/ folders organize by actionabilityprojects/, areas/ (standards & rules), resources/ (reference & catalogs), archive/ (superseded).

If the repo already has a docs/ structure, respect it and map into the closest existing bucket; only lay down the PARA skeleton when creating docs/ fresh.

Flow

  1. Analyze → classify. outline CLAUDE.md gives sized sections. For each, decide KEEP-in-root-MOC (identity, terse always-apply rules, the link index) vs EXTRACT (specs, catalogs, tool/setup detail, verbose prose, duplicates), and for EXTRACT pick the PARA bucket + note title. Rubric in references/classification.md. This step is read-only: keep the decision table + projected savings for your final summary, then continue straight into the next steps (no need to pause for approval).
  2. Detect docs/ + choose targets. If absent, plan the PARA skeleton. If present, respect it and run dedup (references/dedup_merge.md): if an existing note already covers a block → plan a link to it (no new note); partial → append the delta; none → a new atomic note.
  3. Per block: reference-scan → move → repoint (atomically). See references/extraction_pattern.md.
    • begin --apply once, to create the dry-CLAUDE.md working copy (never edit CLAUDE.md).
    • refs --heading "<H>" before moving: it tags referrers read/source, write-target, or incidental (heuristic — you refine). read/source → repoint to the note; write-target → decide: a block agents append to every session may be better kept inline (surface it); else repoint every referrer — never silently orphan one.
    • extract dry-CLAUDE.md --heading "<H>" --into docs/<bucket>/<note>.md [--mode new|append] moves the block to an atomic note and leaves a pointer stub that keeps the heading in the working copy. Split a multi-item catalog into several atomic notes (+ a hub) by extracting per sub-heading.
    • Apply the referrer repoints with Edit, then re-run refs to confirm nothing still says the content is "in CLAUDE.md".
  4. Rebuild the index. moc --root dry-CLAUDE.md --apply regenerates the grouped link index (and any *.moc.md hub) from what's on disk. dry-CLAUDE.md is now: identity + always-apply rules + the grouped pointer index.
  5. Finish + hand off. finalize reports the size drop and prints the review/promote instructions. Your original CLAUDE.md is left untouched; the only new file is dry-CLAUDE.md (plus the notes). Do not promote for the user (the final mv dry-CLAUDE.md CLAUDE.md is theirs). Commit the change as one commit so git revert is a clean undo.

Safety & idempotency

  • Non-destructive: the helper never creates or overwrites a file named CLAUDE.md. Promotion is the user's manual mv dry-CLAUDE.md CLAUDE.md.
  • Act, don't ask: the output is non-destructive and git-reversible, so run the whole flow with --apply without pausing for permission. Report what you did at the end. The only never-automatic step is the final mv dry-CLAUDE.md CLAUDE.md promotion.
  • Idempotent: re-running skips blocks already turned into pointer stubs and rows already indexed; a second pass on a slim repo is a no-op.
  • Reversible: every change is a git-visible edit; the operation is one commit, so git revert undoes it (removes dry-CLAUDE.md and the notes). Your CLAUDE.md was never modified in the first place.
  • Scope: only touches Markdown / agent-instruction files. Never edits application source or config. No RAG / embeddings / vector index — navigation is the manifest + grep + links.

References

  • references/organization-model.md — MOC + PARA + Zettelkasten, with citations. The backbone.
  • references/classification.md — the KEEP-vs-EXTRACT rubric and which PARA bucket.
  • references/extraction_pattern.md — the reference-scan → move → repoint discipline (the hard part).
  • references/dedup_merge.md — detecting when to link to an existing note instead of creating one.
  • scripts/slim_claude_md.py — the deterministic helper (outline, refs, extract, moc, begin, finalize, stamp). --help on any subcommand.

What ships with it: 6 files

32.7 KB alongside SKILL.md, 1 of them executable

.claude-plugin/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.