本文へ移動
cccskills
無料GitHub で公開

design-ui

Orchestrates `impeccable` for every design task inside a workflow phase. Captures intent in natural language, classifies it (design / development / copy), translates design intents into a sequence of impeccable subcommand invocations, runs them in main context with state persistence at `.claude/state/design/<slug>.json`, and returns a structured report. ALWAYS invokes `impeccable` under the hood for the underlying design move; never picks aesthetic direction itself; never writes product code directly. Per CLAUDE.md Article X.2, all design tasks in workflow phases route through this skill.

インストール方法を見る

含まれるファイル(5)

  • SKILL.md13.3 KB
  • references/design-vs-development.md7.2 KB
  • references/intent-table.md6.2 KB
  • references/orchestration.md8.3 KB
  • references/state-machine.md7.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

design-ui — the impeccable orchestrator

You are the routing layer between workflow phases and the vendored impeccable skill. Phase orchestrators (/tdd Step 6, /chore, /document) and direct user invocations hand you a task_brief; you classify it, translate it to an impeccable recipe, run the recipe step-by-step, persist state for resume, and return a structured Report. Every design move ultimately routes through Skill(impeccable, "<cmd>", "<args>") — you never originate a design artifact yourself.

This skill is first-party and freely editable. The skill it orchestrates (impeccable) is vendored Apache 2.0 and never edited.

Architectural commitments

These are not preferences. They are structural commitments locked by spec docs/specs/design-ui-orchestrator.md and constitutional commitment CLAUDE.md Article X.2:

  • You ALWAYS invoke impeccable. Every design move goes through Skill(impeccable, …). No exceptions, no shortcuts.
  • You NEVER pick aesthetic direction. Register, palette, type scale, motion vocabulary — all decided inside impeccable's subcommands in main context. You decide which subcommand to invoke, not what design to produce.
  • You NEVER write product code. Files under app/, site-src/, components/, src/ — all flow through impeccable's writing subcommands (craft, polish, refines, enhances, fixes). You write only thin glue: state JSON, brief snapshots, audit snapshots.
  • You ALWAYS classify before acting. A misrouted task_brief returns at Stage 0 with one of two terminal states: not_a_design_task (when all surfaces classify as a single non-design lane — pure development or pure copy) with a correct_lane pointer, OR mixed_brief (when target_files span ≥ 2 lanes per the per-concern rule in references/design-vs-development.md) with a structured lane_split array. Design tasks proceed; everything else stops at Stage 0 without invoking impeccable or writing product code.

Mandatory first step

Invoke Skill(code-structure) before writing any file — even the thin-glue ones. The layer model applies: SKILL.md is orchestration, the references/ files are domain, helper scripts (if any) are foundation.

Inputs the caller must provide (the task_brief)

{
  "concern":           "design",                   // REQUIRED, fixed literal. Stage 0 asserts this.
  "intent":            "<natural-language>",       // REQUIRED. The design ask in plain English.
  "slug":              "<kebab-case>" | null,      // OPTIONAL. If null, derived from intent's first noun phrase.
  "target_files":      ["<path>", ...] | "—",       // REQUIRED. Paths under design treatment. "—" for surface-less intents.
  "write_set":         ["<glob>", ...],             // REQUIRED. The broader scope the design move may touch.
  "register_override": "brand" | "product" | null, // OPTIONAL. Overrides PRODUCT.md for this call.
  "references":        ["<url-or-path>", ...]      // OPTIONAL. Inspiration sources (URLs, image paths).
}

If concern is missing or any of intent / target_files / write_set are missing for a non-surface-less recipe, stop and ask — do not infer. Stage 1 (capture) refuses incomplete briefs.

The four stages

Stage 0 — Classify

Decide which lane this task_brief belongs to. The classification rule lives in references/design-vs-development.md: per-concern split between design, development, copy lanes.

Stage 0 evaluates two signals: (1) the intent string against the references/intent-table.md rows, and (2) the target_files extensions as a tie-breaker.

If the classification is anything other than design, return immediately with one of two misroute terminals.

Single-lane misroute (all surfaces classify as pure development OR pure copy):

{
  "final_state": "not_a_design_task",
  "correct_lane": "/tdd" | "/document",
  "reason": "<plain-language rationale>",
  "state_file": ".claude/state/design/<slug>.json"
}

Multi-lane misroute (target_files span ≥ 2 lanes per the per-concern rule in references/design-vs-development.md):

{
  "final_state": "mixed_brief",
  "lane_split": [
    { "surface": "<path>", "lane": "design" | "development" | "copy", "reason": "<plain-language>" }
  ],
  "reason": "task_brief spans <N> lanes",
  "state_file": ".claude/state/design/<slug>.json"
}

When target_files span ≥ 2 lanes, Stage 0 returns mixed_brief with a lane_split array (one entry per surface) instead of not_a_design_task. The caller fans out per row; design-ui does NOT execute any lane in this case (no impeccable invocation, no product-code writes). SKILL.md is the canonical source for this contract; references/design-vs-development.md mirrors it.

design-ui still writes a checkpoint state file even on misroute — the orchestration history is traceable. See references/state-machine.md for the sticky-resume rule that applies to both misroute terminals.

Stage 1 — Capture

Once Stage 0 confirms concern == "design":

  1. Verify PRODUCT.md exists at the project root. If missing or placeholder (< 200 chars, contains [TODO]), invoke Skill(impeccable, "teach") to populate it, then resume.
  2. Verify DESIGN.md exists. If missing, nudge once ("Run $impeccable document for more on-brand output") and proceed.
  3. Resolve the slug: use task_brief.slug if provided; otherwise derive kebab-case from the intent's first noun phrase (≤ 40 chars).
  4. Persist the initial state to .claude/state/design/<slug>.json per references/state-machine.md: {slug, started_at, intent, register, state: "in_progress", step_index: 0}.
  5. Verify target_files parents exist when applicable. If a parent directory is missing, persist state: "blocked" and return with reason: "target_files parent directory missing".

Stage 2 — Translate

Look up the intent in references/intent-table.md. The first matching row wins. Each row produces:

  • A recipe: an ordered list of impeccable subcommand names (from the vocabulary: shape, craft, teach, document, extract, critique, audit, polish, bolder, quieter, distill, harden, onboard, animate, colorize, typeset, layout, delight, overdrive, clarify, adapt, optimize, live).
  • A mode: auto (single-step or atomic; execute without prompting) or ask (multi-step; surface the plan and await proceed).

For multi-step recipes (mode == "ask"), print the plan:

"Recipe: [shape, craft, audit]. Proceed? (or describe an override)"

Wait for the user. On proceed, advance to Stage 3. On override, re-run Stage 2 with the adjusted intent. On refusal, persist state: "blocked" and return.

For single-step / atomic recipes (mode == "auto"), advance to Stage 3 without prompting.

If no row matches, the intent is ambiguous: surface to the user per the catch-all rule in references/design-vs-development.md.

Stage 3 — Orchestrate

Execute the recipe step-by-step per references/orchestration.md:

for each step in recipe:
  pre-checkpoint -> state JSON {step_index, next_cmd}
  invoke         -> Skill(impeccable, "<cmd>", "<args>")
  capture        -> read return value (output_path, files_written, score)
  branch         -> apply gates (see orchestration.md)
  post-checkpoint -> state JSON {step_index++, invocations[], verifications[]}

The orchestration gates:

  • Gate 1 — P0 blocks. If the previous audit returns P0 ≥ 1, do NOT auto-chain to polish. Block and surface.
  • Gate 2 — P1 loops with cap 3. If P0 == 0 and P1 ≥ 1, run polish then re-audit. Loop up to 3 iterations. After iteration 3's final audit, if P1 > 0, terminate with needs_human. No fourth iteration runs.
  • Gate 3 — Recipe mode. Already handled at Stage 2; auto recipes pass through, ask recipes have already been approved.
  • Gate 4 — Target-file existence. Already verified at Stage 1; re-checked before any write step.
  • Gate 5 — Register conflict. If task_brief.register_override mismatches PRODUCT.md, surface the conflict to the user before proceeding.

Stage 4 — Report

Return a structured Report:

{
  "slug":              "<the slug>",
  "intent":            "<the intent>",
  "recipe_executed":   ["shape", "craft", "audit", "polish"],
  "final_state":       "complete" | "needs_human" | "blocked" | "not_a_design_task" | "mixed_brief",
  "files_touched":     ["<path>", ...],
  "verifications":     { "audit_score": "19/20", "p0": 0, "p1": 0 },
  "next_actions":      ["<human-readable>"],
  "state_file":        ".claude/state/design/<slug>.json",
  "thin_glue_written": ["docs/design/<slug>.brief.md", "docs/design/<slug>.audit.md"],
  "lane_split":        [ { "surface": "<path>", "lane": "design" | "development" | "copy", "reason": "<plain-language>" } ]  // present only when final_state == "mixed_brief"
}

The caller (workflow phase or user) reads final_state and acts per the policy in references/orchestration.md (the caller-policy table).

What you write (thin glue only)

You write exactly these file kinds. Anything else is impeccable's territory.

FileRole
.claude/state/design/<slug>.jsonThe live state checkpoint. Written before AND after each impeccable invocation. Shape in references/state-machine.md.
docs/design/<slug>.brief.mdHuman-readable snapshot of impeccable shape's output. Materialized after the shape step.
docs/design/<slug>.audit.mdHuman-readable snapshot of impeccable audit's report. Materialized after each audit step (overwritten — latest audit only).

Forbidden writes:

  • Product code (app/**, site-src/**, components/**, src/**, **/*.tsx, **/*.jsx, **/*.vue, **/*.svelte, **/*.css, **/*.njk) — these flow through impeccable's writing subcommands.
  • DESIGN.md and PRODUCT.md — these flow through impeccable teach and impeccable document.
  • .claude/skills/impeccable/** — vendored, untouchable per Article IX.
  • docs/specs/** — direction_approval_guard blocks; specs are written by Skill(spec).
  • Anywhere outside the thin-glue contract above.

Where you plug into the workflow

  • /tdd Step 6 — Invokes Skill(design-ui, task_brief) once per declared row in the spec's ## Design calls section, gated on the implement step's write_set intersecting project.json → tdd.ui_globs. Re-runs verify afterward.
  • /chore — When a chore touches files under tdd.ui_globs for design reasons, the chore routes through design-ui.
  • /document — When documentation includes UI surface renders (screenshots, component captures), document can drive design-ui for capture-time visual verification.
  • Direct user — Skill(design-ui, task_brief) from main context for ad-hoc design work outside a workflow phase.

Per CLAUDE.md Article X.2, design tasks inside a workflow phase SHALL route through design-ui. Direct /impeccable … invocations for ad-hoc exploration outside a phase remain permitted.

Constraints (non-negotiable)

  • Always invoke impeccable for design moves. No file-content design decisions made inline in this skill.
  • Always classify before acting. Stage 0 runs first; misroutes return immediately.
  • Always persist state. Every step has a pre- and post-checkpoint. A killed orchestration must be resumable.
  • Never edit the vendored impeccable skill. Article IX vendoring discipline.
  • Never write product code. Only the thin-glue paths above.
  • Never approve specs or write to docs/specs/. Spec writing is Skill(spec)'s territory.
  • Never run git commit or git push. Commits happen in /commit.
  • Honor the 3-iteration cap on audit → polish loops. No fourth iteration runs. Terminate with needs_human per references/orchestration.md.
  • Honor P0 blocking. Never auto-loop past a P0 finding. Surface and block.
  • Honor register overrides explicitly. A register_override that conflicts with PRODUCT.md prompts the user; never silently accept.

References

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

archive

無料

Phase 10.5 — move the slug's workflow artifacts (intake, scout, research, spec, approvals, swarm state, security reports, rendered diagrams) to docs/archive/<YYYY-MM-DD>/<slug>/. Runs before /commit so the committed tree is clean of work-in-flight files. workflow.json stays live and gets archived as the first step of /commit.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

Drift check between the baseline implementation on disk and the claims in `docs/init/seed.md` + cross-references in CLAUDE.md, README.md, and the rendered docs site. Verifies hook/agent/skill/command names + counts, settings.json wiring, project.json key presence, .mcp.json servers, vendored license files, and helper script presence. Exit 0 PASS / 1 FAIL — suitable for CI. Read-only; safe to invoke any time.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

PM-mode brainstorm helper. Captures the requirement via Socratic dialogue before any entry phase (`/intake`, `/spec`, `/tdd`) drafts its artifact. Stage 0 skip-check, Stage 1 gap-analysis, Stage 2 probe-loop, Stage 3 confirm-and-persist. Output lives at `docs/brief/<slug>.md`. Never proposes solutions — Stage 2 dialogue discipline is structurally enforced via `discipline.mjs`.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

brd

無料

Draft a Business Requirements Document (BRD) for cross-functional or stakeholder-heavy work that needs more structure than an intake. Use after `/intake` when the request spans multiple systems/teams, carries regulatory weight, or needs formal sign-off. Output lives at `docs/brd/<slug>.md`.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

chore

無料

Workflow track for tasks that need no TDD — documentation edits, governance count bumps, vendored-skill content updates, configuration tweaks, formatting, typo fixes, dependency bumps where no project code changes. Skips `/scenario` and `/implement` (no failing test to drive) and runs the work directly. `archive`, `memory-sync`, `/grant-commit`, and `/commit` remain mandatory. `verify`, `simplify`, `integrate`, and `document` are conditional — required when the diff hits one of the listed triggers, optional otherwise. `verify` is skipped only when the diff is pure-docs/prose AND `project.json → test.kind` is `behavior` (absent/invalid `test.kind` → `structural` → verify runs). Chore is a stripped-down pipeline, not a bypass; never silently skip a conditional phase whose triggers apply.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

Analyze a codebase and recommend Claude Code automations (hooks, subagents, skills, plugins, MCP servers). Use when user asks for automation recommendations, wants to optimize their Claude Code setup, mentions improving Claude Code workflows, asks how to first set up Claude Code for a project, or wants to know what Claude Code features they should use.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

friedbotstudio のスキルをすべて見る

このスキルの問題を報告する