peaks-loop 3.0.0 → 3.0.1

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 (239) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +57 -57
  3. package/README-en.md +2 -2
  4. package/README.md +2 -2
  5. package/agents/karpathy-reviewer.md +2 -2
  6. package/dist/src/cli/commands/agent-commands.js +3 -3
  7. package/dist/src/cli/commands/audit-commands.d.ts +1 -1
  8. package/dist/src/cli/commands/audit-commands.js +6 -6
  9. package/dist/src/cli/commands/classify-classify-commands.js +1 -1
  10. package/dist/src/cli/commands/code-review-commands.d.ts +3 -3
  11. package/dist/src/cli/commands/code-review-commands.js +5 -5
  12. package/dist/src/cli/commands/compact-command.d.ts +21 -0
  13. package/dist/src/cli/commands/compact-command.js +252 -0
  14. package/dist/src/cli/commands/context-commands.d.ts +1 -1
  15. package/dist/src/cli/commands/context-commands.js +1 -1
  16. package/dist/src/cli/commands/contract-commands.d.ts +1 -1
  17. package/dist/src/cli/commands/core/session-command.js +17 -7
  18. package/dist/src/cli/commands/core/skill-command.js +1 -1
  19. package/dist/src/cli/commands/feedback-commands.js +1 -1
  20. package/dist/src/cli/commands/hook-handle.d.ts +1 -1
  21. package/dist/src/cli/commands/hook-handle.js +1 -1
  22. package/dist/src/cli/commands/legacy-commands.d.ts +1 -1
  23. package/dist/src/cli/commands/legacy-commands.js +2 -2
  24. package/dist/src/cli/commands/log-commands.js +2 -2
  25. package/dist/src/cli/commands/loop-commands.d.ts +1 -1
  26. package/dist/src/cli/commands/loop-commands.js +1 -1
  27. package/dist/src/cli/commands/loop-eval-commands.d.ts +1 -1
  28. package/dist/src/cli/commands/loop-eval-commands.js +1 -1
  29. package/dist/src/cli/commands/playwright-commands.d.ts +1 -1
  30. package/dist/src/cli/commands/playwright-commands.js +2 -2
  31. package/dist/src/cli/commands/request-commands.js +40 -1
  32. package/dist/src/cli/commands/role-commands.js +1 -1
  33. package/dist/src/cli/commands/slice-commands.js +5 -5
  34. package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
  35. package/dist/src/cli/commands/upgrade-commands.js +6 -6
  36. package/dist/src/cli/commands/workspace/init-command.js +2 -2
  37. package/dist/src/cli/program.js +10 -1
  38. package/dist/src/services/agent/ecc-agent-service.js +5 -5
  39. package/dist/src/services/audit/artifact-writer.d.ts +1 -1
  40. package/dist/src/services/audit/artifact-writer.js +1 -1
  41. package/dist/src/services/audit/decision-writer.d.ts +1 -1
  42. package/dist/src/services/audit/decision-writer.js +1 -1
  43. package/dist/src/services/audit/enforcers/lint-output-style.js +5 -5
  44. package/dist/src/services/audit/enforcers/mock-placement.d.ts +1 -1
  45. package/dist/src/services/audit/enforcers/mock-placement.js +1 -1
  46. package/dist/src/services/audit/enforcers/no-root-pollution.js +1 -1
  47. package/dist/src/services/audit/red-line-catalog-p2-a.js +2 -2
  48. package/dist/src/services/audit/red-line-catalog-p2-b.js +2 -2
  49. package/dist/src/services/audit/static-service.d.ts +1 -1
  50. package/dist/src/services/audit/static-service.js +5 -5
  51. package/dist/src/services/audit/types.d.ts +1 -1
  52. package/dist/src/services/audit/types.js +1 -1
  53. package/dist/src/services/audit-independent/perf-audit-service.js +1 -1
  54. package/dist/src/services/audit-independent/security-audit-service.js +1 -1
  55. package/dist/src/services/classify/classify-service.d.ts +1 -1
  56. package/dist/src/services/classify/classify-service.js +1 -1
  57. package/dist/src/services/classify/classify-types.d.ts +1 -1
  58. package/dist/src/services/classify/classify-types.js +1 -1
  59. package/dist/src/services/code-review/ecc-bridge.d.ts +2 -2
  60. package/dist/src/services/code-review/ecc-bridge.js +2 -2
  61. package/dist/src/services/code-review/ocr-service.d.ts +9 -9
  62. package/dist/src/services/code-review/ocr-service.js +16 -16
  63. package/dist/src/services/compact/decision-tables.d.ts +66 -0
  64. package/dist/src/services/compact/decision-tables.js +127 -0
  65. package/dist/src/services/compact/request-transition-hook.d.ts +20 -0
  66. package/dist/src/services/compact/request-transition-hook.js +110 -0
  67. package/dist/src/services/compact/suggest-service.d.ts +74 -0
  68. package/dist/src/services/compact/suggest-service.js +203 -0
  69. package/dist/src/services/config/config-migration.js +1 -1
  70. package/dist/src/services/config/config-safety.d.ts +1 -1
  71. package/dist/src/services/config/config-safety.js +1 -1
  72. package/dist/src/services/config/config-service.d.ts +1 -1
  73. package/dist/src/services/config/config-service.js +1 -1
  74. package/dist/src/services/context/auto-compact-dispatcher.js +4 -4
  75. package/dist/src/services/context/auto-compact-types.d.ts +6 -6
  76. package/dist/src/services/context/auto-compact-types.js +5 -5
  77. package/dist/src/services/dispatch/sub-agent-dispatcher.js +1 -1
  78. package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
  79. package/dist/src/services/dispatch/test-tool-detection.js +1 -1
  80. package/dist/src/services/doctor/doctor-service.d.ts +1 -1
  81. package/dist/src/services/doctor/doctor-service.js +5 -5
  82. package/dist/src/services/hooks/presence-marker-detector.js +5 -5
  83. package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +1 -1
  84. package/dist/src/services/ide/adapters/claude-code-adapter.js +2 -2
  85. package/dist/src/services/ide/adapters/codex-adapter.d.ts +2 -2
  86. package/dist/src/services/ide/adapters/codex-adapter.js +2 -2
  87. package/dist/src/services/ide/adapters/cursor-adapter.d.ts +2 -2
  88. package/dist/src/services/ide/adapters/cursor-adapter.js +2 -2
  89. package/dist/src/services/ide/adapters/hermes-adapter.d.ts +1 -1
  90. package/dist/src/services/ide/adapters/hermes-adapter.js +1 -1
  91. package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +1 -1
  92. package/dist/src/services/ide/adapters/openclaw-adapter.js +1 -1
  93. package/dist/src/services/ide/adapters/trae-adapter.d.ts +1 -1
  94. package/dist/src/services/ide/adapters/trae-adapter.js +1 -1
  95. package/dist/src/services/ide/ide-types.d.ts +9 -9
  96. package/dist/src/services/legacy/legacy-detector.d.ts +1 -1
  97. package/dist/src/services/legacy/legacy-detector.js +1 -1
  98. package/dist/src/services/log/log-commands-service.d.ts +1 -1
  99. package/dist/src/services/log/log-commands-service.js +1 -1
  100. package/dist/src/services/log/logger.d.ts +3 -3
  101. package/dist/src/services/log/logger.js +3 -3
  102. package/dist/src/services/log/redact.d.ts +1 -1
  103. package/dist/src/services/log/redact.js +1 -1
  104. package/dist/src/services/loop/evaluator-dispatcher.d.ts +1 -1
  105. package/dist/src/services/loop/evaluator-dispatcher.js +16 -15
  106. package/dist/src/services/loop/monotonic-guard.js +35 -18
  107. package/dist/src/services/loop/monotonic-runner.d.ts +3 -0
  108. package/dist/src/services/loop/monotonic-runner.js +62 -28
  109. package/dist/src/services/loop/run-driver.js +45 -24
  110. package/dist/src/services/memory/llm-reranker.d.ts +1 -1
  111. package/dist/src/services/memory/llm-reranker.js +1 -1
  112. package/dist/src/services/mut/production-stryker.d.ts +0 -5
  113. package/dist/src/services/mut/production-stryker.js +19 -10
  114. package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +1 -1
  115. package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  116. package/dist/src/services/perf/perf-baseline-service.d.ts +2 -2
  117. package/dist/src/services/perf/perf-baseline-service.js +2 -2
  118. package/dist/src/services/prd/handoff-auto-regen.js +1 -1
  119. package/dist/src/services/prd/project-scan-sediment.js +3 -3
  120. package/dist/src/services/prd/project-scan-types.d.ts +1 -1
  121. package/dist/src/services/preferences/preferences-types.d.ts +3 -3
  122. package/dist/src/services/preferences/preferences-types.js +2 -2
  123. package/dist/src/services/role/role-registry.d.ts +1 -1
  124. package/dist/src/services/role/role-registry.js +1 -1
  125. package/dist/src/services/sc/sc-service.js +3 -3
  126. package/dist/src/services/skill/resume-detector.js +2 -2
  127. package/dist/src/services/skills/sync-service.d.ts +3 -3
  128. package/dist/src/services/skills/sync-service.js +9 -9
  129. package/dist/src/services/slice/calibration-store.d.ts +1 -1
  130. package/dist/src/services/slice/calibration-store.js +1 -1
  131. package/dist/src/services/solo/auto-compact-orchestrator.d.ts +1 -1
  132. package/dist/src/services/solo/auto-compact-orchestrator.js +7 -7
  133. package/dist/src/services/solo/dag-orchestrator.js +1 -1
  134. package/dist/src/services/solo/mode-gate.d.ts +1 -1
  135. package/dist/src/services/solo/mode-gate.js +4 -4
  136. package/dist/src/services/solo/user-touchpoint-classifier.js +1 -1
  137. package/dist/src/services/standards/migrate-claude-rules-service.js +5 -5
  138. package/dist/src/services/standards/migrate-service.d.ts +3 -3
  139. package/dist/src/services/standards/migrate-service.js +5 -5
  140. package/dist/src/services/standards/project-standards-service.js +1 -1
  141. package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +3 -3
  142. package/dist/src/services/upgrade/gitignore-migrate-service.js +4 -4
  143. package/dist/src/services/upgrade/upgrade-service.d.ts +1 -1
  144. package/dist/src/services/upgrade/upgrade-service.js +5 -5
  145. package/dist/src/services/verdict/envelopes.d.ts +1 -1
  146. package/dist/src/services/verdict/envelopes.js +1 -1
  147. package/dist/src/services/workflow/workflow-loader.js +1 -1
  148. package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +1 -1
  149. package/dist/src/services/workspace/migrate-1-4-1-service.js +1 -1
  150. package/dist/src/services/workspace/migrate-types.d.ts +1 -1
  151. package/dist/src/services/workspace/migrate-types.js +1 -1
  152. package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +2 -2
  153. package/dist/src/services/workspace/workspace-claude-settings-materializer.js +9 -9
  154. package/dist/src/services/workspace/workspace-service.d.ts +1 -1
  155. package/dist/src/services/workspace/workspace-service.js +1 -1
  156. package/dist/src/shared/path-safety.d.ts +1 -1
  157. package/dist/src/shared/path-safety.js +1 -1
  158. package/dist/src/shared/version.d.ts +1 -1
  159. package/dist/src/shared/version.js +1 -1
  160. package/output-styles/peaks-skill-swarm.md +33 -33
  161. package/package.json +5 -4
  162. package/schemas/decomposition-v1.json +1 -1
  163. package/schemas/decomposition-v2.json +1 -1
  164. package/schemas/replay-fixture.schema.json +1 -1
  165. package/schemas/reviewer-envelope.schema.json +1 -1
  166. package/scripts/install-skills.mjs +11 -11
  167. package/skills/peaks-audit/SKILL.md +2 -2
  168. package/skills/peaks-doctor/SKILL.md +4 -4
  169. package/skills/peaks-final-review/SKILL.md +2 -2
  170. package/skills/peaks-ide/SKILL.md +3 -3
  171. package/skills/peaks-perf-audit/SKILL.md +1 -1
  172. package/skills/peaks-prd/SKILL.md +14 -14
  173. package/skills/peaks-prd/references/workflow.md +1 -1
  174. package/skills/peaks-qa/SKILL.md +17 -17
  175. package/skills/peaks-qa/references/artifact-per-request.md +1 -1
  176. package/skills/peaks-qa/references/browser-validation-contracts.md +2 -2
  177. package/skills/peaks-qa/references/codegraph-regression-focus.md +1 -1
  178. package/skills/peaks-qa/references/external-capability-guidance.md +2 -2
  179. package/skills/peaks-qa/references/qa-fanout-contract.md +1 -1
  180. package/skills/peaks-qa/references/qa-gstack-integration.md +3 -3
  181. package/skills/peaks-qa/references/qa-local-artifacts.md +1 -1
  182. package/skills/peaks-qa/references/qa-matt-pocock-integration.md +1 -1
  183. package/skills/peaks-qa/references/qa-runbook.md +3 -3
  184. package/skills/peaks-qa/references/qa-skill-presence.md +1 -1
  185. package/skills/peaks-qa/references/qa-standards-preflight.md +2 -2
  186. package/skills/peaks-qa/references/qa-transition-gates.md +9 -9
  187. package/skills/peaks-qa/references/regression-gates.md +1 -1
  188. package/skills/peaks-rd/SKILL.md +13 -13
  189. package/skills/peaks-rd/references/artifact-and-standards-output.md +1 -1
  190. package/skills/peaks-rd/references/codegraph-project-analysis.md +1 -1
  191. package/skills/peaks-rd/references/external-references.md +3 -3
  192. package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +1 -1
  193. package/skills/peaks-rd/references/mandatory-perf-baseline.md +1 -1
  194. package/skills/peaks-rd/references/matt-pocock-integration.md +2 -2
  195. package/skills/peaks-rd/references/ocr-integration.md +19 -19
  196. package/skills/peaks-rd/references/openspec-cli.md +2 -2
  197. package/skills/peaks-rd/references/rd-gstack-integration.md +5 -5
  198. package/skills/peaks-rd/references/rd-runbook.md +9 -9
  199. package/skills/peaks-rd/references/rd-standards-preflight.md +1 -1
  200. package/skills/peaks-rd/references/rd-transition-gates.md +13 -13
  201. package/skills/peaks-rd/references/skill-presence-and-title.md +1 -1
  202. package/skills/peaks-reviewer/SKILL.md +2 -2
  203. package/skills/peaks-sc/SKILL.md +9 -9
  204. package/skills/peaks-security-audit/SKILL.md +1 -1
  205. package/skills/peaks-slice-decompose/SKILL.md +2 -2
  206. package/skills/peaks-solo/SKILL.md +49 -49
  207. package/skills/peaks-solo/references/a2a-artifact-mapping.md +8 -8
  208. package/skills/peaks-solo/references/anchoring-and-session-info.md +3 -3
  209. package/skills/peaks-solo/references/boundaries.md +4 -4
  210. package/skills/peaks-solo/references/browser-workflow.md +2 -2
  211. package/skills/peaks-solo/references/codegraph-orchestration.md +1 -1
  212. package/skills/peaks-solo/references/completion-handoff.md +2 -2
  213. package/skills/peaks-solo/references/external-references.md +3 -3
  214. package/skills/peaks-solo/references/external-skill-invocation.md +2 -2
  215. package/skills/peaks-solo/references/frontend-only-mode.md +1 -1
  216. package/skills/peaks-solo/references/gstack-integration.md +4 -4
  217. package/skills/peaks-solo/references/local-artifact-workspace.md +2 -2
  218. package/skills/peaks-solo/references/micro-cycle.md +4 -4
  219. package/skills/peaks-solo/references/mode-selection.md +5 -5
  220. package/skills/peaks-solo/references/openspec-workflow.md +2 -2
  221. package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +1 -1
  222. package/skills/peaks-solo/references/project-memory-loading.md +1 -1
  223. package/skills/peaks-solo/references/project-scan-checklist.md +1 -1
  224. package/skills/peaks-solo/references/quality-gate-cheatsheet.md +1 -1
  225. package/skills/peaks-solo/references/resume-detection.md +1 -1
  226. package/skills/peaks-solo/references/runbook.md +20 -20
  227. package/skills/peaks-solo/references/skill-presence-and-title.md +2 -2
  228. package/skills/peaks-solo/references/standards-preflight.md +2 -2
  229. package/skills/peaks-solo/references/step-0-55-1x-detection.md +3 -3
  230. package/skills/peaks-solo/references/sub-agent-dispatch.md +3 -3
  231. package/skills/peaks-solo/references/swarm-dispatch-contract.md +3 -3
  232. package/skills/peaks-solo/references/workflow-gates-and-types.md +34 -34
  233. package/skills/peaks-solo-resume/SKILL.md +2 -2
  234. package/skills/peaks-solo-status/SKILL.md +4 -4
  235. package/skills/peaks-solo-test/SKILL.md +4 -4
  236. package/skills/peaks-sop/SKILL.md +5 -5
  237. package/skills/peaks-txt/SKILL.md +17 -17
  238. package/skills/peaks-ui/SKILL.md +17 -17
  239. package/skills/peaks-ui/references/workflow.md +1 -1
@@ -5,14 +5,14 @@
5
5
  },
6
6
  "plugins": [
7
7
  {
8
- "name": "peaks-cli",
8
+ "name": "peaks-loop",
9
9
  "description": "Cross-AI-IDE workflow-gating CLI + 11-skill family. Turns LLM improvisation into auditable engineering process. Skills cover PRD / R&D / UI / QA / change-control / context / SOP definition / orchestration. Soft-fail gates block irreversible actions mid-conversation (even under --dangerously-skip-permissions).",
10
10
  "version": "2.0.3",
11
11
  "author": {
12
12
  "name": "SquabbyZ"
13
13
  },
14
- "homepage": "https://github.com/SquabbyZ/peaks-cli",
15
- "repository": "https://github.com/SquabbyZ/peaks-cli",
14
+ "homepage": "https://github.com/SquabbyZ/peaks-loop",
15
+ "repository": "https://github.com/SquabbyZ/peaks-loop",
16
16
  "license": "MIT",
17
17
  "tags": [
18
18
  "workflow",
package/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## [Unreleased] — 2026-06-29 — change-id shim (cleanup post v2.17.0 hard-kill)
4
4
 
5
- **MINOR bump target: v2.19.0**. Full removal of the peaks-cli change-id axis (filesystem axis, code shim, envelope JSON slug, CLI flags). OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched. One cleanup slice that retires the v2.17.0 shim half-life.
5
+ **MINOR bump target: v2.19.0**. Full removal of the peaks-loop change-id axis (filesystem axis, code shim, envelope JSON slug, CLI flags). OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched. One cleanup slice that retires the v2.17.0 shim half-life.
6
6
 
7
7
  ### Removed — change-id shim (cleanup post v2.17.0 hard-kill)
8
8
 
@@ -246,7 +246,7 @@ Each original file gets a sibling `import { ... } from './X-helpers.js'` + `expo
246
246
 
247
247
  ## [2.18.1] — 2026-06-29 — verify-pipeline path-axis + prd check-blocks ESM fix (2 P0 toolchain bugs)
248
248
 
249
- **PATCH bump from 2.18.0**. Resolves 2 P0 peaks-cli toolchain bugs deferred from the v2.18.0 release (CHANGELOG §"Out of scope (deferred)" #5 and #6). No CLI surface change, no new commands, no schema change. Both fixes are surgical: under 10 lines of production-code change each, no refactors.
249
+ **PATCH bump from 2.18.0**. Resolves 2 P0 peaks-loop toolchain bugs deferred from the v2.18.0 release (CHANGELOG §"Out of scope (deferred)" #5 and #6). No CLI surface change, no new commands, no schema change. Both fixes are surgical: under 10 lines of production-code change each, no refactors.
250
250
 
251
251
  ### Feature — `peaks workflow verify-pipeline` session-axis fix (P0 audit #5)
252
252
 
@@ -380,8 +380,8 @@ Each original file gets a sibling `import { ... } from './X-helpers.js'` + `expo
380
380
 
381
381
  - **#1** Legacy v2.16.0 binding callerId rewrite — defer to `peaks doctor --rebuild-binding` slice. v2.18.0 read path is forward-compatible; active rewrite would create write-amplification loops.
382
382
  - **#2** `peaks binding status` CLI (PRD §3.4 nice-to-have) — defer to v2.19 RD.
383
- - **#5** `peaks workflow verify-pipeline` CLI bug (looks for v2.16.0-era change axis) — defer to peaks-cli toolchain fix slice, NOT a v2.18.0 regression.
384
- - **#6** `peaks prd check-blocks` CLI bug (`require is not defined`, ESM/CJS mix) — defer to peaks-cli toolchain fix slice, NOT a v2.18.0 regression.
383
+ - **#5** `peaks workflow verify-pipeline` CLI bug (looks for v2.16.0-era change axis) — defer to peaks-loop toolchain fix slice, NOT a v2.18.0 regression.
384
+ - **#6** `peaks prd check-blocks` CLI bug (`require is not defined`, ESM/CJS mix) — defer to peaks-loop toolchain fix slice, NOT a v2.18.0 regression.
385
385
  - **#7** 4 high-pressure near-cap files (`request-artifact-service.ts` 783 / `slice-decompose-service.ts` 775 / `workflow-autonomous-service.ts` 774 / `workspace-service.ts` 742) — out of v2.18.0 scope; backlog unchanged from v2.15.x.
386
386
 
387
387
  ### Redo additions (v2.18.0 REDO)
@@ -426,7 +426,7 @@ The first v2.18.0 release deferred two open items to a redo slice; both are now
426
426
  - `src/shared/change-id.ts`: 470 → ~210 lines. The substantive logic (change-id validation + path builders + symlink/file binding + LegacyChangeIdBindingError) is **retained as shims** that match the old contract; only the filesystem scope semantics changed.
427
427
  - `--change-id` option is preserved on 13 CLI commands as a metadata-only slug (does not affect CLI behavior).
428
428
  - `tests/unit/change-id.test.ts` (270 lines) and `tests/unit/workspace/workspace-init-change-id-redirect.test.ts` (441 lines) deleted.
429
- - 12 change-id-related memories archived under `.peaks/memory/archived/` (recoverable; documented in `peaks-cli-archive` policy).
429
+ - 12 change-id-related memories archived under `.peaks/memory/archived/` (recoverable; documented in `peaks-loop-archive` policy).
430
430
 
431
431
  ### Behavior changes (user-visible)
432
432
 
@@ -467,7 +467,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
467
467
 
468
468
  ## [2.15.1] — 2026-06-28 — 12 Gaps CLI 全套落地 + ice-cola dogfood 验证
469
469
 
470
- **PATCH bump from 2.15.0**. Follow-up ship for the 12 Gaps positioning memory (peaks-cli 真实定位 + 全套 15 个 Gap CLI 落地). No breaking changes. All new commands are additive top-level (no conflict with existing `peaks solo` / `peaks qa` / `peaks slice` role commands).
470
+ **PATCH bump from 2.15.0**. Follow-up ship for the 12 Gaps positioning memory (peaks-loop 真实定位 + 全套 15 个 Gap CLI 落地). No breaking changes. All new commands are additive top-level (no conflict with existing `peaks solo` / `peaks qa` / `peaks slice` role commands).
471
471
 
472
472
  ### Feature — slice DAG layered parallelism + foundation/upstreamSync/complexity 字段
473
473
 
@@ -499,7 +499,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
499
499
 
500
500
  ### Documentation
501
501
 
502
- - 6 new memory files: `peaks-cli-24h-ai-programmer-positioning` / `user-role-and-tech-decision` / `prd-template-design` / `slice-review-and-qa-perspective` / `fork-sync-and-layered-parallel` / `fast-iteration-quality-loop`
502
+ - 6 new memory files: `peaks-loop-24h-ai-programmer-positioning` / `user-role-and-tech-decision` / `prd-template-design` / `slice-review-and-qa-perspective` / `fork-sync-and-layered-parallel` / `fast-iteration-quality-loop`
503
503
  - 4 SKILL.md 校准注: peaks-solo / peaks-prd / peaks-rd / peaks-qa 加 2026-06-28 校准 anchor
504
504
  - 12 Gaps 完整定位: 24h 程序员场景 / 唯一蜂群 / 反伪选择 / 业务审阅 / 轻量回归 / 上线观察期等
505
505
 
@@ -531,7 +531,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
531
531
  - 真实 k8s rollout / LB config / 监控集成(G15)
532
532
  - 2 个 pre-existing 全量并发 race test 留后续
533
533
 
534
- ## [2.15.0] — 2026-06-28 — Sticky-mode forced re-ask + user-feedback → peaks-cli enforcement (slice 002)
534
+ ## [2.15.0] — 2026-06-28 — Sticky-mode forced re-ask + user-feedback → peaks-loop enforcement (slice 002)
535
535
 
536
536
  **MINOR bump from 2.14.2** (slice `2026-06-28-sticky-mode-and-feedback-promotion`). Closes defect A (sticky-mode) and defect B (advisory-only feedback) from PRD-002. Two system-level fixes ship together because both are triggered by the same root cause: user-given rules were not machine-enforced.
537
537
 
@@ -547,7 +547,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
547
547
  - **`skills/peaks-solo/references/mode-selection-with-stale-presence.md`** (NEW) — Detection protocol + worked example (88b27d defect) + ACL.
548
548
  - **`src/services/skills/skill-presence-service.ts`** — New exports: `checkStalePresence`, `clearStalePresenceOnRotation`, types `StalenessCheck`, `StaleReason`.
549
549
 
550
- ### Feature — User-feedback → peaks-cli enforcement (defect B fix)
550
+ ### Feature — User-feedback → peaks-loop enforcement (defect B fix)
551
551
 
552
552
  - **`sops/feedback-promotion-sop.md`** (NEW) — SOP that requires every feedback memory (`.peaks/memory/<name>.md` with `metadata.type === 'feedback'`) to be promoted to at least one enforcement layer: A (peaks-sop gate), B (peaks-hooks PreToolUse), or C (mode-gate hardFloorCategory). When a rule spans multiple layers, promote to ALL of them.
553
553
  - **`peaks feedback promote <memory-file> [--layer A|B|C] [--dry-run]`** (NEW) — Reads the feedback memory, generates a code stub for the chosen layer, writes the promotion marker (HTML comment + `.promotion.json` sidecar), and writes the envelope at `.peaks/_runtime/<sid>/rd/feedback-promote-<name>.json`.
@@ -683,16 +683,16 @@ slice-2026-06-28-layered-dag PRD: 大需求(1 周内做不完)= 基础先行 +
683
683
  - peaks role add senior-fe --preset senior-fe + role list + role check (granted/not)
684
684
  - peaks complexity-estimate (auth files → complex, 41 lines + hasAsync)
685
685
  - peaks doc changelog-suggest (12 commits parsed into [Unreleased])
686
- - peaks doc generate-skill (peaks-cli 自己 75+ commands 扫到)
686
+ - peaks doc generate-skill (peaks-loop 自己 75+ commands 扫到)
687
687
  - peaks slice-integrate (no contracts → graceful empty, 正确路径)
688
688
 
689
689
  **不触动:** transition gates / hard contracts / Karpathy 4 / sub-agent 协议。**新增 10 个新文件**(5 services + 5 CLIs + 5 tests)。
690
690
 
691
- ### Documentation — peaks-cli 真实定位 + 12 Gaps 沉淀 (2026-06-28 follow-up)
691
+ ### Documentation — peaks-loop 真实定位 + 12 Gaps 沉淀 (2026-06-28 follow-up)
692
692
 
693
693
  会话期间从资深前端 + 后端半盲 + 极致工期 + 24h AI 程序员 + 存量无 UT 的真实场景,沉淀 6 个 memory 文件 + 索引 + 4 个 SKILL.md 校准注。**核心叙事:** `90% 效率 + 80% 质量` > `80% 效率 + 90% 质量`;user 在循环里 = 业务/产品审阅者不参与技术决策;主路径 = 唯一蜂群模式;prd 质量前置 = 4 必填块;QA = 业务视角 + 轻量回归 + 上线观察期。
694
694
 
695
- - **6 new memory files** — `.peaks/memory/peaks-cli-{24h-ai-programmer-positioning, user-role-and-tech-decision, prd-template-design, slice-review-and-qa-perspective, fork-sync-and-layered-parallel, fast-iteration-quality-loop}.md` (warm.project index 18 → 24)
695
+ - **6 new memory files** — `.peaks/memory/peaks-loop-{24h-ai-programmer-positioning, user-role-and-tech-decision, prd-template-design, slice-review-and-qa-perspective, fork-sync-and-layered-parallel, fast-iteration-quality-loop}.md` (warm.project index 18 → 24)
696
696
  - **4 SKILL.md 校准注** — peaks-solo / peaks-prd / peaks-rd / peaks-qa 各加精简 anchor(均通过 25KB cap,只引用 memory 不重复内容)
697
697
  - **不触动** transition gates / hard contracts / Karpathy 4 / 模式枚举 / mode-gate.ts / sub-agent 协议
698
698
 
@@ -750,7 +750,7 @@ slice-2026-06-28-layered-dag PRD: 大需求(1 周内做不完)= 基础先行 +
750
750
 
751
751
  ---
752
752
 
753
- All notable changes to peaks-cli are documented here.
753
+ All notable changes to peaks-loop are documented here.
754
754
 
755
755
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
756
756
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
@@ -1075,14 +1075,14 @@ peaks-solo previously received 5 heterogeneous signals (security-audit, perf-aud
1075
1075
 
1076
1076
  ---
1077
1077
 
1078
- ## [2.13.0] — 2026-06-27 — Zero-human-intervention auto-compact (peaks-cli drives context compression on any AI CLI)
1078
+ ## [2.13.0] — 2026-06-27 — Zero-human-intervention auto-compact (peaks-loop drives context compression on any AI CLI)
1079
1079
 
1080
1080
  **MINOR bump from 2.12.0** (slice `v2-13-0-auto-compact-protocol`, 5-sub-task plan AC-1..AC-5, red-line scope ~6 source files + 2 IDE adapter fields).
1081
1081
 
1082
1082
  peaks-solo now autonomously drives context compaction so the LLM-runner stays alive with context < 95% on **any AI CLI**, with **zero human / zero LLM intervention**. Two-tier threshold model:
1083
1083
 
1084
- - **85% pre-compact zone** — peaks-cli writes a pre-compact checkpoint + convergence plan + auto-decisions log + IDE-side compact dispatch (async-friendly).
1085
- - **95% RED LINE** — peaks-cli refuses sub-agent dispatch and forces synchronous IDE compact; mandatory, LLM cannot opt out.
1084
+ - **85% pre-compact zone** — peaks-loop writes a pre-compact checkpoint + convergence plan + auto-decisions log + IDE-side compact dispatch (async-friendly).
1085
+ - **95% RED LINE** — peaks-loop refuses sub-agent dispatch and forces synchronous IDE compact; mandatory, LLM cannot opt out.
1086
1086
 
1087
1087
  Adapter-driven protocol (no hard-coded IDE names): `IdeAdapter.compact?: IdeCompactProfile` is a 4-field per-IDE profile (`envVarForContextPercent` + `compactCommand` + `compactPathway` + `postCompactDetectCommand`). Claude Code is the MVP fill; trae / codex / cursor / qoder / tongyi-lingma / hermes / openclaw ship without `compact` and fall through to the conservative-zero probe (no auto-fire on missing signal).
1088
1088
 
@@ -1636,7 +1636,7 @@ are unchanged by this release), `pnpm build` clean.
1636
1636
  Rationale: `cc-connect@1.3.1`'s postinstall script runs
1637
1637
  `node scripts/install.js` which downloads a Go binary from
1638
1638
  `github.com/alibaba/open-code-review/releases` via HTTPS. This was
1639
- the dominant cause of slow `npm i -g peaks-cli` installs in
1639
+ the dominant cause of slow `npm i -g peaks-loop` installs in
1640
1640
  restricted/proxied environments; `peaks companion` itself is also
1641
1641
  low-traffic (no Claude Code / Trae workflows depend on it). The
1642
1642
  `peaks-companion` skill directory remains in `skills/` for users
@@ -1658,7 +1658,7 @@ are unchanged by this release), `pnpm build` clean.
1658
1658
  `npm i -g @alibaba-group/open-code-review`. Install hint copy in
1659
1659
  `ocr-service.ts` and `code-review-commands.ts` updated to reflect
1660
1660
  the peer-dependency status. `pnpm.onlyBuiltDependencies` is now an
1661
- empty array (no peaks-cli dep needs postinstall approval).
1661
+ empty array (no peaks-loop dep needs postinstall approval).
1662
1662
  - **Refreshed stale JSDoc** on `src/services/config/config-service.ts#hasLegacyGlobalFields` to describe the current 2.0 schema (`version` + `ocr`) — the old comment still described the deleted `companion` block from slice 2026-06-14-cc-connect-weixin.
1663
1663
  - **Removed dead `commander.invalidArgument` channel-not-supported block** in `src/cli/index.ts` — the only path that raised this exact error was the now-deleted `peaks companion` command.
1664
1664
 
@@ -1728,7 +1728,7 @@ are unchanged by this release), `pnpm build` clean.
1728
1728
  ### Added
1729
1729
 
1730
1730
  - **Slice DAG dependency analysis + parallel sub-agent dispatch (slice 1.2)** —
1731
- the `peaks-cli` repo now ships a typed DAG model for slicing work across
1731
+ the `peaks-loop` repo now ships a typed DAG model for slicing work across
1732
1732
  parallel sub-agents. `src/services/dispatch/slice-dag.ts` exports
1733
1733
  `validateDag` (cycle detection with path-in-error-message),
1734
1734
  `topologicalLevels` (linear / diamond / parallel DAGs), and
@@ -1866,7 +1866,7 @@ are unchanged by this release), `pnpm build` clean.
1866
1866
  ### Added
1867
1867
 
1868
1868
  - **Multi-IDE agent install (Slice 2.6.1.E)** — the `karpathy-reviewer`
1869
- sub-agent now auto-installs on `npm i -g peaks-cli@latest` to **5
1869
+ sub-agent now auto-installs on `npm i -g peaks-loop@latest` to **5
1870
1870
  platforms** instead of 1. Previously only `~/.claude/agents/`
1871
1871
  (claude-code) was populated; 2.6.1 extends to `~/.trae/agents/`,
1872
1872
  `~/.trae-cn/agents/`, `~/.codex/agents/`, and `~/.cursor/agents/`.
@@ -1882,7 +1882,7 @@ are unchanged by this release), `pnpm build` clean.
1882
1882
 
1883
1883
  - **orphan-service false-positive reductions (Slice 2.6.1.A)** —
1884
1884
  `peaks scan orphan` had been reporting 77 `cliSubcommandOrphans` for
1885
- the peaks-cli repo. Four surgical fixes bring this down to 35
1885
+ the peaks-loop repo. Four surgical fixes bring this down to 35
1886
1886
  (54% reduction):
1887
1887
  1. The `usageCount` algorithm now excludes the declaration file
1888
1888
  itself, so the threshold is "wired iff referenced in any other
@@ -2013,10 +2013,10 @@ are unchanged by this release), `pnpm build` clean.
2013
2013
  (`passed` / `violations[]` / `gateAction`), file-write contract
2014
2014
  (title-case `## Karpathy-Gate` + 4 guideline sections), 8 hard
2015
2015
  prohibitions, 5 anti-patterns. Project-internal 2-line pointer at
2016
- `skills/peaks-rd/references/karpathy-reviewer-prompt.md` (peaks-cli
2016
+ `skills/peaks-rd/references/karpathy-reviewer-prompt.md` (peaks-loop
2017
2017
  2.0 rules convention).
2018
- - **Auto-install on `npm i -g peaks-cli@latest`** (slice 7) — the
2019
- `peaks-cli` postinstall (`scripts/install-skills.mjs`) now copies
2018
+ - **Auto-install on `npm i -g peaks-loop@latest`** (slice 7) — the
2019
+ `peaks-loop` postinstall (`scripts/install-skills.mjs`) now copies
2020
2020
  bundled agents from the tarball to `~/.claude/agents/` with
2021
2021
  content-hash drift detection (`.peaks-managed` marker + SHA-256).
2022
2022
  Mirrors the existing `output-styles` install contract. New function
@@ -2084,7 +2084,7 @@ are unchanged by this release), `pnpm build` clean.
2084
2084
  - **L2-install test for Slice 7** — the auto-install path is
2085
2085
  L1-verified (vitest + end-to-end postinstall against a temp HOME)
2086
2086
  but not yet L2-verified on a real consumer machine. A real
2087
- `npm i -g peaks-cli@2.6.0` + postinstall + content-hash drift
2087
+ `npm i -g peaks-loop@2.6.0` + postinstall + content-hash drift
2088
2088
  check + uninstall + reinstall cycle is the next L2 step (Slice 8
2089
2089
  follow-up if issues surface).
2090
2090
  - **Trae / Codex / Cursor / Qoder / Tongyi Lingma / Hermes /
@@ -2108,8 +2108,8 @@ are unchanged by this release), `pnpm build` clean.
2108
2108
  011 added `peaks session checkpoint` / `peaks session resume` CLIs plus
2109
2109
  `references/checkpoint-resume.md` + `references/periodic-checkpoint.md`, but
2110
2110
  SKILL.md body only mentioned them in a single line. New Claude Code sessions
2111
- that load SKILL.md never learned the optimization existed. `### Peaks-Cli
2112
- Step 0.75: Resume from checkpoint` and `### Peaks-Cli Step N: Periodic
2111
+ that load SKILL.md never learned the optimization existed. `### Peaks-Loop
2112
+ Step 0.75: Resume from checkpoint` and `### Peaks-Loop Step N: Periodic
2113
2113
  checkpoint` headings are now in the body (≥ 5 lines each), with explicit
2114
2114
  `peaks session checkpoint` / `peaks session resume` CLI mentions and
2115
2115
  reference-doc pointers. Byte cap bumped 22K → 24K (precedent: 18K → 20K → 22K).
@@ -2242,7 +2242,7 @@ are unchanged by this release), `pnpm build` clean.
2242
2242
  artifacts under `.peaks/_runtime/<change-id>/...` (per-change layout) but this
2243
2243
  session writes under `.peaks/_runtime/<session-id>/...` (per-session
2244
2244
  runtime layout). The pipeline may report `gateC: fail` despite a
2245
- PASS verdict; reconcile in a future slice (peaks-cli tooling fix,
2245
+ PASS verdict; reconcile in a future slice (peaks-loop tooling fix,
2246
2246
  not a 2.4.0 blocker).
2247
2247
 
2248
2248
  ---
@@ -2473,7 +2473,7 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2473
2473
  now derive from `parallelBatches` (with legacy `--type` lookup as
2474
2474
  the fallback path).
2475
2475
 
2476
- - **Extended `peaks-solo/SKILL.md`** — adds "Peaks-Cli Slice
2476
+ - **Extended `peaks-solo/SKILL.md`** — adds "Peaks-Loop Slice
2477
2477
  Decomposition (Step 0.6 — pre-mode-selection)" section.
2478
2478
 
2479
2479
  - **Extended `runbook.md`** — adds "Step 2.5: Slice Decomposition"
@@ -2530,13 +2530,13 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2530
2530
  (baseline 229/2894 -> delta +3 files / +45 tests).
2531
2531
  - `npx tsc --noEmit` clean.
2532
2532
  - `npm run build` clean.
2533
- - End-to-end CLI smoke test on peaks-cli repo:
2533
+ - End-to-end CLI smoke test on peaks-loop repo:
2534
2534
  `peaks slice decompose 2026-06-13-slice-decompose-impl --json` returns
2535
2535
  `ok: true`, writes 9 work units, 1 dep edge, p50=247.5 within the
2536
2536
  expected [202, 248] range (8-WU 2.1.0 dry-run p50=225 +-10%).
2537
2537
  - `peaks doctor` clean (no L3 regressions from the new path).
2538
2538
  - QA verdict: pass (10 of 10 ACs pass; AC10 has 1 partial
2539
- regarding peaks-cli's existing `review-fanout` path mapping, but
2539
+ regarding peaks-loop's existing `review-fanout` path mapping, but
2540
2540
  the partial is a pre-existing architecture issue, NOT a regression
2541
2541
  from this slice).
2542
2542
 
@@ -2803,9 +2803,9 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2803
2803
  (was promoted to a hard `dependency` in 2.0.1 and carried through
2804
2804
  2.0.2). The ocr npm package's `postinstall` downloads a Go binary
2805
2805
  via HTTPS, which fails in restricted/proxied environments and was
2806
- aborting the whole `npm i -g peaks-cli` flow. The 5-state detector
2806
+ aborting the whole `npm i -g peaks-loop` flow. The 5-state detector
2807
2807
  (`ready` / `package-missing` / `binary-missing` / `config-missing` /
2808
- `detection-failed`) and the soft-fail policy are unchanged — peaks-cli
2808
+ `detection-failed`) and the soft-fail policy are unchanged — peaks-loop
2809
2809
  never blocks on ocr being installed; it just no longer forces the
2810
2810
  install. Users who want the second-opinion review run
2811
2811
  `npm i -g @alibaba-group/open-code-review` explicitly. Under pnpm
@@ -2819,7 +2819,7 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2819
2819
 
2820
2820
  ### 🎯 Headline
2821
2821
 
2822
- **One-key 1.x → 2.0 upgrade.** `npm i -g peaks-cli@2.0` runs the full
2822
+ **One-key 1.x → 2.0 upgrade.** `npm i -g peaks-loop@2.0` runs the full
2823
2823
  upgrade umbrella in the consuming project automatically (gated by the
2824
2824
  1.x detector). The manual fallback is `peaks upgrade --to 2.0 --auto`.
2825
2825
 
@@ -2839,11 +2839,11 @@ a slice. New CLI: `peaks code-review detect-ocr` / `run-ocr`. See
2839
2839
 
2840
2840
  > **Note:** This `optionalDependency` classification was briefly
2841
2841
  > promoted to a hard `dependency` in 2.0.1 (alongside the source-of-truth
2842
- > refactor) because the user feedback was "peaks-cli should not leave
2842
+ > refactor) because the user feedback was "peaks-loop should not leave
2843
2843
  > install to the user". 2.0.3 reverts just the classification — the
2844
2844
  > source-of-truth refactor stays — because the ocr postinstall
2845
2845
  > downloads a Go binary via HTTPS, which fails in restricted/proxied
2846
- > environments and was aborting `npm i -g peaks-cli`. See the 2.0.3
2846
+ > environments and was aborting `npm i -g peaks-loop`. See the 2.0.3
2847
2847
  > entry above for the full rationale.
2848
2848
 
2849
2849
  ### Breaking Changes
@@ -2864,27 +2864,27 @@ a slice. New CLI: `peaks code-review detect-ocr` / `run-ocr`. See
2864
2864
  `economyMode`, `swarmMode`, headroom settings, etc. are now per-project.
2865
2865
  The upgrade umbrella runs `peaks config migrate --apply` automatically.
2866
2866
 
2867
- - **Postinstall behavior changed.** `npm i -g peaks-cli@2.0` now:
2867
+ - **Postinstall behavior changed.** `npm i -g peaks-loop@2.0` now:
2868
2868
  1. Symlinks bundled skills to **all 8 supported IDE platforms**
2869
2869
  (Claude Code, Trae, Cursor, Qoder, Codex, Tongyi Lingma, Aider, Roo Code),
2870
2870
  not just the auto-detected one. Per real Trae user feedback 2026-06-11.
2871
2871
  2. Installs bundled output styles.
2872
- 3. If `cwd` contains a 1.x peaks-cli project, fire-and-forgets
2872
+ 3. If `cwd` contains a 1.x peaks-loop project, fire-and-forgets
2873
2873
  `peaks upgrade --to 2.0 --auto`. Opt out with `PEAKS_SKIP_AUTO_UPGRADE=1`.
2874
2874
 
2875
- ### Changed — ocr source-of-truth moved into peaks-cli's config
2875
+ ### Changed — ocr source-of-truth moved into peaks-loop's config
2876
2876
 
2877
2877
  Following the same-release user feedback that the original 2.0.0 ocr
2878
2878
  config lived in `~/.opencodereview/config.json` (a file outside
2879
- peaks-cli's reach) and was set via the `ocr config set` CLI from the
2879
+ peaks-loop's reach) and was set via the `ocr config set` CLI from the
2880
2880
  upstream package, the ocr LLM endpoint config now lives under
2881
2881
  `peaksConfig.ocr.llm` in `~/.peaks/config.json`. This makes the
2882
- user-managed LLM endpoint discoverable from a single, peaks-cli-owned
2882
+ user-managed LLM endpoint discoverable from a single, peaks-loop-owned
2883
2883
  config surface.
2884
2884
 
2885
2885
  - **`@alibaba-group/open-code-review` is now a hard `dependency`** (was
2886
2886
  `optionalDependency`). The user no longer has to remember to install
2887
- it; `npm i -g peaks-cli` pulls it. Network-blocked installs that fail
2887
+ it; `npm i -g peaks-loop` pulls it. Network-blocked installs that fail
2888
2888
  to download the platform binary still soft-fail at runtime
2889
2889
  (`binary-missing` state) — the install-time failure risk is the
2890
2890
  trade-off.
@@ -2892,7 +2892,7 @@ config surface.
2892
2892
  > **Reverted in 2.0.3.** The install-time failure risk turned out
2893
2893
  > to bite too many real-world installs (corporate proxies, region
2894
2894
  > firewalls, sandboxed dev environments all abort the whole
2895
- > `npm i -g peaks-cli`). 2.0.3 puts ocr back under
2895
+ > `npm i -g peaks-loop`). 2.0.3 puts ocr back under
2896
2896
  > `optionalDependencies`; everything else in this section
2897
2897
  > (env-var injection, `config-template` CLI, `missingKeys`,
2898
2898
  > source-of-truth under `peaksConfig.ocr.llm`) is unchanged.
@@ -2905,17 +2905,17 @@ config surface.
2905
2905
  `OCR_LLM_URL` / `OCR_LLM_TOKEN` / `OCR_LLM_MODEL` /
2906
2906
  `OCR_USE_ANTHROPIC` / `OCR_LLM_AUTH_HEADER` from `peaksConfig.ocr.llm`
2907
2907
  when spawning the ocr subprocess — the ocr package's highest-priority
2908
- config path. peaks-cli never has to materialise
2908
+ config path. peaks-loop never has to materialise
2909
2909
  `~/.opencodereview/config.json`, and does NOT auto-configure the
2910
2910
  endpoint — the user is the only party that touches the LLM
2911
2911
  token / URL.
2912
2912
  - **New CLI: `peaks code-review config-template`.** Prints the JSON
2913
2913
  snippet the user pastes into `~/.peaks/config.json`. It does NOT
2914
2914
  write anything. No `peaks ocr config set`, no `ocr config set` — just
2915
- edit peaks-cli's config.json (or use
2915
+ edit peaks-loop's config.json (or use
2916
2916
  `peaks config set --key ocr.llm.url --value '...'` if preferred).
2917
2917
  - **JSON envelope contract change:** `OcrDetectResult.configPath` now
2918
- points at the peaks-cli config (e.g. `~/.peaks/config.json`) instead
2918
+ points at the peaks-loop config (e.g. `~/.peaks/config.json`) instead
2919
2919
  of the OCR package's legacy file. A new `missingKeys` field lists the
2920
2920
  required `ocr.llm.*` keys the user has not yet populated. The
2921
2921
  five-state contract and the soft-fail policy are unchanged.
@@ -2928,14 +2928,14 @@ soft-optional 2.0.0 release should:
2928
2928
  1. Run `peaks code-review config-template --json` to see the JSON
2929
2929
  snippet.
2930
2930
  2. Paste the equivalent values into `~/.peaks/config.json` under
2931
- `ocr.llm` (peaks-cli handles the camelCase conversion; the
2931
+ `ocr.llm` (peaks-loop handles the camelCase conversion; the
2932
2932
  template shows the canonical shape).
2933
2933
  3. Re-run `peaks code-review detect-ocr --json` to verify
2934
2934
  `state == "ready"`.
2935
2935
 
2936
2936
  The old `~/.opencodereview/config.json` is no longer consulted by
2937
- peaks-cli. The user may delete it at their discretion (the ocr
2938
- subprocess ignores it when peaks-cli's env vars are present).
2937
+ peaks-loop. The user may delete it at their discretion (the ocr
2938
+ subprocess ignores it when peaks-loop's env vars are present).
2939
2939
 
2940
2940
  ### Added
2941
2941
 
@@ -2961,7 +2961,7 @@ subprocess ignores it when peaks-cli's env vars are present).
2961
2961
 
2962
2962
  - **`peaks agent run`** — ECC 64 agents soft-optional integration
2963
2963
  (spec §7.2). When the L3 stack is installed, peaks delegates to it;
2964
- otherwise degrades to peaks-cli's own core diagnostics.
2964
+ otherwise degrades to peaks-loop's own core diagnostics.
2965
2965
 
2966
2966
  - **`peaks memory search` / `peaks retrospective search`** — new search
2967
2967
  subcommands for the durable memory / retrospective stores.
@@ -2972,7 +2972,7 @@ subprocess ignores it when peaks-cli's env vars are present).
2972
2972
  - **`peaks preferences set / get / reset`** — per-project preferences
2973
2973
  read/write CLI.
2974
2974
 
2975
- - **Two paired tenets** captured in `.peaks/memory/peaks-cli-tenet-one-key-completion.md`:
2975
+ - **Two paired tenets** captured in `.peaks/memory/peaks-loop-tenet-one-key-completion.md`:
2976
2976
  - **One-key completion** — actions that can be done in one step
2977
2977
  should not be designed as two-step operations.
2978
2978
  - **Minimal user operation** — features can be powerful, but the
@@ -3083,7 +3083,7 @@ is skipped (`PEAKS_SKIP_AUTO_UPGRADE=1` or `npm i --ignore-scripts`).
3083
3083
  `economyMode` / `swarmMode` with a pointer to
3084
3084
  `<project>/.peaks/preferences.json` (do not silently migrate).
3085
3085
 
3086
- The net effect: a freshly-installed peaks-cli writes a 2-key
3086
+ The net effect: a freshly-installed peaks-loop writes a 2-key
3087
3087
  `~/.peaks/config.json`; legacy 1.x files migrate to the same
3088
3088
  2-key form; the ocr second-opinion config is now the only
3089
3089
  discoverable surface the user needs to populate to make
@@ -3112,9 +3112,9 @@ same animations, same anchor links); only the tagline and
3112
3112
  call-to-action text differ.
3113
3113
 
3114
3114
  - `README.md` updated to the new layout (typing animation uses the
3115
- Chinese tagline: `peaks-cli: 跨 AI IDE 的工程门禁与编排`).
3115
+ Chinese tagline: `peaks-loop: 跨 AI IDE 的工程门禁与编排`).
3116
3116
  - `README-en.md` synced to mirror the new layout (typing animation
3117
- uses the English tagline: `peaks-cli: cross-AI-IDE engineering
3117
+ uses the English tagline: `peaks-loop: cross-AI-IDE engineering
3118
3118
  gates & orchestration`).
3119
3119
  - Card anchors renamed to ASCII-friendly slugs on the English file
3120
3120
  (`30-seconds-to-running`, `5-minute-onboarding`, `11-skills-in-the-family`,
@@ -3131,6 +3131,6 @@ No code, CLI, or schema changes. The CLI still reports
3131
3131
 
3132
3132
  Last 1.x release. See git history pre-2.0.0 for details.
3133
3133
 
3134
- [2.0.2]: https://github.com/SquabbyZ/peaks-cli/releases/tag/v2.0.2
3135
- [2.0.1]: https://github.com/SquabbyZ/peaks-cli/releases/tag/v2.0.1
3136
- [2.0.0]: https://github.com/SquabbyZ/peaks-cli/releases/tag/v2.0.0
3134
+ [2.0.2]: https://github.com/SquabbyZ/peaks-loop/releases/tag/v2.0.2
3135
+ [2.0.1]: https://github.com/SquabbyZ/peaks-loop/releases/tag/v2.0.1
3136
+ [2.0.0]: https://github.com/SquabbyZ/peaks-loop/releases/tag/v2.0.0
package/README-en.md CHANGED
@@ -262,10 +262,10 @@ See [`CHANGELOG.md`](./CHANGELOG.md) and [`docs/`](./docs/) for details.
262
262
 
263
263
  ## 💬 Join the WeChat community
264
264
 
265
- Got usage questions, feature requests, or want to chat with the team and other peaks-loop users? Scan to join the **Peaks-Cli** WeChat group:
265
+ Got usage questions, feature requests, or want to chat with the team and other peaks-loop users? Scan to join the **Peaks-Loop** WeChat group:
266
266
 
267
267
  <div align="center">
268
- <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Cli WeChat group QR code" width="240" />
268
+ <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Loop WeChat group QR code" width="240" />
269
269
  </div>
270
270
 
271
271
  > When the QR code expires, feel free to open a GitHub Issue / Discussion instead.
package/README.md CHANGED
@@ -346,10 +346,10 @@ peaks gate bypass --sop <id> --phase <phase> --reason "<why>"
346
346
 
347
347
  ## 💬 加入微信交流群
348
348
 
349
- 遇到使用问题、功能建议、或者想和other peaks-loop users直接交流?扫码加入 **Peaks-Cli** 微信群:
349
+ 遇到使用问题、功能建议、或者想和other peaks-loop users直接交流?扫码加入 **Peaks-Loop** 微信群:
350
350
 
351
351
  <div align="center">
352
- <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Cli 微信群二维码" width="240" />
352
+ <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Loop 微信群二维码" width="240" />
353
353
  </div>
354
354
 
355
355
  > 二维码图片过期后,欢迎在 GitHub Issues / Discussions 提反馈。
@@ -7,9 +7,9 @@ model: sonnet
7
7
 
8
8
  # Karpathy Reviewer (peaks-rd 5-way fanout — Slice 5/6 + Slice 6/6 + Slice 7/7 LLM prompt)
9
9
 
10
- > **Shipped source** (Slice 7/7): this file is the canonical source for the karpathy-reviewer sub-agent prompt. The `peaks-cli` postinstall (`scripts/install-skills.mjs#installBundledAgents`) copies this file to `~/.claude/agents/karpathy-reviewer.md` on every `npm i -g peaks-cli@latest` invocation, with content-hash drift detection (a `.peaks-managed` marker + SHA-256 compare). Edit here; do not edit the copy in `~/.claude/agents/` (it will be overwritten on the next upgrade).
10
+ > **Shipped source** (Slice 7/7): this file is the canonical source for the karpathy-reviewer sub-agent prompt. The `peaks-loop` postinstall (`scripts/install-skills.mjs#installBundledAgents`) copies this file to `~/.claude/agents/karpathy-reviewer.md` on every `npm i -g peaks-loop@latest` invocation, with content-hash drift detection (a `.peaks-managed` marker + SHA-256 compare). Edit here; do not edit the copy in `~/.claude/agents/` (it will be overwritten on the next upgrade).
11
11
  >
12
- > **Project-internal pointer**: `skills/peaks-rd/references/karpathy-reviewer-prompt.md` is a 2-line pointer to this file (peaks-cli 2.0 rules convention).
12
+ > **Project-internal pointer**: `skills/peaks-rd/references/karpathy-reviewer-prompt.md` is a 2-line pointer to this file (peaks-loop 2.0 rules convention).
13
13
 
14
14
  You are a **Karpathy-guidelines enforcement reviewer** for peaks-rd. You inspect a slice's RD outputs against the 4 Karpathy guidelines and emit a compact JSON envelope that blocks the `rd → qa-handoff` transition if any guideline fails. You do **not** review style, performance, security, or code quality — those are owned by the parallel 4 sub-agents.
15
15
 
@@ -4,7 +4,7 @@ import { fail, ok } from '../../shared/result.js';
4
4
  export function registerAgentCommands(program, io) {
5
5
  const agent = program
6
6
  .command('agent')
7
- .description('Run an ECC agent (soft-optional per spec §7.2). 64 agents are npm-installable via npx ecc; peaks-cli shells out when ECC is installed and soft-fails with a 4-option install prompt when it is not. Native peaks-cli diagnostics still run via `peaks doctor scan`.');
7
+ .description('Run an ECC agent (soft-optional per spec §7.2). 64 agents are npm-installable via npx ecc; peaks-loop shells out when ECC is installed and soft-fails with a 4-option install prompt when it is not. Native peaks-loop diagnostics still run via `peaks doctor scan`.');
8
8
  addJsonOption(agent
9
9
  .command('run <name>')
10
10
  .description(`Run an ECC agent by name (e.g. 'security-reviewer', 'code-reviewer'). The canonical subprocess is \`npx ecc agent run <name> --target <path> --json\`.`)
@@ -28,7 +28,7 @@ export function registerAgentCommands(program, io) {
28
28
  const data = { ...result, projectRoot };
29
29
  const nextActions = [];
30
30
  if (result.reason === 'flag-enabled-but-ecc-missing') {
31
- nextActions.push('ECC not installed. Pick one of the four options below:', ' a) Install: run `npx ecc --help` to install, then re-run `peaks agent run`.', ' b) Skip this run: use the peaks-cli native diagnostic via `peaks doctor scan`.', ' c) Skip forever: run `peaks preferences set agentShieldEnabled false`.', ' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §7.2.');
31
+ nextActions.push('ECC not installed. Pick one of the four options below:', ' a) Install: run `npx ecc --help` to install, then re-run `peaks agent run`.', ' b) Skip this run: use the peaks-loop native diagnostic via `peaks doctor scan`.', ' c) Skip forever: run `peaks preferences set agentShieldEnabled false`.', ' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §7.2.');
32
32
  }
33
33
  const envelope = ok('agent.run', data, [...result.warnings], nextActions);
34
34
  printResult(io, envelope, options.json);
@@ -41,7 +41,7 @@ export function registerAgentCommands(program, io) {
41
41
  });
42
42
  addJsonOption(agent
43
43
  .command('list')
44
- .description(`List the 12 canonical ECC agents (peaks-cli ships a static subset; the full 64 are ECC-discovered).`)).action((options) => {
44
+ .description(`List the 12 canonical ECC agents (peaks-loop ships a static subset; the full 64 are ECC-discovered).`)).action((options) => {
45
45
  const envelope = ok('agent.list', { agents: CANONICAL_ECC_AGENTS.map((a) => ({ name: a.name, description: a.description })) }, [], ['Run any agent with: `peaks agent run <name> --target <path>`']);
46
46
  printResult(io, envelope, options.json);
47
47
  });
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Registers the new `peaks audit` top-level command with the
5
5
  * `red-lines` (L2.1) and `static` (L2.3 P2-a) subcommands.
6
- * Per `peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
6
+ * Per `peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
7
7
  * we verified that no `peaks audit` top-level exists; this is the only
8
8
  * file that owns the registration.
9
9
  */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Registers the new `peaks audit` top-level command with the
5
5
  * `red-lines` (L2.1) and `static` (L2.3 P2-a) subcommands.
6
- * Per `peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
6
+ * Per `peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
7
7
  * we verified that no `peaks audit` top-level exists; this is the only
8
8
  * file that owns the registration.
9
9
  */
@@ -50,7 +50,7 @@ function validateProjectRoot(projectArg) {
50
50
  export function registerAuditCommands(program, io) {
51
51
  const audit = program
52
52
  .command('audit')
53
- .description('Audit a project for compliance with peaks-cli red lines (P0 / P1 / P2 tiers)');
53
+ .description('Audit a project for compliance with peaks-loop red lines (P0 / P1 / P2 tiers)');
54
54
  addJsonOption(audit
55
55
  .command('red-lines')
56
56
  .description('Scan skills/, .claude/rules/, and openspec/changes/ for MANDATORY / BLOCKING / MUST NOT / RED LINE markers; classify each as cli-backed / partial / prose-only')
@@ -88,12 +88,12 @@ export function registerAuditCommands(program, io) {
88
88
  // project-memory decision at `.peaks/memory/audit-decisions/<slug>.md`.
89
89
  // `--rid <id>` is an optional disambiguator for multiple audits on
90
90
  // the same day (slug becomes `audit-decision-<date>-<rid>`).
91
- // Per `peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first`
91
+ // Per `peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first`
92
92
  // and the dev-preference red line "Default-no on new CLI commands",
93
93
  // we extend the existing command rather than register a new subcommand.
94
94
  addJsonOption(audit
95
95
  .command('static')
96
- .description('Run the static audit (peaks-cli lint + optional ECC AgentShield subprocess). Per spec §5.3.')
96
+ .description('Run the static audit (peaks-loop lint + optional ECC AgentShield subprocess). Per spec §5.3.')
97
97
  .requiredOption('--project <path>', 'target project root')
98
98
  .option('--enable-agent-shield', 'force-enable ECC AgentShield subprocess for this call (overrides preference)')
99
99
  .option('--disable-agent-shield', 'force-disable ECC AgentShield subprocess for this call (overrides preference)')
@@ -155,7 +155,7 @@ export function registerAuditCommands(program, io) {
155
155
  const nextActions = [];
156
156
  // Per spec §5.3 + §7.2: when ECC is not installed, surface
157
157
  // the canonical 4-option user opt-in UX (a/b/c/d) via
158
- // nextActions. The peaks-cli `peaks audit static` CLI is
158
+ // nextActions. The peaks-loop `peaks audit static` CLI is
159
159
  // non-interactive (JSON envelope by default), so the 4
160
160
  // options are surfaced as machine-readable action strings
161
161
  // — same pattern as understand-commands.ts `INSTALL_HINT`.
@@ -164,7 +164,7 @@ export function registerAuditCommands(program, io) {
164
164
  nextActions.push(' a) Install: run `npx ecc-agentshield --help` to install, then re-run `peaks audit static`.');
165
165
  nextActions.push(' b) Skip this run: pass `--disable-agent-shield` to suppress the subprocess for this call.');
166
166
  nextActions.push(' c) Skip forever: run `peaks preferences set agentShieldEnabled false` (writes to `.peaks/preferences.json`).');
167
- nextActions.push(' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §5.3 + §7.2.');
167
+ nextActions.push(' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §5.3 + §7.2.');
168
168
  }
169
169
  if (result.agentShield.spawned && result.agentShield.findings.length > 0) {
170
170
  nextActions.push(`${result.agentShield.findings.length} ECC findings merged into the audit. Review with \`peaks audit static --json\`.`);
@@ -139,7 +139,7 @@ export function registerClassifyCommands(program, io) {
139
139
  // Downgrade is REFUSED per spec §4. Surface this as a hard fail.
140
140
  classify
141
141
  .command('downgrade')
142
- .description('REFUSED per spec §4 — peaks-cli never downgrades a classification; ask the user to override explicitly')
142
+ .description('REFUSED per spec §4 — peaks-loop never downgrades a classification; ask the user to override explicitly')
143
143
  .requiredOption('--level <level>', 'attempted level')
144
144
  .requiredOption('--reason <text>', 'reason for the attempt (always rejected)')
145
145
  .requiredOption('--project <path>', 'target project root')
@@ -11,7 +11,7 @@
11
11
  * current ocr install + config state (5 reasons: ready /
12
12
  * package-missing / binary-missing / config-missing /
13
13
  * detection-failed). Source of truth for the LLM endpoint
14
- * config is `peaksConfig.ocr.llm` in the user's peaks-cli
14
+ * config is `peaksConfig.ocr.llm` in the user's peaks-loop
15
15
  * config (NOT `~/.opencodereview/config.json`).
16
16
  * - `peaks code-review run-ocr [--from --to --commit]` — invokes
17
17
  * `ocr review --format json` and wraps the result in a peaks
@@ -22,11 +22,11 @@
22
22
  * so the ocr subprocess never has to read from a file the
23
23
  * user did not set up themselves.
24
24
  * - `peaks code-review config-template` — prints the JSON snippet
25
- * the user should paste into their peaks-cli config.json. It
25
+ * the user should paste into their peaks-loop config.json. It
26
26
  * does NOT write anything. The user is in control of their
27
27
  * LLM token / URL / model. No `peaks ocr config set`; the user
28
28
  * either edits the JSON directly or uses `peaks config set
29
- * --key ocr.llm.url --value '...'` (a peaks-cli command, not
29
+ * --key ocr.llm.url --value '...'` (a peaks-loop command, not
30
30
  * an ocr command).
31
31
  */
32
32
  import { Command } from 'commander';
@@ -5,7 +5,7 @@ import { fail, ok } from '../../shared/result.js';
5
5
  export function registerCodeReviewCommands(program, io) {
6
6
  const codeReview = program
7
7
  .command('code-review')
8
- .description('Code-review primitives for peaks-rd Gate B3. Wraps the soft-optional `@alibaba-group/open-code-review` (ocr) tool when it is installed + configured; peaks-rd uses the structured JSON output as a second-opinion review alongside its own LLM review. ocr is a peerDependency of peaks-cli 2.8.2+ (was briefly promoted to a hard dependency in 2.0.1/2.0.2, then demoted to optionalDependencies 2.0.3+ — peer in 2.8.2 because its postinstall downloads a Go binary via HTTPS and would otherwise slow `npm i -g peaks-cli` in restricted environments). Install manually with `npm i -g @alibaba-group/open-code-review` if you want second-opinion reviews. LLM endpoint config lives under `peaksConfig.ocr.llm` in the user config — run `peaks code-review config-template` to see the JSON snippet to paste.');
8
+ .description('Code-review primitives for peaks-rd Gate B3. Wraps the soft-optional `@alibaba-group/open-code-review` (ocr) tool when it is installed + configured; peaks-rd uses the structured JSON output as a second-opinion review alongside its own LLM review. ocr is a peerDependency of peaks-loop 2.8.2+ (was briefly promoted to a hard dependency in 2.0.1/2.0.2, then demoted to optionalDependencies 2.0.3+ — peer in 2.8.2 because its postinstall downloads a Go binary via HTTPS and would otherwise slow `npm i -g peaks-loop` in restricted environments). Install manually with `npm i -g @alibaba-group/open-code-review` if you want second-opinion reviews. LLM endpoint config lives under `peaksConfig.ocr.llm` in the user config — run `peaks code-review config-template` to see the JSON snippet to paste.');
9
9
  addJsonOption(codeReview
10
10
  .command('detect-ocr')
11
11
  .description('Read-only probe: returns the ocr install + config state as a JSON envelope (5 reasons: ready / package-missing / binary-missing / config-missing / detection-failed). peaks-rd calls this first to decide whether to invoke `run-ocr`. Reads the LLM endpoint from `peaksConfig.ocr.llm` (not from ~/.opencodereview/config.json).')
@@ -32,7 +32,7 @@ export function registerCodeReviewCommands(program, io) {
32
32
  });
33
33
  addJsonOption(codeReview
34
34
  .command('run-ocr')
35
- .description('Run `ocr review --format json` and return the parsed JSON envelope. Soft-fails (exit 0, ok=false) when ocr is not ready, so peaks-rd can continue without the second-opinion review and surface the install/config nextActions to the user. The peaks-cli `peaksConfig.ocr.llm` block is injected as OCR_LLM_URL / OCR_LLM_TOKEN / ... env vars so the ocr subprocess never has to read ~/.opencodereview/config.json.')
35
+ .description('Run `ocr review --format json` and return the parsed JSON envelope. Soft-fails (exit 0, ok=false) when ocr is not ready, so peaks-rd can continue without the second-opinion review and surface the install/config nextActions to the user. The peaks-loop `peaksConfig.ocr.llm` block is injected as OCR_LLM_URL / OCR_LLM_TOKEN / ... env vars so the ocr subprocess never has to read ~/.opencodereview/config.json.')
36
36
  .option('--project <path>', 'project root (default: cwd)')
37
37
  .option('--from <ref>', 'git ref to diff from (e.g. main, origin/main)')
38
38
  .option('--to <ref>', 'git ref to diff to (e.g. HEAD, feature-branch)')
@@ -62,7 +62,7 @@ export function registerCodeReviewCommands(program, io) {
62
62
  });
63
63
  addJsonOption(codeReview
64
64
  .command('config-template')
65
- .description('Print the JSON snippet the user should paste into their peaks-cli config (`peaksConfig.ocr.llm`). This command does NOT write anything. The user is the only party that touches the LLM token / URL / model — peaks-cli never auto-configures the endpoint. Token value is shown as the placeholder "<your-api-key>"; replace it before pasting.')).action((options) => {
65
+ .description('Print the JSON snippet the user should paste into their peaks-loop config (`peaksConfig.ocr.llm`). This command does NOT write anything. The user is the only party that touches the LLM token / URL / model — peaks-loop never auto-configures the endpoint. Token value is shown as the placeholder "<your-api-key>"; replace it before pasting.')).action((options) => {
66
66
  const template = getOcrConfigTemplate();
67
67
  const targetPath = getUserConfigPath();
68
68
  const currentConfig = getOcrLlmConfig();
@@ -73,8 +73,8 @@ export function registerCodeReviewCommands(program, io) {
73
73
  template,
74
74
  nextActions: [
75
75
  `Edit ${targetPath} and add the "ocr" block from the template above.`,
76
- 'OR use peaks-cli config set with one key at a time: `peaks config set --key ocr.llm.url --value \'<url>\'` etc.',
77
- 'The authToken field is sensitive and is stored in the user layer (`~/.peaks/config.json`); peaks-cli will not commit it.',
76
+ 'OR use peaks-loop config set with one key at a time: `peaks config set --key ocr.llm.url --value \'<url>\'` etc.',
77
+ 'The authToken field is sensitive and is stored in the user layer (`~/.peaks/config.json`); peaks-loop will not commit it.',
78
78
  'Re-run `peaks code-review detect-ocr --json` to verify the new state is `ready`.',
79
79
  ],
80
80
  };