Tutorial: Create your first SDD project in 5 minutes.
By the end of this guide, you'll have:
- A minimal project structure ready for change-driven development
- An understanding of how SDD organizes work
- Your first spec ready for implementation
- Claude Code CLI installed
- SDD plugin installed from the marketplace
- Node.js 18+, npm, git, and Docker installed
First, create and navigate to your project directory:
mkdir my-app
cd my-appRun the initialization command:
/sdd I want to initialize a new project
SDD will:
- Detect project name from the current directory (
my-app) - Verify environment - check that required tools are installed
- Check permissions - offer to configure Claude Code permissions
- Ask about components - what types of components you plan to build
- Create minimal structure - just the essentials to get started
After initialization, you'll have:
my-app/
├── .sdd/
│ └── sdd-settings.yaml # Project configuration (config component only)
├── specs/
│ └── INDEX.md # Empty spec registry
├── components/
│ └── config/ # Configuration component (only one scaffolded)
│ ├── package.json
│ ├── envs/
│ │ ├── default/config.yaml
│ │ └── local/config.yaml
│ └── schemas/
├── README.md
├── CLAUDE.md
└── .gitignore
What's NOT created yet (deferred until first change):
changes/directoryspecs/domain/subdirectories- Server, webapp, database, contract components
Ready to add a feature? Create a change spec:
/sdd I want to create a new feature
This is where the magic happens:
- Requirements gathering - SDD guides you through a solicitation workflow
- Component detection - Determines which components are affected
- On-demand scaffolding - If a component doesn't exist yet, it's scaffolded now
- Domain updates - Glossary updated with new terms from your feature
- Spec creation - Creates SPEC.md with Domain Model and Specs Directory Changes sections
After your first feature change, you might have:
my-app/
├── .sdd/
│ └── sdd-settings.yaml # Now includes server component
├── specs/
│ ├── INDEX.md # Updated with your change
│ └── domain/
│ └── glossary.md # New domain terms
├── changes/
│ └── 2026/01/21/user-login/
│ ├── SPEC.md
│ └── PLAN.md
├── components/
│ ├── config/ # Updated with server config sections
│ └── server/ # NEW - scaffolded on-demand
│ ├── package.json
│ ├── src/
│ └── ...
└── ...
SDD uses a change-driven approach:
- Start minimal - Only config component during init
- Add as needed - Components scaffolded when you create changes that need them
- Domain grows organically - Glossary and definitions populated from your changes
This means:
- No upfront architecture decisions needed
- Each change adds exactly what it needs
- Your project structure reflects what you've actually built
After creating your change spec, review and approve it:
/sdd I want to approve the spec
/sdd I want to approve the plan
/sdd I want to start implementing
| Concept | Description |
|---|---|
| Minimal init | Only creates config component; everything else on-demand |
| On-demand scaffolding | Components created when first change needs them |
| Change-driven | Every feature, bugfix, or refactor starts as a change spec |
| Component discovery | Required components identified per change |
- Workflows - Learn the feature, bugfix, and refactor workflows
- Commands - Full command reference
- Agents - Understand the specialized agents
- Configuration Guide - How the config system works