craft-analyze
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Read inline by `/craft:dashboard` Step 2.5 when the insight sidecar is stale or missing. You are about to author `.craft/graph/insights.js` - the 3-4 insight cards the dashboard composes over the user's galaxy. The cards are built from the user's own preserved words, and
> /plugin marketplace add drobins25/craft > /plugin install craft@craft
How it fires
How this command gets triggered: by you, by Claude, or both.
/insight-miningContext preview
What this command does when you run it.
Read inline by `/craft:dashboard` Step 2.5 when the insight sidecar is stale or missing. You are about to author `.craft/graph/insights.js` - the 3-4 insight cards the dashboard composes over the user's galaxy. The cards are built from the user's own preserved words, and
Read inline by `/craft:dashboard` Step 2.5 when the insight sidecar is stale or missing. You are about to author `.craft/graph/insights.js` - the 3-4 insight cards the dashboard composes over the user's galaxy. The cards are built from the user's own preserved words, and recognition is the payload: the reader's "oh right, that day" is what a card is for. A deterministic script cannot hear a human voice in a record, which is why this file is a spec for YOU, not a script to run.
Everything here is silent work. No receipt line, no "generating insights" - the page itself is the reveal.
**1. The citation gate.** A card is written only if it cites at least one `evidence_node_ids` entry that exists in `graph.js` right now. A card that cannot cite real evidence is discarded - never softened, never shipped without its receipts. An unevidenced card would stand in-frame as a fortune cookie, and the page will render it anyway (it drops only the marks for vanished ids), so this authoring-time citation gate is the only defense.
**2. The mirror rule.** Structural signals - counts, dates, statuses, hubs - are ONLY an index for choosing which record mirrors to spend the reading budget on. **The card body is always built from what is inside a mirror: the user's own preserved words, and the memory of what they were doing when they said them.** A finalist whose mirror yields no human material is cut, never padded into a stat card. Stats never form a card body on their own.
**Evidence order is normative: the FIRST `evidence_node_ids` entry is the quote's source record.** The page derives the witness, the standoff ring, the hover warmth, and the eyebrow date badge from `evidence_node_ids[0]` - always put the record the quote came from first; supporting evidence follows.
Parse the JSON after `window.CRAFT_GRAPH = ` in `<root>/.craft/graph/graph.js`. Spend the reading budget in this order:
1. **`graph.stats`** - orientation, one field lookup each: `birthday`, `days_of_craft`, per-type `counts`, and `keystone {id, degree, kind}` (the biggest hub in the sky). 2. **`graph.nodes`** - scan for finalists using the ranking below. Every node carries `id, type, title, date, status, tags` (+ `subtype`, `kind`, `chunks` where relevant). Tweak and dial nodes are the richest veins - tweak records log the user's verbatim reaction per attempt, and dial records preserve exit notes. 3. **`records/{id}.js` mirrors** - read AT MOST 8, and only for finalists, after ranking. Each assigns the record's full markdown to `window.CRAFT_RECORDS["{id}"]`. This is where the voice lives - a verbatim line, a real reaction, the subject the human was actually deciding. Never read mirrors speculatively; the budget buys voice, not coverage.
A card wants a preserved human quote. Rank finalists by which pattern their records promise:
1. **The reversal** - one record holding two verbatim, contradictory reactions from the user (the opening complaint and the closing "Love it"). Tweak records log reactions per attempt - look there first. 2. **The reverse-roast** - the user roasting the machine's own output, preserved in a record (dial exit notes on `outcome: nothing` are prime). 3. **The prophecy** - a record where one player narrates the other (a riff memory noting what the user predicted or did). 4. **The epitaph** - the kill quote on an abandoned, reverted, or rejected record, in the user's words.
Structural outliers - the singleton type, the oldest still-open record, same-day streaks, `stats.keystone`, killed outcomes - are how you CHOOSE which mirrors to open. They rank finalists; they never write cards. Pick the 3-4 strongest, fresh-picked every generation: the roster is a category, not a fixed set, and every screenshot should be different.
**Quote first, memory second.** The verbatim line is the hook; the what-you-were-deciding context is the reveal that fires recognition.
Shape: `"<verbatim quote>" <what the record was actually about, in plain words>.` An optional short dry closer is allowed only if it is itself a fact from the record.
Binding rules, no exceptions:
Stop Vibing. Start Crafting. A Claude Code plugin that acts as an intelligent harness for your development workflow: your codebase is read-only by default, every change passes through a Write Gate as planned and approved work, and craft tracks your project's
Repo: drobins25/craft
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Consult a craft agent. Routes your question to the best mind in the workshop - not a menu, a recommendation.
Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain - with beliefs, scar tissue,…
Complete a cycle. Triggers reflection if pending learnings, then archives.
Design a cycle — create new cycles with planned stories, detail existing planning cycles, or quick-sketch a roadmap. Detects planning docs in .craft/planning/…