---
name: design-prompt-authoring
description: Turn design-backlog rows (screens/features with no prototype source) into ready-to-send design-tool briefs in a design-prompts companion board. Use whenever a row is filed to the design backlog — at a sweep's Checkpoint 1, in /design-help, or as a standalone backfill — so every backlog row ships with a fillable Claude Design prompt as its successive output.
allowed-tools: Read, Write, Edit, Grep, Glob
---

> **Specialization:** generic by design — bind every `<…>` and "per `CLAUDE.md`" reference from the project `CLAUDE.md` (the design-backlog board path, the prototype file pattern + entry point, the design-system contract + page scaffolds, the continuity invariants, the screen registry, module codes, the design tool). See `SPECIALIZE.md`. If a needed value is missing, STOP-and-ask.

## What this is — and when to reach for it

A design-backlog row records a screen/feature with **no prototype source at all** — it must go to the project's design tool (Claude Design or equivalent) to *create* that source before reconstruction can run. This skill turns a filed row into the **ready-to-send brief** that does it, written to a **design-prompts companion board** (default file name `DESIGN_PROMPTS.md`, a sibling of the design-backlog board in the same docs directory).

The brief is the **successive output of every backlog row** — emit it the moment the row is filed, by whoever filed it:
- a workflow sweep's **Checkpoint 1** (`/build-workflow`) — the orchestrator,
- a wave's **batched Checkpoint 1** (`/build-wave`) — the orchestrator,
- a standalone **`/design-help`** triage — the orchestrator,
- a one-off **backfill** over rows already on the board that have no brief yet.

This is the **inverse of drift triage**: `design-sync` re-syncs a prototype source that already EXISTS and changed; this authors a brief for a source that DOES NOT exist yet. Never fold this into `design-sync` — they are opposite directions.

**One brief, two consumers.** Every brief you author serves both design lanes unchanged (lane routing per `CLAUDE.md §2`): the **in-repo lane** hands it (with the Global preamble) to the `design-builder` agent via `/design-build`; the **console lane** pastes it (under the same preamble) into the design tool, whose delivery `/promote-design` ingests. Write the brief lane-agnostically — the routing decision is the orchestrator's, not encoded in the brief. You may fill the Index's `Lane` column as a *suggestion* (scaffold-conforming + reference screens exist → `in-repo`; novel pattern / new module's first screens / exploration wanted → `console`).

## Inputs
- The **design-backlog board** (per `CLAUDE.md`) — the `☐ Needs Design` rows.
- Per row, its **source spec context**: the `<X>_WORKFLOW.md` / `<X>_MODULE.md` it came from, the upstream screen's CTA/seam that dead-ends here, and the row's own structured fields (entity, CTAs, business rules, reference screens, competitive analog).
- The **§J template** (`PROMPT_TEMPLATES.md`), and the **page scaffolds** + **design-system contract** + **continuity invariants** (per `CLAUDE.md`).

## The companion board structure

Exactly two kinds of content, plus a thin header:

1. **Global preamble — authored once, prepended to every brief.** It carries the project's design-system law lifted from `CLAUDE.md`: token rules (never raw values), the page scaffolds, the hard prohibitions (no width-cap wrapper, no native form controls where a design-system component exists, no new tokens/classes/patterns, the modal-dismissal rule), the **continuity invariants** every screen must satisfy, the compliance hooks for safety-critical / compliance-bearing writes (two-identifier confirm, audit, permission gate), and the **output contract**: (1) the prototype file pattern — addable to the prototype directory and wirable into the entry point + route resolver with no build step — **and (2) the contract sidecar** `<screen-file>.uimap.json` per the `contract-sidecar` skill (route, entities+fields, every CTA with guard/effect/destination, states, role gates, list params — describing exactly what the file renders; a delivery without its sidecar is incomplete) — and **handler honesty**: no toast-only/no-op handlers on lifecycle or creation CTAs (deferral = Marked-stub disabled-with-reason, or a declared `notify-sim` fire-and-forget). One copy keeps each per-row block focused and the design-system law single-sourced.

2. **One per-row brief block** per `☐` row, filling the §J template from the row + its spec context. Order by severity (Must-have first), then by id.

Header: purpose, single-writer note, a short how-to-use, a cross-link back to the design-backlog board, and an **index table** (id · module · screen · scaffold · severity · workflow · status) mirroring the backlog's open rows.

## Field-mapping (row → §J)
- **Journey splice** (when the row originated from a `/journey-audit` GAP or names a workflow step) = the row's splice fields **verbatim**: `GAP-nn` + journey id, inbound edge (upstream file · CTA · current state), outbound edge (downstream route · context key), reuse anchor — fill §J's Journey-splice block; never paraphrase file/route/key names.
- **Trigger** = the upstream CTA/seam that dead-ends into this screen — the reason the row exists (usually a `Marked-stub` or a dangling continuity-#6 seam). Always name the inbound seam; a brief without it produces an orphan screen.
- **Primary CTA → destination** and **Guarded CTAs** come from the row's continuity notes; spell out all four invariants (no dead-end / no orphan / guarded-disabled-with-reason / draft-resumable).
- **Reference screens** = the nearest existing prototype files named in the row.
- **Entities · Business rules · Competitive analog** = the row's structured fields, verbatim.
- Where the row is light (a spec-only assumption with no prototype source), add a one-line "confirm against `<X>_MODULE.md` at promotion time" note rather than inventing detail — and **STOP-and-surface** any prototype-vs-spec conflict (Law 1).

## How to author (single writer — Law 3)
1. Read the design-backlog board + the companion board (create the companion from the structure above if absent, writing the **Global preamble first**).
2. For each `☐` row with no brief yet: build its per-row block from the §J template + the row's spec context; append it under the correct severity heading; add or refresh its index row.
3. Leave a **pointer in the design-backlog's `§ Pending prompts`** to the companion board — do **not** duplicate the briefs into the backlog.
4. Keep the index `status` column in sync with the backlog lifecycle (`☐ → ◐ → ✅`). When a row reaches `✅ Designed`, keep its brief for provenance and mark it done in the index.

## Done when
- Every `☐` backlog row has exactly one brief block + one index row in the companion board.
- The Global preamble exists once; no per-row block restates the full design-system law.
- The design-backlog's `§ Pending prompts` points to the companion board (briefs are not duplicated there).
- Zero invented tokens / classes / scaffolds; every brief names an **inbound seam** and a **primary-CTA destination**.
