From constellation
Use when about to create a feature, build a component, add functionality, modify behavior, or start any new work — or when the user asks how should we, what approach, which way, explore options, design X, or spec this out. Triggers before any code, scaffold, or implementation skill runs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/constellation:brainstormingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn an idea into an approved, written design before any implementation begins. The body holds the gates — do not act on the trigger alone.
Turn an idea into an approved, written design before any implementation begins. The body holds the gates — do not act on the trigger alone.
Announce at the start: "Using brainstorming to turn this idea into an approved design." Create a TodoWrite list from the Checklist below and work it in order.
THE GATE: No code, no scaffold, no implementation skill until a written design is approved.
This applies to EVERY project regardless of perceived simplicity. Violating the letter of the rules is violating the spirit of the rules — "I'll just sketch the file structure" or "I'll prototype to see what works" is implementing before approval.
Every project goes through this process. A todo list, a one-function utility, a config change — all of them. "Simple" projects are where unexamined assumptions cause the most wasted work. The design can be a few sentences for a truly simple project, but you MUST write it and get approval.
| Excuse you'll tell yourself | Reality |
|---|---|
| "This is too simple to need a design." | Simple tasks hide the riskiest assumptions. Write three sentences and get approval. |
| "The user already told me what to build." | A request is not a design. Restate it, surface assumptions, confirm. |
| "I'll prototype first to understand it." | A prototype is implementation. Design first, then constellation:writing-plans. |
| "I'll just scaffold the directories while we talk." | Scaffolding is taking an implementation action before approval. Stop. |
| "Asking all my questions at once is faster." | Batched questions overwhelm and get half-answered. One question per message. |
| "I'll present one approach — it's clearly right." | Without alternatives you can't see the trade-off you're paying. Generate 2-3. |
| "The reviewer approved, ship it." | The user still must read the spec. Both gates are required. |
| "Design's approved, I'll jump straight to coding." | The only next step is constellation:writing-plans, never an implementation skill. |
If you catch yourself thinking any of these, stop and return to the gate:
Create a TodoWrite item for each and complete in order:
references/visual-companion.md.digraph brainstorming {
"Explore project context" [shape=box];
"Visual questions ahead?" [shape=diamond];
"Offer visual companion\n(own message)" [shape=box];
"Ask clarifying questions\n(one at a time)" [shape=box];
"Generate 2-3 alternatives\n+ trade-offs" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Write design spec\n(constraints/assumptions/\nalternatives/trade-offs/decision)" [shape=box];
"Spec review loop\n(adversarial subagent)" [shape=box];
"Approved or 3 iterations?" [shape=diamond];
"User reviews written spec?" [shape=diamond];
"Invoke constellation:writing-plans" [shape=doublecircle];
"Explore project context" -> "Visual questions ahead?";
"Visual questions ahead?" -> "Offer visual companion\n(own message)" [label="yes"];
"Visual questions ahead?" -> "Ask clarifying questions\n(one at a time)" [label="no"];
"Offer visual companion\n(own message)" -> "Ask clarifying questions\n(one at a time)";
"Ask clarifying questions\n(one at a time)" -> "Generate 2-3 alternatives\n+ trade-offs";
"Generate 2-3 alternatives\n+ trade-offs" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Write design spec\n(constraints/assumptions/\nalternatives/trade-offs/decision)" [label="yes"];
"Write design spec\n(constraints/assumptions/\nalternatives/trade-offs/decision)" -> "Spec review loop\n(adversarial subagent)";
"Spec review loop\n(adversarial subagent)" -> "Approved or 3 iterations?";
"Approved or 3 iterations?" -> "Spec review loop\n(adversarial subagent)" [label="issues, fix\nand re-dispatch"];
"Approved or 3 iterations?" -> "User reviews written spec?" [label="approved / surfaced"];
"User reviews written spec?" -> "Write design spec\n(constraints/assumptions/\nalternatives/trade-offs/decision)" [label="changes requested"];
"User reviews written spec?" -> "Invoke constellation:writing-plans" [label="approved"];
}
The terminal state is invoking constellation:writing-plans. Do NOT invoke frontend-design, a builder, or any other implementation skill from here.
Understanding the idea
references/design-prompts.md has assumption-surfacing and decision-forcing templates.Generating alternatives (do this before evaluating)
Trade-off analysis
references/design-prompts.md.Presenting the design
Key principles
A brainstorm always leaves a committed design spec. Save to docs/specs/YYYY-MM-DD-<topic>-design.md (user preference overrides the location) and commit it. Write the spec prose clearly and concisely. The spec MUST contain:
# <Topic> Design
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Superseded
## Context
What problem are we solving and why now?
## Constraints
Hard limits the design must respect (time, cost, compatibility, reversibility).
## Assumptions
Each with risk: HIGH (wrong = wrong solution / data loss), MEDIUM (wrong = rework), LOW. Note how to verify HIGH ones.
## Alternatives Considered
1. <Option A> — what it is, optimized for, main weakness
2. <Option B> — …
3. <Option C> — …
## Trade-off Analysis
Comparison table across the dimensions that matter for this problem.
## Decision
Which option and why. Reference the trade-off analysis. State the accepted cost.
## Consequences
**Good / Bad / Neutral** — what gets better, harder, or just different.
## Design
Architecture, components, data flow, error handling, testing.
This block is both the spec and its decision record — it replaces a separate ADR.
After writing the spec, dispatch the reviewer subagent per references/spec-document-reviewer-prompt.md. The subagent gets the spec file path and an adversarial instruction — never your session history. If it returns Issues Found: fix, re-dispatch, repeat. After 3 iterations without approval, surface to the human for guidance instead of looping further.
Then the user-review gate:
"Spec written and committed to
<path>. Please review it and tell me if you want changes before we write the implementation plan."
Wait for the response. Changes re-enter the review loop. Proceed only on explicit approval.
✅ "Question 1 of a few: is this for internal users or external customers? (a) internal (b) external (c) both" ❌ "Is this internal or external, what's the scale, do you need auth, and should it be real-time or batch?"
✅ "I see three approaches: (1) polling — simplest, higher latency; (2) webhooks — low latency, needs a public endpoint; (3) a queue — most flexible, most infra. I recommend (1) because the latency budget is generous; revisit (3) if volume 10x's." ❌ "I'll use a queue — it's the standard solution." (no alternatives, no trade-off, no recommendation rationale)
✅ "Design approved and spec committed. Invoking constellation:writing-plans to produce the implementation plan." ❌ "Design approved — I'll start scaffolding the project now." (skips the gate and the plan)
✅ Spec includes a HIGH-risk assumption: "Assumes the upstream API returns sorted results — HIGH; verify with a probe before relying on it." ❌ Spec lists only the chosen design with no constraints, assumptions, or alternatives — nothing durable to revisit later.
A browser-based companion for mockups, diagrams, and side-by-side visual options. It is a tool, not a mode — accepting it makes it available; you still decide per question whether seeing beats reading. Offer it only when upcoming questions are genuinely visual, and make the offer its own message. Read references/visual-companion.md before using it; scripts live in scripts/.
references/design-prompts.md — assumption surfacing, alternative generation, trade-off matrix, decision-forcing questions.references/spec-document-reviewer-prompt.md — adversarial reviewer dispatch template.references/visual-companion.md — browser companion guide.npx claudepluginhub trevoredris/constellation --plugin constellationSets up isolated workspaces using native worktree tools or git worktree fallback. Use before starting feature work to protect the current branch.