From sdd
Scaffolds SDD project structure with root files (package.json, README.md, CLAUDE.md, .gitignore), sdd/, specs/, and optional changes/ in minimal or full modes. Non-destructive.
npx claudepluginhub liorcohen/sdd --plugin sddThis skill uses the workspace's default tool permissions.
Creates the non-component parts of an SDD project: root files and specs directory.
Initializes SDD projects via version detection, plugin rebuild if needed, environment verification, tech pack registration, minimal scaffolding, and git setup.
Scaffolds AgenticDev directory structure (docs/specs, docs/changes) via bash script for spec-driven development workflow. Use when starting new projects or adding to existing ones without docs.
Scaffolds full projects from PRD + stack templates: directory structure, configs, CLAUDE.md, git repo init, GitHub push. Studies existing projects via SoloGraph, uses Context7 for library versions.
Share bugs, ideas, or general feedback.
Creates the non-component parts of an SDD project: root files and specs directory.
/sdd I want to initialize a new project)Creates only the essential structure needed to start. Additional components are scaffolded during implementation when the plan includes a scaffolding phase.
mode: minimal
project_name: my-app
target_dir: /path/to/project
Creates:
project/
├── sdd/
│ └── sdd-settings.yaml # Minimal settings
├── specs/
│ └── INDEX.md # Empty spec registry
├── package.json # Root project (from tech pack template)
├── README.md
├── CLAUDE.md
└── .gitignore
NOT created in minimal mode:
changes/ directoryspecs/domain/ subdirectoriesspecs/architecture/specs/SNAPSHOT.mdCreates the complete structure. Used when upgrading or explicitly requested.
mode: full
project_name: my-app
project_description: My application
primary_domain: Task Management
target_dir: /path/to/project
Creates:
project/
├── sdd/
│ └── sdd-settings.yaml
├── specs/
│ ├── INDEX.md
│ ├── SNAPSHOT.md
│ └── domain/
│ ├── glossary.md
│ ├── definitions/
│ └── use-cases/
├── changes/
│ └── INDEX.md
├── README.md
├── CLAUDE.md
├── package.json
└── .gitignore
This skill NEVER overwrites existing files:
This makes it safe to run multiple times for repair/upgrade scenarios.
Use during:
/sdd I want to initialize a new project in minimal mode| Variable | Description |
|---|---|
{{PROJECT_NAME}} | Project name (lowercase, hyphens) |
{{PROJECT_DESCRIPTION}} | Brief project description |
{{PRIMARY_DOMAIN}} | Primary business domain |
{{PLUGIN_VERSION}} | SDD plugin version |
{{CURRENT_DATE}} | Current date (YYYY-MM-DD) |
Use the minimal template defined in the project-settings skill (see its "Minimal Template" section). That skill is the authoritative source for the sdd-settings.yaml schema and template format.
# Specifications Index
This file tracks all specifications in the project.
## Changes
No changes yet. Create your first change with:
/sdd I want to create a new feature
## Domain Knowledge
Domain knowledge (glossary, personas, use cases) is populated when you create changes.
Schema: schemas/input.schema.json
Accepts scaffolding mode, project name, target directory, and optional description and domain.
Schema: schemas/output.schema.json
Returns success status and list of created files.
Templates are in this skill's templates/ directory:
skills/project-scaffolding/templates/
├── project/
│ ├── package.json # Root project package.json
│ ├── README.md
│ └── CLAUDE.md
├── specs/
│ ├── SNAPSHOT.md
│ └── glossary.md
└── changes/
└── INDEX.md
CRITICAL: The sdd/ directory MUST be version controlled.
The generated .gitignore should:
sdd/ or any sdd/* patternsspecs/ or changes/ directories# Dependencies
node_modules/
# Build outputs
dist/
build/
*.tsbuildinfo
# IDE
.idea/
.vscode/
*.swp
# OS
.DS_Store
Thumbs.db
# Environment
.env
.env.local
.env.*.local
# Logs
*.log
logs/
# Test coverage
coverage/
# IMPORTANT: sdd/ is NOT ignored - it contains version-controlled SDD artifacts
# Do NOT add sdd/ to this file
When running in repair/upgrade mode, check existing .gitignore:
.sdd or sdd/ pattern exists, remove itspecs/ pattern exists, remove itchanges/ pattern exists, remove itProject scaffolding uses the scaffolding engine internally. The scaffolding project command builds a spec from the project config and calls executeSpec. You do not need to invoke scaffolding apply separately for project-level files — the CLI handles it.
The project scaffolding CLI:
ScaffoldingConfig into a ScaffoldSpectemplate_dir operations (using colocated templates in each component skill).gitignore, .claudeignore, architecture overview) as write_file operationspackage_json_scripts operations{
"target_dir": "<project-root>",
"base_dir": "<plugin-root>/skills",
"variables": {
"PROJECT_NAME": "my-app",
"PROJECT_DESCRIPTION": "My application",
"PRIMARY_DOMAIN": "Task Management"
},
"operations": [
{
"type": "template_dir",
"source": "project-scaffolding/templates/project",
"dest": "."
},
{
"type": "write_file",
"path": ".gitignore",
"content": "<computed-content>",
"if_exists": "skip"
}
]
}
Component scaffolding skills are provided by the active tech pack. Invoke techpacks.routeSkills(phase: project-scaffolding) to load the tech-specific scaffolding orchestration skill. For each component type, the manifest's components.<type>.scaffolding field points to the scaffolding skill. Use techpacks.resolvePath to get absolute paths for template directories passed to the scaffolding engine.