cc-codeconductor 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/core/verification/rdd-receipt.d.ts +19 -0
- package/dist/core/verification/verification-runner.d.ts +16 -0
- package/dist/index.js +343 -245
- package/dist/library.js +36 -9
- package/package.json +2 -1
- package/presets/agy/skills/cc-feature/SKILL.md +17 -16
- package/presets/agy/skills/cc-fix/SKILL.md +28 -34
- package/presets/agy/workflows/cc-council.md +2 -0
- package/presets/claude/commands/cc/council.md +2 -83
- package/presets/codex/skills/cc-council/SKILL.md +2 -93
- package/presets/cursor/commands/cc/council.md +2 -83
- package/presets/gemini/commands/cc/council.toml +2 -83
- package/presets/opencode/commands/cc-council.md +2 -83
package/dist/library.js
CHANGED
|
@@ -1756,11 +1756,11 @@ async function runCompileCheck(options) {
|
|
|
1756
1756
|
}
|
|
1757
1757
|
}
|
|
1758
1758
|
// src/core/verification/verification-runner.ts
|
|
1759
|
-
import { mkdir as
|
|
1759
|
+
import { mkdir as mkdir6, readdir as readdir2, writeFile as writeFile5 } from "node:fs/promises";
|
|
1760
1760
|
|
|
1761
1761
|
// src/core/verification/rdd-receipt.ts
|
|
1762
|
-
import { createHash } from "node:crypto";
|
|
1763
|
-
import { readdir, readFile as readFile6 } from "node:fs/promises";
|
|
1762
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
1763
|
+
import { mkdir as mkdir5, readdir, readFile as readFile6, writeFile as writeFile4 } from "node:fs/promises";
|
|
1764
1764
|
import { join as join2, relative, resolve as resolve5, sep } from "node:path";
|
|
1765
1765
|
var EXCLUDED_DIRECTORIES = new Set([
|
|
1766
1766
|
".git",
|
|
@@ -1801,6 +1801,23 @@ function manifestHash(paths) {
|
|
|
1801
1801
|
return sha256(paths.map((entry) => `${entry.path}\x00${entry.hash}`).join(`
|
|
1802
1802
|
`));
|
|
1803
1803
|
}
|
|
1804
|
+
function receiptRegistryDir(projectRoot) {
|
|
1805
|
+
return join2(resolve5(projectRoot), ".codeconductor", "rdd-receipts");
|
|
1806
|
+
}
|
|
1807
|
+
function isWellFormedNonce(nonce) {
|
|
1808
|
+
return typeof nonce === "string" && /^[0-9a-f]{32}$/.test(nonce);
|
|
1809
|
+
}
|
|
1810
|
+
async function isRegisteredReceipt(projectRoot, receipt) {
|
|
1811
|
+
if (!isWellFormedNonce(receipt.nonce))
|
|
1812
|
+
return false;
|
|
1813
|
+
try {
|
|
1814
|
+
const raw = await readFile6(join2(receiptRegistryDir(projectRoot), `${receipt.nonce}.json`), "utf-8");
|
|
1815
|
+
const entry = JSON.parse(raw);
|
|
1816
|
+
return entry.manifestHash === receipt.manifestHash;
|
|
1817
|
+
} catch {
|
|
1818
|
+
return false;
|
|
1819
|
+
}
|
|
1820
|
+
}
|
|
1804
1821
|
function isRddReceipt(value) {
|
|
1805
1822
|
if (!value || typeof value !== "object")
|
|
1806
1823
|
return false;
|
|
@@ -1814,17 +1831,26 @@ async function captureReceipt(projectRoot, input) {
|
|
|
1814
1831
|
throw new Error("RDD receipts require at least one protected path");
|
|
1815
1832
|
}
|
|
1816
1833
|
const paths = await fingerprint(projectRoot, input.paths);
|
|
1817
|
-
|
|
1834
|
+
const hashed = manifestHash(paths);
|
|
1835
|
+
const nonce = randomBytes(16).toString("hex");
|
|
1836
|
+
const capturedAt = new Date().toISOString();
|
|
1837
|
+
const receipt = {
|
|
1818
1838
|
version: 1,
|
|
1819
1839
|
taskId: input.taskId,
|
|
1820
1840
|
phase: input.phase,
|
|
1821
1841
|
paths,
|
|
1822
1842
|
coverage: input.coverage ?? "paths",
|
|
1823
|
-
manifestHash:
|
|
1843
|
+
manifestHash: hashed,
|
|
1824
1844
|
command: input.command,
|
|
1825
1845
|
outcome: input.outcome,
|
|
1826
|
-
capturedAt
|
|
1846
|
+
capturedAt,
|
|
1847
|
+
nonce
|
|
1827
1848
|
};
|
|
1849
|
+
const directory = receiptRegistryDir(projectRoot);
|
|
1850
|
+
await mkdir5(directory, { recursive: true });
|
|
1851
|
+
const entry = { manifestHash: hashed, taskId: input.taskId, capturedAt };
|
|
1852
|
+
await writeFile4(join2(directory, `${nonce}.json`), JSON.stringify(entry, null, 2), "utf-8");
|
|
1853
|
+
return receipt;
|
|
1828
1854
|
}
|
|
1829
1855
|
async function collectReceiptPaths(projectRoot) {
|
|
1830
1856
|
const root = resolve5(projectRoot);
|
|
@@ -1845,6 +1871,7 @@ async function collectReceiptPaths(projectRoot) {
|
|
|
1845
1871
|
return paths.sort();
|
|
1846
1872
|
}
|
|
1847
1873
|
async function verifyReceipt(projectRoot, receipt) {
|
|
1874
|
+
const registered = await isRegisteredReceipt(projectRoot, receipt);
|
|
1848
1875
|
const expected = new Map(receipt.paths.map((entry) => [entry.path, entry.hash]));
|
|
1849
1876
|
const changedPaths = [];
|
|
1850
1877
|
const current = [];
|
|
@@ -1870,7 +1897,7 @@ async function verifyReceipt(projectRoot, receipt) {
|
|
|
1870
1897
|
changedPaths.sort();
|
|
1871
1898
|
const actualHash = manifestHash(current.sort((left, right) => left.path.localeCompare(right.path)));
|
|
1872
1899
|
return {
|
|
1873
|
-
valid: changedPaths.length === 0 && actualHash === receipt.manifestHash,
|
|
1900
|
+
valid: registered && changedPaths.length === 0 && actualHash === receipt.manifestHash,
|
|
1874
1901
|
expectedHash: receipt.manifestHash,
|
|
1875
1902
|
actualHash,
|
|
1876
1903
|
changedPaths
|
|
@@ -1915,8 +1942,8 @@ async function persistEvidence(projectRoot, evidence) {
|
|
|
1915
1942
|
if (!evidencePath.success)
|
|
1916
1943
|
return evidencePath;
|
|
1917
1944
|
try {
|
|
1918
|
-
await
|
|
1919
|
-
await
|
|
1945
|
+
await mkdir6(evDir, { recursive: true });
|
|
1946
|
+
await writeFile5(evidencePath.data, JSON.stringify(evidence, null, 2), "utf-8");
|
|
1920
1947
|
} catch (e) {
|
|
1921
1948
|
return err(e instanceof Error ? e : new Error(String(e)));
|
|
1922
1949
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cc-codeconductor",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "A multi-agent orchestration framework for AI-assisted software engineering workflows.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"test:fast": "bun run scripts/test-fast.ts",
|
|
55
55
|
"typecheck": "tsc --noEmit",
|
|
56
56
|
"lint": "bun run scripts/lint.ts",
|
|
57
|
+
"check:council-redirect": "bun run scripts/check-council-redirect.ts",
|
|
57
58
|
"check:coverage": "bun run scripts/check-coverage.ts",
|
|
58
59
|
"check:prompt-changelog": "bun run scripts/check-prompt-changelog.ts",
|
|
59
60
|
"check:drift": "bun run scripts/check-drift.ts",
|
|
@@ -66,31 +66,32 @@ not invoke implementer until the plan is approved.**
|
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
69
|
-
## Step 3 —
|
|
69
|
+
## Step 3 — Test coverage (tester)
|
|
70
70
|
|
|
71
|
-
Invoke `
|
|
72
|
-
Implementer creates a Git Worktree before touching any file; all edits happen inside it.
|
|
71
|
+
Invoke `tester` with the approved Technical Plan and the Task Card.
|
|
73
72
|
|
|
74
|
-
|
|
73
|
+
tester must:
|
|
75
74
|
|
|
76
|
-
1.
|
|
77
|
-
2.
|
|
78
|
-
3.
|
|
79
|
-
4. Produce
|
|
80
|
-
locally
|
|
75
|
+
1. Write failing tests to cover the new behavior (RED)
|
|
76
|
+
2. Ensure all acceptance criteria from the Task Card have at least one test
|
|
77
|
+
3. Confirm the new tests fail for the right reason before implementation
|
|
78
|
+
4. Produce a Coverage Summary: test files added or modified, cases covered
|
|
81
79
|
|
|
82
80
|
---
|
|
83
81
|
|
|
84
|
-
## Step 4 —
|
|
82
|
+
## Step 4 — Implementation (implementer)
|
|
85
83
|
|
|
86
|
-
Invoke `
|
|
84
|
+
Invoke `implementer` with the approved Technical Plan, the Task Card, and the
|
|
85
|
+
failing tests from Step 3.
|
|
86
|
+
Implementer creates a Git Worktree before touching any file; all edits happen inside it.
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
implementer must:
|
|
89
89
|
|
|
90
|
-
1.
|
|
91
|
-
2.
|
|
92
|
-
3. Run the
|
|
93
|
-
4. Produce
|
|
90
|
+
1. Read the Technical Plan before touching any file
|
|
91
|
+
2. Apply the minimal diff to make the failing tests pass — only what the plan specifies
|
|
92
|
+
3. Run the project test suite after implementation
|
|
93
|
+
4. Produce an Implementation Summary: what changed, which files, how to verify
|
|
94
|
+
locally
|
|
94
95
|
|
|
95
96
|
---
|
|
96
97
|
|
|
@@ -21,24 +21,17 @@ Provide the following information in $ARGUMENTS:
|
|
|
21
21
|
|
|
22
22
|
## Web interface scope
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
does not activate it; backend-only and native mobile work are excluded. Record
|
|
29
|
-
required visual checks as pending when unavailable. Keep findings in the existing
|
|
30
|
-
Review Report: contract failures in Spec Axis, technical issues in existing
|
|
31
|
-
subchecks, and aesthetic preferences as suggestions; do not add an axis.
|
|
24
|
+
Same web scope as `cc-feature`: when the fix concerns web layout, component
|
|
25
|
+
states, feedback, motion, or a requested UI audit, apply skill
|
|
26
|
+
`web-design-engineering` during test/implementation and review; keep this
|
|
27
|
+
workflow's gates and TDD order. See `cc-feature` for the full scope rule.
|
|
32
28
|
|
|
33
29
|
## Android phone interface scope
|
|
34
30
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
framework, or dependency presence alone does not activate it; non-UI Android work
|
|
40
|
-
stays with the general `android` skill. Audit-only requests remain read-only, and
|
|
41
|
-
unavailable visual or emulator checks remain pending rather than claimed complete.
|
|
31
|
+
Same Android scope as `cc-feature`: when the fix concerns concrete Jetpack
|
|
32
|
+
Compose phone UI or a requested UI audit, apply skill `android-ui-design`
|
|
33
|
+
during test/implementation and review; keep this workflow's gates and TDD
|
|
34
|
+
order. See `cc-feature` for the full scope rule.
|
|
42
35
|
|
|
43
36
|
|
|
44
37
|
## Step 1 — Task Card validation (task-coach)
|
|
@@ -71,7 +64,7 @@ the affected code, and no public API or shared state is involved.
|
|
|
71
64
|
|
|
72
65
|
Route: `task-coach` → `tester` → `implementer`
|
|
73
66
|
|
|
74
|
-
Proceed directly to Step
|
|
67
|
+
Proceed directly to Step 3.
|
|
75
68
|
|
|
76
69
|
### Medium or high-risk route
|
|
77
70
|
|
|
@@ -92,23 +85,37 @@ before continuing.**
|
|
|
92
85
|
|
|
93
86
|
---
|
|
94
87
|
|
|
95
|
-
## Step
|
|
88
|
+
## Step 3 — Regression tests (tester)
|
|
96
89
|
|
|
97
|
-
Invoke `
|
|
90
|
+
Invoke `tester` for all risk levels.
|
|
91
|
+
|
|
92
|
+
tester must:
|
|
93
|
+
|
|
94
|
+
1. Write a regression test that reproduces the original bug (fails before the
|
|
95
|
+
fix, passes after)
|
|
96
|
+
2. Verify that existing tests still pass
|
|
97
|
+
3. Produce a Coverage Summary: test added, case covered
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Step 4a — Implementation, low-risk (implementer)
|
|
102
|
+
|
|
103
|
+
Invoke `implementer` with the Task Card and the failing regression test from Step 3.
|
|
98
104
|
Implementer creates a Git Worktree before touching any file; all edits happen inside it.
|
|
99
105
|
|
|
100
106
|
implementer must:
|
|
101
107
|
|
|
102
108
|
1. Locate the defect using the reproduction steps
|
|
103
|
-
2. Apply the minimal fix — no unrelated changes
|
|
109
|
+
2. Apply the minimal fix to make the regression test pass — no unrelated changes
|
|
104
110
|
3. Run the test suite
|
|
105
111
|
4. Produce an Implementation Summary: root cause, fix applied, files changed
|
|
106
112
|
|
|
107
113
|
---
|
|
108
114
|
|
|
109
|
-
## Step
|
|
115
|
+
## Step 4b — Implementation, medium/high-risk (implementer)
|
|
110
116
|
|
|
111
|
-
Invoke `implementer` with the approved Technical Plan
|
|
117
|
+
Invoke `implementer` with the approved Technical Plan, the Task Card, and the
|
|
118
|
+
failing regression test from Step 3.
|
|
112
119
|
Implementer creates a Git Worktree before touching any file; all edits happen inside it.
|
|
113
120
|
|
|
114
121
|
implementer must follow the plan exactly. Any deviation requires a new Technical
|
|
@@ -116,19 +123,6 @@ Plan approval. After implementation, run the full test suite.
|
|
|
116
123
|
|
|
117
124
|
---
|
|
118
125
|
|
|
119
|
-
## Step 4 — Regression tests (tester)
|
|
120
|
-
|
|
121
|
-
Invoke `tester` for all risk levels.
|
|
122
|
-
|
|
123
|
-
tester must:
|
|
124
|
-
|
|
125
|
-
1. Write a regression test that reproduces the original bug (fails before the
|
|
126
|
-
fix, passes after)
|
|
127
|
-
2. Verify that existing tests still pass
|
|
128
|
-
3. Produce a Coverage Summary: test added, case covered
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
126
|
## Step 5 — Review (reviewer) — medium/high-risk only
|
|
133
127
|
|
|
134
128
|
Invoke `reviewer` with the diff and Task Card.
|
|
@@ -3,6 +3,8 @@ name: cc-council
|
|
|
3
3
|
description: Run the full Council-Driven Development workflow — SDD spec creation, TDD enforcement, surgical implementation, and multi-perspective review.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- Source of truth for the council workflow command. The cursor, claude and opencode copies are generated from this template by scripts/inject-ccep-bootstrap.ts; gemini and codex derive from the cursor copy via scripts/render-agent-commands.ts. Edit here, then regenerate. -->
|
|
7
|
+
|
|
6
8
|
# Council-Driven Workflow
|
|
7
9
|
|
|
8
10
|
Task request: $ARGUMENTS
|
|
@@ -2,89 +2,8 @@
|
|
|
2
2
|
description: Council-driven workflow with CCEP-1 bootstrap
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Task request: $ARGUMENTS
|
|
5
|
+
<!-- GENERATED redirect to presets/agy/workflows/cc-council.md by scripts/inject-ccep-bootstrap.ts — DO NOT EDIT. -->
|
|
8
6
|
|
|
9
7
|
## Step 0 — CCEP Bootstrap
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
command: council
|
|
13
|
-
|
|
14
|
-
1. Run: `npx cc-codeconductor ccep profile council --output json` to get the phases and their roles.
|
|
15
|
-
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command council --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
16
|
-
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command council --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
17
|
-
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Step 1 — Wayfinding (repo-explorer)
|
|
22
|
-
|
|
23
|
-
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
24
|
-
`graphify path` / `graphify explain` when needed). Then invoke `repo-explorer`
|
|
25
|
-
to map impact radius before deliberation. Do not write code in this step.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Step 2 — Deliberation & Specification (SDD)
|
|
30
|
-
|
|
31
|
-
Invoke the `council` skill to analyze the request before writing any code. The council must act as a steering committee involving `task-coach` (Product), `architect`, and `devil`.
|
|
32
|
-
|
|
33
|
-
The council must:
|
|
34
|
-
1. Clarify the prompt and define the absolute minimum scope (Simplicity Gate).
|
|
35
|
-
2. Explicitly document all assumptions and run the Grilling protocol on each one (Think Before Coding).
|
|
36
|
-
3. Draft a Task Card & Technical Plan (The Specification).
|
|
37
|
-
|
|
38
|
-
**STOP here.** Unresolved grilling questions populate `questionsForUser` in the
|
|
39
|
-
CCEP-1 `planner-output`; `ccep evaluate` (ConfirmationGate) halts until a human
|
|
40
|
-
answers. Show the agreed Task Card & Technical Plan and wait for confirmation
|
|
41
|
-
before continuing.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Step 3 — Test Definition (TDD)
|
|
46
|
-
|
|
47
|
-
Invoke `tester` with the approved Task Card & Technical Plan.
|
|
48
|
-
|
|
49
|
-
tester must:
|
|
50
|
-
1. Write failing tests based on the Acceptance Criteria defined in the Task Card.
|
|
51
|
-
2. Confirm the tests fail as expected (Red state).
|
|
52
|
-
|
|
53
|
-
**Goal-Driven Execution (Karpathy)**: Do not proceed until verifiable tests are written and fail for the correct reasons.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Step 4 — Surgical Implementation
|
|
58
|
-
|
|
59
|
-
Invoke `implementer` with the failing tests and the Technical Plan.
|
|
60
|
-
|
|
61
|
-
implementer must:
|
|
62
|
-
1. Write the minimal code required to pass the tests.
|
|
63
|
-
2. Touch ONLY the files specified in the Technical Plan (Surgical Changes).
|
|
64
|
-
3. NOT refactor adjacent code, change existing styles, or build speculative features.
|
|
65
|
-
4. Run the tests. Loop `implementer` -> `tester` until all tests pass (Green state), at most 3 iterations -- then stop and report the failing tests instead of looping.
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## Step 5 — Multi-Perspective Council Review
|
|
70
|
-
|
|
71
|
-
Invoke the `council` skill on the generated diff to perform the final review phase.
|
|
72
|
-
|
|
73
|
-
The council will evaluate the diff against the 6 axes (Architecture, Security, Product, Delivery, DataOps, Devil).
|
|
74
|
-
|
|
75
|
-
If ANY agent votes CRITICAL (especially due to over-engineering, scope creep, or missing the verifiable goals):
|
|
76
|
-
- The Review Report status is **BLOCKED**.
|
|
77
|
-
- Return to Step 4 with the feedback (at most 3 review rounds in total -- then deliver the BLOCKED verdict with the unresolved findings instead of looping).
|
|
78
|
-
|
|
79
|
-
If APPROVED (no CRITICAL findings):
|
|
80
|
-
- Deliver the final Council Verdict and the diff summary.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Completion
|
|
85
|
-
|
|
86
|
-
Deliver the complete Council Verdict. The feature is only complete when tests pass and the council explicitly approves the implementation according to the specification.
|
|
87
|
-
|
|
88
|
-
## Next
|
|
89
|
-
|
|
90
|
-
Approved: merge. Blocked: return the findings to `/cc:fix` or `/cc:feature`.
|
|
9
|
+
command: council. Read `presets/agy/workflows/cc-council.md`, then `ccep profile council` + `ccep compile --command council --view prompt`.
|
|
@@ -3,99 +3,8 @@ name: cc-council
|
|
|
3
3
|
description: Council-driven workflow with CCEP-1 bootstrap
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Invoke as `$cc-council`. The user request follows the skill mention.
|
|
9
|
-
|
|
10
|
-
## Council context budget
|
|
11
|
-
|
|
12
|
-
Use GPT-6.1 Sol with medium reasoning effort. Give each necessary council role
|
|
13
|
-
the same short evidence summary and relevant diff. Reuse those findings in the
|
|
14
|
-
verdict; avoid spawning roles for questions already answered by evidence.
|
|
15
|
-
|
|
16
|
-
# Council-Driven Workflow
|
|
17
|
-
|
|
18
|
-
Task request: $ARGUMENTS
|
|
6
|
+
<!-- GENERATED redirect to presets/agy/workflows/cc-council.md by scripts/render-agent-commands.ts — DO NOT EDIT. -->
|
|
19
7
|
|
|
20
8
|
## Step 0 — CCEP Bootstrap
|
|
21
9
|
|
|
22
|
-
|
|
23
|
-
command: council
|
|
24
|
-
|
|
25
|
-
1. Run: `npx cc-codeconductor ccep profile council --output json` to get the phases and their roles.
|
|
26
|
-
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command council --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
27
|
-
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command council --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
28
|
-
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Step 1 — Wayfinding (repo-explorer)
|
|
33
|
-
|
|
34
|
-
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
35
|
-
`graphify path` / `graphify explain` when needed). Then invoke `repo-explorer`
|
|
36
|
-
to map impact radius before deliberation. Do not write code in this step.
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Step 2 — Deliberation & Specification (SDD)
|
|
41
|
-
|
|
42
|
-
Invoke the `council` skill to analyze the request before writing any code. The council must act as a steering committee involving `task-coach` (Product), `architect`, and `devil`.
|
|
43
|
-
|
|
44
|
-
The council must:
|
|
45
|
-
1. Clarify the prompt and define the absolute minimum scope (Simplicity Gate).
|
|
46
|
-
2. Explicitly document all assumptions and run the Grilling protocol on each one (Think Before Coding).
|
|
47
|
-
3. Draft a Task Card & Technical Plan (The Specification).
|
|
48
|
-
|
|
49
|
-
**STOP here.** Unresolved grilling questions populate `questionsForUser` in the
|
|
50
|
-
CCEP-1 `planner-output`; `ccep evaluate` (ConfirmationGate) halts until a human
|
|
51
|
-
answers. Show the agreed Task Card & Technical Plan and wait for confirmation
|
|
52
|
-
before continuing.
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Step 3 — Test Definition (TDD)
|
|
57
|
-
|
|
58
|
-
Invoke `tester` with the approved Task Card & Technical Plan.
|
|
59
|
-
|
|
60
|
-
tester must:
|
|
61
|
-
1. Write failing tests based on the Acceptance Criteria defined in the Task Card.
|
|
62
|
-
2. Confirm the tests fail as expected (Red state).
|
|
63
|
-
|
|
64
|
-
**Goal-Driven Execution (Karpathy)**: Do not proceed until verifiable tests are written and fail for the correct reasons.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Step 4 — Surgical Implementation
|
|
69
|
-
|
|
70
|
-
Invoke `implementer` with the failing tests and the Technical Plan.
|
|
71
|
-
|
|
72
|
-
implementer must:
|
|
73
|
-
1. Write the minimal code required to pass the tests.
|
|
74
|
-
2. Touch ONLY the files specified in the Technical Plan (Surgical Changes).
|
|
75
|
-
3. NOT refactor adjacent code, change existing styles, or build speculative features.
|
|
76
|
-
4. Run the tests. Loop `implementer` -> `tester` until all tests pass (Green state), at most 3 iterations -- then stop and report the failing tests instead of looping.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Step 5 — Multi-Perspective Council Review
|
|
81
|
-
|
|
82
|
-
Invoke the `council` skill on the generated diff to perform the final review phase.
|
|
83
|
-
|
|
84
|
-
The council will evaluate the diff against the 6 axes (Architecture, Security, Product, Delivery, DataOps, Devil).
|
|
85
|
-
|
|
86
|
-
If ANY agent votes CRITICAL (especially due to over-engineering, scope creep, or missing the verifiable goals):
|
|
87
|
-
- The Review Report status is **BLOCKED**.
|
|
88
|
-
- Return to Step 4 with the feedback (at most 3 review rounds in total -- then deliver the BLOCKED verdict with the unresolved findings instead of looping).
|
|
89
|
-
|
|
90
|
-
If APPROVED (no CRITICAL findings):
|
|
91
|
-
- Deliver the final Council Verdict and the diff summary.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Completion
|
|
96
|
-
|
|
97
|
-
Deliver the complete Council Verdict. The feature is only complete when tests pass and the council explicitly approves the implementation according to the specification.
|
|
98
|
-
|
|
99
|
-
## Next
|
|
100
|
-
|
|
101
|
-
Approved: merge. Blocked: return the findings to `$cc-fix` or `$cc-feature`.
|
|
10
|
+
command: council. Read `presets/agy/workflows/cc-council.md`, then `ccep profile council` + `ccep compile --command council --view prompt`.
|
|
@@ -2,89 +2,8 @@
|
|
|
2
2
|
description: Council-driven workflow with CCEP-1 bootstrap
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Task request: $ARGUMENTS
|
|
5
|
+
<!-- GENERATED redirect to presets/agy/workflows/cc-council.md by scripts/inject-ccep-bootstrap.ts — DO NOT EDIT. -->
|
|
8
6
|
|
|
9
7
|
## Step 0 — CCEP Bootstrap
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
command: council
|
|
13
|
-
|
|
14
|
-
1. Run: `npx cc-codeconductor ccep profile council --output json` to get the phases and their roles.
|
|
15
|
-
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command council --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
16
|
-
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command council --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
17
|
-
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Step 1 — Wayfinding (repo-explorer)
|
|
22
|
-
|
|
23
|
-
If `graphify-out/graph.json` exists, run `graphify query "$ARGUMENTS"` (and
|
|
24
|
-
`graphify path` / `graphify explain` when needed). Then invoke `repo-explorer`
|
|
25
|
-
to map impact radius before deliberation. Do not write code in this step.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Step 2 — Deliberation & Specification (SDD)
|
|
30
|
-
|
|
31
|
-
Invoke the `council` skill to analyze the request before writing any code. The council must act as a steering committee involving `task-coach` (Product), `architect`, and `devil`.
|
|
32
|
-
|
|
33
|
-
The council must:
|
|
34
|
-
1. Clarify the prompt and define the absolute minimum scope (Simplicity Gate).
|
|
35
|
-
2. Explicitly document all assumptions and run the Grilling protocol on each one (Think Before Coding).
|
|
36
|
-
3. Draft a Task Card & Technical Plan (The Specification).
|
|
37
|
-
|
|
38
|
-
**STOP here.** Unresolved grilling questions populate `questionsForUser` in the
|
|
39
|
-
CCEP-1 `planner-output`; `ccep evaluate` (ConfirmationGate) halts until a human
|
|
40
|
-
answers. Show the agreed Task Card & Technical Plan and wait for confirmation
|
|
41
|
-
before continuing.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Step 3 — Test Definition (TDD)
|
|
46
|
-
|
|
47
|
-
Invoke `tester` with the approved Task Card & Technical Plan.
|
|
48
|
-
|
|
49
|
-
tester must:
|
|
50
|
-
1. Write failing tests based on the Acceptance Criteria defined in the Task Card.
|
|
51
|
-
2. Confirm the tests fail as expected (Red state).
|
|
52
|
-
|
|
53
|
-
**Goal-Driven Execution (Karpathy)**: Do not proceed until verifiable tests are written and fail for the correct reasons.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Step 4 — Surgical Implementation
|
|
58
|
-
|
|
59
|
-
Invoke `implementer` with the failing tests and the Technical Plan.
|
|
60
|
-
|
|
61
|
-
implementer must:
|
|
62
|
-
1. Write the minimal code required to pass the tests.
|
|
63
|
-
2. Touch ONLY the files specified in the Technical Plan (Surgical Changes).
|
|
64
|
-
3. NOT refactor adjacent code, change existing styles, or build speculative features.
|
|
65
|
-
4. Run the tests. Loop `implementer` -> `tester` until all tests pass (Green state), at most 3 iterations -- then stop and report the failing tests instead of looping.
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## Step 5 — Multi-Perspective Council Review
|
|
70
|
-
|
|
71
|
-
Invoke the `council` skill on the generated diff to perform the final review phase.
|
|
72
|
-
|
|
73
|
-
The council will evaluate the diff against the 6 axes (Architecture, Security, Product, Delivery, DataOps, Devil).
|
|
74
|
-
|
|
75
|
-
If ANY agent votes CRITICAL (especially due to over-engineering, scope creep, or missing the verifiable goals):
|
|
76
|
-
- The Review Report status is **BLOCKED**.
|
|
77
|
-
- Return to Step 4 with the feedback (at most 3 review rounds in total -- then deliver the BLOCKED verdict with the unresolved findings instead of looping).
|
|
78
|
-
|
|
79
|
-
If APPROVED (no CRITICAL findings):
|
|
80
|
-
- Deliver the final Council Verdict and the diff summary.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Completion
|
|
85
|
-
|
|
86
|
-
Deliver the complete Council Verdict. The feature is only complete when tests pass and the council explicitly approves the implementation according to the specification.
|
|
87
|
-
|
|
88
|
-
## Next
|
|
89
|
-
|
|
90
|
-
Approved: merge. Blocked: return the findings to `/cc:fix` or `/cc:feature`.
|
|
9
|
+
command: council. Read `presets/agy/workflows/cc-council.md`, then `ccep profile council` + `ccep compile --command council --view prompt`.
|
|
@@ -1,90 +1,9 @@
|
|
|
1
1
|
description = "Council-driven workflow with CCEP-1 bootstrap"
|
|
2
2
|
|
|
3
3
|
prompt = """
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Task request: {{args}}
|
|
4
|
+
<!-- GENERATED redirect to presets/agy/workflows/cc-council.md by scripts/render-agent-commands.ts — DO NOT EDIT. -->
|
|
7
5
|
|
|
8
6
|
## Step 0 — CCEP Bootstrap
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
command: council
|
|
12
|
-
|
|
13
|
-
1. Run: `npx cc-codeconductor ccep profile council --output json` to get the phases and their roles.
|
|
14
|
-
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command council --phase <phase-id> "{{args}}" --view prompt --output json`
|
|
15
|
-
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command council --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
16
|
-
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `{{args}}` to planners.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Step 1 — Wayfinding (repo-explorer)
|
|
21
|
-
|
|
22
|
-
If `graphify-out/graph.json` exists, run `graphify query "{{args}}"` (and
|
|
23
|
-
`graphify path` / `graphify explain` when needed). Then invoke `repo-explorer`
|
|
24
|
-
to map impact radius before deliberation. Do not write code in this step.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Step 2 — Deliberation & Specification (SDD)
|
|
29
|
-
|
|
30
|
-
Invoke the `council` skill to analyze the request before writing any code. The council must act as a steering committee involving `task-coach` (Product), `architect`, and `devil`.
|
|
31
|
-
|
|
32
|
-
The council must:
|
|
33
|
-
1. Clarify the prompt and define the absolute minimum scope (Simplicity Gate).
|
|
34
|
-
2. Explicitly document all assumptions and run the Grilling protocol on each one (Think Before Coding).
|
|
35
|
-
3. Draft a Task Card & Technical Plan (The Specification).
|
|
36
|
-
|
|
37
|
-
**STOP here.** Unresolved grilling questions populate `questionsForUser` in the
|
|
38
|
-
CCEP-1 `planner-output`; `ccep evaluate` (ConfirmationGate) halts until a human
|
|
39
|
-
answers. Show the agreed Task Card & Technical Plan and wait for confirmation
|
|
40
|
-
before continuing.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Step 3 — Test Definition (TDD)
|
|
45
|
-
|
|
46
|
-
Invoke `tester` with the approved Task Card & Technical Plan.
|
|
47
|
-
|
|
48
|
-
tester must:
|
|
49
|
-
1. Write failing tests based on the Acceptance Criteria defined in the Task Card.
|
|
50
|
-
2. Confirm the tests fail as expected (Red state).
|
|
51
|
-
|
|
52
|
-
**Goal-Driven Execution (Karpathy)**: Do not proceed until verifiable tests are written and fail for the correct reasons.
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Step 4 — Surgical Implementation
|
|
57
|
-
|
|
58
|
-
Invoke `implementer` with the failing tests and the Technical Plan.
|
|
59
|
-
|
|
60
|
-
implementer must:
|
|
61
|
-
1. Write the minimal code required to pass the tests.
|
|
62
|
-
2. Touch ONLY the files specified in the Technical Plan (Surgical Changes).
|
|
63
|
-
3. NOT refactor adjacent code, change existing styles, or build speculative features.
|
|
64
|
-
4. Run the tests. Loop `implementer` -> `tester` until all tests pass (Green state), at most 3 iterations -- then stop and report the failing tests instead of looping.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Step 5 — Multi-Perspective Council Review
|
|
69
|
-
|
|
70
|
-
Invoke the `council` skill on the generated diff to perform the final review phase.
|
|
71
|
-
|
|
72
|
-
The council will evaluate the diff against the 6 axes (Architecture, Security, Product, Delivery, DataOps, Devil).
|
|
73
|
-
|
|
74
|
-
If ANY agent votes CRITICAL (especially due to over-engineering, scope creep, or missing the verifiable goals):
|
|
75
|
-
- The Review Report status is **BLOCKED**.
|
|
76
|
-
- Return to Step 4 with the feedback (at most 3 review rounds in total -- then deliver the BLOCKED verdict with the unresolved findings instead of looping).
|
|
77
|
-
|
|
78
|
-
If APPROVED (no CRITICAL findings):
|
|
79
|
-
- Deliver the final Council Verdict and the diff summary.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Completion
|
|
84
|
-
|
|
85
|
-
Deliver the complete Council Verdict. The feature is only complete when tests pass and the council explicitly approves the implementation according to the specification.
|
|
86
|
-
|
|
87
|
-
## Next
|
|
88
|
-
|
|
89
|
-
Approved: merge. Blocked: return the findings to `/cc:fix` or `/cc:feature`.
|
|
8
|
+
command: council. Read `presets/agy/workflows/cc-council.md`, then `ccep profile council` + `ccep compile --command council --view prompt`.
|
|
90
9
|
"""
|