Skip to content

/insight-mining

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

From plugin
craft
6262 skills27 agents62 commands7 hooks
+1
Install
> /plugin marketplace add drobins25/craft
> /plugin install craft@craft

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/insight-mining

Context 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

Command definition

insight-mining.md

Insight Mining (Inline Reference)

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.

The two hard rules (read first)

**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.

Mining inputs, in order

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.

Ranking - the quote patterns, strongest first

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.

Card body formula

**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.

  • **Quote budget: at most TWO quoted strings per card.** One is the default; a reversal earns the second. Three quotes is a paragraph doing a card's job - cut.
  • **No date in the body.** The page renders the quote-source record's date as a badge in the card chrome, derived from the first evidence node - a body that opens "August 26th, ..." says it twice. The date stays out of the prose entirely.
  • **Citable beats only.** "Same record", "attempt 2", "the next reaction on file" - connective tissue comes from the record's real structure. Records carry dates, not clock times: NEVER an invented duration ("forty minutes later" is fabrication).
  • **Name the memory.** The card says what the conversation was about - the surface, the decision - so the reader lands back in it. A quote floating without its memory is half a card.

Register - how a card speaks

Binding rules, no exceptions:

  • **Second person.** The card talks to the user about their own work.
  • **Deadpan clerk voice - the card never knows it's funny.** It files the user's words with a straight face; the reader's discovery is the punchline. A card that performs (winks, exclaims, dresses up) kills the joke it carries.
  • **Affectionate roast, never snark.** The voice is a friend who kept receipts and loves you anyway.
  • **Quotes verbatim and exact.** Typos, profanity, capitalization - preserved as written. Never sanitize, never paraphrase inside quote marks. The typo is load-bearing.
  • **One specific fact PLUS one turn of phrase per card.** The quote is the fact-carrier; the memory line carries the feeling. Restraint over flourish.
  • **Receipts in-frame.** Everything stated must be verifiable from the cited evidence nodes and the mirrors read.
  • **Never a bare number as the wh
Read more
Ships withcraft

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

Get the whole plugin, auto-invoked

Other commands on craft.