api-and-interface-desi…
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when drafting a PRD or requirements document with objectives and scope, or when requirements are unclear, ambiguous, or only exist as a vague idea.
Claude Code
$ npx -y skills add addyosmani/agent-skills --skill spec-driven-development --agent claude-code
Codex
$ npx skills add addyosmani/agent-skills --skill spec-driven-development -a codex -y
Cursor
$ npx skills add addyosmani/agent-skills --skill spec-driven-development -a cursor -y
Gemini CLI
$ npx skills add addyosmani/agent-skills --skill spec-driven-development -a gemini-cli -y
GitHub Copilot
$ npx skills add addyosmani/agent-skills --skill spec-driven-development -a github-copilot -y
OpenCode
$ npx skills add addyosmani/agent-skills --skill spec-driven-development -a opencode -y
Windsurf
$ npx skills add addyosmani/agent-skills --skill spec-driven-development -a windsurf -y
name: spec-driven-development description: Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when drafting a PRD or requirements document with objectives and scope, or when requirements are unclear, ambiguous, or only exist as a vague idea. Use when a single requirement spans several independently testable capabilities and needs decomposing into a capability map of modules before specifying.
Write a structured specification before writing any code. The spec is the shared source of truth between you and the human engineer — it defines what we're building, why, and how we'll know it's done. Code without a spec is guessing.
**When NOT to use:** Single-line fixes, typo corrections, or changes where requirements are unambiguous and self-contained.
Spec-driven development has four phases, preceded by a scope check (Phase 0) that activates only when one request bundles several independently testable capabilities. Do not advance to the next phase until the current one is validated.
SPECIFY ──→ PLAN ──→ TASKS ──→ IMPLEMENT │ │ │ │ ▼ ▼ ▼ ▼ Human Human Human Human reviews reviews reviews reviews
Most requests describe one capability. If this one does, skip this phase and go straight to Specify — Phase 0 exists for the exception, not the rule, and it puts no hierarchy on single-capability features.
**Detection.** Decompose before specifying when a single requirement bundles several independently testable capabilities:
**Propose a capability map before writing any spec.** Small and reviewable — a module table plus a build order, not a project plan:
# Capability Map: [Initiative Name] | Module id | Responsibility | Depends on | |---|---|---| | identity | Accounts, sessions, SSO | — | | billing | Plans, invoices, payments | identity | | notifications | Email and webhook fan-out | identity | | reporting | Usage dashboards | billing, notifications | Build order: identity → billing, notifications → reporting
**The map is gated like every phase.** The human reviews module boundaries, dependency direction, and build order before any module spec is written. Getting the map wrong is expensive; reviewing ten lines is not.
**Then recurse per module.** Run Specify → Plan → Tasks → Implement for each module in dependency order. Each module gets its own spec, scoped to that module's objective, boundaries, and success criteria. Save the approved map at the project root and each module's spec alongside it, named by module id (`SPEC-identity.md`, `SPEC-billing.md`) — the map, not filename guessing, is the index of what exists.
Start with a high-level vision. Ask the human clarifying questions until requirements are concrete.
**Surface assumptions immediately.** Before writing any spec content, list what you're assuming:
ASSUMPTIONS I'M MAKING: 1. This is a web application (not native mobile) 2. Authentication uses session-based cookies (not JWT) 3. The database is PostgreSQL (based on existing Prisma schema) 4. We're targeting modern browsers only (no IE11) → Correct me now or I'll proceed with these.
Don't silently fill in ambiguous requirements. The spec's entire purpose is to surface misunderstandings *before* code gets written — assumptions are the most dangerous form of misunderstanding.
**Write a spec document covering these six core areas:**
1. **Objective** — What are we building and why? Who is the user? What does success look like?
2. **Commands** — Full executable commands with flags, not just tool names.
Build: npm run build Test: npm test -- --coverage Lint: npm run lint -- --fix Dev: npm run dev
3. **Project Structure** — Where source code lives, where tests go, where docs belong.
src/ → Application source code src/components → React components src/lib → Shared utilities tests/ → Unit and integration tests e2e/ → End-to-end tests docs/ → Documentation
4. **Code Style** — One real code snippet showing your style beats three paragraphs describing it. Include naming conventions, formatting rules, and examples of good output.
5. **Testing Strategy** — What framework, where tests live, coverage expectations, which test levels for which concerns.
6. **Boundaries** — Three-tier system:
**Spec template:**
# Spec: [Project/Feature Name] ## Objective [What we're bui
Production-grade engineering skills for AI coding agents. Skills encode the workflows, quality gates, and best practices that senior engineers use when building software.
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Tests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need…
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate…
Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a…
Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder…
Establishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.