Install
openclaw skills install @dennisrongo/design-briefTurn a vague feature idea into an approved design brief — a file recording the intent, every decision made (with why and cost-if-wrong), scope boundaries, exact interfaces, and constraints — that task-executor, backlog-planner, and autopilot then consume as the spec. Produces decisions, not code; nothing is implemented. Use this skill whenever the user says "brainstorm this", "let's design this first", "think through this feature with me", "spec this out", "I have an idea for", "how should we build", "before we plan this", or "/design-brief" — even if they don't name the skill. Not for a task that already has a clear spec (task-executor), a bug (diagnose), or turning a decided design into tasks (backlog-planner).
openclaw skills install @dennisrongo/design-briefTurn "I have an idea" into a design the team has actually agreed on, written down where the executing skills can read it. The brief records decisions, not ideas — a brainstorm that ends without decisions has produced nothing an executor can use. This skill never writes code.
/design-brieftask-executor classified a task as architectural, or backlog-planner found the idea undecided — both route here.Do not auto-trigger when the task already has a clear spec (task-executor), something is broken (diagnose), the friction is in existing code rather than a new feature (improve-codebase-architecture), or the design is decided and only needs splitting into tasks (backlog-planner).
Path: .claude/design-briefs/<slug>.md in the project root (create the directory if missing; slug = 2–5 kebab-case words naming the feature). Every brief has these sections, in this order, none omitted — an empty section says none and why:
DRAFT or APPROVED <date>. Only the user's explicit approval flips it.___ so that ___", plus how we'll know it worked (an observable signal, not "users are happier").Produces: / Consumes: lines, verbatim-ready for backlog-planner.file:line, or "no precedent found — searched <paths> for <terms>".<approach B> — rejected because <one line>.APPROVED. An approved brief with open questions is a draft wearing a badge.Before each phase, restate the intent line. If the phase isn't serving it, stop and say so.
.claude/design-briefs/ and read the Status and Intent line of every file there. One matches this subject → resume it (list its open questions, continue from there); never start a duplicate under a new slug.CONTEXT.md / CONTEXT-MAP.md if present — its terms are canonical; a conflict between the user's words and the glossary is the first thing to resolve.Find the nearest thing that already exists — a sibling feature, entity, endpoint, or screen — and read it end to end. Every answer the code gives is recorded with a file:line citation instead of asked. A claim about code you haven't opened is a hypothesis and is labeled one.
src/middleware/auth.ts; asking wastes a turn and invites a wrong answer.requireRole() in the route file (src/routes/orders.ts:14). I'll assume the same unless this one is different — is it?"One question at a time via AskUserQuestion, 2–4 concrete options, recommended pick first. Wait for the answer before the next question.
A question earns its slot only if different answers lead to different designs. Before asking, name to yourself what changes per answer. Nothing changes → don't ask.
Rules:
OrderService.Cancel cancels the whole order (src/services/order.ts:88); you just described partial cancellation. Which wins?"Topics to cover, skipping any the code or the user already answered: intent · inputs/outputs and error cases · domain entities touched (new vs. extended) · authorization and tenancy · persistence and backfill · side effects (email, queue, audit, cache, webhooks) · concurrency and idempotency · edge cases (empty, max, unicode, timezone, partial failure) · observability.
Exit gate: every topic is answered by the user, answered by code with a citation, or explicitly deferred by the user into Open questions. Stop the moment further questions stop changing the design.
Ask: is there a genuine design choice the codebase precedent doesn't already settle? Name the axis in one sentence ("new OrderAuditLog table vs. two columns on Orders"). Can't name it cleanly → no fork → single design, move on. Don't manufacture a fork for ceremony.
Design It Twice (only when the axis is named):
Agent calls (general-purpose), each carrying the Decisions table, Phase 1 precedent findings, the axis, and one side to defend: "Draft the best design for your side: files by layer, interfaces, migration if any, test plan by test name, and why it beats the alternative on this codebase — cite file:line. ≤700 words. Do not write files." If Agent is unavailable, draft both yourself under the same instructions.DRAFT with every section filled.APPROVED <date>, report the path, and name the next step: one PR-sized change → task-executor with the brief as its spec; several tasks → backlog-planner reads the brief and writes the roadmap tasks. Change → back to the phase the change belongs to; re-present. Drop → keep the file as DRAFT with Dropped: <reason> under Status — the decisions stay findable. Never edit an APPROVED brief silently — a change after approval is a new DRAFT revision with the old decision struck through and the new one dated.A brief-less outcome is valid. If Phase 1–2 show the idea is one change to an existing flow with no fork and no new interface, say so and hand straight to task-executor — the interview was the spec.
User: "I have an idea — let users pin orders to the top of their list."
Claude: Reads the existing list endpoint and sort logic (src/routes/orders.ts:31), finds no priority concept. Asks whether pinning is per-user or per-order, then whether pin history matters (audit table vs. one column). Names the fork, runs Design It Twice, recommends the single column citing the codebase's other per-user flags. Writes .claude/design-briefs/pin-orders.md, presents the summary, user approves → suggests backlog-planner for the three resulting tasks.
User: "Work on task: move notifications to a queue."
Claude (in task-executor): classifies as architectural → hands here. This skill anchors on the intent, interviews on delivery guarantees, retry, and ordering, writes the brief, gets approval, then task-executor resumes with the brief as its spec.
APPROVED because the user said "sounds good" to the summary while Open questions is non-empty.task-executor spike; this skill ends at the approved file.task-executor (consumes the brief as its spec; routes architectural tasks here), backlog-planner (turns an approved brief into roadmap tasks), autopilot (consumes an APPROVED brief as its spec; an architectural task without one is a hard stop there — the brief is the route back), think-like-fable (interview rigor).