contract-driven-delivery 1.16.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +48 -28
  3. package/assets/CODEX.template.md +4 -4
  4. package/assets/agents/backend-engineer.md +2 -2
  5. package/assets/agents/change-classifier.md +6 -5
  6. package/assets/agents/ci-cd-gatekeeper.md +1 -1
  7. package/assets/agents/contract-reviewer.md +3 -2
  8. package/assets/agents/dependency-security-reviewer.md +3 -3
  9. package/assets/agents/e2e-resilience-engineer.md +1 -1
  10. package/assets/agents/frontend-engineer.md +1 -1
  11. package/assets/agents/monkey-test-engineer.md +1 -1
  12. package/assets/agents/qa-reviewer.md +3 -2
  13. package/assets/agents/repo-context-scanner.md +3 -3
  14. package/assets/agents/spec-architect.md +1 -1
  15. package/assets/agents/spec-drift-auditor.md +3 -3
  16. package/assets/agents/stress-soak-engineer.md +1 -1
  17. package/assets/agents/test-strategist.md +1 -1
  18. package/assets/agents/ui-ux-reviewer.md +3 -3
  19. package/assets/agents/visual-reviewer.md +3 -3
  20. package/assets/skills/cdd-close/SKILL.md +9 -9
  21. package/assets/skills/cdd-new/SKILL.md +28 -28
  22. package/assets/skills/cdd-resume/SKILL.md +15 -15
  23. package/assets/skills/contract-driven-delivery/SKILL.md +6 -0
  24. package/assets/skills/contract-driven-delivery/references/agent-log-protocol.md +90 -60
  25. package/assets/skills/contract-driven-delivery/scripts/generate_change_scaffold.py +1 -1
  26. package/assets/skills/contract-driven-delivery/scripts/validate_spec_traceability.py +1 -1
  27. package/assets/skills/contract-driven-delivery/templates/agent-log.example.yml +14 -0
  28. package/assets/skills/contract-driven-delivery/templates/change-classification.md +1 -1
  29. package/assets/skills/contract-driven-delivery/templates/tasks.yml +39 -0
  30. package/assets/specs-templates/change-classification.md +1 -1
  31. package/assets/specs-templates/tasks.yml +39 -0
  32. package/dist/cli/index.js +10228 -555
  33. package/package.json +6 -2
  34. package/assets/skills/contract-driven-delivery/templates/tasks.md +0 -50
  35. package/assets/specs-templates/tasks.md +0 -54
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.1] - 2026-04-30
4
+
5
+ ### Fixed
6
+
7
+ - Clarified the agent ownership model in the public docs so read-only reviewers
8
+ and write-capable implementation agents have explicit, non-conflicting file
9
+ ownership rules.
10
+ - Aligned bundled prompts so read-only agents emit an `Agent Log` YAML block
11
+ for main Claude to persist, while write-capable agents continue writing their
12
+ own artifacts and `agent-log/*.yml` files.
13
+ - Synchronized package version metadata for the post-`2.0.0` publish path.
14
+
15
+ ## [2.0.0] - 2026-04-30
16
+
17
+ ### BREAKING: structured YAML for tasks and agent-log
18
+
19
+ - `tasks.md` is replaced by `tasks.yml`. The previous markdown-frontmatter +
20
+ checklist hybrid is gone. The new file is a single YAML document validated
21
+ by `src/schemas/tasks.schema.ts` (JSON Schema, draft-07). Task items use
22
+ `status: pending | done | skipped` instead of `[ ] / [x] / [-]` checkboxes.
23
+ - `agent-log/<agent>.md` is replaced by `agent-log/<agent>.yml`, validated by
24
+ `src/schemas/agent-log.schema.ts`. The "field: value" prose convention is
25
+ gone; agents now emit a structured YAML record with `change-id`, `agent`,
26
+ `timestamp` (ISO 8601), `status`, `files-read`, `artifacts`, and
27
+ `next-action`.
28
+ - `cdd-kit gate` parses both files with `js-yaml` and validates them with
29
+ `ajv`. Errors and warnings now reference YAML paths rather than markdown
30
+ line patterns.
31
+ - All bundled templates, skill prompts, agent prompts, and Python helper
32
+ scripts have been updated to point at the new file names.
33
+
34
+ ### Upgrading
35
+
36
+ Run `cdd-kit migrate <change-id>` (or `cdd-kit migrate --all`) to convert
37
+ existing changes:
38
+
39
+ - `tasks.md` is parsed (frontmatter + markdown checklist) and rewritten as
40
+ `tasks.yml`. The legacy `tasks.md` is deleted.
41
+ - Every `agent-log/*.md` is parsed and rewritten as `agent-log/*.yml`. The
42
+ legacy markdown logs are deleted.
43
+ - A backup of the change directory is written to
44
+ `.cdd/migrate-backup/<stamp>/<change-id>/` before any rewrite.
45
+
46
+ ### Notes
47
+
48
+ This is a breaking release; pin to `^1.16.0` if you still depend on the old
49
+ markdown formats.
50
+
3
51
  ## [1.16.0] - 2026-04-30
4
52
 
5
53
  ### Visual narration: per-agent stage badges
package/README.md CHANGED
@@ -99,10 +99,23 @@ or
99
99
  8. `cdd-kit gate <change-id>` runs automatically to confirm all artifacts are complete
100
100
  9. Claude reports a summary and the suggested git commit
101
101
 
102
+ ### Agent Ownership Model
103
+
104
+ CDD uses two agent classes on purpose:
105
+
106
+ - `change-classifier`, `contract-reviewer`, `qa-reviewer`, `visual-reviewer`, `dependency-security-reviewer`, `ui-ux-reviewer`, `repo-context-scanner`, and `spec-drift-auditor` are read-only. They return analysis, verdicts, or an `Agent Log` YAML block; main Claude writes the corresponding files.
107
+ - `backend-engineer`, `frontend-engineer`, `e2e-resilience-engineer`, `monkey-test-engineer`, `stress-soak-engineer`, `ci-cd-gatekeeper`, `test-strategist`, and `spec-architect` are write-capable. They write their own implementation artifacts and their own `agent-log/*.yml`.
108
+
109
+ This split is deliberate:
110
+
111
+ - Review and audit agents stay read-only so they do not silently change the thing they are supposed to assess.
112
+ - Implementation and planning agents write directly so large artifacts and code edits do not have to be relayed back through the main orchestrator, which reduces token waste and preserves clearer ownership.
113
+ - `tasks.yml` remains owned by main Claude so task state changes stay centralized even when multiple agents contribute files.
114
+
102
115
  **You stay in control by:**
103
116
  - Reviewing the `change-classification.md` before implementation starts
104
117
  - Checking the `test-plan.md` to confirm the right test families are planned
105
- - Reading the final `agent-log/qa-reviewer.md` for the release-readiness verdict
118
+ - Reading the final `agent-log/qa-reviewer.yml` for the release-readiness verdict
106
119
 
107
120
  ---
108
121
 
@@ -142,12 +155,12 @@ What changes are currently in progress? (cdd-kit list)
142
155
  ```
143
156
 
144
157
  **What happens:**
145
- 1. Claude reads `tasks.md` and `agent-log/` to determine what was completed
158
+ 1. Claude reads `tasks.yml` and `agent-log/` to determine what was completed
146
159
  2. Reports the current state (which agents ran, which tasks are pending)
147
160
  3. Asks if you want to continue from the next pending agent
148
161
  4. Resumes the full agent flow from where it stopped, with no duplication
149
162
 
150
- > If you're upgrading from an older version and your change was created before v1.11.0, Claude will automatically run `cdd-kit migrate <change-id>` to upgrade the format before resuming.
163
+ > If you're upgrading from an older version and your change was created before v2.0.0, Claude will automatically run `cdd-kit migrate <change-id>` to upgrade the format before resuming.
151
164
 
152
165
  ---
153
166
 
@@ -285,18 +298,18 @@ cdd-kit gate add-jwt-auth --lax
285
298
  ```
286
299
 
287
300
  Checks:
288
- - All required artifacts exist (`change-request.md`, `change-classification.md`, `test-plan.md`, `ci-gates.md`, `tasks.md`; new context-governed changes also require `context-manifest.md`)
301
+ - All required artifacts exist (`change-request.md`, `change-classification.md`, `test-plan.md`, `ci-gates.md`, `tasks.yml`; new context-governed changes also require `context-manifest.md`)
289
302
  - Each artifact has sufficient content (not a stub): change-classification ≥ 200 chars, test-plan ≥ 200, ci-gates ≥ 150, others ≥ 100
290
303
  - `change-classification.md` contains a tier or risk marker
291
- - `agent-log/*.md` files all have `status: complete` (not blocked)
292
- - For context-governed changes, `agent-log/*.md` files include a structured `- files-read:` list and those repo-relative paths are audited against `context-manifest.md` and `.cdd/context-policy.json`
304
+ - `agent-log/*.yml` files all have `status: complete` (not blocked)
305
+ - For context-governed changes, `agent-log/*.yml` files include a structured `files-read:` list and those repo-relative paths are audited against `context-manifest.md` and `.cdd/context-policy.json`
293
306
  - Atomic `depends-on` upstream changes are completed or archived before dependent work gates
294
307
  - Tier 0–1 changes have `e2e-resilience-engineer`, `monkey-test-engineer`, and `stress-soak-engineer` logs
295
308
  - Tier 0–3 changes have `contract-reviewer` and `qa-reviewer` logs
296
309
  - All contract validators pass
297
310
 
298
311
  `--strict` additionally:
299
- - Treats any pending `[ ]` tasks (except section 7 archive items) as errors
312
+ - Treats any task with `status: pending` (except IDs listed in `archive-tasks`) as an error
300
313
  - Treats runtime-vs-declared `files-read` drift as errors
301
314
  - Treats legacy changes missing `context-manifest.md` or `files-read` audit data as errors
302
315
 
@@ -309,8 +322,8 @@ Pre-commit hook uses `--strict` by default (installed via `cdd-kit install-hooks
309
322
 
310
323
  ✗ gate failed for change: feat-001
311
324
  ✗ change-classification.md: appears to be a stub (< 200 meaningful chars)
312
- ✗ Tier 1 change requires agent-log/e2e-resilience-engineer.md
313
- ✗ 1 task(s) still pending (use [-] for N/A items, [x] for done)
325
+ ✗ Tier 1 change requires agent-log/e2e-resilience-engineer.yml
326
+ ✗ 1 task(s) still pending (mark archive items in archive-tasks frontmatter; mark N/A items as status: skipped)
314
327
  ```
315
328
 
316
329
  ---
@@ -342,13 +355,13 @@ cdd-kit archive add-jwt-auth
342
355
  # ✓ Index updated: specs/archive/INDEX.md
343
356
  ```
344
357
 
345
- Warns (but does not block) if `tasks.md` has pending items or `status: gate-blocked`. Use after `/cdd-close` — the skill runs this automatically at the end.
358
+ Warns (but does not block) if `tasks.yml` has pending items or `status: gate-blocked`. Use after `/cdd-close` — the skill runs this automatically at the end.
346
359
 
347
360
  ---
348
361
 
349
362
  ### `cdd-kit abandon <change-id>`
350
363
 
351
- Marks a change as abandoned. Updates `tasks.md` status to `abandoned`, records the reason in `specs/archive/INDEX.md`. The directory stays on disk for git history.
364
+ Marks a change as abandoned. Updates `tasks.yml` status to `abandoned`, records the reason in `specs/archive/INDEX.md`. The directory stays on disk for git history.
352
365
 
353
366
  ```bash
354
367
  cdd-kit abandon add-jwt-auth --reason "using Auth0 instead"
@@ -359,7 +372,7 @@ cdd-kit abandon add-jwt-auth --reason "using Auth0 instead"
359
372
 
360
373
  ### `cdd-kit migrate <change-id> | --all`
361
374
 
362
- Upgrades pre-v1.11.0 change directories to the current format.
375
+ Upgrades pre-v2.0.0 change directories to the current format.
363
376
 
364
377
  ```bash
365
378
  cdd-kit migrate add-jwt-auth # migrate one change
@@ -369,15 +382,15 @@ cdd-kit migrate --all --enable-context-governance
369
382
  ```
370
383
 
371
384
  What it upgrades:
372
- - `tasks.md`: adds YAML frontmatter (`change-id`, `status: in-progress`) and `[x]/[-]/[ ]` legend if missing
385
+ - `tasks.yml`: converts legacy `tasks.md` checklist/frontmatter into structured YAML task records
373
386
  - `change-classification.md`: detects old `**Tier:** Tier N` format and appends the new `## Tier\n- N` section so tier-based gate checks activate
374
387
  - `context-manifest.md`: adds a legacy manifest scaffold by default so old changes can continue with warning-only context audit behavior
375
388
  - `--enable-context-governance`: explicitly adds `context-governance: v1` and a context-governed manifest scaffold, making missing manifest or malformed `files-read` data hard gate failures
376
389
 
377
- `agent-log/*.md` must use this `files-read` format for context-governed changes:
390
+ `agent-log/*.yml` must use this `files-read` format for context-governed changes:
378
391
 
379
- ```md
380
- - files-read:
392
+ ```yaml
393
+ files-read:
381
394
  - contracts/api/api-contract.md
382
395
  - src/server/routes/users.ts
383
396
  ```
@@ -415,7 +428,7 @@ cdd-kit context approve add-jwt-auth CER-001
415
428
  cdd-kit context approve add-jwt-auth --all-pending # bulk approve every pending request
416
429
  ```
417
430
 
418
- This keeps expansion history explicit while avoiding manual manifest editing. Agents still have to report `files-read` in `agent-log/*.md`; `cdd-kit gate` audits those paths against the manifest.
431
+ This keeps expansion history explicit while avoiding manual manifest editing. Agents still have to report `files-read` in `agent-log/*.yml`; `cdd-kit gate` audits those paths against the manifest.
419
432
 
420
433
  ---
421
434
 
@@ -470,7 +483,7 @@ cdd-kit new add-user-auth --skip-scan
470
483
 
471
484
  By default, `cdd-kit new` auto-runs `cdd-kit context-scan` when `specs/context/` indexes are missing or stale. Use `--skip-scan` only if you intentionally want a bare scaffold without refreshing classifier indexes first.
472
485
 
473
- For larger requests, split the work into atomic changes on the same feature branch and use `--depends-on` to record upstream order. `cdd-kit gate` blocks a dependent change until each upstream change is either archived or has `status: completed` in its `tasks.md` frontmatter.
486
+ For larger requests, split the work into atomic changes on the same feature branch and use `--depends-on` to record upstream order. `cdd-kit gate` blocks a dependent change until each upstream change is either archived or has `status: completed` in its `tasks.yml`.
474
487
 
475
488
  ---
476
489
 
@@ -559,7 +572,7 @@ git add specs/changes/
559
572
  git commit -m "chore: migrate changes to current cdd-kit format"
560
573
  ```
561
574
 
562
- This gives those legacy specs the new `tasks.md` frontmatter, tier markers, and a warning-mode `context-manifest.md` without forcing strict context governance on closed work.
575
+ This gives those legacy specs a new `tasks.yml`, tier markers, and a warning-mode `context-manifest.md` without forcing strict context governance on closed work.
563
576
 
564
577
  ### Old in-progress specs
565
578
 
@@ -606,7 +619,7 @@ your-repo/
606
619
  │ │ ├── change-classification.md (required)
607
620
  │ │ ├── test-plan.md (required)
608
621
  │ │ ├── ci-gates.md (required)
609
- │ │ ├── tasks.md (required)
622
+ │ │ ├── tasks.yml (required)
610
623
  │ │ └── agent-log/ ← machine-verifiable evidence per agent
611
624
  │ ├── archive/ ← completed and abandoned changes
612
625
  │ │ ├── INDEX.md
@@ -630,15 +643,22 @@ your-repo/
630
643
 
631
644
  ---
632
645
 
633
- ## Task notation in `tasks.md`
634
-
635
- ```markdown
636
- - [x] 1.1 Confirm classification ← done
637
- - [-] 2.2 CSS/UI contract ← N/A (not applicable to this change)
638
- - [ ] 4.1 Backend implementation ← pending
639
- ```
646
+ ## Task notation in `tasks.yml`
640
647
 
641
- `cdd-kit gate --strict` treats any `[ ]` (except section 7 archive tasks) as an error. Use `[-]` for items that are genuinely not applicable to a given change.
648
+ ```yaml
649
+ tasks:
650
+ - id: "1.1"
651
+ title: Confirm classification
652
+ status: done
653
+ - id: "2.2"
654
+ title: CSS/UI contract
655
+ status: skipped
656
+ - id: "4.1"
657
+ title: Backend implementation
658
+ status: pending
659
+ ```
660
+
661
+ `cdd-kit gate --strict` treats any task with `status: pending` (except IDs listed in `archive-tasks`, which default to `7.1` and `7.2`) as an error. Use `status: skipped` for tasks that are genuinely not applicable to a given change.
642
662
 
643
663
  ---
644
664
 
@@ -18,12 +18,12 @@ Read `specs/changes/<change-id>/context-manifest.md` before using file-reading o
18
18
  - Read only paths allowed by the manifest or approved expansions.
19
19
  - Do not use broad repository search unless the manifest authorizes it.
20
20
  - If more context is needed, stop and write a Context Expansion Request in the manifest.
21
- - Record every file read through tools in the relevant `agent-log/*.md` under `- files-read:`.
21
+ - Record every file read through tools in the relevant `agent-log/*.yml` under `files-read:`.
22
22
 
23
- Required `agent-log/*.md` format:
23
+ Required `agent-log/*.yml` format:
24
24
 
25
- ```md
26
- - files-read:
25
+ ```yaml
26
+ files-read:
27
27
  - contracts/api/api-contract.md
28
28
  - src/server/routes/users.ts
29
29
  ```
@@ -17,7 +17,7 @@ Before editing production code, read the change artifacts, API/env/data/business
17
17
  - Validate input at the boundary.
18
18
  - Return standardized errors, not raw exceptions.
19
19
  - Preserve backward compatibility unless the spec explicitly marks a breaking change.
20
- - **TDD**: Read `specs/changes/<id>/test-plan.md` first. Write failing unit, contract, and integration tests BEFORE writing feature code. Tests in `tasks.md` items 3.1–3.2 are your responsibility.
20
+ - **TDD**: Read `specs/changes/<id>/test-plan.md` first. Write failing unit, contract, and integration tests BEFORE writing feature code. Tests in `tasks.yml` items 3.1–3.2 are your responsibility.
21
21
  - Update CI/CD workflows when required by `ci-gates.md`.
22
22
 
23
23
  ## Common pitfalls
@@ -48,7 +48,7 @@ In your agent log, reference file paths and function names — do not paste code
48
48
  ## Machine-Verifiable Evidence
49
49
 
50
50
  After completing your task, write or append to
51
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
51
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
52
52
  field rules, and gate-enforcement behavior are defined once in
53
53
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
54
54
 
@@ -47,7 +47,7 @@ Before producing a single classification, check these triggers:
47
47
  export).
48
48
  - **Contract-heavy**: ≥ 5 of the 6 contracts (api / css / env / data /
49
49
  business / ci) need changes.
50
- - **Task-heavy**: estimated > 10 task-IDs across sections 3-4 of `tasks.md`.
50
+ - **Task-heavy**: estimated > 10 task-IDs across sections 3-4 of `tasks.yml`.
51
51
 
52
52
  If **any one trigger fires**, output `## Atomic Split Proposal` INSTEAD of the
53
53
  normal classification, in this exact shape:
@@ -140,7 +140,7 @@ Use this structure:
140
140
  ## Required Artifacts
141
141
 
142
142
  The following 5 artifacts are always required for implementation changes:
143
- `change-request.md`, `change-classification.md`, `test-plan.md`, `ci-gates.md`, `tasks.md`
143
+ `change-request.md`, `change-classification.md`, `test-plan.md`, `ci-gates.md`, `tasks.yml`
144
144
 
145
145
  ## Optional Artifacts (default: no — set yes only with explicit reason)
146
146
 
@@ -216,7 +216,7 @@ Note: `archive.md` is created during change close-out, not at classification tim
216
216
  - AC-3:
217
217
 
218
218
  ## Tasks Not Applicable
219
- (List task IDs from tasks.md that are NOT applicable to this change, using the format `2.2, 2.3, 4.2`. Main Claude will mark these as [-] in tasks.md.)
219
+ (List task IDs from tasks.yml that are NOT applicable to this change, using the format `2.2, 2.3, 4.2`. Main Claude will mark these as `status: skipped` in tasks.yml.)
220
220
  - not-applicable:
221
221
 
222
222
  ## Clarifications or Assumptions
@@ -225,8 +225,9 @@ Note: `archive.md` is created during change close-out, not at classification tim
225
225
 
226
226
  ## Machine-Verifiable Evidence
227
227
 
228
- After completing your task, write or append to
229
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
228
+ After completing your task, end your response with an `Agent Log` YAML block
229
+ for main Claude to write to
230
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
230
231
  field rules, and gate-enforcement behavior are defined once in
231
232
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
232
233
 
@@ -65,7 +65,7 @@ mergeable / blocked / informational-risk
65
65
  ## Machine-Verifiable Evidence
66
66
 
67
67
  After completing your task, write or append to
68
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
68
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
69
69
  field rules, and gate-enforcement behavior are defined once in
70
70
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
71
71
 
@@ -63,8 +63,9 @@ approved / changes-required
63
63
 
64
64
  ## Machine-Verifiable Evidence
65
65
 
66
- After completing your task, write or append to
67
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
66
+ After completing your task, end your response with an `Agent Log` YAML block
67
+ for main Claude to write to
68
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
68
69
  field rules, and gate-enforcement behavior are defined once in
69
70
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
70
71
 
@@ -64,8 +64,9 @@ approved / changes-required / blocked
64
64
 
65
65
  ## Machine-Verifiable Evidence
66
66
 
67
- After completing your task, write or append to
68
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
67
+ After completing your task, end your response with an `Agent Log` YAML block
68
+ for main Claude to write to
69
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
69
70
  field rules, and gate-enforcement behavior are defined once in
70
71
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
71
72
 
@@ -74,4 +75,3 @@ field rules, and gate-enforcement behavior are defined once in
74
75
  - `cve-findings`: count + severity buckets
75
76
  - `license-issues`: list or "none"
76
77
  - `lockfile-changes`: list of files
77
-
@@ -42,7 +42,7 @@ Record test files, scenarios, fixtures/mocks, commands, screenshots/videos, and
42
42
  ## Machine-Verifiable Evidence
43
43
 
44
44
  After completing your task, write or append to
45
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
45
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
46
46
  field rules, and gate-enforcement behavior are defined once in
47
47
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
48
48
 
@@ -46,7 +46,7 @@ In your agent log, reference file paths and function names — do not paste code
46
46
  ## Machine-Verifiable Evidence
47
47
 
48
48
  After completing your task, write or append to
49
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
49
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
50
50
  field rules, and gate-enforcement behavior are defined once in
51
51
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
52
52
 
@@ -45,7 +45,7 @@ Use fuzz payloads, Playwright action sequences, property-based tests, and target
45
45
  ## Machine-Verifiable Evidence
46
46
 
47
47
  After completing your task, write or append to
48
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
48
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
49
49
  field rules, and gate-enforcement behavior are defined once in
50
50
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
51
51
 
@@ -75,8 +75,9 @@ approved / blocked / approved-with-risk
75
75
 
76
76
  ## Machine-Verifiable Evidence
77
77
 
78
- After completing your task, write or append to
79
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
78
+ After completing your task, end your response with an `Agent Log` YAML block
79
+ for main Claude to write to
80
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
80
81
  field rules, and gate-enforcement behavior are defined once in
81
82
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
82
83
 
@@ -84,8 +84,9 @@ frontend / backend / fullstack / monorepo / library / tool
84
84
 
85
85
  ## Machine-Verifiable Evidence
86
86
 
87
- After completing your task, write or append to
88
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
87
+ After completing your task, end your response with an `Agent Log` YAML block
88
+ for main Claude to write to
89
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
89
90
  field rules, and gate-enforcement behavior are defined once in
90
91
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
91
92
 
@@ -93,4 +94,3 @@ field rules, and gate-enforcement behavior are defined once in
93
94
  - `profile-path`: `project-profile.generated.md`
94
95
  - `stack-detected`: from cdd-kit detect-stack
95
96
  - `surfaces-flagged`: list of missing standardization surfaces
96
-
@@ -94,7 +94,7 @@ Target: `design.md` ≤ 150 lines.
94
94
  ## Machine-Verifiable Evidence
95
95
 
96
96
  After completing your task, write or append to
97
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
97
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
98
98
  field rules, and gate-enforcement behavior are defined once in
99
99
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
100
100
 
@@ -52,8 +52,9 @@ By default, do NOT read `specs/changes/` history. Only read historical change re
52
52
 
53
53
  ## Machine-Verifiable Evidence
54
54
 
55
- After completing your task, write or append to
56
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
55
+ After completing your task, end your response with an `Agent Log` YAML block
56
+ for main Claude to write to
57
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
57
58
  field rules, and gate-enforcement behavior are defined once in
58
59
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
59
60
 
@@ -62,4 +63,3 @@ field rules, and gate-enforcement behavior are defined once in
62
63
  - `drift-items`: count + severity
63
64
  - `drift-summary-path`: `specs/audits/<YYYY-MM-DD>-drift-audit.md`
64
65
  - `next-audit-due`: ISO date
65
-
@@ -69,7 +69,7 @@ Use realistic load profiles rather than arbitrary request loops.
69
69
  ## Machine-Verifiable Evidence
70
70
 
71
71
  After completing your task, write or append to
72
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
72
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
73
73
  field rules, and gate-enforcement behavior are defined once in
74
74
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
75
75
 
@@ -73,7 +73,7 @@ Target: `test-plan.md` ≤ 100 lines.
73
73
  ## Machine-Verifiable Evidence
74
74
 
75
75
  After completing your task, write or append to
76
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
76
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
77
77
  field rules, and gate-enforcement behavior are defined once in
78
78
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
79
79
 
@@ -51,8 +51,9 @@ approved / changes-required
51
51
 
52
52
  ## Machine-Verifiable Evidence
53
53
 
54
- After completing your task, write or append to
55
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
54
+ After completing your task, end your response with an `Agent Log` YAML block
55
+ for main Claude to write to
56
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
56
57
  field rules, and gate-enforcement behavior are defined once in
57
58
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
58
59
 
@@ -61,4 +62,3 @@ field rules, and gate-enforcement behavior are defined once in
61
62
  - `state-coverage`: list of `<screen>: empty/loading/error/success` matrix
62
63
  - `copy-issues`: count + severity
63
64
  - `accessibility-findings`: count + severity
64
-
@@ -53,8 +53,9 @@ approved / changes-required
53
53
 
54
54
  ## Machine-Verifiable Evidence
55
55
 
56
- After completing your task, write or append to
57
- `specs/changes/<change-id>/agent-log/<your-agent-name>.md`. Required fields,
56
+ After completing your task, end your response with an `Agent Log` YAML block
57
+ for main Claude to write to
58
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
58
59
  field rules, and gate-enforcement behavior are defined once in
59
60
  `references/agent-log-protocol.md` — do not duplicate them in this prompt.
60
61
 
@@ -63,4 +64,3 @@ field rules, and gate-enforcement behavior are defined once in
63
64
  - `diff-percentage`: per-screen
64
65
  - `state-coverage`: matrix
65
66
  - `tokens-violated`: list of CSS contract violations or "none"
66
-
@@ -38,7 +38,7 @@ If the user wants to **abandon** this change (not close as complete):
38
38
  cdd-kit abandon <change-id> --reason "<reason>"
39
39
  ```
40
40
 
41
- This marks `tasks.md` as `status: abandoned` and records it in `specs/archive/INDEX.md`. The directory is preserved for git history. Do NOT run the rest of this skill after abandoning.
41
+ This marks `tasks.yml` as `status: abandoned` and records it in `specs/archive/INDEX.md`. The directory is preserved for git history. Do NOT run the rest of this skill after abandoning.
42
42
 
43
43
  ---
44
44
 
@@ -48,13 +48,13 @@ Run: `cdd-kit gate <change-id>`
48
48
 
49
49
  If gate fails: stop and report failures. Do NOT archive a change that hasn't passed gate.
50
50
 
51
- Exception: if `tasks.md` contains `status: gate-blocked`, ask the user: "This change was gate-blocked. Abandon it? (yes/no)". If yes, run `cdd-kit abandon <change-id> --reason "gate-blocked after 3 attempts"` and stop.
51
+ Exception: if `tasks.yml` contains `status: gate-blocked`, ask the user: "This change was gate-blocked. Abandon it? (yes/no)". If yes, run `cdd-kit abandon <change-id> --reason "gate-blocked after 3 attempts"` and stop.
52
52
 
53
53
  ---
54
54
 
55
- ## Step 2: Review tasks.md section 7
55
+ ## Step 2: Review tasks.yml section 7
56
56
 
57
- Read `specs/changes/<change-id>/tasks.md`.
57
+ Read `specs/changes/<change-id>/tasks.yml`.
58
58
 
59
59
  Check section 7:
60
60
  - `7.1 Archive change` — will be ticked after Step 4
@@ -71,7 +71,7 @@ Read only active evidence for this change:
71
71
  - `specs/changes/<change-id>/qa-report.md` (if exists)
72
72
  - `specs/changes/<change-id>/ci-gates.md`
73
73
  - `specs/changes/<change-id>/context-manifest.md`
74
- - `specs/changes/<change-id>/tasks.md`
74
+ - `specs/changes/<change-id>/tasks.yml`
75
75
 
76
76
  Do not read `specs/archive/` while closing a change. Historical archives are cold data and must not be used as current requirements.
77
77
 
@@ -110,9 +110,9 @@ After contract-reviewer responds:
110
110
  3. Run `cdd-kit validate --contracts` to confirm contract format is preserved
111
111
  4. Run `cdd-kit context-scan` so future classifiers see updated hot context indexes
112
112
  5. Fill in `## Lessons Promoted to Standards` in archive.md with what was promoted, where, and evidence path
113
- 6. Tick `7.2` in tasks.md
113
+ 6. Set task `7.2` to `status: done` in tasks.yml
114
114
 
115
- If there are no lessons to promote, mark `[-]` for 7.2 with rationale.
115
+ If there are no lessons to promote, mark `7.2` as `status: skipped` with rationale.
116
116
 
117
117
  ---
118
118
 
@@ -120,8 +120,8 @@ If there are no lessons to promote, mark `[-]` for 7.2 with rationale.
120
120
 
121
121
  Run: `cdd-kit archive <change-id>`
122
122
 
123
- If successful, tick `7.1` in tasks.md (the file is now in specs/archive/, update it there):
124
- `specs/archive/<year>/<change-id>/tasks.md` — change `7.1` from `[ ]` to `[x]`.
123
+ If successful, set task `7.1` to `status: done` in tasks.yml (the file is now in specs/archive/, update it there):
124
+ `specs/archive/<year>/<change-id>/tasks.yml` — change `7.1` from `status: pending` to `status: done`.
125
125
 
126
126
  ---
127
127