بنقرة واحدة
bryllen-design
Start (or restart) the Bryllen dev server
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Start (or restart) the Bryllen dev server
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Create a new design project and start designing
Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page state, diff before/after actions, take annotated screenshots, check responsive layouts, test forms and uploads, handle dialogs, and assert element states. ~100ms per command. Use when you need to test a feature, verify a deployment, dogfood a user flow, or file a bug with evidence.
CEO/founder-mode plan review. Rethink the problem, find the 10-star product, challenge premises, expand scope when it creates a better product. Three modes: SCOPE EXPANSION (dream big), HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials).
Eng manager-mode plan review. Lock in the execution plan — architecture, data flow, diagrams, edge cases, test coverage, performance. Walks through issues interactively with opinionated recommendations.
Systematically QA test a web application and fix bugs found. Runs QA testing, then iteratively fixes bugs in source code, committing each fix atomically and re-verifying. Use when asked to "qa", "QA", "test this site", "find bugs", "test and fix", or "fix what's broken". Three tiers: Quick (critical/high only), Standard (+ medium), Exhaustive (+ cosmetic). Produces before/after health scores, fix evidence, and a ship-readiness summary. For report-only mode, use /qa-only.
Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent history and trend tracking. Team-aware: breaks down per-person contributions with praise and growth areas.
| name | bryllen-design |
| description | Start (or restart) the Bryllen dev server |
| disallowed-tools | WebSearch |
Start the Bryllen dev server and arm the annotation stream.
Kill only THIS project's existing servers (not other bryllen instances):
if [ -f .bryllen-ports.json ]; then
# Kill by PID (safe) — never by port (could kill another project's server)
node -e "
const f = JSON.parse(require('fs').readFileSync('.bryllen-ports.json','utf8'));
for (const pid of [f.pid, f.vitePid, f.httpPid].filter(Boolean)) {
try { process.kill(pid, 'SIGTERM'); } catch {}
}
"
rm -f .bryllen-ports.json
fi
This reads PIDs from the ports file and kills only THIS project's processes. Other bryllen instances are untouched. It's fine if nothing was running.
Start the dev server in the background:
npx bryllen design
Confirm: "Dev server running. Canvas at http://localhost:5173"
3.5. Check for existing projects:
ls src/projects/ 2>/dev/null
type: 'project' annotation that the New Project dialog sends.Drain backlog: Run npx bryllen pending to check for annotations that arrived before the session started. Process each one following the guard protocol.
Check for context images: Before generating any designs, run:
npx bryllen context --project <name> --iteration <v>
This returns paths to inspiration images. Read them with the Read tool and analyze via Vision. Incorporate their style into your generations.
Arm the annotation stream with the Monitor tool:
command: npx bryllen watch --streampersistent: truedescription: Bryllen canvas annotationsThe stream prints one compact JSON line per annotation; each line arrives as a notification that wakes you. Between annotations you are free — no polling loop, and the designer can chat with you while the stream is armed. Monitor notifications are canvas events, not user replies. If the stream emits a server unreachable error line (or the monitor exits), the dev server died: restart it (steps 1–2) and re-arm the Monitor.
Fallback — only if the Monitor tool is unavailable in this harness: run npx bryllen watch in a loop. Each call waits up to 15 seconds and prints either an annotation or {"timeout": true}; on timeout, run it again.
When an annotation arrives, process it by type:
Regular annotation arrives (JSON with annotation data) — process it:
The annotation IS the map. Read the fields, construct the path, done:
project → src/projects/{project}/frameId prefix (e.g. v9-shell) → v9/ foldercomponentName → file in components/ or pages/NEVER guess the project from git commits, Explore agents, or "which is active" heuristics.
npx bryllen progress <id> "Reading file..." to show status on canvascomponentName in src/projects/{project}/{iteration}/ — that's the filecomment, selector, and computedStyles for what to changev<N>/components/ or v<N>/pages/npx bryllen progress <id> "Applying changes..."tokens.cssnpx bryllen progress <id> "Taking screenshot..."npx bryllen screenshot --frame <frameId>
npx bryllen resolve <id> (this auto-commits project changes)CHANGELOG.mdnpx bryllen watch again)Iteration request arrives (JSON has type: 'iteration') — run the iteration protocol:
manifest.ts, find the active iteration (last with frozen: false)frozen: true)cp -r v<N>/ v<N+1>/v<N+1>/tokens.css: .iter-v<N> → .iter-v<N+1>frozen: false, update import pathscommentnpx bryllen screenshot (no --frame = all frames)
npx bryllen resolve <id> (this auto-commits project changes)CHANGELOG.mdnpx bryllen watch again)Project request arrives (JSON has type: 'project') — create a new project:
{ name, description, prompt }src/projects/<name>/v1/{tokens.css, components/index.ts, pages/, context/}:root, .iter-v1 as the selector — without :root, frames render as unstyled plain text because they don't have the .iter-v1 class wrapper. This is the #1 cause of "designs show unstyled text" bug.manifest.ts (with import './v1/tokens.css' at the top) and CHANGELOG.mdprompt is provided, follow the "What happens next" sequence from /bryllen-new EXACTLY — especially step 1 which REQUIRES generating 3-5 genuinely different design directions. The "All Directions" page must be the first thing the designer sees.npx bryllen resolve <id>npx bryllen watch again)Share request arrives (JSON has type: 'share') — deploy to GitHub Pages:
{ project: '<name>' }npx bryllen progress <id> "Checking GitHub authentication..."gh auth status
~/.bryllen/auth.jsonGH_TOKEN env var for gh-pageswhich gh
npm:gh-pages package directly (it uses GH_TOKEN)npx bryllen progress <id> "Building project..."/bryllen-share <project-name> — this handles build, deploy, and URL writingnpx bryllen resolve <id>npx bryllen watch again)Pick request arrives (JSON has type: 'pick') — promote the picked direction(s) to a new iteration:
frameId, frameIds, and comment from the annotation
frameIds is an array when multiple frames were selected (marquee multi-select)frameId is a +-joined string of all IDs (e.g., "dir-a+dir-b+dir-c")npx bryllen progress <id> "Picking direction..."pickedFrameId to the chosen frame's ID (this fades other frames)pickedFrameIds to the array of chosen frame IDs (all picked frames stay unfaded)frozen: truefrozen: falsenpx bryllen progress <id> "Taking screenshot..."npx bryllen screenshot to verify the resultnpx bryllen resolve <id> (auto-commits)CHANGELOG.mdnpx bryllen watch again)Multi-pick strategy: When the designer selects multiple frames, they want to combine strengths from each:
Context image annotation arrives (annotation on a Context Image component) — use the image for inspiration:
npx bryllen context --project <name> --iteration <v> to get image pathsTimeout (JSON contains "timeout": true) — poll-fallback mode only; the stream never prints timeouts. No annotation arrived: run npx bryllen watch again to keep waiting.
Chat while watching: The designer can send messages at any time — the armed Monitor doesn't block the conversation. Handle the message (answer a question, make a change, kill the server, etc.); the stream keeps delivering annotations as they arrive. If you stopped the monitor (e.g. via /bryllen-close), re-arm it as in step 6.
All annotation commands output JSON for easy parsing:
# Stream annotations forever — one JSON line each (use with the Monitor tool)
npx bryllen watch --stream
# Wait for next annotation once (15s default timeout, poll fallback)
npx bryllen watch [--timeout N]
# Mark annotation as resolved (auto-commits)
npx bryllen resolve <id>
# List pending annotations
npx bryllen pending
# List all annotations
npx bryllen list
# Screenshot canvas
npx bryllen screenshot [--frame <id>] [--delay <ms>]
# Get context image paths
npx bryllen context --project <name> --iteration <v>