craft-analyze
CommandPost-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Live HTML mockup funnel - 3 options, converge by reacting, graduate to tweak/story/todo.
> /plugin marketplace add drobins25/craft> /plugin install craft@craft
name: mockup
description: "Live HTML mockup funnel - 3 options, converge by reacting, graduate to tweak/story/todo."
when_to_use: |
Use on an explicit ask to mock something up or see visual options live
('mock up X', 'create a mockup for X', 'show me options for X'). Unsettled
direction is the point - if the look is already decided, route to tweak or
story instead. Not for non-visual uncertainty. On invoke, seed the brief
from the session context.
argument-hint: "[what to mock up]"A persistent alchemist builds 3 genuinely different live HTML options of a visual/interaction idea. You converge by reacting - diverge, refine, polish - new design values solidify to tokens.yaml at acceptance, and the converged mockup graduates on your choice: an immediate tweak, a story, or a parked notebook todo.
This shell owns only routing. The funnel lives in one reference file.
**If args provided:** the args are the subject - what to mock up.
**If no args:** take the subject from the session context (the conversation that led here names it). If nothing in context names a visual subject, ask conversationally - "What are we mocking up?" - no AskUserQuestion; the flow's question budget belongs to the funnel.
A mockup left open by an earlier session never blocks a new one: its pin listener ended with that session, and its alchemist is re-anchored from the record on resume. A mockup open in another terminal right now looks the same on disk, which is why resuming or abandoning one asks first (below). Only the mockup this conversation is running keeps a new one waiting, because its pin listener, browser tab and round tasks cannot be shared with a second.
Find the project folder first - `$CRAFT_PROJECT_ROOT` when it is set, else the folder this prints: `bash -c 'source "$1" >/dev/null 2>&1; craft_before_init_root' _ "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/find-workshop.sh"` - so a mockup started before `/craft:init` is not missed. Then list the open ones:
grep -l "^status: converging" "<project folder>"/.craft/mockups/*/record.md 2>/dev/null
Converged and parked records are not open mockups and are never named here.
Read `${CLAUDE_PLUGIN_ROOT}/commands/references/mockup-inline.md` and execute it inline, from Step 1 (Brief), with the subject and session context in hand.
**Never invoke the funnel via the Skill tool** - a Skill-tool call ends the turn and control never comes back for the next round; inline execution is the contract (see .claude/rules/skill-invocation-chain-breaks.md).
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Point at anything in a live browser tab - every pin gets a live attempt on the page the moment you SEND it, and the session keeps…
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 -…
File a bug without fixing it, from a person mid-conversation or an agent mid-run. One door, a complete record on disk, nobody…
Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.