SpecKit for Projects is a lightweight CLI plus scaffold bundle for design-driven development in SI-style projects. It keeps the executable surface area small and moves most document generation into AI workflows backed by repository-managed prompts, skills, and templates.
https://github.com/yatarousan0227/vibe-todo
Many teams want design artifacts to be regenerable, reviewable, and consistent across features, but they do not want a large framework or a document generator that owns too much of the process.
SpecKit for Projects focuses on a narrower role:
- initialize a repository with the required scaffold
- install agent-facing prompts or skills for the AI tool you use
- validate that the repository still has the files needed for the workflow
It does not try to replace the actual design work. The brief, clarify, common_design, specific_design, tasks, and implement steps are driven by the prompts and skills that sdd init installs.
The workflow separates design truth into three layers:
project: repository-wide standards and shared constraintscommon_design: shared API, data, module, and UI truth reused by multiple featuresspecific_design: feature-specific design derived from one brief
The relationship between those design artifacts looks like this:
flowchart TD
A[project] --> B[common_design]
A --> C[specific_design: feature A]
B --> C
A --> D[specific_design: feature B]
B --> D
C --> E[tasks.md]
D --> F[tasks.md]
That split is the main guardrail. Shared truth lives once, and feature bundles reference it instead of copying it.
The CLI currently exposes three commands:
sdd initsdd checksdd analyze
The rest of the workflow is executed through the installed agent prompts and skills:
sdd.briefsdd.clarifysdd.analyzesdd.common-designsdd.designsdd.debugsdd.taskssdd.implementsdd.reflect
Responsibility split:
sdd check: validate scaffold, directory layout, agent command files, and runtime availabilitysdd.clarify: tighten ambiguous requirements and shared design assumptions before design startssdd analyze: validate one or more generatedspecific_designbundles and report consistency issuessdd.debug: fix a bug and synchronize impacted design artifacts and execution ledgerssdd.reflect: reconcile design and task documents to the current working tree diff
SpecKit for Projects requires Python 3.12 or later. uv is the recommended workflow.
The distribution package name is speckit-for-projects. The CLI remains sdd, and the
internal Python module path is speckit_for_projects.
The package name is reserved in project metadata, but this project is not yet published to a package index. For now, install and run it from a local checkout.
Run from source without installing globally:
uv sync --dev
uv run sdd --helpInstall the local checkout as a CLI tool:
uv tool install --editable .
sdd --helpAfter the package is published to a package index, install by name:
uv tool install speckit-for-projects
sdd --helpIf you want to validate the example Storybook bundles, Node.js and npm are also required.
Initialize the current repository for Codex:
sdd init --here --ai codex --ai-skills
sdd check --ai codexInitialize a new directory:
sdd init my-project --ai claudeInitialize an API-only project:
sdd init --here --capabilities apiInitialize for a generic agent with a custom prompt directory:
sdd init --here --ai generic --ai-commands-dir .myagent/commands
sdd check --ai generic --ai-commands-dir .myagent/commandsAfter generating designs/specific_design/<design-id>/tasks.md, re-check the bundle:
sdd analyze <design-id>sdd init prepares a repository with:
.specify/project/*.mdfor project-wide standards.specify/project/scope.yamlfor managed project capabilities.specify/glossary.md.specify/conventions/README.md.specify/templates/commands/*.mdfor agent workflows.specify/templates/artifacts/for scaffolded deliverablesbriefs/designs/common_design/designs/specific_design/
Capability-specific additions:
ui:designs/common_design/ui/,ui-fields.yaml, andui-storybook/scaffoldsapi:designs/common_design/api/and API shared-design scaffoldbatch:batch-design.mdscaffold
Control that with --capabilities <csv>. The current supported values are ui, api, and batch. When omitted, sdd init keeps the legacy full scaffold and behaves as if --capabilities ui,api,batch was used.
Optional with --project-design-system:
.specify/project/design-system.md.specify/project/ui-storybook/
Typical outputs later created through the workflow:
briefs/<brief-id>.mddesigns/common_design/data|module/*.mddesigns/common_design/api/*.mdwhen the project hasapidesigns/common_design/ui/*.mdwhen the project hasuidesigns/common_design/tasks.mddesigns/specific_design/<design-id>/overview.mddesigns/specific_design/<design-id>/common-design-refs.yamldesigns/specific_design/<design-id>/traceability.yamldesigns/specific_design/<design-id>/tasks.md
- Run
sdd init. - Run
sdd check. - Fill
.specify/project/*.mdand.specify/glossary.md. - Generate one brief with
sdd.brief. - If the brief is still ambiguous, run
sdd.clarifybefore design starts. - Generate shared design only when multiple features depend on the same truth.
- Generate one
specific_designbundle from one brief. - Generate
tasks.mdfor eithercommon_designor onespecific_designbundle. - Run
sdd analyze <design-id>orsdd analyze --all. - Use
sdd.implementfor planned task execution. - Use
sdd.debugfor defect-driven fixes that also need design/task synchronization. - Use
sdd.reflectafter manual code edits when the current diff is the source of truth. - Review the resulting diff.
sdd init writes managed scaffold files only once by default.
- existing managed files are kept on re-run
- existing agent command files are kept on re-run
- existing skills are kept on re-run
--forceoverwrites all of the above
The managed scope is stored in .specify/project/scope.yaml. sdd check uses that file to decide which capability-specific scaffold paths are required.
If the target directory does not already contain .git, sdd init also tries to run git init unless --no-git is specified.
sdd check validates:
- the shared scaffold under
.specify/ - required directories under
briefs/anddesigns/ - agent-specific command files when
--aiis specified - required local CLI runtime availability as a warning for agents that need one
Exit codes:
0: no warnings or failures1: warnings only2: one or more failures
sdd analyze validates generated bundle consistency under designs/specific_design/.
sdd analyze <design-id>: analyze one bundle by IDsdd analyze designs/specific_design/<design-id>: analyze one bundle by pathsdd analyze --all: analyze every bundle underdesigns/specific_design/
It checks:
- required files inside the bundle, based on
.specify/project/scope.yaml traceability.yamlstructure and referencestasks.mdrequirement coveragecommon-design-refs.yamlstructure and resolvability- brief-to-bundle requirement and shared design alignment when the matching brief exists
Exit codes:
0: all analyzed bundles are valid2: one or more analyzed bundles have issues, or the input is invalid
.specify/
├── glossary.md
├── conventions/
├── project/
│ ├── tech-stack.md
│ ├── domain-map.md
│ ├── coding-rules.md
│ └── architecture-principles.md
└── templates/
├── commands/
│ ├── analyze.md
│ ├── brief.md
│ ├── clarify.md
│ ├── common-design.md
│ ├── design.md
│ ├── debug.md
│ ├── tasks.md
│ ├── implement.md
│ └── reflect.md
└── artifacts/
├── brief.md
├── common_design/
└── design/
briefs/
designs/
├── common_design/
│ ├── api/
│ ├── data/
│ ├── module/
│ └── ui/
└── specific_design/
└── 001-example/
The package source of truth and the repository's working files are not the same thing.
src/speckit_for_projects/: CLI implementation and validation logicsrc/speckit_for_projects/templates/: Jinja source templates used bysdd initguides/: end-user documentation for operating the workflowdocs/: maintainer and implementation notes for this repository itselfexamples/: sample outputs and project-standard examplestests/: unit, integration, golden, and end-to-end coverage.specify/: this repository's own initialized scaffold used for dogfooding.codex/and.myagent/: locally generated agent prompt outputs in this repository
Important detail: checked-in skills are not the source of truth. Skills are generated from the shared command templates under .specify/templates/commands/ or, if needed, directly from src/speckit_for_projects/templates/commands/*.j2.
Also note that some templates exist in src/speckit_for_projects/templates/ but are not currently installed by sdd init. In the current implementation that includes:
- legacy specific-design templates such as
api-design.md.j2,data-design.md.j2, andmodule-design.md.j2
Project-level design system templates are available through sdd init --project-design-system.
The legacy specific-design templates listed above exist in the source tree, but they are not part of the managed scaffold written by the current CLI.
- examples/README.md
- guides/manual.ja.md
- guides/tutorial.ja.md
- guides/cli-reference.ja.md
- guides/workflow-reference.ja.md
- guides/artifact-reference.ja.md
- guides/troubleshooting.ja.md
Current supported --ai values are:
agyampauggiebobclaudecodebuddycodexcopilotcursor-agentgeminigenerickilocodekiro-cliopencodeqodercliqwenrooshaivibewindsurf
Alias:
kiroresolves tokiro-cli
Typical command output locations:
codex:.codex/prompts/claude:.claude/commands/gemini:.gemini/commands/copilot:.github/agents/cursor-agent:.cursor/commands/kiro-cli:.kiro/prompts/generic: the path passed to--ai-commands-dir
Skill output locations:
codex:.agents/skills/- most other named agents:
<agent-folder>/skills/
Codex note:
.codex/prompts/*.mdare saved prompts, not registered slash commands--ai-skillsadds Codex-discoverable skills under.agents/skills/
Skill implementation note:
- there is no separate per-skill source tree in
src/ - generated
SKILL.mdfiles are wrapped from the shared command templates
Recommended local checks:
uv run pytest
uv run ruff check .
uv run mypy srcExample Storybook bundles can be verified with:
cd examples/screen-centric/designs/specific_design/001-screened-application-portal/ui-storybook
npm install
npm run build-storybook