devflow-kit 3.5.0 → 3.7.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 +178 -1
- package/README.md +10 -6
- package/dist/agents/code.md +7 -11
- package/dist/agents/{diagnose.md → debug.md} +4 -4
- package/dist/agents/{code-fix.md → fix.md} +7 -8
- package/dist/agents/{scrutinize.md → harden.md} +6 -6
- package/dist/agents/{code-edit.md → refactor.md} +8 -9
- package/dist/agents/review.md +2 -0
- package/dist/cli/agents-view/render.js +1 -1
- package/dist/cli/commands/gates.js +276 -0
- package/dist/cli/commands/init-seed.js +9 -1
- package/dist/cli/commands/init.js +34 -11
- package/dist/cli/commands/learning.js +12 -12
- package/dist/cli/commands/legacy-hooks.js +1 -1
- package/dist/cli/commands/memory.js +18 -0
- package/dist/cli/commands/uninstall.js +111 -5
- package/dist/cli.js +2 -0
- package/dist/commands/bug-analysis.md +21 -17
- package/dist/commands/code-review.md +65 -66
- package/dist/commands/debug.md +17 -17
- package/dist/commands/dynamic-build.md +104 -116
- package/dist/commands/dynamic-plan.md +13 -11
- package/dist/commands/dynamic-profile.md +9 -7
- package/dist/commands/dynamic-tickets.md +13 -11
- package/dist/commands/explore.md +15 -15
- package/dist/commands/implement.md +80 -154
- package/dist/commands/plan.md +34 -66
- package/dist/commands/release.md +11 -7
- package/dist/commands/research.md +14 -10
- package/dist/commands/resolve.md +44 -88
- package/dist/commands/self-review.md +44 -44
- package/dist/core/agent-models.js +47 -11
- package/dist/core/{learning-tuning-config.js → curate-tuning-config.js} +14 -14
- package/dist/core/echo-value.js +42 -0
- package/dist/core/evidence-policy.js +17 -5
- package/dist/core/gate-level.js +213 -0
- package/dist/core/learning-queue-cleanup.js +1 -1
- package/dist/core/manifest.js +26 -10
- package/dist/core/migrations.js +63 -44
- package/dist/core/model-discovery.js +7 -1
- package/dist/core/plugins.js +14 -12
- package/dist/core/project-paths.js +3 -3
- package/dist/core/tracker.js +5 -33
- package/dist/hud/codex-usage.js +247 -0
- package/dist/hud/components/codex-quota.js +37 -0
- package/dist/hud/components/usage-quota.js +1 -1
- package/dist/hud/config.js +1 -0
- package/dist/hud/index.js +16 -3
- package/dist/hud/render.js +3 -1
- package/dist/learning-off/agents/code.md +7 -11
- package/dist/learning-off/agents/{diagnose.md → debug.md} +4 -4
- package/dist/learning-off/agents/{code-fix.md → fix.md} +7 -8
- package/dist/learning-off/agents/{scrutinize.md → harden.md} +6 -6
- package/dist/learning-off/agents/{code-edit.md → refactor.md} +8 -9
- package/dist/learning-off/agents/review.md +2 -0
- package/dist/learning-off/commands/bug-analysis.md +9 -9
- package/dist/learning-off/commands/code-review.md +54 -59
- package/dist/learning-off/commands/debug.md +6 -10
- package/dist/learning-off/commands/dynamic-build.md +98 -112
- package/dist/learning-off/commands/dynamic-plan.md +5 -5
- package/dist/learning-off/commands/dynamic-profile.md +1 -1
- package/dist/learning-off/commands/dynamic-tickets.md +5 -5
- package/dist/learning-off/commands/explore.md +4 -8
- package/dist/learning-off/commands/implement.md +68 -146
- package/dist/learning-off/commands/plan.md +23 -58
- package/dist/learning-off/commands/release.md +4 -2
- package/dist/learning-off/commands/research.md +2 -2
- package/dist/learning-off/commands/resolve.md +33 -81
- package/dist/learning-off/commands/self-review.md +32 -36
- package/dist/skills/git/references/pr/check-merge-readiness.md +2 -0
- package/dist/skills/git/references/pr/update-pr-evidence.md +4 -6
- package/dist/skills/git/references/tracker/github/ensure-pr-ready.md +7 -9
- package/dist/skills/git/references/tracker/jira/ensure-pr-ready.md +7 -15
- package/dist/skills/git/references/tracker/linear/ensure-pr-ready.md +7 -15
- package/dist/targets/claude-code/installer.js +117 -84
- package/dist/targets/claude-code/learning-install.js +15 -3
- package/dist/targets/claude-code/tracker-servers.js +1 -1
- package/package.json +1 -1
- package/src/assets/agents/_partials/_code.mds +7 -8
- package/src/assets/agents/code.mds +4 -7
- package/src/assets/agents/{learning.md → curate.md} +8 -10
- package/src/assets/agents/{diagnose.mds → debug.mds} +4 -4
- package/src/assets/agents/evaluate.md +4 -4
- package/src/assets/agents/{code-fix.mds → fix.mds} +5 -5
- package/src/assets/agents/{scrutinize.mds → harden.mds} +6 -6
- package/src/assets/agents/{simplify.md → polish.md} +4 -4
- package/src/assets/agents/{code-edit.mds → refactor.mds} +6 -6
- package/src/assets/agents/review.mds +2 -0
- package/src/assets/agents/synthesize.md +2 -2
- package/src/assets/agents/test.md +2 -2
- package/src/assets/commands/_partials/_compliance.mds +1 -1
- package/src/assets/commands/_partials/_decisions.mds +26 -6
- package/src/assets/commands/_partials/_engine.mds +15 -15
- package/src/assets/commands/_partials/_evidence_policy.mds +0 -17
- package/src/assets/commands/_partials/_knowledge.mds +14 -9
- package/src/assets/commands/_partials/_preamble.mds +4 -2
- package/src/assets/commands/_partials/_roster.mds +4 -4
- package/src/assets/commands/_partials/_settings.mds +2 -2
- package/src/assets/commands/_partials/_wave.mds +10 -17
- package/src/assets/commands/bug-analysis.mds +7 -7
- package/src/assets/commands/code-review.mds +51 -56
- package/src/assets/commands/debug.mds +2 -2
- package/src/assets/commands/dynamic-build.mds +67 -74
- package/src/assets/commands/implement.mds +65 -127
- package/src/assets/commands/plan.mds +21 -61
- package/src/assets/commands/release.mds +5 -1
- package/src/assets/commands/resolve.mds +28 -76
- package/src/assets/commands/self-review.mds +27 -27
- package/src/assets/mds/git/_ops_steps.mds +3 -3
- package/src/assets/mds/git/_pr.mds +6 -6
- package/src/assets/mds/tracker/_common.mds +23 -12
- package/src/assets/mds/tracker/_github.mds +2 -9
- package/src/assets/mds/tracker/_jira.mds +2 -15
- package/src/assets/mds/tracker/_linear.mds +2 -15
- package/src/assets/scripts/ci-wait.cjs +22 -4
- package/src/assets/scripts/claude-md-audit.cjs +66 -51
- package/src/assets/scripts/hooks/assets/orchestrator-charter.md +4 -3
- package/src/assets/scripts/hooks/background-memory-update +404 -95
- package/src/assets/scripts/hooks/capture-prompt +1 -1
- package/src/assets/scripts/hooks/capture-question +1 -1
- package/src/assets/scripts/hooks/capture-turn +1 -1
- package/src/assets/scripts/hooks/json-helper.cjs +13 -2
- package/src/assets/scripts/hooks/json-parse +18 -3
- package/src/assets/scripts/hooks/lib/learning-store.cjs +1 -1
- package/src/assets/scripts/hooks/lib/project-paths.cjs +4 -4
- package/src/assets/scripts/hooks/memory-permission +358 -0
- package/src/assets/scripts/hooks/preamble +1 -1
- package/src/assets/scripts/hooks/session-start-context +60 -47
- package/src/assets/scripts/hooks/session-start-memory +26 -5
- package/src/assets/scripts/lib/project-config.cjs +19 -4
- package/src/assets/scripts/resolve-settings.cjs +200 -32
- package/src/assets/scripts/verify-evidence.cjs +726 -9
- package/src/assets/skills/agent-references/SKILL.md +14 -6
- package/src/assets/skills/agent-references/references/commands/code-review-levels.md +19 -0
- package/src/assets/skills/agent-references/references/commands/implement-evidence-asks.md +35 -0
- package/src/assets/skills/agent-references/references/commands/implement-revalidate.md +15 -0
- package/src/assets/skills/agent-references/references/commands/plan-levels.md +40 -0
- package/src/assets/skills/agent-references/references/synthesize/bug-analysis.md +1 -1
- package/src/assets/skills/agent-references/references/synthesize/planning.md +9 -22
- package/src/assets/skills/agent-references/references/synthesize/review.md +11 -11
- package/src/assets/skills/apply-decisions/SKILL.md +6 -4
- package/src/assets/skills/docs-framework/SKILL.md +3 -3
- package/src/assets/skills/qa/SKILL.md +1 -1
- package/src/assets/skills/quality-gates/SKILL.md +7 -7
- package/src/assets/skills/quality-gates/references/report-template.md +7 -7
- /package/src/assets/skills/agent-references/references/{learning → curate}/maintain.md +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,181 @@ All notable changes to Devflow will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.7.0] - 2026-10-16
|
|
9
|
+
|
|
10
|
+
### Upgrade notes — Gate level
|
|
11
|
+
|
|
12
|
+
The settings line has a new last field for the gate level ([#472](https://github.com/dean0x/devflow/issues/472)).
|
|
13
|
+
Do the step below after you update.
|
|
14
|
+
|
|
15
|
+
**What you must do:**
|
|
16
|
+
- Run `devflow init` after you update. A full init installs the commands that accept the new settings line.
|
|
17
|
+
- After `devflow init`, a user with no level gets `standard` in `/code-review`: no TypeScript focus, and no Dependencies focus on a code diff that changes no dependency manifest. Run `devflow gates --set full` to keep today's set.
|
|
18
|
+
- A user with no level also gets the lean `/plan`: fewer agents, while the security gap analysis and the design review still run. Run `devflow gates --set full` to keep the full `/plan`.
|
|
19
|
+
|
|
20
|
+
**Stale-install window:**
|
|
21
|
+
- The settings line now ends with `GATE_LEVEL=<full|standard|lean>`. An installed command from an
|
|
22
|
+
older version accepts only the old fields, so it does not accept the longer line.
|
|
23
|
+
- `devflow init --hud-only` and a plugin-only update refresh the resolver script. They do not
|
|
24
|
+
refresh the installed prompts.
|
|
25
|
+
- Until you run a full `devflow init`, every installed command uses its fail-closed settings value.
|
|
26
|
+
- Until you run `devflow init`, the installed `/code-review` and `/plan` ignore the level.
|
|
27
|
+
|
|
28
|
+
**Known limits:**
|
|
29
|
+
- A corrupt manifest, or one over 1 MiB, reads as the `standard` level. `devflow gates --status`
|
|
30
|
+
warns that `devflow init` will replace the file.
|
|
31
|
+
- `devflow init` still overwrites a corrupt or rejected manifest. The stored level is lost with it.
|
|
32
|
+
- Two commands that write the manifest at the same moment can lose one update.
|
|
33
|
+
- There is no team floor. A repository that declares compliance can run a lower personal level.
|
|
34
|
+
`/code-review` and `/plan` read the level, so a personal `lean` level narrows the review and the
|
|
35
|
+
planning run even where compliance is declared. The Compliance focus still runs on its trigger,
|
|
36
|
+
and in `/plan` the security gap focus and the design review run at every level.
|
|
37
|
+
Issue [#488](https://github.com/dean0x/devflow/issues/488) (the compliance lens as a floor on
|
|
38
|
+
the level) is open.
|
|
39
|
+
|
|
40
|
+
### Upgrade notes — Working memory
|
|
41
|
+
|
|
42
|
+
The memory worker's write is limited to its staged file. Read the items below after you update.
|
|
43
|
+
|
|
44
|
+
**What you must do:**
|
|
45
|
+
- Update Claude Code to 2.1.269 or newer. On an older version, working memory does not update and Claude Code shows no message. The worker log has one line that says why.
|
|
46
|
+
- If a worker `env` value lives only in your project or local Claude Code settings, move it to your user settings file. The worker loads only the user settings.
|
|
47
|
+
|
|
48
|
+
**Your own settings:**
|
|
49
|
+
- Allow rules in your own Claude Code settings also apply to the worker's run. A user-level Edit allow rule that covers other paths covers the worker too.
|
|
50
|
+
|
|
51
|
+
**Known limits:**
|
|
52
|
+
- A project path that contains any of `* ? [ ] \ " { }` or a control character gets no working-memory updates. The permission rule carries the path without quoting. The worker skips the project, logs the reason and shows one message at session start. Parentheses and spaces in the path are carried as they are.
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- **A gate level on the settings line, and the `devflow gates` command** ([#472](https://github.com/dean0x/devflow/issues/472)). The settings line ends with `GATE_LEVEL=<full|standard|lean>`. The level comes from a personal `gateLevel` key in `.devflow/config.json`, then from the machine default `features.gateLevel` in `~/.devflow/manifest.json`, then from `standard`. The personal key may raise or lower the level. It is not a narrow-only switch, and a later change can make it narrow-only. A `gateLevel` in `project.json` is ignored, and no command writes the personal key. A malformed value reads as `full`. `devflow gates --set <level>` writes the machine default and nothing else. `devflow gates --status` shows the level in effect, the layer that decided it and the machine default. `/code-review` reads the level ([#474](https://github.com/dean0x/devflow/issues/474)) and so does `/plan` ([#473](https://github.com/dean0x/devflow/issues/473)); [#480](https://github.com/dean0x/devflow/issues/480) adds more readers.
|
|
57
|
+
- **`devflow init --hud-only` prints a line when the installed prompts come from another devflow version** ([#472](https://github.com/dean0x/devflow/issues/472)). It tells you to run `devflow init`.
|
|
58
|
+
- **A message at session start when working memory stops for a cause you can fix.** If the worker cannot write its staged file at the project path (for example, a path with a character the permission rule cannot carry), or Claude Code refuses the worker's write in two runs with no successful update between them, the next session start shows one message that points to the log. Each cause is shown once.
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- **`/code-review` picks its focus set by gate level** ([#474](https://github.com/dean0x/devflow/issues/474)). `full` runs every focus, as before. `standard`, the default, drops TypeScript, and drops Dependencies on a code diff that changes no dependency manifest (a lockfile alone does not count). `lean` runs Security, Testing and Reliability on a code diff. The Compliance focus keeps its own trigger at every level. A docs-only, tests-only or lockfile-only diff keeps its reduced set, and at `lean` a tests-only diff drops Consistency. A mixed non-code diff runs the union of its classes' sets. Security runs at every level and in every class. `/code-review` reads a new level reference only at `standard` or `lean`. If it cannot read the reference, it says so and runs the full sets. The review summary now shows the gate level and the focuses, and a review with no security report gives CHANGES REQUESTED.
|
|
63
|
+
- **`/plan` runs a lean shape at `standard` and `lean`** ([#473](https://github.com/dean0x/devflow/issues/473)). `full` runs the phases as before. `standard`, the default, and `lean` run one Explore round of two agents (three for several issues), or none when a `/research` report from the same conversation covers the scope; no Synthesize step; two gap-analysis agents, one for security and one for completeness, architecture and performance (plus consistency and dependencies for several issues); one Plan agent; and the design review. The security gap agent and the design review run at every level, the Compliance agent keeps its own trigger, and Gates 0, 1 and 2 run at every level. Every agent spawn in `/plan` names its agent type; the planning spawns use Claude Code's built-in `Plan` agent. If `/plan` cannot read its level reference, it says so and runs the full shape. The run report names the gate level. Run `devflow gates --set full` to keep the full shape.
|
|
64
|
+
- **`/implement` splits long plans into sequential Code phases; a run with no plan stays single** ([#452](https://github.com/dean0x/devflow/issues/452)).
|
|
65
|
+
- **Code agents read large files once, by range, and cap printed output** ([#452](https://github.com/dean0x/devflow/issues/452)).
|
|
66
|
+
- **Polish, Harden, Evaluate and Test get the full branch diff as `FILES_CHANGED`** ([#452](https://github.com/dean0x/devflow/issues/452)).
|
|
67
|
+
- **`/implement` stops when the base branch name has a character outside ASCII letters, digits and `._/+@,#-`, or is longer than 200** ([#452](https://github.com/dean0x/devflow/issues/452)). The check also covers the re-validation path. Git accepts some refused names, such as `café`. For them, `/implement` stops and tells the user which characters are allowed.
|
|
68
|
+
- **The token audit counts files written through Bash** ([#442](https://github.com/dean0x/devflow/issues/442)).
|
|
69
|
+
- **The memory worker's write is limited to its staged file.** The `claude -p` run loads only your own Claude Code settings plus two permission rules, an allow rule for `.devflow/memory/WORKING-MEMORY.md.new` and a deny rule for every path under it, and a permission mode that refuses every call that no allow rule covers. Allow rules in your own Claude Code settings also apply to the run, so a user-level Edit allow rule that covers other paths covers the worker too. A folder or a link at the staged path is removed by one guarded delete of exactly that path; when it cannot be removed, the run fails and removes nothing. The worker ignores a project's or a local Claude Code settings file.
|
|
70
|
+
- **Working memory needs Claude Code 2.1.269 or newer.** `devflow init` states the version at its working-memory step. On an older Claude Code the worker does not run, keeps the queue and writes one log line that says why, so working memory does not update until you update Claude Code.
|
|
71
|
+
- **The memory log gets one `Run:` line for each worker run.** `.background-memory-update.log` under `~/.devflow/logs/`, in the folder for the session that ran the worker (`<session-directory-slug>`), ends every run with `Run: cli=<version|unknown> argv=<lean|legacy|none> result=<updated|conflict|failed|skip|below-floor> denials=<count|unknown|n/a> removed=<none|dir|link>`. `cli=unknown` means the worker read no version, `denials=unknown` means the result reported no count, and `denials=n/a` means no run started. A below-floor line adds `floor=<version>`. The line holds keywords and digits only, never turn or prompt text.
|
|
72
|
+
- **A project inside a `.git` folder gets no working-memory update.** The worker skips it, logs the reason and shows the path message once at session start. A checkout under `.claude/worktrees` is updated like any other checkout.
|
|
73
|
+
- **PR links and `/dynamic-build` ticket branches follow stricter rules** ([#486](https://github.com/dean0x/devflow/issues/486)). `/implement` prints `TRACEABILITY: DEGRADED (ambiguous issue reference)` when it has an issue number and no link line. `/code-review` and `/bug-analysis` PRs no longer get a closing line from the branch name. A PR body has no `## Related Issues` heading when neither an issue number nor a link line is given. In a `/dynamic-build` wave, the ticket branch must be a local branch name that passes the allowlist. A name with a leading `#` or `-`, a revision name such as `HEAD`, a tag and a SHA are all refused, and the ticket is quarantined. The wave aborts the merge only when the merge began. On Jira and Linear, the PR link line always uses the default reference form (`Refs {KEY}-{n}`). A custom `## Reference Rendering` section no longer shapes that line. It still shapes the release Shipped Issues section. Follow-up [#511](https://github.com/dean0x/devflow/issues/511) tracks applying it to the PR link line.
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
|
|
77
|
+
- **Prompts resolve the Claude config directory with the same rule as the installer** ([#517](https://github.com/dean0x/devflow/pull/517)). `CLAUDE_CONFIG_DIR` applies when it is an absolute path, else `~/.claude`.
|
|
78
|
+
- **A tracked `.devflow/config.json` no longer applies as personal config** ([#489](https://github.com/dean0x/devflow/pull/489)). devflow ignores it and shows a warning.
|
|
79
|
+
- **`/dynamic-build` wave merges are safer, and a supplied PR link line is used as given** ([#486](https://github.com/dean0x/devflow/issues/486)). A wave merge uses `git merge --no-ff` and records the pre-merge SHA. The ticket branch name is checked before the merge, and a refused name quarantines that ticket. The wave halts when the merge or base SHA is not valid. A ticket whose branch adds no commit stops the wave before the post-merge build, and no wave PR opens. A merge whose post-merge build fails is undone by a reset to the recorded SHA. The run summary names why the wave halted. A PR gets no closing reference from a bare number or the branch name.
|
|
80
|
+
- **Model discovery waits up to 6 s for the routing runtime** ([#519](https://github.com/dean0x/devflow/pull/519)). The wait was 2 s. On a loaded machine, the first start of node with the routing runtime can take more than 2 s. The agents TUI then reported an installed runtime as unknown. `devflow proxy --enable` then did not refresh the model cache. A runtime that does not answer within 6 s still falls back to the stale cache.
|
|
81
|
+
- **The memory worker keeps the queue when it finds neither jq nor node** ([#523](https://github.com/dean0x/devflow/issues/523)). The hooks that start the worker already stop without a parser. A worker that ran with a different PATH deleted the queued turns. Now the worker stops before it reads the queue, and the queue stays for the next run. A parser that exits with an error also leaves the queue and the batch in place, and a queue that cannot be added to a leftover batch stays in its file.
|
|
82
|
+
- **A malformed queue line no longer stops the worker from reading the other lines** ([#528](https://github.com/dean0x/devflow/issues/528)). With jq, the worker read the queue as one stream, so one malformed line stopped the parse. The valid turns after it were lost, or the whole batch was deleted. Now the worker reads each line alone, skips only the malformed line, and logs how many lines in the read window it skipped. A row cut off before its line break runs into the next row, so those two rows are one malformed line. Both parsers read a line as a turn only when its role is user, assistant or qa, so jq and node log the same skip count. A batch with no readable line is still removed.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## [3.6.0] - 2026-10-14
|
|
87
|
+
|
|
88
|
+
### Upgrade notes — Agent rename (6 agents)
|
|
89
|
+
|
|
90
|
+
This change releases as a minor version (3.6.0). It renames six agents, and a prompt that names
|
|
91
|
+
an old agent does not work. Read the steps below that you must do by hand.
|
|
92
|
+
|
|
93
|
+
Six agents have new names that state their job ([#466](https://github.com/dean0x/devflow/issues/466)).
|
|
94
|
+
The agent `code` keeps its name. The learning feature keeps its names too: `devflow learning`,
|
|
95
|
+
`features.learning`, `.devflow/learning/` and the learning ops do not change.
|
|
96
|
+
|
|
97
|
+
| Old slug | New slug | Old `name:` | New `name:` |
|
|
98
|
+
|--------------|------------|--------------|-------------|
|
|
99
|
+
| `code-fix` | `fix` | `Code-fix` | `Fix` |
|
|
100
|
+
| `code-edit` | `refactor` | `Code-edit` | `Refactor` |
|
|
101
|
+
| `scrutinize` | `harden` | `Scrutinize` | `Harden` |
|
|
102
|
+
| `simplify` | `polish` | `Simplify` | `Polish` |
|
|
103
|
+
| `diagnose` | `debug` | `Diagnose` | `Debug` |
|
|
104
|
+
| `learning` | `curate` | `Learning` | `Curate` |
|
|
105
|
+
|
|
106
|
+
The `/debug` command does not change. `Debug` is the agent that `/bug-analysis` spawns.
|
|
107
|
+
Use `Refactor` for a given mechanical change, such as "rename X to Y everywhere".
|
|
108
|
+
Use `Polish` for a judgment pass that makes code cleaner and keeps its behaviour.
|
|
109
|
+
|
|
110
|
+
**What devflow migrates automatically:**
|
|
111
|
+
- Keys in `~/.devflow/agent-models.json`. The one-time migration `canonicalise-agent-keys-v2`
|
|
112
|
+
runs on the first `devflow init` after this upgrade. Each read of the file also maps an old key
|
|
113
|
+
to its new slug. If the old key and the new key both exist, the new key wins.
|
|
114
|
+
`devflow agents --set <old slug>` writes the new slug and tells you.
|
|
115
|
+
- The session-start hook reads `agents.curate.model`, then an older `agents.learning.model`, and
|
|
116
|
+
spawns `Curate`. `devflow init` updates the hook.
|
|
117
|
+
- `token-audit` counts old transcripts under the new names, so a past `Code-fix` spawn counts as
|
|
118
|
+
`Fix`. Its JSON report key `codeFixByOperation` is now `fixByOperation`.
|
|
119
|
+
|
|
120
|
+
**What `devflow init` and `devflow uninstall` do to agent files:**
|
|
121
|
+
- A full `devflow init` removes the six old files from `~/.claude/agents/devflow/` and installs
|
|
122
|
+
the new ones. It removes every other file in that folder that devflow does not own.
|
|
123
|
+
- A partial `devflow init --plugin=<name>` and a selective `devflow uninstall --plugin=<name>`
|
|
124
|
+
run the orphan sweep. The sweep deletes every `.md` file in `~/.claude/agents/devflow/` whose
|
|
125
|
+
name is not a devflow agent. This includes the six old files.
|
|
126
|
+
- Do not keep your own agent files in `~/.claude/agents/devflow/`, because devflow deletes them.
|
|
127
|
+
A file of your own directly in `~/.claude/agents/` is never touched. This is also true when it
|
|
128
|
+
has the name of an old devflow agent, for example `~/.claude/agents/simplify.md`.
|
|
129
|
+
|
|
130
|
+
**Partial install and partial uninstall on a 3.5.0 install:**
|
|
131
|
+
- The commands of the plugins that stay installed name the old agents until something rewrites
|
|
132
|
+
them. The sweep removes the old agent files, and the new agent files are not on disk until
|
|
133
|
+
something writes them. For this reason both commands now repair the plugins that stay installed.
|
|
134
|
+
- `devflow init --plugin=<name>`: the sweep can delete an old agent file. If it does, the install
|
|
135
|
+
writes the commands and the agents of every plugin in `~/.devflow/manifest.json`. It does not
|
|
136
|
+
write only the plugin you name. If the sweep deletes nothing, the install writes only the plugin
|
|
137
|
+
you name, as before.
|
|
138
|
+
- `devflow uninstall --plugin=<name>`: the sweep can delete an old agent file. If it does, the
|
|
139
|
+
uninstall writes the current commands and agents of the plugins that stay installed. It also
|
|
140
|
+
prints a note. It does not update the hooks, the scripts or `settings.json`. Run a full
|
|
141
|
+
`devflow init` to update them. Until you do, the hook from 3.5.0 can name an agent that no
|
|
142
|
+
longer exists.
|
|
143
|
+
- If there is no readable `~/.devflow/manifest.json`, or the manifest lists no plugin that Devflow
|
|
144
|
+
knows, the uninstall writes nothing. It prints a warning that tells you to run `devflow init`.
|
|
145
|
+
- If the install is a legacy project-local install (`<repo>/.claude`), the uninstall writes
|
|
146
|
+
nothing. It prints a warning. The warning tells you to remove that install in full with
|
|
147
|
+
`devflow uninstall --scope local`.
|
|
148
|
+
- If the write fails, the rewrite stops at the first file that fails. The files that it wrote
|
|
149
|
+
before the failure stay written. The uninstall still finishes and prints a warning that tells
|
|
150
|
+
you to run `devflow init`.
|
|
151
|
+
|
|
152
|
+
**What you must migrate by hand:**
|
|
153
|
+
- Your own prompts, commands, agents or `CLAUDE.md` that name an old agent, for example
|
|
154
|
+
`subagent_type: "Simplify"` or `subagent_type: "Code-edit"`. Devflow cannot edit files it does
|
|
155
|
+
not own. Change them to the new name, for example `subagent_type: "Polish"`.
|
|
156
|
+
- Open Claude Code sessions. Restart each one after `devflow init`. An open session loaded its
|
|
157
|
+
agent types when it started, so it does not know `Fix`, `Refactor`, `Harden`, `Polish`, `Debug`
|
|
158
|
+
or `Curate`. `devflow init` also removes the files of the old agents. The orchestrator charter
|
|
159
|
+
of an open session still names `Code-edit`.
|
|
160
|
+
|
|
161
|
+
**Downgrade warning:** if you downgrade to 3.5.0, it does not know the new keys. Your per-agent
|
|
162
|
+
model overrides that you saved as `fix`, `refactor`, `harden`, `polish`, `debug` or `curate` do
|
|
163
|
+
not apply, and 3.5.0 gives no message. Check them with `devflow agents --list`.
|
|
164
|
+
|
|
165
|
+
### Added
|
|
166
|
+
|
|
167
|
+
- **The HUD shows your Codex usage limits.** A new `codexQuota` segment sits on line 2 next to the Claude quota, for example `Codex 5h ███░░░░░ 40% (1h 2m) · 7d █░░░░░░░ 12% (3d 4h)`. It reads the newest rate-limit record that Codex writes to `~/.codex/sessions`, so it opens no credential file and makes no network call. A window is identified by its length, so a weekly-only plan and a 5h + 7d plan both label correctly. A window past its reset time shows 0%, and a red `limited` marker shows while Codex reports a reached limit. The segment is hidden when there is no recent Codex session, so users without Codex see no change.
|
|
168
|
+
|
|
169
|
+
### Changed
|
|
170
|
+
|
|
171
|
+
- **`/plan` bounds Revise at 2 rounds** ([#455](https://github.com/dean0x/devflow/issues/455)). Each revision spawns five agents (Plan ×3, Synthesize, Design). After the second revision, Gate 2 offers Accept, Cancel or "Restart /plan with these constraints". The first-pass fan-out does not change.
|
|
172
|
+
- **The PR evidence refresh and the merge-readiness check run as a script, not as a Git agent spawn** ([#455](https://github.com/dean0x/devflow/issues/455)). `/implement`, `/resolve` and `/dynamic-build` run `verify-evidence.cjs publish` from the main session, and `/resolve` runs `verify-evidence.cjs readiness`. The `update-pr-evidence` and `check-merge-readiness` operations stay defined and run the same script. The refresh never blocks, and the readiness check only reports.
|
|
173
|
+
- **Agents get a scoped slice of the decisions index** ([#454](https://github.com/dean0x/devflow/issues/454)). On a direct delegation the main session passes only the index lines that match the agent's task, a `(slice: N of M entries — full index: <path>)` marker and the index footer. Sibling agents over one diff share one slice. When the main session is not sure, it includes the entry.
|
|
174
|
+
- **Command bodies are smaller and have size ceilings** ([#456](https://github.com/dean0x/devflow/issues/456)). Rare `/implement` branches (the ticket-link ask, the missing-test-plan ask, the evidence exception and the re-validation path) move to reference files that the command reads by explicit path. `/implement`, `/resolve`, `/plan` and `/code-review` are shorter. A test holds a size ceiling for each of the 14 compiled commands, learning-on and learning-off.
|
|
175
|
+
|
|
176
|
+
### Fixed
|
|
177
|
+
|
|
178
|
+
- **`/release` no longer folds the `Exempt (not attested)` line into the last traceability bullet.** The `## Traceability exceptions` block put that line directly under the last `-` bullet, so Markdown rendered it inside that bullet (seen in the v3.5.0 release notes). The template now holds a blank line between them, and the command states the rule so a composed block always carries it.
|
|
179
|
+
- **The HUD status line exits promptly.** The 2-second overall timeout timer is now cleared when a render finishes, so each status-line render takes about 0.3 s instead of about 2.1 s. A render that times out still prints nothing.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
8
183
|
## [3.5.0] - 2026-10-12
|
|
9
184
|
|
|
10
185
|
### Added
|
|
@@ -1576,7 +1751,9 @@ devflow init
|
|
|
1576
1751
|
|
|
1577
1752
|
---
|
|
1578
1753
|
|
|
1579
|
-
[Unreleased]: https://github.com/dean0x/devflow/compare/
|
|
1754
|
+
[Unreleased]: https://github.com/dean0x/devflow/compare/v3.7.0...HEAD
|
|
1755
|
+
[3.7.0]: https://github.com/dean0x/devflow/compare/v3.6.0...v3.7.0
|
|
1756
|
+
[3.6.0]: https://github.com/dean0x/devflow/compare/v3.5.0...v3.6.0
|
|
1580
1757
|
[3.5.0]: https://github.com/dean0x/devflow/compare/v3.4.0...v3.5.0
|
|
1581
1758
|
[3.4.0]: https://github.com/dean0x/devflow/compare/v3.3.0...v3.4.0
|
|
1582
1759
|
[3.3.0]: https://github.com/dean0x/devflow/compare/v3.2.0...v3.3.0
|
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ you: /implement (hand it the plan)
|
|
|
30
30
|
|
|
31
31
|
Git branch feat/42-rate-limit-upload
|
|
32
32
|
Code implements the plan — your learned decisions, pitfalls, and feature knowledge preloaded
|
|
33
|
-
|
|
33
|
+
Polish · Harden cleanup pass, then 9-pillar quality gate
|
|
34
34
|
Evaluate implementation matches the original request ✓
|
|
35
35
|
Validate build ✓ typecheck ✓ lint ✓ tests ✓
|
|
36
36
|
Test 5/5 QA scenarios pass
|
|
@@ -56,7 +56,7 @@ This is the **orchestrated flow** — you stay in the loop between every step. W
|
|
|
56
56
|
|
|
57
57
|
**A staffed agent roster.** 20 specialized agents with explicit model assignments — Opus for analysis, Sonnet for execution, Haiku for I/O. Reassign any agent's model with `devflow agents`, including GPT models through external model routing (`devflow proxy`).
|
|
58
58
|
|
|
59
|
-
**Up to 20 parallel Review agents.** Security, architecture, performance, complexity, consistency, regression, testing, and more. Each produces findings with severity, confidence scoring, and concrete fixes. Conditional Review agents activate when relevant (TypeScript for `.ts` files, database for schema changes, compliance when regulated surface detected in the diff). Every finding gets validated and resolved automatically.
|
|
59
|
+
**Up to 20 parallel Review agents.** Security, architecture, performance, complexity, consistency, regression, testing, and more. Each produces findings with severity, confidence scoring, and concrete fixes. Conditional Review agents activate when relevant (language focuses such as TypeScript for `.ts` files, database for schema changes, compliance when regulated surface detected in the diff). The gate level narrows these sets: the default `standard` level drops the TypeScript focus, and `lean` runs fewer focuses still. Every finding gets validated and resolved automatically.
|
|
60
60
|
|
|
61
61
|
**Memory that persists.** Session context survives restarts, `/clear`, and context compaction. Your agent picks up exactly where it left off.
|
|
62
62
|
|
|
@@ -76,11 +76,11 @@ This is the **orchestrated flow** — you stay in the loop between every step. W
|
|
|
76
76
|
|
|
77
77
|
**Your issue tracker, not just GitHub.** Pick the tracker your team actually uses — GitHub, Jira, or Linear — at `devflow init`, with `devflow init --tracker <id>`, or later with `devflow tracker --set <id>`; that sets your machine's default. A repository can select its own in `.devflow/project.json`, and devflow follows it there automatically — one machine can work on a Jira repository and a GitHub one side by side. Every install carries every provider's mechanics (48 generated reference files, the tool-call contract among them) and the background agent, because pull requests stay on GitHub whatever your tracker and any repository may pick any provider. On a non-GitHub tracker that agent learns your conventions once per provider (project key, issue types, required fields, workflow transitions, how a reference renders) and writes them to `~/.devflow/tracker/{provider}.md`, so traceability speaks your tracker's vocabulary instead of assuming `#123`. Each provider's conventions are learned from the first repository that uses it. Those files are yours: hand-editable, kept across an uninstall, and refused rather than silently trusted if one no longer names its own provider. The Git and Tracker agents reach a tracker only through the servers you allow (Atlassian, Jira and Linear by default); `devflow tracker --servers` names others. **GitHub is the default** and needs no configuration: no background run and no conventions file.
|
|
78
78
|
|
|
79
|
-
**Full lifecycle.** Beyond the core flow: `/explore` maps a codebase into knowledge bases, `/research` runs multi-type research with trust-aware synthesis, `/debug` investigates with competing hypotheses in parallel, `/bug-analysis` hunts bugs before review, `/self-review` runs
|
|
79
|
+
**Full lifecycle.** Beyond the core flow: `/explore` maps a codebase into knowledge bases, `/research` runs multi-type research with trust-aware synthesis, `/debug` investigates with competing hypotheses in parallel, `/bug-analysis` hunts bugs before review, `/self-review` runs Polish + Harden quality passes, and `/release` ships with learned configuration.
|
|
80
80
|
|
|
81
81
|
**Everything is composable.** 21 plugins (12 core + 9 optional). Install only what you need.
|
|
82
82
|
|
|
83
|
-
**HUD.** A persistent status line updates on every prompt — project, branch, diff stats, context usage, model, cost with weekly/monthly totals, quota reset timers, and configuration counts at a glance.
|
|
83
|
+
**HUD.** A persistent status line updates on every prompt — project, branch, diff stats, context usage, model, cost with weekly/monthly totals, quota reset timers (Claude and Codex), and configuration counts at a glance.
|
|
84
84
|
|
|
85
85
|
```
|
|
86
86
|
~/devflow · main · +2 -1 · v2.0.0+3
|
|
@@ -166,7 +166,7 @@ To keep the knowledge bases or conventions local, add `.devflow/features/` or `.
|
|
|
166
166
|
| `/research` | Multi-type research with trust-aware synthesis |
|
|
167
167
|
| `/plan` | Full design pipeline: explore → gap analysis → design → PR-ready plan document |
|
|
168
168
|
| `/implement` | Execute plan: accepts plan documents from `/plan`, issues, or task descriptions → PR |
|
|
169
|
-
| `/self-review` |
|
|
169
|
+
| `/self-review` | Polish + Harden quality pass |
|
|
170
170
|
| `/code-review` | Multi-perspective parallel code review |
|
|
171
171
|
| `/resolve` | Validate and fix all review issues |
|
|
172
172
|
| `/debug` | Competing hypothesis investigation |
|
|
@@ -200,7 +200,9 @@ A repository can commit `.devflow/project.json` to settle team-wide choices. Eve
|
|
|
200
200
|
|
|
201
201
|
Each key is checked on its own, so one bad value never disables the rest: a bad `evidence` resolves to `required`, a bad `reviewPublication` to `off`, a bad `compliance` list to the generic lens. A `project.json` or `config.json` that exists but is not a JSON object is never read as absent: the settings fail closed (publication off, knowledge write-back off, the tracker reported as invalid). The compliance lens is the exception, because it only adds scrutiny: it keeps every framework a readable layer declares, and an unreadable `project.json` counts as the generic lens. Memory and learning capture fail open instead: the hooks read an unreadable file as narrowing nothing, so capture runs as your machine's switch says.
|
|
202
202
|
|
|
203
|
-
`config.json` is personal, so it must not be committed. A `config.json` that git tracks is ignored as if it were absent — otherwise a branch could commit `"reviewPublication":"full"` for whoever reviews it — and `devflow tracker|memory|learning|knowledge --status` say so, with the fix: `git rm --cached .
|
|
203
|
+
`config.json` is personal, so it must not be committed. A `config.json` that git tracks is ignored as if it were absent — otherwise a branch could commit `"reviewPublication":"full"` for whoever reviews it — and `devflow tracker|memory|learning|knowledge|gates --status` say so, with the fix: untrack the tracked entry with `git rm --cached`, then check or delete the file, because untracking leaves the committed bytes on disk as your personal file. Commands never read the file themselves — one local resolver folds it with your `config.json` and the machine settings, without touching the network.
|
|
204
|
+
|
|
205
|
+
**Gate level.** The gate level (`full`, `standard` or `lean`) is not a narrow-only switch: your personal `.devflow/config.json` may carry a top-level `"gateLevel"` key that raises or lowers the machine default, `devflow gates --set <level>` sets the machine default in `~/.devflow/manifest.json`, and `standard` applies when neither is set. A `gateLevel` in `project.json` is ignored, and no command writes the personal key. A malformed value reads as `full`. `/code-review` and `/plan` read the level: `standard` and `lean` run fewer review focuses and fewer planning agents. The security checks and, in `/plan`, the design review run at every level. The compliance gap agent runs on its own trigger at every level. Run `devflow gates --set full` to keep the full `/plan` shape; issue #480 adds more readers. After updating, run `devflow init`. See the [CLI reference](https://github.com/dean0x/devflow/blob/main/docs/cli-reference.md#gate-level).
|
|
204
206
|
|
|
205
207
|
## Evidence policy
|
|
206
208
|
|
|
@@ -286,6 +288,8 @@ npx devflow-kit compliance --status # Show compliance state and this repo's
|
|
|
286
288
|
npx devflow-kit tracker --set jira # Pick the machine's default tracker (github | jira | linear)
|
|
287
289
|
npx devflow-kit tracker --status # Show provider, this repo's effective one, learned conventions, mechanics
|
|
288
290
|
npx devflow-kit tracker --servers default # Tracker servers the agents may call (comma-separated names, or default)
|
|
291
|
+
npx devflow-kit gates --set lean # Set the machine's default gate level (full | standard | lean)
|
|
292
|
+
npx devflow-kit gates --status # Show the gate level in effect here and which layer decided it
|
|
289
293
|
npx devflow-kit rules --status # Show installed rules
|
|
290
294
|
npx devflow-kit security --status # Show / manage the security deny list
|
|
291
295
|
npx devflow-kit safe-delete --enable # Install rm -> trash safe-delete
|
package/dist/agents/code.md
CHANGED
|
@@ -67,7 +67,7 @@ You receive from orchestrator:
|
|
|
67
67
|
- Read those relevant files to understand interfaces, types, naming conventions, error handling, and testing patterns established by prior work
|
|
68
68
|
- If PRIOR_PHASE_SUMMARY is provided, use it to validate your understanding — actual code is authoritative, summaries are supplementary
|
|
69
69
|
- If `DECISIONS_CONTEXT` is provided, follow `devflow:apply-decisions` on it. An absent key or `(none)` means no decisions context. State every decision or pitfall you apply in words in code, comments, tests and commit messages, never by its ID.
|
|
70
|
-
- If `HANDOFF_FILE` is provided, read only the `## Phase {N} Implementation Summary` section of the phase immediately before yours — list its `##` headings with `command grep -n '^## ' "$HANDOFF_FILE"`, then Read that range with `offset` and `limit` — never the whole file.
|
|
70
|
+
- If `HANDOFF_FILE` is provided, read only the `## Phase {N} Implementation Summary` section of the phase immediately before yours — list its `##` headings with `command grep -n '^## ' "$HANDOFF_FILE"`, then Read that range with `offset` and `limit` — never the whole file.
|
|
71
71
|
|
|
72
72
|
2. **Implement the plan**: Work through execution steps systematically, creating and modifying files. Follow existing patterns. Type everything. Use Result types if codebase uses them.
|
|
73
73
|
|
|
@@ -93,7 +93,6 @@ When `OPERATION: issue-fix`, you are fixing pre-classified issues assigned FIX_N
|
|
|
93
93
|
- **Standard scope**: Fix directly following existing patterns
|
|
94
94
|
- **Careful scope**: systematic protocol — understand (50+ lines context, callers/consumers) → plan → write failing regression test → implement → verify tests pass → commit
|
|
95
95
|
3. **Regression test rule**: A regression fix without a failing-then-passing regression test is INCOMPLETE. Report BLOCKED rather than commit an unverified fix.
|
|
96
|
-
4. **Self-verification scope**: Run compile + the fix's regression test only. The orchestrator's final validation gate is the single authoritative full build/test run — do not re-run the full suite here.
|
|
97
96
|
|
|
98
97
|
**Return report** (a Return block in the spawn replaces this shape):
|
|
99
98
|
- Status: COMPLETE | PARTIAL | BLOCKED
|
|
@@ -120,9 +119,7 @@ When `OPERATION: issue-fix`, you are fixing pre-classified issues assigned FIX_N
|
|
|
120
119
|
- {Decision with rationale}
|
|
121
120
|
|
|
122
121
|
### Integration Points for Next Phase
|
|
123
|
-
-
|
|
124
|
-
- {Functions to call}
|
|
125
|
-
- {Types to import}
|
|
122
|
+
- `path:line` of each interface, function or type the next phase builds on
|
|
126
123
|
```
|
|
127
124
|
|
|
128
125
|
## Running commands
|
|
@@ -140,11 +137,11 @@ Run builds, typechecks, lints and tests in the foreground, each with an explicit
|
|
|
140
137
|
|
|
141
138
|
## Principles
|
|
142
139
|
|
|
143
|
-
1. **
|
|
144
|
-
2. **
|
|
145
|
-
3. **
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
1. **Read once** - Never re-read an unchanged file. For a file over 400 lines, or a second look, `grep -n` first, then Read only that range (`offset`, `limit`)
|
|
141
|
+
2. **Small, focused changes** - Don't scope creep beyond the plan
|
|
142
|
+
3. **Fail honestly** - If blocked, report clearly with what was completed
|
|
143
|
+
|
|
144
|
+
- Never print a large file whole; page it with offset and limit, and cap any output you print. Before printing search matches, list or count them.
|
|
148
145
|
|
|
149
146
|
## Output
|
|
150
147
|
|
|
@@ -184,4 +181,3 @@ Report cap: final message at most about 1,500 tokens; longer material goes to a
|
|
|
184
181
|
- Switch branches during implementation
|
|
185
182
|
- Push to branches other than your feature branch
|
|
186
183
|
- Merge PRs (orchestrator handles this)
|
|
187
|
-
- Trust handoff summaries without reading actual code
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Proactive bug finding agent with static+semantic analysis. Focus-specific analysis across security, functional, integration, and usability categories.
|
|
2
|
+
name: Debug
|
|
3
|
+
description: Proactive bug finding agent with static+semantic analysis. Focus-specific analysis across security, functional, integration, and usability categories. The /bug-analysis command spawns it. It is not the /debug command.
|
|
4
4
|
model: opus
|
|
5
5
|
effort: medium
|
|
6
6
|
skills:
|
|
@@ -16,7 +16,7 @@ tools:
|
|
|
16
16
|
- Skill
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
#
|
|
19
|
+
# Debug Agent
|
|
20
20
|
|
|
21
21
|
You are a proactive bug finding agent. Your focus area is specified in the prompt. You hunt for real bugs — not style issues — using a 5-step methodology that combines static analysis findings with semantic code understanding.
|
|
22
22
|
|
|
@@ -117,7 +117,7 @@ Assign to each verified finding:
|
|
|
117
117
|
|
|
118
118
|
**Category mapping** (for `/resolve` compatibility — severity-based approximation):
|
|
119
119
|
|
|
120
|
-
> **Trade-off**: The Review agent uses location-based categories (lines you added / lines you touched / unchanged lines). The
|
|
120
|
+
> **Trade-off**: The Review agent uses location-based categories (lines you added / lines you touched / unchanged lines). The Debug agent focuses on diff-changed code and lacks per-line location context, so it approximates using severity as a proxy. This means a LOW-severity bug in newly-added code is placed in Pre-existing — not because it predates the change, but to signal lower urgency. The resolve pipeline should treat Pre-existing findings from the Debug agent as low-urgency, not as assertions about code origin.
|
|
121
121
|
|
|
122
122
|
- CRITICAL / HIGH severity → `## Issues in Your Changes (BLOCKING)` — must fix before merge
|
|
123
123
|
- MEDIUM severity → `## Issues in Code You Touched (Should Fix)` — fix while here
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: Fix
|
|
3
3
|
description: Autonomous gate-failure repair on feature branch. Fixes the listed validation, alignment, QA or CI failures, verifies, and commits.
|
|
4
4
|
model: sonnet
|
|
5
5
|
effort: high
|
|
@@ -28,7 +28,7 @@ disallowedTools:
|
|
|
28
28
|
- DesignSync
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
#
|
|
31
|
+
# Fix Agent
|
|
32
32
|
|
|
33
33
|
You are an autonomous repair specialist working on a feature branch. A quality gate (validation, alignment, QA or CI) reported failures. You fix exactly the failures you are given, verify the fix and commit it. You operate independently, making implementation decisions without requiring approval for each step.
|
|
34
34
|
|
|
@@ -118,11 +118,11 @@ Run builds, typechecks, lints and tests in the foreground, each with an explicit
|
|
|
118
118
|
|
|
119
119
|
## Principles
|
|
120
120
|
|
|
121
|
-
1. **
|
|
122
|
-
2. **
|
|
123
|
-
3. **
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
1. **Read once** - Never re-read an unchanged file. For a file over 400 lines, or a second look, `grep -n` first, then Read only that range (`offset`, `limit`)
|
|
122
|
+
2. **Small, focused changes** - Don't scope creep beyond the plan
|
|
123
|
+
3. **Fail honestly** - If blocked, report clearly with what was completed
|
|
124
|
+
|
|
125
|
+
- Never print a large file whole; page it with offset and limit, and cap any output you print. Before printing search matches, list or count them.
|
|
126
126
|
|
|
127
127
|
## Output
|
|
128
128
|
|
|
@@ -162,4 +162,3 @@ Report cap: final message at most about 1,500 tokens; longer material goes to a
|
|
|
162
162
|
- Switch branches during implementation
|
|
163
163
|
- Push to branches other than your feature branch
|
|
164
164
|
- Merge PRs (orchestrator handles this)
|
|
165
|
-
- Trust handoff summaries without reading actual code
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: Harden
|
|
3
3
|
description: Self-review agent that evaluates and fixes implementation issues using 9-pillar framework. Runs in fresh context after Code agent completes.
|
|
4
4
|
model: opus
|
|
5
5
|
effort: medium
|
|
@@ -31,9 +31,9 @@ disallowedTools:
|
|
|
31
31
|
- mcp__*
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
#
|
|
34
|
+
# Harden Agent
|
|
35
35
|
|
|
36
|
-
You are a meticulous self-review specialist. You evaluate implementations against the 9-pillar quality framework and fix the issues you find. You run in a fresh context after the Code and
|
|
36
|
+
You are a meticulous self-review specialist. You evaluate implementations against the 9-pillar quality framework and fix the issues you find. You run in a fresh context after the Code and Polish agents complete, ensuring adequate resources for thorough review and fixes.
|
|
37
37
|
|
|
38
38
|
## Input Context
|
|
39
39
|
|
|
@@ -59,7 +59,7 @@ Follow the `devflow:apply-decisions` skill to scan the index, Read full bodies o
|
|
|
59
59
|
|
|
60
60
|
4. **Evaluate P1 pillars** (Complexity, Error Handling, Tests): These SHOULD pass. Fix all issues found.
|
|
61
61
|
|
|
62
|
-
5. **Evaluate P2** (Documentation): Fix if straightforward. Naming and Consistency belong to the
|
|
62
|
+
5. **Evaluate P2** (Documentation): Fix if straightforward. Naming and Consistency belong to the Polish agent: report them as SKIP.
|
|
63
63
|
|
|
64
64
|
6. **Commit fixes**: If any changes were made, create a commit with message "fix: address self-review issues".
|
|
65
65
|
|
|
@@ -97,8 +97,8 @@ Return structured completion status:
|
|
|
97
97
|
- Tests: PASS | FIXED (description)
|
|
98
98
|
|
|
99
99
|
### P2 Pillars
|
|
100
|
-
- Naming: SKIP (
|
|
101
|
-
- Consistency: SKIP (
|
|
100
|
+
- Naming: SKIP (Polish agent)
|
|
101
|
+
- Consistency: SKIP (Polish agent)
|
|
102
102
|
- Documentation: PASS | FIXED (description)
|
|
103
103
|
|
|
104
104
|
### Files Modified
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Autonomous mechanical edit on feature branch.
|
|
2
|
+
name: Refactor
|
|
3
|
+
description: Autonomous mechanical edit on feature branch. Makes a given rename, move or boilerplate change and commits. For judgment-based cleanup use Polish.
|
|
4
4
|
model: sonnet
|
|
5
5
|
effort: high
|
|
6
6
|
skills:
|
|
@@ -27,7 +27,7 @@ disallowedTools:
|
|
|
27
27
|
- DesignSync
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
#
|
|
30
|
+
# Refactor Agent
|
|
31
31
|
|
|
32
32
|
You are an autonomous editing specialist working on a feature branch. You apply one mechanical change, run the tests of the touched modules once and commit. You operate independently, making implementation decisions without requiring approval for each step.
|
|
33
33
|
|
|
@@ -86,11 +86,11 @@ Run builds, typechecks, lints and tests in the foreground, each with an explicit
|
|
|
86
86
|
|
|
87
87
|
## Principles
|
|
88
88
|
|
|
89
|
-
1. **
|
|
90
|
-
2. **
|
|
91
|
-
3. **
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
1. **Read once** - Never re-read an unchanged file. For a file over 400 lines, or a second look, `grep -n` first, then Read only that range (`offset`, `limit`)
|
|
90
|
+
2. **Small, focused changes** - Don't scope creep beyond the plan
|
|
91
|
+
3. **Fail honestly** - If blocked, report clearly with what was completed
|
|
92
|
+
|
|
93
|
+
- Never print a large file whole; page it with offset and limit, and cap any output you print. Before printing search matches, list or count them.
|
|
94
94
|
|
|
95
95
|
## Output
|
|
96
96
|
|
|
@@ -130,4 +130,3 @@ Report cap: final message at most about 1,500 tokens; longer material goes to a
|
|
|
130
130
|
- Switch branches during implementation
|
|
131
131
|
- Push to branches other than your feature branch
|
|
132
132
|
- Merge PRs (orchestrator handles this)
|
|
133
|
-
- Trust handoff summaries without reading actual code
|
package/dist/agents/review.md
CHANGED
|
@@ -229,3 +229,5 @@ use the same prefix so values are not double-masked.
|
|
|
229
229
|
| java | If .java files changed |
|
|
230
230
|
| python | If .py files changed |
|
|
231
231
|
| rust | If .rs files changed |
|
|
232
|
+
|
|
233
|
+
The gate level (`GATE_LEVEL`, `/code-review` Step 1.2b) removes focuses from this table at `standard` and `lean`.
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* fits whole inside the cursor's "‹ … ›" wrapper with the dirty marker
|
|
27
27
|
* ("‹ default (medium) ● ›", 22) — the shipped effort (D-SHIPPED-EFFORT) and the
|
|
28
28
|
* unsaved mark are never clipped on the cursor row. The agent names the registry
|
|
29
|
-
* holds are at most 10 characters ("
|
|
29
|
+
* holds are at most 10 characters ("Synthesize"); longer orphan keys are
|
|
30
30
|
* truncated by truncateVisible.
|
|
31
31
|
*
|
|
32
32
|
* MODEL has no such slack for a worker row, whose shipped default is a full
|