rabbit-reads
Reading notes
Distill a long source into a doc set you can consult later. The deliverable is a <book-slug>-notes/ folder holding one doc per concept, each 40 to 70 lines, plus a README.md index naming every doc, where it came from in the source, and its kind.
The cut is by concept, not by chapter. A chapter holds several concepts, a concept can draw on several chapters, and a file per chapter produces summaries. A summary restates the source at half density and extracts nothing, which is the failure this skill is built to avoid.
Each doc follows the template of its book type: a short statement of the concept, numbered imperative practices, anti-patterns, structural tests, and See also links to its siblings. The worked example in this repository is docs-best-practices/, one book distilled into 25 docs.
Paths. ${CLAUDE_PLUGIN_ROOT}/skills/ means the directory holding this skill and its siblings (rabbit-writes, voice-setup, rabbit-readme-improver, rabbit-reads, rabbit-rewrites, rabbit-claude-md). Claude Code expands the variable. On a host that doesn't, such as Codex, resolve it that way by hand.
Modes
| Mode | Trigger | Deliver |
|---|---|---|
| distill | A new source: "read this PDF and turn it into a doc set", "extract the practices from this book" | All seven phases: a <book-slug>-notes/ folder, its README index, and a clean checker run |
| extend | A notes folder exists, and the ask is concepts it does not carry | New docs in the folder's existing type and template, index updated, the whole folder re-checked |
| verify | "check these notes", or the checker has never run over the folder | Every finding check_notes.py names, fixed, and a clean re-run |
Default to distill when the source is new. Route to extend when the folder exists and the ask adds to it. Route to verify when the folder exists and the ask is only to check it.