SDD cheat sheet
- Paths
config.ymlstyle.yml- Rules
- Shipped styles
style.ymlerrors- Override one prompt
- Eject a built-in style
- Requires
Paths
| Specs | .local-workflows/specs/<spec>/ |
| Config | .local-workflows/config.yml |
| Styles, workspace | <repo>/.local-workflows/styles/<id>/ |
| Styles, profile | ~/.local-workflows/styles/<id>/ |
| Styles, builtin | ships with the extension |
Precedence: workspace > profile > builtin. Definition comes from the
highest scope with a style.yml; prompts come from every scope with that
id.
config.yml
Full page: config.yml.
| Key | Values | Default |
|---|---|---|
style |
kiro, spec-kit, custom id |
kiro |
specRoot |
path, repo-relative — absolute or .. is an error |
.local-workflows/specs — ignored when a .code-workspace is open |
source |
manual | ado | gh |
unset — asked each time |
checkpoints |
required | optional | none |
required |
ai.uses |
plugin ref | ai@1 |
ai.provider |
agent runtime | ghcp |
ai.model |
model name | auto |
auto |
ai.stages.<id> |
per-phase override, merged per setting | — |
# yaml-language-server: $schema=https://local-workflows/schemas/sdd-config.schema.json
style.yml
| Key | Value |
|---|---|
schema |
1 |
id |
must equal the folder name |
name |
shown in the picker |
desc |
one line |
intake.prompt |
path |
intake.produces |
filename |
specTypes[] |
{ id, label, stages[] } |
intro |
path — sent to every phase |
format.grammar |
path — sent to every phase |
format.house.<stage> |
path — sent to that stage only |
stages[] |
below |
Stage keys
| Key | Value |
|---|---|
id |
referenced from specTypes[].stages |
kind |
ai — runs it and waitsimplement — starts the session, does not wait |
produces[] |
artifacts that must all exist to satisfy the stage. Required on ai, optional on implement |
mayProduce[] |
optional artifacts; never blocks |
gate |
manual |
prompt |
path |
No requires: key exists.
# yaml-language-server: $schema=https://local-workflows/schemas/sdd-style.schema.json
Rules
- A stage is satisfied when its artifacts exist.
- A stage with no artifact is never satisfied.
- Terminal =
kind: implementwith an emptyproduces. A terminal stage must be the last one a spec type visits. gate: manualparks the walk. It is the only gate; omit the key otherwise.- A stage’s args are the prior stages’ artifacts for that spec type.
## Open Questionsblocks the next phase while it holds questions.- Starting the next phase is the approval. No Approve button.
- Each phase is a fresh session seeded only by prior documents.
Shipped styles
| Kiro | Spec Kit | |
|---|---|---|
| Stages | requirements design tasks implement |
specify plan tasks implement |
| Spec types | Feature: all Bug fix: skips design |
Feature only |
| Intake writes | requirements.md |
spec.md |
mayProduce |
— | research.md data-model.md quickstart.md contracts |
| Task ids | 1, 1.1 + dependency graph |
T001 flat, [P] = parallel |
| Absent commands | — | /clarify, /analyze |
style.yml errors
Every one is refused at load, not mid-run.
| Cause | |
|---|---|
id not equal to the folder name |
|
schema: missing, not a whole number, or newer than the build |
|
stages: empty, or a duplicated stage id |
|
kind: ai with no produces |
it could never complete |
An artifact in both produces and mayProduce |
it is required or it is not |
kind: other than ai / implement |
|
gate: other than manual |
|
specTypes: empty, or a duplicated spec type id |
|
| A spec type listing no stages | |
| A spec type naming a stage the style does not define | |
| A spec type visiting the same stage twice | it is satisfied, so it cannot run again |
| Any stage listed after a terminal stage | the walk would stop and never reach it |
Override one prompt
.local-workflows/styles/kiro/prompts/design.md
No style.yml alongside it.
Eject a built-in style
Local Workflows: Eject Style — copies a built-in, byte for byte, to the scope you pick.
| Target | user profile (default) or workspace |
| Collisions | listed, overwritten only on explicit confirm |
| The trade | an ejected copy stops receiving built-in improvements |
| Revert | delete files — each one falls back to the built-in |
Requires
Copilot sign-in. ai@1 on its default ghcp provider runs the document
phases; implement launches Copilot Chat.