Are you the author? Sign in to claim
๐จ Picasso Orchestrator: 1. Gate-scored bidirectional loop: Claude Code โ Claude Design. Brief โ DESIGN.md โ Generate โ
Stop guessing if your implementation matches the design. Let the loop prove it.
Picasso connects Claude Code to Claude Design in a closed feedback loop โ structured brief in, verified code out, with a mathematically scored fidelity gate between them. No more "looks close enough." Either the score hits 9.0 / 10 or the loop keeps going.
# 01 ยท Install (one-liner โ patches ~/.claude automatically)
curl -fsSL https://cdn.jsdelivr.net/gh/RazvanGabrielNiculae/picasso-claude-design-claude-code-bridge-loop@main/scripts/install-oneliner.sh | bash
# 02 ยท Verify everything is wired correctly
picasso-bridge verify --smoke
# 03 ยท Run your first bridge loop
/picasso --design-loop "hero cinematic for B2B SaaS" --scope complex
๐ก Need a guided setup? Add
--wizardto the install command. It walks you through gate, max rounds, and hook wiring interactively.
flowchart LR
A([picasso]) --> B[ASSUMPTIONS] --> C[DESIGN.md] --> D[Claude Design] --> E[Implement] --> F[Render] --> G[Score] --> H{Gate 9.0}
H -- "โ
" --> I([APPROVED])
H -- "๐" --> J([STAGNATED])
H -- "๐ refine" --> D
style A fill:#ff2d95,stroke:#ff4fa8,color:#fff
style B fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style C fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style D fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style E fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style F fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style G fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style H fill:#2a2000,stroke:#ffd83d,color:#fff59d
style I fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
style J fill:#2e1a0d,stroke:#ff9800,color:#ffb14a
/picasso --design-loop "hero for B2B SaaS")DESIGN.md sections (~200 tok vs 2,000 naive)current โ target ยท passed to next roundscore โฅ 9.0 โ โ
APPROVED ยท plateau โ STAGNATED ยท else โ refine and repeat from step 4| Metric | Value | What it means |
|---|---|---|
| ๐ฏ Default gate | 9.0 / 10 | Weighted fidelity across 6 visual criteria |
| ๐ Loop modes | 5 | loop ยท solo ยท critique ยท reference ยท iterate |
| ๐ Steps per round | 7 | request โ extract โ implement โ render โ score โ gaps โ gate |
| ๐งฉ Orchestration patterns | 9+ | Token-aware, stagnation-proof by design |
| ๐ง Karpathy principles | 4 | Baked into the conductor โ not optional extras |
| โก Token savings | 3ร | vs. naive full-context loop (zero-context subagent + lazy reads) |
| Tool | Version | Role |
|---|---|---|
| ๐ค Claude Code | โฅ 0.2.0 | CLI host โ custom commands + subagents + hooks |
| ๐จ Claude plan | Pro ยท Max ยท Team ยท Enterprise | Required for claude.ai/design ยท optional if running open-design locally |
| ๐ Chrome | latest | Authenticated session on claude.ai |
| ๐ chrome-mcp | latest | MCP browser transport โ navigate, click, screenshot |
| ๐ webdesign-mcp | latest | Scrape tokens ยท render previews ยท compute score |
| ๐ฆ Node | โฅ 18 | MCP server runtimes |
| ๐ ๏ธ jq ยท bash | any | Used by hooks and install scripts |
flowchart LR
S1[Request] --> S2[Extract] --> S3[Implement] --> S4[Render] --> S5[Score] --> S6[Gaps] --> S7{Gate}
S7 -- "โ
โฅ9.0" --> AP([APPROVED])
S7 -- "๐ plateau" --> ST([STAGNATED])
S7 -- "๐ retry" --> S1
style S1 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style S2 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style S3 fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style S4 fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style S5 fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style S6 fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style S7 fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style AP fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
style ST fill:#2e1a0d,stroke:#ff9800,color:#ffb14a
| Step | Name | What happens |
|---|---|---|
01 | ๐ก Request | browser_batch: navigate โ form_input โ wait โ screenshot(800px) โ get_text |
02 | ๐ Extract | scrape_reference with SHA-256 hash cache โ skipped entirely if HTML unchanged |
03 | ๐จ Implement | Zero-context subagent. Only changed DESIGN.md sections. ~200 tok vs 2,000 naive. |
04 | ๐ธ Render | Desktop always. Mobile only if previous responsive score < 8.0. |
05 | ๐ฏ Score | Fast model: ฮE colors + grid pixels + token match. Standard: gap synthesis. |
06 | ๐ Gaps | 3 lines max ยท goal-declared format: current โ target ยท 15 words each. |
07 | ๐ช Gate | total โฅ gate โ โ APPROVED ยท plateau โ STAGNATED ยท else โ next round |
flowchart LR
subgraph CC["Claude Code"]
PC[picasso] --> PDL[pdl-conductor]
HK[6 hooks] --> PDL
PDL --> DM["DESIGN.md"]
end
subgraph MCP["MCP"]
CMCP[chrome-mcp]
WMCP[webdesign-mcp]
end
CD[Claude Design]
PDL --> CMCP --> CD
CD --> CMCP --> PDL
PDL --> WMCP
style CC fill:#1b0d14,stroke:#ff2d95,color:#ffa2cf
style MCP fill:#0a1520,stroke:#5ce1ff,color:#8eecff
style PC fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style PDL fill:#ff2d95,stroke:#ff4fa8,color:#fff
style HK fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style DM fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style CMCP fill:#0a1520,stroke:#5ce1ff,color:#8eecff
style WMCP fill:#0a1520,stroke:#5ce1ff,color:#8eecff
style CD fill:#0d2e1a,stroke:#7cf0a0,color:#7cf0a0
linkStyle 0 stroke:#ffd83d,stroke-width:2px
linkStyle 1 stroke:#ffd83d,stroke-width:2px
linkStyle 2 stroke:#ffd83d,stroke-width:2px
linkStyle 3 stroke:#ffd83d,stroke-width:2px
linkStyle 4 stroke:#ffd83d,stroke-width:2px
linkStyle 5 stroke:#ffd83d,stroke-width:2px
linkStyle 6 stroke:#ffd83d,stroke-width:2px
linkStyle 7 stroke:#ffd83d,stroke-width:2px
| Tag | Component | Role |
|---|---|---|
CORE ยท ORCHESTRATOR | Claude Code CLI | Hosts /picasso, pdl-conductor subagent, six lifecycle hooks |
CORE ยท DESIGN SIDE | Claude Design (web) | Visual proposal engine driven through authenticated browser tab |
TRANSPORT | chrome-mcp | MCP browser transport โ navigate, click, type, upload, screenshot |
MEASUREMENT | webdesign-mcp | Extracts tokens, renders candidate previews, returns weighted fidelity score |
PROTOCOL | Model Context Protocol | Wire format for both MCP servers โ any MCP client can swap in |
CONVENTION | DESIGN.md (9 sections) | Single-source design contract: colors ยท typography ยท components ยท layout ยท motion ยท depth ยท brand ยท responsive ยท accessibility |
flowchart LR
S([picasso]) --> LOOP[design-loop]
S --> SOLO[design-solo]
S --> CRIT[design-critique]
S --> REF[design-reference]
S --> SRC[from-site or from-figma]
LOOP --> AP{APPROVED}
AP -- "polish" --> ITER[design-iterate]
AP -- "ship" --> DONE([Done])
ITER --> DONE
style S fill:#ff2d95,stroke:#ff4fa8,color:#fff
style LOOP fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style SOLO fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style CRIT fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style REF fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style SRC fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style ITER fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style AP fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style DONE fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
| Flag | Name | Description | Best for |
|---|---|---|---|
--design-loop | ๐ Loop โญ | Full bidirectional loop. Rounds until gate is met. Default mode. | Any front-end feature from scratch |
--design-solo | โก Solo | Single pass: one Claude Design turn โ implement โ stop. | Quick exploration / prototypes |
--design-critique <path> | ๐ฌ Critique | Claude Design audits your existing implementation and scores it. | Design-debt audit on existing code |
--design-reference <url> | ๐ Reference | Reverse-engineer design tokens from any live site. Seeds DESIGN.md. | "Make it feel like linear.app" |
--design-iterate | โจ Iterate | Polish pass after APPROVED. Gate auto-set to prior score + 0.3. | Motion + micro-interaction polish |
| Flag | Description | When to use |
|---|---|---|
--from-site <url> | Extract DESIGN.md tokens from any live site โ seed round-0 | "Build something with stripe.com's design system" |
--from-figma --figma <key> | Use Figma MCP as design source instead of Claude Design | You have Figma designs ready |
--feedback drawbridge | Import Drawbridge browser annotations as pre-populated gaps | Designer annotated the preview |
--multi-page | Enable SITE.md cross-page consistency contract | Multi-page sites |
# Seed from live site (no Claude Design Pro needed for the design foundation)
/picasso --from-site https://stripe.com "pricing page for fintech"
# Use Figma as source
/picasso --from-figma --figma ABC123xyz "implement hero from Figma"
# Include designer browser annotations in the loop
/picasso --design-loop --feedback drawbridge "hero for B2B SaaS"
# Multi-page site with cross-page consistency
/picasso --design-loop --multi-page --scope mega "5-page marketing site"
| Scope | Gate | Rounds | Fallback manual | Example |
|---|---|---|---|---|
--scope simple | 8.0 | 3 | no | pricing toggle |
--scope medium | 8.5 | 5 | no | pricing section |
--scope complex | 9.0 | 7 | yes | full landing page |
--scope mega | 9.0 | 10 | yes | 5-page site |
/picasso --design-loop "hero cinematic for a B2B SaaS, dark elite"
/picasso --design-solo "sticky promo banner, warm palette"
/picasso --design-critique ./src/components/hero
/picasso --design-reference https://linear.app
/picasso --design-iterate "tighten motion choreography"
/picasso --scope complex "full marketing landing"
pie title Gate Score Weights
"Colors - ฮE CIE2000" : 25
"Typography" : 20
"Layout and Spacing" : 20
"Components" : 15
"Motion" : 10
"Responsive" : 10
| Criterion | Weight | How it's measured |
|---|---|---|
| ๐จ Colors | 25% | ฮE CIE2000 palette comparison per design token |
| ๐ค Typography | 20% | Font family ยท scale ratio ยท weight ยท line-height |
| ๐ Layout & spacing | 20% | Grid alignment ยท margin/padding ยท ยฑ2px tolerance |
| ๐งฉ Components | 15% | Structural match: presence, hierarchy, nesting |
| ๐ฌ Motion | 10% | Duration ยท easing ยท transition type |
| ๐ฑ Responsive | 10% | 8 breakpoints tested: 320px โ 1920px |
๐ฏ Default gate: 9.0 / 10. Raise to 9.5 for critical landings (increases stagnation risk). Lower to 8.5 for fast prototypes.
The loop degrades gracefully as context fills. It never crashes silently โ it checkpoints and exits
PAUSEDso you can resume in a fresh session.
flowchart LR
N([NORMAL]) -- "60pct" --> W([WARN]) -- "75pct" --> D([DEGRADE]) -- "85pct" --> SW([SWITCH]) -- "95pct" --> P([PAUSED])
style N fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
style W fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style D fill:#2a1800,stroke:#ff9800,color:#ffb14a
style SW fill:#2e0d0d,stroke:#f44336,color:#ff8a80
style P fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
| Context used | State | What happens |
|---|---|---|
| < 60% | โ
NORMAL | All steps enabled โ full fidelity |
| 60โ75% | โ ๏ธ WARN | Skip mobile render if responsive โฅ 8.5 |
| 75โ85% | ๐ถ DEGRADE | Cache-only extraction ยท lazy section reads |
| 85โ95% | ๐ด SWITCH | Fast model everywhere ยท 2-line gaps max |
| > 95% | ๐พ PAUSED | checkpoint.json saved โ exit โ resumable next session |
Not guidelines. Mechanisms. Every one maps to a concrete component in the conductor. Inspired by Andrej Karpathy's public notes on LLM coding pitfalls โ specifically his observations on silent assumptions, minimal code, surgical edits, and goal-declared targets.
flowchart LR
K1[Think First] --> K2[Simplicity] --> K3[Surgical Edits] --> K4[Goal-Led State]
style K1 fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style K2 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style K3 fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
style K4 fill:#2a2000,stroke:#ffd83d,color:#ffd83d
linkStyle 0 stroke:#ffd83d,stroke-width:2px
linkStyle 1 stroke:#ffd83d,stroke-width:2px
linkStyle 2 stroke:#ffd83d,stroke-width:2px
| # | Principle | What the loop does |
|---|---|---|
01 | ๐ค Think First | Inferred tokens surface as an explicit ASSUMPTIONS: block before the first browser call. You correct inline โ zero silent assumptions. โ ASSUMPTIONS: colors ยท typography ยท components ยท brand |
02 | ๐ชถ Simplicity | The implementation subagent is hard-constrained: minimum code to close the gap. No refactors. No speculative features. No drive-by cleanups. โ CONSTRAINTS: no refactor ยท no new features ยท no noise |
03 | ๐ฌ Surgical Edits | Subagent touches only files tied to changed DESIGN.md sections. sha256 idempotency check blocks spurious git diffs. โ idempotent writes ยท changed sections only |
04 | ๐ฏ Goal-Led State | Gaps are state declarations, not imperatives. The gate score is the objective function. โ motion: 400ms โ 600ms not "increase duration" |
Every pattern exists to solve a specific failure mode in naive "loop and hope" approaches.
flowchart TD
subgraph TOK["Token Efficiency"]
direction LR
P01[Structured] --> P04[Lazy reads] --> P05[Model route] --> P06[Adaptive] --> P07[Zero-ctx]
end
subgraph DED["Dedup and Cache"]
direction LR
P02[Hash cache] --> P03[Fingerprint] --> P08[Idempotent]
end
subgraph RES["Resilience"]
direction LR
P09[Backpressure]
end
style P01 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style P04 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style P05 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style P06 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style P07 fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style P02 fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style P03 fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style P08 fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style P09 fill:#0d2e1a,stroke:#7cf0a0,color:#7cf0a0
linkStyle 0 stroke:#ffd83d,stroke-width:1.5px
linkStyle 1 stroke:#ffd83d,stroke-width:1.5px
linkStyle 2 stroke:#ffd83d,stroke-width:1.5px
linkStyle 3 stroke:#ffd83d,stroke-width:1.5px
linkStyle 4 stroke:#ffd83d,stroke-width:1.5px
linkStyle 5 stroke:#ffd83d,stroke-width:1.5px
| # | Pattern | Problem it solves | Impact |
|---|---|---|---|
01 | ๐ Structured prompts | Prose prompts are verbose and inconsistent | 5ร compression on Round-N prompts |
02 | #๏ธโฃ Content-hash cache | scrape_reference called even on identical output | Saves 1 MCP call/round on average |
03 | ๐ Fingerprint dedup | Same visual output, different HTML โ infinite loop | Instant STAGNATED exit โ no wasted rounds |
04 | ๐ Lazy section reads | Reading all 9 DESIGN.md sections every round | ~50 tok vs 450 tok after round 1 |
05 | ๐ฆ Model routing | Large model used for simple arithmetic scoring | ~40% cost reduction per round |
06 | ๐ฑ Adaptive rendering | Mobile render every round even when stable | Saves 1 render call in most rounds after round 2 |
07 | ๐งน Zero-context subagent | Implementer inherits full 2,000 tok loop history | ~200 tok vs ~2,000 tok โ 10ร cleaner context |
08 | โ Idempotency check | Files re-written with no actual change โ git noise | Clean diffs โ unchanged files never touched |
09 | ๐ก๏ธ Context backpressure | Loop crashes or degrades silently at context limit | Resumable sessions via checkpoint |
Six hooks. Drop them in
~/.claude/hooks/. Edit a stub to activate. Delete to disable.
flowchart LR
AD([autodetect]) --> PRE[pre-round] --> LOOP([round]) --> POST[post-round]
LOOP -- plateau --> STAG[stagnation]
LOOP -- pass --> APP[approved]
LOOP -- fail --> FAIL[failed]
style AD fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style PRE fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style LOOP fill:#ff2d95,stroke:#ff4fa8,color:#fff
style POST fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style STAG fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style APP fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
style FAIL fill:#2e0d0d,stroke:#f44336,color:#ff8a80
| Hook | Fires on | What it does |
|---|---|---|
pdl-autodetect | ๐ UserPromptSubmit | Detects handoff phrases ("claude.ai/design", "export") and auto-suggests /picasso |
pdl-pre-round | โฑ๏ธ Pre-round | Budget guard โ aborts if .pdl/ > 50 MB or remaining budget < round estimate |
pdl-post-round | ๐ Post-round | Cache report + economy.jsonl append ยท exit 2 = force APPROVED ยท exit 3 = force abort |
pdl-stagnation | ๐ Stagnation | Customizable โ lower gate, switch mode, or send alert on score plateau |
pdl-approved | โ Approved | Customizable โ auto-commit, open PR, send Slack/Discord notification |
pdl-failed | โ Failed | Customizable โ alert, cleanup, save trajectory log for post-mortem |
See docs/HOOKS.md for full reference.
curl -fsSL https://cdn.jsdelivr.net/gh/RazvanGabrielNiculae/picasso-claude-design-claude-code-bridge-loop@main/scripts/install-oneliner.sh | bash
Wizard mode (prompts for gate, rounds, hook wiring):
... | bash -s -- --wizard
git clone https://github.com/RazvanGabrielNiculae/picasso-claude-design-claude-code-bridge-loop.git
cd picasso-claude-design-claude-code-bridge-loop
bash scripts/install.sh --wizard
bash scripts/verify.sh --smoke
git clone https://github.com/RazvanGabrielNiculae/picasso-claude-design-claude-code-bridge-loop.git
cd picasso-claude-design-claude-code-bridge-loop
pwsh -File scripts\install.ps1
pwsh -File scripts\verify.ps1
The installer patches ~/.claude/settings.json automatically (timestamped backup). Use --no-hook to skip auto-wiring.
.pdl/
โโโ round-0/
โ โโโ DESIGN.md โ inferred tokens + ASSUMPTIONS block
โ โโโ prompt.md โ Round-0 brief (~250 tok)
โโโ round-1/
โ โโโ prompt.md โ Round-N delta (~100 tok)
โ โโโ design-output.png
โ โโโ tokens.json
โ โโโ impl-desktop.png
โ โโโ impl-mobile.png โ only if responsive < 8.0
โ โโโ score.json
โ โโโ gaps.md
โโโ APPROVED.md โ or FAILED.md
| Code | Meaning |
|---|---|
โ
APPROVED | score โฅ gate โ code implemented, .pdl/APPROVED.md written |
๐ STAGNATED | 2 rounds without progress, or fingerprint dedup match |
๐ EXHAUSTED | rounds_max reached without hitting gate |
โ EARLY_ABORT | trajectory analysis: gate mathematically unreachable |
๐พ PAUSED | context > 95% โ checkpoint saved, resumable in new session |
๐ BLOCKED | prerequisite missing (Chrome MCP / Claude Design / plan) |
โ ERROR | technical failure โ see .pdl/error.log |
nexu-io/open-design (3.6kโ ยท MIT) is a local-first alternative to
claude.ai/design. Run the complete PDL loop on your machine โ no Pro+ account, no browser, no Chrome MCP required.
flowchart LR
A{Pro+ account?} -- "yes" --> B[claude.ai/design]
A -- "no" --> C{open-design\ndaemon running?}
C -- "yes" --> D[open-design local]
C -- "no" --> E[webdesign-mcp\nstandalone]
B --> F([Full PDL loop])
D --> F
E --> G([Implement only\nno loop])
style A fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style B fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
style C fill:#2a2000,stroke:#ffd83d,color:#ffd83d
style D fill:#0d2e1a,stroke:#4caf50,color:#7cf0a0
style E fill:#2a1420,stroke:#ff2d95,color:#ffa2cf
style F fill:#0d1f2d,stroke:#5ce1ff,color:#8eecff
style G fill:#1a1a2e,stroke:#7cf0a0,color:#7cf0a0
/picasso auto-detects the active engine via GET /api/design-systems โ no flag needed.
| Capability | Value |
|---|---|
| 71 brand design systems | Stripe ยท Linear ยท Vercel ยท Apple ยท Tesla ยท Notion ยท Figma ยท Framer ยท GitHub ยท Cursor ยท PostHog + 60 others |
| DESIGN.md auto-seed | Brand tokens injected before round 0 โ replaces manual CSS extraction, saves 1โ2 rounds to gate |
| 5 visual directions | editorial ยท modern-minimal ยท tech-utility ยท brutalist ยท soft-warm |
| 19 skill templates | web-prototype ยท dashboard ยท deck ยท landing ยท e-commerce + 14 more |
| Anti-slop 5D critique | Automatic self-critique aligned with the 9.0 gate |
| Multi-agent routing | Claude Code ยท Cursor ยท Gemini CLI ยท Qwen ยท GitHub Copilot as coding engine |
# Clone once
git clone --depth 1 https://github.com/nexu-io/open-design.git ~/.claude/skill-library/open-design
cd ~/.claude/skill-library/open-design && npm install
# Start before each design session
npm run dev # โ http://localhost:3000
Then run /picasso --design-loop as usual โ it probes :3000/api/design-systems automatically.
# 71 brand systems available instantly โ no CSS extraction needed
/picasso --design-loop "hero for fintech, linear style"
# Explicit brand reference
/picasso --design-loop --ref linear "pricing page"
Picasso handles the loop. These tools extend it at the input, feedback, and scale layers.
| Tool | Layer | What it adds |
|---|---|---|
| nexu-io/open-design โญ3.6k | Input + Engine | Local PDL engine โ no Pro+ required. 71 brand systems, 5 visual directions, 19 templates. Auto-detected. |
| bergside/design-md-chrome โญ542 | Input | Extract DESIGN.md from any live site โ --from-site |
| Figma MCP | Input | Figma designs as design source โ --from-figma |
| breschio/drawbridge | Feedback | Browser annotations โ DOM-anchored gaps โ --feedback drawbridge |
| HermeticOrmus/LibreUIUX-Claude-Code | Scale | 152 UI/UX agents for complex builds |
| wilwaldon/Frontend-Design-Toolkit | Scale | Curated toolkit: tokens, Playwright, accessibility |
| hemangjoshi37a/claude-code-frontend-dev | Visual QA | Post-APPROVED visual testing with closed-loop fixes |
See docs/companion-tools.md for integration guides.
GET /api/design-systems probe. No flag needed.editorial, modern-minimal, tech-utility, brutalist, soft-warm) โ structured style vocabulary for PDL prompts--ref <url> โ color palette, typography, spacing, component patterns, motion hints auto-extracted into design-tokens-extracted.jsondocs/companion-tools.md โ open-design as first Input Layer entry with API reference--from-site (design-md-chrome pattern), --from-figma (Figma MCP source)--feedback drawbridge (browser annotation integration)--multi-page + SITE.md cross-page consistency (jezweb/design-loop pattern)docs/companion-tools.md integration guide/picasso --design-loop command ยท pdl-conductor agentpdl-autodetect hook| Architecture | System overview and component map |
| Bridge loop walkthrough | Phase-by-phase execution |
| Modes & scope presets | 5 loop variants |
| Gate scoring | Weighted criteria + tuning guide |
| Design patterns | 9 orchestration patterns + Karpathy |
| Token optimization | 3ร overhead reduction |
| Lifecycle hooks | Hook system reference |
| Prompt templates | Round-0 and Round-N formats |
| Installation | Full install guide |
| Troubleshooting | Common issues + fixes |
bash scripts/uninstall.sh
Then remove the hook block from ~/.claude/settings.json manually.
Design enforcement with memory โ keeps your UI consistent across a project
Create animation-rich HTML presentations using a coding agent's frontend skills
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
Detects 37 AI writing patterns and rewrites text with human rhythm across 5 voice profiles