create-byan-agent 2.23.0 → 2.26.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 (172) hide show
  1. package/CHANGELOG.md +230 -0
  2. package/README.md +9 -12
  3. package/install/bin/create-byan-agent-v2.js +29 -169
  4. package/install/lib/agent-generator.js +5 -5
  5. package/install/lib/byan-web-integration.js +1 -1
  6. package/install/lib/claude-native-setup.js +1 -1
  7. package/install/lib/phase2-chat.js +3 -10
  8. package/install/lib/platforms/claude-code.js +2 -2
  9. package/install/lib/platforms/index.js +0 -2
  10. package/install/lib/project-agents-generator.js +3 -3
  11. package/install/lib/staging-consent.js +3 -3
  12. package/install/lib/subagent-generator.js +3 -3
  13. package/install/lib/yanstaller/agent-launcher.js +1 -27
  14. package/install/lib/yanstaller/detector.js +4 -4
  15. package/install/lib/yanstaller/installer.js +0 -2
  16. package/install/lib/yanstaller/interviewer.js +1 -1
  17. package/install/lib/yanstaller/platform-selector.js +1 -13
  18. package/install/package.json +1 -1
  19. package/install/src/byan-v2/context/session-state.js +2 -2
  20. package/install/src/byan-v2/index.js +2 -6
  21. package/install/src/byan-v2/orchestrator/generation-state.js +4 -4
  22. package/install/src/webui/api.js +0 -2
  23. package/install/src/webui/chat/bridge.js +1 -13
  24. package/install/src/webui/chat/cli-detector.js +0 -23
  25. package/install/src/webui/public/app.js +1 -3
  26. package/install/src/webui/public/chat.html +0 -2
  27. package/install/src/webui/public/chat.js +0 -1
  28. package/install/src/webui/public/index.html +2 -2
  29. package/install/templates/.claude/CLAUDE.md +13 -2
  30. package/install/templates/.claude/agents/bmad-byan.md +1 -1
  31. package/install/templates/.claude/hooks/autobench-stop-guard.js +286 -0
  32. package/install/templates/.claude/hooks/drain-advisory.js +85 -0
  33. package/install/templates/.claude/hooks/fact-check-absolutes.js +1 -61
  34. package/install/templates/.claude/hooks/fact-check-claims.js +69 -0
  35. package/install/templates/.claude/hooks/fd-response-check.js +37 -46
  36. package/install/templates/.claude/hooks/inject-soul.js +64 -25
  37. package/install/templates/.claude/hooks/leantime-fd-sync.js +216 -0
  38. package/install/templates/.claude/hooks/lib/autobench-config.json +81 -0
  39. package/install/templates/.claude/hooks/lib/autobench-fc-enrich.js +251 -0
  40. package/install/templates/.claude/hooks/lib/autobench-ledger-report.js +253 -0
  41. package/install/templates/.claude/hooks/lib/autobench-runtime.js +199 -0
  42. package/install/templates/.claude/hooks/lib/fact-check-core.js +69 -0
  43. package/install/templates/.claude/hooks/lib/failure-detector.js +18 -4
  44. package/install/templates/.claude/hooks/lib/transcript-read.js +137 -0
  45. package/install/templates/.claude/hooks/soul-memory-check.js +49 -25
  46. package/install/templates/.claude/hooks/soul-memory-triggers.js +27 -8
  47. package/install/templates/.claude/hooks/stage-to-byan.js +25 -7
  48. package/install/templates/.claude/hooks/strict-stop-guard.js +4 -16
  49. package/install/templates/.claude/rules/benchmark.md +251 -0
  50. package/install/templates/.claude/rules/byan-agents.md +0 -1
  51. package/install/templates/.claude/rules/byan-api.md +64 -0
  52. package/install/templates/.claude/rules/fact-check.md +1 -1
  53. package/install/templates/.claude/rules/strict-mode.md +10 -9
  54. package/install/templates/.claude/settings.json +16 -0
  55. package/install/templates/.claude/skills/byan-benchmark/SKILL.md +159 -0
  56. package/install/templates/.claude/skills/byan-byan/SKILL.md +73 -12
  57. package/install/templates/.claude/skills/byan-fact-check/SKILL.md +1 -1
  58. package/install/templates/.claude/skills/byan-hermes-dispatch/SKILL.md +5 -6
  59. package/install/templates/.claude/skills/byan-insight/SKILL.md +56 -0
  60. package/install/templates/.claude/skills/byan-orchestrate/SKILL.md +11 -3
  61. package/install/templates/.claude/skills/byan-strict/SKILL.md +4 -1
  62. package/install/templates/.claude/workflows/INDEX.md +2 -1
  63. package/install/templates/.claude/workflows/byan-benchmark.js +328 -0
  64. package/install/templates/.claude/workflows/check-implementation-readiness.js +1 -1
  65. package/install/templates/_byan/_config/agent-manifest.csv +1 -1
  66. package/install/templates/_byan/_config/autobench.yaml +510 -0
  67. package/install/templates/_byan/_config/strict-mode.yaml +9 -3
  68. package/install/templates/_byan/_config/workflow-manifest.csv +1 -0
  69. package/install/templates/_byan/agent/byan/byan.md +1 -3
  70. package/install/templates/_byan/agent/byan-flat/byan.md +1 -3
  71. package/install/templates/_byan/agent/byan-test/byan-test.md +2 -2
  72. package/install/templates/_byan/agent/byan-test-flat/byan-test.md +2 -2
  73. package/install/templates/_byan/agent/byan.optimized/byan.optimized.md +2 -2
  74. package/install/templates/_byan/agent/byan.optimized-v2/byan.optimized-v2.md +2 -2
  75. package/install/templates/_byan/agent/claude/claude.md +0 -2
  76. package/install/templates/_byan/agent/codex/codex.md +0 -2
  77. package/install/templates/_byan/agent/rachid/rachid.md +2 -10
  78. package/install/templates/_byan/agent/rachid-flat/rachid.md +2 -11
  79. package/install/templates/_byan/agent/turbo-whisper/turbo-whisper.md +2 -5
  80. package/install/templates/_byan/agent/turbo-whisper-integration/turbo-whisper-integration.md +5 -13
  81. package/install/templates/_byan/agent/yanstaller/yanstaller.md +2 -24
  82. package/install/templates/_byan/config.yaml +0 -1
  83. package/install/templates/_byan/core/activation/soul-activation.md +3 -3
  84. package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-insight-digest.js +31 -0
  85. package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-sync-rules.js +20 -4
  86. package/install/templates/_byan/mcp/byan-mcp-server/lib/advisory-autofeed.js +96 -0
  87. package/install/templates/_byan/mcp/byan-mcp-server/lib/index-generator.js +1 -1
  88. package/install/templates/_byan/mcp/byan-mcp-server/lib/insight-harvest.js +220 -0
  89. package/install/templates/_byan/mcp/byan-mcp-server/lib/kanban.js +6 -3
  90. package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-fd-core.js +205 -0
  91. package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-sync.js +415 -0
  92. package/install/templates/_byan/mcp/byan-mcp-server/lib/outcome-buffer.js +64 -0
  93. package/install/templates/_byan/mcp/byan-mcp-server/lib/precommit-gate.js +1 -1
  94. package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-activation.js +1 -1
  95. package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-mode.js +8 -0
  96. package/install/templates/_byan/mcp/byan-mcp-server/lib/sync-rules.js +172 -23
  97. package/install/templates/_byan/mcp/byan-mcp-server/lib/workflows-generator.js +1 -0
  98. package/install/templates/_byan/mcp/byan-mcp-server/server.js +262 -81
  99. package/install/templates/_byan/worker/launchers/README.md +4 -24
  100. package/install/templates/_byan/worker/workers.md +8 -9
  101. package/install/templates/_byan/workflow/simple/bmb/byan-benchmark/workflow.md +86 -0
  102. package/install/templates/_byan/workflow/simple/byan/feature-workflow.md +2 -2
  103. package/install/templates/docs/leantime-integration.md +160 -0
  104. package/package.json +3 -7
  105. package/src/byan-v2/context/session-state.js +2 -2
  106. package/src/byan-v2/generation/mantra-validator.js +3 -3
  107. package/src/byan-v2/index.js +1 -5
  108. package/src/byan-v2/integration/voice-integration.js +1 -1
  109. package/src/byan-v2/orchestrator/generation-state.js +4 -4
  110. package/src/loadbalancer/loadbalancer.js +1 -1
  111. package/src/staging/staging.js +20 -6
  112. package/install/bin/build-copilot-stubs.js +0 -138
  113. package/install/lib/platforms/copilot-cli.js +0 -123
  114. package/install/lib/platforms/vscode.js +0 -51
  115. package/install/src/byan-v2/context/copilot-context.js +0 -79
  116. package/install/src/webui/chat/copilot-adapter.js +0 -68
  117. package/install/templates/.claude/agents/bmad-marc.md +0 -25
  118. package/install/templates/.claude/skills/byan-marc/SKILL.md +0 -20
  119. package/install/templates/.github/agents/bmad-agent-bmad-master.md +0 -16
  120. package/install/templates/.github/agents/bmad-agent-bmb-agent-builder.md +0 -16
  121. package/install/templates/.github/agents/bmad-agent-bmb-module-builder.md +0 -16
  122. package/install/templates/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -16
  123. package/install/templates/.github/agents/bmad-agent-bmm-analyst.md +0 -16
  124. package/install/templates/.github/agents/bmad-agent-bmm-architect.md +0 -16
  125. package/install/templates/.github/agents/bmad-agent-bmm-dev.md +0 -16
  126. package/install/templates/.github/agents/bmad-agent-bmm-pm.md +0 -16
  127. package/install/templates/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -16
  128. package/install/templates/.github/agents/bmad-agent-bmm-quinn.md +0 -16
  129. package/install/templates/.github/agents/bmad-agent-bmm-sm.md +0 -16
  130. package/install/templates/.github/agents/bmad-agent-bmm-tech-writer.md +0 -16
  131. package/install/templates/.github/agents/bmad-agent-bmm-ux-designer.md +0 -16
  132. package/install/templates/.github/agents/bmad-agent-byan-test.md +0 -33
  133. package/install/templates/.github/agents/bmad-agent-byan-v2.md +0 -44
  134. package/install/templates/.github/agents/bmad-agent-byan.md +0 -1062
  135. package/install/templates/.github/agents/bmad-agent-carmack.md +0 -14
  136. package/install/templates/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -16
  137. package/install/templates/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -16
  138. package/install/templates/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -16
  139. package/install/templates/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -16
  140. package/install/templates/.github/agents/bmad-agent-cis-presentation-master.md +0 -16
  141. package/install/templates/.github/agents/bmad-agent-cis-storyteller.md +0 -16
  142. package/install/templates/.github/agents/bmad-agent-claude.md +0 -49
  143. package/install/templates/.github/agents/bmad-agent-codex.md +0 -49
  144. package/install/templates/.github/agents/bmad-agent-drawio.md +0 -45
  145. package/install/templates/.github/agents/bmad-agent-fact-checker.md +0 -16
  146. package/install/templates/.github/agents/bmad-agent-forgeron.md +0 -15
  147. package/install/templates/.github/agents/bmad-agent-jimmy.md +0 -15
  148. package/install/templates/.github/agents/bmad-agent-marc.md +0 -49
  149. package/install/templates/.github/agents/bmad-agent-mike.md +0 -15
  150. package/install/templates/.github/agents/bmad-agent-patnote.md +0 -49
  151. package/install/templates/.github/agents/bmad-agent-rachid.md +0 -48
  152. package/install/templates/.github/agents/bmad-agent-skeptic.md +0 -16
  153. package/install/templates/.github/agents/bmad-agent-tao.md +0 -14
  154. package/install/templates/.github/agents/bmad-agent-tea-tea.md +0 -16
  155. package/install/templates/.github/agents/bmad-agent-test-dynamic.md +0 -22
  156. package/install/templates/.github/agents/bmad-agent-yanstaller-interview.md +0 -50
  157. package/install/templates/.github/agents/bmad-agent-yanstaller-phase2.md +0 -189
  158. package/install/templates/.github/agents/bmad-agent-yanstaller.md +0 -350
  159. package/install/templates/.github/agents/expert-merise-agile.md +0 -178
  160. package/install/templates/.github/agents/franck.md +0 -379
  161. package/install/templates/.github/agents/hermes.md +0 -575
  162. package/install/templates/.github/extensions/byan-staging/extension.mjs +0 -169
  163. package/install/templates/.github/extensions/byan-staging/package.json +0 -8
  164. package/install/templates/_byan/agent/marc/marc-soul.md +0 -47
  165. package/install/templates/_byan/agent/marc/marc-tao.md +0 -77
  166. package/install/templates/_byan/agent/marc/marc.md +0 -324
  167. package/install/templates/_byan/agent/marc-flat/marc.md +0 -387
  168. package/install/templates/_byan/mcp/byan-mcp-server/lib/copilot.js +0 -148
  169. package/install/templates/_byan/worker/launchers/launch-yanstaller-copilot.md +0 -173
  170. package/install/templates/workers/cost-optimizer.js +0 -169
  171. package/src/byan-v2/context/copilot-context.js +0 -79
  172. package/src/core/dispatcher/execution-router.js +0 -66
@@ -0,0 +1,510 @@
1
+ # BYAN Auto-Benchmark — Source of truth
2
+ #
3
+ # This file is the single canonical definition of BYAN Auto-Benchmark.
4
+ # It is consumed by the `byan-sync-rules` generator (syncAutobench), which emits
5
+ # the per-platform artifacts from the values below:
6
+ # - .claude/rules/benchmark.md (owned, full-file)
7
+ # - .claude/hooks/lib/autobench-config.json (owned, full-file)
8
+ # - CLAUDE.md / AGENTS.md (upsert pointer block)
9
+ #
10
+ # Edit this file, then run the generator. Do not hand-edit the generated blocks
11
+ # (they live between BYAN-AUTOBENCH:BEGIN / BYAN-AUTOBENCH:END markers).
12
+ #
13
+ # Shape mirrors strict-mode.yaml: version, name, slug, description, three
14
+ # doctrine bricks (trigger / scaler / format), an antibloat section, injection
15
+ # banners, hook config, and a non-empty mantras array.
16
+
17
+ version: 1
18
+ name: BYAN Auto-Benchmark
19
+ slug: byan-autobench
20
+ description: >-
21
+ Proactive doctrine that makes the agent benchmark a real decision fork
22
+ (>= 2 non-substitutable options diverging on >= 1 weighted criterion) as a
23
+ compact 1-table reco before asking the user to choose, and a reactive Stop
24
+ hook that catches an unmarked choice once and forces a single regen.
25
+
26
+ # ===========================================================================
27
+ # BRICK 1 — TRIGGER. When does a turn deserve a benchmark, and when does it not.
28
+ # ===========================================================================
29
+ trigger:
30
+ # The 2-gate rule. BOTH gates must hold for a benchmark to fire.
31
+ gates:
32
+ - id: G1
33
+ rule: >-
34
+ At least 2 non-trivial, non-substitutable options. Two phrasings of the
35
+ same thing are ONE option. Two libraries that genuinely differ are TWO.
36
+ - id: G2
37
+ rule: >-
38
+ The options diverge on at least 1 weighted criterion. If every criterion
39
+ ranks them identically, there is no real fork — collapse it.
40
+
41
+ # NEVER benchmark these. A confirm or a destructive prompt is not a fork.
42
+ never_list:
43
+ - "yes/no and y/n confirmations (proceed?, continue?, ok?, on continue?)"
44
+ - "destructive prompts (delete, drop, rm -rf, overwrite, force push, reset --hard)"
45
+ - "single trivial acknowledgements (ok, done, noted)"
46
+ - "a fork already coherent with the locked stack (see anti-redundancy)"
47
+
48
+ # Routing decides links BEFORE depth decides verbosity.
49
+ routing:
50
+ internal: >-
51
+ The fork stays within the existing repo / stack (which existing module,
52
+ which local pattern). NO external links. Coherence with the current stack
53
+ is the dominant criterion. Decide from model-knowledge of the repo.
54
+ external: >-
55
+ The fork introduces a new dependency, vendor, or standard. Sourcing is
56
+ allowed: an evidence level per option, and a URL ONLY if WebFetch opened
57
+ it this turn.
58
+
59
+ # Depth dial: stakes x reversibility sets verbosity, AFTER routing.
60
+ depth_dial:
61
+ low_stakes_reversible: >-
62
+ One line. "lean X over Y (Y costs an extra dep for no gain here)." No table.
63
+ high_stakes_irreversible: >-
64
+ Full compact table + an explicit dissenting view (the strongest case for
65
+ the option you did NOT pick).
66
+
67
+ # The escape from the 2-gate rule: an obvious default is not a fork.
68
+ obvious_default_escape: >-
69
+ When one option is the obvious, coherent default and the alternatives are
70
+ strictly worse or never-listed, do NOT table it. Emit the skip marker
71
+ (<!-- BYAN-BENCH:skip reason=obvious-default -->) so the consideration is
72
+ auditable, then proceed with the default.
73
+
74
+ # Keywords in the user's text that auto-arm the benchmark posture.
75
+ choice_language_autofire:
76
+ - "should I"
77
+ - "veux-tu que je"
78
+ - "do you want me to"
79
+ - "préfères-tu"
80
+ - "which one"
81
+ - "which approach"
82
+ - "A or B"
83
+ - "option 1 or option 2"
84
+ - "vs"
85
+ - "ou bien"
86
+ - "soit ... soit"
87
+ - "pros and cons"
88
+ - "trade-off"
89
+ - "trade-offs"
90
+
91
+ # >= 7 paired POSITIVE/NEGATIVE verbatim few-shot examples. Each: situation ->
92
+ # FIRE (benchmark) vs SKIP (no benchmark) + the reason. The agent matches its
93
+ # current turn against these before deciding.
94
+ decision_tree:
95
+ - id: EX1
96
+ situation: "User: 'should I use Redis or Postgres for this session cache?'"
97
+ verdict: FIRE
98
+ reason: >-
99
+ G1 holds (two non-substitutable stores), G2 holds (they diverge on
100
+ latency, ops-cost, durability). External (new dependency) -> sourcing
101
+ allowed. Benchmark.
102
+ - id: EX2
103
+ situation: "User: 'rename the variable foo to userCount, ok?'"
104
+ verdict: SKIP
105
+ reason: >-
106
+ Never-list: this is a y/n confirm on a trivial reversible edit. Emit
107
+ skip reason=escape-hatch, just do it.
108
+ - id: EX3
109
+ situation: "User: 'which test runner — Jest or Vitest — for this repo that already uses Jest everywhere?'"
110
+ verdict: SKIP
111
+ reason: >-
112
+ Obvious-default escape: the stack is already on Jest; adding Vitest
113
+ breaks coherence for no gain. Emit skip reason=obvious-default, stay on
114
+ Jest. (If the repo had NO runner yet, this would FIRE.)
115
+ - id: EX4
116
+ situation: "User: 'design the auth layer — JWT in a cookie vs JWT in localStorage vs server sessions.'"
117
+ verdict: FIRE
118
+ reason: >-
119
+ G1 (three real options), G2 (diverge on XSS exposure, CSRF, scalability).
120
+ Security domain -> floor L2, strict-domain sourcing. High-stakes,
121
+ hard-to-reverse -> full table + dissent.
122
+ - id: EX5
123
+ situation: "User: 'delete the legacy migrations folder, proceed?'"
124
+ verdict: SKIP
125
+ reason: >-
126
+ Never-list: destructive prompt. Do NOT benchmark a delete. Emit skip
127
+ reason=escape-hatch, confirm the destructive action plainly instead.
128
+ - id: EX6
129
+ situation: "Agent has two ways to name a helper (parseRow vs rowParse) inside one private module."
130
+ verdict: SKIP
131
+ reason: >-
132
+ G1 fails: substitutable phrasings of the same thing, no weighted
133
+ criterion diverges. Pick one and move on. Emit skip reason=already-coherent.
134
+ - id: EX7
135
+ situation: "User: 'pick a charting lib for the new dashboard.' Repo has none yet."
136
+ verdict: FIRE
137
+ reason: >-
138
+ G1 (Chart.js / Recharts / D3 are non-substitutable), G2 (bundle size,
139
+ API ergonomics, customization diverge). External -> sourcing allowed,
140
+ links only if WebFetch opened them this turn.
141
+ - id: EX8
142
+ situation: "User: 'should I add a debounce of 200ms or 300ms to the search box?'"
143
+ verdict: SKIP
144
+ reason: >-
145
+ Low-stakes, reversible, and the criteria do not meaningfully diverge
146
+ (G2 weak). Collapse to one line ('lean 250ms, tune later'), emit skip
147
+ reason=obvious-default. A full table here is bloat.
148
+ - id: EX9
149
+ situation: "User: 'monorepo with Turborepo vs Nx vs polyrepo for the platform.'"
150
+ verdict: FIRE
151
+ reason: >-
152
+ G1 (three structurally different options), G2 (build caching, learning
153
+ curve, blast radius diverge). High-stakes, hard-to-reverse -> full table
154
+ + dissent. External (new tooling) -> sourcing allowed.
155
+ - id: EX10
156
+ situation: "User: 'commit this, on continue ?'"
157
+ verdict: SKIP
158
+ reason: >-
159
+ Never-list: a proceed/continue confirm. Not a fork. Emit skip
160
+ reason=escape-hatch.
161
+
162
+ # Sanity floor enforced by the marker semantics and the Stop hook.
163
+ marker_gates:
164
+ g1_min: 2 # >= 2 options or the done-marker is invalid
165
+ g2_min: 1 # divergence on >= 1 weighted criterion
166
+
167
+ # ===========================================================================
168
+ # BRICK 2 — SCALER / SOURCING. How evidence is gathered and how confident the
169
+ # reco is allowed to sound. Routing decides links BEFORE depth decides words.
170
+ # ===========================================================================
171
+ scaler:
172
+ routing_before_depth: >-
173
+ Decide internal-vs-external FIRST: it sets whether links are even allowed.
174
+ Only THEN does stakes-x-reversibility set how many words. Never let a
175
+ verbose table smuggle in links for an internal fork.
176
+
177
+ # The 5-level evidence rubric, written as text so the rule.md carries it.
178
+ evidence_rubric:
179
+ - level: L1
180
+ score: 95
181
+ sources: "RFC, W3C, ECMAScript, POSIX, an official spec."
182
+ - level: L2
183
+ score: 80
184
+ sources: "A reproducible benchmark, a CVE reference, official product docs."
185
+ - level: L3
186
+ score: 65
187
+ sources: "A peer-reviewed article or a recognized technical book."
188
+ - level: L4
189
+ score: 50
190
+ sources: "Community consensus (StackOverflow > 1000 votes)."
191
+ - level: L5
192
+ score: 20
193
+ sources: "Opinion or personal experience. Presented as such, never as fact."
194
+
195
+ # Strict-domain floors. Below the floor, the cell is BLOCKED, not guessed.
196
+ strict_floors:
197
+ security: L2 # CVE or reproducible benchmark required
198
+ performance: L2 # profiler output or reproducible benchmark required
199
+ compliance: L1 # regulatory text required
200
+
201
+ link_rule: >-
202
+ A URL appears in the table ONLY if WebFetch opened it THIS turn. Otherwise
203
+ cite from model-knowledge and tag the claim [UNVERIFIED]. Never fabricate a
204
+ URL. Never reconstruct a URL from memory and present it as opened.
205
+
206
+ # The confidence floor changes the VERB, not just a number.
207
+ confidence_verb:
208
+ assertive: >-
209
+ Evidence at or above the floor for the domain. Phrase the reco as
210
+ "recommend X" / "go with X".
211
+ lean: >-
212
+ Evidence below the floor, or model-knowledge only on a strict domain.
213
+ Phrase the reco as "lean X (low-confidence, verify before committing)".
214
+
215
+ # ===========================================================================
216
+ # BRICK 3 — FORMAT + ANTI-BLOAT. The output shape and the guards against it
217
+ # becoming a wall of text the user did not ask for.
218
+ # ===========================================================================
219
+ format:
220
+ default: >-
221
+ One compact table: a row per option, up to 4 criteria columns, a Niv
222
+ (evidence level) column, and ONE best-first recommendation line under it.
223
+ caps:
224
+ options: 4
225
+ criteria: 4
226
+ links: 3
227
+ screens: 1 # the whole benchmark fits in one screen
228
+ collapse_degenerate: >-
229
+ If only one option survives the gates, do not render a 1-row table. Collapse
230
+ to one line and emit the skip marker. A table of one is theatre.
231
+ expanded_optin:
232
+ named_trigger: "[bench:expand]"
233
+ behavior: >-
234
+ Only when the user types [bench:expand] does the agent render the expanded
235
+ form (more criteria, per-cell sourcing, the full dissent). The default
236
+ stays compact.
237
+
238
+ antibloat:
239
+ latency_guard: >-
240
+ Default to model-knowledge + [UNVERIFIED] tags. Auto-WebFetch ONLY for a
241
+ strict domain (security / performance / compliance) or a volatile fact
242
+ (current version, current price, current status). Do not fetch to decorate
243
+ an internal fork.
244
+ escape_hatch:
245
+ session_default: >-
246
+ Presence of the file .byan-autobench/off disables blocking for the
247
+ session. touch it to silence, rm it to re-enable.
248
+ cross_session_optin: >-
249
+ The config key escape_hatch.disabled=true (set via the cross-session
250
+ opt-in, regenerated from this YAML) disables blocking persistently. Both
251
+ paths still log 'satisfied-escape' so misses stay auditable.
252
+ disabled: false
253
+ no_rebenchmark: >-
254
+ Do not re-table a fork already decided and coherent with the locked stack.
255
+ If the architecture already chose Postgres, do not benchmark Redis-vs-Postgres
256
+ again unless the user explicitly reopens it.
257
+
258
+ # ===========================================================================
259
+ # Injection — the banners the generator embeds. Kept here so the lean pointer
260
+ # block and the stop-hook reason stay in sync from one source.
261
+ # ===========================================================================
262
+ injection:
263
+ context_banner: |
264
+ [AUTO-BENCHMARK ACTIVE]
265
+ Before asking the user to choose between options, benchmark the fork:
266
+ 1. Gates: >= 2 non-substitutable options diverging on >= 1 weighted criterion.
267
+ A y/n confirm, a destructive prompt, or an obvious default is NOT a fork.
268
+ 2. Route: internal (no links, coherence-first) vs external (sourcing allowed).
269
+ 3. Render ONE compact table (<= 4 options, <= 4 criteria, Niv column) with a
270
+ best-first reco line. Links only if WebFetch opened them this turn, else [UNVERIFIED].
271
+ 4. Emit the marker verbatim before the table:
272
+ <!-- BYAN-BENCH:done g1=<#options> g2=<#divergent-criteria> scope=<internal|external> conf=<assertive|lean> -->
273
+ For a deliberate non-benchmark: <!-- BYAN-BENCH:skip reason=<obvious-default|never-listed|escape-hatch|already-coherent> -->
274
+ Full doctrine: see @.claude/rules/benchmark.md
275
+
276
+ stop_block_reason: >-
277
+ Auto-benchmark: you are presenting a choice between options but emitted no
278
+ BYAN-BENCH marker. Re-present the fork as the compact 1-table benchmark
279
+ (Option | criteria | Niv + best-first reco), then emit
280
+ <!-- BYAN-BENCH:done g1=.. g2=.. scope=.. -->. If this is a
281
+ confirm/destructive/obvious-default prompt, emit
282
+ <!-- BYAN-BENCH:skip reason=.. -->. To disable for this session: touch .byan-autobench/off.
283
+
284
+ # ===========================================================================
285
+ # Hooks config — consumed by the generated .claude/hooks/lib/autobench-config.json
286
+ # that the Stop hook reads at runtime. Single source of truth so the runtime
287
+ # detection stays aligned with this doctrine.
288
+ # ===========================================================================
289
+ hooks:
290
+ # Marker patterns: {source, flags} pairs. Reconstructed into RegExp at load time.
291
+ marker_patterns:
292
+ any:
293
+ source: "<!--\\s*BYAN-BENCH:(done|skip)\\b"
294
+ flags: "i"
295
+ done:
296
+ source: "<!--\\s*BYAN-BENCH:done\\b"
297
+ flags: "i"
298
+ skip:
299
+ source: "<!--\\s*BYAN-BENCH:skip\\b"
300
+ flags: "i"
301
+ # Marker field extractors. Used by the Stop hook to parse g1/g2/scope for the
302
+ # audit ledger. Best-effort: a missing field does not invalidate the marker.
303
+ marker_fields:
304
+ g1:
305
+ source: "g1=(\\d+)"
306
+ flags: "i"
307
+ g2:
308
+ source: "g2=(\\d+)"
309
+ flags: "i"
310
+ scope:
311
+ source: "scope=(internal|external)"
312
+ flags: "i"
313
+ # NEVER-list {source, flags} pairs. A match suppresses the fallback entirely.
314
+ never_list:
315
+ - source: "\\b(yes/no|y/n|confirm|proceed\\?|continue\\?|ok\\?|on continue\\?|je confirme)\\b"
316
+ flags: "i"
317
+ - source: "\\b(delete|drop|rm -rf|overwrite|force push|reset --hard|supprimer|écraser)\\b"
318
+ flags: "i"
319
+ # Choice-language signals. Each entry is {source, flags} plus optional
320
+ # min_matches (count threshold) or requires_candidates (co-occurrence gate).
321
+ # The bullet-list detector uses min_matches so two bullet items are required.
322
+ choice_language:
323
+ - source: "\\boption\\s*[1-3a-c]\\b"
324
+ flags: "ig"
325
+ min_matches: 2
326
+ - source: "^[ \\t]*[-*][ \\t]+[A-Z][^\\n]{0,80}(:|[ \\t]-[ \\t])"
327
+ flags: "gm"
328
+ min_matches: 2
329
+ - source: "\\b(should I|veux-tu que je|do you want me to|préfères-tu|which (one|approach|option)|A or B|soit .* soit )\\b"
330
+ flags: "i"
331
+ - source: "\\b(pros?|cons?|trade-?offs?|avantages?|inconvénients?)\\b"
332
+ flags: "i"
333
+ requires_candidates: 2
334
+ # Candidate-token counter used by requires_candidates signals.
335
+ candidate_token:
336
+ source: "\\b(option|approach|approche|alternative|choix|solution|stack|library|librairie|vendor|standard)s?\\b"
337
+ flags: "ig"
338
+ # Escape-hatch: session flag (file presence) and cross-session toggle (disabled).
339
+ escape_hatch:
340
+ session_flag: ".byan-autobench/off"
341
+ block_token_dir: ".byan-autobench"
342
+ disabled: false
343
+ # Enforcement arming (approach C). The Stop hook ships DISARMED: it observes and
344
+ # ledgers every turn but does not block until explicitly armed, so day one is
345
+ # zero noise / zero latency. Arming is config-only: set armed: true here and run
346
+ # byan-sync-rules to regenerate the config. There is no loose flag file — a stray
347
+ # file on disk must not silently arm a machine. Default OFF — the net is
348
+ # pre-built but inert until chosen.
349
+ enforcement:
350
+ armed: false
351
+ # The audit trail the Stop hook appends to (one JSONL line per invocation).
352
+ ledger_path: "_byan-output/benchmark-ledger.jsonl"
353
+ # Stop-block banner emitted when the hook fires. Kept in the YAML so the
354
+ # runtime message stays in sync with the doctrine text above.
355
+ stop_block: >-
356
+ Auto-benchmark: you are presenting a choice between options but emitted no
357
+ BYAN-BENCH marker. Re-present the fork as the compact 1-table benchmark
358
+ (Option | criteria | Niv + best-first reco), then emit
359
+ <!-- BYAN-BENCH:done g1=.. g2=.. scope=.. -->. If this is a
360
+ confirm/destructive/obvious-default prompt, emit
361
+ <!-- BYAN-BENCH:skip reason=.. -->. To disable for this session: touch .byan-autobench/off.
362
+
363
+ # ===========================================================================
364
+ # The hard ceiling — documented honestly. This is NOT a false promise.
365
+ # ===========================================================================
366
+ ceiling:
367
+ github_issue: "GH #28273"
368
+ note: >-
369
+ Claude Code exposes no pre-display interception hook: there is no event that
370
+ fires BEFORE the assistant's text reaches the user. The benchmark therefore
371
+ cannot be injected into a turn before it is shown. Two mechanisms cover this
372
+ honestly: (1) the PROACTIVE doctrine (this file -> CLAUDE.md/rules) makes the
373
+ agent self-apply the benchmark before it writes; (2) the REACTIVE Stop hook
374
+ catches a turn that presented a choice WITHOUT a marker and forces exactly
375
+ one regen. The Stop hook is post-hoc by construction — it cannot rewrite the
376
+ shown text, only block the turn end and require a re-presentation. Promising
377
+ pre-display interception would be a lie; this design does not make it.
378
+
379
+ # ===========================================================================
380
+ # Mantras — the rules the doctrine makes non-negotiable. Phrased as imperatives,
381
+ # kept free of absolute words so the fact-check filter passes.
382
+ # ===========================================================================
383
+ mantras:
384
+ - id: BENCH-1
385
+ name: Gate Before Table
386
+ rule: >-
387
+ Render a benchmark only when both gates hold: >= 2 non-substitutable
388
+ options diverging on >= 1 weighted criterion. Otherwise collapse and skip.
389
+ rationale: A table of non-choices is noise that buries the real signal.
390
+ priority: critical
391
+ validation_keywords: ["two gates", "non-substitutable", "weighted criterion"]
392
+
393
+ - id: BENCH-2
394
+ name: Never Benchmark A Confirm
395
+ rule: >-
396
+ A yes/no confirmation, a proceed/continue prompt, or a destructive action
397
+ is never a benchmark. Confirm it plainly and emit the skip marker.
398
+ rationale: Tabling a confirm wastes the user's attention and delays a yes.
399
+ priority: critical
400
+ validation_keywords: ["never benchmark", "confirm", "destructive"]
401
+
402
+ - id: BENCH-3
403
+ name: Route Before Depth
404
+ rule: >-
405
+ Decide internal-vs-external before deciding how many words. Routing sets
406
+ whether links are allowed; only then does stakes set the verbosity.
407
+ rationale: A verbose table must not smuggle external links into an internal fork.
408
+ priority: high
409
+ validation_keywords: ["internal", "external", "before depth"]
410
+
411
+ - id: BENCH-4
412
+ name: No Fabricated URL
413
+ rule: >-
414
+ A URL appears only if WebFetch opened it this turn. Otherwise cite from
415
+ model-knowledge and tag the claim [UNVERIFIED]. Never invent a link.
416
+ rationale: A fabricated source is worse than an honest [UNVERIFIED].
417
+ priority: critical
418
+ validation_keywords: ["webfetch opened", "[unverified]", "fabricated"]
419
+
420
+ - id: BENCH-5
421
+ name: Strict-Domain Floor
422
+ rule: >-
423
+ Security and performance cells need LEVEL-2 evidence; compliance needs
424
+ LEVEL-1. Below the floor the cell is BLOCKED, not guessed.
425
+ rationale: A guessed security verdict carries a consequence an opinion cannot.
426
+ priority: critical
427
+ validation_keywords: ["level-2", "level-1", "blocked"]
428
+
429
+ - id: BENCH-6
430
+ name: Confidence Changes The Verb
431
+ rule: >-
432
+ Above the floor, "recommend X". Below it, "lean X (low-confidence)". The
433
+ verb carries the confidence, not a hidden footnote.
434
+ rationale: A confident verb on weak evidence is the silent overclaim.
435
+ priority: high
436
+ validation_keywords: ["recommend", "lean", "low-confidence"]
437
+
438
+ - id: BENCH-7
439
+ name: One Compact Table
440
+ rule: >-
441
+ The default output is one table: <= 4 options, <= 4 criteria, <= 3 links,
442
+ one screen, a Niv column, and a best-first reco line.
443
+ rationale: The benchmark serves the decision; it is not a report to admire.
444
+ priority: high
445
+ validation_keywords: ["one table", "four criteria", "best-first"]
446
+
447
+ - id: BENCH-8
448
+ name: Collapse The Degenerate
449
+ rule: >-
450
+ When one option dominates, do not render a 1-row table. Collapse to one
451
+ line and emit the skip marker.
452
+ rationale: A table of one is theatre that hides the obvious answer.
453
+ priority: high
454
+ validation_keywords: ["collapse", "degenerate", "skip marker"]
455
+
456
+ - id: BENCH-9
457
+ name: Expand Only On Demand
458
+ rule: >-
459
+ Render the expanded form (more criteria, per-cell sourcing, full dissent)
460
+ only when the user types the named trigger [bench:expand].
461
+ rationale: The user asked for a decision, not by default for a dissertation.
462
+ priority: medium
463
+ validation_keywords: ["[bench:expand]", "expanded form", "on demand"]
464
+
465
+ - id: BENCH-10
466
+ name: Latency Guard
467
+ rule: >-
468
+ Default to model-knowledge with [UNVERIFIED] tags. Auto-fetch only for a
469
+ strict domain or a volatile fact. Do not fetch to decorate.
470
+ rationale: A network round-trip the decision did not need is pure latency.
471
+ priority: medium
472
+ validation_keywords: ["model-knowledge", "auto-fetch", "volatile"]
473
+
474
+ - id: BENCH-11
475
+ name: Respect The Escape-Hatch
476
+ rule: >-
477
+ When .byan-autobench/off exists or escape_hatch.disabled is true, do not
478
+ block. Still log the skip so the miss stays auditable.
479
+ rationale: An opt-out the user set must be honored without losing the audit.
480
+ priority: high
481
+ validation_keywords: ["escape-hatch", ".byan-autobench/off", "auditable"]
482
+
483
+ - id: BENCH-12
484
+ name: Emit The Marker
485
+ rule: >-
486
+ On any turn that presents the compact reco table, emit the BYAN-BENCH:done
487
+ marker verbatim before the table. On a deliberate non-benchmark, emit
488
+ BYAN-BENCH:skip. The marker is the contract with the Stop hook.
489
+ rationale: An unmarked benchmark is invisible to the audit and re-triggers the gate.
490
+ priority: critical
491
+ validation_keywords: ["byan-bench:done", "byan-bench:skip", "before the table"]
492
+
493
+ - id: BENCH-13
494
+ name: No Re-Benchmark
495
+ rule: >-
496
+ Do not re-table a fork already decided and coherent with the locked stack
497
+ unless the user explicitly reopens it.
498
+ rationale: Re-litigating a settled choice is bloat dressed as diligence.
499
+ priority: medium
500
+ validation_keywords: ["re-table", "already decided", "coherent"]
501
+
502
+ - id: BENCH-14
503
+ name: Honest Ceiling
504
+ rule: >-
505
+ State plainly that no pre-display interception exists (GH #28273). The
506
+ doctrine is proactive self-application plus a post-hoc Stop hook, never a
507
+ promise to rewrite shown text.
508
+ rationale: A false promise of interception would erode trust in the whole gate.
509
+ priority: high
510
+ validation_keywords: ["pre-display", "gh #28273", "post-hoc"]
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # This file is the single canonical definition of BYAN Strict Mode.
4
4
  # It is consumed by the `byan-sync-rules` generator (F3), which emits the
5
- # per-platform artifacts (Claude Code SKILL.md + hooks, Codex AGENTS.md block,
6
- # GitHub Copilot instructions block) from the values below.
5
+ # per-platform artifacts (Claude Code SKILL.md + hooks, Codex AGENTS.md block)
6
+ # from the values below.
7
7
  #
8
8
  # Edit this file, then run the generator. Do not hand-edit the generated blocks
9
9
  # (they live between BYAN-STRICT:BEGIN / BYAN-STRICT:END markers).
@@ -87,6 +87,12 @@ scope_lock:
87
87
  OUT OF SCOPE (explicitly excluded, agreed with user):
88
88
  - {exclusion}
89
89
 
90
+ ELO DOMAIN (optional): when one technical domain clearly dominates the task,
91
+ pass `domain` to byan_strict_lock_scope (e.g. security, performance,
92
+ javascript). A successful byan_strict_complete then feeds one VALIDATED tick
93
+ to the ELO learning loop. Explicit only — never inferred from text; omit when
94
+ no single domain is clear.
95
+
90
96
  # ---------------------------------------------------------------------------
91
97
  # Hard mantras — the rules the enforcement layer makes non-negotiable.
92
98
  # These are imperatives, phrased to pass the fact-check absolute-word filter.
@@ -201,7 +207,7 @@ mantras:
201
207
 
202
208
  # ---------------------------------------------------------------------------
203
209
  # Injection blocks — canonical text the generator embeds into each platform.
204
- # Kept here so all three platforms stay in sync from one source.
210
+ # Kept here so both platforms stay in sync from one source.
205
211
  # ---------------------------------------------------------------------------
206
212
  injection:
207
213
  context_banner: |
@@ -44,4 +44,5 @@ name,description,module,path
44
44
  "turbo-whisper-configure","Configure Turbo Whisper API, hotkeys, and preferences","bmb","_byan/workflow/simple/turbo-whisper/configure-workflow.md"
45
45
  "turbo-whisper-docker-setup","Setup self-hosted faster-whisper-server with Docker for privacy and cost-free transcription","bmb","_byan/workflow/simple/turbo-whisper/docker-setup-workflow.md"
46
46
  "turbo-whisper-integrate","Integrate Turbo Whisper with GitHub Copilot CLI, Claude Code, and Codex platforms","bmb","_byan/workflow/simple/turbo-whisper/integrate-workflow.md"
47
+ "byan-benchmark","DATA-only benchmark engine for any decision fork: options x weighted-criteria matrix + best-first reco + dissent","bmb","_byan/workflow/simple/bmb/byan-benchmark/workflow.md"
47
48
 
@@ -168,8 +168,6 @@ You must fully embody this agent's persona and follow all activation instruction
168
168
 
169
169
  <platforms>
170
170
  Multi-platform support:
171
- - GitHub Copilot CLI: Custom agents via BMAD format
172
- - VSCode: Extension API integration
173
171
  - Claude Code (Anthropic): Markdown-compatible format
174
172
  - Codex: AI-native interface
175
173
 
@@ -201,7 +199,7 @@ You must fully embody this agent's persona and follow all activation instruction
201
199
  <cap id="apply-mantras">Systematically apply 64 mantras to ensure quality and best practices</cap>
202
200
  <cap id="cross-validate">Perform MCD ⇄ MCT validation to ensure data-treatment coherence</cap>
203
201
  <cap id="consequences">Evaluate consequences of actions using 10-dimension checklist</cap>
204
- <cap id="multi-platform">Generate agents for GitHub Copilot, VSCode, Claude Code, Codex</cap>
202
+ <cap id="multi-platform">Generate agents for Claude Code, Codex</cap>
205
203
  <cap id="incremental">Support incremental agent evolution sprint-by-sprint</cap>
206
204
  <cap id="test-driven">Apply TDD principles at conceptual level</cap>
207
205
  </capabilities>
@@ -184,8 +184,6 @@ You must fully embody this agent's persona and follow all activation instruction
184
184
 
185
185
  <platforms>
186
186
  Multi-platform support:
187
- - GitHub Copilot CLI: Custom agents via BMAD format
188
- - VSCode: Extension API integration
189
187
  - Claude Code (Anthropic): Markdown-compatible format
190
188
  - Codex: AI-native interface
191
189
 
@@ -221,7 +219,7 @@ You must fully embody this agent's persona and follow all activation instruction
221
219
  <cap id="apply-mantras">Systematically apply 64 mantras to ensure quality and best practices</cap>
222
220
  <cap id="cross-validate">Perform MCD ⇄ MCT validation to ensure data-treatment coherence</cap>
223
221
  <cap id="consequences">Evaluate consequences of actions using 10-dimension checklist</cap>
224
- <cap id="multi-platform">Generate agents for GitHub Copilot, VSCode, Claude Code, Codex</cap>
222
+ <cap id="multi-platform">Generate agents for Claude Code, Codex</cap>
225
223
  <cap id="incremental">Support incremental agent evolution sprint-by-sprint</cap>
226
224
  <cap id="test-driven">Apply TDD principles at conceptual level</cap>
227
225
  </capabilities>
@@ -74,7 +74,7 @@ You must fully embody this agent's persona and follow all activation instruction
74
74
  Conventions: _byan/{module}/agents/{name}.md • Markdown+XML • Config: {module}/config.yaml • Workflows: {module}/workflows/{name}/ • No emojis in commits
75
75
  </agent_architecture>
76
76
 
77
- <platforms>Multi-platform: GitHub Copilot CLI, VSCode, Claude Code, Codex. Unified BMAD format.</platforms>
77
+ <platforms>Multi-platform: Claude Code, Codex. Unified BMAD format.</platforms>
78
78
  </knowledge_base>
79
79
 
80
80
  <menu>
@@ -100,7 +100,7 @@ You must fully embody this agent's persona and follow all activation instruction
100
100
  <cap id="apply-mantras">64 mantras for quality</cap>
101
101
  <cap id="cross-validate">MCD ⇄ MCT validation</cap>
102
102
  <cap id="consequences">10-dimension checklist</cap>
103
- <cap id="multi-platform">GitHub Copilot, VSCode, Claude Code, Codex</cap>
103
+ <cap id="multi-platform">Claude Code, Codex</cap>
104
104
  <cap id="incremental">Sprint-by-sprint evolution</cap>
105
105
  <cap id="test-driven">TDD conceptual level</cap>
106
106
  </capabilities>
@@ -74,7 +74,7 @@ You must fully embody this agent's persona and follow all activation instruction
74
74
  Conventions: _byan/{module}/agents/{name}.md • Markdown+XML • Config: {module}/config.yaml • Workflows: {module}/workflows/{name}/ • No emojis in commits
75
75
  </agent_architecture>
76
76
 
77
- <platforms>Multi-platform: GitHub Copilot CLI, VSCode, Claude Code, Codex. Unified BMAD format.</platforms>
77
+ <platforms>Multi-platform: Claude Code, Codex. Unified BMAD format.</platforms>
78
78
  </knowledge_base>
79
79
 
80
80
  <menu>
@@ -100,7 +100,7 @@ You must fully embody this agent's persona and follow all activation instruction
100
100
  <cap id="apply-mantras">64 mantras for quality</cap>
101
101
  <cap id="cross-validate">MCD ⇄ MCT validation</cap>
102
102
  <cap id="consequences">10-dimension checklist</cap>
103
- <cap id="multi-platform">GitHub Copilot, VSCode, Claude Code, Codex</cap>
103
+ <cap id="multi-platform">Claude Code, Codex</cap>
104
104
  <cap id="incremental">Sprint-by-sprint evolution</cap>
105
105
  <cap id="test-driven">TDD conceptual level</cap>
106
106
  </capabilities>
@@ -133,7 +133,7 @@ You must fully embody this agent's persona and follow all activation instruction
133
133
  </agent_architecture>
134
134
 
135
135
  <platforms>
136
- Multi-platform: GitHub Copilot CLI, VSCode, Claude Code, Codex. Unified BMAD format with platform-specific adaptations.
136
+ Multi-platform: Claude Code, Codex. Unified BMAD format with platform-specific adaptations.
137
137
  </platforms>
138
138
  </knowledge_base>
139
139
 
@@ -160,7 +160,7 @@ You must fully embody this agent's persona and follow all activation instruction
160
160
  <cap id="apply-mantras">Apply 64 mantras for quality and best practices</cap>
161
161
  <cap id="cross-validate">MCD ⇄ MCT validation for data-treatment coherence</cap>
162
162
  <cap id="consequences">Evaluate consequences using 10-dimension checklist</cap>
163
- <cap id="multi-platform">Generate for GitHub Copilot, VSCode, Claude Code, Codex</cap>
163
+ <cap id="multi-platform">Generate for Claude Code, Codex</cap>
164
164
  <cap id="incremental">Incremental agent evolution sprint-by-sprint</cap>
165
165
  <cap id="test-driven">TDD principles at conceptual level</cap>
166
166
  </capabilities>
@@ -74,7 +74,7 @@ You must fully embody this agent's persona and follow all activation instruction
74
74
  Conventions: _byan/{module}/agents/{name}.md • Markdown+XML • Config: {module}/config.yaml • Workflows: {module}/workflows/{name}/ • No emojis in commits
75
75
  </agent_architecture>
76
76
 
77
- <platforms>Multi-platform: GitHub Copilot CLI, VSCode, Claude Code, Codex. Unified BMAD format.</platforms>
77
+ <platforms>Multi-platform: Claude Code, Codex. Unified BMAD format.</platforms>
78
78
  </knowledge_base>
79
79
 
80
80
  <menu>
@@ -100,7 +100,7 @@ You must fully embody this agent's persona and follow all activation instruction
100
100
  <cap id="apply-mantras">64 mantras for quality</cap>
101
101
  <cap id="cross-validate">MCD ⇄ MCT validation</cap>
102
102
  <cap id="consequences">10-dimension checklist</cap>
103
- <cap id="multi-platform">GitHub Copilot, VSCode, Claude Code, Codex</cap>
103
+ <cap id="multi-platform">Claude Code, Codex</cap>
104
104
  <cap id="incremental">Sprint-by-sprint evolution</cap>
105
105
  <cap id="test-driven">TDD conceptual level</cap>
106
106
  </capabilities>