[!NOTE] This is an internal skill. It is invoked automatically by other SDD skills as part of their workflows. Do not invoke it directly.
This skill specification defines how to create and maintain the SDD tracker file at {ARTIFACT_MAIN_FOLDER}/sdd-tracker.yml. All SDD skills that produce or modify artifacts must follow these rules.
Tracker file
Location: {ARTIFACT_MAIN_FOLDER}/sdd-tracker.yml
Purpose: Single source of truth for the status and history of all SDD artifacts across the project lifecycle.
Template: assets/sdd-tracker.yml
Create if missing
Before any update, check if {ARTIFACT_MAIN_FOLDER}/sdd-tracker.yml exists.
If it does not exist:
- Read
assets/sdd-tracker.ymlto get the base structure. - Set
project.namefrom the project context (README, package.json, or project folder name). - Set
project.created= today's date (YYYY-MM-DD). - Set
project.lastUpdate= today's date. - Write the initialized file to
{ARTIFACT_MAIN_FOLDER}/sdd-tracker.yml.
Shared artifact update
Used by: sdd-prd, sdd-arch, sdd-ux
Update the relevant key under shared:
| Field | Rule |
|---|---|
created |
Set to today only if the field is currently ~ or absent (first-time creation of that artifact) |
lastUpdate |
Always set to today's date |
changelog |
Append { date: <today>, note: "<one-line summary>" } |
For shared.ux, there are two independent sub-artifacts — ux and prototype. Update only the one(s) that were actually written in this operation.
Always also set project.lastUpdate = today.
Change entry management
Used by: sdd-propose, sdd-implement, sdd-archive
Adding a new change (sdd-propose)
Append to the changes array:
- id: "<change-name>" # kebab-case folder name
title: "<human-readable title>"
status: ready-for-dev
created: "<YYYY-MM-DD>"
lastUpdate: "<YYYY-MM-DD>"
artifacts:
proposal: { created: "<YYYY-MM-DD>", lastUpdate: "<YYYY-MM-DD>" }
design: { created: "<YYYY-MM-DD>", lastUpdate: "<YYYY-MM-DD>" }
tasks: { created: "<YYYY-MM-DD>", lastUpdate: "<YYYY-MM-DD>" }
changelog:
- date: "<YYYY-MM-DD>"
note: "Change created"
Include under artifacts only the files that were actually created. spec entries are optional — add them if capability specs were generated.
Updating an existing change (sdd-implement, sdd-archive)
Find the entry in changes where id matches the change name, then apply:
| Trigger | status |
lastUpdate |
Changelog note |
|---|---|---|---|
sdd-implement begins first task |
in-progress |
today | "Implementation started" |
sdd-implement completes all tasks |
done |
today | "Implementation complete" |
sdd-verify — all checks pass (no CRITICAL issues) |
verified |
today | "Verification passed" |
sdd-archive |
archived |
today | "Archived to <archive-path>" |
Always also set project.lastUpdate = today.
Allowed status values (changes only)
ready-for-dev → in-progress → done → verified → archived
Note:
verifiedis set only whensdd-verifyreports no CRITICAL issues.sdd-archiverequires statusverified— it will not proceed if the status is anything else.
Guardrails
{SKILL_ASSETS_NOTICE}