contract-driven-delivery 2.0.16 → 2.0.17

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 (28) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +69 -81
  3. package/assets/CLAUDE.template.md +3 -3
  4. package/assets/CODEX.template.md +5 -5
  5. package/assets/agents/backend-engineer.md +29 -31
  6. package/assets/agents/change-classifier.md +28 -33
  7. package/assets/agents/ci-cd-gatekeeper.md +21 -25
  8. package/assets/agents/contract-reviewer.md +21 -26
  9. package/assets/agents/dependency-security-reviewer.md +21 -26
  10. package/assets/agents/e2e-resilience-engineer.md +19 -23
  11. package/assets/agents/frontend-engineer.md +29 -31
  12. package/assets/agents/monkey-test-engineer.md +19 -23
  13. package/assets/agents/qa-reviewer.md +20 -25
  14. package/assets/agents/repo-context-scanner.md +17 -22
  15. package/assets/agents/spec-architect.md +17 -21
  16. package/assets/agents/spec-drift-auditor.md +17 -22
  17. package/assets/agents/stress-soak-engineer.md +17 -21
  18. package/assets/agents/test-strategist.md +24 -28
  19. package/assets/agents/ui-ux-reviewer.md +16 -21
  20. package/assets/agents/visual-reviewer.md +19 -24
  21. package/assets/skills/cdd-new/SKILL.md +112 -119
  22. package/assets/skills/contract-driven-delivery/SKILL.md +3 -3
  23. package/assets/skills/contract-driven-delivery/references/agent-log-protocol.md +68 -157
  24. package/assets/skills/contract-driven-delivery/references/code-map-protocol.md +57 -35
  25. package/assets/skills/contract-driven-delivery/templates/agent-log.example.yml +6 -0
  26. package/assets/skills/contract-driven-delivery/templates/change-classification.md +2 -2
  27. package/dist/cli/index.js +2353 -2134
  28. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: monkey-test-engineer
3
3
  description: Design preventive specs and structured exploratory tests for invalid user operations, adversarial inputs, malformed data, rapid UI actions, and production misuse. Not random fuzzing -- every monkey scenario is mapped to a known failure mode or hardening goal.
4
4
  tools: Read, Grep, Glob, Edit, MultiEdit, Bash
@@ -37,51 +37,47 @@ change's scope; keep new or regressed failures blocking.
37
37
 
38
38
  ## Tools
39
39
 
40
- - Property-based fast-check (JS/TS), hypothesis (Python), proptest (Rust) for state machine invariants.
41
- - Action sequences Playwright `page.evaluate` + Faker for high-rate input loops; mark these tests as Tier 2 informational unless deterministic.
42
- - Adversarial corpora common boundaries (empty, max-int, NaN, Unicode RTL, Zero-Width Joiner, surrogate pairs, BOM); SQL/JS injection strings.
43
- - Determinism every monkey test must seed its randomness; record the seed on failure for replay.
40
+ - Property-based ??fast-check (JS/TS), hypothesis (Python), proptest (Rust) for state machine invariants.
41
+ - Action sequences ??Playwright `page.evaluate` + Faker for high-rate input loops; mark these tests as Tier 2 informational unless deterministic.
42
+ - Adversarial corpora ??common boundaries (empty, max-int, NaN, Unicode RTL, Zero-Width Joiner, surrogate pairs, BOM); SQL/JS injection strings.
43
+ - Determinism ??every monkey test must seed its randomness; record the seed on failure for replay.
44
44
 
45
45
  ## Read scope
46
46
 
47
- Source of truth: `specs/changes/<change-id>/context-manifest.md` `## Allowed Paths`.
48
- Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. `cdd-kit gate` validates `files-read:` against this list and rejects unauthorized paths.
47
+ Source of truth: `specs/changes/<change-id>/context-manifest.md` ??`## Allowed Paths`.
48
+ Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. Use this boundary as pre-read discipline, not as post-run paperwork.
49
49
 
50
50
  Need a path not listed? File a `## Context Expansion Requests` entry (see `specs/templates/context-manifest.md`) with `status: pending` and stop until the user approves via `cdd-kit context approve <change-id> <CER-id>`.
51
51
 
52
52
  Forbidden by default (enforced by `.cdd/context-policy.json`): `specs/archive/`, sibling `specs/changes/*`, `assets/`, `node_modules/`, `dist/`, `build/`, `.git/`, `.claude/worktrees/`.
53
53
 
54
- ## Machine-Verifiable Evidence
54
+ ## Optional Handoff Evidence
55
55
 
56
- After completing your task, write or append to
57
- `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
58
- field rules, and gate-enforcement behavior are defined once in
59
- `references/agent-log-protocol.md` do not duplicate them in this prompt.
56
+ If a short handoff note is useful, write or append to
57
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
58
+ and field rules are defined once in
59
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
60
60
 
61
- ### Required artifacts for this agent
61
+ ### Suggested artifacts for this agent
62
62
 
63
63
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
64
64
  (see `references/agent-log-protocol.md` for the full schema and self-validation
65
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
66
- those are `type` values, not log keys.
65
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
67
66
 
68
- Minimum required `type` values for this agent (each must appear at least once
69
- in your `artifacts:` array; add more items per type as needed):
67
+ Recommended `type` values for this agent when you emit an optional agent log:
70
68
 
71
69
  - `test-files`: monkey/exploratory test files written
72
- - `failure-modes-mapped`: list of `<input> → <expected hardening>`
70
+ - `failure-modes-mapped`: list of `<input> ??<expected hardening>`
73
71
  - `seeds-recorded`: deterministic seeds used per scenario
74
72
 
75
- Copy this exact shape into your agent log; replace each `<pointer>` with a
73
+ If you emit a log, copy this shape and replace each `<pointer>` with a
76
74
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
77
75
 
78
76
  ```yaml
79
77
  artifacts:
80
78
  - { type: test-files, pointer: "tests/monkey/double-submit.test.ts" }
81
- - { type: failure-modes-mapped, pointer: "double-submit debounced; only one POST" }
79
+ - { type: failure-modes-mapped, pointer: "double-submit ??debounced; only one POST" }
82
80
  - { type: seeds-recorded, pointer: "double-submit: seed-9173" }
83
81
  ```
84
82
 
85
- If a required `type` does not apply to your run, emit one item with
86
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
87
- counts presence, qa-reviewer audits the reason.
83
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: qa-reviewer
3
3
  description: Execute quality gates, verify evidence, route failures back to the correct agent, and decide release readiness.
4
4
  tools: Read, Grep, Glob, Bash
@@ -17,7 +17,7 @@ Do not approve based on claims. Approve based on commands, artifacts, screenshot
17
17
  - visual evidence provided for UI changes
18
18
  - stress/soak evidence provided when required
19
19
  - known risks and residual gaps documented
20
- - agent log discipline: if `files-read` includes any source file with one of the extensions covered by `references/code-map-protocol.md` (`.py`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.ts`, `.tsx`, `.vue`) without listing `.cdd/code-map.yml` first, flag as a process violation (the agent skipped the size-oracle step).
20
+ - index discipline: agents should prefer `cdd-kit index query ...` or `.cdd/code-map.yml` before targeted source reads and run `cdd-kit index impact ...` before editing source. Treat source-first work as harness/process drift, not a merge-blocking QA finding unless it produced concrete quality risk.
21
21
 
22
22
  ## Failure routing
23
23
 
@@ -41,11 +41,11 @@ Invoke `spec-drift-auditor` at the following points (do not wait for issues to s
41
41
 
42
42
  ## Evidence and decision thresholds
43
43
 
44
- - Evidence quality (lowest to highest) claim < screenshot < log excerpt < CI run URL < linked artifact bundle < reproducible repo / steps.
45
- - `approved` all required gates green, all required artifacts present, no unaddressed reviewer comments.
46
- - `approved-with-risk` only when (a) the residual risk is documented in qa-report.md, (b) an owner is assigned, (c) a follow-up issue exists with a date.
47
- - `blocked` any required gate failing, any contract claim unverified, any UI change without visual evidence.
48
- - Sign-off single reviewer for low/medium risk; two reviewers (qa-reviewer + spec-architect) for high/critical.
44
+ - Evidence quality (lowest to highest) ??claim < screenshot < log excerpt < CI run URL < linked artifact bundle < reproducible repo / steps.
45
+ - `approved` ??all required gates green, all required artifacts present, no unaddressed reviewer comments.
46
+ - `approved-with-risk` ??only when (a) the residual risk is documented in qa-report.md, (b) an owner is assigned, (c) a follow-up issue exists with a date.
47
+ - `blocked` ??any required gate failing, any contract claim unverified, any UI change without visual evidence.
48
+ - Sign-off ??single reviewer for low/medium risk; two reviewers (qa-reviewer + spec-architect) for high/critical.
49
49
  - Pre-existing failures may be excluded from this change's gate only when the
50
50
  report includes the failing test id, baseline commit or prior evidence,
51
51
  reason it is outside the current scope, owner, and follow-up date. Without
@@ -78,38 +78,35 @@ approved / blocked / approved-with-risk
78
78
 
79
79
  ## Read scope
80
80
 
81
- Source of truth: `specs/changes/<change-id>/context-manifest.md` `## Allowed Paths`.
82
- Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. `cdd-kit gate` validates `files-read:` against this list and rejects unauthorized paths.
81
+ Source of truth: `specs/changes/<change-id>/context-manifest.md` ??`## Allowed Paths`.
82
+ Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. Use this boundary as pre-read discipline, not as post-run paperwork.
83
83
 
84
84
  Need a path not listed? File a `## Context Expansion Requests` entry (see `specs/templates/context-manifest.md`) with `status: pending` and stop until the user approves via `cdd-kit context approve <change-id> <CER-id>`.
85
85
 
86
86
  Forbidden by default (enforced by `.cdd/context-policy.json`): `specs/archive/`, sibling `specs/changes/*`, `assets/`, `node_modules/`, `dist/`, `build/`, `.git/`, `.claude/worktrees/`.
87
87
 
88
- ## Machine-Verifiable Evidence
88
+ ## Optional Handoff Evidence
89
89
 
90
- After completing your task, end your response with an `Agent Log` YAML block
91
- for main Claude to write to
92
- `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
93
- field rules, and gate-enforcement behavior are defined once in
94
- `references/agent-log-protocol.md` — do not duplicate them in this prompt.
90
+ If a short handoff note is useful, end your response with an optional `Agent Log` YAML block`nfor main Claude to write to
91
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
92
+ and field rules are defined once in
93
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
95
94
 
96
- ### Required artifacts for this agent
95
+ ### Suggested artifacts for this agent
97
96
 
98
97
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
99
98
  (see `references/agent-log-protocol.md` for the full schema and self-validation
100
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
101
- those are `type` values, not log keys.
99
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
102
100
 
103
- Minimum required `type` values for this agent (each must appear at least once
104
- in your `artifacts:` array; add more items per type as needed):
101
+ Recommended `type` values for this agent when you emit an optional agent log:
105
102
 
106
103
  - `gate-results`: list of `<gate-name>: pass|fail`
107
104
  - `ci-run-url`: URL or "n/a (local-only)"
108
105
  - `evidence-quality`: lowest-evidence level seen (claim|screenshot|log|ci|repro)
109
106
  - `decision`: approved | blocked | approved-with-risk
110
- - `failure-routing`: list of `<failure-type> → <agent>` or "none"
107
+ - `failure-routing`: list of `<failure-type> ??<agent>` or "none"
111
108
 
112
- Copy this exact shape into your agent log; replace each `<pointer>` with a
109
+ If you emit a log, copy this shape and replace each `<pointer>` with a
113
110
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
114
111
 
115
112
  ```yaml
@@ -121,6 +118,4 @@ artifacts:
121
118
  - { type: failure-routing, pointer: "none" }
122
119
  ```
123
120
 
124
- If a required `type` does not apply to your run, emit one item with
125
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
126
- counts presence, qa-reviewer audits the reason.
121
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: repo-context-scanner
3
3
  description: Scan a repository and summarize its project profile, commands, contracts, tests, CI/CD, and missing standardization surfaces.
4
4
  tools: Read, Grep, Glob, Bash
@@ -23,15 +23,15 @@ Inspect the repository and produce a project profile before implementation or st
23
23
  - worker/cache/database/storage configuration
24
24
 
25
25
  **Do NOT read `specs/changes/` or `specs/archive/`.** Those are passive history records. Inspect only live sources: source code, package files, contracts/, tests/, CI workflows, and CLAUDE.md.
26
- Also do not read specs/templates/ those are scaffolding stubs, not live project state.
26
+ Also do not read specs/templates/ ??those are scaffolding stubs, not live project state.
27
27
 
28
28
  ## Detection extras
29
29
 
30
- - Monorepo / workspace check `pnpm-workspace.yaml`, `lerna.json`, `nx.json`, `turbo.json`, `go.work`, `pyproject.toml [tool.uv]` workspaces.
31
- - Containerization — `Dockerfile`, `docker-compose.yml`, `compose.yaml`, `.devcontainer/`.
32
- - IaC — `terraform/`, `*.tf`, `pulumi/`, CloudFormation `*.template.yaml`, `helm/`, `k8s/`.
33
- - Release flow — `CHANGELOG.md`, `release-please-config.json`, `.changeset/`, `semantic-release` config in package.json.
34
- - Observability Sentry/Datadog/Honeycomb/OpenTelemetry config files; log shipper configs.
30
+ - Monorepo / workspace ??check `pnpm-workspace.yaml`, `lerna.json`, `nx.json`, `turbo.json`, `go.work`, `pyproject.toml [tool.uv]` workspaces.
31
+ - Containerization ??`Dockerfile`, `docker-compose.yml`, `compose.yaml`, `.devcontainer/`.
32
+ - IaC ??`terraform/`, `*.tf`, `pulumi/`, CloudFormation `*.template.yaml`, `helm/`, `k8s/`.
33
+ - Release flow ??`CHANGELOG.md`, `release-please-config.json`, `.changeset/`, `semantic-release` config in package.json.
34
+ - Observability ??Sentry/Datadog/Honeycomb/OpenTelemetry config files; log shipper configs.
35
35
 
36
36
  ## Output
37
37
 
@@ -82,29 +82,26 @@ frontend / backend / fullstack / monorepo / library / tool
82
82
  ...
83
83
  ```
84
84
 
85
- ## Machine-Verifiable Evidence
85
+ ## Optional Handoff Evidence
86
86
 
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,
90
- field rules, and gate-enforcement behavior are defined once in
91
- `references/agent-log-protocol.md` — do not duplicate them in this prompt.
87
+ If a short handoff note is useful, end your response with an optional `Agent Log` YAML block`nfor main Claude to write to
88
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
89
+ and field rules are defined once in
90
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
92
91
 
93
- ### Required artifacts for this agent
92
+ ### Suggested artifacts for this agent
94
93
 
95
94
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
96
95
  (see `references/agent-log-protocol.md` for the full schema and self-validation
97
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
98
- those are `type` values, not log keys.
96
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
99
97
 
100
- Minimum required `type` values for this agent (each must appear at least once
101
- in your `artifacts:` array; add more items per type as needed):
98
+ Recommended `type` values for this agent when you emit an optional agent log:
102
99
 
103
100
  - `profile-path`: path to generated project profile
104
101
  - `stack-detected`: stack archetype identified
105
102
  - `surfaces-flagged`: missing standardization surfaces
106
103
 
107
- Copy this exact shape into your agent log; replace each `<pointer>` with a
104
+ If you emit a log, copy this shape and replace each `<pointer>` with a
108
105
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
109
106
 
110
107
  ```yaml
@@ -114,6 +111,4 @@ artifacts:
114
111
  - { type: surfaces-flagged, pointer: "no env contract, no ci gates contract" }
115
112
  ```
116
113
 
117
- If a required `type` does not apply to your run, emit one item with
118
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
119
- counts presence, qa-reviewer audits the reason.
114
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: spec-architect
3
3
  description: Evaluate architectural impact, compatibility, data flow, module boundaries, and whether a change requires ADR-like design decisions. Author ADRs when required.
4
4
  tools: Read, Grep, Glob, Edit, MultiEdit
@@ -33,7 +33,7 @@ proposed / accepted / superseded
33
33
 
34
34
  - A boundary moves (module split/merge, service extraction, data ownership change).
35
35
  - A persistence engine, queue, cache, or messaging substrate is added/removed/replaced.
36
- - A consistency or availability guarantee changes (CP↔AP, sync↔async, single-writer↔multi-writer).
36
+ - A consistency or availability guarantee changes (CP?P, sync?sync, single-writer?ulti-writer).
37
37
  - A trust or auth boundary changes (new SSO source, new public surface, new internal-vs-external split).
38
38
  - A non-obvious trade-off whose reversal would silently regress later (chosen indexing strategy, chosen pagination model, chosen serialization format).
39
39
 
@@ -62,7 +62,7 @@ Write to `specs/changes/<change-id>/design.md` using this structure:
62
62
  |---|---|---|
63
63
 
64
64
  ## Key Decisions
65
- - **Decision**: rationale rejected alternative: reason rejected
65
+ - **Decision**: rationale ??rejected alternative: reason rejected
66
66
 
67
67
  ## Migration / Rollback
68
68
  (Prose description. SQL and code go in migration files, not here.)
@@ -72,7 +72,7 @@ Write to `specs/changes/<change-id>/design.md` using this structure:
72
72
 
73
73
  ## Output discipline
74
74
 
75
- Your output goes into `specs/changes/<id>/design.md`. It must capture architectural decisions not implement them.
75
+ Your output goes into `specs/changes/<id>/design.md`. It must capture architectural decisions ??not implement them.
76
76
 
77
77
  - **DO** write: 1-paragraph architecture summary
78
78
  - **DO** write: affected components table (component | file path | nature of change)
@@ -83,40 +83,38 @@ Your output goes into `specs/changes/<id>/design.md`. It must capture architectu
83
83
  - **DO NOT** write: storage estimates, benchmark numbers, or detailed implementation steps
84
84
 
85
85
  Reference file paths instead of duplicating implementation content.
86
- Target: `design.md` 150 lines.
86
+ Target: `design.md` ??150 lines.
87
87
 
88
88
  ## Read scope
89
89
 
90
- Source of truth: `specs/changes/<change-id>/context-manifest.md` `## Allowed Paths`.
91
- Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. `cdd-kit gate` validates `files-read:` against this list and rejects unauthorized paths.
90
+ Source of truth: `specs/changes/<change-id>/context-manifest.md` ??`## Allowed Paths`.
91
+ Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. Use this boundary as pre-read discipline, not as post-run paperwork.
92
92
 
93
93
  Need a path not listed? File a `## Context Expansion Requests` entry (see `specs/templates/context-manifest.md`) with `status: pending` and stop until the user approves via `cdd-kit context approve <change-id> <CER-id>`.
94
94
 
95
95
  Forbidden by default (enforced by `.cdd/context-policy.json`): `specs/archive/`, sibling `specs/changes/*`, `assets/`, `node_modules/`, `dist/`, `build/`, `.git/`, `.claude/worktrees/`.
96
96
 
97
- ## Machine-Verifiable Evidence
97
+ ## Optional Handoff Evidence
98
98
 
99
- After completing your task, write or append to
100
- `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
101
- field rules, and gate-enforcement behavior are defined once in
102
- `references/agent-log-protocol.md` do not duplicate them in this prompt.
99
+ If a short handoff note is useful, write or append to
100
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
101
+ and field rules are defined once in
102
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
103
103
 
104
- ### Required artifacts for this agent
104
+ ### Suggested artifacts for this agent
105
105
 
106
106
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
107
107
  (see `references/agent-log-protocol.md` for the full schema and self-validation
108
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
109
- those are `type` values, not log keys.
108
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
110
109
 
111
- Minimum required `type` values for this agent (each must appear at least once
112
- in your `artifacts:` array; add more items per type as needed):
110
+ Recommended `type` values for this agent when you emit an optional agent log:
113
111
 
114
112
  - `adr-written`: ADR file path or "none"
115
113
  - `affected-areas`: subsystems impacted
116
114
  - `decision-summary`: one-line decision
117
115
  - `risks-noted`: risk count by severity
118
116
 
119
- Copy this exact shape into your agent log; replace each `<pointer>` with a
117
+ If you emit a log, copy this shape and replace each `<pointer>` with a
120
118
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
121
119
 
122
120
  ```yaml
@@ -127,6 +125,4 @@ artifacts:
127
125
  - { type: risks-noted, pointer: "2 medium, 0 high" }
128
126
  ```
129
127
 
130
- If a required `type` does not apply to your run, emit one item with
131
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
132
- counts presence, qa-reviewer audits the reason.
128
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.
@@ -1,6 +1,6 @@
1
- ---
1
+ ---
2
2
  name: spec-drift-auditor
3
- description: Audit drift between live contracts, implementation code, tests, and CI gates. Does NOT read historical specs/changes contracts/ is the single source of truth.
3
+ description: Audit drift between live contracts, implementation code, tests, and CI gates. Does NOT read historical specs/changes ??contracts/ is the single source of truth.
4
4
  tools: Read, Grep, Glob, Bash
5
5
  model: opus
6
6
  ---
@@ -27,9 +27,9 @@ By default, do NOT read `specs/changes/` history. Only read historical change re
27
27
 
28
28
  ## Cadence and automation
29
29
 
30
- - Cadence before every release to main; weekly during active multi-iteration work; ad-hoc when QA finds unexplained behavior.
31
- - Automatable file existence, traceability term presence, contract column completeness, CI step presence (already covered by `validate_*.py` scripts).
32
- - Manual-only semantic correctness ("does the spec actually describe what shipped?"), cross-iteration redundancy.
30
+ - Cadence ??before every release to main; weekly during active multi-iteration work; ad-hoc when QA finds unexplained behavior.
31
+ - Automatable ??file existence, traceability term presence, contract column completeness, CI step presence (already covered by `validate_*.py` scripts).
32
+ - Manual-only ??semantic correctness ("does the spec actually describe what shipped?"), cross-iteration redundancy.
33
33
 
34
34
  ## Output
35
35
 
@@ -52,8 +52,8 @@ By default, do NOT read `specs/changes/` history. Only read historical change re
52
52
 
53
53
  ## Read scope
54
54
 
55
- Source of truth: `specs/changes/<change-id>/context-manifest.md` `## Allowed Paths`.
56
- Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. `cdd-kit gate` validates `files-read:` against this list and rejects unauthorized paths.
55
+ Source of truth: `specs/changes/<change-id>/context-manifest.md` ??`## Allowed Paths`.
56
+ Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. Use this boundary as pre-read discipline, not as post-run paperwork.
57
57
 
58
58
  This agent's natural reads include `contracts/`, `src/`, `tests/`, `ci/`, and `.github/workflows/` for cross-validation. Make sure the manifest's Allowed Paths includes them, or file a `## Context Expansion Requests` entry.
59
59
 
@@ -61,30 +61,27 @@ Need a path not listed? File a `## Context Expansion Requests` entry (see `specs
61
61
 
62
62
  Forbidden by default (enforced by `.cdd/context-policy.json`): `specs/archive/`, sibling `specs/changes/*`, `assets/`, `node_modules/`, `dist/`, `build/`, `.git/`, `.claude/worktrees/`.
63
63
 
64
- ## Machine-Verifiable Evidence
64
+ ## Optional Handoff Evidence
65
65
 
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,
69
- field rules, and gate-enforcement behavior are defined once in
70
- `references/agent-log-protocol.md` — do not duplicate them in this prompt.
66
+ If a short handoff note is useful, end your response with an optional `Agent Log` YAML block`nfor main Claude to write to
67
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
68
+ and field rules are defined once in
69
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
71
70
 
72
- ### Required artifacts for this agent
71
+ ### Suggested artifacts for this agent
73
72
 
74
73
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
75
74
  (see `references/agent-log-protocol.md` for the full schema and self-validation
76
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
77
- those are `type` values, not log keys.
75
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
78
76
 
79
- Minimum required `type` values for this agent (each must appear at least once
80
- in your `artifacts:` array; add more items per type as needed):
77
+ Recommended `type` values for this agent when you emit an optional agent log:
81
78
 
82
79
  - `surfaces-audited`: surfaces compared (contracts, code, tests, ci)
83
80
  - `drift-items`: drift findings count by severity
84
81
  - `drift-summary-path`: path to drift report
85
82
  - `next-audit-due`: next audit date
86
83
 
87
- Copy this exact shape into your agent log; replace each `<pointer>` with a
84
+ If you emit a log, copy this shape and replace each `<pointer>` with a
88
85
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
89
86
 
90
87
  ```yaml
@@ -95,6 +92,4 @@ artifacts:
95
92
  - { type: next-audit-due, pointer: "2026-05-11" }
96
93
  ```
97
94
 
98
- If a required `type` does not apply to your run, emit one item with
99
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
100
- counts presence, qa-reviewer audits the reason.
95
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: stress-soak-engineer
3
3
  description: Design stress, load, soak, and long-running stability tests for reporting systems, queues, caches, auto-refresh, and data-heavy features.
4
4
  tools: Read, Grep, Glob, Edit, MultiEdit, Bash
@@ -26,10 +26,10 @@ Use realistic load profiles rather than arbitrary request loops.
26
26
 
27
27
  ## Tooling
28
28
 
29
- - k6 JS scenarios, good for HTTP and WebSocket; integrates with Grafana Cloud.
30
- - Locust Python, good for shaped traffic and complex user behavior.
31
- - Artillery / Vegeta / JMeter situational; pick one per repo.
32
- - Baseline first run 1x expected load until green; then 5x stress; then 24h soak. Skipping the 1x step hides setup bugs.
29
+ - k6 ??JS scenarios, good for HTTP and WebSocket; integrates with Grafana Cloud.
30
+ - Locust ??Python, good for shaped traffic and complex user behavior.
31
+ - Artillery / Vegeta / JMeter ??situational; pick one per repo.
32
+ - Baseline first ??run 1x expected load until green; then 5x stress; then 24h soak. Skipping the 1x step hides setup bugs.
33
33
  - Stress finds breaking points (scale-up question); soak finds slow leaks (memory, fd, temp file, connection pool exhaustion).
34
34
  - Always co-deploy a metrics dashboard; load tests without metrics produce no actionable result.
35
35
 
@@ -62,36 +62,34 @@ Use realistic load profiles rather than arbitrary request loops.
62
62
 
63
63
  ## Read scope
64
64
 
65
- Source of truth: `specs/changes/<change-id>/context-manifest.md` `## Allowed Paths`.
66
- Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. `cdd-kit gate` validates `files-read:` against this list and rejects unauthorized paths.
65
+ Source of truth: `specs/changes/<change-id>/context-manifest.md` ??`## Allowed Paths`.
66
+ Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. Use this boundary as pre-read discipline, not as post-run paperwork.
67
67
 
68
68
  Need a path not listed? File a `## Context Expansion Requests` entry (see `specs/templates/context-manifest.md`) with `status: pending` and stop until the user approves via `cdd-kit context approve <change-id> <CER-id>`.
69
69
 
70
70
  Forbidden by default (enforced by `.cdd/context-policy.json`): `specs/archive/`, sibling `specs/changes/*`, `assets/`, `node_modules/`, `dist/`, `build/`, `.git/`, `.claude/worktrees/`.
71
71
 
72
- ## Machine-Verifiable Evidence
72
+ ## Optional Handoff Evidence
73
73
 
74
- After completing your task, write or append to
75
- `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
76
- field rules, and gate-enforcement behavior are defined once in
77
- `references/agent-log-protocol.md` do not duplicate them in this prompt.
74
+ If a short handoff note is useful, write or append to
75
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
76
+ and field rules are defined once in
77
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
78
78
 
79
- ### Required artifacts for this agent
79
+ ### Suggested artifacts for this agent
80
80
 
81
81
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
82
82
  (see `references/agent-log-protocol.md` for the full schema and self-validation
83
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
84
- those are `type` values, not log keys.
83
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
85
84
 
86
- Minimum required `type` values for this agent (each must appear at least once
87
- in your `artifacts:` array; add more items per type as needed):
85
+ Recommended `type` values for this agent when you emit an optional agent log:
88
86
 
89
87
  - `runner-config-path`: path to load/stress runner config
90
88
  - `runner`: runner tool used (k6, locust, jmeter, etc.)
91
89
  - `pass-criteria-cited`: thresholds asserted (latency, error rate, leak)
92
90
  - `artifacts-location`: path to results/reports
93
91
 
94
- Copy this exact shape into your agent log; replace each `<pointer>` with a
92
+ If you emit a log, copy this shape and replace each `<pointer>` with a
95
93
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
96
94
 
97
95
  ```yaml
@@ -102,6 +100,4 @@ artifacts:
102
100
  - { type: artifacts-location, pointer: "specs/changes/<id>/stress/" }
103
101
  ```
104
102
 
105
- If a required `type` does not apply to your run, emit one item with
106
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
107
- counts presence, qa-reviewer audits the reason.
103
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: test-strategist
3
3
  description: Convert specs and acceptance criteria into TDD-oriented test plans covering unit, contract, integration, E2E, resilience, monkey, stress, and soak tests.
4
4
  tools: Read, Grep, Glob, Edit, Write
@@ -21,11 +21,11 @@ Design tests before implementation. Prefer concrete test cases, inputs, expected
21
21
 
22
22
  ## Strategy guardrails
23
23
 
24
- - Test pyramid most tests at unit level, fewer at integration, fewest at E2E; prefer pushing tests downward when behavior is provable at a lower level.
25
- - Mock boundary mock at network or process boundary (HTTP clients, queue clients), not at internal class boundary; mocking your own services produces tests that drift from reality.
26
- - Tier mapping Tier 0 unit/lint < 30s; Tier 1 contract+critical-path < 10min; Tier 3 nightly real-infra; Tier 4 weekly soak.
27
- - One assertion family per test testing 5 unrelated things in one test makes failures unreadable.
28
- - Property-based tests for invariants use fast-check / hypothesis for state machines and pure functions; saves writing many table cases.
24
+ - Test pyramid ??most tests at unit level, fewer at integration, fewest at E2E; prefer pushing tests downward when behavior is provable at a lower level.
25
+ - Mock boundary ??mock at network or process boundary (HTTP clients, queue clients), not at internal class boundary; mocking your own services produces tests that drift from reality.
26
+ - Tier mapping ??Tier 0 unit/lint < 30s; Tier 1 contract+critical-path < 10min; Tier 3 nightly real-infra; Tier 4 weekly soak.
27
+ - One assertion family per test ??testing 5 unrelated things in one test makes failures unreadable.
28
+ - Property-based tests for invariants ??use fast-check / hypothesis for state machines and pure functions; saves writing many table cases.
29
29
 
30
30
  ## Output
31
31
 
@@ -34,7 +34,7 @@ Write to `specs/changes/<change-id>/test-plan.md` using this structure:
34
34
  ```markdown
35
35
  # Test Plan: <change-id>
36
36
 
37
- ## Acceptance Criteria Test Mapping
37
+ ## Acceptance Criteria ??Test Mapping
38
38
  | criterion id | test family | test file path | tier |
39
39
  |---|---|---|---|
40
40
 
@@ -51,9 +51,9 @@ Write to `specs/changes/<change-id>/test-plan.md` using this structure:
51
51
 
52
52
  ## Output discipline
53
53
 
54
- Your output goes into `specs/changes/<id>/test-plan.md`. It must answer WHAT to test and WHY not HOW to implement the tests.
54
+ Your output goes into `specs/changes/<id>/test-plan.md`. It must answer WHAT to test and WHY ??not HOW to implement the tests.
55
55
 
56
- - **DO** write: acceptance criteria test family mapping (table)
56
+ - **DO** write: acceptance criteria ??test family mapping (table)
57
57
  - **DO** write: test file paths and test function names (one line each, no body)
58
58
  - **DO** write: tier assignment per test family
59
59
  - **DO NOT** write: full test function bodies
@@ -62,50 +62,46 @@ Your output goes into `specs/changes/<id>/test-plan.md`. It must answer WHAT to
62
62
  - **DO NOT** write: example assertions or test helper code
63
63
 
64
64
  Implementation detail belongs in the test files, not in test-plan.md.
65
- Target: `test-plan.md` 100 lines.
65
+ Target: `test-plan.md` ??100 lines.
66
66
 
67
67
  ## Read scope
68
68
 
69
- Source of truth: `specs/changes/<change-id>/context-manifest.md` `## Allowed Paths`.
70
- Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. `cdd-kit gate` validates `files-read:` against this list and rejects unauthorized paths.
69
+ Source of truth: `specs/changes/<change-id>/context-manifest.md` ??`## Allowed Paths`.
70
+ Read it first (your prompt header has `CURRENT_CHANGE_ID`). Read only paths it lists or paths under `## Approved Expansions`. Use this boundary as pre-read discipline, not as post-run paperwork.
71
71
 
72
72
  Need a path not listed? File a `## Context Expansion Requests` entry (see `specs/templates/context-manifest.md`) with `status: pending` and stop until the user approves via `cdd-kit context approve <change-id> <CER-id>`.
73
73
 
74
74
  Forbidden by default (enforced by `.cdd/context-policy.json`): `specs/archive/`, sibling `specs/changes/*`, `assets/`, `node_modules/`, `dist/`, `build/`, `.git/`, `.claude/worktrees/`.
75
75
 
76
- ## Machine-Verifiable Evidence
76
+ ## Optional Handoff Evidence
77
77
 
78
- After completing your task, write or append to
79
- `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Required fields,
80
- field rules, and gate-enforcement behavior are defined once in
81
- `references/agent-log-protocol.md` do not duplicate them in this prompt.
78
+ If a short handoff note is useful, write or append to
79
+ `specs/changes/<change-id>/agent-log/<your-agent-name>.yml`. Optional fields
80
+ and field rules are defined once in
81
+ `references/agent-log-protocol.md` ??do not duplicate them in this prompt.
82
82
 
83
- ### Required artifacts for this agent
83
+ ### Suggested artifacts for this agent
84
84
 
85
85
  `artifacts` is a YAML array of `{type, pointer}` items in your agent log
86
86
  (see `references/agent-log-protocol.md` for the full schema and self-validation
87
- checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys
88
- those are `type` values, not log keys.
87
+ checklist). Do NOT write top-level `files-changed:` / `tests-added:` keys ??those are `type` values, not log keys.
89
88
 
90
- Minimum required `type` values for this agent (each must appear at least once
91
- in your `artifacts:` array; add more items per type as needed):
89
+ Recommended `type` values for this agent when you emit an optional agent log:
92
90
 
93
91
  - `test-plan-path`: path to written test plan
94
- - `tdd-pairs`: list of `<test-file> → <impl-file>` mappings
92
+ - `tdd-pairs`: list of `<test-file> ??<impl-file>` mappings
95
93
  - `coverage-tiers`: test families covered (unit, contract, e2e, etc.)
96
94
  - `mapping-completeness`: requirements coverage statement
97
95
 
98
- Copy this exact shape into your agent log; replace each `<pointer>` with a
96
+ If you emit a log, copy this shape and replace each `<pointer>` with a
99
97
  concrete pointer (path:line-range, test-id, URL, or pass/fail string):
100
98
 
101
99
  ```yaml
102
100
  artifacts:
103
101
  - { type: test-plan-path, pointer: "specs/changes/<id>/test-plan.md" }
104
- - { type: tdd-pairs, pointer: "tests/api/users.test.ts src/api/users.ts" }
102
+ - { type: tdd-pairs, pointer: "tests/api/users.test.ts ??src/api/users.ts" }
105
103
  - { type: coverage-tiers, pointer: "unit, contract, e2e" }
106
104
  - { type: mapping-completeness, pointer: "all requirements covered" }
107
105
  ```
108
106
 
109
- If a required `type` does not apply to your run, emit one item with
110
- `pointer: "n/a (<one-line reason>)"` rather than omitting the type — the gate
111
- counts presence, qa-reviewer audits the reason.
107
+ If a recommended `type` does not apply to your run, either omit it or use `pointer: "n/a (<one-line reason>)"` so reviewers can tell the omission was intentional.