cc-codeconductor 0.4.3 → 1.0.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.
Files changed (262) hide show
  1. package/README.md +95 -95
  2. package/dist/cli/errors.d.ts +65 -0
  3. package/dist/core/compilation/compile-checker.d.ts +51 -0
  4. package/dist/core/config/codeconductor-config.d.ts +42 -0
  5. package/dist/core/config/config-loader.d.ts +11 -0
  6. package/dist/core/filesystem/credential-guard.d.ts +18 -0
  7. package/dist/core/goal/goal-planner.d.ts +8 -0
  8. package/dist/core/goal/goal-state.d.ts +15 -0
  9. package/dist/core/loop/git-stats.d.ts +13 -0
  10. package/dist/core/loop/loop-engine.d.ts +79 -0
  11. package/dist/core/memory/episodic-store.d.ts +6 -0
  12. package/dist/core/memory/operational-state.d.ts +6 -0
  13. package/dist/core/orchestrator/runtime-orchestrator.d.ts +25 -0
  14. package/dist/core/planner/product-planner.d.ts +18 -0
  15. package/dist/core/presets/package-paths.d.ts +4 -0
  16. package/dist/core/product-graph/graph-store.d.ts +11 -0
  17. package/dist/core/product-graph/paths.d.ts +18 -0
  18. package/dist/core/verification/verification-runner.d.ts +57 -0
  19. package/dist/domain/loop/loop-state.d.ts +74 -0
  20. package/dist/domain/product/entities.d.ts +11 -0
  21. package/dist/index.d.ts +15 -0
  22. package/dist/index.js +23721 -15064
  23. package/dist/library.js +2595 -0
  24. package/dist/utils/result.d.ts +36 -0
  25. package/dist/validation/schemas.d.ts +3660 -0
  26. package/package.json +15 -2
  27. package/policy.yml +12 -11
  28. package/presets/agy/AGENTS.md +11 -5
  29. package/presets/agy/gates/pre-commit/GATE.md +136 -0
  30. package/presets/agy/skills/cc-fix/SKILL.md +2 -2
  31. package/presets/agy/skills/cc-tdd-cycle/SKILL.md +11 -0
  32. package/presets/agy/skills/evaluation/SKILL.md +6 -0
  33. package/presets/agy/skills/openspec/SKILL.md +32 -0
  34. package/presets/agy/workflows/cc-api-contract.md +12 -0
  35. package/presets/agy/workflows/cc-ask.md +55 -0
  36. package/presets/agy/workflows/cc-clarify.md +33 -0
  37. package/presets/agy/workflows/cc-council.md +31 -7
  38. package/presets/agy/workflows/cc-db-migration.md +22 -9
  39. package/presets/agy/workflows/cc-explore.md +37 -0
  40. package/presets/agy/workflows/cc-feature.md +41 -19
  41. package/presets/agy/workflows/cc-fix.md +50 -23
  42. package/presets/agy/workflows/cc-handoff.md +42 -0
  43. package/presets/agy/workflows/cc-iterative.md +128 -0
  44. package/presets/agy/workflows/cc-openspec.md +75 -0
  45. package/presets/agy/workflows/cc-pagespeed.md +12 -0
  46. package/presets/agy/workflows/cc-prototype.md +39 -0
  47. package/presets/agy/workflows/cc-refactor.md +12 -0
  48. package/presets/agy/workflows/cc-review.md +12 -0
  49. package/presets/agy/workflows/cc-scorecard.md +29 -0
  50. package/presets/agy/workflows/cc-tdd-cycle.md +24 -0
  51. package/presets/agy/workflows/cc-test-plan.md +12 -0
  52. package/presets/agy/workflows/cc-triage.md +35 -0
  53. package/presets/claude/CLAUDE.md +64 -0
  54. package/presets/claude/commands/cc/api-contract.md +12 -0
  55. package/presets/claude/commands/cc/ask.md +55 -0
  56. package/presets/claude/commands/cc/clarify.md +32 -0
  57. package/presets/claude/commands/cc/council.md +87 -0
  58. package/presets/claude/commands/cc/db-migration.md +22 -9
  59. package/presets/claude/commands/cc/explore.md +36 -0
  60. package/presets/claude/commands/cc/feature.md +49 -22
  61. package/presets/claude/commands/cc/fix.md +74 -20
  62. package/presets/claude/commands/cc/handoff.md +44 -0
  63. package/presets/claude/commands/cc/iterative.md +132 -0
  64. package/presets/claude/commands/cc/openspec.md +169 -0
  65. package/presets/claude/commands/cc/pagespeed.md +12 -0
  66. package/presets/claude/commands/cc/prototype.md +38 -0
  67. package/presets/claude/commands/cc/refactor.md +152 -1
  68. package/presets/claude/commands/cc/review.md +90 -17
  69. package/presets/claude/commands/cc/scorecard.md +77 -0
  70. package/presets/claude/commands/cc/tdd-cycle.md +53 -3
  71. package/presets/claude/commands/cc/test-plan.md +12 -0
  72. package/presets/claude/commands/cc/triage.md +34 -0
  73. package/presets/claude/gates/pre-commit/GATE.md +136 -0
  74. package/presets/claude/settings.json +8 -46
  75. package/presets/claude/skills/evaluation/SKILL.md +42 -0
  76. package/presets/claude/skills/openspec/SKILL.md +54 -0
  77. package/presets/codex/AGENTS.md +62 -5
  78. package/presets/codex/commands/cc-ask.md +55 -0
  79. package/presets/codex/gates/pre-commit/GATE.md +136 -0
  80. package/presets/cursor/.cursorignore +15 -0
  81. package/presets/cursor/AGENTS.md +504 -0
  82. package/presets/cursor/agents/architect.md +211 -0
  83. package/presets/cursor/agents/business-agent.md +44 -0
  84. package/presets/cursor/agents/complexity-auditor.md +76 -0
  85. package/presets/cursor/agents/continuous-architect.md +37 -0
  86. package/presets/cursor/agents/contract-builder.md +75 -0
  87. package/presets/cursor/agents/docs.md +181 -0
  88. package/presets/cursor/agents/goal-planner.md +71 -0
  89. package/presets/cursor/agents/impact-analyst.md +43 -0
  90. package/presets/cursor/agents/implementer.md +161 -0
  91. package/presets/cursor/agents/orchestrator.md +377 -0
  92. package/presets/cursor/agents/repo-explorer.md +100 -0
  93. package/presets/cursor/agents/reviewer.md +237 -0
  94. package/presets/cursor/agents/security-reviewer.md +113 -0
  95. package/presets/cursor/agents/task-coach.md +145 -0
  96. package/presets/cursor/agents/tester.md +241 -0
  97. package/presets/cursor/commands/cc/api-contract.md +70 -0
  98. package/presets/cursor/commands/cc/ask.md +55 -0
  99. package/presets/cursor/commands/cc/clarify.md +32 -0
  100. package/presets/cursor/commands/cc/council.md +87 -0
  101. package/presets/cursor/commands/cc/db-migration.md +71 -0
  102. package/presets/cursor/commands/cc/explore.md +36 -0
  103. package/presets/cursor/commands/cc/feature.md +137 -0
  104. package/presets/cursor/commands/cc/fix.md +148 -0
  105. package/presets/cursor/commands/cc/handoff.md +41 -0
  106. package/presets/cursor/commands/cc/iterative.md +133 -0
  107. package/presets/cursor/commands/cc/openspec.md +159 -0
  108. package/presets/cursor/commands/cc/pagespeed.md +115 -0
  109. package/presets/cursor/commands/cc/prototype.md +38 -0
  110. package/presets/cursor/commands/cc/refactor.md +160 -0
  111. package/presets/cursor/commands/cc/review.md +149 -0
  112. package/presets/cursor/commands/cc/scorecard.md +77 -0
  113. package/presets/cursor/commands/cc/tdd-cycle.md +250 -0
  114. package/presets/cursor/commands/cc/test-plan.md +150 -0
  115. package/presets/cursor/commands/cc/triage.md +34 -0
  116. package/presets/cursor/gates/pre-commit/GATE.md +136 -0
  117. package/presets/cursor/rules/behavioral-discipline.mdc +14 -0
  118. package/presets/cursor/rules/context-budget.mdc +12 -0
  119. package/presets/cursor/rules/orchestration.mdc +12 -0
  120. package/presets/cursor/rules/yagni-stdlib.mdc +11 -0
  121. package/presets/cursor/skills/android/SKILL.md +122 -0
  122. package/presets/cursor/skills/api-versioning/SKILL.md +394 -0
  123. package/presets/cursor/skills/astro/SKILL.md +322 -0
  124. package/presets/cursor/skills/auth-token-inspector/SKILL.md +33 -0
  125. package/presets/cursor/skills/code-review/SKILL.md +208 -0
  126. package/presets/cursor/skills/conductor-setup/SKILL.md +127 -0
  127. package/presets/cursor/skills/django-orm/SKILL.md +463 -0
  128. package/presets/cursor/skills/django-testing/SKILL.md +417 -0
  129. package/presets/cursor/skills/django-uv/SKILL.md +409 -0
  130. package/presets/cursor/skills/drizzle-schema-architect/SKILL.md +54 -0
  131. package/presets/cursor/skills/evaluation/SKILL.md +8 -0
  132. package/presets/cursor/skills/fastapi-pydantic-strict/SKILL.md +46 -0
  133. package/presets/cursor/skills/find-skills/SKILL.md +144 -0
  134. package/presets/cursor/skills/jpa-nplusone-detector/SKILL.md +49 -0
  135. package/presets/cursor/skills/jpa-postgres/SKILL.md +626 -0
  136. package/presets/cursor/skills/laravel-specialist/SKILL.md +267 -0
  137. package/presets/cursor/skills/laravel-specialist/references/eloquent.md +351 -0
  138. package/presets/cursor/skills/laravel-specialist/references/livewire.md +512 -0
  139. package/presets/cursor/skills/laravel-specialist/references/queues.md +423 -0
  140. package/presets/cursor/skills/laravel-specialist/references/routing.md +362 -0
  141. package/presets/cursor/skills/laravel-specialist/references/testing.md +522 -0
  142. package/presets/cursor/skills/livewire-alpine-bridge/SKILL.md +39 -0
  143. package/presets/cursor/skills/multi-agent-orchestration/README.md +144 -0
  144. package/presets/cursor/skills/multi-agent-orchestration/SKILL.md +579 -0
  145. package/presets/cursor/skills/multi-agent-orchestration/examples/framework_implementations.py +362 -0
  146. package/presets/cursor/skills/multi-agent-orchestration/examples/orchestration_patterns.py +411 -0
  147. package/presets/cursor/skills/multi-agent-orchestration/scripts/agent_communication.py +334 -0
  148. package/presets/cursor/skills/multi-agent-orchestration/scripts/benchmarking.py +341 -0
  149. package/presets/cursor/skills/multi-agent-orchestration/scripts/workflow_management.py +334 -0
  150. package/presets/cursor/skills/nextjs-typescript/SKILL.md +394 -0
  151. package/presets/cursor/skills/openspec/SKILL.md +52 -0
  152. package/presets/cursor/skills/pagespeed-insights/SKILL.md +445 -0
  153. package/presets/cursor/skills/pagespeed-insights/reference.md +50 -0
  154. package/presets/cursor/skills/pagespeed-perf/SKILL.md +281 -0
  155. package/presets/cursor/skills/php-pro/SKILL.md +210 -0
  156. package/presets/cursor/skills/php-pro/references/async-patterns.md +412 -0
  157. package/presets/cursor/skills/php-pro/references/laravel-patterns.md +377 -0
  158. package/presets/cursor/skills/php-pro/references/modern-php-features.md +323 -0
  159. package/presets/cursor/skills/php-pro/references/symfony-patterns.md +466 -0
  160. package/presets/cursor/skills/php-pro/references/testing-quality.md +466 -0
  161. package/presets/cursor/skills/python/SKILL.md +613 -0
  162. package/presets/cursor/skills/python-django-stack/SKILL.md +500 -0
  163. package/presets/cursor/skills/python-fastapi-stack/SKILL.md +464 -0
  164. package/presets/cursor/skills/security/SKILL.md +384 -0
  165. package/presets/cursor/skills/seo-analytics-injector/SKILL.md +44 -0
  166. package/presets/cursor/skills/spring-auth-auditor/SKILL.md +33 -0
  167. package/presets/cursor/skills/spring-boot-feature/SKILL.md +566 -0
  168. package/presets/cursor/skills/spring-boot-kotlin/SKILL.md +408 -0
  169. package/presets/cursor/skills/spring-boot-testing-strategy/SKILL.md +479 -0
  170. package/presets/cursor/skills/sqlalchemy/SKILL.md +473 -0
  171. package/presets/cursor/skills/tailwind-responsive-auditor/SKILL.md +32 -0
  172. package/presets/cursor/skills/tdd-mutation-tester/SKILL.md +28 -0
  173. package/presets/cursor/skills/testing-tdd/SKILL.md +592 -0
  174. package/presets/cursor/skills/workflow-orchestration-patterns/SKILL.md +98 -0
  175. package/presets/cursor/skills/workflow-orchestration-patterns/references/details.md +223 -0
  176. package/presets/opencode/agents/architect.md +22 -2
  177. package/presets/opencode/agents/complexity-auditor.md +16 -0
  178. package/presets/opencode/agents/contract-builder.md +109 -0
  179. package/presets/opencode/agents/devil.md +158 -0
  180. package/presets/opencode/agents/docs.md +19 -2
  181. package/presets/opencode/agents/goal-planner.md +112 -0
  182. package/presets/opencode/agents/implementer.md +39 -2
  183. package/presets/opencode/agents/orchestrator.md +124 -19
  184. package/presets/opencode/agents/planner.md +61 -0
  185. package/presets/opencode/agents/repo-explorer.md +15 -0
  186. package/presets/opencode/agents/reviewer.md +53 -2
  187. package/presets/opencode/agents/security-reviewer.md +159 -0
  188. package/presets/opencode/agents/task-coach.md +69 -2
  189. package/presets/opencode/agents/tester.md +18 -2
  190. package/presets/opencode/commands/cc-api-contract.md +12 -0
  191. package/presets/opencode/commands/cc-ask.md +55 -0
  192. package/presets/opencode/commands/cc-clarify.md +31 -0
  193. package/presets/opencode/commands/cc-council.md +87 -0
  194. package/presets/opencode/commands/cc-db-migration.md +22 -9
  195. package/presets/opencode/commands/cc-explore.md +35 -0
  196. package/presets/opencode/commands/cc-feature.md +41 -19
  197. package/presets/opencode/commands/cc-fix.md +50 -23
  198. package/presets/opencode/commands/cc-handoff.md +40 -0
  199. package/presets/opencode/commands/cc-iterative.md +127 -0
  200. package/presets/opencode/commands/cc-openspec.md +74 -0
  201. package/presets/opencode/commands/cc-pagespeed.md +12 -0
  202. package/presets/opencode/commands/cc-prototype.md +37 -0
  203. package/presets/opencode/commands/cc-refactor.md +12 -0
  204. package/presets/opencode/commands/cc-review.md +12 -0
  205. package/presets/opencode/commands/cc-scorecard.md +28 -0
  206. package/presets/opencode/commands/cc-tdd-cycle.md +24 -0
  207. package/presets/opencode/commands/cc-test-plan.md +12 -0
  208. package/presets/opencode/commands/cc-triage.md +33 -0
  209. package/presets/opencode/gates/pre-commit/GATE.md +136 -0
  210. package/presets/opencode/prompts/v0.1.0/DEPRECATED.md +11 -0
  211. package/presets/opencode/prompts/v0.2.0/DEPRECATED.md +11 -0
  212. package/presets/opencode/prompts/v0.3.0/DEPRECATED.md +11 -0
  213. package/presets/opencode/prompts/v0.4.0/DEPRECATED.md +11 -0
  214. package/presets/opencode/prompts/v0.5.0/architect.md +222 -0
  215. package/presets/opencode/prompts/v0.5.0/complexity-auditor.md +91 -0
  216. package/presets/opencode/prompts/v0.5.0/contract-builder.md +84 -0
  217. package/presets/opencode/prompts/v0.5.0/docs.md +190 -0
  218. package/presets/opencode/prompts/v0.5.0/goal-planner.md +80 -0
  219. package/presets/opencode/prompts/v0.5.0/implementer.md +171 -0
  220. package/presets/opencode/prompts/v0.5.0/orchestrator.md +388 -0
  221. package/presets/opencode/prompts/v0.5.0/repo-explorer.md +111 -0
  222. package/presets/opencode/prompts/v0.5.0/reviewer.md +248 -0
  223. package/presets/opencode/prompts/v0.5.0/security-reviewer.md +123 -0
  224. package/presets/opencode/prompts/v0.5.0/task-coach.md +156 -0
  225. package/presets/opencode/prompts/v0.5.0/tester.md +252 -0
  226. package/presets/opencode/prompts/v0.6.0/implementer.md +35 -0
  227. package/presets/opencode/prompts/v0.6.0/planner.md +36 -0
  228. package/presets/opencode/prompts/v0.6.0/reviewer.md +40 -0
  229. package/presets/opencode/prompts/v1.0.0/README.md +47 -0
  230. package/presets/opencode/prompts/v1.0.0/architect.md +259 -0
  231. package/presets/opencode/prompts/v1.0.0/complexity-auditor.md +116 -0
  232. package/presets/opencode/prompts/v1.0.0/contract-builder.md +120 -0
  233. package/presets/opencode/prompts/v1.0.0/devil.md +169 -0
  234. package/presets/opencode/prompts/v1.0.0/docs.md +229 -0
  235. package/presets/opencode/prompts/v1.0.0/goal-planner.md +123 -0
  236. package/presets/opencode/prompts/v1.0.0/implementer.md +228 -0
  237. package/presets/opencode/prompts/v1.0.0/orchestrator.md +474 -0
  238. package/presets/opencode/prompts/v1.0.0/planner.md +72 -0
  239. package/presets/opencode/prompts/v1.0.0/repo-explorer.md +147 -0
  240. package/presets/opencode/prompts/v1.0.0/reviewer.md +295 -0
  241. package/presets/opencode/prompts/v1.0.0/security-reviewer.md +170 -0
  242. package/presets/opencode/prompts/v1.0.0/task-coach.md +235 -0
  243. package/presets/opencode/prompts/v1.0.0/tester.md +298 -0
  244. package/presets/opencode/skills/evaluation/SKILL.md +6 -0
  245. package/presets/opencode/skills/openspec/SKILL.md +50 -0
  246. package/presets/seo-hotel/settings.json +0 -17
  247. package/presets/templates/BACKLOG.md +33 -0
  248. package/presets/templates/execution-profile.yml +6 -0
  249. package/presets/templates/model-comparison.md +11 -0
  250. package/presets/templates/regression-checklist.yml +10 -0
  251. package/src/presets/manifests/agy.yml +2 -2
  252. package/src/presets/manifests/claude.yml +2 -2
  253. package/src/presets/manifests/codex.yml +2 -2
  254. package/src/presets/manifests/cursor.yml +19 -3
  255. package/src/presets/manifests/gemini.yml +2 -2
  256. package/src/presets/manifests/opencode.yml +2 -2
  257. package/src/presets/models/agy.yml +97 -49
  258. package/src/presets/models/claude.yml +83 -39
  259. package/src/presets/models/codex.yml +83 -40
  260. package/src/presets/models/cursor.yml +83 -39
  261. package/src/presets/models/gemini.yml +83 -39
  262. package/src/presets/models/opencode.yml +78 -34
@@ -17,6 +17,18 @@ Specify what to review. Accepted formats:
17
17
 
18
18
  ---
19
19
 
20
+ ## Step 0 — CCEP Bootstrap
21
+
22
+ Command: `review` (fixed for this workflow — do not infer from user text)
23
+
24
+ 1. Run: `npx cc-codeconductor ccep parse --command review "$ARGUMENTS" --output json`
25
+ 2. Run: `npx cc-codeconductor ccep resolve --command review "$ARGUMENTS" --output json`
26
+ 3. Run: `npx cc-codeconductor ccep profile review --output json`
27
+ 4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command review --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
28
+ 5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
29
+
30
+ ---
31
+
20
32
  ## Step 1 — Diff collection
21
33
 
22
34
  Before adopting the Reviewer role, collect the diff for the specified target.
@@ -45,7 +57,33 @@ Show the diff summary (files changed, lines added/removed) before proceeding.
45
57
 
46
58
  Adopt the **Reviewer** role as defined in `CLAUDE.md`.
47
59
 
48
- Evaluate the diff against the following checklist:
60
+ Execute two axes in **parallel** without reranking between them, via separate sub-agents:
61
+
62
+ **Standards Axis** — Code smell detection against Fowler baseline with documented override:
63
+
64
+ - Long Method
65
+ - Large Class
66
+ - Duplicated Code
67
+ - Feature Envy
68
+ - Shotgun Surgery
69
+ - Primitive Obsession
70
+ - Data Clumps
71
+ - Switch Statements
72
+ - Speculative Generality
73
+ - Temporary Fields
74
+ - Message Chains
75
+ - Middle Man
76
+ - Inappropriate Intimacy
77
+ - Data Class
78
+ - Comments-as-apology
79
+
80
+ **Spec Axis** — Task Card, acceptance criteria, and scope validation:
81
+
82
+ - Does the implementation match the stated intent from the Task Card?
83
+ - Are all acceptance criteria addressed?
84
+ - Are there changes outside the stated scope?
85
+
86
+ **Combined sub-checks** (apply findings from both axes):
49
87
 
50
88
  **Correctness**
51
89
 
@@ -77,31 +115,45 @@ Evaluate the diff against the following checklist:
77
115
  - Are public interfaces documented?
78
116
  - Is CHANGELOG updated if behavior changed?
79
117
 
80
- ---
81
-
82
118
  ## Step 3 — Review Report
83
119
 
84
- Produce a structured Review Report with findings in three categories:
120
+ Produce a structured Review Report combining findings from both Standards and Spec axes (executed in parallel without reranking):
85
121
 
86
122
  ```markdown
87
123
  ## Review Report
88
124
 
89
- ### CRITICAL
90
- [Findings that must be fixed before merge — file:line, description, suggested resolution]
125
+ **Task**: [objective from Task Card] **Verdict**: [approved | approved with warnings | blocked]
126
+
127
+ ---
128
+
129
+ ### Standards Axis
130
+
131
+ Findings from Fowler code smell baseline evaluation (with documented overrides applied).
91
132
 
92
- ### WARNING
93
- [Findings that should be resolved before merge — same format as CRITICAL]
133
+ - [ ] [S1] [file:line] — [code smell type] | Override: [documented or N/A] | Required action: [change needed] (CRITICAL) or Recommended action: [change needed] (WARNING)
94
134
 
95
- ### SUGGESTION
96
- [Optional improvements — style, readability, future-proofing. These do not block merge.]
135
+ _(none)_ if no code smell findings
97
136
 
98
- ### Summary
99
- - Files reviewed: N
100
- - Total findings: N (X critical, Y warnings, Z suggestions)
101
- - Merge recommendation: APPROVED | BLOCKED
137
+ ### Spec Axis
138
+
139
+ Findings from Task Card, acceptance criteria, and scope alignment.
140
+
141
+ - [ ] [Sp1] [criterion] — [description] | Evidence: [quote] | Required action: [change needed] (CRITICAL) or Recommended action: [change needed] (WARNING)
142
+
143
+ _(none)_ if no spec findings
144
+
145
+ ### Combined Summary
146
+
147
+ - Standards findings: [count] (X CRITICAL, Y WARNING, Z SUGGESTION)
148
+ - Spec findings: [count] (X CRITICAL, Y WARNING, Z SUGGESTION)
149
+ - **Combined Verdict**: [approved | approved with warnings | blocked]
150
+ - **Verdict justification**: [one sentence explaining the combined decision]
102
151
  ```
103
152
 
104
- ---
153
+ Verdict mapping from parallel axes (no reranking):
154
+ - If either axis has CRITICAL → verdict is `blocked`
155
+ - Else if either axis has WARNING → verdict is `approved with warnings`
156
+ - Else → verdict is `approved`
105
157
 
106
158
  ## Step 4 — Merge decision
107
159
 
@@ -122,5 +174,26 @@ If no CRITICAL findings exist:
122
174
 
123
175
  ## Completion
124
176
 
125
- Deliver the complete Review Report. Never summarize or omit findings. Every
126
- finding must include a location and an actionable description.
177
+ Deliver the complete Review Report. Never summarize or omit findings.
178
+
179
+ ---
180
+
181
+ ## Step 5 — Scorecard and outcome
182
+
183
+ Record the review outcome via scorecard with explicit verdict mapping:
184
+
185
+ ```bash
186
+ npx cc-codeconductor scorecard create --from-diff --agent reviewer
187
+ npx cc-codeconductor scorecard record --verdict PASS|REVISE|REJECT --score <weighted>
188
+ npx cc-codeconductor scorecard regression
189
+ ```
190
+
191
+ **Verdict Mapping** (combined Standards + Spec axes):
192
+
193
+ - `approved` → `npx cc-codeconductor scorecard record --verdict PASS`
194
+ - `approved with warnings` → `npx cc-codeconductor scorecard record --verdict REVISE`
195
+ - `blocked` → `npx cc-codeconductor scorecard record --verdict REJECT`
196
+
197
+ Example: if the combined verdict is `blocked` (either axis found CRITICAL), record with `--verdict REJECT`.
198
+
199
+ Map each review outcome for trend tracking and decision audit.
@@ -0,0 +1,77 @@
1
+ ---
2
+ description: >-
3
+ [cc: alias] Evaluate deliverable quality — scorecard, outcome tracking, regression
4
+ checklist, and aggregate stats.
5
+ ---
6
+
7
+ # Scorecard Evaluation Workflow
8
+
9
+ Scope: $ARGUMENTS
10
+
11
+ ---
12
+
13
+ ## Step 0 — CCEP Bootstrap
14
+
15
+ Command: `scorecard` (fixed for this workflow — do not infer from user text)
16
+
17
+ 1. Run: `npx cc-codeconductor ccep parse --command scorecard "$ARGUMENTS" --output json`
18
+ 2. Run: `npx cc-codeconductor ccep resolve --command scorecard "$ARGUMENTS" --output json`
19
+ 3. Run: `npx cc-codeconductor ccep profile scorecard --output json`
20
+ 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.
21
+ 5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
22
+
23
+ ---
24
+
25
+ ## Step 1 — Identify task
26
+
27
+ Use `$ARGUMENTS` as task id (e.g. `BC-001`) or read active item from `npx cc-codeconductor openspec status`.
28
+
29
+ ---
30
+
31
+ ## Step 2 — Create scorecard with auto-signals
32
+
33
+ ```bash
34
+ npx cc-codeconductor scorecard create --task <id> --agent reviewer --from-diff
35
+ ```
36
+
37
+ Review auto-suggested criteria (minimal diff, cc-gain). Complete remaining scores 0–3 per [`docs/agent-scorecard.md`](docs/agent-scorecard.md).
38
+
39
+ ---
40
+
41
+ ## Step 3 — Regression (optional)
42
+
43
+ ```bash
44
+ npx cc-codeconductor scorecard regression
45
+ ```
46
+
47
+ If required checks fail, **STOP** and report failures.
48
+
49
+ ---
50
+
51
+ ## Step 4 — Record outcome
52
+
53
+ ```bash
54
+ npx cc-codeconductor scorecard record --task <id> --agent reviewer --model <model> --verdict PASS --score 2.5
55
+ ```
56
+
57
+ Include `--cost` and `--tokens` when available from session metrics.
58
+
59
+ ---
60
+
61
+ ## Step 5 — Aggregate
62
+
63
+ ```bash
64
+ npx cc-codeconductor scorecard aggregate
65
+ ```
66
+
67
+ Report pass rate and average weighted score.
68
+
69
+ ---
70
+
71
+ ## Routing on verdict
72
+
73
+ - **PASS** — accept deliverable; update backlog if applicable
74
+ - **REVISE** — return to implementer/tester with findings
75
+ - **REJECT** — route to task-coach for re-scoping
76
+
77
+ Apply skill `evaluation`.
@@ -18,6 +18,19 @@ Describe what behavior you want to implement. Include:
18
18
 
19
19
  ---
20
20
 
21
+ ## Step 0 — CCEP Bootstrap
22
+
23
+ Command: `tdd-cycle` (fixed for this workflow — do not infer from user text)
24
+
25
+ 1. Run: `npx cc-codeconductor ccep parse --command tdd-cycle "$ARGUMENTS" --output json`
26
+ 2. Run: `npx cc-codeconductor ccep resolve --command tdd-cycle "$ARGUMENTS" --output json`
27
+ 3. Run: `npx cc-codeconductor ccep profile tdd-cycle --output json`
28
+ 4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command tdd-cycle --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
+
21
34
  ## Before you begin — mandatory pre-check
22
35
 
23
36
  This command enforces strict TDD discipline. The three phases are sequential and
@@ -30,13 +43,38 @@ non-negotiable:
30
43
  Do not write implementation code during RED. Do not refactor during GREEN.
31
44
  Mixing phases invalidates the cycle.
32
45
 
46
+ ## Verifiable phase gates
47
+
48
+ RED → GREEN and GREEN → REFACTOR are enforced by `tddCycleStateMachine` in
49
+ `domain/loop`. Evidence must be captured with `captureTddSuiteEvidence` (verification
50
+ runner) — do not hand-edit JSON under `.codeconductor/evidence/`.
51
+
52
+ - RED→GREEN requires runner evidence that the suite **failed**.
53
+ - GREEN→REFACTOR requires runner evidence that the suite **passed**.
54
+
55
+ Do not advance phases until that evidence exists.
56
+
57
+ Each cycle covers a single vertical slice of behavior — one cycle, one
58
+ behavior — and follows red-before-green: RED must complete before GREEN
59
+ starts.
60
+
33
61
  ---
34
62
 
35
63
  ## Phase 1 — RED (Tester role)
36
64
 
37
65
  Adopt the **Tester** role as defined in `CLAUDE.md`.
38
66
 
39
- ### 1a — Scope clarification
67
+ ### 1a — Agree on the seam
68
+
69
+ Before writing any test, identify and state the seam — the point where the
70
+ behavior under test can be exercised and observed in isolation (a function
71
+ boundary, an interface, an injectable dependency). Confirm the seam does not
72
+ require reaching into implementation internals.
73
+
74
+ If no seam exists yet (the code is not structured to allow isolated testing),
75
+ say so and agree on the minimal seam to introduce before continuing.
76
+
77
+ ### 1b — Scope clarification
40
78
 
41
79
  Before writing any test, confirm:
42
80
 
@@ -47,7 +85,7 @@ Before writing any test, confirm:
47
85
 
48
86
  If the scope is ambiguous, ask one clarifying question and wait for the answer.
49
87
 
50
- ### 1b — Write the failing test
88
+ ### 1c — Write the failing test
51
89
 
52
90
  Write a test that:
53
91
 
@@ -61,7 +99,19 @@ Write a test that:
61
99
  Do not write the implementation. Do not make the test pass by any means other
62
100
  than the implementation that will follow in Phase 2.
63
101
 
64
- ### 1cRun the test suite and confirm RED
102
+ ### 1dAnti-pattern checklist
103
+
104
+ Before declaring the test ready, verify none of these anti-patterns apply:
105
+
106
+ - **Implementation-coupled** — asserts internal details instead of observable
107
+ behavior.
108
+ - **Tautological** — cannot fail given the test's own setup.
109
+ - **Horizontal slicing** — spans multiple unrelated behaviors instead of one
110
+ vertical slice.
111
+
112
+ If any anti-pattern applies, rewrite the test before continuing.
113
+
114
+ ### 1e — Run the test suite and confirm RED
65
115
 
66
116
  Run the test suite. The new test must fail. Existing tests must pass.
67
117
 
@@ -20,6 +20,18 @@ proceeding.
20
20
 
21
21
  ---
22
22
 
23
+ ## Step 0 — CCEP Bootstrap
24
+
25
+ Command: `test-plan` (fixed for this workflow — do not infer from user text)
26
+
27
+ 1. Run: `npx cc-codeconductor ccep parse --command test-plan "$ARGUMENTS" --output json`
28
+ 2. Run: `npx cc-codeconductor ccep resolve --command test-plan "$ARGUMENTS" --output json`
29
+ 3. Run: `npx cc-codeconductor ccep profile test-plan --output json`
30
+ 4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command test-plan --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
+
33
+ ---
34
+
23
35
  ## Step 1 — Scope confirmation
24
36
 
25
37
  Before generating the test plan, confirm the scope is well-defined.
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: >-
3
+ [cc: alias] Classify a request into type, risk, and the destination CodeConductor command.
4
+ ---
5
+
6
+ # Triage Workflow
7
+
8
+ Triage request: $ARGUMENTS
9
+
10
+ ## Step 0 — CCEP Bootstrap
11
+
12
+ Command: `triage` (fixed for this workflow — do not infer from user text)
13
+
14
+ 1. Run: `npx cc-codeconductor ccep parse --command triage "$ARGUMENTS" --output json`
15
+ 2. Run: `npx cc-codeconductor ccep resolve --command triage "$ARGUMENTS" --output json`
16
+ 3. Run: `npx cc-codeconductor ccep profile triage --output json`
17
+ 4. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command triage --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
18
+ 5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
19
+
20
+ ---
21
+
22
+ ## Step 1 — Classify (task-coach)
23
+
24
+ Invoke `task-coach`. Produce: title, type (`feature` | `fix` | `refactor` | `review` | `docs` | `test`), risk, named scope, and the destination command (`feature`, `fix`, `refactor`, `review`, `explore`, …).
25
+
26
+ Ask one question per unresolved branch. If the human is unavailable, emit a Markdown questionnaire and stop at ConfirmationGate.
27
+
28
+ **STOP here. Show the classification and wait for confirmation before running the destination workflow.**
29
+
30
+ ---
31
+
32
+ ## Completion
33
+
34
+ Do not implement. Hand the human a destination slash command and a partial Task Card.
@@ -0,0 +1,136 @@
1
+ # Pre-commit Gate: Typecheck and Test
2
+
3
+ Este gate instala un hook `pre-commit` que ejecuta `bun run typecheck` y `bun run test` antes de permitir commits en el repositorio. Si cualquiera de estos comandos falla, el commit es bloqueado.
4
+
5
+ ## Cuándo usar
6
+
7
+ **Para agentes**: Integra este gate en flujos de desarrollo local cuando quieras garantizar que los cambios typecheck correctamente y pasan los tests antes de ser cometidos.
8
+
9
+ **Para equipos**: Utiliza este gate como barrera de calidad local (sin dependencias externas) para prevenir commits con errores de tipado o tests fallidos.
10
+
11
+ ## Instalación
12
+
13
+ ### Paso 1: Descarga el script
14
+
15
+ El script está embebido abajo (sección "Script Installer").
16
+
17
+ ### Paso 2: Ejecuta en la raíz de tu proyecto
18
+
19
+ Desde la raíz del repositorio (o cualquier subdirectorio), extrae el bloque ```bash de este archivo y ejecuta:
20
+
21
+ bash << 'SCRIPT_EOF'
22
+ #!/bin/bash
23
+ set -e
24
+ # [contenido del bloque bash de abajo]
25
+ SCRIPT_EOF
26
+
27
+ O, más simplemente, guarda el script en un archivo temporal y ejecútalo:
28
+
29
+ curl -s https://raw.githubusercontent.com/.../ | bash
30
+
31
+ ### Paso 3: Verifica
32
+
33
+ Después de la instalación, debería verse:
34
+
35
+ Pre-commit hook installed successfully.
36
+
37
+ ## Script Installer
38
+
39
+ ```bash
40
+ #!/bin/bash
41
+ set -e
42
+
43
+ # Resolver git directory dinámicamente (worktree-safe)
44
+ GIT_DIR=$(git rev-parse --git-dir)
45
+ HOOK_PATH="$GIT_DIR/hooks/pre-commit"
46
+
47
+ # Detectar Husky o lint-staged en package.json
48
+ if grep -q '"husky"' package.json 2>/dev/null || grep -q '"lint-staged"' package.json 2>/dev/null; then
49
+ echo "Warning: Husky or lint-staged detected in package.json. Installation skipped."
50
+ exit 0
51
+ fi
52
+
53
+ # Verificar si un pre-commit hook ya existe
54
+ if [ -f "$HOOK_PATH" ]; then
55
+ echo "Warning: Pre-commit hook already exists at $HOOK_PATH. Not overwriting."
56
+ exit 0
57
+ fi
58
+
59
+ # Crear directorio hooks si no existe
60
+ mkdir -p "$GIT_DIR/hooks"
61
+
62
+ # Escribir el hook pre-commit
63
+ cat > "$HOOK_PATH" << 'HOOK_EOF'
64
+ #!/bin/bash
65
+ bun run typecheck || exit 1
66
+ bun run test || exit 1
67
+ HOOK_EOF
68
+
69
+ # Hacer el hook ejecutable
70
+ chmod +x "$HOOK_PATH"
71
+
72
+ echo "Pre-commit hook installed successfully."
73
+ ```
74
+
75
+ ## Notas de implementación
76
+
77
+ - **Sin dependencias externas**: El script no instala Husky, lint-staged, ni ninguna otra herramienta. Solo escribe un archivo shell y configura permisos.
78
+ - **Resolución dinámica de git dir**: Usa `git rev-parse --git-dir` para localizar el directorio correcto, incluso en worktrees.
79
+ - **Detección de conflictos**: Si Husky o lint-staged ya está en `package.json`, el script avisa y no instala para evitar conflictos.
80
+ - **Protección de hooks existentes**: Si ya existe un `.git/hooks/pre-commit`, el script no lo sobrescribe.
81
+ - **Solo Bun**: El hook ejecuta `bun run typecheck` y `bun run test`. Asegúrate de que estos scripts están definidos en `package.json`.
82
+
83
+ ## Verificación
84
+
85
+ Después de instalar, verifica que el hook está en su lugar.
86
+
87
+ Para verificar, ejecuta:
88
+
89
+ ls -la .git/hooks/pre-commit
90
+
91
+ Debe mostrar algo como:
92
+
93
+ -rwxr-xr-x user group ... .git/hooks/pre-commit
94
+
95
+ Luego, intenta hacer un commit. Si hay errores de tipo o tests fallidos, el commit será bloqueado:
96
+
97
+ git add .
98
+ git commit -m "test"
99
+ # Si typecheck o test falla, verás el error y el commit será abortado.
100
+
101
+ ## Troubleshooting
102
+
103
+ ### "Warning: Pre-commit hook already exists"
104
+
105
+ Ya hay un hook pre-commit. Revisa su contenido:
106
+
107
+ cat .git/hooks/pre-commit
108
+
109
+ Si quieres reemplazarlo, bórralo y ejecuta el script nuevamente:
110
+
111
+ rm .git/hooks/pre-commit
112
+ bash /path/to/installer
113
+
114
+ ### "Warning: Husky or lint-staged detected"
115
+
116
+ Tu proyecto usa Husky o lint-staged. Este gate no se instala para evitar conflictos. Si quieres usar este gate, remove Husky/lint-staged de `package.json` y ejecuta de nuevo.
117
+
118
+ ### Hook no se ejecuta al hacer commit
119
+
120
+ Verifica que el hook es ejecutable:
121
+
122
+ chmod +x .git/hooks/pre-commit
123
+
124
+ Verifica que `bun run typecheck` y `bun run test` existen en `package.json`:
125
+
126
+ cat package.json | grep -A 5 '"scripts"'
127
+
128
+ ### "command not found: bun"
129
+
130
+ Bun no está instalado o no está en PATH. Instala Bun desde https://bun.sh o configura PATH adecuadamente.
131
+
132
+ ## Adicional: Desinstalación
133
+
134
+ Para remover el hook, simplemente bórralo:
135
+
136
+ rm .git/hooks/pre-commit
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
3
  "env": {
4
4
  "CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
5
- "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1",
5
+ "CLAUDE_CODE_DISABLE_1M_CONTEXT": "0",
6
6
  "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "1",
7
7
  "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
8
8
  "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1",
@@ -13,7 +13,7 @@
13
13
  "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "1",
14
14
  "ENABLE_TOOL_SEARCH": "auto",
15
15
  "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "80",
16
- "CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "1",
16
+ "CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "0",
17
17
  "CLAUDE_CODE_SUBAGENT_MODEL": "haiku",
18
18
  "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
19
19
  "MAX_THINKING_TOKENS": "24000",
@@ -85,20 +85,6 @@
85
85
  "Bash(docker compose ps*)",
86
86
  "Bash(docker compose logs*)",
87
87
  "Read(**)",
88
- "Write(./src/**)",
89
- "Write(./app/**)",
90
- "Write(./pages/**)",
91
- "Write(./components/**)",
92
- "Write(./lib/**)",
93
- "Write(./tests/**)",
94
- "Write(./test/**)",
95
- "Write(./__tests__/**)",
96
- "Write(./prisma/**)",
97
- "Write(./drizzle/**)",
98
- "Write(./public/**)",
99
- "Write(./styles/**)",
100
- "Write(./scripts/**)",
101
- "Write(./docs/**)",
102
88
  "Edit(**)",
103
89
  "WebFetch(*)"
104
90
  ],
@@ -144,34 +130,18 @@
144
130
  "Read(~/.ssh/**)",
145
131
  "Read(~/.aws/**)",
146
132
  "Read(~/.gnupg/**)",
147
- "Write(./.env)",
148
- "Write(./.env.*)",
149
- "Write(./**/.env)",
150
133
  "Edit(./.env)",
151
134
  "Edit(./.env.*)",
152
135
  "Edit(./**/.env)"
153
136
  ],
154
137
  "ask": [
155
- "Bash(git push*)",
156
138
  "Bash(git push --force*)",
157
139
  "Bash(git reset --hard*)",
158
- "Bash(npm install*)",
159
- "Bash(npm i *)",
160
- "Bash(pnpm install*)",
161
- "Bash(pnpm add *)",
162
- "Bash(yarn add *)",
163
- "Bash(pip install*)",
164
140
  "Bash(docker run*)",
165
141
  "Bash(docker compose up*)",
166
- "Bash(docker compose down*)",
167
- "Bash(./gradlew build*)",
168
- "Bash(./gradlew bootRun*)",
169
- "Bash(mvn install*)",
170
- "Bash(mvn deploy*)",
171
- "Bash(vercel*)",
172
- "Bash(npx vercel*)"
142
+ "Bash(docker compose down*)"
173
143
  ],
174
- "defaultMode": "acceptEdits",
144
+ "defaultMode": "bypassPermissions",
175
145
  "disableBypassPermissionsMode": "disable"
176
146
  },
177
147
  "hooks": {
@@ -200,7 +170,7 @@
200
170
  "hooks": [
201
171
  {
202
172
  "type": "command",
203
- "command": "if echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '(\\.env|secrets/|id_rsa|\\.pem|\\.key)\\b' && echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '(cat|less|more|head|tail|cp |mv |scp )'; then echo 'Bloqueado: intento de leer archivos sensibles' >&2; exit 2; fi"
173
+ "command": "if echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '(\\.env|secrets/|id_rsa|\\.pem|\\.key)\\b' && echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '(cat|less|more|head|tail|cp |mv |scp )'; then echo 'Bloqueado: intento de leer archivos sensibles' >&2; exit 2; elif echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '^\\s*git\\s+(push|reset\\s+--hard)' || echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '^\\s*git\\s+clean\\s+(-[a-z]*f[a-z]*|--force)' || echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '^\\s*git\\s+branch\\s+(-D|--delete\\s+--force)' || echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '^\\s*git\\s+checkout\\s+(-f|--force|--discard-changes|--theirs|--ours|-\\s|-$)' || echo \"$CLAUDE_TOOL_INPUT_COMMAND\" | grep -qE '^\\s*git\\s+restore\\s+(-f|--force|--discard-changes|--theirs|--ours)'; then echo \"Bloqueado: El agente no tiene autoridad sobre este comando.\" >&2; exit 2; fi"
204
174
  }
205
175
  ]
206
176
  }
@@ -240,17 +210,9 @@
240
210
  "allowLocalBinding": true
241
211
  },
242
212
  "filesystem": {
243
- "denyRead": [
244
- "~/.ssh",
245
- "~/.aws",
246
- "~/.gnupg",
247
- "./.env",
248
- "./.env.*"
249
- ]
213
+ "denyRead": ["~/.ssh", "~/.aws", "~/.gnupg", "./.env", "./.env.*"]
250
214
  },
251
- "excludedCommands": [
252
- "docker *"
253
- ]
215
+ "excludedCommands": ["docker *"]
254
216
  },
255
217
  "extraKnownMarketplaces": {
256
218
  "agricidaniel-claude-seo": {
@@ -264,7 +226,7 @@
264
226
  "feedbackSurveyRate": 0,
265
227
  "spinnerTipsEnabled": false,
266
228
  "alwaysThinkingEnabled": true,
267
- "effortLevel": "xhigh",
229
+ "effortLevel": "medium",
268
230
  "awaySummaryEnabled": false,
269
231
  "showClearContextOnPlanAccept": true,
270
232
  "autoUpdatesChannel": "stable",
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: evaluation
3
+ description:
4
+ Agent scorecard criteria, outcome tracking, model profiles, and evaluation CLI.
5
+ Use when running /cc:scorecard or measuring deliverable quality.
6
+ ---
7
+
8
+ # Evaluation Skill
9
+
10
+ ## Scorecard criteria (8 weighted)
11
+
12
+ See `docs/agent-scorecard.md`. Pass threshold: weighted score >= 2.0, no criterion at 0.
13
+
14
+ ## CLI
15
+
16
+ ```bash
17
+ npx cc-codeconductor scorecard create --task BC-001 --from-diff
18
+ npx cc-codeconductor scorecard record --task BC-001 --verdict PASS --score 2.5
19
+ npx cc-codeconductor scorecard list
20
+ npx cc-codeconductor scorecard aggregate
21
+ npx cc-codeconductor scorecard models
22
+ npx cc-codeconductor scorecard regression
23
+ npx cc-codeconductor scorecard matrix
24
+ npx cc-codeconductor scorecard compare-models
25
+ npx cc-codeconductor scorecard prompt-diff 0.4.0 0.5.0 --agent architect
26
+ ```
27
+
28
+ ## Outcome tracking
29
+
30
+ Append-only: `.codeconductor/evaluation/outcomes.jsonl`
31
+
32
+ Record after each phase (openspec) and after review gate with agent, model, verdict, optional cost/tokens.
33
+
34
+ ## Execution profiles
35
+
36
+ `.codeconductor/evaluation/execution-profile.yml` — `balanced`, `quality`, `economical`.
37
+
38
+ Use `scorecard models` before OpenSpec execute loop to show phase → agent → model.
39
+
40
+ ## Verdicts
41
+
42
+ PASS / REVISE / REJECT — see scorecard calculator rules in docs.