From planr-pipeline
Interactive design exploration — parallel AI variants on a live comparison board (pins, ratings, remix), conversational iteration, taste memory. For ANY design target (logo, brand-sheet, screen, og-image).
How this command is triggered — by the user, by Claude, or both
Slash command
/planr-pipeline:design-loop <target|slug> [--provider openai|claude-svg|auto] [--count N] [--project <slug>]The summary Claude sees in its command listing — used to decide when to auto-load this command
# /planr-pipeline:design-loop {target}
The generalized design shotgun: concept list → **confirm before any spend** → N parallel
variants → a live localhost **board** (the board is the chooser; chat is only the wait) →
file-handshake feedback (pins on exact regions, ratings, remix) → session-chained iteration →
approval → taste memory. Works with an OpenAI key (image generation) **and without one**
(claude-svg: agent-authored SVG — for logos/UI often better: exact hex, real type, vector output).
**Engine:** `${CLAUDE_PLUGIN_ROOT}/lib/design-engine/cli.mjs` (`node <abs-path> <cmd> …`).
Reso...The generalized design shotgun: concept list → confirm before any spend → N parallel variants → a live localhost board (the board is the chooser; chat is only the wait) → file-handshake feedback (pins on exact regions, ratings, remix) → session-chained iteration → approval → taste memory. Works with an OpenAI key (image generation) and without one (claude-svg: agent-authored SVG — for logos/UI often better: exact hex, real type, vector output).
Engine: ${CLAUDE_PLUGIN_ROOT}/lib/design-engine/cli.mjs (node <abs-path> <cmd> …).
Resolve PLUG exactly as design-step2-generate.md C.1 does (this file's path minus
/commands/design-loop.md); always substitute absolute paths — shell vars don't reach
subagents (hard rule 6).
R1: this loop STOPS at approval. It never auto-chains into /plan or /ship.
Create one task per phase (TaskCreate, advance with TaskUpdate; pre-2.1.142 runtimes:
TodoWrite; no task tool: inline). Verify each phase's outputs on disk before advancing.
Phase A — Context + taste + conceptsPhase B — Concept gate (no spend before confirm)Phase C — Parallel variant generationPhase D — Board loop (feedback → iterate)Phase E — Approve + taste + handoff| Phase | Procedure |
|---|---|
| A — context, taste read, concept list | ${CLAUDE_PLUGIN_ROOT}/procedures/design-loop-step0-context.md |
| B — the concept gate | ${CLAUDE_PLUGIN_ROOT}/procedures/design-loop-step1-gate.md |
| C — parallel variants | ${CLAUDE_PLUGIN_ROOT}/procedures/design-loop-step2-variants.md |
| D — board + iteration loop | ${CLAUDE_PLUGIN_ROOT}/procedures/design-loop-step3-board.md |
| E — approve, taste, handoff | ${CLAUDE_PLUGIN_ROOT}/procedures/design-loop-step4-approve.md |
feedback-pending.json is consumed on read.VARIANT_X_DONE/FAILED/RATE_LIMITED —
failures explicit, never silently skipped; all-fail → sequential fallback, reason stated./tmp first, then cp (the engine does this; keep it when hand-authoring)..env key usage before generating; check it's gitignored..gitignore (the engine writes it).board the same dir).npx claudepluginhub openplanr/marketplace --plugin planr-pipeline