devflow-kit 2.4.0 â 3.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.
- package/CHANGELOG.md +229 -0
- package/README.md +111 -18
- package/dist/agents/git.md +822 -0
- package/dist/cli/commands/agents.js +6 -1
- package/dist/cli/commands/ambient.js +160 -145
- package/dist/cli/commands/attribution-prompts.js +1 -1
- package/dist/cli/commands/capture.js +29 -55
- package/dist/cli/commands/compliance-prompts.js +1 -1
- package/dist/cli/commands/compliance.js +48 -55
- package/dist/cli/commands/context.js +17 -32
- package/dist/cli/commands/debug.js +65 -26
- package/dist/cli/commands/flags.js +3 -3
- package/dist/cli/commands/hud.js +34 -10
- package/dist/cli/commands/init-seed.js +61 -27
- package/dist/cli/commands/init.js +649 -240
- package/dist/cli/commands/install-report.js +200 -0
- package/dist/cli/commands/knowledge/index.js +2 -2
- package/dist/cli/commands/knowledge/toggle.js +35 -37
- package/dist/cli/commands/learning.js +79 -57
- package/dist/cli/commands/legacy-hooks.js +11 -14
- package/dist/cli/commands/memory.js +134 -135
- package/dist/cli/commands/prompt-io.js +4 -4
- package/dist/cli/commands/proxy.js +23 -41
- package/dist/cli/commands/security.js +81 -29
- package/dist/cli/commands/skills.js +71 -7
- package/dist/cli/commands/tracker-prompts.js +145 -0
- package/dist/cli/commands/tracker.js +277 -0
- package/dist/cli/commands/uninstall.js +520 -169
- package/dist/cli.js +2 -0
- package/dist/commands/bug-analysis.md +58 -14
- package/dist/commands/code-review.md +110 -32
- package/dist/commands/debug.md +55 -11
- package/dist/commands/dynamic-build.md +344 -73
- package/dist/commands/dynamic-plan.md +77 -27
- package/dist/commands/dynamic-profile.md +25 -11
- package/dist/commands/dynamic-tickets.md +76 -15
- package/dist/commands/explore.md +37 -7
- package/dist/commands/implement.md +314 -62
- package/dist/commands/plan.md +146 -32
- package/dist/commands/release.md +64 -17
- package/dist/commands/research.md +34 -8
- package/dist/commands/resolve.md +196 -68
- package/dist/commands/self-review.md +45 -9
- package/dist/core/agent-models.js +55 -12
- package/dist/core/assets.js +58 -2
- package/dist/core/compliance-compose.js +27 -27
- package/dist/core/evidence-policy.js +363 -0
- package/dist/core/feature-config.js +200 -65
- package/dist/core/feature-switch.js +112 -0
- package/dist/core/flags.js +34 -6
- package/dist/core/fs-atomic.js +27 -0
- package/dist/core/hook-log-dirs.js +104 -0
- package/dist/core/learning-tuning-config.js +5 -3
- package/dist/core/ledger-root.js +102 -0
- package/dist/core/manifest.js +38 -10
- package/dist/core/mds-variants.js +798 -0
- package/dist/core/migrations.js +49 -23
- package/dist/core/model-discovery.js +12 -1
- package/dist/core/plugins.js +361 -12
- package/dist/core/project-paths.js +1 -18
- package/dist/core/proxy-log.js +8 -6
- package/dist/core/proxy-state.js +11 -8
- package/dist/core/reference-sweep.js +136 -0
- package/dist/core/same-location.js +25 -0
- package/dist/core/tracker.js +494 -0
- package/dist/hud/components/config-counts.js +15 -4
- package/dist/hud/components/learning-counts.js +14 -0
- package/dist/hud/config.js +2 -1
- package/dist/hud/cost-history.js +2 -4
- package/dist/hud/git.js +52 -7
- package/dist/hud/index.js +7 -9
- package/dist/skills/git/references/decision-markers.md +19 -0
- package/dist/skills/git/references/learn-conventions.md +56 -0
- package/dist/skills/git/references/pr/check-ci-status.md +14 -0
- package/dist/skills/git/references/pr/check-merge-readiness.md +28 -0
- package/dist/skills/git/references/pr/ensure-pr-ready.md +24 -0
- package/dist/skills/git/references/pr/fetch-review-threads.md +22 -0
- package/dist/skills/git/references/pr/post-resolution-summary.md +40 -0
- package/dist/skills/git/references/pr/post-review-summary.md +42 -0
- package/dist/skills/git/references/pr/resolve-review-threads.md +35 -0
- package/dist/skills/git/references/pr/update-pr-evidence.md +14 -0
- package/dist/skills/git/references/pr/validate-branch.md +18 -0
- package/dist/skills/git/references/publication-gate.md +13 -0
- package/dist/skills/git/references/tracker/_mcp.md +153 -0
- package/dist/skills/git/references/tracker/github/associate-release.md +18 -0
- package/dist/skills/git/references/tracker/github/backlink-shipped-issues.md +40 -0
- package/dist/skills/git/references/tracker/github/create-release.md +11 -0
- package/dist/skills/git/references/tracker/github/ensure-pr-ready.md +16 -0
- package/dist/skills/git/references/tracker/github/ensure-traceable-issue.md +69 -0
- package/dist/skills/git/references/tracker/github/fetch-issue.md +32 -0
- package/dist/skills/git/references/tracker/github/fetch-issues-batch.md +17 -0
- package/dist/skills/git/references/tracker/github/gather-release-evidence.md +19 -0
- package/dist/skills/git/references/tracker/github/manage-debt.md +101 -0
- package/dist/skills/git/references/tracker/github/post-wave-report.md +28 -0
- package/dist/skills/git/references/tracker/github/setup-task.md +26 -0
- package/dist/skills/git/references/tracker/jira/associate-release.md +18 -0
- package/dist/skills/git/references/tracker/jira/backlink-shipped-issues.md +49 -0
- package/dist/skills/git/references/tracker/jira/create-release.md +17 -0
- package/dist/skills/git/references/tracker/jira/ensure-pr-ready.md +22 -0
- package/dist/skills/git/references/tracker/jira/ensure-traceable-issue.md +53 -0
- package/dist/skills/git/references/tracker/jira/fetch-issue.md +14 -0
- package/dist/skills/git/references/tracker/jira/fetch-issues-batch.md +15 -0
- package/dist/skills/git/references/tracker/jira/gather-release-evidence.md +18 -0
- package/dist/skills/git/references/tracker/jira/manage-debt.md +37 -0
- package/dist/skills/git/references/tracker/jira/post-wave-report.md +33 -0
- package/dist/skills/git/references/tracker/jira/setup-task.md +31 -0
- package/dist/skills/git/references/tracker/linear/associate-release.md +18 -0
- package/dist/skills/git/references/tracker/linear/backlink-shipped-issues.md +53 -0
- package/dist/skills/git/references/tracker/linear/create-release.md +17 -0
- package/dist/skills/git/references/tracker/linear/ensure-pr-ready.md +22 -0
- package/dist/skills/git/references/tracker/linear/ensure-traceable-issue.md +53 -0
- package/dist/skills/git/references/tracker/linear/fetch-issue.md +14 -0
- package/dist/skills/git/references/tracker/linear/fetch-issues-batch.md +15 -0
- package/dist/skills/git/references/tracker/linear/gather-release-evidence.md +18 -0
- package/dist/skills/git/references/tracker/linear/manage-debt.md +37 -0
- package/dist/skills/git/references/tracker/linear/post-wave-report.md +33 -0
- package/dist/skills/git/references/tracker/linear/setup-task.md +32 -0
- package/dist/skills/git/references/trust-rule.md +7 -0
- package/dist/targets/claude-code/claude-paths.js +59 -57
- package/dist/targets/claude-code/compliance-install.js +49 -65
- package/dist/targets/claude-code/hooks.js +108 -3
- package/dist/targets/claude-code/installer.js +1187 -32
- package/dist/targets/claude-code/legacy.js +5 -0
- package/dist/targets/claude-code/post-install.js +366 -151
- package/dist/targets/claude-code/tracker-install.js +134 -0
- package/package.json +8 -6
- package/src/assets/agents/code.md +45 -6
- package/src/assets/agents/design.md +2 -1
- package/src/assets/agents/git.mds +825 -0
- package/src/assets/agents/knowledge.md +3 -3
- package/src/assets/agents/learning.md +11 -0
- package/src/assets/agents/review.md +3 -1
- package/src/assets/agents/synthesize.md +1 -1
- package/src/assets/agents/test.md +16 -5
- package/src/assets/agents/tracker.md +474 -0
- package/src/assets/agents/validate.md +7 -5
- package/src/assets/commands/_partials/_compliance.mds +19 -1
- package/src/assets/commands/_partials/_decisions.mds +15 -3
- package/src/assets/commands/_partials/_docs_root.mds +35 -0
- package/src/assets/commands/_partials/_engine.mds +13 -11
- package/src/assets/commands/_partials/_evidence_policy.mds +30 -0
- package/src/assets/commands/_partials/_factory.mds +1 -1
- package/src/assets/commands/_partials/_knowledge.mds +27 -9
- package/src/assets/commands/_partials/_plan_contract.mds +22 -7
- package/src/assets/commands/_partials/_preamble.mds +2 -2
- package/src/assets/commands/_partials/_publication.mds +8 -2
- package/src/assets/commands/_partials/_settings.mds +28 -0
- package/src/assets/commands/_partials/_ticket_template.mds +3 -2
- package/src/assets/commands/_partials/_tracker.mds +18 -0
- package/src/assets/commands/_partials/_wave.mds +16 -10
- package/src/assets/commands/bug-analysis.mds +31 -19
- package/src/assets/commands/code-review.mds +67 -41
- package/src/assets/commands/debug.mds +13 -7
- package/src/assets/commands/dynamic-build.mds +274 -66
- package/src/assets/commands/dynamic-plan.mds +50 -23
- package/src/assets/commands/dynamic-profile.mds +24 -11
- package/src/assets/commands/dynamic-tickets.mds +63 -16
- package/src/assets/commands/explore.mds +4 -5
- package/src/assets/commands/implement.mds +234 -67
- package/src/assets/commands/plan.mds +91 -33
- package/src/assets/commands/release.md +64 -17
- package/src/assets/commands/research.mds +11 -9
- package/src/assets/commands/resolve.mds +150 -78
- package/src/assets/commands/self-review.mds +24 -25
- package/src/assets/mds/git/_pr.mds +331 -0
- package/src/assets/mds/git/_references.mds +135 -0
- package/src/assets/mds/tracker/_common.mds +156 -0
- package/src/assets/mds/tracker/_github.mds +472 -0
- package/src/assets/mds/tracker/_jira.mds +407 -0
- package/src/assets/mds/tracker/_linear.mds +449 -0
- package/src/assets/mds/tracker/_mcp.mds +305 -0
- package/src/assets/scripts/hooks/assets/orchestrator-charter.md +5 -8
- package/src/assets/scripts/hooks/background-memory-update +40 -19
- package/src/assets/scripts/hooks/capture-prompt +18 -8
- package/src/assets/scripts/hooks/capture-question +18 -8
- package/src/assets/scripts/hooks/capture-turn +27 -13
- package/src/assets/scripts/hooks/debug-trace +11 -6
- package/src/assets/scripts/hooks/ensure-devflow-init +33 -6
- package/src/assets/scripts/hooks/ensure-proxy +9 -8
- package/src/assets/scripts/hooks/ensure-root-gitignore +236 -60
- package/src/assets/scripts/hooks/git-marker +48 -0
- package/src/assets/scripts/hooks/hook-log-init +3 -1
- package/src/assets/scripts/hooks/json-helper.cjs +228 -5
- package/src/assets/scripts/hooks/lib/project-paths.cjs +1 -20
- package/src/assets/scripts/hooks/log-paths +80 -0
- package/src/assets/scripts/hooks/memory-worker +22 -13
- package/src/assets/scripts/hooks/pre-compact-memory +44 -15
- package/src/assets/scripts/hooks/preamble +1 -4
- package/src/assets/scripts/hooks/queue-append +146 -28
- package/src/assets/scripts/hooks/resolve-project-root +101 -7
- package/src/assets/scripts/hooks/session-start-context +534 -20
- package/src/assets/scripts/hooks/session-start-memory +38 -15
- package/src/assets/scripts/lib/project-config.cjs +633 -0
- package/src/assets/scripts/pr-evidence.cjs +1961 -0
- package/src/assets/scripts/redact-secrets.cjs +490 -62
- package/src/assets/scripts/release-trace.cjs +1143 -0
- package/src/assets/scripts/resolve-evidence-policy.cjs +1145 -0
- package/src/assets/scripts/resolve-settings.cjs +1054 -0
- package/src/assets/scripts/verify-evidence.cjs +1822 -0
- package/src/assets/skills/compliance/SKILL.md +4 -2
- package/src/assets/skills/docs-framework/SKILL.md +11 -10
- package/src/assets/skills/docs-framework/references/patterns.md +10 -17
- package/src/assets/skills/gap-analysis/SKILL.md +2 -2
- package/src/assets/skills/git/SKILL.md +8 -78
- package/src/assets/skills/git/references/github-api.md +179 -141
- package/src/assets/skills/git/references/patterns.md +11 -6
- package/src/assets/skills/review-methodology/SKILL.md +1 -1
- package/src/assets/skills/review-methodology/references/patterns.md +6 -61
- package/src/assets/skills/review-methodology/references/violations.md +14 -22
- package/src/assets/skills/worktree-support/SKILL.md +1 -1
- package/src/assets/skills/worktree-support/references/roots.md +29 -0
- package/src/targets/claude-code/templates/managed-settings.json +25 -9
- package/src/assets/agents/git.md +0 -938
|
@@ -4,8 +4,8 @@ output-dir: dist/commands
|
|
|
4
4
|
---
|
|
5
5
|
@import { knowledge_load } from "./_partials/_knowledge.mds"
|
|
6
6
|
@import { decisions_load } from "./_partials/_decisions.mds"
|
|
7
|
-
@import {
|
|
8
|
-
|
|
7
|
+
@import { docs_root } from "./_partials/_docs_root.mds"
|
|
8
|
+
@import { evidence_policy } from "./_partials/_evidence_policy.mds"
|
|
9
9
|
# Bug Analysis Command
|
|
10
10
|
|
|
11
11
|
Run a proactive bug analysis on the current branch by combining static analysis tools with parallel semantic analyzers, then synthesizing results into an actionable bug report. Supports incremental analysis, timestamped report directories, and `/resolve` compatibility.
|
|
@@ -22,17 +22,29 @@ Run a proactive bug analysis on the current branch by combining static analysis
|
|
|
22
22
|
|
|
23
23
|
### Phase 1: Pre-flight
|
|
24
24
|
|
|
25
|
-
**Produces:** BRANCH_INFO, PR_DESCRIPTION,
|
|
25
|
+
**Produces:** BRANCH_INFO, PR_DESCRIPTION, EVIDENCE_POLICY, ISSUE_REQUIRED, APPLY_CONVENTIONS, REQUIRE_NON_AUTHOR_APPROVAL
|
|
26
|
+
|
|
27
|
+
{{evidence_policy()}}
|
|
28
|
+
|
|
29
|
+
{{docs_root()}}
|
|
30
|
+
|
|
31
|
+
Render the test-plan block from `/implement`'s evidence file, and from nothing else:
|
|
32
|
+
1. `branch_slug` is `git branch --show-current` with every `/` replaced by `-`.
|
|
33
|
+
2. Only when `branch_slug` matches `^[A-Za-z0-9._-]{1,200}$` and the file exists, run (the path double-quoted):
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
node "$HOME/.devflow/scripts/verify-evidence.cjs" render --plan "{worktree}/.devflow/docs/evidence-{branch_slug}.md"; echo "exit=$?"
|
|
37
|
+
```
|
|
26
38
|
|
|
27
|
-
|
|
28
|
-
Reuse this result for every downstream phase.
|
|
39
|
+
3. On `exit=0`, `PR_TEST_PLAN_BLOCK` is its stdout byte for byte without that `exit=` line; in every other case it is `(none)`. Nothing here waits on it: the Git agent pastes it only behind its own check, and only into a PR it creates.
|
|
29
40
|
|
|
30
41
|
Spawn Git agent:
|
|
31
42
|
|
|
32
43
|
```
|
|
33
44
|
Agent(subagent_type="Git", run_in_background=false):
|
|
34
45
|
"OPERATION: ensure-pr-ready
|
|
35
|
-
|
|
46
|
+
PR_TEST_PLAN_BLOCK: {PR_TEST_PLAN_BLOCK verbatim, or (none)}
|
|
47
|
+
APPLY_CONVENTIONS: {APPLY_CONVENTIONS}
|
|
36
48
|
Validate branch, commit if needed, push, create PR if needed.
|
|
37
49
|
Return: branch, base_branch, branch-slug, PR#"
|
|
38
50
|
```
|
|
@@ -54,16 +66,16 @@ If `pr_number` is absent or the command fails, set `PR_DESCRIPTION` to `(none)`.
|
|
|
54
66
|
**Produces:** DIFF_RANGE, ANALYSIS_DIR
|
|
55
67
|
**Requires:** BRANCH_INFO
|
|
56
68
|
|
|
57
|
-
1. Check
|
|
69
|
+
1. Check `{worktree}/.devflow/docs/bug-analysis/{branch-slug}/.last-analysis-head`:
|
|
58
70
|
- **If exists AND `--full` NOT set:**
|
|
59
71
|
- Read the SHA from the file
|
|
60
|
-
- Verify reachable: `git cat-file -t
|
|
72
|
+
- Verify reachable: `git cat-file -t {sha}` â if exit code non-zero (rebase invalidated SHA), fall through to full
|
|
61
73
|
- If SHA == current HEAD â "No new commits since last analysis. Use --full for a full re-analysis." Stop.
|
|
62
|
-
- Set `DIFF_RANGE` to
|
|
74
|
+
- Set `DIFF_RANGE` to `{sha}...HEAD`
|
|
63
75
|
- **If not exists, unreachable SHA, or `--full`:**
|
|
64
|
-
- Set `DIFF_RANGE` to
|
|
76
|
+
- Set `DIFF_RANGE` to `{base_branch}...HEAD`
|
|
65
77
|
2. Generate timestamp: `YYYY-MM-DD_HHMM`. If directory already exists (same-minute collision), append seconds (`YYYY-MM-DD_HHMMSS`).
|
|
66
|
-
3. Create timestamped analysis directory: `mkdir -p
|
|
78
|
+
3. Create timestamped analysis directory: `mkdir -p "{worktree}/.devflow/docs/bug-analysis/{branch-slug}/{timestamp}/"`
|
|
67
79
|
4. Set `ANALYSIS_DIR` to that path.
|
|
68
80
|
|
|
69
81
|
#### Step 2b: Check Changed Files
|
|
@@ -148,9 +160,9 @@ Parse `CODEQL_SARIF` â extract findings. If database creation fails, `CODEQL_E
|
|
|
148
160
|
|
|
149
161
|
| Tool | File:Line | CWE | Severity | Title | Description |
|
|
150
162
|
|------|-----------|-----|----------|-------|-------------|
|
|
151
|
-
|
|
|
163
|
+
| {tool} | {file}:{line} | {CWE or â} | {CRITICAL/HIGH/MEDIUM/LOW} | {title} | {description truncated to 200 chars} |
|
|
152
164
|
|
|
153
|
-
Write ALL raw findings to
|
|
165
|
+
Write ALL raw findings to `{ANALYSIS_DIR}/static-findings.md`. Set `STATIC_FINDINGS` to the top-50 table.
|
|
154
166
|
|
|
155
167
|
If no tool produced findings: set `STATIC_FINDINGS` to `(none)`.
|
|
156
168
|
|
|
@@ -160,15 +172,15 @@ If no tool produced findings: set `STATIC_FINDINGS` to `(none)`.
|
|
|
160
172
|
|
|
161
173
|
#### Decisions Index
|
|
162
174
|
|
|
163
|
-
{decisions_load()}
|
|
175
|
+
{{decisions_load()}}
|
|
164
176
|
|
|
165
177
|
#### Feature Knowledge
|
|
166
178
|
|
|
167
|
-
{knowledge_load()}
|
|
179
|
+
{{knowledge_load()}}
|
|
168
180
|
|
|
169
181
|
#### Plan Artifact
|
|
170
182
|
|
|
171
|
-
1. List
|
|
183
|
+
1. List `{worktree}/.devflow/docs/design/*.md` â sort descending by filename (timestamps are naturally sortable), scan the 10 most recent
|
|
172
184
|
2. Read the most recent file if it exists
|
|
173
185
|
3. Extract `## Acceptance Criteria` section â parse into table: `| ID | Criterion | Type | Testable Condition |`
|
|
174
186
|
4. Set `PLAN_CONTEXT` to plan summary; `ACCEPTANCE_RULES` to the table
|
|
@@ -238,7 +250,7 @@ Output: {ANALYSIS_DIR}/bug-analysis-summary.md"
|
|
|
238
250
|
|
|
239
251
|
**Requires:** BRANCH_INFO, ANALYSIS_DIR
|
|
240
252
|
|
|
241
|
-
1. Write current HEAD SHA to
|
|
253
|
+
1. Write current HEAD SHA to `{worktree}/.devflow/docs/bug-analysis/{branch-slug}/.last-analysis-head`
|
|
242
254
|
2. Report to user:
|
|
243
255
|
|
|
244
256
|
```
|
|
@@ -289,7 +301,7 @@ Run `/resolve` to process and fix these findings.
|
|
|
289
301
|
ââ Phase 3: Context Loading
|
|
290
302
|
â ââ index.md (pre-rendered) â DECISIONS_CONTEXT
|
|
291
303
|
â ââ Feature knowledge load â FEATURE_KNOWLEDGE
|
|
292
|
-
â ââ
|
|
304
|
+
â ââ {worktree}/.devflow/docs/design/*.md â PLAN_CONTEXT + ACCEPTANCE_RULES
|
|
293
305
|
â
|
|
294
306
|
ââ Phase 4: File Analysis
|
|
295
307
|
â ââ Detect active focuses (security + functional always; integration + usability conditional)
|
|
@@ -347,7 +359,7 @@ Before reporting results, verify every phase was executed:
|
|
|
347
359
|
- [ ] Phase 3: Context Loading â DECISIONS_CONTEXT captured, FEATURE_KNOWLEDGE loaded (or `(none)`), PLAN_CONTEXT and ACCEPTANCE_RULES captured (or `(none)`)
|
|
348
360
|
- [ ] Phase 4: File Analysis â ACTIVE_FOCUSES determined (security + functional always present)
|
|
349
361
|
- [ ] Phase 5: Parallel Bug Analysis â ANALYZER_OUTPUTS captured per active focus; all reports written to ANALYSIS_DIR
|
|
350
|
-
- [ ] Phase 6: Synthesis â BUG_ANALYSIS_SUMMARY written to
|
|
362
|
+
- [ ] Phase 6: Synthesis â BUG_ANALYSIS_SUMMARY written to `{ANALYSIS_DIR}/bug-analysis-summary.md`
|
|
351
363
|
- [ ] Phase 7: Finalize â `.last-analysis-head` updated; results displayed to user
|
|
352
364
|
|
|
353
365
|
If any phase is unchecked, execute it before proceeding.
|
|
@@ -5,8 +5,8 @@ output-dir: dist/commands
|
|
|
5
5
|
@import { knowledge_load } from "./_partials/_knowledge.mds"
|
|
6
6
|
@import { decisions_load } from "./_partials/_decisions.mds"
|
|
7
7
|
@import { compliance_gate } from "./_partials/_compliance.mds"
|
|
8
|
+
@import { evidence_policy } from "./_partials/_evidence_policy.mds"
|
|
8
9
|
@import { publication_gate } from "./_partials/_publication.mds"
|
|
9
|
-
|
|
10
10
|
# Code Review Command
|
|
11
11
|
|
|
12
12
|
Run a comprehensive code review of the current branch by spawning parallel review agents, then synthesizing results into PR comments. Supports incremental reviews, timestamped report directories, and multi-worktree auto-discovery.
|
|
@@ -30,18 +30,24 @@ Run a comprehensive code review of the current branch by spawning parallel revie
|
|
|
30
30
|
|
|
31
31
|
1. **Discover reviewable worktrees** using the `devflow:worktree-support` skill discovery algorithm:
|
|
32
32
|
- Run `git worktree list --porcelain` â parse, filter (skip protected/detached/mid-rebase), dedup by branch, sort by recent commit
|
|
33
|
-
- See
|
|
33
|
+
- See the `devflow:worktree-support` skill for the full 7-step algorithm and canonical protected branch list
|
|
34
34
|
2. **If `--path` flag provided:** use only that worktree, skip discovery
|
|
35
35
|
**`--path` validation**: Before proceeding, verify the path exists as a directory and appears in `git worktree list` output. If not: report error and stop.
|
|
36
36
|
3. **If only 1 reviewable worktree** (the common case): proceed as single-worktree flow â zero behavior change
|
|
37
|
-
4. **If multiple reviewable worktrees:** report "Found N worktrees with reviewable branches:
|
|
37
|
+
4. **If multiple reviewable worktrees:** report "Found N worktrees with reviewable branches: {list with paths and branches}" and proceed with multi-worktree flow
|
|
38
|
+
|
|
39
|
+
#### Step 0b: Resolve the compliance lens
|
|
40
|
+
|
|
41
|
+
**Produces:** COMPLIANCE_ACTIVE, COMPLIANCE_FRAMEWORKS
|
|
42
|
+
|
|
43
|
+
{{compliance_gate()}}
|
|
44
|
+
Keep each worktree's values for every downstream phase of that worktree.
|
|
38
45
|
|
|
39
|
-
#### Step 0b: Resolve
|
|
46
|
+
#### Step 0b-ii: Resolve the evidence policy
|
|
40
47
|
|
|
41
|
-
**Produces:**
|
|
48
|
+
**Produces:** EVIDENCE_POLICY, ISSUE_REQUIRED, APPLY_CONVENTIONS, REQUIRE_NON_AUTHOR_APPROVAL
|
|
42
49
|
|
|
43
|
-
{
|
|
44
|
-
Reuse this result for every worktree and every downstream phase.
|
|
50
|
+
{{evidence_policy()}}
|
|
45
51
|
|
|
46
52
|
#### Step 0c: Per-Worktree Pre-Flight (Git Agent)
|
|
47
53
|
|
|
@@ -49,11 +55,21 @@ Reuse this result for every worktree and every downstream phase.
|
|
|
49
55
|
**Requires:** WORKTREES
|
|
50
56
|
|
|
51
57
|
Discover PR description guidance from plan artifact (per worktree):
|
|
52
|
-
1. List
|
|
58
|
+
1. List `{worktree}/.devflow/docs/design/*.md` files
|
|
53
59
|
2. Sort by timestamp in filename (descending -- timestamps are YYYY-MM-DD_HHMM, naturally sortable)
|
|
54
60
|
3. Read the most recent file, extract `## PR Description Guidance` section
|
|
55
61
|
4. If no plan files exist or section not found, set `PR_DESCRIPTION_GUIDANCE` to `(none)`
|
|
56
62
|
|
|
63
|
+
Render the test-plan block (per worktree) from `/implement`'s evidence file, and from nothing else:
|
|
64
|
+
1. `branch_slug` is `git -C "{worktree}" branch --show-current` with every `/` replaced by `-`.
|
|
65
|
+
2. Only when `branch_slug` matches `^[A-Za-z0-9._-]{1,200}$` and the file exists, run (the path double-quoted):
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
node "$HOME/.devflow/scripts/verify-evidence.cjs" render --plan "{worktree}/.devflow/docs/evidence-{branch_slug}.md"; echo "exit=$?"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. On `exit=0`, `PR_TEST_PLAN_BLOCK` is its stdout byte for byte without that `exit=` line; in every other case it is `(none)`. Nothing here waits on it: the Git agent pastes it only behind its own check, and only into a PR it creates.
|
|
72
|
+
|
|
57
73
|
For each reviewable worktree, spawn Git agent:
|
|
58
74
|
|
|
59
75
|
```
|
|
@@ -61,7 +77,8 @@ Agent(subagent_type="Git", run_in_background=false):
|
|
|
61
77
|
"OPERATION: ensure-pr-ready
|
|
62
78
|
WORKTREE_PATH: {worktree_path} (omit if cwd)
|
|
63
79
|
PR_DESCRIPTION_GUIDANCE: {pr_description_guidance}
|
|
64
|
-
|
|
80
|
+
PR_TEST_PLAN_BLOCK: {PR_TEST_PLAN_BLOCK verbatim, or (none)}
|
|
81
|
+
APPLY_CONVENTIONS: {APPLY_CONVENTIONS}
|
|
65
82
|
Validate branch, commit if needed, push, create PR if needed.
|
|
66
83
|
Return: branch, base_branch, branch-slug, PR#"
|
|
67
84
|
```
|
|
@@ -86,15 +103,15 @@ If `pr_number` is absent or the command fails, set `PR_DESCRIPTION` to `(none)`.
|
|
|
86
103
|
For each worktree:
|
|
87
104
|
|
|
88
105
|
1. Generate timestamp: `YYYY-MM-DD_HHMM`. If directory already exists (same-minute collision), append seconds (`YYYY-MM-DD_HHMMSS`).
|
|
89
|
-
2. Create timestamped review directory: `mkdir -p
|
|
90
|
-
3. Check if
|
|
106
|
+
2. Create timestamped review directory: `mkdir -p {worktree}/.devflow/docs/reviews/{branch-slug}/{timestamp}/`
|
|
107
|
+
3. Check if `{worktree}/.devflow/docs/reviews/{branch-slug}/.last-review-head` exists:
|
|
91
108
|
- **If yes AND `--full` NOT set:**
|
|
92
109
|
- Read the SHA from the file
|
|
93
|
-
- Verify reachable: `git -C
|
|
110
|
+
- Verify reachable: `git -C {worktree} cat-file -t {sha}` (handles rebases â if unreachable, fallback to full)
|
|
94
111
|
- Check if SHA == current HEAD â if so, skip review: "No new commits since last review. Use --full for a full re-review."
|
|
95
|
-
- Set `DIFF_RANGE` to
|
|
112
|
+
- Set `DIFF_RANGE` to `{last-review-sha}...HEAD`
|
|
96
113
|
- **If no (first review), or `--full`:**
|
|
97
|
-
- Set `DIFF_RANGE` to
|
|
114
|
+
- Set `DIFF_RANGE` to `{base_branch}...HEAD`
|
|
98
115
|
|
|
99
116
|
#### Step 0e-i: Load Prior Resolution and Count Cycles
|
|
100
117
|
|
|
@@ -102,10 +119,10 @@ For each worktree:
|
|
|
102
119
|
**Requires:** BRANCH_INFO
|
|
103
120
|
|
|
104
121
|
For each worktree, perform a single pass over timestamped directories:
|
|
105
|
-
1. List timestamped directories in
|
|
122
|
+
1. List timestamped directories in `{worktree}/.devflow/docs/reviews/{branch-slug}/` sorted descending: `ls -1d {worktree}/.devflow/docs/reviews/{branch-slug}/20* 2>/dev/null | sort -r`
|
|
106
123
|
2. Iterate once: accumulate CYCLE_NUMBER count for each directory containing `resolution-summary.md`; capture the first (most-recent) such directory as PRIOR_DIR.
|
|
107
124
|
3. If CYCLE_NUMBER = 0: set PRIOR_RESOLUTIONS=(none), CYCLE_NUMBER=1, proceed.
|
|
108
|
-
4. Otherwise: set CYCLE_NUMBER = count + 1. Read
|
|
125
|
+
4. Otherwise: set CYCLE_NUMBER = count + 1. Read `{PRIOR_DIR}/resolution-summary.md` as PRIOR_RESOLUTIONS.
|
|
109
126
|
5. If `--full`: still load PRIOR_RESOLUTIONS (valuable for Review agent cross-cycle awareness).
|
|
110
127
|
|
|
111
128
|
#### Step 0e-ii: Convergence Assessment
|
|
@@ -116,7 +133,7 @@ For each worktree, perform a single pass over timestamped directories:
|
|
|
116
133
|
MAX_REVIEW_CYCLES = 10
|
|
117
134
|
|
|
118
135
|
1. If CYCLE_NUMBER > MAX_REVIEW_CYCLES:
|
|
119
|
-
Warn in output: "â ī¸ Review pipeline has run
|
|
136
|
+
Warn in output: "â ī¸ Review pipeline has run {CYCLE_NUMBER-1} cycles (exceeds MAX_REVIEW_CYCLES=10). Consider merging or manual inspection."
|
|
120
137
|
Continue with review.
|
|
121
138
|
2. Parse Statistics table from PRIOR_RESOLUTIONS:
|
|
122
139
|
- Extract False Positive, Fixed, Deferred counts
|
|
@@ -125,7 +142,7 @@ MAX_REVIEW_CYCLES = 10
|
|
|
125
142
|
- If denominator = 0: fp_ratio = 0, skip warning
|
|
126
143
|
- If parsing fails: fp_ratio = 0, skip warning; note in output: "Warning: Could not parse Statistics table from prior resolution. FP ratio unavailable â convergence tracking degraded."
|
|
127
144
|
3. If fp_ratio > 0.7 AND CYCLE_NUMBER >= 3:
|
|
128
|
-
Warn in output: "â ī¸ Convergence:
|
|
145
|
+
Warn in output: "â ī¸ Convergence: {ratio}% false positives in cycle {N-1}. Consider merging or manual inspection."
|
|
129
146
|
Continue with review.
|
|
130
147
|
|
|
131
148
|
**Decision table â Step 0e-ii paths:**
|
|
@@ -139,16 +156,16 @@ MAX_REVIEW_CYCLES = 10
|
|
|
139
156
|
#### Step 0f: Resolve Publication Mode (Per Worktree)
|
|
140
157
|
|
|
141
158
|
**Produces:** REVIEW_PUBLICATION
|
|
142
|
-
**Requires:** WORKTREES
|
|
159
|
+
**Requires:** WORKTREES, EVIDENCE_POLICY
|
|
143
160
|
|
|
144
161
|
For each reviewable worktree, call:
|
|
145
162
|
|
|
146
|
-
{publication_gate()}
|
|
163
|
+
{{publication_gate()}}
|
|
147
164
|
|
|
148
165
|
### Phase 1: Analyze Changed Files
|
|
149
166
|
|
|
150
167
|
**Produces:** REVIEW_FOCUS_LIST
|
|
151
|
-
**Requires:** DIFF_RANGE,
|
|
168
|
+
**Requires:** DIFF_RANGE, COMPLIANCE_ACTIVE (from Step 0b)
|
|
152
169
|
|
|
153
170
|
Per worktree, detect file types in diff using `DIFF_RANGE` to determine conditional reviews.
|
|
154
171
|
|
|
@@ -165,21 +182,29 @@ Per worktree, detect file types in diff using `DIFF_RANGE` to determine conditio
|
|
|
165
182
|
| DB/migration files | database |
|
|
166
183
|
| Dependency files changed | dependencies |
|
|
167
184
|
| Docs or significant code | documentation |
|
|
168
|
-
|
|
|
185
|
+
| COMPLIANCE_ACTIVE AND diff touches regulated surface | compliance |
|
|
186
|
+
|
|
187
|
+
If `COMPLIANCE_ACTIVE` AND the diff touches regulated surface (data models, auth flows, logging/observability, payments, IaC, retention): add `compliance` to REVIEW_FOCUS_LIST for this worktree.
|
|
188
|
+
|
|
189
|
+
**Language focus presence gate.** The eight language focuses â `typescript`, `react`, `accessibility`, `ui-design`, `go`, `java`, `python`, `rust` â ship with optional plugins, so their pattern skills are installed only when the user selected that plugin. Gate them by presence: for each language focus the table above would add, check whether `{claude_dir}/skills/devflow:{focus}/SKILL.md` exists, `{claude_dir}` being Claude Code's directory as the installer resolves it â `CLAUDE_CONFIG_DIR` when that is set to an absolute path, else `$HOME/.claude` (D-CLAUDE-DIR-PROMPTS). Run one read-only, silent check per candidate focus:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
d="${CLAUDE_CONFIG_DIR:-}"; case "$d" in /*) ;; *) d="$HOME/.claude" ;; esac; test -f "$d/skills/devflow:{focus}/SKILL.md"; echo "exit=$?"
|
|
193
|
+
```
|
|
169
194
|
|
|
170
|
-
|
|
195
|
+
Only `exit=0` means the skill is installed. On any other result, do NOT add that focus to `REVIEW_FOCUS_LIST` and do NOT spawn a Review agent for it â the file-type condition alone never spawns a language focus. The eight core focuses are unconditional and are never presence-gated.
|
|
171
196
|
|
|
172
197
|
### Phase 1b: Load Decisions Index
|
|
173
198
|
|
|
174
|
-
**Produces:** DECISIONS_CONTEXT, FEATURE_KNOWLEDGE,
|
|
199
|
+
**Produces:** DECISIONS_CONTEXT, FEATURE_KNOWLEDGE, COMPLIANCE_FRAMEWORKS (carried from Step 0b)
|
|
175
200
|
|
|
176
201
|
**Load Companion Skills** â Load via Skill tool: `devflow:quality-gates`, `devflow:software-design`. If a skill fails to load, continue without it.
|
|
177
202
|
|
|
178
|
-
{decisions_load()}
|
|
203
|
+
{{decisions_load()}}
|
|
179
204
|
|
|
180
205
|
This produces a compact index of active ADR/PF entries. Pass `DECISIONS_CONTEXT` to all Review agents. Review agents use `devflow:apply-decisions` to Read full entry bodies on demand.
|
|
181
206
|
|
|
182
|
-
{knowledge_load()}
|
|
207
|
+
{{knowledge_load()}}
|
|
183
208
|
|
|
184
209
|
Pass `FEATURE_KNOWLEDGE` to all Review agents alongside `DECISIONS_CONTEXT`.
|
|
185
210
|
|
|
@@ -200,14 +225,14 @@ Spawn Review agents **in a single message**. Always run 8 core reviews; conditio
|
|
|
200
225
|
| regression | â | devflow:regression |
|
|
201
226
|
| testing | â | devflow:testing |
|
|
202
227
|
| reliability | â | devflow:reliability |
|
|
203
|
-
| typescript |
|
|
204
|
-
| react |
|
|
205
|
-
| accessibility |
|
|
206
|
-
| ui-design |
|
|
207
|
-
| go |
|
|
208
|
-
| java |
|
|
209
|
-
| python |
|
|
210
|
-
| rust |
|
|
228
|
+
| typescript | presence-gated | devflow:typescript |
|
|
229
|
+
| react | presence-gated | devflow:react |
|
|
230
|
+
| accessibility | presence-gated | devflow:accessibility |
|
|
231
|
+
| ui-design | presence-gated | devflow:ui-design |
|
|
232
|
+
| go | presence-gated | devflow:go |
|
|
233
|
+
| java | presence-gated | devflow:java |
|
|
234
|
+
| python | presence-gated | devflow:python |
|
|
235
|
+
| rust | presence-gated | devflow:rust |
|
|
211
236
|
| database | conditional | devflow:database |
|
|
212
237
|
| dependencies | conditional | devflow:dependencies |
|
|
213
238
|
| documentation | conditional | devflow:documentation |
|
|
@@ -227,6 +252,7 @@ DECISIONS_CONTEXT: {decisions_context}
|
|
|
227
252
|
FEATURE_KNOWLEDGE: {feature_knowledge}
|
|
228
253
|
PR_DESCRIPTION: <pr-description>{pr_description}</pr-description>
|
|
229
254
|
PRIOR_RESOLUTIONS: <prior-resolution-summary>{prior_resolutions}</prior-resolution-summary>
|
|
255
|
+
COMPLIANCE_FRAMEWORKS: {COMPLIANCE_FRAMEWORKS} (compliance focus only)
|
|
230
256
|
If PRIOR_RESOLUTIONS is not (none), follow Cross-Cycle Awareness in review.md.
|
|
231
257
|
Follow devflow:apply-decisions to scan the index and Read full ADR/PF bodies on demand.
|
|
232
258
|
Follow devflow:apply-feature-knowledge for FEATURE_KNOWLEDGE â feature-specific patterns and anti-patterns inform findings.
|
|
@@ -261,7 +287,7 @@ Output: {worktree_path}/.devflow/docs/reviews/{branch-slug}/{timestamp}/review-s
|
|
|
261
287
|
Agent(subagent_type="Git", run_in_background=false):
|
|
262
288
|
"OPERATION: post-review-summary
|
|
263
289
|
PR_NUMBER: {pr_number}
|
|
264
|
-
REVIEW_SUMMARY_PATH:
|
|
290
|
+
REVIEW_SUMMARY_PATH: .devflow/docs/reviews/{branch-slug}/{timestamp}/review-summary.md
|
|
265
291
|
CYCLE_NUMBER: {cycle_number}
|
|
266
292
|
REVIEW_TIMESTAMP: {timestamp}
|
|
267
293
|
REVIEW_PUBLICATION: {REVIEW_PUBLICATION}
|
|
@@ -274,12 +300,12 @@ Posts the consolidated review-summary comment (marker-deduped by the operation o
|
|
|
274
300
|
**Requires:** BRANCH_INFO, REVIEW_DIR
|
|
275
301
|
|
|
276
302
|
Per worktree, after successful completion:
|
|
277
|
-
1. Write current HEAD SHA to
|
|
303
|
+
1. Write current HEAD SHA to `{worktree_path}/.devflow/docs/reviews/{branch-slug}/.last-review-head`
|
|
278
304
|
2. Display results from all agents:
|
|
279
305
|
- Merge recommendation (from Synthesize agent)
|
|
280
306
|
- Issue counts by category (đ´ blocking / â ī¸ should-fix / âšī¸ pre-existing)
|
|
281
307
|
- Review comment status: POSTED / POSTED+TRUNCATED (body exceeded 60k after redaction) / SKIPPED (D7 dedup) / DEGRADED (from Git)
|
|
282
|
-
- Publication status: FULL (private repo) | FULL (config override) | STUB (public repository) | OFF (publication disabled by config) (from Git agent)
|
|
308
|
+
- Publication status: FULL (private repo) | FULL (config override) | STUB (public repository) | OFF (publication disabled by config) | STUB (visibility undeterminable) | STUB (evidence policy) (from Git agent)
|
|
283
309
|
- Artifact paths
|
|
284
310
|
|
|
285
311
|
In multi-worktree mode, report results per worktree.
|
|
@@ -291,7 +317,7 @@ In multi-worktree mode, report results per worktree.
|
|
|
291
317
|
â
|
|
292
318
|
ââ Phase 0: Worktree Discovery & Pre-flight
|
|
293
319
|
â ââ Step 0a: git worktree list â filter reviewable
|
|
294
|
-
â ââ Step 0b: Resolve
|
|
320
|
+
â ââ Step 0b: Resolve the compliance lens
|
|
295
321
|
â ââ Step 0c: Git agent (ensure-pr-ready) per worktree [parallel]
|
|
296
322
|
â ââ Step 0d: Incremental detection + timestamp setup per worktree
|
|
297
323
|
â ââ Step 0e-i: Load prior resolution-summary.md
|
|
@@ -330,19 +356,19 @@ In multi-worktree mode, report results per worktree.
|
|
|
330
356
|
| Worktree pre-flight fails | Report failure, continue with other worktrees |
|
|
331
357
|
| `--full` in multi-worktree mode | Applies to all worktrees (global modifier) |
|
|
332
358
|
| Many worktrees (5+) | Report count and proceed â user manages their worktree count |
|
|
333
|
-
| Review comment already posted | Git agent matches
|
|
359
|
+
| Review comment already posted | Git agent matches its own marker on the `{cycle, timestamp}` pair â skip silently (D7); a re-review in the same cycle (different timestamp) posts its own comment. The marker's format belongs to the operation; this caller passes the pair and never restates the literal |
|
|
334
360
|
| First review (no prior resolution) | PRIOR_RESOLUTIONS=(none), no convergence check |
|
|
335
361
|
| fp_ratio denominator = 0 | fp_ratio = 0, no warning |
|
|
336
362
|
| `--full` flag | Bypass incremental detection (Step 0d), still load PRIOR_RESOLUTIONS for cross-cycle awareness |
|
|
337
363
|
| Parsing failure on resolution-summary.md | fp_ratio = 0, convergence tracking degraded (see Step 0e-ii) |
|
|
338
364
|
| Concurrent sessions | Advisory only, each session computes independently |
|
|
339
365
|
| Public repo (`auto` mode) | Git agent probes visibility, posts counts-only STUB comment; full report stays local |
|
|
340
|
-
| `reviewPublication: off` | Git agent skips posting the review comment (OFF) |
|
|
366
|
+
| `reviewPublication: off` | Git agent skips posting the review comment (OFF) â except that, only when `EVIDENCE_POLICY` is `required`, Step 0f passes `stub` and a counts-only STUB comment posts |
|
|
341
367
|
|
|
342
368
|
## Backwards Compatibility
|
|
343
369
|
|
|
344
370
|
- **Single worktree**: Auto-discovery finds only one worktree â proceeds exactly as before. Zero behavior change.
|
|
345
|
-
- **Legacy flat layout**: If
|
|
371
|
+
- **Legacy flat layout**: If `{worktree}/.devflow/docs/reviews/{branch-slug}/` contains flat `*.md` files (no timestamped subdirectories), new runs create timestamped subdirectories. Old flat files remain untouched.
|
|
346
372
|
|
|
347
373
|
## Principles
|
|
348
374
|
|
|
@@ -4,7 +4,7 @@ output-dir: dist/commands
|
|
|
4
4
|
---
|
|
5
5
|
@import { knowledge_writeback } from "./_partials/_knowledge.mds"
|
|
6
6
|
@import { decisions_load } from "./_partials/_decisions.mds"
|
|
7
|
-
|
|
7
|
+
@import { issue_ref_grammar, issue_capture_contract } from "./_partials/_tracker.mds"
|
|
8
8
|
# Debug Command
|
|
9
9
|
|
|
10
10
|
Investigate bugs by spawning parallel agents, each pursuing a different hypothesis. Evidence is aggregated and synthesized to identify the root cause.
|
|
@@ -14,14 +14,14 @@ Investigate bugs by spawning parallel agents, each pursuing a different hypothes
|
|
|
14
14
|
```
|
|
15
15
|
/debug "description of bug or issue"
|
|
16
16
|
/debug "function returns undefined when called with empty array"
|
|
17
|
-
/debug #42 (investigate bug from
|
|
17
|
+
/debug #42 (investigate bug from issue reference)
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
## Input
|
|
21
21
|
|
|
22
22
|
`$ARGUMENTS` contains whatever follows `/debug`:
|
|
23
23
|
- Bug description: "login fails after session timeout"
|
|
24
|
-
-
|
|
24
|
+
- Issue reference: "#42"
|
|
25
25
|
- Empty: use conversation context
|
|
26
26
|
|
|
27
27
|
## Phases
|
|
@@ -32,7 +32,7 @@ Investigate bugs by spawning parallel agents, each pursuing a different hypothes
|
|
|
32
32
|
|
|
33
33
|
**Load Companion Skills** â Load via Skill tool: `devflow:test-driven-development`, `devflow:software-design`, `devflow:testing`. If a skill fails to load, continue without it.
|
|
34
34
|
|
|
35
|
-
{decisions_load()}
|
|
35
|
+
{{decisions_load()}}
|
|
36
36
|
|
|
37
37
|
The orchestrator uses `DECISIONS_CONTEXT` locally when generating hypotheses (Phase 2) â prior pitfalls and decisions can suggest specific root causes to investigate. Follow `devflow:apply-decisions` to Read full entry bodies on demand. **Do NOT pass `DECISIONS_CONTEXT` to Explore investigators** â decisions context stays in the orchestrator; investigators examine code directly.
|
|
38
38
|
|
|
@@ -43,15 +43,21 @@ The orchestrator uses `DECISIONS_CONTEXT` locally when generating hypotheses (Ph
|
|
|
43
43
|
**Produces:** HYPOTHESES, BUG_CONTEXT
|
|
44
44
|
**Requires:** DECISIONS_CONTEXT
|
|
45
45
|
|
|
46
|
-
If `$ARGUMENTS`
|
|
46
|
+
If `$ARGUMENTS` opens with a candidate issue reference, fetch the issue:
|
|
47
|
+
|
|
48
|
+
{{issue_ref_grammar()}}
|
|
47
49
|
|
|
48
50
|
```
|
|
49
51
|
Agent(subagent_type="Git"):
|
|
50
52
|
"OPERATION: fetch-issue
|
|
51
|
-
|
|
53
|
+
ISSUE_INPUT: {issue reference}
|
|
52
54
|
Return issue title, body, labels, and any linked error logs."
|
|
53
55
|
```
|
|
54
56
|
|
|
57
|
+
{{issue_capture_contract()}}
|
|
58
|
+
|
|
59
|
+
If the Git agent returns only a TRACEABILITY: DEGRADED line and no issue content, report that line verbatim to the user and use AskUserQuestion to request the bug description before generating any hypotheses â do not fabricate a description from the raw candidate token alone.
|
|
60
|
+
|
|
55
61
|
Analyze the bug description (from arguments or issue) and identify 3-5 plausible hypotheses. Each hypothesis must be:
|
|
56
62
|
- **Specific**: Points to a concrete mechanism (not "something is wrong")
|
|
57
63
|
- **Testable**: Can be confirmed or disproved by reading code/logs
|
|
@@ -175,7 +181,7 @@ Ask user via AskUserQuestion: "Want me to implement this fix?"
|
|
|
175
181
|
- **YES** â Load `devflow:patterns` and `devflow:test-driven-development` skills, implement the fix, then spawn `Agent(subagent_type="Simplify")` on changed files.
|
|
176
182
|
- **NO** â Done. Report stands as documentation.
|
|
177
183
|
|
|
178
|
-
{knowledge_writeback()}
|
|
184
|
+
{{knowledge_writeback()}}
|
|
179
185
|
|
|
180
186
|
## Architecture
|
|
181
187
|
|