Generate 4-6 complete candidate design systems for a web project, let the user pick one visually in the browser, and freeze the winner into a Google-spec design.md at the project root. Use ONLY when the user explicitly invokes /design-md or explicitly asks to run the design-system picker. If a conversation merely suggests it would help, suggest it — never start it unasked (it launches a server, opens a browser, and writes many files).
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
All paths below: <skill> = this skill's directory, <run> = .design-md/ in the target project root. All generated state lives under <run>; the only file written outside it is the final design.md.
<run>/run.json exists with status != "complete": ask the user — resume this run (keep candidates, re-serve the picker) or clean restart (delete <run>, keep backups/)?design.md exists at project root: warn that finishing this run will replace it (a timestamped backup is made in <run>/backups/). Confirm before continuing.Follow <skill>/reference/interview.md. Write <run>/brief.md.
<skill>/reference/directions.md.<run>/fixture.md: the canonical content every candidate renders — product name, nav labels (4-5), hero headline + subline, 3 feature blurbs, 3 testimonial-style proof lines, CTA text, a 5-row × 4-col data table, form fields (name, email, one select, one textarea, submit), footer lines. Derive all copy from the brief; never lorem ipsum.components is always included and is NOT listed in pages passed to the validator; 2-3 more from: landing, dashboard, form, pricing, docs).node -e "console.log(crypto.randomUUID())".<run>/run.json: { "runId": "<uuid>", "status": "generating", "candidates": ["a","b",...], "createdAt": "<ISO now>" }.Dispatch one subagent per candidate, all in a single message so they run concurrently. Each prompt contains, verbatim: the full text of <skill>/reference/candidate-spec.md, the brief, the fixture, the assigned direction row + one-line summary, the page list, and the absolute output directory <run>/candidates/<id>/. Falls back to sequential dispatch if parallel fails — correctness never depends on concurrency.
For each candidate: node <skill>/scripts/validate.mjs <run>/candidates/<id> --pages <page,list> (page list WITHOUT components). Regenerate failed candidates once, passing the validator errors into the retry prompt. Proceed with >= 3 valid candidates; below 3, stop and report. Delete invalid leftovers.
<skill>/assets/picker/ → <run>/picker/.<run>/manifest.json: { "runId", "briefSummary" (one line), "pages": ["components", ...], "candidates": [{ "id", "direction", "summary" }] } — valid candidates only."picking".node <skill>/scripts/server.mjs --dir <run> --open.LISTENING <port> line) and that they can also just say their pick in chat.<run>/selection.json. If no exit notification within 15 minutes, check for selection.json directly; if absent, ask the user for their pick in chat and write selection.json yourself with the run's runId.Update run.json status → "distilling", then follow <skill>/reference/distill.md exactly (transactional: tmp file → pinned lint → backup → rename → archive → status "complete").
Summarize: chosen direction, design.md location, lint status (clean / findings fixed / draft-unlinted), what persists (design.md, <run>/brief.md, <run>/winner/), and that any future agent should read design.md before UI work.
| Failure | Behavior |
|---|---|
| < 3 valid candidates after one retry | Stop, report which failed and why, offer sequential regeneration |
| Server exits nonzero / port exhaustion | Report; offer chat-pick fallback (write selection.json manually) |
| Lint unavailable | Finalize as draft-unlinted; say so |
| User closes tab without picking | Chat-pick fallback |
| Interrupted run | Phase 0 gate handles resume/restart next invocation |
KennethJefferson/ccg_ccSkill_DesignMD
skill/SKILL.md
5a52248
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.