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.
- package/CHANGELOG.md +230 -0
- package/README.md +9 -12
- package/install/bin/create-byan-agent-v2.js +29 -169
- package/install/lib/agent-generator.js +5 -5
- package/install/lib/byan-web-integration.js +1 -1
- package/install/lib/claude-native-setup.js +1 -1
- package/install/lib/phase2-chat.js +3 -10
- package/install/lib/platforms/claude-code.js +2 -2
- package/install/lib/platforms/index.js +0 -2
- package/install/lib/project-agents-generator.js +3 -3
- package/install/lib/staging-consent.js +3 -3
- package/install/lib/subagent-generator.js +3 -3
- package/install/lib/yanstaller/agent-launcher.js +1 -27
- package/install/lib/yanstaller/detector.js +4 -4
- package/install/lib/yanstaller/installer.js +0 -2
- package/install/lib/yanstaller/interviewer.js +1 -1
- package/install/lib/yanstaller/platform-selector.js +1 -13
- package/install/package.json +1 -1
- package/install/src/byan-v2/context/session-state.js +2 -2
- package/install/src/byan-v2/index.js +2 -6
- package/install/src/byan-v2/orchestrator/generation-state.js +4 -4
- package/install/src/webui/api.js +0 -2
- package/install/src/webui/chat/bridge.js +1 -13
- package/install/src/webui/chat/cli-detector.js +0 -23
- package/install/src/webui/public/app.js +1 -3
- package/install/src/webui/public/chat.html +0 -2
- package/install/src/webui/public/chat.js +0 -1
- package/install/src/webui/public/index.html +2 -2
- package/install/templates/.claude/CLAUDE.md +13 -2
- package/install/templates/.claude/agents/bmad-byan.md +1 -1
- package/install/templates/.claude/hooks/autobench-stop-guard.js +286 -0
- package/install/templates/.claude/hooks/drain-advisory.js +85 -0
- package/install/templates/.claude/hooks/fact-check-absolutes.js +1 -61
- package/install/templates/.claude/hooks/fact-check-claims.js +69 -0
- package/install/templates/.claude/hooks/fd-response-check.js +37 -46
- package/install/templates/.claude/hooks/inject-soul.js +64 -25
- package/install/templates/.claude/hooks/leantime-fd-sync.js +216 -0
- package/install/templates/.claude/hooks/lib/autobench-config.json +81 -0
- package/install/templates/.claude/hooks/lib/autobench-fc-enrich.js +251 -0
- package/install/templates/.claude/hooks/lib/autobench-ledger-report.js +253 -0
- package/install/templates/.claude/hooks/lib/autobench-runtime.js +199 -0
- package/install/templates/.claude/hooks/lib/fact-check-core.js +69 -0
- package/install/templates/.claude/hooks/lib/failure-detector.js +18 -4
- package/install/templates/.claude/hooks/lib/transcript-read.js +137 -0
- package/install/templates/.claude/hooks/soul-memory-check.js +49 -25
- package/install/templates/.claude/hooks/soul-memory-triggers.js +27 -8
- package/install/templates/.claude/hooks/stage-to-byan.js +25 -7
- package/install/templates/.claude/hooks/strict-stop-guard.js +4 -16
- package/install/templates/.claude/rules/benchmark.md +251 -0
- package/install/templates/.claude/rules/byan-agents.md +0 -1
- package/install/templates/.claude/rules/byan-api.md +64 -0
- package/install/templates/.claude/rules/fact-check.md +1 -1
- package/install/templates/.claude/rules/strict-mode.md +10 -9
- package/install/templates/.claude/settings.json +16 -0
- package/install/templates/.claude/skills/byan-benchmark/SKILL.md +159 -0
- package/install/templates/.claude/skills/byan-byan/SKILL.md +73 -12
- package/install/templates/.claude/skills/byan-fact-check/SKILL.md +1 -1
- package/install/templates/.claude/skills/byan-hermes-dispatch/SKILL.md +5 -6
- package/install/templates/.claude/skills/byan-insight/SKILL.md +56 -0
- package/install/templates/.claude/skills/byan-orchestrate/SKILL.md +11 -3
- package/install/templates/.claude/skills/byan-strict/SKILL.md +4 -1
- package/install/templates/.claude/workflows/INDEX.md +2 -1
- package/install/templates/.claude/workflows/byan-benchmark.js +328 -0
- package/install/templates/.claude/workflows/check-implementation-readiness.js +1 -1
- package/install/templates/_byan/_config/agent-manifest.csv +1 -1
- package/install/templates/_byan/_config/autobench.yaml +510 -0
- package/install/templates/_byan/_config/strict-mode.yaml +9 -3
- package/install/templates/_byan/_config/workflow-manifest.csv +1 -0
- package/install/templates/_byan/agent/byan/byan.md +1 -3
- package/install/templates/_byan/agent/byan-flat/byan.md +1 -3
- package/install/templates/_byan/agent/byan-test/byan-test.md +2 -2
- package/install/templates/_byan/agent/byan-test-flat/byan-test.md +2 -2
- package/install/templates/_byan/agent/byan.optimized/byan.optimized.md +2 -2
- package/install/templates/_byan/agent/byan.optimized-v2/byan.optimized-v2.md +2 -2
- package/install/templates/_byan/agent/claude/claude.md +0 -2
- package/install/templates/_byan/agent/codex/codex.md +0 -2
- package/install/templates/_byan/agent/rachid/rachid.md +2 -10
- package/install/templates/_byan/agent/rachid-flat/rachid.md +2 -11
- package/install/templates/_byan/agent/turbo-whisper/turbo-whisper.md +2 -5
- package/install/templates/_byan/agent/turbo-whisper-integration/turbo-whisper-integration.md +5 -13
- package/install/templates/_byan/agent/yanstaller/yanstaller.md +2 -24
- package/install/templates/_byan/config.yaml +0 -1
- package/install/templates/_byan/core/activation/soul-activation.md +3 -3
- package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-insight-digest.js +31 -0
- package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-sync-rules.js +20 -4
- package/install/templates/_byan/mcp/byan-mcp-server/lib/advisory-autofeed.js +96 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/index-generator.js +1 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/insight-harvest.js +220 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/kanban.js +6 -3
- package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-fd-core.js +205 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-sync.js +415 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/outcome-buffer.js +64 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/precommit-gate.js +1 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-activation.js +1 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-mode.js +8 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/sync-rules.js +172 -23
- package/install/templates/_byan/mcp/byan-mcp-server/lib/workflows-generator.js +1 -0
- package/install/templates/_byan/mcp/byan-mcp-server/server.js +262 -81
- package/install/templates/_byan/worker/launchers/README.md +4 -24
- package/install/templates/_byan/worker/workers.md +8 -9
- package/install/templates/_byan/workflow/simple/bmb/byan-benchmark/workflow.md +86 -0
- package/install/templates/_byan/workflow/simple/byan/feature-workflow.md +2 -2
- package/install/templates/docs/leantime-integration.md +160 -0
- package/package.json +3 -7
- package/src/byan-v2/context/session-state.js +2 -2
- package/src/byan-v2/generation/mantra-validator.js +3 -3
- package/src/byan-v2/index.js +1 -5
- package/src/byan-v2/integration/voice-integration.js +1 -1
- package/src/byan-v2/orchestrator/generation-state.js +4 -4
- package/src/loadbalancer/loadbalancer.js +1 -1
- package/src/staging/staging.js +20 -6
- package/install/bin/build-copilot-stubs.js +0 -138
- package/install/lib/platforms/copilot-cli.js +0 -123
- package/install/lib/platforms/vscode.js +0 -51
- package/install/src/byan-v2/context/copilot-context.js +0 -79
- package/install/src/webui/chat/copilot-adapter.js +0 -68
- package/install/templates/.claude/agents/bmad-marc.md +0 -25
- package/install/templates/.claude/skills/byan-marc/SKILL.md +0 -20
- package/install/templates/.github/agents/bmad-agent-bmad-master.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmb-agent-builder.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmb-module-builder.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-analyst.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-architect.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-dev.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-pm.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-quinn.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-sm.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-tech-writer.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-ux-designer.md +0 -16
- package/install/templates/.github/agents/bmad-agent-byan-test.md +0 -33
- package/install/templates/.github/agents/bmad-agent-byan-v2.md +0 -44
- package/install/templates/.github/agents/bmad-agent-byan.md +0 -1062
- package/install/templates/.github/agents/bmad-agent-carmack.md +0 -14
- package/install/templates/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-presentation-master.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-storyteller.md +0 -16
- package/install/templates/.github/agents/bmad-agent-claude.md +0 -49
- package/install/templates/.github/agents/bmad-agent-codex.md +0 -49
- package/install/templates/.github/agents/bmad-agent-drawio.md +0 -45
- package/install/templates/.github/agents/bmad-agent-fact-checker.md +0 -16
- package/install/templates/.github/agents/bmad-agent-forgeron.md +0 -15
- package/install/templates/.github/agents/bmad-agent-jimmy.md +0 -15
- package/install/templates/.github/agents/bmad-agent-marc.md +0 -49
- package/install/templates/.github/agents/bmad-agent-mike.md +0 -15
- package/install/templates/.github/agents/bmad-agent-patnote.md +0 -49
- package/install/templates/.github/agents/bmad-agent-rachid.md +0 -48
- package/install/templates/.github/agents/bmad-agent-skeptic.md +0 -16
- package/install/templates/.github/agents/bmad-agent-tao.md +0 -14
- package/install/templates/.github/agents/bmad-agent-tea-tea.md +0 -16
- package/install/templates/.github/agents/bmad-agent-test-dynamic.md +0 -22
- package/install/templates/.github/agents/bmad-agent-yanstaller-interview.md +0 -50
- package/install/templates/.github/agents/bmad-agent-yanstaller-phase2.md +0 -189
- package/install/templates/.github/agents/bmad-agent-yanstaller.md +0 -350
- package/install/templates/.github/agents/expert-merise-agile.md +0 -178
- package/install/templates/.github/agents/franck.md +0 -379
- package/install/templates/.github/agents/hermes.md +0 -575
- package/install/templates/.github/extensions/byan-staging/extension.mjs +0 -169
- package/install/templates/.github/extensions/byan-staging/package.json +0 -8
- package/install/templates/_byan/agent/marc/marc-soul.md +0 -47
- package/install/templates/_byan/agent/marc/marc-tao.md +0 -77
- package/install/templates/_byan/agent/marc/marc.md +0 -324
- package/install/templates/_byan/agent/marc-flat/marc.md +0 -387
- package/install/templates/_byan/mcp/byan-mcp-server/lib/copilot.js +0 -148
- package/install/templates/_byan/worker/launchers/launch-yanstaller-copilot.md +0 -173
- package/install/templates/workers/cost-optimizer.js +0 -169
- package/src/byan-v2/context/copilot-context.js +0 -79
- package/src/core/dispatcher/execution-router.js +0 -66
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: byan-benchmark
|
|
3
|
+
description: Orchestrating conductor for the native byan-benchmark engine. Detects a real decision fork (>=2 non-substitutable options that diverge on >=1 weighted criterion), runs the autonomous DATA-only matrix engine (.claude/workflows/byan-benchmark.js) via the Workflow tool, renders the compact 1-table best-first, and emits the BYAN-BENCH marker so the auto-benchmark Stop hook is satisfied. Invoke when you are about to present a choice between options, when the user says "benchmark X vs Y", "compare these approaches", "which option", or when the auto-benchmark doctrine arms on a fork.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# byan-benchmark - Conductor (gate outside, engine inside)
|
|
7
|
+
|
|
8
|
+
You are the human-gated conductor for the native byan-benchmark workflow. The
|
|
9
|
+
autonomous scoring runs in `.claude/workflows/byan-benchmark.js` (the in-CLI
|
|
10
|
+
Workflow tool); YOU own the fork detection, the rendered table, the BYAN-BENCH
|
|
11
|
+
marker, and any FD/strict state. This split is the Hybrid pattern: the engine is
|
|
12
|
+
native and deterministic, the gate stays on a real main-thread turn where the
|
|
13
|
+
BYAN hooks fire.
|
|
14
|
+
|
|
15
|
+
## Why this skill exists
|
|
16
|
+
|
|
17
|
+
A launched Workflow script is autonomous: it cannot pause to ask a human, the
|
|
18
|
+
main-thread hooks (including the auto-benchmark Stop hook) do not fire inside it,
|
|
19
|
+
and it must not mutate BYAN state on its own. So the script returns a DATA matrix;
|
|
20
|
+
this skill turns that data into a rendered, gated decision and emits the marker.
|
|
21
|
+
|
|
22
|
+
## Protocol
|
|
23
|
+
|
|
24
|
+
### 1. Detect the fork + gates
|
|
25
|
+
|
|
26
|
+
Apply the 2-gate trigger before launching anything:
|
|
27
|
+
|
|
28
|
+
- **G1** - there are >=2 non-trivial, non-substitutable options.
|
|
29
|
+
- **G2** - the options diverge on >=1 weighted criterion (if they are coherent
|
|
30
|
+
with the locked stack, there is nothing to benchmark).
|
|
31
|
+
|
|
32
|
+
NEVER benchmark a y/n confirm, a destructive prompt (delete/drop/rm -rf/
|
|
33
|
+
overwrite/force push/reset --hard), or a trivial ack. For the degenerate /
|
|
34
|
+
obvious-default case, do NOT table it - emit the skip marker (see step 5b).
|
|
35
|
+
|
|
36
|
+
Routing decides links BEFORE depth decides verbosity:
|
|
37
|
+
- `scope: internal` (within the existing repo/stack) - NO external links,
|
|
38
|
+
coherence-first.
|
|
39
|
+
- `scope: external` (a new dependency / vendor / standard) - sourcing allowed,
|
|
40
|
+
but a URL appears ONLY if WebFetch opened it THIS turn; otherwise `[UNVERIFIED]`.
|
|
41
|
+
|
|
42
|
+
### 2. Run the engine (dual-path)
|
|
43
|
+
|
|
44
|
+
Prefer the native script. If `.claude/workflows/byan-benchmark.js` exists, run it
|
|
45
|
+
via the Workflow tool; otherwise fall back to the markdown workflow
|
|
46
|
+
(`_byan/workflow/simple/bmb/byan-benchmark/workflow.md`). The programmatic
|
|
47
|
+
resolver is `resolveWorkflow('byan-benchmark')` in
|
|
48
|
+
`_byan/mcp/byan-mcp-server/lib/workflows-generator.js`.
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Workflow({ name: 'byan-benchmark', args: {
|
|
52
|
+
question: '<the fork as a question>',
|
|
53
|
+
options: [{ name: 'Option A', note: '...' }, { name: 'Option B', note: '...' }],
|
|
54
|
+
criteria: [{ name: 'C1 ...', weight: 2 }, { name: 'C2 ...', weight: 1 }],
|
|
55
|
+
judges: [ /* optional opposed-lens panel; omit for a single neutral judge */ ],
|
|
56
|
+
domain: 'general | security | performance | compliance',
|
|
57
|
+
scope: 'internal | external'
|
|
58
|
+
} })
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The script runs RECON -> SOURCE -> JUDGE -> RECOMMEND and returns DATA only:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{ "workflow": "byan-benchmark", "question": "...", "scope": "internal",
|
|
65
|
+
"domain": "general", "options": [...], "criteria": [...],
|
|
66
|
+
"matrix": [{ "option": "...", "cells": [{ "criterion": "...", "verdict": "...",
|
|
67
|
+
"level": "L2", "score": 8, "source": "...", "unverified": false }],
|
|
68
|
+
"total": 0 }],
|
|
69
|
+
"recommendation": { "best": "...", "line": "...", "confidence": "assertive|lean" },
|
|
70
|
+
"dissent": { "option": "...", "why": "..." },
|
|
71
|
+
"degenerate": false, "needsHumanGate": true }
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 3. (BYAN only, opt-in) enrich cells with byan_fc_check
|
|
75
|
+
|
|
76
|
+
This step is BYAN-only - other platforms skip it. For each cell whose `verdict`
|
|
77
|
+
is a HARD CLAIM (a factual assertion in security / performance / compliance, or
|
|
78
|
+
any absolute), call the MCP tool to raise the cell's authority:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
mcp__byan__byan_fc_check({ text: '<the cell claim>' }) -> { level, score, ... }
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Stamp the returned `{ level, score }` onto the cell's `level` column. This makes
|
|
85
|
+
the Niv column an audited evidence level, not a self-graded one. Respect the
|
|
86
|
+
strict-domain floors: a `security`/`performance` claim below L2, or a
|
|
87
|
+
`compliance` claim below L1, stays flagged `[UNVERIFIED]`. Enrichment is opt-in;
|
|
88
|
+
skip it for low-stakes internal forks to keep latency down.
|
|
89
|
+
|
|
90
|
+
### 4. Render the compact 1-table (best-first)
|
|
91
|
+
|
|
92
|
+
Render ONE compact table, ordered best-first, within the hard caps:
|
|
93
|
+
|
|
94
|
+
- **<= 4 options**, **<= 4 criteria**, **<= 3 links**, **1 screen**.
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
| Option | C1 ... | C2 ... | C3 ... | Niv |
|
|
98
|
+
|----------|--------|--------|--------|-----|
|
|
99
|
+
| A (best) | ... | ... | ... | L2 |
|
|
100
|
+
| B | ... | ... | ... | L4 |
|
|
101
|
+
|
|
102
|
+
Reco: <recommendation.line> (confidence: <assertive recommend X | lean X, low-confidence>)
|
|
103
|
+
Dissent: <dissent.option> wins on <dissent.why>.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The confidence verb is load-bearing: `assertive` -> "recommend X"; `lean` ->
|
|
107
|
+
"lean X (low-confidence)". A URL appears ONLY if WebFetch opened it this turn;
|
|
108
|
+
otherwise tag the cell `[UNVERIFIED]` and cite from model-knowledge.
|
|
109
|
+
|
|
110
|
+
### 5. Emit the BYAN-BENCH marker (satisfies the Stop hook)
|
|
111
|
+
|
|
112
|
+
#### 5a. Real benchmark presented
|
|
113
|
+
|
|
114
|
+
On the SAME turn that shows the table, emit the marker verbatim on a single
|
|
115
|
+
line, IMMEDIATELY BEFORE the table (so it survives truncation):
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
<!-- BYAN-BENCH:done g1=<#options> g2=<#divergent-criteria> scope=<internal|external> conf=<assertive|lean> -->
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`g1` >= 2 and `g2` >= 1 or the marker is invalid.
|
|
122
|
+
|
|
123
|
+
#### 5b. Degenerate / deliberate skip
|
|
124
|
+
|
|
125
|
+
If the engine returned `degenerate: true`, or the fork is an obvious-default /
|
|
126
|
+
confirm / destructive / already-coherent case, do NOT table it - emit the skip
|
|
127
|
+
marker instead (a positive signal that the fork was CONSIDERED and deliberately
|
|
128
|
+
not tabled):
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
<!-- BYAN-BENCH:skip reason=<obvious-default|never-listed|escape-hatch|already-coherent> -->
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 6. Expanded form (named trigger)
|
|
135
|
+
|
|
136
|
+
The default is the compact 1-table. If the user types `[bench:expand]`, render
|
|
137
|
+
the expanded form: full per-judge scorecards, every cell's evidence and source,
|
|
138
|
+
and the dissent rationale in full. Still emit the `done` marker.
|
|
139
|
+
|
|
140
|
+
### 7. Record the run (only after the gate)
|
|
141
|
+
|
|
142
|
+
After the user acts on the recommendation, if inside an FD or strict session,
|
|
143
|
+
record the outcome through the `byan_fd_*` / `byan_strict_*` MCP tools so the
|
|
144
|
+
audit trail stays in the MCP authority. Do NOT write FD/strict state files
|
|
145
|
+
directly. The auto-benchmark miss-ledger
|
|
146
|
+
(`_byan-output/benchmark-ledger.jsonl`) is appended by the Stop hook, not by
|
|
147
|
+
this skill.
|
|
148
|
+
|
|
149
|
+
## Invariants
|
|
150
|
+
|
|
151
|
+
- The script returns DATA; THIS skill owns rendering, the marker, completion and
|
|
152
|
+
state. (Enforcement contract: see `docs/native-workflows-contract.md`.)
|
|
153
|
+
- The human gate stays on a real main-thread turn, outside the script.
|
|
154
|
+
- Dual-path: native `.js` preferred, markdown fallback. No silent downgrade.
|
|
155
|
+
- No fabricated URL: `[UNVERIFIED]` unless WebFetch opened it this turn.
|
|
156
|
+
- Strict-domain floors: security/performance L2+, compliance L1.
|
|
157
|
+
- Escape-hatch respected: if `.byan-autobench/off` is present (or the
|
|
158
|
+
cross-session opt-out is set), the doctrine does not force a benchmark.
|
|
159
|
+
- No emoji in outputs (IA-23). Comments/notes justify the WHY only (IA-24).
|
|
@@ -79,17 +79,18 @@ Never call `byan_update_apply` without explicit user consent. That tool returns
|
|
|
79
79
|
- **Visibility** : the `tool-transparency` hook already writes per-tool entries to `_byan-output/tool-log.jsonl`. Every sub-task you spawn must be visible there.
|
|
80
80
|
- **Exit gate** : user sees the diff and says "ok build".
|
|
81
81
|
|
|
82
|
-
### Phase 6 — REVIEW
|
|
83
|
-
- **Who** : Quinn (
|
|
84
|
-
- **Goal** :
|
|
82
|
+
### Phase 6 — REVIEW (qualitative pre-flight + tiered adversarial second pair of eyes)
|
|
83
|
+
- **Who** : Quinn (`bmad-bmm-quinn`) for the qualitative pass, every time. PLUS an adversarial second reviewer that is NOT the BUILD author — `bmad-compliance` — spawned TIERED by dispatch (step 2), not on a trivial edit. The reviewer must differ from the author (no self-review).
|
|
84
|
+
- **Goal** : a real second opinion before the machine runs. REVIEW is qualitatif + adversarial ; VALIDATE is quantitatif.
|
|
85
85
|
- **Protocol** :
|
|
86
|
-
1.
|
|
87
|
-
2.
|
|
88
|
-
3.
|
|
89
|
-
4.
|
|
86
|
+
1. **Quinn pass** : inspect the diff — readability, naming, side effects, coverage per branch, comments justified (POURQUOI), zero emoji. Cross-check planned vs implemented tests and mantra risks per change type.
|
|
87
|
+
2. **Tier the compliance review** on the dispatch signal : spawn `bmad-compliance` when the feature's `byan_dispatch` score >= 15 OR it touches a strict domain (security / performance / compliance). Below that, skip it (Ockham + token budget) and note `compliance: skipped-trivial`.
|
|
88
|
+
3. **Open the review** (when tiered in) : `byan_review_request({ task_id: <feature-id | commit sha>, author: <BUILD agent name>, artifact_paths: [<changed files>], description: <one line> })`. Pick a reviewer that differs from the author : `byan_review_pick_reviewer({ author: <BUILD agent> })` ; fall back to `bmad-compliance` if it returns the author or null.
|
|
89
|
+
4. **Spawn the reviewer** via the Agent tool (`subagent_type: "bmad-compliance"`, model inherited). Prompt it to apply its lenses (security hygiene, fact-check, mantras) and to CALL `byan_review_verdict` to persist `{ approve | changes | block }` with `must_fix`.
|
|
90
|
+
5. Output `{ status: "ready-for-validate" | "needs-rework", findings: [...], compliance: <verdict | "skipped-trivial"> }` and persist via `byan_fd_update({ patch: { review_findings: [...] } })`.
|
|
90
91
|
- **Exit gate** :
|
|
91
|
-
- `ready-for-validate` → advance to VALIDATE.
|
|
92
|
-
- `needs-rework` → short-circuit to REFACTOR (skip VALIDATE this cycle).
|
|
92
|
+
- `ready-for-validate` (Quinn clean AND compliance `approve` or `skipped-trivial`) → advance to VALIDATE.
|
|
93
|
+
- `needs-rework` (Quinn finds rework OR compliance returns `changes` / `block`) → short-circuit to REFACTOR with the `must_fix` items (skip VALIDATE this cycle).
|
|
93
94
|
|
|
94
95
|
### Phase 7 — VALIDATE
|
|
95
96
|
- **Who** : MantraValidator + jest/node test + `byan-fact-check` skill. No human judgement, only numbers.
|
|
@@ -125,6 +126,65 @@ Never call `byan_update_apply` without explicit user consent. That tool returns
|
|
|
125
126
|
- **Exit gate** : all `blocking_issues` resolved → advance back to BUILD (loop). The state machine explicitly allows REFACTOR → BUILD as the only backward transition.
|
|
126
127
|
- **Guard-rail** : 3 consecutive BUILD→REVIEW→VALIDATE→REFACTOR cycles without convergence → propose retour to PRUNE (mal cadré) or ABORTED.
|
|
127
128
|
|
|
129
|
+
## 2.5. Leantime project sync (one-way FD → board)
|
|
130
|
+
|
|
131
|
+
Leantime (self-hosted project management) is an optional external board. When
|
|
132
|
+
`LEANTIME_API_URL` + `LEANTIME_API_TOKEN` are configured (injected via `.mcp.json`
|
|
133
|
+
`${...}`), the FD lifecycle is mirrored onto Leantime in ONE direction — FD drives
|
|
134
|
+
the board ; the board does not drive FD. When the pair is absent, the sync is off
|
|
135
|
+
and every FD phase proceeds unchanged.
|
|
136
|
+
|
|
137
|
+
### Automatic — the `leantime-fd-sync` hook (primary path)
|
|
138
|
+
|
|
139
|
+
You do NOT call `byan_leantime_*` by hand. A `PostToolUse` hook
|
|
140
|
+
(`.claude/hooks/leantime-fd-sync.js`, registered in `.claude/settings.json`) fires
|
|
141
|
+
after `byan_fd_advance` / `byan_fd_update` and mirrors the board for you:
|
|
142
|
+
|
|
143
|
+
| FD event | Board effect |
|
|
144
|
+
|----------|--------------|
|
|
145
|
+
| project_context set (DISCOVERY) | create-or-fetch the Leantime project (+ assign the human when `LEANTIME_ASSIGN_USER_ID` is set) |
|
|
146
|
+
| backlog set, DISPATCH onward | one task per backlog feature, in `todo` |
|
|
147
|
+
| BUILD | tasks → `doing` |
|
|
148
|
+
| REVIEW needs-rework / VALIDATE KO | tasks → `blocked` |
|
|
149
|
+
| VALIDATE OK | tasks → `review` |
|
|
150
|
+
| DOC | tasks → `review` |
|
|
151
|
+
| COMPLETED | all tasks → `done` |
|
|
152
|
+
| ABORTED | board left verbatim (no move) |
|
|
153
|
+
|
|
154
|
+
The hook is best-effort and bounded : it exits 0 in every path (a sync issue does
|
|
155
|
+
not block the turn), no-ops when Leantime is off, self-heals a dropped call on the
|
|
156
|
+
next phase event, and surfaces a one-line breadcrumb only on a real failure
|
|
157
|
+
(`non_json` / `timeout` / `http_*` / `rpc_error`). It logs every attempt to
|
|
158
|
+
`.byan-leantime/sync.jsonl`. Columns resolve to the project's configured status
|
|
159
|
+
ids at call time (per-project), with a conservative fallback.
|
|
160
|
+
|
|
161
|
+
### State-coupling + idempotence
|
|
162
|
+
|
|
163
|
+
The hook does not read or write `fd-state.json` ; it reads the fd-state the MCP
|
|
164
|
+
tool echoes, and keeps the Leantime id map in the gitignored sidecar
|
|
165
|
+
`.byan-leantime/map.json` (keyed by `fd_id` : `{ projectId, tasks:{<F-id>:taskId},
|
|
166
|
+
lastColumn }`). The sidecar is the single idempotence ledger : a project/task is
|
|
167
|
+
created only when its id is absent, so a REFACTOR loop re-builds without spawning
|
|
168
|
+
a duplicate. `lib/leantime-sync.js` is the only Leantime client ;
|
|
169
|
+
`lib/leantime-fd-core.js` is the pure decision core ; the hook is the I/O shell.
|
|
170
|
+
|
|
171
|
+
### Manual fallback
|
|
172
|
+
|
|
173
|
+
If the hook is removed from `.claude/settings.json`, the same fire points can be
|
|
174
|
+
driven by hand via the `byan_leantime_*` tools at each phase event. Full usage
|
|
175
|
+
guide : `docs/leantime-integration.md`.
|
|
176
|
+
|
|
177
|
+
### Reading the result (do not lie about a failed sync)
|
|
178
|
+
|
|
179
|
+
Each call returns `{ ok, synced, reason? }`. Surface a non-synced result in one
|
|
180
|
+
line rather than pretending the board moved :
|
|
181
|
+
- `no_base` / `no_token` → sync is off ; mention it once, proceed.
|
|
182
|
+
- `non_json` → `LEANTIME_API_URL` points at the Leantime UI host, not the
|
|
183
|
+
`/api/jsonrpc` backend (the wrong-host lesson). Fix the env, do not read the
|
|
184
|
+
HTML as an empty board.
|
|
185
|
+
- `timeout` / `http_<status>` / `rpc_error` → transient or wire issue ; the FD
|
|
186
|
+
phase still advances, the move can be retried at the next phase event.
|
|
187
|
+
|
|
128
188
|
## 3. Session state
|
|
129
189
|
|
|
130
190
|
A FD cycle in progress is tracked in `_byan-output/fd-state.json` :
|
|
@@ -134,9 +194,9 @@ A FD cycle in progress is tracked in `_byan-output/fd-state.json` :
|
|
|
134
194
|
"phase": "DISCOVERY | BRAINSTORM | PRUNE | DISPATCH | BUILD | REVIEW | VALIDATE | REFACTOR | DOC | COMPLETED | ABORTED",
|
|
135
195
|
"started_at": "<iso>",
|
|
136
196
|
"feature_name": "<slug>",
|
|
137
|
-
"project_context": { "name": "...", "slug": "...", "domain": "...", "stack": "...", "summary": "...", "source": "mcp|local" },
|
|
197
|
+
"project_context": { "name": "...", "slug": "...", "domain": "...", "stack": "...", "summary": "...", "source": "mcp|local", "leantime": { "projectId": 0 } },
|
|
138
198
|
"raw_ideas": [],
|
|
139
|
-
"backlog": [ { "id": "F1", "title": "...", "priority": "P1|P2|P3", "status": "pending|building|done|skipped" } ],
|
|
199
|
+
"backlog": [ { "id": "F1", "title": "...", "priority": "P1|P2|P3", "status": "pending|building|done|skipped", "leantime": { "taskId": 0 } } ],
|
|
140
200
|
"dispatch_table": [],
|
|
141
201
|
"commits": [],
|
|
142
202
|
"review_findings": [ { "status": "ready-for-validate|needs-rework", "items": [...] } ],
|
|
@@ -166,9 +226,10 @@ Use the MCP tools `byan_fd_start`, `byan_fd_advance`, `byan_fd_status`, `byan_fd
|
|
|
166
226
|
| DISCOVERY (project identification, MCP first) | BYAN (this skill) |
|
|
167
227
|
| BRAINSTORM, PRUNE, DISPATCH, VALIDATE | BYAN (this skill) |
|
|
168
228
|
| BUILD execution per feature | `byan-hermes-dispatch` |
|
|
169
|
-
| REVIEW (qualitative pre-flight) | Quinn (`bmad-bmm-quinn`)
|
|
229
|
+
| REVIEW (qualitative pre-flight) | Quinn (`bmad-bmm-quinn`) ; tiered adversarial gate `bmad-compliance` (dispatch >= 15 or strict domain) via `byan_review_request` |
|
|
170
230
|
| REFACTOR (corrective loop to BUILD) | Same agent/worker that did BUILD |
|
|
171
231
|
| DOC (CHANGELOG, README, manifests) | Paige (`bmad-bmm-tech-writer`) or BYAN role-play |
|
|
232
|
+
| Leantime sync (one-way FD → board, fire points at phase events) | BYAN fires `byan_leantime_*` ; `lib/leantime-sync.js` is the only Leantime client (see section 2.5) |
|
|
172
233
|
| Parallel team of specialists | `byan-orchestrate` (extends hermes for N-role) |
|
|
173
234
|
| Persona / voice | Soul + Tao (loaded by SessionStart hook) |
|
|
174
235
|
| Transparency | `tool-transparency` PreToolUse hook |
|
|
@@ -28,7 +28,6 @@ Match keywords against the routing table below. Pick the single best match. If n
|
|
|
28
28
|
| create module, new module | module-builder (Morgan) | |
|
|
29
29
|
| create workflow, new workflow | workflow-builder (Wendy) | |
|
|
30
30
|
| npm, publish, package | rachid | |
|
|
31
|
-
| copilot integration | marc | |
|
|
32
31
|
| optimize tokens, reduce size | carmack | |
|
|
33
32
|
| product brief, prd, requirements | pm (John) | |
|
|
34
33
|
| architecture, design system, tech stack | architect (Winston) | |
|
|
@@ -83,11 +82,11 @@ For any spawned strategy : pass `model` to the Agent tool when it is non-null; o
|
|
|
83
82
|
|
|
84
83
|
### 5. Specialist stub path lookup
|
|
85
84
|
|
|
86
|
-
Resolve the specialist name to its agent
|
|
85
|
+
Resolve the specialist name to its agent (Claude-native, in priority order) :
|
|
87
86
|
|
|
88
|
-
- First try :
|
|
89
|
-
-
|
|
90
|
-
-
|
|
87
|
+
- First try the skill : if the specialist exists as a skill, invoke it directly via `/byan-<specialist-name>` (preferred over the Agent tool).
|
|
88
|
+
- Else the Claude subagent stub : `.claude/agents/bmad-<name>.md`, spawned via the Agent tool with `subagent_type`.
|
|
89
|
+
- Fallback : resolve the role from `agent-manifest.csv` in `_byan/_config/`.
|
|
91
90
|
|
|
92
91
|
### 6. Report back
|
|
93
92
|
|
|
@@ -105,7 +104,7 @@ No flourish. No "I have successfully…". Just the table.
|
|
|
105
104
|
|
|
106
105
|
## Parallel mode (N tasks)
|
|
107
106
|
|
|
108
|
-
If the user (or calling agent) provides N independent subtasks and `parallelizable: true`, use the **party-mode-native** workflow (`_byan/
|
|
107
|
+
If the user (or calling agent) provides N independent subtasks and `parallelizable: true`, use the **party-mode-native** workflow (`_byan/workflow/simple/party-mode-native/workflow.md`) instead of dispatching one-by-one :
|
|
109
108
|
|
|
110
109
|
1. Call `coordination.initSession` to register the roles.
|
|
111
110
|
2. Dispatch all N Agent tool calls **in one message**.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: byan-insight
|
|
3
|
+
description: Harvest the native Claude Code outcome trails (tool-log, strict-audit gaps, suitability ledger, ELO) into a GATED self-improvement digest for BYAN. Invoke when the user asks "what did this session teach BYAN", "insight digest", "self-improvement", "qu'est-ce que BYAN a appris", or wants to review recurring gaps / routing outcomes / tool health before deciding what to improve. Observe and propose; the human ratifies each change.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# BYAN Insight Loop (gated self-improvement)
|
|
7
|
+
|
|
8
|
+
BYAN already has advisory learning surfaces (ELO trust, the suitability ledger,
|
|
9
|
+
soul-memory) and the native Claude Code hooks already leave outcome trails on
|
|
10
|
+
disk. This skill closes the loop: it READS those trails, aggregates them into a
|
|
11
|
+
digest, and surfaces GATED proposals. It does not modify a behavior surface.
|
|
12
|
+
|
|
13
|
+
## The one hard rule: observe and propose, do not silently self-modify
|
|
14
|
+
|
|
15
|
+
An agent that rewrote its own routing, personas, or mantra thresholds on a
|
|
16
|
+
heuristic would be the exact silent-downgrade BYAN exists to prevent. So this
|
|
17
|
+
loop stops at a PROPOSAL. Applying a change (a routing tweak, a new checklist
|
|
18
|
+
item, a persona edit) stays a human decision — ideally run as its own FD. The
|
|
19
|
+
advisory data (ELO, suitability) is read-only here; behavior surfaces are left
|
|
20
|
+
to the human gate.
|
|
21
|
+
|
|
22
|
+
## Protocol
|
|
23
|
+
|
|
24
|
+
1. **Harvest.** Call the MCP tool `byan_insight_digest` (read-only, no args). It
|
|
25
|
+
returns `{ gated: true, digest, render }` where `digest` is
|
|
26
|
+
`{ toolHealth, recurringGaps, routingOutcomes, eloTrends, proposals }`.
|
|
27
|
+
- `toolHealth` : call count, failure rate, top failing tools, output-token cost
|
|
28
|
+
(from `_byan-output/tool-log.jsonl`).
|
|
29
|
+
- `recurringGaps` : clustered self-verify gap themes with counts (from
|
|
30
|
+
`.byan-strict/audit.log`) — what BYAN keeps missing.
|
|
31
|
+
- `routingOutcomes` : per cheap-model x leaf keep-rate (from the suitability
|
|
32
|
+
ledger) — where a downgrade is proven good or bad.
|
|
33
|
+
- `eloTrends` : per-domain trust rating.
|
|
34
|
+
- `proposals` : conservative, GATED suggestions (each `gated: true`).
|
|
35
|
+
2. **Present.** Show the `render` text, then the proposals as a numbered list.
|
|
36
|
+
Make explicit that nothing has been applied.
|
|
37
|
+
3. **Gate.** For each proposal the user accepts, run the change as its own scoped
|
|
38
|
+
work (a short FD for a behavior change; a direct edit for a doc/checklist).
|
|
39
|
+
Do not auto-apply a proposal.
|
|
40
|
+
|
|
41
|
+
## CLI equivalent
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
node _byan/mcp/byan-mcp-server/bin/byan-insight-digest.js [--root <dir>] [--json]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Prints the human-readable digest, or the raw JSON with `--json`. Self-disables
|
|
48
|
+
(empty digest) when the trails are absent, so a fresh checkout is not an error.
|
|
49
|
+
|
|
50
|
+
## What it deliberately leaves alone
|
|
51
|
+
|
|
52
|
+
- It does not call `byan_elo_record` / `byan_suitability_record` for you (those
|
|
53
|
+
stay where the outcome actually happens, e.g. a VALIDATE pass).
|
|
54
|
+
- It does not edit `lib/dispatch.js`, `native-tiers.js`, a persona, or the mantra
|
|
55
|
+
thresholds. Those are behavior surfaces; a proposal names them, a human
|
|
56
|
+
changes them.
|
|
@@ -40,7 +40,7 @@ Use this a priori mapping — override only if the task clearly needs more :
|
|
|
40
40
|
| analyst, pm, sm, ux-designer, tech-writer, brainstorming-coach, storyteller | sonnet | Text structuring, not deep reasoning |
|
|
41
41
|
| dev, quick-flow-solo-dev | sonnet | Code generation, mid complexity |
|
|
42
42
|
| architect, quinn, tea, creative-problem-solver | opus | Deep reasoning, trade-offs |
|
|
43
|
-
| carmack, rachid,
|
|
43
|
+
| carmack, rachid, patnote | haiku | Narrow mechanical tasks |
|
|
44
44
|
|
|
45
45
|
Then call `byan_dispatch` with each role's goal (and `nature` when known). Use its `score` for the STRATEGY only (score < 15 → inline, no subagent ; 15-39 → subagent/worker ; ≥ 40 → keep the heavy role in the main thread) and its nature-based `model` as the tier signal. The score sets WHERE the role runs, not WHICH model — keep protected roles (verify/analysis/implement) off haiku regardless of size, and avoid pinning a role up to opus on size alone. The per-role table above is the a-priori floor; `byan_dispatch`'s nature `model` refines it.
|
|
46
46
|
|
|
@@ -69,19 +69,25 @@ Group roles by `parallelizable_with` graph. For each parallel cluster :
|
|
|
69
69
|
|
|
70
70
|
- If cluster has N > 1 roles AND all use `agent-subagent-worktree` strategy → use the **party-mode-native** workflow : `coordination.initSession(roles, …)`, then dispatch all Agent tool calls in a single message.
|
|
71
71
|
- If cluster has N = 1 OR strategy = `main-thread` → execute inline in the current turn.
|
|
72
|
+
|
|
73
|
+
On a 2+ role spawn, open the shared board for visibility (the kanban family is built for exactly this) : after `coordination.initSession`, call `byan_kanban_create({ sessionId: <the party-mode session id> })`, then once per role `byan_kanban_add({ sessionId, card: { id: <role>, title: <role> } })`. The card `id` is the ROLE NAME — unique per role, and the key the move step references; do NOT reuse the session id (the cards share one board, ids must differ). A multi-agent run without a board is invisible to the user.
|
|
72
74
|
- If strategy = `mcp-worker` → spawn an Agent tool call WITHOUT worktree (faster boot, single-turn) ; set the Agent's model to the role's nature-based `model` (haiku for exploration, omit otherwise to inherit the session model).
|
|
73
75
|
|
|
74
76
|
For each Agent tool call, the prompt must start with :
|
|
75
77
|
```
|
|
76
78
|
You are acting as the <role> BMAD agent. Load your persona from
|
|
77
|
-
.
|
|
79
|
+
.claude/agents/bmad-<role>.md (read it first, then respond in
|
|
78
80
|
character). Task: <goal>. Deliverables: <list>. Report back as JSON
|
|
79
81
|
with status/summary/files_changed per the party-mode-native contract.
|
|
80
82
|
```
|
|
81
83
|
|
|
82
84
|
### 5. Aggregate and report
|
|
83
85
|
|
|
84
|
-
After all subagents return (or inline roles finish), read each `agent-<role>.json` via `coordination.readAgentReport
|
|
86
|
+
After all subagents return (or inline roles finish), read each `agent-<role>.json` via `coordination.readAgentReport` (report contract : `{ status: ok|partial|failed, summary, files_changed, next_steps }`). Then, for EACH returned role (post all of them — an `ok` post writes an empty `blockers` array, which resets that role's streak ; skipping `ok` roles breaks the streak math) :
|
|
87
|
+
- Post its standup : `byan_standup_post({ sessionId, agent: <role>, did: <report.summary>, blockers: <report.status is 'failed' or 'partial' ? [report.summary] : []>, next: <(report.next_steps || []).join('; ')> })`. The report contract has NO `blockers` field — synthesize it from a non-`ok` status (an `ok` role posts `[]`).
|
|
88
|
+
- Move its card : `byan_kanban_move({ sessionId, cardId: <role>, toColumn: <report ok ? 'review' : 'blocked'>, blocker_reason: <report ok ? omit : report.summary> })`. `cardId` is the role name set at add time. Use `review`, not `done`, on success — the human gate owns completion; `done` is the user's call, not the orchestrator self-certifying.
|
|
89
|
+
|
|
90
|
+
Then surface stuck roles : `byan_standup_blocked({ sessionId, minStreak: 1 })` — `minStreak: 1` because the aggregate posts exactly one stand-up per role, so a single `blocked`/`failed`/`partial` report should flag (a 2-in-a-row streak is unreachable in a single pass). If it returns flagged roles, raise them in the report. Finally write `summary.md` via `coordination.writeSummary` and report to the user :
|
|
85
91
|
|
|
86
92
|
| Role | Model | Strategy | Tokens spent | Outcome |
|
|
87
93
|
|------|-------|----------|--------------|---------|
|
|
@@ -98,3 +104,5 @@ Total tokens : 34900. Deliverable : <link to aggregated output>.
|
|
|
98
104
|
- **Never default to opus.** Opus is opt-in via high complexity score or explicit role mapping. Default = sonnet, upgrade only with justification in the plan.
|
|
99
105
|
- **Never parallel-spawn roles that write to the same paths.** If file scopes overlap, serialize them even if `parallelizable_with` suggests otherwise.
|
|
100
106
|
- **Never ship a plan without `estimated_tokens` per role.** Budget visibility is the whole point.
|
|
107
|
+
- **Open the board on every 2+ role spawn.** `byan_kanban_create` + a card per role ; a multi-agent run without a board hides the work from the user.
|
|
108
|
+
- **Post every role's standup at aggregate, `ok` included.** Posting only failed roles breaks the blocked-streak reset and re-hides a stuck agent — the exact silence this wiring removes.
|
|
@@ -24,7 +24,10 @@ complete. Downgrading the scope is the failure this mode exists to prevent.
|
|
|
24
24
|
|
|
25
25
|
1. **Lock the scope** with `byan_strict_lock_scope` before building. Provide a
|
|
26
26
|
verbatim restatement of the request and testable `acceptanceCriteria`. The
|
|
27
|
-
locked scope is the contract.
|
|
27
|
+
locked scope is the contract. When one technical domain clearly dominates the
|
|
28
|
+
task, also pass `domain` (e.g. security, performance, javascript) — a
|
|
29
|
+
successful completion then feeds one VALIDATED tick to the ELO loop. Explicit
|
|
30
|
+
only; omit when no single domain is clear.
|
|
28
31
|
2. **Build the full scope.** Do not substitute an MVP, a stub, or a simplified
|
|
29
32
|
version. If a part cannot be done, surface it as a gap — do not cut silently.
|
|
30
33
|
3. **Self-verify at least 3 times** with
|
|
@@ -22,8 +22,9 @@
|
|
|
22
22
|
- `testarch-test-review` — native — source `_byan/workflow/simple/testarch/test-review/workflow.yaml`
|
|
23
23
|
- `testarch-trace` — native — source `_byan/workflow/simple/testarch/trace/workflow.yaml`
|
|
24
24
|
|
|
25
|
-
## pipeline (
|
|
25
|
+
## pipeline (10)
|
|
26
26
|
|
|
27
|
+
- `byan-benchmark` — native — source `_byan/workflow/simple/bmb/byan-benchmark/workflow.md`
|
|
27
28
|
- `check-implementation-readiness` — native — source `_byan/workflow/simple/3-solutioning/check-implementation-readiness/workflow.md`
|
|
28
29
|
- `code-review` — native — source `_byan/workflow/simple/4-implementation/code-review/workflow.yaml`
|
|
29
30
|
- `create-excalidraw-dataflow` — native — source `_byan/workflow/simple/excalidraw-diagrams/create-dataflow/workflow.yaml`
|