Skip to content

/craft-mockup

Live HTML mockup funnel - 3 options, converge by reacting, graduate to tweak/story/todo.

From plugin
craft
7377 skills27 agents77 commands7 hooks
+1
> /plugin marketplace add drobins25/craft
> /plugin install craft@craft

Command definition

craft-mockup.md
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]"

Mockup

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.

Flow

Step 1: Parse the subject

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

Step 2: Open mockups

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
  • **One of them is the mockup this conversation is running** (this conversation ran its funnel, so its record path is already in hand): say so in one line and offer three ways on - finish it, abandon it, or start the new mockup in a fresh session, where this one will not block it. Start nothing until the user picks.
  • **Otherwise:** no open mockup is one this conversation started. In one line, before the funnel starts, name the newest by its folder name and add `, and <m> more` when there are others: "There's a mockup still open from before - <name><, and <m> more>. Ask to resume or abandon it by name any time; starting the new one now." Say it once per conversation, never as a widget, then continue to Step 3. Resuming one re-anchors it from its record, as the funnel's Recovery describes, never a new Brief; abandoning one runs the funnel's abandon on that record. Before either, ask once, because it may still be open in another terminal: "<name> may still be open in another terminal. Abandon it anyway?" ("Resume it anyway?" for a resume). A yes runs it; any other reply leaves the mockup as it is.

Converged and parked records are not open mockups and are never named here.

Step 3: Run the funnel

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

Read more
@drobins25
Ships withcraft

Stop Vibing. Start Crafting.

7311 skills27 agents1 MCP
Get the whole plugin, auto-invoked

Stars on GitHub

Momentum

stars in total
73
Star history of drobins25/craft on GitHub, a chart by star-history.com

Other commands on craft.

craft-analyze
Auto-invoked

craft-analyze

Command

Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.

@drobins25@drobins25Install Command
craft-annotate
Auto-invoked

craft-annotate

Command

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…

@drobins25@drobins25Install Command
craft-ask
Auto-invoked

craft-ask

Command

Consult a craft agent. Routes your question to the best mind in the workshop - not a menu, a recommendation.

@drobins25@drobins25Install Command
craft-become
Auto-invoked

craft-become

Command

Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain -…

@drobins25@drobins25Install Command
craft-bugs
Auto-invoked

craft-bugs

Command

File a bug without fixing it, from a person mid-conversation or an agent mid-run. One door, a complete record on disk, nobody…

@drobins25@drobins25Install Command

More commands from other plugins.

build
Auto-invoked

build

Command

Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.

@addyosmani@addyosmaniInstall Command