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.
Files changed (146) hide show
  1. package/CHANGELOG.md +178 -1
  2. package/README.md +10 -6
  3. package/dist/agents/code.md +7 -11
  4. package/dist/agents/{diagnose.md → debug.md} +4 -4
  5. package/dist/agents/{code-fix.md → fix.md} +7 -8
  6. package/dist/agents/{scrutinize.md → harden.md} +6 -6
  7. package/dist/agents/{code-edit.md → refactor.md} +8 -9
  8. package/dist/agents/review.md +2 -0
  9. package/dist/cli/agents-view/render.js +1 -1
  10. package/dist/cli/commands/gates.js +276 -0
  11. package/dist/cli/commands/init-seed.js +9 -1
  12. package/dist/cli/commands/init.js +34 -11
  13. package/dist/cli/commands/learning.js +12 -12
  14. package/dist/cli/commands/legacy-hooks.js +1 -1
  15. package/dist/cli/commands/memory.js +18 -0
  16. package/dist/cli/commands/uninstall.js +111 -5
  17. package/dist/cli.js +2 -0
  18. package/dist/commands/bug-analysis.md +21 -17
  19. package/dist/commands/code-review.md +65 -66
  20. package/dist/commands/debug.md +17 -17
  21. package/dist/commands/dynamic-build.md +104 -116
  22. package/dist/commands/dynamic-plan.md +13 -11
  23. package/dist/commands/dynamic-profile.md +9 -7
  24. package/dist/commands/dynamic-tickets.md +13 -11
  25. package/dist/commands/explore.md +15 -15
  26. package/dist/commands/implement.md +80 -154
  27. package/dist/commands/plan.md +34 -66
  28. package/dist/commands/release.md +11 -7
  29. package/dist/commands/research.md +14 -10
  30. package/dist/commands/resolve.md +44 -88
  31. package/dist/commands/self-review.md +44 -44
  32. package/dist/core/agent-models.js +47 -11
  33. package/dist/core/{learning-tuning-config.js → curate-tuning-config.js} +14 -14
  34. package/dist/core/echo-value.js +42 -0
  35. package/dist/core/evidence-policy.js +17 -5
  36. package/dist/core/gate-level.js +213 -0
  37. package/dist/core/learning-queue-cleanup.js +1 -1
  38. package/dist/core/manifest.js +26 -10
  39. package/dist/core/migrations.js +63 -44
  40. package/dist/core/model-discovery.js +7 -1
  41. package/dist/core/plugins.js +14 -12
  42. package/dist/core/project-paths.js +3 -3
  43. package/dist/core/tracker.js +5 -33
  44. package/dist/hud/codex-usage.js +247 -0
  45. package/dist/hud/components/codex-quota.js +37 -0
  46. package/dist/hud/components/usage-quota.js +1 -1
  47. package/dist/hud/config.js +1 -0
  48. package/dist/hud/index.js +16 -3
  49. package/dist/hud/render.js +3 -1
  50. package/dist/learning-off/agents/code.md +7 -11
  51. package/dist/learning-off/agents/{diagnose.md → debug.md} +4 -4
  52. package/dist/learning-off/agents/{code-fix.md → fix.md} +7 -8
  53. package/dist/learning-off/agents/{scrutinize.md → harden.md} +6 -6
  54. package/dist/learning-off/agents/{code-edit.md → refactor.md} +8 -9
  55. package/dist/learning-off/agents/review.md +2 -0
  56. package/dist/learning-off/commands/bug-analysis.md +9 -9
  57. package/dist/learning-off/commands/code-review.md +54 -59
  58. package/dist/learning-off/commands/debug.md +6 -10
  59. package/dist/learning-off/commands/dynamic-build.md +98 -112
  60. package/dist/learning-off/commands/dynamic-plan.md +5 -5
  61. package/dist/learning-off/commands/dynamic-profile.md +1 -1
  62. package/dist/learning-off/commands/dynamic-tickets.md +5 -5
  63. package/dist/learning-off/commands/explore.md +4 -8
  64. package/dist/learning-off/commands/implement.md +68 -146
  65. package/dist/learning-off/commands/plan.md +23 -58
  66. package/dist/learning-off/commands/release.md +4 -2
  67. package/dist/learning-off/commands/research.md +2 -2
  68. package/dist/learning-off/commands/resolve.md +33 -81
  69. package/dist/learning-off/commands/self-review.md +32 -36
  70. package/dist/skills/git/references/pr/check-merge-readiness.md +2 -0
  71. package/dist/skills/git/references/pr/update-pr-evidence.md +4 -6
  72. package/dist/skills/git/references/tracker/github/ensure-pr-ready.md +7 -9
  73. package/dist/skills/git/references/tracker/jira/ensure-pr-ready.md +7 -15
  74. package/dist/skills/git/references/tracker/linear/ensure-pr-ready.md +7 -15
  75. package/dist/targets/claude-code/installer.js +117 -84
  76. package/dist/targets/claude-code/learning-install.js +15 -3
  77. package/dist/targets/claude-code/tracker-servers.js +1 -1
  78. package/package.json +1 -1
  79. package/src/assets/agents/_partials/_code.mds +7 -8
  80. package/src/assets/agents/code.mds +4 -7
  81. package/src/assets/agents/{learning.md → curate.md} +8 -10
  82. package/src/assets/agents/{diagnose.mds → debug.mds} +4 -4
  83. package/src/assets/agents/evaluate.md +4 -4
  84. package/src/assets/agents/{code-fix.mds → fix.mds} +5 -5
  85. package/src/assets/agents/{scrutinize.mds → harden.mds} +6 -6
  86. package/src/assets/agents/{simplify.md → polish.md} +4 -4
  87. package/src/assets/agents/{code-edit.mds → refactor.mds} +6 -6
  88. package/src/assets/agents/review.mds +2 -0
  89. package/src/assets/agents/synthesize.md +2 -2
  90. package/src/assets/agents/test.md +2 -2
  91. package/src/assets/commands/_partials/_compliance.mds +1 -1
  92. package/src/assets/commands/_partials/_decisions.mds +26 -6
  93. package/src/assets/commands/_partials/_engine.mds +15 -15
  94. package/src/assets/commands/_partials/_evidence_policy.mds +0 -17
  95. package/src/assets/commands/_partials/_knowledge.mds +14 -9
  96. package/src/assets/commands/_partials/_preamble.mds +4 -2
  97. package/src/assets/commands/_partials/_roster.mds +4 -4
  98. package/src/assets/commands/_partials/_settings.mds +2 -2
  99. package/src/assets/commands/_partials/_wave.mds +10 -17
  100. package/src/assets/commands/bug-analysis.mds +7 -7
  101. package/src/assets/commands/code-review.mds +51 -56
  102. package/src/assets/commands/debug.mds +2 -2
  103. package/src/assets/commands/dynamic-build.mds +67 -74
  104. package/src/assets/commands/implement.mds +65 -127
  105. package/src/assets/commands/plan.mds +21 -61
  106. package/src/assets/commands/release.mds +5 -1
  107. package/src/assets/commands/resolve.mds +28 -76
  108. package/src/assets/commands/self-review.mds +27 -27
  109. package/src/assets/mds/git/_ops_steps.mds +3 -3
  110. package/src/assets/mds/git/_pr.mds +6 -6
  111. package/src/assets/mds/tracker/_common.mds +23 -12
  112. package/src/assets/mds/tracker/_github.mds +2 -9
  113. package/src/assets/mds/tracker/_jira.mds +2 -15
  114. package/src/assets/mds/tracker/_linear.mds +2 -15
  115. package/src/assets/scripts/ci-wait.cjs +22 -4
  116. package/src/assets/scripts/claude-md-audit.cjs +66 -51
  117. package/src/assets/scripts/hooks/assets/orchestrator-charter.md +4 -3
  118. package/src/assets/scripts/hooks/background-memory-update +404 -95
  119. package/src/assets/scripts/hooks/capture-prompt +1 -1
  120. package/src/assets/scripts/hooks/capture-question +1 -1
  121. package/src/assets/scripts/hooks/capture-turn +1 -1
  122. package/src/assets/scripts/hooks/json-helper.cjs +13 -2
  123. package/src/assets/scripts/hooks/json-parse +18 -3
  124. package/src/assets/scripts/hooks/lib/learning-store.cjs +1 -1
  125. package/src/assets/scripts/hooks/lib/project-paths.cjs +4 -4
  126. package/src/assets/scripts/hooks/memory-permission +358 -0
  127. package/src/assets/scripts/hooks/preamble +1 -1
  128. package/src/assets/scripts/hooks/session-start-context +60 -47
  129. package/src/assets/scripts/hooks/session-start-memory +26 -5
  130. package/src/assets/scripts/lib/project-config.cjs +19 -4
  131. package/src/assets/scripts/resolve-settings.cjs +200 -32
  132. package/src/assets/scripts/verify-evidence.cjs +726 -9
  133. package/src/assets/skills/agent-references/SKILL.md +14 -6
  134. package/src/assets/skills/agent-references/references/commands/code-review-levels.md +19 -0
  135. package/src/assets/skills/agent-references/references/commands/implement-evidence-asks.md +35 -0
  136. package/src/assets/skills/agent-references/references/commands/implement-revalidate.md +15 -0
  137. package/src/assets/skills/agent-references/references/commands/plan-levels.md +40 -0
  138. package/src/assets/skills/agent-references/references/synthesize/bug-analysis.md +1 -1
  139. package/src/assets/skills/agent-references/references/synthesize/planning.md +9 -22
  140. package/src/assets/skills/agent-references/references/synthesize/review.md +11 -11
  141. package/src/assets/skills/apply-decisions/SKILL.md +6 -4
  142. package/src/assets/skills/docs-framework/SKILL.md +3 -3
  143. package/src/assets/skills/qa/SKILL.md +1 -1
  144. package/src/assets/skills/quality-gates/SKILL.md +7 -7
  145. package/src/assets/skills/quality-gates/references/report-template.md +7 -7
  146. /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/v2.0.0...HEAD
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
- Simplify · Scrutinize cleanup pass, then 9-pillar quality gate
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 Simplify + Scrutinize quality passes, and `/release` ships with learned configuration.
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` | Simplify + Scrutinize quality pass |
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 .devflow/config.json`. Commands never read the file themselves — one local resolver folds it with your `config.json` and the machine settings, without touching the network.
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
@@ -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. Cross-reference against actual code — code is authoritative, handoff is supplementary.
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
- - {Interfaces to implement against}
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. **Work on feature branch** - All operations happen on the current feature branch
144
- 2. **Orient, then match patterns** - Before writing code, orient on branch state and find similar implementations; match their conventions, don't invent new ones
145
- 3. **Be decisive** - Make confident implementation choices. Don't present alternatives or ask permission for tactical decisions
146
- 4. **Small, focused changes** - Don't scope creep beyond the plan
147
- 5. **Fail honestly** - If blocked, report clearly with what was completed
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: Diagnose
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
- # Diagnose Agent
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 Diagnose 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 Diagnose agent as low-urgency, not as assertions about code origin.
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: Code-fix
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
- # Code-fix Agent
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. **Work on feature branch** - All operations happen on the current feature branch
122
- 2. **Orient, then match patterns** - Before writing code, orient on branch state and find similar implementations; match their conventions, don't invent new ones
123
- 3. **Be decisive** - Make confident implementation choices. Don't present alternatives or ask permission for tactical decisions
124
- 4. **Small, focused changes** - Don't scope creep beyond the plan
125
- 5. **Fail honestly** - If blocked, report clearly with what was completed
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: Scrutinize
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
- # Scrutinize Agent
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 Simplify agents complete, ensuring adequate resources for thorough review and fixes.
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 Simplify agent: report them as SKIP.
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 (Simplify agent)
101
- - Consistency: SKIP (Simplify agent)
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: Code-edit
3
- description: Autonomous mechanical edit on feature branch. Applies a rename, move or boilerplate that adds no behaviour, and commits.
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
- # Code-edit Agent
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. **Work on feature branch** - All operations happen on the current feature branch
90
- 2. **Orient, then match patterns** - Before writing code, orient on branch state and find similar implementations; match their conventions, don't invent new ones
91
- 3. **Be decisive** - Make confident implementation choices. Don't present alternatives or ask permission for tactical decisions
92
- 4. **Small, focused changes** - Don't scope creep beyond the plan
93
- 5. **Fail honestly** - If blocked, report clearly with what was completed
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
@@ -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 ("Scrutinize"); longer orphan keys are
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