skills/spec-research/SKILL.md
Discovery, research, and architecture for new features. Produces spec.md — a living specification that covers what exists, what we're building, and how it fits together. Combines requirements discovery with codebase research and design. Use when the user says "create a spec", "what should we build", "design this feature", or at the start of any feature/refactor/complex-bug workflow.
npx skillsauth add martinffx/claude-code-atelier spec-researchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Discovery + Research + Architecture = spec.md
One skill to understand what to build, what exists, and how to build it. Get approval. Then move to planning.
docs/specs/YYYY-MM-DD-<feature-name>/
└── spec.md ← This skill's output
Requirements are inline in spec.md — no separate requirements.json needed.
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 your research.
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 at a time. Don't overwhelm with a wall of questions.
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.
Write findings directly into spec.md as the foundation.
Tell the human: "I've written the research section of spec.md. Ready for you to review before I continue with the design."
STOP. Wait for human review.
Once research is approved, build spec.md with architecture and design decisions.
Use the Skill tool to invoke oracle-architect for component design, domain modeling, and layer boundaries.
# 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 human provides reference code — from open source, from elsewhere in codebase — use it as a concrete guide. Working from a reference produces dramatically better designs.
Tell the human: "spec.md is complete. Ready for your review."
STOP. Wait for human review.
Human may annotate spec.md directly — adding corrections, rejections, domain knowledge, or "remove this section entirely."
When they say "I added notes":
This may repeat 1-6 times. Spec is not approved until human explicitly says so.
When spec.md is approved, the next step is spec-plan.
"Spec is approved. Ready to write the implementation plan?"
If planning reveals design flaws, loop back to research. See spec-orchestrator for iteration patterns.
Do not start planning without explicit approval. Do not write code.
development
Security architecture and threat modeling knowledge. Auto-invokes when designing features that handle untrusted data, authentication, authorization, external integrations, file uploads, or sensitive data. Provides risk assessment frameworks, trust boundary analysis, and security design principles — not implementation code.
testing
Adversarial review of non-trivial decisions using fresh-context scrutiny. Use when correctness matters more than speed, when stakes are high (production, security-sensitive logic, irreversible operations), or before committing significant architectural or implementation choices.
development
Compact the current conversation into a handoff document for another agent to pick up.
testing
Socratic interrogation of plans against the project's domain model and documented decisions. Use when the user wants to stress-test a plan, clarify terminology, or validate assumptions against existing domain language. Updates CONTEXT.md and ADRs inline as decisions crystallise.