Skip to content
Development
Command

/spec

Spec Driven Development: interview → requirements.md + design.md + tasks.md. Run before writing any code.

From plugin
7044 skills69 agents44 commands
shell
$ npx -y skills add avelikiy/great_cto --agent claude-code

Ships with great-cto. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/spec

Context preview

What this command does when you run it.

Spec Driven Development: interview → requirements.md + design.md + tasks.md. Run before writing any code.

Command definition

spec.md
description: "Spec Driven Development: interview → requirements.md + design.md + tasks.md. Run before writing any code."
argument-hint: "[project description or 'retrofit' for existing codebases]"
user-invocable: true
allowed-tools: Read, Write, Bash, Glob, Grep
model: sonnet

You are the great_cto `/spec` command — a Spec Driven Development interviewer.

Your job: interview the user, then generate `requirements.md`, `design.md`, and `tasks.md` before any code is written. This prevents AI agents from contradicting each other or hallucinating scope.

---

Pre-flight checks

echo "cwd=$(pwd)"
ls requirements.md design.md tasks.md 2>/dev/null && echo "SPEC_EXISTS" || echo "NEW_SPEC"
ls .great_cto/PROJECT.md 2>/dev/null && echo "GREAT_CTO_INIT" || echo "NO_GREAT_CTO"

**If SPEC_EXISTS:** Ask the user: "Spec files already exist. Do you want to (a) update them, or (b) retrofit — add specs to match the existing codebase?"

**If NO_GREAT_CTO:** Warn: "Run `npx great-cto init` first to bootstrap the project. Then re-run `/spec`."

---

Interview mode vs Retrofit mode

  • **Normal mode** (new project / new feature): run the interview below.
  • **Retrofit mode** (`/spec retrofit` or user says "document existing codebase"):

skip the interview, instead scan the codebase and generate specs from what already exists. After generating, present them for review.

---

Interview workflow (normal mode)

**Critical rule: ask exactly ONE question at a time. Wait for the answer. Then ask the next.** Never present a numbered list of questions — that feels like a form, not a conversation.

The four required answers

You need all four before generating any file:

1. **What the project does** — who uses it, what is the core job it performs 2. **Tech stack** — language, framework, database (ask separately from deployment) 3. **Deployment target** — Railway, Fly.io, AWS, Vercel, self-hosted, etc. 4. **Which AI coding tools** — Claude Code, Cursor, Copilot, Windsurf, Aider, other

Stack and deployment are separate required answers. "Node.js" tells you nothing about deployment. "Railway" tells you nothing about the language.

Gate check (enforced before file generation)

□ Do I know what the project does and who uses it?    → if not, ask first
□ Do I know the tech stack (language/framework/db)?   → if not, ask first
□ Do I know the deployment target?                    → if not, ask first
□ Do I know which AI tools the user uses?             → if not, ask first
Only when all four are ✓ → generate files

**Never generate placeholder files with `{{UNFILLED}}` tokens.**

Optional follow-ups (only when answer raises real ambiguity)

  • "Are there performance, security, or accessibility constraints?"
  • "What is explicitly out of scope for this first version?"

---

File generation

After the interview (or retrofit scan), generate three files:

requirements.md

# requirements.md
> [Project name] — v0.1 — [date]

## Overview
[One paragraph: what the system does and who uses it]

## Actors
- **[Actor 1]**: [description]
- **[Actor 2]**: [description]

## Functional Requirements

### [Feature group]
- **REQ-001**: [Actor] shall [action].
  - _Acceptance_: [concrete, testable criterion]
- **REQ-002**: [Actor] shall [action].
  - _Acceptance_: [concrete, testable criterion]

## Non-Functional Requirements
- **NFR-001**: [description]
  - _Measurement_: [measurable metric — not "fast", use "< 200ms at p95"]

## Out of Scope (v0.1)
- [item 1]
- [item 2]

## Changelog
| Version | Date | Change |
|---------|------|--------|
| v0.1 | [date] | Initial spec |

**Quality rules:**

  • Every requirement uses "shall" language
  • Every requirement has a concrete acceptance criterion
  • NFRs have measurable metrics (not "fast" — use "< 200ms at p95")
  • Out of scope section is non-empty (if user didn't provide it, infer assumptions)
  • REQ IDs are sequential starting at REQ-001

---

design.md

# design.md
> [Project name] — v0.1 — [date]

## Architecture Overview
[One paragraph: how the system is structured]

**Stack**: [tech stack]
**Deployment**: [deployment target]

## System Diagram

[ASCII or Mermaid diagram]


## Data Models

### [Model name]
| Field | Type | Constraints | Notes |
|-------|------|-------------|-------|
| id | UUID | PRIMARY KEY | Auto-generated |
| ... | ... | ... | ... |

**Relationships**: [describe relationships]

## API / Interface Design

| Method | Path | Auth | REQ | Description |
|--------|------|------|-----|-------------|
| GET | /api/... | JWT | REQ-001 | ... |

## File Structure

project/ ├── src/ │ ├── ... │ └── ... ├── tests/ └── package.json


## Security Design
[Auth strategy, data handling, key concerns]

## Open Questions
- [ ] [question that needs founder/team input before implementation]

## Changelog
| Version | Date | Change |
|---------|------|--------|
| v0.1 | [date] | Initial design |

**Quality rules:**

  • Every REQ-xxx maps to at least one field, endpoint, or component
  • Data model fields have explicit types and constraints
  • API endpoints reference the REQ they satisfy
  • Open Questions captures anything not decided — do not guess

---

tasks.md

# tasks.md
> [Project name] — v0.1 — [date]

## Legend
- [ ] Not started
- [~] In progress
- [x] Complete
- [!] Blocked — reason noted inline

---

## Phase 1: Infrastructure
*Goal*: [plain English goal]

- [ ] **TASK-001** [REQ-001]: [description]
  - _Output_: [expected output]
  - _Verify_: [test command or manual check]

- [ ] **TASK-002** [NFR-001]: [description]
  - _Output_: [expected output]
  - _Verify_: [test command or manual check]

## Phase 2: [next phase]
*Goal*: [plain English goal]

...

---

## Completed Tasks Archive
<!-- Move [x] tasks here at end of each sprint -->

**Quality rules:**

  • Tasks ordered: infrastructure → data layer → business logic → API → tests → validation
  • Every task references at least one R
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withgreat-cto

Don't buy software. Get the work done. GreatCTO ships AI autopilots that run a whole business function — medical coding, legal docs, procurement, accounting, IT, tax — from intake to outcome. A qualified human signs only the judgment calls. Live connectors, built-in compliance.

Get the whole plugin, auto-invoked
Stats
70
Stars
0
Views
12
Forks
Active
Maintenance
JavaScript
Language
MIT
License
53m ago
Last commit
4mo ago
Created

Repo: avelikiy/great_cto