cc-codeconductor 1.1.0 → 1.2.0
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.
- package/README.md +4 -2
- package/dist/core/verification/verification-runner.d.ts +7 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1413 -309
- package/dist/library.js +29 -1
- package/dist/validation/schemas.d.ts +97 -26
- package/package.json +1 -1
- package/presets/agy/AGENTS.md +10 -9
- package/presets/agy/hooks.json +2 -2
- package/presets/agy/scripts/invoke-hook.cjs +115 -0
- package/presets/agy/skills/backlog/SKILL.md +40 -70
- package/presets/agy/skills/cc-spec-mutation/SKILL.md +165 -0
- package/presets/agy/skills/cc-tdd-cycle/SKILL.md +3 -0
- package/presets/agy/skills/evaluation/SKILL.md +61 -2
- package/presets/agy/skills/openspec/SKILL.md +49 -19
- package/presets/agy/skills/testing-tdd/SKILL.md +53 -0
- package/presets/agy/skills/using-cc-skills/SKILL.md +48 -0
- package/presets/agy/workflows/cc-api-contract.md +14 -0
- package/presets/agy/workflows/cc-db-migration.md +14 -0
- package/presets/agy/workflows/cc-feature.md +18 -0
- package/presets/agy/workflows/cc-fix.md +14 -0
- package/presets/agy/workflows/cc-iterative.md +14 -0
- package/presets/agy/workflows/cc-openspec.md +14 -0
- package/presets/agy/workflows/cc-scorecard.md +2 -0
- package/presets/agy/workflows/cc-spec-mutation.md +191 -0
- package/presets/agy/workflows/cc-tdd-cycle.md +14 -0
- package/presets/claude/commands/cc/api-contract.md +14 -0
- package/presets/claude/commands/cc/db-migration.md +14 -0
- package/presets/claude/commands/cc/feature.md +18 -0
- package/presets/claude/commands/cc/fix.md +17 -0
- package/presets/claude/commands/cc/iterative.md +14 -0
- package/presets/claude/commands/cc/openspec.md +14 -0
- package/presets/claude/commands/cc/review.md +3 -0
- package/presets/claude/commands/cc/scorecard.md +2 -0
- package/presets/claude/commands/cc/spec-mutation.md +190 -0
- package/presets/claude/commands/cc/tdd-cycle.md +17 -0
- package/presets/claude/settings.json +13 -11
- package/presets/claude/skills/backlog/SKILL.md +40 -70
- package/presets/claude/skills/evaluation/SKILL.md +47 -24
- package/presets/claude/skills/openspec/SKILL.md +46 -38
- package/presets/claude/skills/testing-tdd/SKILL.md +53 -0
- package/presets/claude/skills/using-cc-skills/SKILL.md +48 -0
- package/presets/codex/AGENTS.md +16 -12
- package/presets/codex/skills/backlog/SKILL.md +61 -0
- package/presets/codex/skills/cc-api-contract/SKILL.md +87 -0
- package/presets/codex/skills/cc-backlog/SKILL.md +108 -0
- package/presets/codex/skills/cc-clarify/SKILL.md +36 -0
- package/presets/codex/skills/cc-council/SKILL.md +92 -0
- package/presets/codex/skills/cc-db-migration/SKILL.md +88 -0
- package/presets/codex/skills/cc-explore/SKILL.md +40 -0
- package/presets/codex/skills/cc-feature/SKILL.md +154 -0
- package/presets/codex/skills/cc-fix/SKILL.md +165 -0
- package/presets/codex/skills/cc-handoff/SKILL.md +45 -0
- package/presets/codex/skills/cc-iterative/SKILL.md +150 -0
- package/presets/codex/skills/cc-openspec/SKILL.md +191 -0
- package/presets/codex/skills/cc-pagespeed/SKILL.md +124 -0
- package/presets/codex/skills/cc-prototype/SKILL.md +42 -0
- package/presets/codex/skills/cc-refactor/SKILL.md +163 -0
- package/presets/codex/skills/cc-review/SKILL.md +152 -0
- package/presets/codex/skills/cc-scorecard/SKILL.md +82 -0
- package/presets/codex/skills/cc-security/SKILL.md +182 -0
- package/presets/codex/skills/cc-spec-mutation/SKILL.md +192 -0
- package/presets/codex/skills/cc-tdd-cycle/SKILL.md +266 -0
- package/presets/codex/skills/cc-test-plan/SKILL.md +153 -0
- package/presets/codex/skills/cc-triage/SKILL.md +38 -0
- package/presets/codex/skills/evaluation/SKILL.md +65 -0
- package/presets/codex/skills/openspec/SKILL.md +66 -0
- package/presets/codex/skills/testing-tdd/SKILL.md +53 -0
- package/presets/codex/skills/using-cc-skills/SKILL.md +48 -0
- package/presets/cursor/commands/cc/api-contract.md +14 -0
- package/presets/cursor/commands/cc/db-migration.md +14 -0
- package/presets/cursor/commands/cc/feature.md +18 -0
- package/presets/cursor/commands/cc/fix.md +17 -0
- package/presets/cursor/commands/cc/iterative.md +14 -0
- package/presets/cursor/commands/cc/openspec.md +14 -0
- package/presets/cursor/commands/cc/scorecard.md +2 -0
- package/presets/cursor/commands/cc/spec-mutation.md +190 -0
- package/presets/cursor/commands/cc/tdd-cycle.md +14 -0
- package/presets/cursor/skills/backlog/SKILL.md +40 -70
- package/presets/cursor/skills/evaluation/SKILL.md +61 -4
- package/presets/cursor/skills/openspec/SKILL.md +46 -36
- package/presets/cursor/skills/testing-tdd/SKILL.md +35 -574
- package/presets/cursor/skills/using-cc-skills/SKILL.md +48 -0
- package/presets/gemini/commands/cc/api-contract.toml +82 -0
- package/presets/gemini/commands/cc/ask.toml +54 -0
- package/presets/gemini/commands/cc/backlog.toml +103 -0
- package/presets/gemini/commands/cc/clarify.toml +31 -0
- package/presets/gemini/commands/cc/council.toml +87 -0
- package/presets/gemini/commands/cc/db-migration.toml +83 -0
- package/presets/gemini/commands/cc/explore.toml +35 -0
- package/presets/gemini/commands/cc/feature.toml +153 -0
- package/presets/gemini/commands/cc/fix.toml +163 -0
- package/presets/gemini/commands/cc/handoff.toml +40 -0
- package/presets/gemini/commands/cc/iterative.toml +145 -0
- package/presets/gemini/commands/cc/openspec.toml +186 -0
- package/presets/gemini/commands/cc/pagespeed.toml +119 -0
- package/presets/gemini/commands/cc/prototype.toml +37 -0
- package/presets/gemini/commands/cc/refactor.toml +158 -0
- package/presets/gemini/commands/cc/review.toml +150 -0
- package/presets/gemini/commands/cc/scorecard.toml +77 -0
- package/presets/gemini/commands/cc/security.toml +177 -0
- package/presets/gemini/commands/cc/spec-mutation.toml +187 -0
- package/presets/gemini/commands/cc/tdd-cycle.toml +264 -0
- package/presets/gemini/commands/cc/test-plan.toml +148 -0
- package/presets/gemini/commands/cc/triage.toml +33 -0
- package/presets/opencode/README.md +24 -21
- package/presets/opencode/agents/architect.md +6 -0
- package/presets/opencode/agents/implementer.md +7 -0
- package/presets/opencode/agents/reviewer.md +6 -0
- package/presets/opencode/agents/tester.md +6 -0
- package/presets/opencode/commands/cc-api-contract.md +14 -0
- package/presets/opencode/commands/cc-db-migration.md +14 -0
- package/presets/opencode/commands/cc-feature.md +18 -0
- package/presets/opencode/commands/cc-fix.md +17 -0
- package/presets/opencode/commands/cc-iterative.md +14 -0
- package/presets/opencode/commands/cc-openspec.md +14 -0
- package/presets/opencode/commands/cc-scorecard.md +2 -0
- package/presets/opencode/commands/cc-spec-mutation.md +190 -0
- package/presets/opencode/commands/cc-tdd-cycle.md +14 -0
- package/presets/opencode/opencode.jsonc +1 -1
- package/presets/opencode/prompts/v1.0.0/architect.md +6 -0
- package/presets/opencode/prompts/v1.0.0/implementer.md +7 -0
- package/presets/opencode/prompts/v1.0.0/reviewer.md +6 -0
- package/presets/opencode/prompts/v1.0.0/tester.md +6 -0
- package/presets/opencode/skills/backlog/SKILL.md +40 -70
- package/presets/opencode/skills/evaluation/SKILL.md +61 -2
- package/presets/opencode/skills/openspec/SKILL.md +46 -34
- package/presets/opencode/skills/testing-tdd/SKILL.md +35 -574
- package/presets/opencode/skills/using-cc-skills/SKILL.md +48 -0
- package/presets/shared/__pycache__/mutation_runner.cpython-314.pyc +0 -0
- package/presets/shared/invoke-hook.cjs +115 -0
- package/presets/shared/mutation_runner.py +273 -0
- package/src/presets/manifests/agy.yml +2 -0
- package/src/presets/manifests/claude.yml +3 -0
- package/src/presets/manifests/gemini.yml +15 -0
- package/src/presets/models/agy.yml +24 -24
- package/src/presets/models/claude.yml +10 -10
- package/src/presets/models/codex.yml +10 -10
- package/src/presets/models/cursor.yml +10 -10
- package/src/presets/models/gemini.yml +10 -10
- package/src/presets/models/opencode.yml +10 -10
- package/presets/agy/scripts/post-tool.sh +0 -25
- package/presets/agy/scripts/pre-tool.sh +0 -56
|
@@ -17,30 +17,33 @@ providers)** models.
|
|
|
17
17
|
| `claude-sonnet-4-6` | Balanced, general purpose | Default for most agents |
|
|
18
18
|
| `claude-haiku-4-5-20251001` | Fast, lightweight | Task Coach, Docs, Repo Explorer |
|
|
19
19
|
|
|
20
|
-
### OpenCode Go
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
| `
|
|
20
|
+
### OpenCode Go models
|
|
21
|
+
|
|
22
|
+
Canonical slugs live in `src/presets/models/*.yml`. Production roles never use
|
|
23
|
+
`muse-spark-1.2-contributor` (trains on prompts). `ox-alpha-free` is an optional
|
|
24
|
+
fallback, not a default.
|
|
25
|
+
|
|
26
|
+
| Model | Best for |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| `deepseek-v4-pro` | Architect |
|
|
29
|
+
| `kimi-k3` | Security reviewer |
|
|
30
|
+
| `qwen3.8-max` | Reviewer, contract-builder |
|
|
31
|
+
| `glm-5.3` | Devil, complexity-auditor |
|
|
32
|
+
| `mimo-v2.5` | Implementer |
|
|
33
|
+
| `minimax-m3` | Tester |
|
|
34
|
+
| `qwen3.7-plus` | Orchestrator (TUI default) |
|
|
35
|
+
| `gpt-5.6-luna` | Task coach, planner |
|
|
36
|
+
| `deepseek-v4-flash` | Goal planner |
|
|
37
|
+
| `longcat-2.0` | Repo explorer |
|
|
38
|
+
| `hy3` | Docs |
|
|
29
39
|
|
|
30
40
|
---
|
|
31
41
|
|
|
32
42
|
## Agent Model Matrix
|
|
33
43
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
| **Architect** | `claude-opus-4-7` | `deepseek-v4-pro` | `mimo-v2.5-pro` |
|
|
38
|
-
| **Implementer** | `claude-sonnet-4-6` | `mimo-v2.5-pro` | `minimax-m2.7` |
|
|
39
|
-
| **Tester** | `claude-sonnet-4-6` | `minimax-m2.7` | `deepseek-v4-pro` |
|
|
40
|
-
| **Reviewer** | `claude-sonnet-4-6` | `qwen3.6-plus` | `minimax-m2.7` |
|
|
41
|
-
| **Task Coach** | `claude-haiku-4-5-20251001` | `qwen3.6-plus` | `kimi-k2.6` |
|
|
42
|
-
| **Docs** | `claude-haiku-4-5-20251001` | `qwen3.6-plus` | `kimi-k2.6` |
|
|
43
|
-
| **Repo Explorer** | `claude-haiku-4-5-20251001` | `qwen3.6-plus` | `kimi-k2.6` |
|
|
44
|
+
See `skills/cc-update-preset-models/references/role-map.md`. OpenCode column
|
|
45
|
+
examples: architect `deepseek-v4-pro`, implementer `mimo-v2.5`, tester
|
|
46
|
+
`minimax-m3`, reviewer `qwen3.8-max`.
|
|
44
47
|
|
|
45
48
|
---
|
|
46
49
|
|
|
@@ -93,7 +96,7 @@ The following paths are denied by default:
|
|
|
93
96
|
|
|
94
97
|
### Medium Tasks (Implementation, testing)
|
|
95
98
|
|
|
96
|
-
**Recommended:** `mimo-v2.5
|
|
99
|
+
**Recommended:** `mimo-v2.5` or `minimax-m3` (OpenCode Go) or
|
|
97
100
|
`claude-sonnet-4-6` (Claude)
|
|
98
101
|
|
|
99
102
|
- Implementer code writing
|
|
@@ -165,7 +168,7 @@ export KIMI_API_KEY="your-key"
|
|
|
165
168
|
| ------------------------------- | -------------------------------------------------- |
|
|
166
169
|
| Complex reasoning, architecture | OpenCode Go (`deepseek-v4-pro`) or Claude (`opus`) |
|
|
167
170
|
| Fast iteration, simple tasks | OpenCode Go (`qwen3.6-plus`) or Claude (`haiku`) |
|
|
168
|
-
| Code implementation | OpenCode Go (`mimo-v2.5
|
|
171
|
+
| Code implementation | OpenCode Go (`mimo-v2.5`) or Claude (`sonnet`) |
|
|
169
172
|
| Budget constraints | OpenCode Go (generally lower cost) |
|
|
170
173
|
| Availability issues | Switch to alternative from the matrix |
|
|
171
174
|
|
|
@@ -246,3 +246,9 @@ Rules under CCEP-1:
|
|
|
246
246
|
- Never approve your own plan — the human approves before implementation starts.
|
|
247
247
|
- If scope expands during design, flag it as a separate task, not an extension
|
|
248
248
|
of the current one.
|
|
249
|
+
|
|
250
|
+
## Composition
|
|
251
|
+
|
|
252
|
+
Invoke via `/cc-feature`, `/cc-openspec`, or the orchestrator. Do not invoke
|
|
253
|
+
other agents. If an OpenSpec change folder is active, invoke skill `openspec`
|
|
254
|
+
and run `openspec analyze --output json` before implementation is allowed.
|
|
@@ -215,3 +215,10 @@ tests. On **REJECT**, stop and escalate to the orchestrator.
|
|
|
215
215
|
- Never modify the Technical Plan — if the plan is wrong, escalate to
|
|
216
216
|
`architect` via the orchestrator.
|
|
217
217
|
- Never commit without human confirmation.
|
|
218
|
+
|
|
219
|
+
## Composition
|
|
220
|
+
|
|
221
|
+
Invoke via `/cc-feature`, `/cc-fix`, `/cc-tdd-cycle`, or the orchestrator.
|
|
222
|
+
Do not invoke other agents. Invoke skill `testing-tdd`.
|
|
223
|
+
Deliverable is incomplete without a passing suite and runner TDD evidence when
|
|
224
|
+
TDD is required. Scorecard: `bun run dev scorecard create --from-diff`.
|
|
@@ -282,3 +282,9 @@ Invoke skill `evaluation` and run `scorecard record` with agent `reviewer`, mode
|
|
|
282
282
|
- Never issue vague findings ("this could be better") — every finding must name
|
|
283
283
|
the exact location and the specific required action.
|
|
284
284
|
- Never run `git push` or `git commit`.
|
|
285
|
+
|
|
286
|
+
## Composition
|
|
287
|
+
|
|
288
|
+
Invoke via `/cc-review` or the orchestrator. Do not invoke other agents.
|
|
289
|
+
Invoke skill `evaluation`. Deliverable is incomplete without
|
|
290
|
+
`scorecard create --from-diff` and a recorded PASS|REVISE|REJECT.
|
|
@@ -285,3 +285,9 @@ and confirmed failing; list the failing test paths in `artifacts` so the
|
|
|
285
285
|
- Never mock real behavior that could be tested with an in-memory alternative.
|
|
286
286
|
- Never declare coverage complete when any acceptance criterion lacks a test.
|
|
287
287
|
- Never run `git push` or `git commit`.
|
|
288
|
+
|
|
289
|
+
## Composition
|
|
290
|
+
|
|
291
|
+
Invoke via `/cc-tdd-cycle`, `/cc-feature`, or the orchestrator (test before
|
|
292
|
+
implement). Do not invoke other agents. Invoke skill `testing-tdd`.
|
|
293
|
+
Deliverable is incomplete without `captureTddSuiteEvidence` when TDD is required.
|
|
@@ -20,6 +20,20 @@ Command: `api-contract` (fixed for this workflow — do not infer from user text
|
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
+
## Step 0b — OpenSpec quality gates
|
|
24
|
+
|
|
25
|
+
If `openspec status` reports an active change folder:
|
|
26
|
+
|
|
27
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
28
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
29
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
30
|
+
4. Next command spelling on this runner: `/cc-api-contract`
|
|
31
|
+
|
|
32
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
|
|
23
37
|
## Step 1 — Task Card validation (task-coach)
|
|
24
38
|
|
|
25
39
|
Invoke `task-coach` with the request above.
|
|
@@ -21,6 +21,20 @@ Command: `db-migration` (fixed for this workflow — do not infer from user text
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## Step 0b — OpenSpec quality gates
|
|
25
|
+
|
|
26
|
+
If `openspec status` reports an active change folder:
|
|
27
|
+
|
|
28
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
29
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
30
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
31
|
+
4. Next command spelling on this runner: `/cc-db-migration`
|
|
32
|
+
|
|
33
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
|
|
24
38
|
## Step 1 — Task Card validation (task-coach)
|
|
25
39
|
|
|
26
40
|
Invoke `task-coach` with the request above.
|
|
@@ -21,6 +21,24 @@ Command: `feature` (fixed for this workflow — do not infer from user text)
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## Step 0b — OpenSpec quality gates
|
|
25
|
+
|
|
26
|
+
If `openspec status` reports an active change folder:
|
|
27
|
+
|
|
28
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
29
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
30
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
31
|
+
4. Next command spelling on this runner: `/cc-feature`
|
|
32
|
+
|
|
33
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
34
|
+
|
|
35
|
+
Skills: `using-cc-skills`, `openspec`, `testing-tdd`, `evaluation`.
|
|
36
|
+
Do not skip `openspec analyze` when a change folder is active.
|
|
37
|
+
"I'll add tests later" is not allowed — tester before implementer.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
|
|
24
42
|
## Step 1 — Wayfinding (repo-explorer)
|
|
25
43
|
|
|
26
44
|
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
@@ -31,6 +31,20 @@ Command: `fix` (fixed for this workflow — do not infer from user text)
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
+
## Step 0b — OpenSpec quality gates
|
|
35
|
+
|
|
36
|
+
If `openspec status` reports an active change folder:
|
|
37
|
+
|
|
38
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
39
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
40
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
41
|
+
4. Next command spelling on this runner: `/cc-fix`
|
|
42
|
+
|
|
43
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
|
|
34
48
|
## Step 1 — Wayfinding (repo-explorer)
|
|
35
49
|
|
|
36
50
|
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
@@ -148,3 +162,6 @@ resolved.
|
|
|
148
162
|
Report: Task Card, Implementation Summary, regression test added, Review Report
|
|
149
163
|
(if applicable). The fix is complete only when: the regression test passes, the
|
|
150
164
|
full suite passes, and no CRITICAL review findings remain.
|
|
165
|
+
|
|
166
|
+
Skills: `testing-tdd`, `evaluation`. Record `scorecard create --from-diff`.
|
|
167
|
+
A small fix still needs a Task Card and a failing regression test first.
|
|
@@ -21,6 +21,20 @@ Command: `iterative` (fixed for this workflow — do not infer from user text)
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## Step 0b — OpenSpec quality gates
|
|
25
|
+
|
|
26
|
+
If `openspec status` reports an active change folder:
|
|
27
|
+
|
|
28
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
29
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
30
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
31
|
+
4. Next command spelling on this runner: `/cc-iterative`
|
|
32
|
+
|
|
33
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
|
|
24
38
|
## Step 1 — Wayfinding (repo-explorer)
|
|
25
39
|
|
|
26
40
|
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
@@ -29,6 +29,20 @@ Command: `openspec` (fixed for this workflow — do not infer from user text)
|
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
+
## Step 0b — OpenSpec quality gates
|
|
33
|
+
|
|
34
|
+
If `openspec status` reports an active change folder:
|
|
35
|
+
|
|
36
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
37
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
38
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
39
|
+
4. Next command spelling on this runner: `/cc-openspec`
|
|
40
|
+
|
|
41
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
|
|
32
46
|
## Step 1 — Scan
|
|
33
47
|
|
|
34
48
|
Run `npx cc-codeconductor openspec scan`. Report new, modified, and closed items.
|
|
@@ -19,6 +19,8 @@ Command: `scorecard` (fixed for this workflow — do not infer from user text)
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
+
If a change folder exists, run `npx cc-codeconductor openspec analyze --output json` first. `--from-diff` overlays FR/SC coverage onto `acceptance` and TDD evidence onto `tests`.
|
|
23
|
+
|
|
22
24
|
1. `scorecard create --task <id> --from-diff`
|
|
23
25
|
2. Complete criteria (reviewer or human)
|
|
24
26
|
3. `scorecard regression` (optional)
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: >-
|
|
3
|
+
Spec-locked TDD with a mutation-testing gate — refine the intent
|
|
4
|
+
into an immutable Gherkin contract (SHA-256 frozen), implement under the
|
|
5
|
+
three laws of TDD, pass a judge audit, and merge only if every mutant dies.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Spec-Mutation — Hard Spec → TDD → Judge → Mutation Gate
|
|
9
|
+
|
|
10
|
+
Scope: $ARGUMENTS
|
|
11
|
+
|
|
12
|
+
Describe what behavior you want to implement. Include:
|
|
13
|
+
|
|
14
|
+
- The function, method, or feature to implement
|
|
15
|
+
- The expected behavior (inputs, outputs, invariants, edge cases)
|
|
16
|
+
- The allowed file scope (production files that may change)
|
|
17
|
+
- The test command for the affected suite (e.g. `pytest tests/test_billing.py`)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Step 0 — CCEP Bootstrap
|
|
22
|
+
|
|
23
|
+
Command: `spec-mutation` (fixed for this workflow — do not infer from user text)
|
|
24
|
+
|
|
25
|
+
1. Run: `npx cc-codeconductor ccep parse --command spec-mutation "$ARGUMENTS" --output json`
|
|
26
|
+
2. Run: `npx cc-codeconductor ccep resolve --command spec-mutation "$ARGUMENTS" --output json`
|
|
27
|
+
3. Run: `npx cc-codeconductor ccep profile spec-mutation --output json`
|
|
28
|
+
4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command spec-mutation --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
29
|
+
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
30
|
+
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Step 0b — OpenSpec quality gates
|
|
35
|
+
|
|
36
|
+
If `openspec status` reports an active change folder:
|
|
37
|
+
|
|
38
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
39
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
40
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
41
|
+
4. Next command spelling on this runner: `/cc-spec-mutation`
|
|
42
|
+
|
|
43
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Contract
|
|
48
|
+
|
|
49
|
+
The Gherkin specification is the **immutable contract** of the system. No code
|
|
50
|
+
merges unless it survives intentional source mutations. The loop is closed:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
[Human + spec_partner] ──> [gherkin_author] ──> [Test Freeze: SHA-256]
|
|
54
|
+
│
|
|
55
|
+
┌──────────────────────────────────────────────────────┘
|
|
56
|
+
▼
|
|
57
|
+
[tdd_craftsman] <───────────────┐ (surviving mutant)
|
|
58
|
+
(Red-Green-Refactor) │
|
|
59
|
+
│ │
|
|
60
|
+
▼ │
|
|
61
|
+
[judge] ───────────> [mutation_testing] ───> [Safe Merge]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Role mapping onto Conductor Agents (AGENTS.md):
|
|
65
|
+
|
|
66
|
+
| Workflow role | Conductor Agent | Deliverable |
|
|
67
|
+
| ------------------ | ----------------- | ------------------------------------------ |
|
|
68
|
+
| `craftsman_lead` | `orchestrator` | Routed Task Cards, per-stage scorecards |
|
|
69
|
+
| `spec_partner` | `task-coach` | Spec draft with invariants and boundaries |
|
|
70
|
+
| `gherkin_author` | `contract-builder`| Strict `.feature` file (Given/When/Then) |
|
|
71
|
+
| `tdd_craftsman` | `tester` → `implementer` | Failing test, then minimal production code |
|
|
72
|
+
| `judge` | `reviewer` | Binary verdict (PASS/REJECT) with scoring |
|
|
73
|
+
| `mutation_testing` | `tester` (runner) | Killed/survived mutant report |
|
|
74
|
+
|
|
75
|
+
## Stage 1 — Interactive refinement (`spec_partner` / task-coach)
|
|
76
|
+
|
|
77
|
+
Do not jump to implementation. Apply Socratic questioning to the initial intent:
|
|
78
|
+
|
|
79
|
+
- Preconditions, postconditions, and edge cases.
|
|
80
|
+
- Invariant matrix: what must always be true.
|
|
81
|
+
- Scope boundaries: explicit `Scope / Files` and `Scope / Out` for the Task Card.
|
|
82
|
+
|
|
83
|
+
Stop gate: human confirms the draft before formalization.
|
|
84
|
+
|
|
85
|
+
## Stage 2 — Hard Spec formalization (`gherkin_author` / contract-builder)
|
|
86
|
+
|
|
87
|
+
Formalize the agreed draft into `specs/<task>.feature` using strict Gherkin:
|
|
88
|
+
|
|
89
|
+
- No vague language ("must respond fast" is forbidden — use measurable Then steps).
|
|
90
|
+
- Every scenario declares preconditions (`Given`), actions (`When`), and
|
|
91
|
+
observable states (`Then`).
|
|
92
|
+
- Once the human approves the `.feature`, freeze it:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
shasum -a 256 specs/<task>.feature tests/ > .codeconductor/tasks/<task_id>.lock
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
From this point `specs/` and `tests/` are **read-only** for implementation
|
|
99
|
+
agents. Before every later gate, recompute the hash; any single-byte difference
|
|
100
|
+
aborts the pipeline with scorecard 0 (Specification Gaming).
|
|
101
|
+
|
|
102
|
+
## Stage 3 — TDD under the three laws (`tdd_craftsman`)
|
|
103
|
+
|
|
104
|
+
Delegates to the `/cc-tdd-cycle` state machine (`tddCycleStateMachine` in
|
|
105
|
+
`domain/loop`). Evidence must be captured with `captureTddSuiteEvidence` — do
|
|
106
|
+
not hand-edit JSON under `.codeconductor/evidence/`.
|
|
107
|
+
|
|
108
|
+
1. **Law 1 (RED):** no production code except to make a failing test pass. A
|
|
109
|
+
compile error from a missing interface counts as a failure.
|
|
110
|
+
2. **Law 2:** write exactly one failing assertion or scenario at a time.
|
|
111
|
+
3. **Law 3 (GREEN):** write only the minimal production code to pass. No
|
|
112
|
+
speculative code, no preventive heuristics, stdlib-first.
|
|
113
|
+
|
|
114
|
+
Hard rule: any write attempt against `specs/` or `tests/` during GREEN/REFACTOR
|
|
115
|
+
is a harness violation — stop execution and report.
|
|
116
|
+
|
|
117
|
+
## Stage 4 — Judge audit (`judge` / reviewer)
|
|
118
|
+
|
|
119
|
+
Deterministic gates before spending compute on mutation:
|
|
120
|
+
|
|
121
|
+
- Clean compile / diagnostics exit code 0.
|
|
122
|
+
- Traceability: every Gherkin step maps to an implemented test step.
|
|
123
|
+
- Scope Gaming audit: `git diff --name-only` must match the Task Card
|
|
124
|
+
`Scope / Files` exactly. Relaxed types, weakened assertions, or out-of-scope
|
|
125
|
+
edits → REJECT with findings.
|
|
126
|
+
|
|
127
|
+
Verdict is binary: PASS continues to the mutation gate; REJECT returns to the
|
|
128
|
+
`implement` phase with the findings attached.
|
|
129
|
+
|
|
130
|
+
## Stage 5 — Mutation gate (`mutation_testing`)
|
|
131
|
+
|
|
132
|
+
Run the deterministic AST mutator shipped with this preset:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
python3 presets/shared/mutation_runner.py \
|
|
136
|
+
--target <production_file.py> \
|
|
137
|
+
--test-command "<test command>" \
|
|
138
|
+
--spec-folder specs
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The runner applies deterministic operator mutations (`>` → `<=`, `==` → `!=`,
|
|
142
|
+
`is` → `is not`, …) one at a time, re-runs the suite per mutant, and restores
|
|
143
|
+
the original source unconditionally (`finally` rollback).
|
|
144
|
+
|
|
145
|
+
- **Mutant killed (tests fail):** the suite detects the corruption. Continue.
|
|
146
|
+
- **Mutant survived (tests pass):** the tests are blind to this branch. The
|
|
147
|
+
runner writes `specs/handover.md` + appends to
|
|
148
|
+
`specs/implementation-summary.md` and exits with code **2**.
|
|
149
|
+
|
|
150
|
+
Non-Python stacks: substitute Stryker (JS/TS), PITest (JVM), or Mutmut
|
|
151
|
+
(Python full-suite) with the same contract — 100% kill rate or hands-off.
|
|
152
|
+
|
|
153
|
+
### Hands-off protocol (exit code 2)
|
|
154
|
+
|
|
155
|
+
1. Do NOT modify production code to "fix" a surviving mutant.
|
|
156
|
+
2. Route back to `tdd_craftsman` with `specs/handover.md` as input: write the
|
|
157
|
+
missing failing test (Law 1 & 2) that asserts the mutated branch.
|
|
158
|
+
3. Re-run stages 3–5.
|
|
159
|
+
|
|
160
|
+
### Circuit breaker (max 3 loops)
|
|
161
|
+
|
|
162
|
+
The orchestrator keeps a persistent counter per Task Card. If the
|
|
163
|
+
`tdd_craftsman ↔ mutation_testing` loop does not reach a 100% kill rate after
|
|
164
|
+
**3 iterations**:
|
|
165
|
+
|
|
166
|
+
- Cancel active subagents (stop token/context spend).
|
|
167
|
+
- `git checkout -- <scope>` rollback to the last clean state.
|
|
168
|
+
- Scorecard: `STATUS = BLOCKED`; escalate to a human operator. The branch stays
|
|
169
|
+
frozen until human arbitration.
|
|
170
|
+
|
|
171
|
+
## Guardrails (harness-enforced, not prompt-enforced)
|
|
172
|
+
|
|
173
|
+
- **Test Freezing:** SHA-256 of `specs/` + `tests/` stored in
|
|
174
|
+
`.codeconductor/tasks/<task_id>.lock`; hash mismatch aborts the pipeline.
|
|
175
|
+
- **Scope Guardian:** `fs_write`/`fs_patch` paths are validated against the Task
|
|
176
|
+
Card `Scope / Files`; path escapes (`../`) and critical files (`**/.env*`,
|
|
177
|
+
`**/credentials*`, infrastructure roots) are denied per `policy.yml`.
|
|
178
|
+
- **RBAC per role:** `gherkin_author` writes only `specs/`; `tdd_craftsman`
|
|
179
|
+
reads specs/tests and writes only scoped `src/`; `judge` and
|
|
180
|
+
`mutation_testing` are read-only except the runner's rolled-back patch.
|
|
181
|
+
- **Worktree isolation:** run the whole flow in a dedicated `git worktree`;
|
|
182
|
+
protected branches (`main`, `master`, `develop`) are never touched.
|
|
183
|
+
|
|
184
|
+
## Completion criteria
|
|
185
|
+
|
|
186
|
+
- [ ] `.feature` approved and frozen (SHA-256 lock file exists and matches).
|
|
187
|
+
- [ ] RED → GREEN → REFACTOR evidence captured per phase.
|
|
188
|
+
- [ ] Judge verdict PASS (compile clean, traceability complete, scope clean).
|
|
189
|
+
- [ ] Mutation runner exits 0 with `total_mutants_killed == total_points`.
|
|
190
|
+
- [ ] Scorecard records the kill rate and iteration count (≤ 3).
|
|
@@ -30,6 +30,20 @@ Command: `tdd-cycle` (fixed for this workflow — do not infer from user text)
|
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
+
## Step 0b — OpenSpec quality gates
|
|
34
|
+
|
|
35
|
+
If `openspec status` reports an active change folder:
|
|
36
|
+
|
|
37
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
38
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
39
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
40
|
+
4. Next command spelling on this runner: `/cc-tdd-cycle`
|
|
41
|
+
|
|
42
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
|
|
33
47
|
## Before you begin — mandatory pre-check
|
|
34
48
|
|
|
35
49
|
This command enforces strict TDD discipline. The three phases are sequential and
|
|
@@ -257,3 +257,9 @@ Rules under CCEP-1:
|
|
|
257
257
|
- Never approve your own plan — the human approves before implementation starts.
|
|
258
258
|
- If scope expands during design, flag it as a separate task, not an extension
|
|
259
259
|
of the current one.
|
|
260
|
+
|
|
261
|
+
## Composition
|
|
262
|
+
|
|
263
|
+
Invoke via `/cc-feature`, `/cc-openspec`, or the orchestrator. Do not invoke
|
|
264
|
+
other agents. If an OpenSpec change folder is active, invoke skill `openspec`
|
|
265
|
+
and run `openspec analyze --output json` before implementation is allowed.
|
|
@@ -226,3 +226,10 @@ tests. On **REJECT**, stop and escalate to the orchestrator.
|
|
|
226
226
|
- Never modify the Technical Plan — if the plan is wrong, escalate to
|
|
227
227
|
`architect` via the orchestrator.
|
|
228
228
|
- Never commit without human confirmation.
|
|
229
|
+
|
|
230
|
+
## Composition
|
|
231
|
+
|
|
232
|
+
Invoke via `/cc-feature`, `/cc-fix`, `/cc-tdd-cycle`, or the orchestrator.
|
|
233
|
+
Do not invoke other agents. Invoke skill `testing-tdd`.
|
|
234
|
+
Deliverable is incomplete without a passing suite and runner TDD evidence when
|
|
235
|
+
TDD is required. Scorecard: `bun run dev scorecard create --from-diff`.
|
|
@@ -293,3 +293,9 @@ Invoke skill `evaluation` and run `scorecard record` with agent `reviewer`, mode
|
|
|
293
293
|
- Never issue vague findings ("this could be better") — every finding must name
|
|
294
294
|
the exact location and the specific required action.
|
|
295
295
|
- Never run `git push` or `git commit`.
|
|
296
|
+
|
|
297
|
+
## Composition
|
|
298
|
+
|
|
299
|
+
Invoke via `/cc-review` or the orchestrator. Do not invoke other agents.
|
|
300
|
+
Invoke skill `evaluation`. Deliverable is incomplete without
|
|
301
|
+
`scorecard create --from-diff` and a recorded PASS|REVISE|REJECT.
|
|
@@ -296,3 +296,9 @@ and confirmed failing; list the failing test paths in `artifacts` so the
|
|
|
296
296
|
- Never mock real behavior that could be tested with an in-memory alternative.
|
|
297
297
|
- Never declare coverage complete when any acceptance criterion lacks a test.
|
|
298
298
|
- Never run `git push` or `git commit`.
|
|
299
|
+
|
|
300
|
+
## Composition
|
|
301
|
+
|
|
302
|
+
Invoke via `/cc-tdd-cycle`, `/cc-feature`, or the orchestrator (test before
|
|
303
|
+
implement). Do not invoke other agents. Invoke skill `testing-tdd`.
|
|
304
|
+
Deliverable is incomplete without `captureTddSuiteEvidence` when TDD is required.
|