Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jorgeferrando/sdd-skills/llms.txt

Use this file to discover all available pages before exploring further.

SDD can be added to any existing project without rewriting anything. /sdd-init detects your stack from config files and skips questions it can already answer. /sdd-discover then reverse-engineers canonical specs from your existing code so future changes have a behavioral baseline to diff against. The whole onboarding takes two commands.

Two-step onboarding overview

StepCommandWhat it does
1/sdd-initCreates openspec/, generates steering files, skips stack questions already known from config files
2/sdd-discoverScans src/, app/, lib/ and generates openspec/specs/{domain}/spec.md per domain
After these two steps, the SDD workflow is fully operational — use /sdd-new to start your first tracked change.
1

Run /sdd-init on your existing code

Run /sdd-init from the project root just as you would for a new project. The key difference: when code already exists, init detects your stack automatically and skips the questions it can answer from config files.
/sdd-init
What gets detected automatically:
Config fileDetected information
package.jsonLanguage (Node.js), framework, test runner, scripts
pyproject.toml / setup.cfgPython version, dependencies, test commands
go.modGo version, module name
Cargo.tomlRust edition, crate type
Dockerfile / docker-compose.ymlRuntime, exposed ports, services
Because Group B (stack questions) is already answered from config files, Group B is skipped automatically. Init still asks Group A (project context — what it builds, who uses it, what is out of scope), Group C (team rigor — team size, quality level, CI/CD), Group D if MCPs are detected, and Group E (architecture style, TDD approach, commit format).The same 7 steering files are generated in openspec/steering/:
FileContent
product.mdWhat the project builds and for whom
tech.mdStack, dependencies, dev/test commands
structure.mdDirectory layout, layers, responsibilities
conventions.mdRules that cause PR failures (RFC 2119: MUST/SHOULD/MAY)
environment.mdAvailable MCPs, CLIs, runtimes, Docker containers
project-skill.mdQuick-reference index pointing to the other steering files
project-rules.mdEmpty at first — grows as the AI learns from your corrections
Review the generated conventions.md carefully — it is inferred from your stack and general best practices, not from your actual codebase. You may want to edit it to reflect team-specific rules before running any changes.
2

Generate specs from existing code with /sdd-discover

With steering files in place, run /sdd-discover to reverse-engineer behavioral specs from your existing code. This populates openspec/specs/ so that future /sdd-spec calls can write targeted deltas against a known baseline instead of starting from scratch.
/sdd-discover
The skill:
  1. Scans src/, app/, and lib/ to detect domains by directory structure and import patterns
  2. Shows detected domains with file counts and asks for confirmation before analyzing
  3. Launches one parallel subagent per domain — each reads the domain code, infers its purpose, main entities, and behavior
  4. Generates openspec/specs/{domain}/spec.md with Status: inferred in the frontmatter
  5. Creates or updates openspec/INDEX.md — a keyword index used by /sdd-explore to find relevant specs quickly
To analyze a single domain instead of the entire project:
/sdd-discover payments
This is useful when you want to onboard one domain at a time, or when a specific area needs to be specced before starting a change in it.
3

Review and refine the generated specs

Inferred specs are a starting point, not ground truth. Before using SDD for real changes, spend a few minutes reviewing what was generated.
openspec/specs/
├── auth/spec.md          # Status: inferred
├── payments/spec.md      # Status: inferred
└── notifications/spec.md # Status: inferred
Things to check in each spec:
  • Domain boundaries — did the AI correctly identify what belongs in each domain?
  • Business rules — are the inferred rules accurate, or did the AI over-generalize from code structure?
  • Edge cases — are error paths and validation rules described, or just the happy path?
  • Status field — change Status: inferred to Status: reviewed once you’ve verified a spec
Specs are plain Markdown. Edit them directly in openspec/specs/{domain}/spec.md. There is no special command needed — the files are the source of truth.After reviewing specs, run /sdd-steer sync to check whether your conventions file has already drifted from the actual codebase patterns:
/sdd-steer sync
This compares current conventions against code, skills, and MEMORY.md, then presents proposed additions, updates, and removals for your confirmation. It does not auto-apply changes.
4

Start using the SDD workflow for new changes

With steering and specs in place, you’re ready to use SDD for all new work. The workflow is identical to a new project from this point forward.
/sdd-new "fix payment timeout"
Because openspec/specs/payments/spec.md already exists, the spec phase will write a delta — only what changes — rather than describing the entire payments domain from scratch. This is the key benefit of running /sdd-discover first.Continue with the normal cycle:
/sdd-new "fix payment timeout"
/sdd-continue   # spec (delta against existing payments spec)
/sdd-continue   # design
/sdd-continue   # tasks
/sdd-apply
/sdd-verify
/sdd-archive

Command sequence

/sdd-init
/sdd-discover
# review openspec/specs/ — edit as needed
/sdd-new "fix payment timeout"
Inferred vs. authored specs: Specs generated by /sdd-discover have Status: inferred and describe existing behavior — what the code does today, including any bugs or inconsistencies. Specs written by /sdd-spec during a change cycle have Status: approved and describe intended behavior — what the system should do after the change. Both types coexist in openspec/specs/. When they conflict, the authored spec (from an active or archived change) takes precedence.
Run /sdd-audit right after onboarding to see whether your existing code already has convention violations. This gives you a baseline of technical debt before you start adding new changes — and a natural list of cleanup tasks to tackle using the SDD workflow.
/sdd-audit src/

Build docs developers (and LLMs) love