craft-analyze
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
The Shelf - what waits on you, what's
> /plugin marketplace add drobins25/craft > /plugin install craft@craft
How it fires
How this command gets triggered: by you, by Claude, or both.
/craft-decisionsContext preview
What this command does when you run it.
The Shelf - what waits on you, what's
name: decisions description: "The Shelf - what waits on you, what's ruled, what's claimed, what became real. Rule on a card, reopen or retire one, or move one to another topic." when_to_use: | The user says "decision" about a product ruling: "save this as a decision", "what decisions are pending", "list decisions tagged X", "move the guides ones to wright". Renders live from .craft/decisions/, never from memory. Not for: facts, ideas, todos (notebook); code patterns the validator enforces (lock-decision); gate words on their own - "approve", "decline", "lock it" belong to whatever is on screen. Reactive only - never offers itself. argument-hint: "[tag or topic] or empty for the Shelf"
Claude draws every card and list frame - the lists from the graph's own draw calls, every card but the reopen diff from the text already in the conversation - following `### The drawing rule` below: a left rail with horizontal rules, no right edge, no fixed width, quoted words verbatim. A decision is presented as a card: the exact record it would become. Nothing here writes a record file directly - every write is a call this graph names.
This shell owns only routing.
<HARD-GATE> NEVER use AskUserQuestion here - the answer is typed into the prompt. NEVER write a record file by hand - every write is a call on the graph. NEVER draw a card from memory - draw it from the record text in the conversation, and after any write read the file again before drawing it. NEVER let a box-drawing character into a script's stdout - the rail is drawn here. NEVER relay a script's error line as the answer. NEVER render anything below the Shelf unasked. NEVER select with subcommand syntax - selection is the list filters. NEVER draw a card, take a quote or write an approval line for a retag. NEVER treat the desk as open once the card the user asked about is ruled or put away - a later ruling in conversation is just conversation until they type the command again or call it a decision. </HARD-GATE>
The Shelf rule above bars a second view nobody asked for, not words: one sentence of Claude's own under a drawer or the Shelf is fine.
Every word an arrow carries, and every word a diamond's name uses. One line each, no sentence longer than its rule.
A node's text names a script; every call is written `bash "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/<name>.sh"` and runs from wherever the session is - never from a changed directory, never searched for. Each block below is what a node points at: what the script takes, one example that runs as written, and what it prints.
These blocks are the whole contract: what a script takes and what it prints are written here, and a script's sourc
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…
Agent crystallization command. Studies a tool, role, or person and produces a portable…
Complete a cycle. Triggers reflection if pending learnings, then archives.
Design a cycle — create new cycles with planned stories, detail existing planning cycles, or…