en un clic
ruminate
// Mine past Claude Code conversations for uncaptured patterns, corrections, and knowledge. Cross-references with existing docs/. Triggers: "ruminate", "mine my history".
// Mine past Claude Code conversations for uncaptured patterns, corrections, and knowledge. Cross-references with existing docs/. Triggers: "ruminate", "mine my history".
Read/write the docs/ vault — this project's persistent memory. Use for any task that persists knowledge: reflection, planning, gotchas, principles, or direct edits. Triggers: docs/ modifications, "add to docs", "remember this".
Turn a rough feature request into a concrete spec file at `specs/pending/<slug>.md`. Read the codebase first, then ask the user targeted questions, then write the spec. Use when the user says "design a spec", "spec this out", "/design-spec", or hands you a feature idea that needs to become a concrete spec before implementation starts.
Audit and evolve docs/ — prune outdated content, discover cross-cutting principles, review skills for structural encoding opportunities. Triggers: "meditate", "audit the docs".
Produces a single-file interactive HTML explainer (dark theme, embedded React demos via CDN) by editing a self-contained template in place, written in Josh Comeau's conversational voice. Use when the user asks for an "interactive guide", "blog post explainer", "Josh Comeau style writeup", "visual deep-dive", "make this visual", or wants to turn a technical topic into a learning page with playable demos.
Reflect on the conversation and update docs/. Use when wrapping up, after mistakes or corrections, or when significant codebase knowledge was gained. Complements the automatic Stop-hook reflection (`.claude/hooks/docs-reflection.sh`) — invoke this manually for a deeper pass. Triggers: "reflect", "remember this".
| name | ruminate |
| description | Mine past Claude Code conversations for uncaptured patterns, corrections, and knowledge. Cross-references with existing docs/. Triggers: "ruminate", "mine my history". |
Mine conversation history for knowledge that was never captured. Complements reflect (current session) and meditate (vault audit) by looking at the full archive of past conversations.
Build a docs snapshot: sh .agents/skills/meditate/scripts/snapshot.sh docs/ /tmp/docs-snapshot-ruminate.md. Pass the snapshot path to each analysis agent. This avoids loading the full vault into the ruminate orchestrator's context.
Find the project conversation directory:
~/.claude/projects/-<cwd-with-dashes-replacing-slashes>/
Run the extraction script to parse JSONL conversation files into readable text and split into batches:
python3 .agents/skills/ruminate/scripts/extract-conversations.py "$CONV_DIR" "$OUT_DIR" --batches N
Choose N based on the number of conversations found: ~1 batch per 20 conversations, minimum 2, maximum 10.
Spawn N general-purpose subagents in parallel (one per batch). Each agent's prompt should include:
$OUT_DIR/batches/batch_N.txt)$OUT_DIR/findings_N.md)docs/ (compiled from step 1) — so agents skip known knowledgeAgents write structured findings to their output files.
After all agents complete, read all findings files. Cross-reference with existing docs/ content. Deduplicate across batches.
Filter by frequency and impact. Most findings won't be worth adding. Apply these filters before presenting:
docs/ now wrong? These are always worth fixing regardless of frequency.Discard aggressively. It's better to present 3 high-signal findings than 9 that include noise.
Present findings to the user in a table with columns: finding, frequency/evidence, and proposed action. Be honest about which findings are one-offs vs. recurring patterns — let the user decide what's worth adding.
Route skill-specific learnings. Check if any findings are about how a specific skill should work — its process, prompts, edge cases, or troubleshooting. Update the skill's SKILL.md directly. Read the skill first to avoid duplicating or contradicting existing content.
Apply only the changes the user approves. Follow vault writing conventions:
docs/principles/, docs/patterns/, docs/guides/, etc.[[wikilinks]] to connect related notesdocs/principles.md and docs/plans/index.md auto-regenerate; only edit docs/index.md by hand if a top-level entry changesRemove the temporary extraction directory:
rm -rf "$OUT_DIR"