peaks-loop 3.0.0 → 3.0.2

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 (244) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +94 -59
  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/understand-commands.js +36 -0
  35. package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
  36. package/dist/src/cli/commands/upgrade-commands.js +6 -6
  37. package/dist/src/cli/commands/workspace/init-command.js +2 -2
  38. package/dist/src/cli/program.js +10 -1
  39. package/dist/src/services/agent/ecc-agent-service.js +5 -5
  40. package/dist/src/services/audit/artifact-writer.d.ts +1 -1
  41. package/dist/src/services/audit/artifact-writer.js +1 -1
  42. package/dist/src/services/audit/decision-writer.d.ts +1 -1
  43. package/dist/src/services/audit/decision-writer.js +1 -1
  44. package/dist/src/services/audit/enforcers/lint-output-style.js +5 -5
  45. package/dist/src/services/audit/enforcers/mock-placement.d.ts +1 -1
  46. package/dist/src/services/audit/enforcers/mock-placement.js +1 -1
  47. package/dist/src/services/audit/enforcers/no-root-pollution.js +1 -1
  48. package/dist/src/services/audit/red-line-catalog-p2-a.js +2 -2
  49. package/dist/src/services/audit/red-line-catalog-p2-b.js +2 -2
  50. package/dist/src/services/audit/static-service.d.ts +1 -1
  51. package/dist/src/services/audit/static-service.js +5 -5
  52. package/dist/src/services/audit/types.d.ts +1 -1
  53. package/dist/src/services/audit/types.js +1 -1
  54. package/dist/src/services/audit-independent/perf-audit-service.js +1 -1
  55. package/dist/src/services/audit-independent/security-audit-service.js +1 -1
  56. package/dist/src/services/classify/classify-service.d.ts +1 -1
  57. package/dist/src/services/classify/classify-service.js +1 -1
  58. package/dist/src/services/classify/classify-types.d.ts +1 -1
  59. package/dist/src/services/classify/classify-types.js +1 -1
  60. package/dist/src/services/code-review/ecc-bridge.d.ts +2 -2
  61. package/dist/src/services/code-review/ecc-bridge.js +2 -2
  62. package/dist/src/services/code-review/ocr-service.d.ts +9 -9
  63. package/dist/src/services/code-review/ocr-service.js +16 -16
  64. package/dist/src/services/compact/decision-tables.d.ts +66 -0
  65. package/dist/src/services/compact/decision-tables.js +127 -0
  66. package/dist/src/services/compact/request-transition-hook.d.ts +20 -0
  67. package/dist/src/services/compact/request-transition-hook.js +110 -0
  68. package/dist/src/services/compact/suggest-service.d.ts +74 -0
  69. package/dist/src/services/compact/suggest-service.js +203 -0
  70. package/dist/src/services/config/config-migration.js +1 -1
  71. package/dist/src/services/config/config-safety.d.ts +1 -1
  72. package/dist/src/services/config/config-safety.js +1 -1
  73. package/dist/src/services/config/config-service.d.ts +1 -1
  74. package/dist/src/services/config/config-service.js +1 -1
  75. package/dist/src/services/context/auto-compact-dispatcher.js +4 -4
  76. package/dist/src/services/context/auto-compact-types.d.ts +6 -6
  77. package/dist/src/services/context/auto-compact-types.js +5 -5
  78. package/dist/src/services/dispatch/sub-agent-dispatcher.js +1 -1
  79. package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
  80. package/dist/src/services/dispatch/test-tool-detection.js +1 -1
  81. package/dist/src/services/doctor/doctor-service.d.ts +1 -1
  82. package/dist/src/services/doctor/doctor-service.js +5 -5
  83. package/dist/src/services/hooks/presence-marker-detector.js +5 -5
  84. package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +1 -1
  85. package/dist/src/services/ide/adapters/claude-code-adapter.js +2 -2
  86. package/dist/src/services/ide/adapters/codex-adapter.d.ts +2 -2
  87. package/dist/src/services/ide/adapters/codex-adapter.js +2 -2
  88. package/dist/src/services/ide/adapters/cursor-adapter.d.ts +2 -2
  89. package/dist/src/services/ide/adapters/cursor-adapter.js +2 -2
  90. package/dist/src/services/ide/adapters/hermes-adapter.d.ts +1 -1
  91. package/dist/src/services/ide/adapters/hermes-adapter.js +1 -1
  92. package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +1 -1
  93. package/dist/src/services/ide/adapters/openclaw-adapter.js +1 -1
  94. package/dist/src/services/ide/adapters/trae-adapter.d.ts +1 -1
  95. package/dist/src/services/ide/adapters/trae-adapter.js +1 -1
  96. package/dist/src/services/ide/ide-types.d.ts +9 -9
  97. package/dist/src/services/legacy/legacy-detector.d.ts +1 -1
  98. package/dist/src/services/legacy/legacy-detector.js +1 -1
  99. package/dist/src/services/log/log-commands-service.d.ts +1 -1
  100. package/dist/src/services/log/log-commands-service.js +1 -1
  101. package/dist/src/services/log/logger.d.ts +3 -3
  102. package/dist/src/services/log/logger.js +3 -3
  103. package/dist/src/services/log/redact.d.ts +1 -1
  104. package/dist/src/services/log/redact.js +1 -1
  105. package/dist/src/services/loop/evaluator-dispatcher.d.ts +1 -1
  106. package/dist/src/services/loop/evaluator-dispatcher.js +16 -15
  107. package/dist/src/services/loop/monotonic-guard.js +35 -18
  108. package/dist/src/services/loop/monotonic-runner.d.ts +3 -0
  109. package/dist/src/services/loop/monotonic-runner.js +62 -28
  110. package/dist/src/services/loop/run-driver.js +45 -24
  111. package/dist/src/services/memory/llm-reranker.d.ts +1 -1
  112. package/dist/src/services/memory/llm-reranker.js +1 -1
  113. package/dist/src/services/mut/production-stryker.d.ts +0 -5
  114. package/dist/src/services/mut/production-stryker.js +19 -10
  115. package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +1 -1
  116. package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  117. package/dist/src/services/perf/perf-baseline-service.d.ts +2 -2
  118. package/dist/src/services/perf/perf-baseline-service.js +2 -2
  119. package/dist/src/services/prd/handoff-auto-regen.js +1 -1
  120. package/dist/src/services/prd/project-scan-sediment.js +3 -3
  121. package/dist/src/services/prd/project-scan-types.d.ts +1 -1
  122. package/dist/src/services/preferences/preferences-types.d.ts +3 -3
  123. package/dist/src/services/preferences/preferences-types.js +2 -2
  124. package/dist/src/services/role/role-registry.d.ts +1 -1
  125. package/dist/src/services/role/role-registry.js +1 -1
  126. package/dist/src/services/sc/sc-service.js +3 -3
  127. package/dist/src/services/skill/resume-detector.js +2 -2
  128. package/dist/src/services/skills/sync-service.d.ts +3 -3
  129. package/dist/src/services/skills/sync-service.js +9 -9
  130. package/dist/src/services/slice/calibration-store.d.ts +1 -1
  131. package/dist/src/services/slice/calibration-store.js +1 -1
  132. package/dist/src/services/solo/auto-compact-orchestrator.d.ts +1 -1
  133. package/dist/src/services/solo/auto-compact-orchestrator.js +7 -7
  134. package/dist/src/services/solo/dag-orchestrator.js +1 -1
  135. package/dist/src/services/solo/mode-gate.d.ts +1 -1
  136. package/dist/src/services/solo/mode-gate.js +4 -4
  137. package/dist/src/services/solo/user-touchpoint-classifier.js +1 -1
  138. package/dist/src/services/standards/migrate-claude-rules-service.js +5 -5
  139. package/dist/src/services/standards/migrate-service.d.ts +3 -3
  140. package/dist/src/services/standards/migrate-service.js +5 -5
  141. package/dist/src/services/standards/project-standards-service.js +1 -1
  142. package/dist/src/services/understand/hybrid-types.d.ts +32 -0
  143. package/dist/src/services/understand/hybrid-types.js +1 -0
  144. package/dist/src/services/understand/understand-hybrid-service.d.ts +10 -0
  145. package/dist/src/services/understand/understand-hybrid-service.js +100 -0
  146. package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +3 -3
  147. package/dist/src/services/upgrade/gitignore-migrate-service.js +4 -4
  148. package/dist/src/services/upgrade/upgrade-service.d.ts +1 -1
  149. package/dist/src/services/upgrade/upgrade-service.js +5 -5
  150. package/dist/src/services/verdict/envelopes.d.ts +1 -1
  151. package/dist/src/services/verdict/envelopes.js +1 -1
  152. package/dist/src/services/workflow/workflow-loader.js +1 -1
  153. package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +1 -1
  154. package/dist/src/services/workspace/migrate-1-4-1-service.js +1 -1
  155. package/dist/src/services/workspace/migrate-types.d.ts +1 -1
  156. package/dist/src/services/workspace/migrate-types.js +1 -1
  157. package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +2 -2
  158. package/dist/src/services/workspace/workspace-claude-settings-materializer.js +9 -9
  159. package/dist/src/services/workspace/workspace-service.d.ts +1 -1
  160. package/dist/src/services/workspace/workspace-service.js +1 -1
  161. package/dist/src/shared/path-safety.d.ts +1 -1
  162. package/dist/src/shared/path-safety.js +1 -1
  163. package/dist/src/shared/version.d.ts +1 -1
  164. package/dist/src/shared/version.js +1 -1
  165. package/output-styles/peaks-skill-swarm.md +33 -33
  166. package/package.json +5 -4
  167. package/schemas/decomposition-v1.json +1 -1
  168. package/schemas/decomposition-v2.json +1 -1
  169. package/schemas/replay-fixture.schema.json +1 -1
  170. package/schemas/reviewer-envelope.schema.json +1 -1
  171. package/scripts/install-skills.mjs +11 -11
  172. package/skills/peaks-audit/SKILL.md +2 -2
  173. package/skills/peaks-doctor/SKILL.md +4 -4
  174. package/skills/peaks-final-review/SKILL.md +2 -2
  175. package/skills/peaks-ide/SKILL.md +3 -3
  176. package/skills/peaks-perf-audit/SKILL.md +1 -1
  177. package/skills/peaks-prd/SKILL.md +14 -14
  178. package/skills/peaks-prd/references/workflow.md +1 -1
  179. package/skills/peaks-qa/SKILL.md +17 -17
  180. package/skills/peaks-qa/references/artifact-per-request.md +1 -1
  181. package/skills/peaks-qa/references/browser-validation-contracts.md +2 -2
  182. package/skills/peaks-qa/references/codegraph-regression-focus.md +1 -1
  183. package/skills/peaks-qa/references/external-capability-guidance.md +2 -2
  184. package/skills/peaks-qa/references/qa-fanout-contract.md +1 -1
  185. package/skills/peaks-qa/references/qa-gstack-integration.md +3 -3
  186. package/skills/peaks-qa/references/qa-local-artifacts.md +1 -1
  187. package/skills/peaks-qa/references/qa-matt-pocock-integration.md +1 -1
  188. package/skills/peaks-qa/references/qa-runbook.md +3 -3
  189. package/skills/peaks-qa/references/qa-skill-presence.md +1 -1
  190. package/skills/peaks-qa/references/qa-standards-preflight.md +2 -2
  191. package/skills/peaks-qa/references/qa-transition-gates.md +9 -9
  192. package/skills/peaks-qa/references/regression-gates.md +1 -1
  193. package/skills/peaks-rd/SKILL.md +13 -13
  194. package/skills/peaks-rd/references/artifact-and-standards-output.md +1 -1
  195. package/skills/peaks-rd/references/codegraph-project-analysis.md +1 -1
  196. package/skills/peaks-rd/references/external-references.md +3 -3
  197. package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +1 -1
  198. package/skills/peaks-rd/references/mandatory-perf-baseline.md +1 -1
  199. package/skills/peaks-rd/references/matt-pocock-integration.md +2 -2
  200. package/skills/peaks-rd/references/ocr-integration.md +19 -19
  201. package/skills/peaks-rd/references/openspec-cli.md +2 -2
  202. package/skills/peaks-rd/references/rd-gstack-integration.md +5 -5
  203. package/skills/peaks-rd/references/rd-runbook.md +9 -9
  204. package/skills/peaks-rd/references/rd-standards-preflight.md +1 -1
  205. package/skills/peaks-rd/references/rd-transition-gates.md +13 -13
  206. package/skills/peaks-rd/references/skill-presence-and-title.md +1 -1
  207. package/skills/peaks-reviewer/SKILL.md +2 -2
  208. package/skills/peaks-sc/SKILL.md +9 -9
  209. package/skills/peaks-security-audit/SKILL.md +1 -1
  210. package/skills/peaks-slice-decompose/SKILL.md +2 -2
  211. package/skills/peaks-solo/SKILL.md +49 -49
  212. package/skills/peaks-solo/references/a2a-artifact-mapping.md +8 -8
  213. package/skills/peaks-solo/references/anchoring-and-session-info.md +3 -3
  214. package/skills/peaks-solo/references/boundaries.md +4 -4
  215. package/skills/peaks-solo/references/browser-workflow.md +2 -2
  216. package/skills/peaks-solo/references/codegraph-orchestration.md +1 -1
  217. package/skills/peaks-solo/references/completion-handoff.md +2 -2
  218. package/skills/peaks-solo/references/external-references.md +3 -3
  219. package/skills/peaks-solo/references/external-skill-invocation.md +2 -2
  220. package/skills/peaks-solo/references/frontend-only-mode.md +1 -1
  221. package/skills/peaks-solo/references/gstack-integration.md +4 -4
  222. package/skills/peaks-solo/references/local-artifact-workspace.md +2 -2
  223. package/skills/peaks-solo/references/micro-cycle.md +4 -4
  224. package/skills/peaks-solo/references/mode-selection.md +5 -5
  225. package/skills/peaks-solo/references/openspec-workflow.md +2 -2
  226. package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +1 -1
  227. package/skills/peaks-solo/references/project-memory-loading.md +1 -1
  228. package/skills/peaks-solo/references/project-scan-checklist.md +1 -1
  229. package/skills/peaks-solo/references/quality-gate-cheatsheet.md +1 -1
  230. package/skills/peaks-solo/references/resume-detection.md +1 -1
  231. package/skills/peaks-solo/references/runbook.md +20 -20
  232. package/skills/peaks-solo/references/skill-presence-and-title.md +2 -2
  233. package/skills/peaks-solo/references/standards-preflight.md +2 -2
  234. package/skills/peaks-solo/references/step-0-55-1x-detection.md +3 -3
  235. package/skills/peaks-solo/references/sub-agent-dispatch.md +3 -3
  236. package/skills/peaks-solo/references/swarm-dispatch-contract.md +3 -3
  237. package/skills/peaks-solo/references/workflow-gates-and-types.md +34 -34
  238. package/skills/peaks-solo-resume/SKILL.md +2 -2
  239. package/skills/peaks-solo-status/SKILL.md +4 -4
  240. package/skills/peaks-solo-test/SKILL.md +4 -4
  241. package/skills/peaks-sop/SKILL.md +5 -5
  242. package/skills/peaks-txt/SKILL.md +17 -17
  243. package/skills/peaks-ui/SKILL.md +17 -17
  244. package/skills/peaks-ui/references/workflow.md +1 -1
@@ -160,7 +160,7 @@ verdict=return-to-rd → RD 修 (new slice 内部走 micro-cycle)
160
160
 
161
161
  # Mandatory RD QA repair loop (AUTO-PROCEED)
162
162
 
163
- > Body of `## Peaks-Cli Mandatory RD QA repair loop`.
163
+ > Body of `## Peaks-Loop Mandatory RD QA repair loop`.
164
164
 
165
165
  > **CLI gate enforcement**: `peaks request transition` now refuses to move RD/QA to gated states when required artifacts are missing. The required files depend on `--type` chosen at `peaks request init` (default `feature`):
166
166
  >
@@ -171,13 +171,13 @@ verdict=return-to-rd → RD 修 (new slice 内部走 micro-cycle)
171
171
  >
172
172
  > When PRD lands, classify the request type before running `peaks request init` for every role — pass `--type <type>` so the artifact records it and downstream transitions enforce the right gates. Misclassifying a feature as `docs` to skip gates is a workflow violation. If a transition fails with `code: PREREQUISITES_MISSING`, the response lists every missing path — produce them, then re-transition. For one-off exceptions, the escape hatch `--allow-incomplete --reason "<text>"` records the bypass in the artifact transition note.
173
173
 
174
- After `peaks-rd` finishes any implementation, repair, or code-output slice, Peaks-Cli Solo MUST automatically route the result to `peaks-qa` without waiting for user confirmation. This is not optional in full-auto mode. Solo must not declare the workflow complete, emit a TXT handoff, or stop at RD completion.
174
+ After `peaks-rd` finishes any implementation, repair, or code-output slice, Peaks-Loop Solo MUST automatically route the result to `peaks-qa` without waiting for user confirmation. This is not optional in full-auto mode. Solo must not declare the workflow complete, emit a TXT handoff, or stop at RD completion.
175
175
 
176
176
  **How Solo invokes another role (mechanism, not metaphor):**
177
177
 
178
178
  Solo is itself a skill running in the current session. There are **two distinct mechanisms** in this skill, and they MUST NOT be confused:
179
179
 
180
- 1. **Swarm fan-out (planning side, after PRD confirmed)** — uses `peaks sub-agent dispatch <role>` to launch real concurrent sub-agents. The CLI returns a per-IDE tool-call descriptor that the LLM executes in its environment. See "Peaks-Cli Swarm parallel phase" above for the full contract. Sub-agents do NOT call Skill(...) back into the role; they execute the role's instructions inline from the prompt.
180
+ 1. **Swarm fan-out (planning side, after PRD confirmed)** — uses `peaks sub-agent dispatch <role>` to launch real concurrent sub-agents. The CLI returns a per-IDE tool-call descriptor that the LLM executes in its environment. See "Peaks-Loop Swarm parallel phase" above for the full contract. Sub-agents do NOT call Skill(...) back into the role; they execute the role's instructions inline from the prompt.
181
181
  2. **Sequential handoff (execution side, RD↔QA repair loop)** — Solo is the only loop, and after RD or QA finishes (whether as a sub-agent or directly), Solo drives the next step from the orchestrator seat. Do NOT use the `Skill` tool to "reactivate" peaks-rd or peaks-qa in the main loop; doing so is the v1.x anti-pattern that masqueraded as "calling the role" but actually just re-prompted the same session. From v1.3 onward, the main loop drives roles via the CLI gate (`peaks request transition`) and reads back artefacts (`peaks request show ... --json`); the actual RD/QA work is either done inline by Solo (when Solo has just been re-invoked by the user) or by a Task sub-agent (in swarm mode).
182
182
 
183
183
  After RD completes (whether inline or sub-agent), Solo does not stop — it must advance to QA. There is no "RD done, ask the user" state in full-auto mode. The only valid stops are: (a) QA verdict=pass, (b) repair cap hit, (c) explicit user cancel.
@@ -190,7 +190,7 @@ After RD completes (whether inline or sub-agent), Solo does not stop — it must
190
190
  peaks skill presence:set peaks-solo --project <repo> --mode <mode> --gate <current-gate>
191
191
  ```
192
192
 
193
- This keeps the CLAUDE.md status header accurate (`Peaks-Cli Skill: peaks-solo`) instead of showing a stale role name. Use the current mode and gate values; the gate may have advanced since startup. Skipping this step causes the header to display the last-known gate permanently.
193
+ This keeps the CLAUDE.md status header accurate (`Peaks-Loop Skill: peaks-solo`) instead of showing a stale role name. Use the current mode and gate values; the gate may have advanced since startup. Skipping this step causes the header to display the last-known gate permanently.
194
194
 
195
195
  **Full-auto auto-proceed rule**: In the `full-auto` profile, when RD transitions to `qa-handoff`, Solo immediately drives QA — by launching a `peaks sub-agent dispatch qa` sub-agent carrying the `peaks-qa` body (swarm path), then executing the returned toolCall, or by running QA inline in the main loop (assisted/strict path). Do not pause, do not ask the user, do not summarize RD results as if they were final. The only valid reason to skip QA is when `--type` is `docs` or `chore` (no acceptance surface).
196
196
 
@@ -1,11 +1,11 @@
1
1
  # Step 1 — Mode selection
2
2
 
3
- > Body of `### Peaks-Cli Step 1`. After Step 0 has anchored the workspace and presence, when the user invokes Peaks-Cli Solo without explicitly naming an execution profile, use `AskUserQuestion` to pick the profile. Present the recommended full-auto path as the first/default option with a practical description for each:
3
+ > Body of `### Peaks-Loop Step 1`. After Step 0 has anchored the workspace and presence, when the user invokes Peaks-Loop Solo without explicitly naming an execution profile, use `AskUserQuestion` to pick the profile. Present the recommended full-auto path as the first/default option with a practical description for each:
4
4
 
5
- 1. **Full auto (Recommended)** — Peaks-Cli handles planning, role coordination, validation, and compact handoff end-to-end while preserving required confirmation gates for risky or shared-state actions.
6
- 2. **Assisted** — Peaks-Cli proposes plans, artifacts, and checks, then pauses for user decisions at major workflow boundaries.
7
- 3. **Swarm** — Peaks-Cli maximizes safe parallel role/worker execution for larger RD or QA workloads while keeping reducer validation and artifact boundaries explicit.
8
- 4. **Strict** — Peaks-Cli uses the most conservative gates: explicit confirmations, strict slice specs, coverage evidence, QA acceptance, and commit boundaries before continuing.
5
+ 1. **Full auto (Recommended)** — Peaks-Loop handles planning, role coordination, validation, and compact handoff end-to-end while preserving required confirmation gates for risky or shared-state actions.
6
+ 2. **Assisted** — Peaks-Loop proposes plans, artifacts, and checks, then pauses for user decisions at major workflow boundaries.
7
+ 3. **Swarm** — Peaks-Loop maximizes safe parallel role/worker execution for larger RD or QA workloads while keeping reducer validation and artifact boundaries explicit.
8
+ 4. **Strict** — Peaks-Loop uses the most conservative gates: explicit confirmations, strict slice specs, coverage evidence, QA acceptance, and commit boundaries before continuing.
9
9
 
10
10
  Map the user's selection to the `--mode` flag value (used by `peaks skill presence:set`; `presence:set --mode` accepts any string, so the name matches the user-facing label rather than overloading "solo" which is also the skill name):
11
11
 
@@ -31,7 +31,7 @@ For `peaks-solo refactor` runs against a repository with `openspec/`:
31
31
  3. QA exit gate — re-run `peaks openspec validate <id>` after implementation; record the result in the QA validation report.
32
32
  4. Archive — `peaks openspec archive <id> --apply` only after QA passes the exit gate and SC closes the final commit.
33
33
 
34
- If the consuming LLM needs an MCP server for docs lookup or research (e.g. Context7), it checks its own tool list for `mcp__<server>__*` and tells the user the install command if absent. peaks-cli is no longer in the install path; the LLM is the executor, the IDE is the dispatcher.
34
+ If the consuming LLM needs an MCP server for docs lookup or research (e.g. Context7), it checks its own tool list for `mcp__<server>__*` and tells the user the install command if absent. peaks-loop is no longer in the install path; the LLM is the executor, the IDE is the dispatcher.
35
35
 
36
36
  ## Boundary
37
37
 
@@ -41,7 +41,7 @@ Solo must not write `openspec/changes/**` or `~/.claude/settings.json` directly.
41
41
 
42
42
  # Step 0.5 — OpenSpec first-run opt-in (conditional)
43
43
 
44
- > Body of `### Peaks-Cli Step 0.5`. After the workspace is anchored, before project scan, Solo checks whether
44
+ > Body of `### Peaks-Loop Step 0.5`. After the workspace is anchored, before project scan, Solo checks whether
45
45
  the project already has an `openspec/` directory. The lifecycle
46
46
  (`render → validate → show → to-rd → validate → archive`) only applies
47
47
  when `openspec/` exists; without it, RD/QA/SC silently skip the
@@ -29,7 +29,7 @@ peaks playwright stop [--terminal <id>] [--project <path>] [--json]
29
29
 
30
30
  `peaks playwright start` tries ports in the order `8931, 8932, 8933, ..., 8949`. The first port that is **not** bound by anything (probe uses `net.createServer().listen()`; an `EADDRINUSE` is a busy port) is used. If 8931..8949 are all busy, the command exits with `PORT_EXHAUSTED`.
31
31
 
32
- The CLI does NOT bundle the playwright-mcp binary. It shells out to `npx playwright-mcp@latest --port=<n> --browser=<b> --user-data-dir=<path>`. peaks-cli is the lifecycle orchestrator, not the install medium.
32
+ The CLI does NOT bundle the playwright-mcp binary. It shells out to `npx playwright-mcp@latest --port=<n> --browser=<b> --user-data-dir=<path>`. peaks-loop is the lifecycle orchestrator, not the install medium.
33
33
 
34
34
  ## Session file layout
35
35
 
@@ -1,6 +1,6 @@
1
1
  # Step 2.3 — Load project memory
2
2
 
3
- > Body of `### Peaks-Cli Step 2.3`. Before planning any work, read the project's persistent memory — durable memories that survive across sessions:
3
+ > Body of `### Peaks-Loop Step 2.3`. Before planning any work, read the project's persistent memory — durable memories that survive across sessions:
4
4
 
5
5
  ```bash
6
6
  peaks project memories --project <repo> --json
@@ -1,4 +1,4 @@
1
- # Peaks-Cli Pre-RD project scan checklist
1
+ # Peaks-Loop Pre-RD project scan checklist
2
2
 
3
3
  > Extracted from `skills/peaks-solo/SKILL.md` on 2026-06-09 (slice 019 — slim skill files to references) to keep SKILL.md under the 800-line cap from `common/coding-style.md`. The content below is the verbatim Pre-RD project scan checklist that was previously inline; nothing was paraphrased, just relocated.
4
4
 
@@ -1,6 +1,6 @@
1
1
  # Quality-gate commands (CLI cheat sheet)
2
2
 
3
- > Body of `## Peaks-Cli Quality-gate commands`. These commands harden the workflow against silent skips. Use them in the runbook at the points indicated; they all support `--json` and `--session-id`.
3
+ > Body of `## Peaks-Loop Quality-gate commands`. These commands harden the workflow against silent skips. Use them in the runbook at the points indicated; they all support `--json` and `--session-id`.
4
4
 
5
5
  | Command | Purpose | When to run | Non-zero exit when |
6
6
  |---|---|---|---|
@@ -1,6 +1,6 @@
1
1
  # Step 0.7 — Detect unfinished work and offer resume
2
2
 
3
- > Body of `### Peaks-Cli Step 0.7`. After Step 0 has anchored the workspace and presence, before Step 1 mode selection, run the resume-detection probe. If the current session has in-flight slice artifacts, the user is most likely "continuing" — surface resume options instead of starting a fresh PRD.
3
+ > Body of `### Peaks-Loop Step 0.7`. After Step 0 has anchored the workspace and presence, before Step 1 mode selection, run the resume-detection probe. If the current session has in-flight slice artifacts, the user is most likely "continuing" — surface resume options instead of starting a fresh PRD.
4
4
 
5
5
  **Why this is a separate step** (per `feedback_peaks_solo_natural_language_primary` — a high-frequency request shape, see also the user's "继续完成刚才为完成的" pattern from session `2026-06-04-session-b60252`): the LLM was previously re-reading 3-5 artifact files to determine workflow state, wasting 3-5k tokens per resume request. This step replaces that work with a single deterministic read.
6
6
 
@@ -1,10 +1,10 @@
1
- # Peaks-Cli Default Runbook (orchestrator, full-auto profile)
1
+ # Peaks-Loop Default Runbook (orchestrator, full-auto profile)
2
2
 
3
3
  > **Maintenance**: The numbered workflow list in `skills/peaks-solo/SKILL.md` (steps 0-11) is the canonical phase sequence. This runbook is the executable CLI transcription. When updating, keep both in lockstep — a change to one must be reflected in the other.
4
4
  >
5
5
  > **Why this is a reference, not inline**: the runbook is a stable, copy-pasteable shell (~150 lines of bash) that does not change between skill runs. Inlining it bloats the orchestrator skill body past the 800-line cap (per `common/coding-style.md`). Extracting it here keeps SKILL.md focused on flow / decisions / contracts, while the runbook stays as the canonical place for the CLI sequence.
6
6
  >
7
- > **How peaks-cli tooling reads this file**:
7
+ > **How peaks-loop tooling reads this file**:
8
8
  > - `peaks skill runbook peaks-solo` (CLI) reads the `## Default runbook` section in either SKILL.md or `references/runbook.md` (whichever has the bash code).
9
9
  > - The test in `tests/unit/skill-default-runbook.test.ts` looks for `## Default runbook` in SKILL.md first, then falls back to `references/runbook.md` here.
10
10
 
@@ -19,21 +19,21 @@ peaks sub-agent dispatch <role> --prompt "<body>" --request-id <rid> --batch-id
19
19
  ```
20
20
 
21
21
  ```bash
22
- # 0. Peaks-Cli Snapshot + 0.5 Peaks-Cli Workspace + 0.6 Peaks-Cli Project scan + 0.7 Peaks-Cli Existing-system extraction
22
+ # 0. Peaks-Loop Snapshot + 0.5 Peaks-Loop Workspace + 0.6 Peaks-Loop Project scan + 0.7 Peaks-Loop Existing-system extraction
23
23
  peaks doctor --json
24
24
  peaks project dashboard --project <repo> --json
25
25
  peaks skill runbook peaks-solo --json
26
26
  peaks workspace init --project <repo> --json
27
27
  peaks workspace reconcile --project <repo> --json
28
28
  peaks scan archetype --project <repo> --json
29
- # → copy archetype, frontendOnly, signals into .peaks/_runtime/<session-id>/rd/project-scan.md (Peaks-Cli Gate A)
29
+ # → copy archetype, frontendOnly, signals into .peaks/_runtime/<session-id>/rd/project-scan.md (Peaks-Loop Gate A)
30
30
  # → copy libraries[] into .peaks/_runtime/<session-id>/rd/project-scan.md under `## Library versions`
31
31
  peaks scan libraries --project <repo> --json
32
32
  # → if archetype != greenfield AND archetype != unknown:
33
33
  peaks scan existing-system --project <repo> --json
34
- # → copy tokens, sources, conventions, inconsistencies into .peaks/_runtime/<session-id>/system/existing-system.md (Peaks-Cli Gate A.5)
34
+ # → copy tokens, sources, conventions, inconsistencies into .peaks/_runtime/<session-id>/system/existing-system.md (Peaks-Loop Gate A.5)
35
35
 
36
- # 1. Peaks-Cli Standards preflight + apply
36
+ # 1. Peaks-Loop Standards preflight + apply
37
37
  # Run dry-run first to inspect deltas, then APPLY. In full-auto and swarm modes,
38
38
  # --apply is the default — Standards files (CLAUDE.md, .claude/rules/**) live INSIDE
39
39
  # the target project and are required for downstream skill preflight, so producing
@@ -43,9 +43,9 @@ peaks standards init --project <repo> --dry-run --json
43
43
  # or: peaks standards update --project <repo> --dry-run --json
44
44
  peaks standards init --project <repo> --apply --json
45
45
  # or: peaks standards update --project <repo> --apply --json
46
- # After apply, verify the files actually exist on disk (see Peaks-Cli Gate G).
46
+ # After apply, verify the files actually exist on disk (see Peaks-Loop Gate G).
47
47
 
48
- # 2. Peaks-Cli PRD (Assisted/Strict: [CONFIRM] before confirmed-by-user)
48
+ # 2. Peaks-Loop PRD (Assisted/Strict: [CONFIRM] before confirmed-by-user)
49
49
  # Classify the request type from the PRD: feature | bugfix | refactor | docs | config | chore
50
50
  # This drives RD/QA gate strictness — see "Mandatory RD QA repair loop" for the matrix.
51
51
  peaks request init --role prd --id <rid> --project <repo> --apply --type <type> --json
@@ -59,7 +59,7 @@ peaks request lint <rid> --role prd --project <repo> --json
59
59
  peaks request transition <rid> --role prd --state confirmed-by-user --project <repo> --json
60
60
  peaks request transition <rid> --role prd --state handed-off --project <repo> --json
61
61
 
62
- # 3. Peaks-Cli Default sub-agent fan-out (slice 5 contract)
62
+ # 3. Peaks-Loop Default sub-agent fan-out (slice 5 contract)
63
63
  # Solo computes the swarm plan from --type + frontendOnly + frontend-keyword scan,
64
64
  # writes it to .peaks/_runtime/<sid>/sc/swarm-plan.json, then writes the slice
65
65
  # DAG to .peaks/_runtime/<sid>/sc/slice-dag.json and launches ONE
@@ -68,7 +68,7 @@ peaks request transition <rid> --role prd --state handed-off --project <repo> --
68
68
  # same topological level — that is the canonical "fan-out" signal. The
69
69
  # orchestrator emits N parallel `buildToolCall` descriptors in ONE response;
70
70
  # the LLM-side runner executes them concurrently.
71
- # See "Peaks-Cli Default sub-agent fan-out" above for the default rule and
71
+ # See "Peaks-Loop Default sub-agent fan-out" above for the default rule and
72
72
  # exceptions; the gate logic is single-sourced in references/swarm-dispatch-contract.md.
73
73
  # Hard rule: do NOT call Skill(skill="peaks-rd" | "peaks-qa" | "peaks-ui") from
74
74
  # the Swarm phase — that's the v1.x anti-pattern. And do NOT issue N sequential
@@ -107,23 +107,23 @@ ls .peaks/_runtime/<sid>/qa/test-cases/<rid>.md # QA test-cases (
107
107
  # ui (only when in plan):
108
108
  ls .peaks/_runtime/<sid>/ui/design-draft.md 2>&1 # non-blocking (Gate B info)
109
109
  # Apply the degradation rules in the main SKILL.md if any artefact is missing.
110
- # → Peaks-Cli Gate B convergence check. Assisted/Strict: [CONFIRM]
110
+ # → Peaks-Loop Gate B convergence check. Assisted/Strict: [CONFIRM]
111
111
 
112
- # 4. Peaks-Cli RD planning artifact (the file required by the prerequisite gate)
112
+ # 4. Peaks-Loop RD planning artifact (the file required by the prerequisite gate)
113
113
  # feature / refactor → write .peaks/_runtime/<id>/rd/tech-doc.md
114
114
  # bugfix → write .peaks/_runtime/<id>/rd/bug-analysis.md
115
115
  # config → no planning artifact required at this state
116
116
  # docs / chore → no planning artifact required
117
117
  peaks request transition <rid> --role rd --state implemented --project <repo> --json
118
118
 
119
- # 5. Peaks-Cli Code review + security review BEFORE qa-handoff transition.
119
+ # 5. Peaks-Loop Code review + security review BEFORE qa-handoff transition.
120
120
  # Produce the evidence files the CLI gate enforces:
121
121
  # - .peaks/_runtime/<id>/rd/code-review.md (CRITICAL/HIGH findings + fixes; required for feature/bugfix/refactor)
122
122
  # - .peaks/_runtime/<id>/rd/security-review.md (required for feature/bugfix/refactor/config)
123
123
  # Then transition. If --type is docs/chore the gate is empty and the transition is unguarded.
124
124
  peaks request transition <rid> --role rd --state qa-handoff --project <repo> --json
125
125
 
126
- # 6. Peaks-Cli QA validation (AUTO-PROCEED from RD in full-auto)
126
+ # 6. Peaks-Loop QA validation (AUTO-PROCEED from RD in full-auto)
127
127
  # Before each QA transition, produce the evidence files the CLI gate enforces:
128
128
  # Before qa:running → .peaks/_runtime/<id>/qa/test-cases/<rid>.md
129
129
  peaks request transition <rid> --role qa --state running --project <repo> --json
@@ -131,9 +131,9 @@ peaks request transition <rid> --role qa --state running --project <repo> --json
131
131
  # + .peaks/_runtime/<id>/qa/security-findings.md
132
132
  # + .peaks/_runtime/<id>/qa/performance-findings.md (feature/refactor only)
133
133
  peaks request transition <rid> --role qa --state verdict-issued --project <repo> --json
134
- # → Peaks-Cli Gate D check. Assisted/Strict: [CONFIRM]
134
+ # → Peaks-Loop Gate D check. Assisted/Strict: [CONFIRM]
135
135
 
136
- # 7. Peaks-Cli RD↔QA repair loop — if verdict is return-to-rd, re-run 4 through 6 until QA passes or blocked TXT.
136
+ # 7. Peaks-Loop RD↔QA repair loop — if verdict is return-to-rd, re-run 4 through 6 until QA passes or blocked TXT.
137
137
  # Before invoking peaks-rd again, check the cycle count so you don't blow past the cap silently:
138
138
  peaks request repair-status <rid> --project <repo> --json
139
139
  # → atCap=true → STOP and emit a blocked TXT handoff. Do NOT enter another cycle.
@@ -143,18 +143,18 @@ peaks request repair-status <rid> --project <repo> --json
143
143
  peaks scan request-type-sanity --project <repo> --type <type> --json
144
144
  # → consistent=false → RD scope-creeped during repair; review before re-handoff.
145
145
 
146
- # 8. Peaks-Cli SC phase
146
+ # 8. Peaks-Loop SC phase
147
147
  peaks sc impact --change-id <cid> --module <module> --file <path> --json
148
148
  peaks sc retention --slice-id <rid> --prd <prd> --rd <rd> --qa <qa> --json
149
149
  peaks sc validate --slice-id <rid> --json
150
150
  peaks sc boundary --slice-id <rid> --artifact <artifact> --code <file> --json
151
151
 
152
- # 9. Peaks-Cli OpenSpec archive (exit gate; only after QA pass, when openspec/ exists)
152
+ # 9. Peaks-Loop OpenSpec archive (exit gate; only after QA pass, when openspec/ exists)
153
153
  peaks openspec validate <cid> --project <repo> --json
154
154
  peaks openspec archive <cid> --project <repo> --apply --json
155
155
  peaks workspace reconcile --project <repo> --apply --older-than 7
156
156
 
157
- # 10. Peaks-Cli TXT handoff — invoke peaks-txt which embeds memory markers and extracts
157
+ # 10. Peaks-Loop TXT handoff — invoke peaks-txt which embeds memory markers and extracts
158
158
  # peaks-txt writes the handoff capsule to .peaks/_runtime/<id>/txt/handoff.md. Inside the
159
159
  # capsule body, peaks-txt embeds <!-- peaks-memory:start --> blocks for every
160
160
  # stable project fact surfaced this session.
@@ -180,7 +180,7 @@ peaks memory extract --project <repo> --artifact .peaks/_runtime/<id>/txt/handof
180
180
  # --apply is REQUIRED to write .peaks/memory/; without it the command only
181
181
  # previews. The extract regenerates index.json in the same call.
182
182
 
183
- # 11. Peaks-Cli Final snapshot
183
+ # 11. Peaks-Loop Final snapshot
184
184
  peaks project dashboard --project <repo> --json
185
185
  peaks skill doctor --json
186
186
  ```
@@ -1,6 +1,6 @@
1
1
  # Step 2 + 2.5 — Skill presence and session title
2
2
 
3
- > Combined body for `### Peaks-Cli Step 2: Re-set skill presence with the chosen mode` and `### Peaks-Cli Step 2.5: Set session title`.
3
+ > Combined body for `### Peaks-Loop Step 2: Re-set skill presence with the chosen mode` and `### Peaks-Loop Step 2.5: Set session title`.
4
4
 
5
5
  ## Step 2 — Re-set skill presence
6
6
 
@@ -16,7 +16,7 @@ On the first presence:set in a project, ensure the out-of-band status bar is ins
16
16
  peaks statusline install --project <repo> # idempotent; skips if already installed
17
17
  ```
18
18
 
19
- Then display the compact status header: `Peaks-Cli Skill: peaks-solo | Peaks-Cli Gate: startup | Next: <one short action>`. Display this header on EVERY turn while the skill is active.
19
+ Then display the compact status header: `Peaks-Loop Skill: peaks-solo | Peaks-Loop Gate: startup | Next: <one short action>`. Display this header on EVERY turn while the skill is active.
20
20
 
21
21
  Update with `peaks skill presence:set peaks-solo --project <repo> --mode <mode> --gate <gate>` when gates change. The presence file persists across the full workflow lifecycle — do NOT clear it at workflow end.
22
22
 
@@ -1,11 +1,11 @@
1
1
  # Project standards preflight
2
2
 
3
- > Body of `## Peaks-Cli Project standards preflight`. Before orchestrating an end-to-end code repository workflow, gather the project standards preflight status from RD and QA by calling the Peaks-Cli CLI:
3
+ > Body of `## Peaks-Loop Project standards preflight`. Before orchestrating an end-to-end code repository workflow, gather the project standards preflight status from RD and QA by calling the Peaks-Loop CLI:
4
4
 
5
5
  - `peaks standards init --project <path> --dry-run`
6
6
  - `peaks standards update --project <path> --dry-run`
7
7
 
8
- Use `standards init` for first-time creation and `standards update` for existing `CLAUDE.md` append/review behavior. In `full-auto` and `swarm` profiles, `--apply` runs automatically after `--dry-run` succeeds — these files live inside the target project, are required for downstream skill preflight, and producing them is part of finishing the workflow (Peaks-Cli Gate G enforces this). `assisted` and `strict` profiles pause for explicit user confirmation between dry-run and apply.
8
+ Use `standards init` for first-time creation and `standards update` for existing `CLAUDE.md` append/review behavior. In `full-auto` and `swarm` profiles, `--apply` runs automatically after `--dry-run` succeeds — these files live inside the target project, are required for downstream skill preflight, and producing them is part of finishing the workflow (Peaks-Loop Gate G enforces this). `assisted` and `strict` profiles pause for explicit user confirmation between dry-run and apply.
9
9
 
10
10
  **CRITICAL — Standards must reflect the project scan.** When generating or updating `CLAUDE.md`, the content must reference concrete findings from `.peaks/_runtime/<sessionId>/rd/project-scan.md`: the detected component library (e.g. "This project uses antd 5.x"), CSS solution (e.g. "Uses Less via Umi"), build tool, state management, and routing. Never emit a generic template that says "read .claude/rules/..." without naming the actual project stack. If the project-scan has not been run yet, run it before standards init/update.
11
11
 
@@ -1,10 +1,10 @@
1
1
  # Step 0.55 — 1.x → 2.0 detection reference
2
2
 
3
- > Body of `### Peaks-Cli Step 0.55`. Slice: 2026-06-12-solo-step-0-55-1x-detection.
3
+ > Body of `### Peaks-Loop Step 0.55`. Slice: 2026-06-12-solo-step-0-55-1x-detection.
4
4
 
5
5
  ## Why this step exists
6
6
 
7
- The peaks-cli 1.x → 2.0 closeout ships:
7
+ The peaks-loop 1.x → 2.0 closeout ships:
8
8
 
9
9
  1. A postinstall that auto-detects 1.x state and dispatches the upgrade (slice 1, commit `b6e34e6`).
10
10
  2. A standards-migrate path that thins `.claude/rules/**/*.md` and scaffolds `.peaks/standards/` (slice 2, commit `33dd392`).
@@ -68,7 +68,7 @@ The decision is persisted via `peaks preferences set --project <root> --key auto
68
68
  ## What is NOT in this step
69
69
 
70
70
  - The auto-upgrade execution itself: the umbrella is invoked via the AskUserQuestion's recommended option. The umbrella's behavior (6 sub-commands + write-upgrade-record) is documented in the umbrella's own help text.
71
- - The postinstall auto-dispatch: that's `scripts/install-skills.mjs:autoUpgrade1xProjectIfPresent`, which fires fire-and-forget on `npm i -g peaks-cli@2.0`. Step 0.55 is the user-invoked path.
71
+ - The postinstall auto-dispatch: that's `scripts/install-skills.mjs:autoUpgrade1xProjectIfPresent`, which fires fire-and-forget on `npm i -g peaks-loop@2.0`. Step 0.55 is the user-invoked path.
72
72
  - Re-authoring the 1.x detector heuristics: the implementation is a 1:1 mirror of the canonical `.mjs` version. Drift is prevented by the parity test.
73
73
 
74
74
  ## How this integrates with the rest of the workflow
@@ -25,7 +25,7 @@ the skills compose. For sub-agent dispatch the relationship is:
25
25
  | Dispatcher 抽象 (per-IDE) | `src/services/dispatch/sub-agent-dispatcher.ts` | Encapsulates the IDE-private tool name (claude-code: `Task`, trae: UNVERIFIED placeholder) and arg shape | CLI (called by the CLI) |
26
26
 
27
27
  This is the **inverse** of the prior shape: SKILL.md used to hardcode
28
- `Task(subagent_type="general-purpose", ...)`, which made peaks-cli
28
+ `Task(subagent_type="general-purpose", ...)`, which made peaks-loop
29
29
  depend on Claude Code's specific tool name. Adding a new IDE meant
30
30
  editing every SKILL.md that mentioned sub-agents. With the new shape,
31
31
  the only per-IDE thing in the dispatch chain is the dispatcher — SKILL.md
@@ -178,7 +178,7 @@ to keep the user informed during the wait.
178
178
 
179
179
  **Slice #016 retirement (G3 prompt template — MCP subsystem removed)**:
180
180
  The MCP-decouple paragraph from slice #007-007 no longer applies.
181
- peaks-cli no longer manages MCP install or invocation. Sub-agents
181
+ peaks-loop no longer manages MCP install or invocation. Sub-agents
182
182
  check their own tool list for `mcp__<server>__*` entries and invoke
183
183
  the tool by name directly. The only prompt-template addition that
184
184
  remains is the tool-list self-check:
@@ -304,7 +304,7 @@ The role's required artefact paths (also see peaks-ui/rd/qa SKILL.md and `refere
304
304
  | `rd-planning` | `.peaks/_runtime/<sessionId>/rd/tech-doc.md` (feature/refactor) or `.peaks/_runtime/<sessionId>/rd/bug-analysis.md` (bugfix) | PRD body, project-scan, existing-system, codegraph |
305
305
  | `qa-test-cases` | `.peaks/_runtime/<sessionId>/qa/test-cases/<rid>.md` | PRD body, RD planning artefact, project-scan, codegraph |
306
306
 
307
- **Solo launches all sub-agents in the swarm plan in a single message (multiple `peaks sub-agent dispatch` calls in parallel, each followed by execution of the returned toolCall)** — this is what gives real concurrency. Do not sequentialize them. The CLI returns N toolCall descriptors; the LLM fires all N in the same message; the IDE dispatches them concurrently; Solo then waits for all to return, runs `ls` checks against the paths above (Peaks-Cli Gate B), and only then advances to RD implementation.
307
+ **Solo launches all sub-agents in the swarm plan in a single message (multiple `peaks sub-agent dispatch` calls in parallel, each followed by execution of the returned toolCall)** — this is what gives real concurrency. Do not sequentialize them. The CLI returns N toolCall descriptors; the LLM fires all N in the same message; the IDE dispatches them concurrently; Solo then waits for all to return, runs `ls` checks against the paths above (Peaks-Loop Gate B), and only then advances to RD implementation.
308
308
 
309
309
  **Hard prohibitions on sub-agents** (also passed in each dispatch prompt):
310
310
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  > Reference for `peaks-solo` Swarm phase and the role sub-agents (`peaks-ui` / `peaks-rd` planning / `peaks-qa` test-cases). Defines the **mechanism** of fan-out: how Solo launches sub-agents, what the sub-agent prompt must contain, what the sub-agent must return, and how Solo reduces the result.
4
4
 
5
- ## Peaks-Cli Swarm parallel phase (sub-agent fan-out, default)
5
+ ## Peaks-Loop Swarm parallel phase (sub-agent fan-out, default)
6
6
 
7
7
  > **Slice 5 (2026-06-23) + slice 2026-06-23-audit-4th #F3:** the
8
8
  > previous "conditional swarm" framing is replaced by the **default
9
- > fan-out rule** in `skills/peaks-solo/SKILL.md` §"Peaks-Cli Default
9
+ > fan-out rule** in `skills/peaks-solo/SKILL.md` §"Peaks-Loop Default
10
10
  > sub-agent fan-out". When the slice DAG has ≥ 2 leaves at the same
11
11
  > topological level, dispatch goes through
12
12
  > `peaks sub-agent dispatch --from-dag` (NOT one-at-a-time). The
@@ -158,7 +158,7 @@ After all sub-agent dispatch calls return and the LLM has invoked the toolCalls,
158
158
 
159
159
  ## 5. Presence restoration (single-shot)
160
160
 
161
- Sub-agents are explicitly forbidden from calling `peaks skill presence:set`. That means `.peaks/.active-skill.json` does not move during the fan-out. Solo sets it to `gate=swarm-fan-out` before fan-out and to `gate=swarm-converged` once after all Tasks return. The status header (the `Peaks-Cli Skill: peaks-solo | Peaks-Cli Gate: <gate>` line) therefore reads consistently across the fan-out window.
161
+ Sub-agents are explicitly forbidden from calling `peaks skill presence:set`. That means `.peaks/.active-skill.json` does not move during the fan-out. Solo sets it to `gate=swarm-fan-out` before fan-out and to `gate=swarm-converged` once after all Tasks return. The status header (the `Peaks-Loop Skill: peaks-solo | Peaks-Loop Gate: <gate>` line) therefore reads consistently across the fan-out window.
162
162
 
163
163
  If a sub-agent is misbehaving and writes to `.peaks/.active-skill.json` anyway, the next Solo presence-set (after fan-out) overwrites it — the bug self-heals on the next gate advance, but the swarm-phase display may be off. The hard prohibition is there to prevent this; Solo should still treat the file as a single-writer resource.
164
164
 
@@ -1,14 +1,14 @@
1
- # Peaks-Cli Workflow Order + Request Type Classification + Transition Verification Gates
1
+ # Peaks-Loop Workflow Order + Request Type Classification + Transition Verification Gates
2
2
 
3
3
  > **Maintenance**: This reference holds the canonical contract for (a) how Solo sequences the 11 workflow steps, (b) which `--type` to pass to `peaks request init` for which slice shape, and (c) the executable `ls` / `grep` gate commands that physically block progression. SKILL.md keeps the narrative ("what peaks-solo does"); this file keeps the contract.
4
4
  >
5
5
  > **Why extracted from SKILL.md**: this content is 165 lines of mostly-tabular + bash-block contract — reference data, not orchestration prose. Inlining it bloats SKILL.md past the 800-line cap (per `common/coding-style.md`). The numbers, gate command shapes, and type-classification rules change rarely; the SKILL.md prose around them (orchestration flow, repair-loop intent, swarm fan-out shape) changes more often.
6
6
  >
7
- > **How peaks-cli tooling reads this file**:
7
+ > **How peaks-loop tooling reads this file**:
8
8
  > - `peaks skill runbook peaks-solo` (CLI) and the in-line LLM reading the SKILL.md should reference this file when the gate-machine or type-classification contract is in play.
9
9
  > - The test `tests/unit/skill-default-runbook.test.ts` does NOT check this file (it only checks the runbook). Future tests can add a similar fallback for the gates-and-types contract.
10
10
 
11
- ## Peaks-Cli Request type classification (MANDATORY before `peaks request init`)
11
+ ## Peaks-Loop Request type classification (MANDATORY before `peaks request init`)
12
12
 
13
13
  Before initializing any role artifact, classify the request into exactly one of six types. The choice drives RD/QA gate strictness (see "Mandatory RD QA repair loop"). Pick the **primary intent** — if a request could fit two types, the higher-strictness one wins.
14
14
 
@@ -25,34 +25,34 @@ Before initializing any role artifact, classify the request into exactly one of
25
25
 
26
26
  For ambiguous cases (e.g. "improve login flow"), ask the user to clarify before initializing. The cost of one `AskUserQuestion` round is much lower than running the wrong gate matrix for the whole workflow.
27
27
 
28
- When Peaks-Cli Solo coordinates development in a code repository, keep this order explicit:
28
+ When Peaks-Loop Solo coordinates development in a code repository, keep this order explicit:
29
29
 
30
- 0. **Peaks-Cli Snapshot** — `peaks doctor` + `peaks project dashboard` to capture baseline state before anything else;
31
- 0.5. **Peaks-Cli Workspace initialization** — `.peaks/_runtime/<session-id>/` created, directory structure verified;
32
- 0.6. **Peaks-Cli Project scan** — archetype, component library, CSS framework, build tool, state management, routing, data fetching, legacy signals detected and recorded to `.peaks/_runtime/<session-id>/rd/project-scan.md`;
33
- 0.7. **Peaks-Cli Existing-system extraction** (MANDATORY when archetype ∈ {legacy-frontend, legacy-fullstack, frontend-monorepo}; SKIP for greenfield) — extract visual tokens and code conventions from the live codebase to `.peaks/_runtime/<session-id>/system/existing-system.md`. The path lives under `system/` (not `ui/`) because the file also records non-UI conventions (service-layer signatures, hooks, naming) that backend-only or legacy-fullstack work consumes. See `references/existing-system-extraction.md`. UI design-draft and RD implementation MUST treat the extracted tokens and conventions as hard constraints;
34
- 1. **Peaks-Cli Standards preflight** — `peaks standards init/update --dry-run`, must reference concrete project-scan findings (never emit generic templates);
35
- 2. **Peaks-Cli PRD phase** — capture request as canonical artifact, extract scope and acceptance criteria:
30
+ 0. **Peaks-Loop Snapshot** — `peaks doctor` + `peaks project dashboard` to capture baseline state before anything else;
31
+ 0.5. **Peaks-Loop Workspace initialization** — `.peaks/_runtime/<session-id>/` created, directory structure verified;
32
+ 0.6. **Peaks-Loop Project scan** — archetype, component library, CSS framework, build tool, state management, routing, data fetching, legacy signals detected and recorded to `.peaks/_runtime/<session-id>/rd/project-scan.md`;
33
+ 0.7. **Peaks-Loop Existing-system extraction** (MANDATORY when archetype ∈ {legacy-frontend, legacy-fullstack, frontend-monorepo}; SKIP for greenfield) — extract visual tokens and code conventions from the live codebase to `.peaks/_runtime/<session-id>/system/existing-system.md`. The path lives under `system/` (not `ui/`) because the file also records non-UI conventions (service-layer signatures, hooks, naming) that backend-only or legacy-fullstack work consumes. See `references/existing-system-extraction.md`. UI design-draft and RD implementation MUST treat the extracted tokens and conventions as hard constraints;
34
+ 1. **Peaks-Loop Standards preflight** — `peaks standards init/update --dry-run`, must reference concrete project-scan findings (never emit generic templates);
35
+ 2. **Peaks-Loop PRD phase** — capture request as canonical artifact, extract scope and acceptance criteria:
36
36
  - Full-auto/Swarm: auto-transition to `confirmed-by-user` once the artifact is complete;
37
37
  - Assisted/Strict: pause with `AskUserQuestion` for explicit user confirmation before proceeding;
38
- 3. **Peaks-Cli Swarm parallel phase** — after PRD confirmed, launch UI, RD(planning), QA(test-cases) simultaneously:
38
+ 3. **Peaks-Loop Swarm parallel phase** — after PRD confirmed, launch UI, RD(planning), QA(test-cases) simultaneously:
39
39
  3a. UI design draft and visual direction (MANDATORY when request is frontend/user-visible; skipped for `--type docs|chore|config` or pure-backend requests);
40
40
  3b. RD planning artifact — `rd/tech-doc.md` for feature/refactor, `rd/bug-analysis.md` for bugfix, skipped for docs/chore/config;
41
41
  3c. QA test-case generation (skipped for docs/chore — no acceptance surface to validate);
42
- 4. **Peaks-Cli RD implementation** — consumes the type-appropriate inputs: project-scan + standards + (if UI involved) UI design-draft + RD planning artifact + QA test-cases. Includes unit tests for new/changed behavior (TDD) unless `--type` is docs/chore;
43
- 5. **Peaks-Cli Code review + security review** — CRITICAL/HIGH issues fixed before progression; marked-blocked issues only allow a blocked handoff;
44
- 6. **Peaks-Cli QA validation** (auto-proceed from RD in full-auto) — execute test cases + API checks + Playwright MCP headed browser E2E for frontend + security/perf checks + test report;
45
- 7. **Peaks-Cli RD↔QA repair loop** — if QA verdict is `return-to-rd`, loop back to step 4 (RD implementation) and re-run through QA; max 3 repair cycles, then emit blocked TXT regardless;
46
- 8. **Peaks-Cli SC phase** — change-control evidence: impact, retention, validate, boundary;
47
- 9. **Peaks-Cli OpenSpec archive** — exit gate: validate → archive only after QA verdict=pass (when `openspec/` exists);
48
- 10. **Peaks-Cli TXT handoff capsule** — mode, validated decisions, artifact paths, standards deltas, open questions, next action;
49
- 11. **Peaks-Cli Final snapshot** — `peaks project dashboard` + `peaks skill doctor` to confirm the workflow closed cleanly.
42
+ 4. **Peaks-Loop RD implementation** — consumes the type-appropriate inputs: project-scan + standards + (if UI involved) UI design-draft + RD planning artifact + QA test-cases. Includes unit tests for new/changed behavior (TDD) unless `--type` is docs/chore;
43
+ 5. **Peaks-Loop Code review + security review** — CRITICAL/HIGH issues fixed before progression; marked-blocked issues only allow a blocked handoff;
44
+ 6. **Peaks-Loop QA validation** (auto-proceed from RD in full-auto) — execute test cases + API checks + Playwright MCP headed browser E2E for frontend + security/perf checks + test report;
45
+ 7. **Peaks-Loop RD↔QA repair loop** — if QA verdict is `return-to-rd`, loop back to step 4 (RD implementation) and re-run through QA; max 3 repair cycles, then emit blocked TXT regardless;
46
+ 8. **Peaks-Loop SC phase** — change-control evidence: impact, retention, validate, boundary;
47
+ 9. **Peaks-Loop OpenSpec archive** — exit gate: validate → archive only after QA verdict=pass (when `openspec/` exists);
48
+ 10. **Peaks-Loop TXT handoff capsule** — mode, validated decisions, artifact paths, standards deltas, open questions, next action;
49
+ 11. **Peaks-Loop Final snapshot** — `peaks project dashboard` + `peaks skill doctor` to confirm the workflow closed cleanly.
50
50
 
51
- ### Peaks-Cli Transition verification gates (MANDATORY — run the command, see the output)
51
+ ### Peaks-Loop Transition verification gates (MANDATORY — run the command, see the output)
52
52
 
53
53
  You cannot declare a phase complete from memory. Each gate below is a `ls` command you **MUST run** and whose output you **MUST see** before proceeding. If any file shows "No such file", the phase is incomplete.
54
54
 
55
- **Peaks-Cli Gate A — After workspace init + project scan:**
55
+ **Peaks-Loop Gate A — After workspace init + project scan:**
56
56
  ```bash
57
57
  ls .peaks/_runtime/<sessionId>/rd/project-scan.md
58
58
  # Expected output: .peaks/_runtime/<sessionId>/rd/project-scan.md
@@ -61,7 +61,7 @@ ls .peaks/_runtime/<sessionId>/rd/project-scan.md
61
61
  # File present and complete → reuse (project-scan is a session-scoped singleton)
62
62
  ```
63
63
 
64
- **Peaks-Cli Gate A.5 — Existing-system extraction (legacy projects only):**
64
+ **Peaks-Loop Gate A.5 — Existing-system extraction (legacy projects only):**
65
65
  ```bash
66
66
  # If project-scan.md `## Archetype` is greenfield → skip this gate
67
67
  # Otherwise:
@@ -70,9 +70,9 @@ ls .peaks/_runtime/<sessionId>/system/existing-system.md
70
70
  # (see references/existing-system-extraction.md)
71
71
  ```
72
72
 
73
- **Peaks-Cli Gate B — After swarm convergence (UI + RD planning + QA test-cases):**
73
+ **Peaks-Loop Gate B — After swarm convergence (UI + RD planning + QA test-cases):**
74
74
 
75
- Peaks-Cli Gate B has two sub-checks: a HARD gate (blocks progression) and an INFORMATIONAL check (records degradation but does not block).
75
+ Peaks-Loop Gate B has two sub-checks: a HARD gate (blocks progression) and an INFORMATIONAL check (records degradation but does not block).
76
76
 
77
77
  ```bash
78
78
  # B.hard — REQUIRED before continuing to RD implementation.
@@ -98,7 +98,7 @@ ls .peaks/_runtime/<sessionId>/ui/design-draft.md 2>&1
98
98
  # "No such file" + pure backend / docs / chore / config → state skip reason in TXT, proceed.
99
99
  ```
100
100
 
101
- **Peaks-Cli Gate C — After RD implementation (before QA handoff):**
101
+ **Peaks-Loop Gate C — After RD implementation (before QA handoff):**
102
102
 
103
103
  The CLI gate (`peaks request transition --state qa-handoff`) is the authoritative check; running this `ls` first lets you produce missing files before the CLI rejects the transition.
104
104
 
@@ -125,7 +125,7 @@ ls .peaks/_runtime/<sessionId>/rd/requests/<rid>.md
125
125
  # Missing any required file → DO NOT attempt the qa-handoff transition; CLI will reject with PREREQUISITES_MISSING.
126
126
  ```
127
127
 
128
- **Peaks-Cli Gate D — After QA validation:**
128
+ **Peaks-Loop Gate D — After QA validation:**
129
129
 
130
130
  The CLI gate at `qa:verdict-issued` is the authoritative check; this `ls` lets you produce missing evidence before the CLI rejects the transition.
131
131
 
@@ -141,17 +141,17 @@ ls .peaks/_runtime/<sessionId>/qa/requests/<rid>.md
141
141
  # Missing required file → QA incomplete; do not transition to verdict-issued.
142
142
  ```
143
143
 
144
- **Peaks-Cli Gate E — Before declaring workflow complete:**
144
+ **Peaks-Loop Gate E — Before declaring workflow complete:**
145
145
  ```bash
146
146
  find .peaks/_runtime/<sessionId>/ -type f | sort
147
147
  # Verify: files from gates A-D all appear in this list.
148
148
  # Any mandatory file missing → NOT complete. Do not emit TXT.
149
- # Peaks-Cli Gate G (CLAUDE.md + .claude/rules/**) must ALSO pass before TXT is emitted.
149
+ # Peaks-Loop Gate G (CLAUDE.md + .claude/rules/**) must ALSO pass before TXT is emitted.
150
150
  ```
151
151
 
152
- **Peaks-Cli Gate F — Root pollution check (BLOCKING before completion):**
152
+ **Peaks-Loop Gate F — Root pollution check (BLOCKING before completion):**
153
153
  ```bash
154
- # Verify no Peaks-Cli intermediate artifacts leaked to project root.
154
+ # Verify no Peaks-Loop intermediate artifacts leaked to project root.
155
155
  ls feishu-doc-*.md *-snapshot.md qa-server.js 2>&1
156
156
  # Expected: "No such file or directory" for ALL patterns.
157
157
  # Any file found → ROOT POLLUTION. Move it to .peaks/_runtime/<sessionId>/prd/source/
@@ -162,11 +162,11 @@ ls feishu-doc-*.md *-snapshot.md qa-server.js 2>&1
162
162
  ```bash
163
163
  # Extended check for common leak patterns
164
164
  find . -maxdepth 1 -name "*.png" -o -name "*.jpg" -o -name "qa-*.js" -o -name "mock-server.*" 2>&1
165
- # Any Peaks-Cli QA/UI intermediate files here → ROOT POLLUTION. Move and note.
166
- # Legitimate project files (e.g. favicon.png) are fine — only move Peaks-Cli artifacts.
165
+ # Any Peaks-Loop QA/UI intermediate files here → ROOT POLLUTION. Move and note.
166
+ # Legitimate project files (e.g. favicon.png) are fine — only move Peaks-Loop artifacts.
167
167
  ```
168
168
 
169
- **Peaks-Cli Gate G — Project standards present (BLOCKING before workflow completion):**
169
+ **Peaks-Loop Gate G — Project standards present (BLOCKING before workflow completion):**
170
170
  ```bash
171
171
  # After `peaks standards init/update --apply`, verify the files actually landed
172
172
  # at the project root. The CLAUDE.md and rules files are required so that
@@ -180,7 +180,7 @@ ls <repo>/.claude/rules/common/coding-style.md \
180
180
  <repo>/.claude/rules/common/security.md
181
181
  # Any "No such file" → BLOCKED. The standards apply step did not complete; re-run
182
182
  # standards init/update with --apply and re-verify.
183
- # Skipping Peaks-Cli Gate G (e.g. because the user did not explicitly authorize writes) is
183
+ # Skipping Peaks-Loop Gate G (e.g. because the user did not explicitly authorize writes) is
184
184
  # only acceptable in `assisted`/`strict` modes where the user actively declined; in
185
185
  # `full-auto`/`swarm` the absence of these files is a workflow violation.
186
186
  ```
@@ -3,9 +3,9 @@ name: peaks-solo-resume
3
3
  description: Resume an in-flight peaks-solo slice in the current session. Use when the user says "continue the unfinished work", "继续完成", "把刚才没做完的收尾", or invokes `/peaks-solo-resume` directly. Detects the current session's deepest completed gate (via the Step 0.7 detection script at `tests/fixtures/skill-resume-mode-detect.sh`) and surfaces a resume option via `AskUserQuestion`. Triggers on `/peaks-solo-resume`, "继续完成刚才的", "resume the unfinished slice", "把刚才没做完的收尾".
4
4
  ---
5
5
 
6
- # Peaks-Cli Solo Resume (wrapper)
6
+ # Peaks-Loop Solo Resume (wrapper)
7
7
 
8
- Peaks-Cli Solo Resume is a thin wrapper that handles the **most common high-frequency request shape**: "I was in the middle of something, continue it." It detects the current session's deepest completed gate, surfaces a resume option, then yields to the main `peaks-solo` skill (which runs the actual workflow from the matching gate onwards).
8
+ Peaks-Loop Solo Resume is a thin wrapper that handles the **most common high-frequency request shape**: "I was in the middle of something, continue it." It detects the current session's deepest completed gate, surfaces a resume option, then yields to the main `peaks-solo` skill (which runs the actual workflow from the matching gate onwards).
9
9
 
10
10
  **This is a transparent wrapper.** The user does not stay in this skill — once the resume option is confirmed, control hands off to `peaks-solo`. The wrapper exists only to (a) detect the in-flight slice without the LLM re-reading 3-5 artifact files, and (b) surface the resume option as a `AskUserQuestion` before the main loop skips ahead.
11
11
 
@@ -3,9 +3,9 @@ name: peaks-solo-status
3
3
  description: Show the current state of the peaks-solo orchestrator in a compact summary. Use when the user says "what's the current state", "现在到哪了", "where are we", or invokes `/peaks-solo-status` directly. Reads the existing CLI primitives (`peaks skill presence`, `peaks session list`, `peaks project dashboard`, `peaks request show`) and renders a 1-screen status table. Triggers on `/peaks-solo-status`, "现在到哪了", "what is the current state", "show me the dashboard", "where are we".
4
4
  ---
5
5
 
6
- # Peaks-Cli Solo Status (wrapper)
6
+ # Peaks-Loop Solo Status (wrapper)
7
7
 
8
- Peaks-Cli Solo Status is a thin wrapper that renders a compact status table for the current peaks-solo orchestrator state. It is the answer to "I just want to know where we are" — no PRD, no RD, no QA, no full peaks-solo orchestration. Just read the existing CLI state and render a 1-screen summary.
8
+ Peaks-Loop Solo Status is a thin wrapper that renders a compact status table for the current peaks-solo orchestrator state. It is the answer to "I just want to know where we are" — no PRD, no RD, no QA, no full peaks-solo orchestration. Just read the existing CLI state and render a 1-screen summary.
9
9
 
10
10
  **This is a transparent wrapper.** The user does not stay in this skill — the status table is rendered, and control hands off (back to the user, or to `peaks-solo` if the user wants to act on the status).
11
11
 
@@ -54,7 +54,7 @@ Compact 1-screen format:
54
54
  === peaks-solo status ===
55
55
  Session: 2026-06-04-session-b60252
56
56
  Active: peaks-solo (mode: full-auto, gate: qa-validation)
57
- Workspace: /Users/yuanyuan/.../peaks-cli/.peaks/2026-06-04-session-b60252
57
+ Workspace: /Users/yuanyuan/.../peaks-loop/.peaks/2026-06-04-session-b60252
58
58
 
59
59
  | Role | State | Artifact |
60
60
  |------|----------------|-------------------------|
@@ -75,7 +75,7 @@ If the session is fresh (no in-flight slice), render a different layout:
75
75
  === peaks-solo status ===
76
76
  Session: 2026-06-04-session-b60252
77
77
  Active: peaks-solo (mode: full-auto, gate: startup)
78
- Workspace: /Users/yuanyuan/.../peaks-cli/.peaks/2026-06-04-session-b60252
78
+ Workspace: /Users/yuanyuan/.../peaks-loop/.peaks/2026-06-04-session-b60252
79
79
 
80
80
  No in-flight slice. Ready for a new request.
81
81
  Health: skill-doctor 35/35 pass
@@ -3,9 +3,9 @@ name: peaks-solo-test
3
3
  description: Run the project's test suite on the current repo and report results. Use when the user says "run the tests", "跑一下 test", "跑测试", or invokes `/peaks-solo-test` directly. Runs `pnpm vitest run` (or the project's equivalent test command), captures pass/fail counts and any failures, and surfaces a compact summary. Triggers on `/peaks-solo-test`, "跑一下 test", "跑测试", "run the tests", "test now".
4
4
  ---
5
5
 
6
- # Peaks-Cli Solo Test (wrapper)
6
+ # Peaks-Loop Solo Test (wrapper)
7
7
 
8
- Peaks-Cli Solo Test is a thin wrapper that runs the project's test suite on the current repo and reports results. It is the answer to "I just want to see if the tests pass" — no PRD, no RD, no QA, no full peaks-solo orchestration. Just `pnpm vitest run` and a compact summary.
8
+ Peaks-Loop Solo Test is a thin wrapper that runs the project's test suite on the current repo and reports results. It is the answer to "I just want to see if the tests pass" — no PRD, no RD, no QA, no full peaks-solo orchestration. Just `pnpm vitest run` and a compact summary.
9
9
 
10
10
  **This is a transparent wrapper.** The user does not stay in this skill — the test command runs, the result is summarized, and control hands off (back to the user, or to `peaks-solo` if the user wants to act on the result).
11
11
 
@@ -18,10 +18,10 @@ peaks project memories --project <repo> --json # load durable memory
18
18
 
19
19
  ## Step 1: Detect the project's test command
20
20
 
21
- The Peaks-Cli project standard is `pnpm vitest run` (per `vitest.config.ts` + `package.json` scripts). For other project types, check the package.json scripts first. If the user explicitly named a different command (e.g. "跑 `pnpm test` not vitest"), use that.
21
+ The Peaks-Loop project standard is `pnpm vitest run` (per `vitest.config.ts` + `package.json` scripts). For other project types, check the package.json scripts first. If the user explicitly named a different command (e.g. "跑 `pnpm test` not vitest"), use that.
22
22
 
23
23
  ```bash
24
- # Default for peaks-cli itself + most TS projects with vitest
24
+ # Default for peaks-loop itself + most TS projects with vitest
25
25
  pnpm vitest run
26
26
  ```
27
27