Tools & Capabilities
design-playbook
bandersnatch0x/design-playbook · ★ 3
Design I/O for coding agents — declarations + contracts that make UI generation constrained, reviewable, and recirculatable.
安装
dsh plugin --profile web add github:bandersnatch0x/design-playbookGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
- design-playbook
- Evidence-backed UI delivery for coding agents.
- ✅ Review UI against declared criteria and evidence
- Current stage
- ⚡ One command, three artifacts
- 🎬 Try it
- 📸 Evidence, not promises
- 🔁 The one-pass pipeline
- 🧩 Skills & commands
- 🎚️ Run profiles (P1/P2/P3)
- 🔌 Adapters (bundled)
- 🌐 Install on other agents
- 🔗 Stack with ecosystem
- 🪞 Honest limits
- 📄 License
design-playbook
Evidence-backed UI delivery for coding agents.
✅ Review UI against declared criteria and evidence
Agents cannot grade their own UI. design-playbook makes them prove it, criterion by criterion: required evidence missing leaves the criterion
blocked, and skipping the evaluator still produces anaudited: falseskeleton — never an audited Pass.
For a frontend or product engineer changing an existing Web UI with a coding agent, design-playbook connects the request, acceptance criteria, evidence, and repair owner. Findings point back to their owning declarations, blocking findings recirculate for repair, and evaluator review never replaces the named human's semantic approval.
| Surface | What carries it |
|---|---|
| Acceptance with proof | ui-evaluator + the point-back ledger: findings cite criterion-bound evidence; the closure trail is a run artifact, not a chat summary |
| Existing-product UI work | design-baseline discovers, validates, or drafts the project's DESIGN.md before changing a live product |
![]() |
![]() |
| Every finding points back to its declaration | The spec exists before any UI |
Current stage
[!NOTE] As of 2026-09-26, this project is in maintainer self-use and maintenance with bounded exceptions. Catalog submissions and participant recruitment are paused. Existing install paths remain available; internal dogfood, historical examples, and automated replays are not evidence of external adoption or repeat use. New capability specs are proposals, not implementation or release commitments. Resumption requires an explicit maintainer decision, not a date or passing internal tests.
Dated exceptions recorded in ADR-0045: the read-only frontend scope report (2026-09-25) and the Preview visual-editing capability (2026-10-09, local validation only). They do not reopen recruitment, catalog submission, or release, and no measured time-saving is claimed.
⚡ One command, three artifacts
The mechanism behind that proof is one pass:
/design-playbook:design-io <your UI ask>
A Design I/O run uses bundled MCP configuration, subject to host support and runtime prerequisites, and records three core artifacts under .scratch/<run>/:
| Artifact | What it owns |
|---|---|
1 · spec.md |
The six-layer declaration of what good is (intent → acceptance), written before any UI |
| 2 · Decision report | Shell + component semantics, written before any code |
| 3 · Point-back ledger | Every acceptance finding states which declaration it violates, plus the closure trail |
🎬 Try it
Claude Code
/plugin marketplace add https://github.com/Bandersnatch0x/design-playbook.git
/plugin install design-playbook@design-playbook
Codex
codex plugin marketplace add Bandersnatch0x/design-playbook
codex plugin add design-playbook@design-playbook
Then, namespaced (bare /design-io is a --plugin-dir dev alias only):
/design-playbook:design-io <your UI ask>
On Cursor, Windsurf, Gemini CLI, Zed, or any of 30 supported agents: see 🌐 Install on other agents. Honest degradation: 22 of the 30 are the generated AGENTS.md floor (orchestrator contract + MCP install guide, commands as prompt docs) — the tier table says exactly what each tier gets.
Codex install details, the [mcp_servers.*] fallback when a marketplace is unavailable, and preview prerequisites: packages/design-playbook/codex/AGENTS.md.
Runtime prerequisites: a supported host with the relevant MCP tools registered, Python 3 for the bundled runtimes, and a local browser for Preview. Runtime capture additionally needs Playwright with Chromium and a reachable application with the required test data and login state. See the capture setup. An unavailable optional adapter is disclosed; required proof still cannot be treated as passed merely because capture was skipped.
The marketplace catalog lives at the repo root (not the package):
claude --plugin-dir <abs>/packages/design-playbook # dev load, no install
/plugin marketplace add <abs-to-repo-root> # local marketplace
/plugin install design-playbook@design-playbook
codex plugin marketplace add <abs-to-repo-root>
codex plugin add design-playbook@design-playbook
Version SSOT: packages/design-playbook/package.json and
packages/design-playbook/.claude-plugin/plugin.json stay version-locked; the
sibling bundle, root catalog, README badges, and generated Codex snapshot follow them.
📸 Evidence, not promises
Acceptance records keep their evidence limits visible:
| Rule | Meaning |
|---|---|
| Point-back | Every acceptance finding names the spec, domain, or craft declaration that owns it. No free-floating "looks good" |
| Recirculate | Blocking findings flow back to the owning stage until they close; the closure trail is part of the run artifacts |
| No silent skip | Skipping the audit still carries the point-back skeleton, marked audited: false — strict validation refuses it as a final result |
| Missing is not inapplicable | Missing required proof is blocked; not-applicable needs an unmet applicability condition and a reason, not an unavailable capture tool |
Historical cases and journey coverage: three independent requests, plus one complete current live run (case reader) that packages the whole chain — spec, real preview confirmations, Fill, craft audit, captured evidence, review, static handoff — with a cross-run review report. The SwarSight queue case retains its specification, design decisions, and review / repair record; it predates the current plan and capture requirements.
The images below are illustrated summaries of that historical case, not raw execution captures:
| 1 · ux-spec — six-layer spec before any UI | 2 · ui-picker — decision report before code |
![]() |
![]() |
| 3 · ui-evaluator — point-back + recirculate closure | Historical result — six case checks, not the current gate matrix |
![]() |
![]() |
Preview review workbench — inspect a design, anchor feedback, then confirm or revise. The control shell also carries a bounded visual-editing capability (resize, drag move, text and colour edits through the inspector; local validation only, no source writer). The packaged human-confirmation record belongs to a separate onboarding-form task; it is not confirmation of the queue case or of production acceptance:
Browse the three cases and their boundaries, or the complete current run for an end-to-end record that includes a resume pause point and a generated static handoff. The retry interface is another task with local mock data, not a plugin execution.
🔁 The one-pass pipeline
Declare what good is before the code exists, generate against that declaration, then accept the result against the same declaration. Every run executes the same predictable Design I/O pass:
design-baseline? → reference-intake? → ux-spec? → plan? → (native-craft?)
→ ui-picker → (preview*) → fill → craft-guard† → (observe*†) → ui-evaluator†
▲ │
└────────────── recirculate ───────────┘
Six declarations own what good is (spec · domain · craft · design · components · template); two contracts govern how work enters the pipeline (skill for timing, evaluator for acceptance + recirculate).
| Marker | Meaning |
|---|---|
? |
Conditional entry — design-baseline? for UI work in an existing product; reference-intake? when the ask carries a screenshot / URL / analogy |
* |
Adapter stage — runs only when its bundled MCP tool is registered; otherwise skipped, never a hard error |
† |
user-selectable audit stage (decision record ADR-0033) — asked once on first run, remembered in .design-playbook/preferences.yaml (version-controlled; per-machine overrides in gitignored preferences.local.yaml) |
🧩 Skills & commands
Nine skills in the package (/design-playbook:<name>):
| Skill | Role |
|---|---|
design-playbook |
🎯 Orchestrator (full pipeline, run-profile tiering P1/P2/P3) |
design-baseline |
🧭 Discover, validate, or draft project DESIGN.md before existing-product UI work |
reference-intake |
📎 Reference contract (screenshot/URL/analogy → Keep/Change/Do not copy) |
ux-spec |
📋 Six-layer spec declaration via the S0-S6 shaping session (question/assumption/confirmation batches + session artifacts) |
ui-picker |
🧱 Shell + component semantics + design-decision entries (record / compare / explore tiers) |
craft-guard |
🛡️ Detail-craft check — spacing, hierarchy, motion (anti-AI-slop) against the built-in rule registry |
native-craft |
🖥️ Native-feel desktop declaration |
ui-evaluator |
✅ Acceptance — every finding points back to its declaration; blocking ones recirculate |
component-distill |
Existing cross-run, report-only component/token promotion proposals; durable promotion requires a user decision. Not a single-run pipeline step |
Eight commands: design-io (full pipeline) · ux-spec (spec only) · ui-review (accept only) · run-review (cross-run) · run-status (phase + resume narration) · run-handoff (static delivery package for a reviewed run) · doctor (install health) · component-distill (cross-run proposals, no automatic promotion)
🎚️ Run profiles (P1/P2/P3)
Every run declares a tier in the plan.md run-profile block — process weight stays proportional to change consequence. Upgrades are automatic the moment a correction signal appears; downgrades need the user.
| Tier | Scope | Gate face |
|---|---|---|
| P1 point-fix | Single-owning-layer point-back repair, no decided-field touch | Registry subset evaluation; R4/R5 (+R2 line) routes |
| P2 standard | In-baseline feature change (new criteria, R/C decisions) | Full predicate evaluation; shaping session + G9/G10 |
| P3 full | Decided-field revision (supersedes), structural re-composition, E-tier decisions | G1-G12 full spectrum + sampling matrix fully executed |
Run-profile and re-entry decisions: ADR-0029. Maintainer documentation: Chinese documentation index.
🔌 Adapters (bundled)
Preview and Evidence MCP runtimes ship inside the main plugin
(packages/design-playbook/mcp/ + .mcp.json with ${CLAUDE_PLUGIN_ROOT}).
Marketplace install registers both tools with no second package; the
orchestrator still probes and skips steps when a host has no MCP tools.
| Adapter | MCP tool | Enables | Notes |
|---|---|---|---|
design-playbook-preview |
preview_prototype |
preview* human confirm gate (G5) |
Bundled; needs system Edge/Chrome for the popup (falls back to default browser) |
design-playbook-evidence |
execute_capture_plan |
observe* runtime evidence (G6) — needs Playwright + Chromium |
Bundled; capture still optional at runtime |
🌐 Install on other agents
npx design-playbook init <agent>
# or: python packages/design-playbook/scripts/generate_adapter.py <agent>
| Tier | Agents | What you get |
|---|---|---|
| Tier 1 (native) | Claude Code, Codex | Full fidelity — skills, commands, MCP, drift-gated snapshots |
| Tier 2 (generated) | Cursor, Gemini CLI, OpenCode, Windsurf, GitHub Copilot, Zed | Skills as platform rules + project-level MCP config; commands degrade to prompt docs. Zed: .rules (first-match aware — skipped if a competing rules file exists without one) + .zed/settings.json context_servers |
| Tier 3 (floor) | 22 total, including Kiro, Amp, Jules, Qwen Code — npx design-playbook --list |
AGENTS.md with orchestrator contract + MCP install guide |
Claude Code is the native surface. Tier-2/3 outputs are generated adapters with honest degradation. Current inventory: adapter matrix; tier semantics: ADR-0042.
🔗 Stack with ecosystem
Not another style/palette pack — this plugin owns the delivery pipeline, evidence semantics, and acceptance loop, and composes with the rest:
| Package | Use for |
|---|---|
| design-playbook | Baseline? → Reference? → Spec? → plan? → shell → optional preview* → fill → craft → optional observe* → point-back |
| ui-ux-pro-max | Style / palette / type search |
frontend-design |
Anti-template visual direction |
| native-feel-skill | Full native-feel depth (WebView, IPC, memory) |
🪞 Honest limits
- Multimodality — understanding screenshot content depends on the host model's vision capability. The plugin only registers images (locator + SHA-256 + metadata); a host without vision rides your text description instead.
- Run Console — shipped and experimental: a local, single-run console projecting existing run artifacts so an operator can see intent, source verdict, blocker source, and next owner without opening raw files — including a derived Repair Packet and an explicit
open-consolecontinuation fromrun-status. It stays local and trial-gated (no external authorization yet), is not a cloud Workspace, and never becomes a second run-state authority. - Packaging MCP config — marketplace path includes package-local MCP runtime config; published registry packages may omit a root MCP config and need explicit host registration.
- Console loopback on Windows — local Console open uses loopback transport; dogfood saw a transport abort there, so do not treat loopback as a fixed-platform guarantee.
- Proof vs. shape —
scripts/validate_run.pymachine-checks the run-artifact shape and the closure trail; it does not claim every future run is automatically high-quality UI. Historical verdicts apply only to their recorded cases, not a current end-to-end run or a statistical guarantee.
📄 License
MIT (authored content). See LICENSE + NOTICE. No rights claimed over any third-party playbook corpus.
The repo also carries design-playbook-workbench, a separate single-maintainer, loopback-only local design-asset workbench authorized under ADR-0045; it is not part of the installable plugin and ships nowhere yet.
Repo layout, maintainer scripts, and the engineering shell live behind the front door: package README · docs/agents · Contributing.
GitHub Issues are for user reports and feedback. Internal specs, plans, research, and work tickets stay local and untracked; see the issue policy.
Maintainers: automated acceptance covers the required matrix and an extra-project operator replay. Its simulated review inputs are regression fixtures, not external trial evidence.



