cc-codeconductor 1.0.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 +326 -87
- package/dist/core/compilation/compile-checker.d.ts +2 -0
- package/dist/core/loop/loop-engine.d.ts +3 -0
- package/dist/core/verification/verification-runner.d.ts +7 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3825 -597
- package/dist/library.js +195 -18
- package/dist/validation/schemas.d.ts +461 -44
- package/package.json +4 -1
- package/presets/agy/AGENTS.md +13 -9
- package/presets/agy/gates/pre-commit/GATE.md +5 -4
- package/presets/agy/hooks.json +2 -2
- package/presets/agy/scripts/invoke-hook.cjs +115 -0
- package/presets/agy/skills/backlog/SKILL.md +61 -0
- 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 +50 -16
- package/presets/agy/skills/security-ai-llm/SKILL.md +43 -0
- package/presets/agy/skills/security-blue-team/SKILL.md +43 -0
- package/presets/agy/skills/security-cloud/SKILL.md +43 -0
- package/presets/agy/skills/security-crypto/SKILL.md +43 -0
- package/presets/agy/skills/security-exploit-dev/SKILL.md +45 -0
- package/presets/agy/skills/security-grc/SKILL.md +43 -0
- package/presets/agy/skills/security-incident-response/SKILL.md +45 -0
- package/presets/agy/skills/security-log-analysis/SKILL.md +43 -0
- package/presets/agy/skills/security-malware-analysis/SKILL.md +44 -0
- package/presets/agy/skills/security-mobile/SKILL.md +43 -0
- package/presets/agy/skills/security-network/SKILL.md +43 -0
- package/presets/agy/skills/security-ot-ics/SKILL.md +43 -0
- package/presets/agy/skills/security-recon/SKILL.md +45 -0
- package/presets/agy/skills/security-red-team/SKILL.md +44 -0
- package/presets/agy/skills/security-reverse-engineering/SKILL.md +44 -0
- package/presets/agy/skills/security-soc-automation/SKILL.md +43 -0
- package/presets/agy/skills/security-threat-hunting/SKILL.md +43 -0
- package/presets/agy/skills/security-vuln-assessment/SKILL.md +45 -0
- package/presets/agy/skills/security-web/SKILL.md +44 -0
- 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-ask.md +2 -1
- package/presets/agy/workflows/cc-backlog.md +69 -0
- package/presets/agy/workflows/cc-db-migration.md +14 -0
- package/presets/agy/workflows/cc-explore.md +1 -1
- 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 +17 -1
- package/presets/agy/workflows/cc-scorecard.md +2 -0
- package/presets/agy/workflows/cc-security.md +180 -0
- package/presets/agy/workflows/cc-spec-mutation.md +191 -0
- package/presets/agy/workflows/cc-tdd-cycle.md +14 -0
- package/presets/claude/CLAUDE.md +4 -0
- package/presets/claude/commands/cc/api-contract.md +14 -0
- package/presets/claude/commands/cc/ask.md +2 -1
- package/presets/claude/commands/cc/backlog.md +104 -0
- package/presets/claude/commands/cc/db-migration.md +14 -0
- package/presets/claude/commands/cc/explore.md +1 -1
- 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 +30 -1
- package/presets/claude/commands/cc/review.md +3 -0
- package/presets/claude/commands/cc/scorecard.md +2 -0
- package/presets/claude/commands/cc/security.md +179 -0
- package/presets/claude/commands/cc/spec-mutation.md +190 -0
- package/presets/claude/commands/cc/tdd-cycle.md +17 -0
- package/presets/claude/gates/pre-commit/GATE.md +5 -4
- package/presets/claude/settings.json +13 -11
- package/presets/claude/skills/backlog/SKILL.md +61 -0
- package/presets/claude/skills/evaluation/SKILL.md +47 -24
- package/presets/claude/skills/openspec/SKILL.md +46 -34
- package/presets/claude/skills/security/SKILL.md +382 -0
- package/presets/claude/skills/security-ai-llm/SKILL.md +43 -0
- package/presets/claude/skills/security-blue-team/SKILL.md +43 -0
- package/presets/claude/skills/security-cloud/SKILL.md +43 -0
- package/presets/claude/skills/security-crypto/SKILL.md +43 -0
- package/presets/claude/skills/security-exploit-dev/SKILL.md +45 -0
- package/presets/claude/skills/security-grc/SKILL.md +43 -0
- package/presets/claude/skills/security-incident-response/SKILL.md +45 -0
- package/presets/claude/skills/security-log-analysis/SKILL.md +43 -0
- package/presets/claude/skills/security-malware-analysis/SKILL.md +44 -0
- package/presets/claude/skills/security-mobile/SKILL.md +43 -0
- package/presets/claude/skills/security-network/SKILL.md +43 -0
- package/presets/claude/skills/security-ot-ics/SKILL.md +43 -0
- package/presets/claude/skills/security-recon/SKILL.md +45 -0
- package/presets/claude/skills/security-red-team/SKILL.md +44 -0
- package/presets/claude/skills/security-reverse-engineering/SKILL.md +44 -0
- package/presets/claude/skills/security-soc-automation/SKILL.md +43 -0
- package/presets/claude/skills/security-threat-hunting/SKILL.md +43 -0
- package/presets/claude/skills/security-vuln-assessment/SKILL.md +45 -0
- package/presets/claude/skills/security-web/SKILL.md +44 -0
- 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/commands/cc-ask.md +2 -1
- package/presets/codex/gates/pre-commit/GATE.md +5 -4
- 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/AGENTS.md +2 -2
- package/presets/cursor/commands/cc/api-contract.md +14 -0
- package/presets/cursor/commands/cc/ask.md +2 -1
- package/presets/cursor/commands/cc/backlog.md +105 -0
- package/presets/cursor/commands/cc/db-migration.md +14 -0
- package/presets/cursor/commands/cc/explore.md +1 -1
- 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 +30 -1
- package/presets/cursor/commands/cc/scorecard.md +2 -0
- package/presets/cursor/commands/cc/security.md +179 -0
- package/presets/cursor/commands/cc/spec-mutation.md +190 -0
- package/presets/cursor/commands/cc/tdd-cycle.md +14 -0
- package/presets/cursor/gates/pre-commit/GATE.md +5 -4
- package/presets/cursor/skills/backlog/SKILL.md +61 -0
- package/presets/cursor/skills/evaluation/SKILL.md +61 -4
- package/presets/cursor/skills/openspec/SKILL.md +47 -33
- package/presets/cursor/skills/security-ai-llm/SKILL.md +43 -0
- package/presets/cursor/skills/security-blue-team/SKILL.md +43 -0
- package/presets/cursor/skills/security-cloud/SKILL.md +43 -0
- package/presets/cursor/skills/security-crypto/SKILL.md +43 -0
- package/presets/cursor/skills/security-exploit-dev/SKILL.md +45 -0
- package/presets/cursor/skills/security-grc/SKILL.md +43 -0
- package/presets/cursor/skills/security-incident-response/SKILL.md +45 -0
- package/presets/cursor/skills/security-log-analysis/SKILL.md +43 -0
- package/presets/cursor/skills/security-malware-analysis/SKILL.md +44 -0
- package/presets/cursor/skills/security-mobile/SKILL.md +43 -0
- package/presets/cursor/skills/security-network/SKILL.md +43 -0
- package/presets/cursor/skills/security-ot-ics/SKILL.md +43 -0
- package/presets/cursor/skills/security-recon/SKILL.md +45 -0
- package/presets/cursor/skills/security-red-team/SKILL.md +44 -0
- package/presets/cursor/skills/security-reverse-engineering/SKILL.md +44 -0
- package/presets/cursor/skills/security-soc-automation/SKILL.md +43 -0
- package/presets/cursor/skills/security-threat-hunting/SKILL.md +43 -0
- package/presets/cursor/skills/security-vuln-assessment/SKILL.md +45 -0
- package/presets/cursor/skills/security-web/SKILL.md +44 -0
- 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-ask.md +2 -1
- package/presets/opencode/commands/cc-backlog.md +68 -0
- package/presets/opencode/commands/cc-db-migration.md +14 -0
- package/presets/opencode/commands/cc-explore.md +1 -1
- 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 +17 -1
- package/presets/opencode/commands/cc-scorecard.md +2 -0
- package/presets/opencode/commands/cc-security.md +179 -0
- package/presets/opencode/commands/cc-spec-mutation.md +190 -0
- package/presets/opencode/commands/cc-tdd-cycle.md +14 -0
- package/presets/opencode/gates/pre-commit/GATE.md +5 -4
- 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 +61 -0
- package/presets/opencode/skills/evaluation/SKILL.md +61 -2
- package/presets/opencode/skills/openspec/SKILL.md +47 -31
- package/presets/opencode/skills/security-ai-llm/SKILL.md +43 -0
- package/presets/opencode/skills/security-blue-team/SKILL.md +43 -0
- package/presets/opencode/skills/security-cloud/SKILL.md +43 -0
- package/presets/opencode/skills/security-crypto/SKILL.md +43 -0
- package/presets/opencode/skills/security-exploit-dev/SKILL.md +45 -0
- package/presets/opencode/skills/security-grc/SKILL.md +43 -0
- package/presets/opencode/skills/security-incident-response/SKILL.md +45 -0
- package/presets/opencode/skills/security-log-analysis/SKILL.md +43 -0
- package/presets/opencode/skills/security-malware-analysis/SKILL.md +44 -0
- package/presets/opencode/skills/security-mobile/SKILL.md +43 -0
- package/presets/opencode/skills/security-network/SKILL.md +43 -0
- package/presets/opencode/skills/security-ot-ics/SKILL.md +43 -0
- package/presets/opencode/skills/security-recon/SKILL.md +45 -0
- package/presets/opencode/skills/security-red-team/SKILL.md +44 -0
- package/presets/opencode/skills/security-reverse-engineering/SKILL.md +44 -0
- package/presets/opencode/skills/security-soc-automation/SKILL.md +43 -0
- package/presets/opencode/skills/security-threat-hunting/SKILL.md +43 -0
- package/presets/opencode/skills/security-vuln-assessment/SKILL.md +45 -0
- package/presets/opencode/skills/security-web/SKILL.md +44 -0
- 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/council/council.yml +12 -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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cc-scorecard
|
|
3
|
+
description: checklist, and aggregate stats.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# scorecard
|
|
7
|
+
|
|
8
|
+
Invoke as `$cc-scorecard`. The user request follows the skill mention.
|
|
9
|
+
|
|
10
|
+
# Scorecard Evaluation Workflow
|
|
11
|
+
|
|
12
|
+
Scope: $ARGUMENTS
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Step 0 — CCEP Bootstrap
|
|
17
|
+
|
|
18
|
+
Command: `scorecard` (fixed for this workflow — do not infer from user text)
|
|
19
|
+
|
|
20
|
+
1. Run: `npx cc-codeconductor ccep parse --command scorecard "$ARGUMENTS" --output json`
|
|
21
|
+
2. Run: `npx cc-codeconductor ccep resolve --command scorecard "$ARGUMENTS" --output json`
|
|
22
|
+
3. Run: `npx cc-codeconductor ccep profile scorecard --output json`
|
|
23
|
+
4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command scorecard --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
24
|
+
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Step 1 — Identify task
|
|
29
|
+
|
|
30
|
+
Use `$ARGUMENTS` as task id (e.g. `BC-001`) or read active item from `npx cc-codeconductor openspec status`.
|
|
31
|
+
|
|
32
|
+
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`.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Step 2 — Create scorecard with auto-signals
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx cc-codeconductor scorecard create --task <id> --agent reviewer --from-diff
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Review auto-suggested criteria (minimal diff, cc-gain). Complete remaining scores 0–3 per [`docs/agent-scorecard.md`](docs/agent-scorecard.md).
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Step 3 — Regression (optional)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx cc-codeconductor scorecard regression
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If required checks fail, **STOP** and report failures.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Step 4 — Record outcome
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx cc-codeconductor scorecard record --task <id> --agent reviewer --model <model> --verdict PASS --score 2.5
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Include `--cost` and `--tokens` when available from session metrics.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Step 5 — Aggregate
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npx cc-codeconductor scorecard aggregate
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Report pass rate and average weighted score.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Routing on verdict
|
|
77
|
+
|
|
78
|
+
- **PASS** — accept deliverable; update backlog if applicable
|
|
79
|
+
- **REVISE** — return to implementer/tester with findings
|
|
80
|
+
- **REJECT** — route to task-coach for re-scoping
|
|
81
|
+
|
|
82
|
+
Apply skill `evaluation`.
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cc-security
|
|
3
|
+
description: security-* skills, authorization gate, risk-based routing, hardening, and review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# security
|
|
7
|
+
|
|
8
|
+
Invoke as `$cc-security`. The user request follows the skill mention.
|
|
9
|
+
|
|
10
|
+
# Defensive Security Workflow
|
|
11
|
+
|
|
12
|
+
Security objective: $ARGUMENTS
|
|
13
|
+
|
|
14
|
+
Provide the following information in $ARGUMENTS:
|
|
15
|
+
|
|
16
|
+
- What must be reviewed or hardened, and why
|
|
17
|
+
- Domain: a `security-*` skill id (recon, vuln-assessment, web, cloud, IR,
|
|
18
|
+
hunting, GRC, …) or `web-app` / `api` / `cloud-config` /
|
|
19
|
+
`dependency-supply-chain` / `secrets`
|
|
20
|
+
- Authorization: who authorized this work on this target, and the scope boundary
|
|
21
|
+
- Risk classification (`low`, `medium`, or `high`), if known
|
|
22
|
+
- Scope: which files, modules, repos, or environments are in and out of bounds
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Scope and authorization
|
|
27
|
+
|
|
28
|
+
This workflow performs **authorized defensive security work only**: threat
|
|
29
|
+
modeling, hardening, secure configuration, dependency and supply-chain review,
|
|
30
|
+
secret hygiene, and detection coverage.
|
|
31
|
+
|
|
32
|
+
Refuse outright and offer the defensive equivalent instead (threat model,
|
|
33
|
+
hardening, detection coverage, dependency audit):
|
|
34
|
+
|
|
35
|
+
- Exploit or proof-of-concept development
|
|
36
|
+
- Malware authoring, or malware analysis intended for reuse
|
|
37
|
+
- Reverse engineering aimed at bypassing a control
|
|
38
|
+
- Red-team playbooks
|
|
39
|
+
- Any unauthorized-access procedure
|
|
40
|
+
|
|
41
|
+
Scope is limited to the repository under analysis. Do not scan, probe, or
|
|
42
|
+
perform reconnaissance against third-party hosts.
|
|
43
|
+
|
|
44
|
+
Do not proceed without an authorization statement. Do not produce exploit
|
|
45
|
+
payloads, malware, or attack procedures.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Step 0 — CCEP Bootstrap
|
|
50
|
+
|
|
51
|
+
Command: `security` (fixed for this workflow — do not infer from user text)
|
|
52
|
+
|
|
53
|
+
1. Run: `npx cc-codeconductor ccep parse --command security "$ARGUMENTS" --output json`
|
|
54
|
+
2. Run: `npx cc-codeconductor ccep resolve --command security "$ARGUMENTS" --output json`
|
|
55
|
+
3. Run: `npx cc-codeconductor ccep profile security --output json`
|
|
56
|
+
4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command security --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
57
|
+
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
58
|
+
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Step 1 — Wayfinding (repo-explorer)
|
|
63
|
+
|
|
64
|
+
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
65
|
+
`graphify path` / `graphify explain` when needed). Then invoke `repo-explorer`
|
|
66
|
+
to map modules, conventions, and impact radius. Do not write code in this step.
|
|
67
|
+
Record a Repo Map artifact before intake. Load the matching `security-*` skill
|
|
68
|
+
for the named domain (see `.claude/skills/security-*/SKILL.md`). Keep the OWASP
|
|
69
|
+
`security` skill for application-security reviews.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Step 2 — Task Card validation (task-coach)
|
|
74
|
+
|
|
75
|
+
Invoke `task-coach` with the security objective above.
|
|
76
|
+
|
|
77
|
+
task-coach must produce a Task Card that includes:
|
|
78
|
+
|
|
79
|
+
- Objective: what must be reviewed or hardened, in one sentence
|
|
80
|
+
- Domain: which `security-*` skill applies, or `web-app` / `api` /
|
|
81
|
+
`cloud-config` / `dependency-supply-chain` / `secrets`
|
|
82
|
+
- Authorization: who authorized this work on this target, and the scope boundary
|
|
83
|
+
- Risk classification: `low`, `medium`, or `high`
|
|
84
|
+
- Scope: which files or modules are likely affected
|
|
85
|
+
|
|
86
|
+
If authorization is absent, unclear, or names a system the requester does not
|
|
87
|
+
own or operate, **STOP and refuse. Do not route the task.**
|
|
88
|
+
|
|
89
|
+
Redact secrets, tokens, and credentials from any evidence before it enters the
|
|
90
|
+
Task Card. Summarize logs; do not paste env files.
|
|
91
|
+
|
|
92
|
+
**STOP here. Show the Task Card and wait for human confirmation.**
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Step 3 — Route by risk
|
|
97
|
+
|
|
98
|
+
Read the risk field from the Task Card and follow the corresponding route.
|
|
99
|
+
|
|
100
|
+
### Low-risk route
|
|
101
|
+
|
|
102
|
+
Applies when: the weakness is isolated, not exploitable in the current
|
|
103
|
+
configuration, and no authentication, secret, or dependency boundary is
|
|
104
|
+
involved.
|
|
105
|
+
|
|
106
|
+
Route: `task-coach` → `tester` → `implementer`
|
|
107
|
+
|
|
108
|
+
Proceed directly to Step 4 (tests), then Step 5a.
|
|
109
|
+
|
|
110
|
+
### Medium or high-risk route
|
|
111
|
+
|
|
112
|
+
Applies when: the work touches authentication, authorization, secrets,
|
|
113
|
+
cryptography, trust-boundary input validation, or a dependency upgrade.
|
|
114
|
+
|
|
115
|
+
Route: `task-coach` → `architect` → `tester` → `implementer` → `reviewer`
|
|
116
|
+
|
|
117
|
+
Invoke `architect` before implementation. architect must:
|
|
118
|
+
|
|
119
|
+
- Identify the weakness and the affected trust boundary
|
|
120
|
+
- Define the hardening approach and affected files
|
|
121
|
+
- Flag any regression risk to adjacent components
|
|
122
|
+
- Produce a Technical Plan
|
|
123
|
+
|
|
124
|
+
On **high** risk, also invoke `security-reviewer` before Reviewer.
|
|
125
|
+
|
|
126
|
+
**STOP here if high-risk. Show the Technical Plan and wait for human approval
|
|
127
|
+
before continuing.**
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Step 4 — Tests (tester)
|
|
132
|
+
|
|
133
|
+
Invoke `tester` for all risk levels.
|
|
134
|
+
|
|
135
|
+
tester must:
|
|
136
|
+
|
|
137
|
+
1. Write a regression test that proves the weakness exists and confirm it fails
|
|
138
|
+
before any change (RED)
|
|
139
|
+
2. Verify that existing tests still pass
|
|
140
|
+
3. Produce a Coverage Summary: test added, case covered
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Step 5a — Implementation, low-risk (implementer)
|
|
145
|
+
|
|
146
|
+
Invoke `implementer` with the Task Card.
|
|
147
|
+
Implementer creates a Git Worktree before touching any file; all edits happen inside it.
|
|
148
|
+
|
|
149
|
+
implementer must:
|
|
150
|
+
|
|
151
|
+
1. Apply the minimal hardening change — no unrelated changes
|
|
152
|
+
2. Run the suite and make the RED regression test pass
|
|
153
|
+
3. Produce an Implementation Summary: weakness, change applied, files changed
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Step 5b — Implementation, medium/high-risk (implementer)
|
|
158
|
+
|
|
159
|
+
Invoke `implementer` with the approved Technical Plan and the Task Card.
|
|
160
|
+
Implementer creates a Git Worktree before touching any file; all edits happen inside it.
|
|
161
|
+
|
|
162
|
+
implementer must follow the plan exactly. Any deviation requires a new Technical
|
|
163
|
+
Plan approval. After implementation, run the full test suite. No exploit code.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Step 6 — Review (Reviewer role) — medium/high-risk only
|
|
168
|
+
|
|
169
|
+
Invoke `reviewer` with the diff and Task Card. The Reviewer must apply the OWASP
|
|
170
|
+
rules in the `security` skill.
|
|
171
|
+
|
|
172
|
+
reviewer produces a Review Report with CRITICAL / WARNING / SUGGESTION findings.
|
|
173
|
+
If any CRITICAL findings exist, **STOP**. Do not close the task until they are
|
|
174
|
+
resolved.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Completion
|
|
179
|
+
|
|
180
|
+
Report: Task Card, Implementation Summary, regression test added, Review Report
|
|
181
|
+
(if applicable). The task is complete only when: the regression test passes, the
|
|
182
|
+
full suite passes, and no CRITICAL review findings remain.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cc-spec-mutation
|
|
3
|
+
description: into an immutable Gherkin contract (SHA-256 frozen), implement under the three laws of TDD, pass a judge audit, and merge only if every mutant dies.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# spec-mutation
|
|
7
|
+
|
|
8
|
+
Invoke as `$cc-spec-mutation`. The user request follows the skill mention.
|
|
9
|
+
|
|
10
|
+
# Spec-Mutation — Hard Spec → TDD → Judge → Mutation Gate
|
|
11
|
+
|
|
12
|
+
Scope: $ARGUMENTS
|
|
13
|
+
|
|
14
|
+
Describe what behavior you want to implement. Include:
|
|
15
|
+
|
|
16
|
+
- The function, method, or feature to implement
|
|
17
|
+
- The expected behavior (inputs, outputs, invariants, edge cases)
|
|
18
|
+
- The allowed file scope (production files that may change)
|
|
19
|
+
- The test command for the affected suite (e.g. `pytest tests/test_billing.py`)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 0 — CCEP Bootstrap
|
|
24
|
+
|
|
25
|
+
Command: `spec-mutation` (fixed for this workflow — do not infer from user text)
|
|
26
|
+
|
|
27
|
+
1. Run: `npx cc-codeconductor ccep parse --command spec-mutation "$ARGUMENTS" --output json`
|
|
28
|
+
2. Run: `npx cc-codeconductor ccep resolve --command spec-mutation "$ARGUMENTS" --output json`
|
|
29
|
+
3. Run: `npx cc-codeconductor ccep profile spec-mutation --output json`
|
|
30
|
+
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.
|
|
31
|
+
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
32
|
+
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Step 0b — OpenSpec quality gates
|
|
37
|
+
|
|
38
|
+
If `openspec status` reports an active change folder:
|
|
39
|
+
|
|
40
|
+
1. Run: `npx cc-codeconductor openspec validate --output json`
|
|
41
|
+
2. Run: `npx cc-codeconductor openspec analyze --output json`
|
|
42
|
+
3. If analyze `stop` is true or any finding is CRITICAL, stop. Do not delegate to implementer.
|
|
43
|
+
4. Next command spelling on this runner: `/cc:spec-mutation`
|
|
44
|
+
|
|
45
|
+
Local development: `bun run dev <same argv>`. Published package: `npx cc-codeconductor`.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Contract
|
|
50
|
+
|
|
51
|
+
The Gherkin specification is the **immutable contract** of the system. No code
|
|
52
|
+
merges unless it survives intentional source mutations. The loop is closed:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
[Human + spec_partner] ──> [gherkin_author] ──> [Test Freeze: SHA-256]
|
|
56
|
+
│
|
|
57
|
+
┌──────────────────────────────────────────────────────┘
|
|
58
|
+
▼
|
|
59
|
+
[tdd_craftsman] <───────────────┐ (surviving mutant)
|
|
60
|
+
(Red-Green-Refactor) │
|
|
61
|
+
│ │
|
|
62
|
+
▼ │
|
|
63
|
+
[judge] ───────────> [mutation_testing] ───> [Safe Merge]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Role mapping onto Conductor Agents (AGENTS.md):
|
|
67
|
+
|
|
68
|
+
| Workflow role | Conductor Agent | Deliverable |
|
|
69
|
+
| ------------------ | ----------------- | ------------------------------------------ |
|
|
70
|
+
| `craftsman_lead` | `orchestrator` | Routed Task Cards, per-stage scorecards |
|
|
71
|
+
| `spec_partner` | `task-coach` | Spec draft with invariants and boundaries |
|
|
72
|
+
| `gherkin_author` | `contract-builder`| Strict `.feature` file (Given/When/Then) |
|
|
73
|
+
| `tdd_craftsman` | `tester` → `implementer` | Failing test, then minimal production code |
|
|
74
|
+
| `judge` | `reviewer` | Binary verdict (PASS/REJECT) with scoring |
|
|
75
|
+
| `mutation_testing` | `tester` (runner) | Killed/survived mutant report |
|
|
76
|
+
|
|
77
|
+
## Stage 1 — Interactive refinement (`spec_partner` / task-coach)
|
|
78
|
+
|
|
79
|
+
Do not jump to implementation. Apply Socratic questioning to the initial intent:
|
|
80
|
+
|
|
81
|
+
- Preconditions, postconditions, and edge cases.
|
|
82
|
+
- Invariant matrix: what must always be true.
|
|
83
|
+
- Scope boundaries: explicit `Scope / Files` and `Scope / Out` for the Task Card.
|
|
84
|
+
|
|
85
|
+
Stop gate: human confirms the draft before formalization.
|
|
86
|
+
|
|
87
|
+
## Stage 2 — Hard Spec formalization (`gherkin_author` / contract-builder)
|
|
88
|
+
|
|
89
|
+
Formalize the agreed draft into `specs/<task>.feature` using strict Gherkin:
|
|
90
|
+
|
|
91
|
+
- No vague language ("must respond fast" is forbidden — use measurable Then steps).
|
|
92
|
+
- Every scenario declares preconditions (`Given`), actions (`When`), and
|
|
93
|
+
observable states (`Then`).
|
|
94
|
+
- Once the human approves the `.feature`, freeze it:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
shasum -a 256 specs/<task>.feature tests/ > .codeconductor/tasks/<task_id>.lock
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
From this point `specs/` and `tests/` are **read-only** for implementation
|
|
101
|
+
agents. Before every later gate, recompute the hash; any single-byte difference
|
|
102
|
+
aborts the pipeline with scorecard 0 (Specification Gaming).
|
|
103
|
+
|
|
104
|
+
## Stage 3 — TDD under the three laws (`tdd_craftsman`)
|
|
105
|
+
|
|
106
|
+
Delegates to the `/cc:tdd-cycle` state machine (`tddCycleStateMachine` in
|
|
107
|
+
`domain/loop`). Evidence must be captured with `captureTddSuiteEvidence` — do
|
|
108
|
+
not hand-edit JSON under `.codeconductor/evidence/`.
|
|
109
|
+
|
|
110
|
+
1. **Law 1 (RED):** no production code except to make a failing test pass. A
|
|
111
|
+
compile error from a missing interface counts as a failure.
|
|
112
|
+
2. **Law 2:** write exactly one failing assertion or scenario at a time.
|
|
113
|
+
3. **Law 3 (GREEN):** write only the minimal production code to pass. No
|
|
114
|
+
speculative code, no preventive heuristics, stdlib-first.
|
|
115
|
+
|
|
116
|
+
Hard rule: any write attempt against `specs/` or `tests/` during GREEN/REFACTOR
|
|
117
|
+
is a harness violation — stop execution and report.
|
|
118
|
+
|
|
119
|
+
## Stage 4 — Judge audit (`judge` / reviewer)
|
|
120
|
+
|
|
121
|
+
Deterministic gates before spending compute on mutation:
|
|
122
|
+
|
|
123
|
+
- Clean compile / diagnostics exit code 0.
|
|
124
|
+
- Traceability: every Gherkin step maps to an implemented test step.
|
|
125
|
+
- Scope Gaming audit: `git diff --name-only` must match the Task Card
|
|
126
|
+
`Scope / Files` exactly. Relaxed types, weakened assertions, or out-of-scope
|
|
127
|
+
edits → REJECT with findings.
|
|
128
|
+
|
|
129
|
+
Verdict is binary: PASS continues to the mutation gate; REJECT returns to the
|
|
130
|
+
`implement` phase with the findings attached.
|
|
131
|
+
|
|
132
|
+
## Stage 5 — Mutation gate (`mutation_testing`)
|
|
133
|
+
|
|
134
|
+
Run the deterministic AST mutator shipped with this preset:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
python3 presets/shared/mutation_runner.py \
|
|
138
|
+
--target <production_file.py> \
|
|
139
|
+
--test-command "<test command>" \
|
|
140
|
+
--spec-folder specs
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The runner applies deterministic operator mutations (`>` → `<=`, `==` → `!=`,
|
|
144
|
+
`is` → `is not`, …) one at a time, re-runs the suite per mutant, and restores
|
|
145
|
+
the original source unconditionally (`finally` rollback).
|
|
146
|
+
|
|
147
|
+
- **Mutant killed (tests fail):** the suite detects the corruption. Continue.
|
|
148
|
+
- **Mutant survived (tests pass):** the tests are blind to this branch. The
|
|
149
|
+
runner writes `specs/handover.md` + appends to
|
|
150
|
+
`specs/implementation-summary.md` and exits with code **2**.
|
|
151
|
+
|
|
152
|
+
Non-Python stacks: substitute Stryker (JS/TS), PITest (JVM), or Mutmut
|
|
153
|
+
(Python full-suite) with the same contract — 100% kill rate or hands-off.
|
|
154
|
+
|
|
155
|
+
### Hands-off protocol (exit code 2)
|
|
156
|
+
|
|
157
|
+
1. Do NOT modify production code to "fix" a surviving mutant.
|
|
158
|
+
2. Route back to `tdd_craftsman` with `specs/handover.md` as input: write the
|
|
159
|
+
missing failing test (Law 1 & 2) that asserts the mutated branch.
|
|
160
|
+
3. Re-run stages 3–5.
|
|
161
|
+
|
|
162
|
+
### Circuit breaker (max 3 loops)
|
|
163
|
+
|
|
164
|
+
The orchestrator keeps a persistent counter per Task Card. If the
|
|
165
|
+
`tdd_craftsman ↔ mutation_testing` loop does not reach a 100% kill rate after
|
|
166
|
+
**3 iterations**:
|
|
167
|
+
|
|
168
|
+
- Cancel active subagents (stop token/context spend).
|
|
169
|
+
- `git checkout -- <scope>` rollback to the last clean state.
|
|
170
|
+
- Scorecard: `STATUS = BLOCKED`; escalate to a human operator. The branch stays
|
|
171
|
+
frozen until human arbitration.
|
|
172
|
+
|
|
173
|
+
## Guardrails (harness-enforced, not prompt-enforced)
|
|
174
|
+
|
|
175
|
+
- **Test Freezing:** SHA-256 of `specs/` + `tests/` stored in
|
|
176
|
+
`.codeconductor/tasks/<task_id>.lock`; hash mismatch aborts the pipeline.
|
|
177
|
+
- **Scope Guardian:** `fs_write`/`fs_patch` paths are validated against the Task
|
|
178
|
+
Card `Scope / Files`; path escapes (`../`) and critical files (`**/.env*`,
|
|
179
|
+
`**/credentials*`, infrastructure roots) are denied per `policy.yml`.
|
|
180
|
+
- **RBAC per role:** `gherkin_author` writes only `specs/`; `tdd_craftsman`
|
|
181
|
+
reads specs/tests and writes only scoped `src/`; `judge` and
|
|
182
|
+
`mutation_testing` are read-only except the runner's rolled-back patch.
|
|
183
|
+
- **Worktree isolation:** run the whole flow in a dedicated `git worktree`;
|
|
184
|
+
protected branches (`main`, `master`, `develop`) are never touched.
|
|
185
|
+
|
|
186
|
+
## Completion criteria
|
|
187
|
+
|
|
188
|
+
- [ ] `.feature` approved and frozen (SHA-256 lock file exists and matches).
|
|
189
|
+
- [ ] RED → GREEN → REFACTOR evidence captured per phase.
|
|
190
|
+
- [ ] Judge verdict PASS (compile clean, traceability complete, scope clean).
|
|
191
|
+
- [ ] Mutation runner exits 0 with `total_mutants_killed == total_points`.
|
|
192
|
+
- [ ] Scorecard records the kill rate and iteration count (≤ 3).
|