Best for
- Use when the user explicitly requests a spec or when atelier-orchestrator selects a Spec-backed Plan.
martinffx/atelier/skills/spec-brainstorm/SKILL.md
Conversational design workshop for substantial work. Interviews the human one question at a time, explores 2-3 approaches with trade-offs, and presents the design section by section for approval before writing only design.md, then stops. Combines requirements discovery with codebase research and architecture design. Use when the user explicitly requests a spec or when atelier-orchestrator selects a Spec-backed Plan. Ambiguous design or discovery requests route through atelier-orchestrator.
Decision brief
Conversational design workshop for substantial work that produces a focused, reviewed spec.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/martinffx/atelier --skill "skills/spec-brainstorm"Inspect the Agent Skill "spec-brainstorm" from https://github.com/martinffx/atelier/blob/ab5331c44326f24cde29f30c269d079c84864134/skills/spec-brainstorm/SKILL.md at commit ab5331c44326f24cde29f30c269d079c84864134. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Before diving in, understand where you are.
Ask questions to understand what to build. Skip this step if requirements are already clear from context (existing specs, human provided details, etc.).
Read the relevant codebase deeply. Not signatures — implementations, edge cases, error handling, data flows. Trace callers and callees. Read tests to understand expected behaviour.
Design happens in three phases: explore approaches, present the design in sections, then write the spec file.
After writing the file, check it with fresh eyes:
Permission review
The documentation asks the agent to create, modify, or delete local files.
repository and discuss drafts in conversation, but it must not modify any other file, createThe documentation asks the agent to read local files, directories, or repositories.
Read the relevant codebase deeply. Not signatures — implementations, edge cases, errorThe documentation asks the agent to create, modify, or delete local files.
then write the spec file.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 41 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Conversational design workshop for substantial work that produces a focused, reviewed spec.
One question at a time. Multiple approaches explored. Design approved in sections. Ruthless scope control. No implementation until design is approved.
Run this skill only after atelier-orchestrator selects a Spec-backed Plan or the human
explicitly requests a spec. Bounded work should go directly to spec-plan for an Inline
Plan. Do not reclassify the planning mode here.
docs/specs/YYYY-MM-DD-<feature>/
└── design.md ← This skill's output
Requirements are inline — no separate requirements.json needed.
This skill may create or update only the design.md shown above. It may inspect the
repository and discuss drafts in conversation, but it must not modify any other file, create
plan.json, create tracker entries, invoke another workflow skill, or write implementation
code. This boundary still applies when the human asks to brainstorm, plan, and implement in
one request. Finish design.md, report it, and stop.
These principles apply to every spec, every time.
Persisted specs are for work whose discovery, architecture, dependencies, or coordination needs justify a durable artifact. Do not pull bounded work into this workflow merely because it touches multiple files or takes time. That work belongs in an Inline Plan.
Break the system into units with one clear purpose each. Well-defined interfaces between them. Each unit independently understandable and independently testable. If you can't explain a unit's job in one sentence, it's doing too much.
Explore the current structure first. Follow existing patterns. Targeted improvements only. No unrelated refactoring. Understand why things are the way they are before proposing changes. Treat loaded skills as relevant guidance, not as a requirement to apply every pattern they contain.
If the request describes multiple independent subsystems, flag it immediately. Decompose into sub-projects before diving into details. Each substantial sub-project gets its own spec and plan; bounded sub-projects can use Inline Plans. A spec that tries to cover three subsystems helps no one.
Keep migrations separate from authorization, product behavior, infrastructure, schema, and test-platform projects. Do not use a migration as permission to redesign adjacent systems.
Remove unnecessary features from all designs. If a capability isn't needed for the first user story, it doesn't go in the spec. Every feature is a cost — to build, to test, to maintain, to understand later. Push back on scope creep during discovery.
Future consumers do not justify shared infrastructure. A "reusable foundation" may describe an architectural quality, but it is not a user story or a current requirement.
Before diving in, understand where you are.
docs/specs/ for previous work. What domain model
exists? What patterns are established? What has been built before?This is silent — don't narrate it. Let the context inform where you focus.
Ask questions to understand what to build. Skip this step if requirements are already clear from context (existing specs, human provided details, etc.).
Ask one question at a time. Multiple choice preferred when possible — give 2-4 concrete options rather than open-ended prompts. Keep the conversation moving.
Good: "Should this be real-time or batch-processed? (a) Real-time via WebSocket, (b) Periodic polling every 30s, (c) On-demand when user requests it."
Bad: "How should the data synchronization work?"
Before asking any detail questions, assess scope. If the request describes multiple independent subsystems (e.g., "build a notification system with email, SMS, push, and an admin dashboard"):
Do not try to spec everything in one document.
During discovery, push back on scope:
If the human insists, include it — but flag the trade-off in the spec.
Adapt these to context. Not all are needed every time.
If you already know answers from orientation, confirm rather than ask.
Tell the human: "Based on my research, here's my understanding of what we're building. Does this look right?"
STOP. Wait for human confirmation.
Read the relevant codebase deeply. Not signatures — implementations, edge cases, error handling, data flows. Trace callers and callees. Read tests to understand expected behaviour.
Collect research findings for the spec as the foundation. Do not write design.md until the
approved design sections are assembled in Step 4c.
The research section must map each relevant concern to the code that already handles it and the current requirement that drives the decision:
| Concern | Existing solution | Decision | Current requirement |
|---|---|---|---|
| IDs | Shared parser and ID type | reuse | Parse route parameters |
Use only reuse, modify, delete, or new in the Decision column. Every new concept must
map to a present requirement; a future or hypothetical consumer does not qualify.
Tell the human: "I've written the research section of the spec. Ready for you to review before I continue with the design."
STOP. Wait for human review.
Design happens in three phases: explore approaches, present the design in sections, then write the spec file.
Before settling on a design, present 2-3 approaches with trade-offs.
The first approach must keep the existing architecture and make the smallest correct change. Present broader approaches only when a current requirement makes their extra cost relevant.
For each approach, address:
Lead with your recommended option and explain why it wins.
Before asking the human to approve an approach or design batch, remove anything justified only by completeness, consistency, or hypothetical reuse.
Example:
Approach A: Single table with JSON columns
- Simple schema, fast to implement
- Querying inside JSON is limited, migration pain later
- Complexity: Low
Approach B: Normalized relational tables
- Clean queries, easy to evolve schema
- More joins, more migration files, more code
- Complexity: Medium
Recommendation: Approach B — the query flexibility matters more here than implementation speed.
Get explicit approval on the chosen approach before presenting the design.
Tell the human: "Which approach should we go with? Or should I explore a different direction?"
STOP. Wait for human to choose an approach.
Present the design in batches. Get approval after each batch before continuing.
Sections already confirmed in earlier steps (Problem, Scope, Constraints, Context) are written into the spec from those confirmations — do not re-present them.
Batch A: User Stories — the contract you're designing against. Formal stories with acceptance criteria and priorities. If rejected: revise. If the rejection reveals a scope misunderstanding, loop back to Discovery (Step 2).
Batch B: Architecture — component design, domain modeling, and layer boundaries. Use installed language-specific architecture or API-design skills as relevant to your stack. Then present: component structure, domain model, where business logic lives, where IO lives. If rejected: revise. If the rejection undermines the chosen approach, offer to return to approach exploration (4a). If it reveals a fundamental gap, loop back to Research (Step 3). If the detail reveals the work is far more complex than estimated, say so and offer to revisit the approach.
Batch C: API Design + Data Model — contracts derived from the approved architecture. Skip sections that don't apply, but say so explicitly ("No API changes — moving to Trade-offs"). Never skip silently. If rejected: revise. If the rejection implicates the architecture, go back to Batch B.
Batch D: Trade-offs + Open Questions — alternatives considered, why this approach wins, known limitations, anything unresolved. Usually revisable inline.
Each batch ends with:
Tell the human: "Does this look right?"
STOP. Wait for approval before continuing.
If you loop twice on the same batch, stop and ask:
"We've looped on [batch] twice. Should we reconsider the approach?"
Terminology discipline: while drafting batches, challenge terms against CONTEXT.md and
record resolved terminology in design.md. Do not update CONTEXT.md from this skill. If
domain confusion runs deep, suggest pausing for oracle-grill-me before continuing.
Once all batches are approved, write the full spec document.
# Feature Name
## Problem
- What problem are we solving
- Who has this problem
- How they solve it today
## Scope
- **In scope:** [specific capabilities]
- **Out of scope:** [explicitly deferred]
## User Stories
- US-1: As a [role], I want [action], so that [benefit]
- Given X, when Y, then Z
- Priority: must/should/could
## Constraints
- [Technical or business constraints]
## Context
- What exists today, how it works end-to-end
- Existing patterns and conventions
- Dependencies and integration points
- Gotchas, assumptions, technical debt
## Architecture
- Component structure (functional core / effectful edge)
- Domain model: entities, value objects, aggregates
- Where business logic lives, where IO lives
## API Design
- Endpoints, request/response contracts
- Error handling approach
- Event contracts (published/consumed)
## Data Model
- Schema design, access patterns
- Migrations needed
## Trade-offs
- Alternatives considered
- Why this approach wins
- Known limitations
## Open Questions
- Anything unresolved needing human input
Scale each section to complexity — a few sentences if straightforward, detailed if nuanced.
If the human provides reference code — from open source, from elsewhere in the codebase — use it as a concrete guide. Working from a reference produces dramatically better designs.
After writing the file, check it with fresh eyes:
Substance rule: if a fix changes the substance of an approved section, re-present that section for approval. Wording and consistency fixes go inline — note them at handoff.
Tell the human:
"Brainstorm complete. Design written to
docs/specs/<path>/design.md. A separatespec-planinvocation can createplan.jsonafter you approve this document."
If the human requests changes — in conversation or by annotating the file — address every note, update the spec, and re-run the self-review. If a change alters the substance of an approved section, re-present that section for approval before continuing. Resolve questions that affect scope, architecture, contracts, data, security, or task ordering before handoff.
Stop after reporting the completed design.md. Do not invoke spec-plan, offer to continue
automatically, create plan.json, or write code. The human must start the next phase with a
separate request.
If planning reveals design flaws, loop back to research. See atelier-orchestrator for iteration patterns.
Frequently asked questions
Conversational design workshop for substantial work that produces a focused, reviewed spec.
The source record exposes this install command: npx skills add https://github.com/martinffx/atelier --skill "skills/spec-brainstorm". Inspect the command and pinned source before running it.
Static rules flagged write-files, read-files in the source; the page lists the matching lines and excerpts.
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
narrative-io/narrative-skills-marketplace
Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "
brucesongs/kali-claw
Insecure Design (OWASP A06:2025) focuses on security flaws in system architecture and design phases, rather than code implementation-level bugs.
NintendaDev/unikit-ai
Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document th