peaks-loop 3.1.2 → 4.0.0-beta

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 (301) hide show
  1. package/.claude-plugin/marketplace.json +62 -12
  2. package/CHANGELOG.md +50 -36
  3. package/README-en.md +58 -240
  4. package/README.md +49 -325
  5. package/agents/karpathy-reviewer.md +3 -3
  6. package/dist/src/cli/cli-helpers.d.ts +18 -0
  7. package/dist/src/cli/cli-helpers.js +8 -0
  8. package/dist/src/cli/commands/adapter-commands.d.ts +30 -0
  9. package/dist/src/cli/commands/adapter-commands.js +35 -0
  10. package/dist/src/cli/commands/context-commands.d.ts +1 -1
  11. package/dist/src/cli/commands/context-commands.js +1 -1
  12. package/dist/src/cli/commands/contract-commands.d.ts +1 -1
  13. package/dist/src/cli/commands/contract-commands.js +1 -1
  14. package/dist/src/cli/commands/core/session-command.js +12 -0
  15. package/dist/src/cli/commands/core/skill-command.js +4 -4
  16. package/dist/src/cli/commands/dispatch-commands.js +2 -2
  17. package/dist/src/cli/commands/job-commands.js +5 -5
  18. package/dist/src/cli/commands/observability-commands.js +1 -1
  19. package/dist/src/cli/commands/perf-audit-commands.js +2 -2
  20. package/dist/src/cli/commands/security-audit-commands.js +2 -2
  21. package/dist/src/cli/commands/sediment-commands.d.ts +80 -0
  22. package/dist/src/cli/commands/sediment-commands.js +640 -0
  23. package/dist/src/cli/commands/session-migrate-skill-name.d.ts +17 -0
  24. package/dist/src/cli/commands/session-migrate-skill-name.js +41 -0
  25. package/dist/src/cli/commands/skill-visibility.d.ts +8 -0
  26. package/dist/src/cli/commands/skill-visibility.js +63 -0
  27. package/dist/src/cli/commands/slice-commands.js +2 -2
  28. package/dist/src/cli/commands/solo-commands.d.ts +2 -2
  29. package/dist/src/cli/commands/solo-commands.js +8 -8
  30. package/dist/src/cli/commands/sub-agent-commands.d.ts +1 -1
  31. package/dist/src/cli/commands/sub-agent-commands.js +1 -1
  32. package/dist/src/cli/commands/understand-commands.js +1 -1
  33. package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
  34. package/dist/src/cli/commands/upgrade-commands.js +3 -3
  35. package/dist/src/cli/commands/user-touchpoint-commands.js +1 -1
  36. package/dist/src/cli/commands/verdict-aggregate-command.d.ts +1 -1
  37. package/dist/src/cli/commands/verdict-aggregate-command.js +2 -2
  38. package/dist/src/cli/commands/workflow-commands.js +2 -2
  39. package/dist/src/cli/commands/workspace/init-command.d.ts +3 -3
  40. package/dist/src/cli/commands/workspace/init-command.js +7 -7
  41. package/dist/src/cli/program.js +19 -2
  42. package/dist/src/services/adapter/adapter.d.ts +27 -0
  43. package/dist/src/services/adapter/adapter.js +5 -0
  44. package/dist/src/services/adapter/auto-adapter.d.ts +11 -0
  45. package/dist/src/services/adapter/auto-adapter.js +15 -0
  46. package/dist/src/services/adapter/claude-adapter.d.ts +14 -0
  47. package/dist/src/services/adapter/claude-adapter.js +40 -0
  48. package/dist/src/services/adapter/codex-adapter.d.ts +14 -0
  49. package/dist/src/services/adapter/codex-adapter.js +14 -0
  50. package/dist/src/services/adapter/copilot-adapter.d.ts +14 -0
  51. package/dist/src/services/adapter/copilot-adapter.js +14 -0
  52. package/dist/src/services/audit/enforcers/solo-code-ban.d.ts +1 -1
  53. package/dist/src/services/audit/enforcers/solo-code-ban.js +2 -2
  54. package/dist/src/services/audit/red-line-catalog.js +1 -1
  55. package/dist/src/services/audit/scanners/skills-tree-scanner.js +22 -0
  56. package/dist/src/services/context/auto-compact-dispatcher.d.ts +1 -1
  57. package/dist/src/services/dispatch/batch-counter.js +1 -1
  58. package/dist/src/services/dispatch/leak-detector.js +1 -1
  59. package/dist/src/services/doctor/doctor-service.js +2 -2
  60. package/dist/src/services/job/job-resource-snapshot.js +29 -1
  61. package/dist/src/services/memory/project-memory-service.js +1 -1
  62. package/dist/src/services/migrate-skill-name/migrate.d.ts +17 -0
  63. package/dist/src/services/migrate-skill-name/migrate.js +152 -0
  64. package/dist/src/services/migrate-skill-name/schema.d.ts +42 -0
  65. package/dist/src/services/migrate-skill-name/schema.js +25 -0
  66. package/dist/src/services/observability/aggregation.d.ts +1 -1
  67. package/dist/src/services/observability/aggregation.js +1 -1
  68. package/dist/src/services/perf/perf-baseline-service.d.ts +1 -1
  69. package/dist/src/services/perf/perf-baseline-service.js +1 -1
  70. package/dist/src/services/prd/handoff-types.d.ts +1 -1
  71. package/dist/src/services/prd/handoff-types.js +1 -1
  72. package/dist/src/services/progress/progress-service.d.ts +1 -1
  73. package/dist/src/services/progress/progress-service.js +1 -1
  74. package/dist/src/services/rd/standards-diagnostic.js +1 -1
  75. package/dist/src/services/recommendations/capability-seed-mappings.js +1 -1
  76. package/dist/src/services/sc/sc-service.js +1 -1
  77. package/dist/src/services/sediment/dispose-confirm.d.ts +9 -0
  78. package/dist/src/services/sediment/dispose-confirm.js +5 -0
  79. package/dist/src/services/sediment/json-schema.d.ts +247 -0
  80. package/dist/src/services/sediment/json-schema.js +26 -0
  81. package/dist/src/services/sediment/manifest-lint.d.ts +13 -0
  82. package/dist/src/services/sediment/manifest-lint.js +11 -0
  83. package/dist/src/services/sediment/pool-paths.d.ts +22 -0
  84. package/dist/src/services/sediment/pool-paths.js +25 -0
  85. package/dist/src/services/sediment/pool-read.d.ts +20 -0
  86. package/dist/src/services/sediment/pool-read.js +73 -0
  87. package/dist/src/services/sediment/pool-rebuild-index.d.ts +15 -0
  88. package/dist/src/services/sediment/pool-rebuild-index.js +28 -0
  89. package/dist/src/services/sediment/pool-write.d.ts +14 -0
  90. package/dist/src/services/sediment/pool-write.js +25 -0
  91. package/dist/src/services/sediment/promotion-gate.d.ts +12 -0
  92. package/dist/src/services/sediment/promotion-gate.js +20 -0
  93. package/dist/src/services/sediment/types.d.ts +52 -0
  94. package/dist/src/services/sediment/types.js +1 -0
  95. package/dist/src/services/session/binding-store.d.ts +1 -1
  96. package/dist/src/services/session/binding-store.js +1 -1
  97. package/dist/src/services/session/caller-id-types.d.ts +1 -1
  98. package/dist/src/services/session/session-manager.d.ts +1 -1
  99. package/dist/src/services/session/session-manager.js +1 -1
  100. package/dist/src/services/skill/resume-detector.js +1 -1
  101. package/dist/src/services/skill/skill-scheduler.d.ts +1 -1
  102. package/dist/src/services/skill/skill-scheduler.js +1 -1
  103. package/dist/src/services/skillhub/release-diff.d.ts +18 -0
  104. package/dist/src/services/skillhub/release-diff.js +38 -0
  105. package/dist/src/services/skillhub/release-export.d.ts +8 -0
  106. package/dist/src/services/skillhub/release-export.js +31 -0
  107. package/dist/src/services/skillhub/release-gc-blobs.d.ts +13 -0
  108. package/dist/src/services/skillhub/release-gc-blobs.js +32 -0
  109. package/dist/src/services/skillhub/release-import.d.ts +7 -0
  110. package/dist/src/services/skillhub/release-import.js +59 -0
  111. package/dist/src/services/skillhub/release-retain.d.ts +23 -0
  112. package/dist/src/services/skillhub/release-retain.js +89 -0
  113. package/dist/src/services/skillhub/sqlite-store.d.ts +22 -0
  114. package/dist/src/services/skillhub/sqlite-store.js +47 -0
  115. package/dist/src/services/skillhub/tar-runtime.d.ts +21 -0
  116. package/dist/src/services/skillhub/tar-runtime.js +91 -0
  117. package/dist/src/services/skillhub/types.d.ts +105 -0
  118. package/dist/src/services/skillhub/types.js +1 -0
  119. package/dist/src/services/skills/skill-conformance-service.js +8 -5
  120. package/dist/src/services/skills/skill-presence-service.d.ts +4 -4
  121. package/dist/src/services/skills/skill-presence-service.js +2 -2
  122. package/dist/src/services/skills/skill-registry.js +27 -0
  123. package/dist/src/services/skills/skill-runbook-service.js +2 -2
  124. package/dist/src/services/slice/slice-check-service.js +1 -1
  125. package/dist/src/services/slice/slice-check-types.d.ts +1 -1
  126. package/dist/src/services/slice/slice-check-types.js +1 -1
  127. package/dist/src/services/slice/slice-decompose-types.d.ts +1 -1
  128. package/dist/src/services/slice/slice-decompose-types.js +1 -1
  129. package/dist/src/services/solo/auto-compact-orchestrator.d.ts +1 -1
  130. package/dist/src/services/solo/auto-compact-orchestrator.js +2 -2
  131. package/dist/src/services/solo/dag-orchestrator.d.ts +3 -3
  132. package/dist/src/services/solo/dag-orchestrator.js +4 -4
  133. package/dist/src/services/solo/mode-gate.d.ts +2 -2
  134. package/dist/src/services/solo/post-compact-detector.js +2 -2
  135. package/dist/src/services/solo/status-line-renderer.d.ts +4 -4
  136. package/dist/src/services/standards/missing-standards-detector.d.ts +1 -1
  137. package/dist/src/services/standards/missing-standards-detector.js +1 -1
  138. package/dist/src/services/standards/project-standards-service.d.ts +1 -1
  139. package/dist/src/services/standards/project-standards-service.js +4 -4
  140. package/dist/src/services/understand/understand-types.d.ts +1 -1
  141. package/dist/src/services/upgrade/1x-detector-service.js +1 -1
  142. package/dist/src/services/upgrade/upgrade-service.d.ts +34 -0
  143. package/dist/src/services/upgrade/upgrade-service.js +52 -30
  144. package/dist/src/services/verdict/verdict-aggregator.d.ts +1 -1
  145. package/dist/src/services/workflow/workflow-router-service.d.ts +1 -1
  146. package/dist/src/services/workflow/workflow-router-service.js +3 -3
  147. package/dist/src/services/workspace/claude-settings-template.d.ts +1 -1
  148. package/dist/src/services/workspace/claude-settings-template.js +2 -2
  149. package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +1 -1
  150. package/dist/src/services/workspace/workspace-claude-settings-materializer.js +1 -1
  151. package/dist/src/services/workspace/workspace-service.d.ts +4 -4
  152. package/dist/src/services/workspace/workspace-service.js +2 -2
  153. package/dist/src/shared/paths.d.ts +1 -1
  154. package/dist/src/shared/paths.js +1 -1
  155. package/dist/src/shared/version.d.ts +1 -1
  156. package/dist/src/shared/version.js +1 -1
  157. package/dist/src/skills/peaks-maker/index.d.ts +5 -0
  158. package/dist/src/skills/peaks-maker/index.js +32 -0
  159. package/package.json +8 -3
  160. package/scripts/install-skills.mjs +29 -4
  161. package/skills/{peaks-prd → bee/peaks-prd}/SKILL.md +8 -2
  162. package/skills/{peaks-prd → bee/peaks-prd}/references/workflow.md +1 -1
  163. package/skills/{peaks-qa → bee/peaks-qa}/SKILL.md +10 -4
  164. package/skills/{peaks-qa → bee/peaks-qa}/references/browser-validation-contracts.md +2 -2
  165. package/skills/{peaks-qa → bee/peaks-qa}/references/external-capability-guidance.md +1 -1
  166. package/skills/{peaks-qa → bee/peaks-qa}/references/qa-fanout-contract.md +3 -3
  167. package/skills/{peaks-qa → bee/peaks-qa}/references/qa-sub-agent-dispatch.md +1 -1
  168. package/skills/{peaks-rd → bee/peaks-rd}/SKILL.md +13 -6
  169. package/skills/{peaks-rd → bee/peaks-rd}/references/browser-self-test-contracts.md +1 -1
  170. package/skills/{peaks-rd → bee/peaks-rd}/references/mock-data-placement.md +1 -1
  171. package/skills/{peaks-rd → bee/peaks-rd}/references/parallel-review-fanout.md +1 -1
  172. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-runbook.md +1 -1
  173. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-sub-agent-dispatch.md +2 -2
  174. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-transition-gates.md +1 -1
  175. package/skills/{peaks-rd → bee/peaks-rd}/references/skill-presence-and-title.md +1 -1
  176. package/skills/{peaks-reviewer → bee/peaks-reviewer}/SKILL.md +2 -2
  177. package/skills/{peaks-sc → bee/peaks-sc}/SKILL.md +7 -1
  178. package/skills/{peaks-txt → bee/peaks-txt}/SKILL.md +9 -3
  179. package/skills/{peaks-ui → bee/peaks-ui}/SKILL.md +11 -5
  180. package/skills/peaks-audit/SKILL.md +1 -1
  181. package/skills/{peaks-solo → peaks-code}/SKILL.md +9 -9
  182. package/skills/{peaks-solo → peaks-code}/references/a2a-artifact-mapping.md +2 -2
  183. package/skills/{peaks-solo → peaks-code}/references/anchoring-and-session-info.md +4 -4
  184. package/skills/{peaks-solo → peaks-code}/references/artifact-contracts.md +2 -2
  185. package/skills/{peaks-solo → peaks-code}/references/browser-workflow.md +1 -1
  186. package/skills/peaks-code/references/command-migration.md +3 -0
  187. package/skills/{peaks-solo → peaks-code}/references/completion-handoff.md +2 -2
  188. package/skills/{peaks-solo → peaks-code}/references/context-governance.md +2 -2
  189. package/skills/{peaks-solo → peaks-code}/references/frontend-only-mode.md +1 -1
  190. package/skills/{peaks-solo → peaks-code}/references/local-artifact-workspace.md +1 -1
  191. package/skills/{peaks-solo → peaks-code}/references/micro-cycle.md +9 -9
  192. package/skills/{peaks-solo → peaks-code}/references/mode-selection-with-stale-presence.md +12 -12
  193. package/skills/{peaks-solo → peaks-code}/references/mode-selection.md +1 -1
  194. package/skills/{peaks-solo → peaks-code}/references/openspec-workflow.md +1 -1
  195. package/skills/{peaks-solo → peaks-code}/references/project-scan-checklist.md +1 -1
  196. package/skills/{peaks-solo → peaks-code}/references/refactor-mode.md +1 -1
  197. package/skills/{peaks-solo → peaks-code}/references/resume-detection.md +1 -1
  198. package/skills/{peaks-solo → peaks-code}/references/runbook.md +5 -5
  199. package/skills/{peaks-solo → peaks-code}/references/skill-presence-and-title.md +3 -3
  200. package/skills/{peaks-solo → peaks-code}/references/standards-preflight.md +1 -1
  201. package/skills/{peaks-solo → peaks-code}/references/step-0-55-1x-detection.md +5 -5
  202. package/skills/{peaks-solo → peaks-code}/references/sub-agent-dispatch.md +10 -10
  203. package/skills/{peaks-solo → peaks-code}/references/swarm-dispatch-contract.md +7 -7
  204. package/skills/{peaks-solo → peaks-code}/references/workflow-gates-and-types.md +3 -3
  205. package/skills/peaks-doctor/SKILL.md +1 -1
  206. package/skills/peaks-doctor/references/doctor-check-catalog.md +1 -1
  207. package/skills/peaks-final-review/SKILL.md +3 -3
  208. package/skills/peaks-final-review/references/4-dimensions.md +1 -1
  209. package/skills/peaks-ide/SKILL.md +1 -1
  210. package/skills/{peaks-solo-resume → peaks-resume}/SKILL.md +14 -14
  211. package/skills/peaks-sop/SKILL.md +1 -1
  212. package/skills/{peaks-solo-status → peaks-status}/SKILL.md +13 -13
  213. package/skills/{peaks-solo-test → peaks-test}/SKILL.md +11 -11
  214. package/skills/peaks-solo/references/command-migration.md +0 -3
  215. /package/skills/{peaks-perf-audit → bee/peaks-perf-audit}/SKILL.md +0 -0
  216. /package/skills/{peaks-perf-audit → bee/peaks-perf-audit}/references/audit-protocol.md +0 -0
  217. /package/skills/{peaks-prd → bee/peaks-prd}/references/artifact-contracts.md +0 -0
  218. /package/skills/{peaks-prd → bee/peaks-prd}/references/artifact-per-request.md +0 -0
  219. /package/skills/{peaks-prd → bee/peaks-prd}/references/command-migration.md +0 -0
  220. /package/skills/{peaks-prd → bee/peaks-prd}/references/prd-for-multi-pass.md +0 -0
  221. /package/skills/{peaks-qa → bee/peaks-qa}/references/artifact-contracts.md +0 -0
  222. /package/skills/{peaks-qa → bee/peaks-qa}/references/artifact-per-request.md +0 -0
  223. /package/skills/{peaks-qa → bee/peaks-qa}/references/codegraph-regression-focus.md +0 -0
  224. /package/skills/{peaks-qa → bee/peaks-qa}/references/command-migration.md +0 -0
  225. /package/skills/{peaks-qa → bee/peaks-qa}/references/openspec-validation-gate.md +0 -0
  226. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-compact-handoff.md +0 -0
  227. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-context-governance.md +0 -0
  228. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-gstack-integration.md +0 -0
  229. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-local-artifacts.md +0 -0
  230. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-matt-pocock-integration.md +0 -0
  231. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-perf-test-plan.md +0 -0
  232. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-refactor-role.md +0 -0
  233. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-runbook.md +0 -0
  234. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-security-test-plan.md +0 -0
  235. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-skill-presence.md +0 -0
  236. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-standards-preflight.md +0 -0
  237. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-transition-gates.md +0 -0
  238. /package/skills/{peaks-qa → bee/peaks-qa}/references/reading-handoff-frontmatter.md +0 -0
  239. /package/skills/{peaks-qa → bee/peaks-qa}/references/regression-gates.md +0 -0
  240. /package/skills/{peaks-qa → bee/peaks-qa}/references/requirement-boundary-recheck.md +0 -0
  241. /package/skills/{peaks-qa → bee/peaks-qa}/references/test-case-generation.md +0 -0
  242. /package/skills/{peaks-qa → bee/peaks-qa}/references/test-report-output.md +0 -0
  243. /package/skills/{peaks-rd → bee/peaks-rd}/references/artifact-and-standards-output.md +0 -0
  244. /package/skills/{peaks-rd → bee/peaks-rd}/references/artifact-contracts.md +0 -0
  245. /package/skills/{peaks-rd → bee/peaks-rd}/references/artifact-per-request.md +0 -0
  246. /package/skills/{peaks-rd → bee/peaks-rd}/references/browser-action-wrapper.md +0 -0
  247. /package/skills/{peaks-rd → bee/peaks-rd}/references/code-reviewer-4dim-hint.md +0 -0
  248. /package/skills/{peaks-rd → bee/peaks-rd}/references/codegraph-project-analysis.md +0 -0
  249. /package/skills/{peaks-rd → bee/peaks-rd}/references/command-migration.md +0 -0
  250. /package/skills/{peaks-rd → bee/peaks-rd}/references/compact-handoff.md +0 -0
  251. /package/skills/{peaks-rd → bee/peaks-rd}/references/external-references.md +0 -0
  252. /package/skills/{peaks-rd → bee/peaks-rd}/references/frontend-project-generation.md +0 -0
  253. /package/skills/{peaks-rd → bee/peaks-rd}/references/karpathy-reviewer-prompt.md +0 -0
  254. /package/skills/{peaks-rd → bee/peaks-rd}/references/library-version-awareness.md +0 -0
  255. /package/skills/{peaks-rd → bee/peaks-rd}/references/mandatory-perf-baseline.md +0 -0
  256. /package/skills/{peaks-rd → bee/peaks-rd}/references/matt-pocock-integration.md +0 -0
  257. /package/skills/{peaks-rd → bee/peaks-rd}/references/ocr-integration.md +0 -0
  258. /package/skills/{peaks-rd → bee/peaks-rd}/references/openspec-cli.md +0 -0
  259. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-context-governance.md +0 -0
  260. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-fanout-contracts.md +0 -0
  261. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-gstack-integration.md +0 -0
  262. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-standards-preflight.md +0 -0
  263. /package/skills/{peaks-rd → bee/peaks-rd}/references/reading-v2-slice-results.md +0 -0
  264. /package/skills/{peaks-rd → bee/peaks-rd}/references/refactor-workflow.md +0 -0
  265. /package/skills/{peaks-rd → bee/peaks-rd}/references/v2-12-fanout-collapse.md +0 -0
  266. /package/skills/{peaks-rd → bee/peaks-rd}/references/writing-handoff-frontmatter.md +0 -0
  267. /package/skills/{peaks-reviewer → bee/peaks-reviewer}/references/reviewer-prompt.md +0 -0
  268. /package/skills/{peaks-reviewer → bee/peaks-reviewer}/references/reviewer-schema.md +0 -0
  269. /package/skills/{peaks-sc → bee/peaks-sc}/references/artifact-contracts.md +0 -0
  270. /package/skills/{peaks-sc → bee/peaks-sc}/references/artifact-retention.md +0 -0
  271. /package/skills/{peaks-sc → bee/peaks-sc}/references/command-migration.md +0 -0
  272. /package/skills/{peaks-sc → bee/peaks-sc}/references/openspec-commit-boundaries.md +0 -0
  273. /package/skills/{peaks-security-audit → bee/peaks-security-audit}/SKILL.md +0 -0
  274. /package/skills/{peaks-security-audit → bee/peaks-security-audit}/references/audit-protocol.md +0 -0
  275. /package/skills/{peaks-txt → bee/peaks-txt}/references/artifact-contracts.md +0 -0
  276. /package/skills/{peaks-txt → bee/peaks-txt}/references/command-migration.md +0 -0
  277. /package/skills/{peaks-txt → bee/peaks-txt}/references/context-capsule.md +0 -0
  278. /package/skills/{peaks-ui → bee/peaks-ui}/references/artifact-contracts.md +0 -0
  279. /package/skills/{peaks-ui → bee/peaks-ui}/references/artifact-per-request.md +0 -0
  280. /package/skills/{peaks-ui → bee/peaks-ui}/references/command-migration.md +0 -0
  281. /package/skills/{peaks-ui → bee/peaks-ui}/references/workflow.md +0 -0
  282. /package/skills/{peaks-solo → peaks-code}/references/boundaries.md +0 -0
  283. /package/skills/{peaks-solo → peaks-code}/references/checkpoint-resume.md +0 -0
  284. /package/skills/{peaks-solo → peaks-code}/references/codegraph-orchestration.md +0 -0
  285. /package/skills/{peaks-solo → peaks-code}/references/cross-date-session-check.md +0 -0
  286. /package/skills/{peaks-solo → peaks-code}/references/dag-orchestrator.md +0 -0
  287. /package/skills/{peaks-solo → peaks-code}/references/envelope-contract.md +0 -0
  288. /package/skills/{peaks-solo → peaks-code}/references/existing-system-extraction.md +0 -0
  289. /package/skills/{peaks-solo → peaks-code}/references/external-references.md +0 -0
  290. /package/skills/{peaks-solo → peaks-code}/references/external-skill-invocation.md +0 -0
  291. /package/skills/{peaks-solo → peaks-code}/references/fanout-mandatory.md +0 -0
  292. /package/skills/{peaks-solo → peaks-code}/references/fast-mode.md +0 -0
  293. /package/skills/{peaks-solo → peaks-code}/references/gstack-integration.md +0 -0
  294. /package/skills/{peaks-solo → peaks-code}/references/headroom-integration.md +0 -0
  295. /package/skills/{peaks-solo → peaks-code}/references/job-loop.md +0 -0
  296. /package/skills/{peaks-solo → peaks-code}/references/periodic-checkpoint.md +0 -0
  297. /package/skills/{peaks-solo → peaks-code}/references/playwright-mcp-multi-terminal.md +0 -0
  298. /package/skills/{peaks-solo → peaks-code}/references/project-memory-loading.md +0 -0
  299. /package/skills/{peaks-solo → peaks-code}/references/quality-gate-cheatsheet.md +0 -0
  300. /package/skills/{peaks-solo → peaks-code}/references/step-0-8-gate.md +0 -0
  301. /package/skills/{peaks-solo → peaks-code}/references/workflow.md +0 -0
package/README.md CHANGED
@@ -1,365 +1,89 @@
1
- <div align="center">
2
-
3
- # ⛰️ Peaks
4
-
5
- <img src="https://readme-typing-svg.demolab.com?font=Fira+Code&weight=700&size=22&duration=3000&pause=800&color=6366F1&center=true&vCenter=true&multiline=true&width=720&height=110&lines=peaks-loop%3A%20跨%20AI%20IDE%20的工程门禁与编排;11%20个%E2%9A%99%EF%B8%8F%20工作流技能%20%2B%20%E2%9A%96%EF%B8%8F%20可执行门禁;%E2%9C%89%EF%B8%8F%20%E2%9A%96%EF%B8%8F%20%E2%9C%89%EF%B8%8F%20%E2%9A%91%EF%B8%8F%20%E2%9A%96%EF%B8%8F%20%E2%9C%89%EF%B8%8F%20%E2%9A%91%EF%B8%8F%20门禁%20%2B%20审计%20%2B%20跨%20IDE%20适配" alt="peaks-loop tagline typing animation" />
1
+ # Peaks Loop
6
2
 
7
3
  [English](./README-en.md) | **简体中文**
8
4
 
9
- <table>
10
- <tr>
11
- <td align="center" width="180"><b>🔥 PROJECT</b></td>
12
- <td align="center" width="180"><b>⚡ BASED ON</b></td>
13
- <td align="center" width="180"><b>📚 SKILLS.SH</b></td>
14
- </tr>
15
- <tr>
16
- <td align="center"><a href="https://github.com/SquabbyZ/peaks-loop">peaks-loop / 首页</a></td>
17
- <td align="center">13 Skills + Cross-IDE</td>
18
- <td align="center"><a href="https://skills.sh/SquabbyZ/peaks-loop">在 skills.sh 收录</a></td>
19
- </tr>
20
- <tr><td colspan="3">&nbsp;</td></tr>
21
- <tr>
22
- <td align="center" width="180"><b>⭐ STARS</b></td>
23
- <td align="center" width="180"><b>📦 VERSION</b></td>
24
- <td align="center" width="180"><b>📄 LICENSE</b></td>
25
- </tr>
26
- <tr>
27
- <td align="center"><a href="https://github.com/SquabbyZ/peaks-loop/stargazers"><img src="https://img.shields.io/github/stars/SquabbyZ/peaks-loop?style=for-the-badge&logo=github&logoColor=white" alt="stars" /></a></td>
28
- <td align="center"><a href="https://www.npmjs.com/package/peaks-loop"><img src="https://img.shields.io/npm/v/peaks-loop?style=for-the-badge&logo=npm&logoColor=white&color=CB3837" alt="npm version" /></a></td>
29
- <td align="center"><a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=for-the-badge" alt="license" /></a></td>
30
- </tr>
31
- <tr><td colspan="3">&nbsp;</td></tr>
32
- <tr>
33
- <td align="center" width="180"><b>🧪 TESTS</b></td>
34
- <td align="center" width="180"><b>🔧 LANG</b></td>
35
- <td align="center" width="180"><b>📥 DOWNLOADS</b></td>
36
- </tr>
37
- <tr>
38
- <td align="center"><b>2,800+</b></td>
39
- <td align="center"><b>TypeScript</b></td>
40
- <td align="center"><a href="https://www.npmjs.com/package/peaks-loop"><img src="https://img.shields.io/npm/dm/peaks-loop?style=for-the-badge&logo=npm&logoColor=white&color=CB3837" alt="downloads" /></a></td>
41
- </tr>
42
- <tr><td colspan="3">&nbsp;</td></tr>
43
- <tr>
44
- <td align="center" width="180"><b>🌐 中文</b></td>
45
- <td align="center" width="180"><b>🚀 QUICK START</b></td>
46
- <td align="center" width="180"><b>👁️ VISITORS</b></td>
47
- </tr>
48
- <tr>
49
- <td align="center"><a href="./README.md">简体中文</a></td>
50
- <td align="center"><a href="#-30-秒跑起来">30 秒跑起来 →</a></td>
51
- <td align="center"><img src="https://komarev.com/ghpvc/?username=SquabbyZ&repo=peaks-loop&label=views&color=blue&style=for-the-badge" alt="visitors" /></td>
52
- </tr>
53
- </table>
54
-
55
- <img src="https://github-readme-streak-stats.herokuapp.com?user=SquabbyZ&repo=peaks-loop&theme=radical&hide_border=true&date_format=j%20M%5B%20Y%5D" alt="GitHub Streak Stats" />
56
-
57
- [安装](#-30-秒跑起来) · [5 分钟上手](#-5-分钟上手) · [技能家族](#-11-个技能家族) · [杀手锏:不可绕过的门禁](#-杀手锏不可绕过的门禁)
58
-
59
- </div>
60
-
61
- ---
62
-
63
- ## 🤔 为什么是 Peaks
64
-
65
- > 你把 `git push --force`、`rm -rf`、`npm publish`、`DROP TABLE` 这类不可逆动作**写进 CLAUDE.md** 吗?
66
- > LLM 不会真听。它有 99% 的概率会"尊重你的偏好",然后在下一次对话里忘掉。
67
- > **CI 只能在合并时拦;规则只能靠自觉;只有门禁(gates)能在 agent 拔刀的瞬间摁住它。**
68
-
69
- Peaks 把 AI IDE 里的"工程团队"建模成 13 个工作流技能 + 一组**可执行的门禁**:
70
-
71
- - 🧭 **技能(skills)**——`peaks-solo` 编排,`peaks-prd/rd/qa/ui/sc/txt/sop` 各管一段;LLM 按任务自动选对的人
72
- - 🚧 **门禁(gates)**——SOP 在每个 phase 上挂"可检查条件"(文件存在 / grep 命中 / 命令退出码),不满足就把 `git push` 在 agent 自己面前拦下——**连 `--dangerously-skip-permissions` 都绕不过**
73
- - 🧠 **项目记忆(memory)**——`.peaks/memory/` 把决策、踩坑、约定落盘到 git 一起被 commit;下个 session 接手不用问"为什么这么写"
74
- - 🌐 **跨 IDE**——一个 CLI 适配 Claude Code / Trae / Cursor / Codex / Qoder;技能注册到 IDE 原生格式
75
- - 📦 **生态可发现**——13 个技能同样发布到 [skills.sh](https://skills.sh),按需 `npx skills add` 单点装
76
-
77
- ## 🚀 30 秒跑起来
78
-
79
- ```bash
80
- # 1. 装 CLI
81
- npm install -g peaks-loop
82
-
83
- # 2. 在你的项目里打开 Claude Code
84
- cd /path/to/your-project && claude
85
- ```
86
-
87
- > **v2.13.3 提示**:发布新版本时 `npm publish` 会在 publish 前自动跑 `pnpm run build`(`package.json` 的 `prepublishOnly` hook 走 `scripts/prepublish-build.mjs`),确保 `bin/peaks.js` 永远带最新 dist。**发布前不要手动跳过这一步**——2.13.2 dogfood 抓过 `bin/peaks.js` 指 Jun 13 旧 dist 的事故。
88
-
89
- # 3. 让 AI 干活
90
- > peaks-solo 帮我给登录页加 OAuth 回调
91
- ```
92
-
93
- 完了。第一次跑 peaks 会自动建 `.peaks/` 工作区 + 扫一次项目原型 + 把任务分给对的技能(PRD → 工程切片 → UI → QA → 变更控制 → 知识压缩),中间产物全部落盘。**日常使用 1 个技能(`peaks-solo`)覆盖 ≥ 90% 的需求**。v2.13.1 起 5 套异质信号(security-audit / perf-audit / karpathy / mut / qa)会按 `block > return-to-rd > warn > pass` precedence 汇聚成单一 verdict,repair-loop 触发时打印 `re-run reason: { source, signal, file, line, hint }` 作为再决策依据。v2.13.2 起 `peaks verdict aggregate --from-rid <rid>` 把这套汇聚逻辑直接暴露为 CLI 子命令,并修复了 v2.13.1 跨 source dedup bug(之前 security + perf 报同处问题会被记为 2 条 reason,现在合并为 1 条且 sources 字段列出所有 source)。
94
-
95
- ## 🧠 peaks-context — 上下文构建模块 (v3.0)
96
-
97
- peaks-context 是 CLI 强制执行的上下文采集器,**不再依赖 LLM 自主"读 package.json"**。
98
-
99
- ```bash
100
- peaks context build --goal "<你的需求>" --project . --audience peaks-rd --out context.json
101
- peaks context validate context.json
102
- peaks context inspect context.json
103
- ```
104
-
105
- **承诺**:deps 锁版本 antd@5.21.0 → context.json 绝不返回 6.x API 文档。
106
- 详见 [design spec §4.1](../../docs/superpowers/specs/2026-06-21-context-audit-redesign-design.md)。
107
-
108
- ## 🧬 peaks-mut — 测试假绿拦截 (v3.0)
109
-
110
- peaks-mut 通过变异测试 + 断言有效性扫描拦截测试假绿:
111
-
112
- ```bash
113
- peaks mut run --project . --test-files src/A.test.ts --input-sig <TACT.sig> --out mut-report.json
114
- peaks mut mutants --in mut-report.json
115
- peaks mut asserts --in mut-report.json
116
- peaks mut report --in mut-report.json
117
- ```
118
-
119
- **默认阈值**:变异杀灭率 ≥ 80%、弱断言比例 ≤ 5%。详见 [design spec §4.2](../../docs/superpowers/specs/2026-06-21-context-audit-redesign-design.md)。
120
-
121
- ## 🎯 peaks-rd 双阶段 (v3.0)
122
-
123
- peaks-rd 现在拆成两阶段:
124
-
125
- 1. **战略审计**:写 `strategy.md` + `STRAT.sig`(根因分析 + 影响面)
126
- 2. **战术审计**:写 `impl.json` + `TACT.sig`,**AST 硬门禁拦截版本错配的 API 调用**
127
-
128
- 详见 [design spec §4.2](../../docs/superpowers/specs/2026-06-21-context-audit-redesign-design.md)。
129
-
130
- ## ⏱️ 5 分钟上手
131
-
132
- 在 IDE 对话里直接对 AI 说:
133
-
134
- ```text
135
- peaks-solo 帮我给登录页加 OAuth 回调 # 端到端编排(最常用)
136
- peaks-prd 为会员邀请功能整理产品目标、非目标和验收标准
137
- peaks-rd 分析这次重构的最小实现切片和风险
138
- peaks-qa 为这次改动设计测试和回归验证清单
139
- peaks-ui 设计登录页的交互和视觉方案
140
- peaks-sc 记录这次变更的影响范围、artifact 留存和 commit 边界
141
- peaks-txt 为当前模块生成上下文胶囊,保留关键决策
142
- peaks-sop 帮我把"内容发布"流程变成带门禁的 SOP
143
- ```
144
-
145
- **两种基本用法**:
146
-
147
- 1. **让 `peaks-solo` 编排**(绝大多数情况)——告诉它做什么,剩下 PRD → RD → UI → QA → SC → TXT 的链路它自己协调
148
- 2. **直接调单个角色技能**(进阶)——只想做工作流的某一段时,跳过整 pipeline
149
-
150
- 随时确认状态?让 AI 跑一下:
151
-
152
- ```bash
153
- peaks -V # 版本
154
- peaks doctor --json # 环境/技能/配置一键体检
155
- peaks project dashboard --project . --json # 当前项目一眼看完
156
- ```
157
-
158
- ## 🧰 13 个技能家族
159
-
160
- | 技能 | 你用它做什么 | 典型场景 |
161
- |------|------------|----------|
162
- | `peaks-solo` | **端到端编排入口**,自动协调 prd/rd/ui/qa/sc/txt | 全流程开发、PRD-to-ship、跨子任务批量迭代 |
163
- | `peaks-prd` | 模糊意图 → **可验收 PRD**(目标/非目标/行为保留/验收) | 需求整理、PRD 撰写、重构目标 |
164
- | `peaks-rd` | 工程分析 + 切片规划 + 风险 + 执行契约 | 架构分析、最小切片、风险评估 |
165
- | `peaks-qa` | 测试设计 + 覆盖率 + 回归矩阵 + 验收证据 | 测试用例、回归、浏览器 E2E |
166
- | `peaks-ui` | 视觉方向 + 交互方案 + 设计系统约束 | 页面设计、交互、原型、UI 回归 |
167
- | `peaks-sc` | 变更追踪 + commit 边界 + 留存策略 + 回滚证据 | 影响范围、变更控制、审计 |
168
- | `peaks-txt` | 上下文胶囊 + 决策记录 + 知识压缩 | 模块理解、决策留存、复盘 |
169
- | `peaks-sop` | **把你的工作流变成带门禁的 SOP**(不只研发) | 内容发布、合规清单、数据 pipeline、运维 runbook |
170
- | `peaks-solo-resume` | 继续刚才没做完的切片 | 「继续完成刚才未完成的」 |
171
- | `peaks-solo-status` | 一眼看到现在到哪了 | 「现在到哪了」 |
172
- | `peaks-solo-test` | 跑项目测试(自动探测 vitest/jest/pytest/...) | 「跑测试」 |
173
- | `peaks-security-audit` | **独立安全审计**(OWASP Top-10 + 8-dim 威胁模型) | 新增鉴权/凭证/SQL 注入/外部 API 等安全面改动 |
174
- | `peaks-perf-audit` | **独立性能审计**(6-dim 性能影响) | 改热循环/I-O/并发/bundle/cold-start |
175
-
176
- **3 solo 包装 + 7 角色技能 + 2 独立审计 + 1 编排器 = 13 个。日常 1 个 `peaks-solo` 覆盖 ≥ 90%。**
177
-
178
- > **v2.13.0 新增**:zero-human-intervention **auto-compact**(`peaks solo context-now` + `peaks solo auto-compact`)——peaks-loop 自己探测 context %,≥85% 主动收敛(写 checkpoint + 收敛计划 + 触发 IDE compact),≥95% 强制同步压缩红线。LLM-runner 上下文始终 < 95% 自主运行,零介入。**v2.13.4 修复**:`auto-compact` 现在默认压缩**主会话**上下文(不是 sub-agent shell 自己的)。**3.0.3 新增 `ide-native` 通路**:在 `.claude/settings.local.json` 装 PreToolUse hook(`Bash|Task` matcher → `peaks session auto-compact-hook`),runner 下一次 Bash/Task tool call **in-band** 触发 `claude --compact`,不再依赖 LLM 自己 fire `/compact`。Hook ENOENT-safe(claude CLI 不在 PATH 时退出 0 + stderr 提示,runner 不会被中断)。
179
-
180
- ## 🚧 杀手锏:不可绕过的门禁
181
-
182
- > CI 只能在**合并时**拦;`CLAUDE.md` 规则靠 agent **自觉**。**SOP 能做到 CI 和提示词都做不到的事——在 agent 拔刀的瞬间把它摁住。**
183
-
184
- ```jsonc
185
- // sop.json
186
- "guards": [ { "phase": "publish", "bash": "git +push" } ]
187
- ```
188
-
189
- ```bash
190
- peaks hooks install --project <repo> # 显式 opt-in:装一条 PreToolUse 规则
191
- ```
5
+ [![npm](https://img.shields.io/npm/v/peaks-loop?style=flat-square&logo=npm)](https://www.npmjs.com/package/peaks-loop)
6
+ [![license](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](./LICENSE)
7
+ [![stars](https://img.shields.io/github/stars/SquabbyZ/peaks-loop?style=flat-square&logo=github)](https://github.com/SquabbyZ/peaks-loop/stargazers)
192
8
 
193
- 之后 agent 在 `publish` 阶段的门禁没全过就想 `git push`,Claude Code 会收到 `permissionDecision: "deny"`,**在任何权限检查之前就被拦下——连 `--dangerously-skip-permissions` 都绕不过**。门禁三种类型:
9
+ <p align="center">
10
+ <video src="./examples/video-demo/preview/peaks-loop-demo.mp4" controls muted playsinline preload="metadata" width="100%" style="border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,0.55);"></video>
11
+ </p>
194
12
 
195
- | 类型 | 含义 | 例子 |
196
- |------|------|------|
197
- | `file-exists` | 文件存在 → pass | `CHANGELOG.md` 存在 |
198
- | `grep`(含 `absent`) | 文件内正则匹配 → pass;`absent: true` 反转 | "正文里没有 `TODO`" |
199
- | `command` | 跑命令并按退出码判定(默认拒绝,需 `--allow-commands`) | 跑 `npm test` |
13
+ ## 它是什么
200
14
 
201
- 定义层(`sop.json` + `SKILL.md`)可以放**全局** `~/.peaks/sops/`(个人跨项目)或**仓库** `<repo>/.peaks/sops/`(随 git 提交、团队共享,仓库层优先)。**紧急放行**用 `peaks gate bypass --sop <id> --phase <phase> --reason "<原因>"`(一次性、记原因、有上限)。
15
+ ### loop engineering 的工程实现
202
16
 
203
- ## 🌍 真实场景
17
+ ### peaks-loop 就是你的 AI 战术小队,24 小时待命,随时接活
204
18
 
205
- **场景 1:临时决定重构鉴权模块**
19
+ 它把一套工程门禁、编排、回放都装进你本地的 AI CLI 里,装好之后,你说一句话,它替你把整套流程跑完再交还给你。
206
20
 
207
- ```text
208
- > peaks-rd 分析 src/auth/ 的现状,给我一份最小切片方案
209
- ```
210
- `peaks-rd` 出:3 阶段切片、风险评估、回归点、可执行契约。**写不写代码你定**。
21
+ 召之即来,事完收队,**不跳步,不半截扔给你**。它不是新发明一个 AI CLI,而是架在你已有的 Claude Code / Codex / Copilot 之上,把它们都调成同一支团队,只对你这一个开发者的口味。
211
22
 
212
- **场景 2:把"内容发布"变成受控流程**
23
+ **每一步都有强退出条件**:审计不通过就停,QA 没过就停,任何一道门失败 = 全流程停。你不必追着它催、也不必替它补,它跑完一道再交你拍板,拍完再走下一道。
213
24
 
214
- ```text
215
- > peaks-sop 帮我把"博客发布"做成带门禁的 SOP:草稿写完 → 自检(无 TODO/字数 ≥ 800) → 人工 review → 才允许发布
216
- ```
217
- `peaks-sop` 生成 `sop.json` + `SKILL.md`,注册到全局,**从此 agent 跳过任何一步都发不出文章**。
25
+ #### 门禁不是装饰 —— 5439 tests passed · 19 skipped · 0 failed
218
26
 
219
- **场景 3:浏览器 E2E 回归**
27
+ 每一行代码都过自己的门:测试套件 5,420 个用例真挡得住事,不是装饰。门禁不是写给用户看的,是写给自己看的。
220
28
 
221
- ```text
222
- > peaks-qa 用浏览器跑一次完整注册 → 登录 → 看板的核心流,把卡点列出来
223
- ```
224
- `peaks-qa` 出:测试矩阵、回归清单、`code-review.md` 风格的证据文档。
29
+ #### 做这个项目的只有一个人,工程师口味:
225
30
 
226
- **场景 4:第二天回来继续昨天的切片**
31
+ - **极客精神。**
32
+ - **你跟 AI 之间只该用自然语言讲话,没有 CLI 表面给你。**
33
+ - **单测覆盖率和门禁审计真挡得住事,不是装饰。**
34
+ - **严于律己,宽以待人 —— 自己写的代码过自己的门,使用者随便怎么说都能跑通。**
35
+ - **AI 使用水平的下限平权:你不需要懂 prompt engineering,就跟说话一样用。**
227
36
 
228
- ```text
229
- > peaks-solo-resume
230
- ```
231
- 检测 in-flight slice 的最深已完成 gate,省 3-5k token 重新读 artifact。**会话断了不丢上下文**。
37
+ 这套项目级硬规则也写进了 `~/.peaks/memory/`,不是口号,是被工具链守住的红线。
232
38
 
233
- ## 📦 在 skills.sh 上发现 peaks 技能
39
+ ## 装了你有什么战术角色
234
40
 
235
- peaks 的 13 个 `peaks-*` 技能自动收录到 [skills.sh](https://skills.sh) 注册表——**不需要单独去 skills.sh 网站注册**。收录靠仓库里**自带配置**:
41
+ 先给你上的是 `peaks-code`,主官。它是 peaks-loop 默认入口,管 PRD、RD、QA、UI、SC、TXT 这一长串工序的主调度,也是你日常跟 peaks-loop 说话时最常打交道的那个角色。
236
42
 
237
- - 13 个 `skills/<name>/SKILL.md`(每个都有 `name` + `description` YAML frontmatter)—— skills.sh 的标准发现约定
238
- - `.claude-plugin/marketplace.json` —— 显式列出 13 个公开技能(隐藏的内部 `peaks-doctor` / `peaks-ide` 通过 `metadata.internal: true` 屏蔽)
43
+ 它能做的:
44
+ - 写长任务代码(端到端需求 → PRD → 实现 → QA),一道门一道门跑,坏在哪道停在哪道
45
+ - 修 bug 当天发,改完顺手过审 + 测试,不是改完就完
46
+ - 帮你做 / 接 / 拆长跑的需求,把一个模糊需求一路剥到能落地的实现
239
47
 
240
- 任何装了 `npx skills` 的环境(Claude Code、Cursor、Codex 等)都能直接拉取:
48
+ 它一句话能扛完的活,你都不必开第二个终端。它对测试覆盖率、审计门、卡点阻断一视同仁:跑不到位的活不交付,跑歪的活直接退回重跑。
241
49
 
242
- ```bash
243
- # 装全部 13 个:
244
- npx skills add SquabbyZ/peaks-loop
50
+ 它既是装好就立刻能用的那个入口,也是后面要长出来的内建角色的调度口;它内部有一套连续审计、QA 闸口、review 验收,默认打开,你想关哪一道才需要单独说。
245
51
 
246
- # 或只装一个:
247
- npx skills add SquabbyZ/peaks-loop --skill peaks-solo
248
- npx skills add SquabbyZ/peaks-loop --skill peaks-rd
249
- npx skills add SquabbyZ/peaks-loop --skill peaks-sop
250
- ```
52
+ 其他内置 loop engineering,敬请期待。
251
53
 
252
- 浏览 [skills.sh/SquabbyZ/peaks-loop](https://skills.sh/SquabbyZ/peaks-loop) 看完整目录。技能和 `npm install -g peaks-loop` 是同一份内容——两条路径产物一致。
54
+ ## 你也能沉淀自己的 loop engineering
253
55
 
254
- ## 🛠️ 怎么用:技能优先,CLI 是门禁
56
+ 跑过一次还想跑,说一句话让它永久驻场。
255
57
 
256
- `peaks <cmd>` CLI **不是日常使用的主要入口**。它存在有三个理由,全是机器层保障:
58
+ 你沉淀的是 loop engineering(战术套路),不是简单的 skill(动作招式)。下次说"跑那只",整套流程自动就位。
257
59
 
258
- 1. **不可逆动作的显式 opt-in**(`peaks sop init --apply`、`peaks openspec archive --apply`)—— 不能靠 LLM"自觉"挥下
259
- 2. **结构化 JSON 契约**(`peaks request show ... --json`、`peaks scan archetype ... --json`)—— 让技能读回可机读判决作为下游决策
260
- 3. **hook / CI / 脚本场景下能被程序化调用**(`peaks hooks install`、`peaks gate enforce`)—— 把"必须满足门禁才能做 X"从纸面规则变成可执行规则
60
+ 它落到你本地的一个池子里,只对你生效。命名、复用、迭代都是你说了算:跑过两遍稳定的会被抬高,跑翻车的会让你重新定。决策影响资产的,你拍板。
261
61
 
262
- 一句话:**技能 = 流程的大脑;CLI = 流程的骨节**。
62
+ 这套机制关键不是"工具给你造了多少只 bee",而是你那几只 bee 一直在跟着你的口味长 —— 你提一句,它长一点。
263
63
 
264
- ### 你**会**看到的 CLI 命令
64
+ ## 上号
265
65
 
266
66
  ```bash
267
- peaks workspace init / reconcile / scan archetype / scan libraries
268
- peaks request init / show / transition # PRD/RD/QA/SC 请求状态机
269
- peaks session list / info / title / rotate
270
- peaks sop init / lint / check / advance / register
271
- peaks code-review detect-ocr / config-template / run-ocr # 阿里 Open Code Review 第二意见
272
- peaks hooks install / gate enforce / gate bypass
273
- peaks project dashboard / memories
67
+ npm i -g peaks-loop
274
68
  ```
275
69
 
276
- 完整列表跑 `peaks --help`。
70
+ 装完一句话接活。
277
71
 
278
- ## 🌐 支持的 IDE
72
+ ## 顺便说一句
279
73
 
280
- | IDE | 状态 |
281
- |---|---|
282
- | ✅ **Claude Code** | 13 技能 + PreToolUse hook,agent team dogfood 通过 |
283
- | ⚠️ **Trae** | slim `IdeAdapter` 已注册,真实 Trae 集成留到后续切片 |
284
- | 📋 **Codex / Cursor / Qoder / 通义灵码 等** | 路线图 |
74
+ 这个仓库以前叫 [`peaks-cli`](https://github.com/SquabbyZ/peaks-cli),现在叫 `peaks-loop`。
285
75
 
286
- ## 🪝 Hooks
76
+ 里面的技能从 `peaks-solo`(单角色)演化到 `peaks-code`(带门禁的代码域).两边都还在,只是分工不同:`peaks-solo` 如今是给单任务跑流程用的那个老入口,`peaks-code` 接管了端到端的主路径。
287
77
 
288
- peaks-loop 把自己注册为 Claude Code / Trae 的 PreToolUse hook,在**对话中途、面向 agent 本身**拦下不可逆动作——这是 CI 拦不住、CLAUDE.md 只能靠自觉的盲区。
78
+ 事情一直没换过:你说话,它替你排工程门禁,坏哪道停哪道,你来拍板。
289
79
 
290
- ### 装 / 卸
291
-
292
- ```sh
293
- # 装到当前项目(写入 .claude/settings.json,幂等)
294
- peaks hooks install
295
-
296
- # 装到全局(写入 ~/.claude/settings.json)
297
- peaks hooks install --global
298
-
299
- # 查状态
300
- peaks hooks status
301
- peaks hooks status --global
302
-
303
- # 卸(只卸 peaks 自己注册的;保留其他第三方 hook)
304
- peaks hooks uninstall
305
- ```
306
-
307
- 装完之后**重启 IDE(或 reload workspace)**让 hook 生效。
308
-
309
- ### 装了什么
310
-
311
- 装的是 `peaks gate enforce` 这条 PreToolUse `Bash` 入口——每次 Bash 调用都会跑 SOP 门禁。命中失败 → 写 `permissionDecision: "deny"` 到 stdout + `process.exitCode = 2`,Claude Code 在权限检查**之前**就拦下来(连 `--dangerously-skip-permissions` 也拦得住)。完整审计表见 [`.claude/HOOKS.md`](./.claude/HOOKS.md)。
312
-
313
- ### 输出契约
314
-
315
- | 信号 | 走哪 | 含义 |
316
- |---------------|-----------------------------------------|----------------------------|
317
- | `stdout` JSON | `emitBlock` / `emitDecision` | 给宿主读的 allow/deny 决策 |
318
- | `stderr` 文本 | `emitHint` | 给 LLM/操作者看的人话提示 |
319
- | 退出码 `0` | 允许 | 宿主继续 |
320
- | 退出码 `2` | 阻塞(`emitBlock` 专用) | 宿主必须停 |
321
-
322
- 所有 hook 走 `src/services/hooks/output.ts` 三个 helper:`emitHint` / `emitBlock` / `emitDecision`。跨平台契约测试(darwin / linux / win32)在 `tests/unit/hooks/contract.test.ts`。
323
-
324
- ### 一次性放行
325
-
326
- ```sh
327
- peaks gate bypass --sop <id> --phase <phase> --reason "<why>"
328
- ```
329
-
330
- 下次匹配的 Bash 命令放行一次(每个 SOP 每项目上限 3 次)。完整文档:[`.claude/HOOKS.md`](./.claude/HOOKS.md)。
331
-
332
- ## 🏗️ 项目状态
333
-
334
- - ✅ **13 技能** + 跨 IDE CLI + 2800+ 测试(v2.12.0 新增 `peaks-security-audit` + `peaks-perf-audit`)
335
- - ✅ **门禁机制** 已在真实项目 dogfood
336
- - ✅ **v2.12.0 RD fan-out 收缩**(3 路:code-reviewer + qa-test-cases-writer + karpathy-reviewer)2026-06-27 发布
337
- - ✅ **v2.13.0 零介入 auto-compact**(peaks-loop 自主压缩任意 AI CLI 的上下文,runner 始终 < 95%)2026-06-27 发布
338
- - ✅ **v2.13.4 4 个 solo bug 修复**:Step 1 AskUserQuestion 不再被跳过、verify-pipeline 走 canonical `.peaks/_runtime/<sessionId>/<role>/` 路径、`LegacyChangeIdSiblingError` 哨兵在 init 时容忍 misplaced 数据、auto-compact 真正压主会话上下文
339
- - 📋 路线图:Trae / Codex / Cursor 真实集成、`peaks-doc` / `peaks-i18n`、SOP 模板市场
340
-
341
- 详细看 [`CHANGELOG.md`](./CHANGELOG.md) 和 [`docs/`](./docs/)。
342
-
343
- ## 📄 许可
344
-
345
- [MIT](LICENSE) — 商用、改、私有 fork 都欢迎,保留版权即可。
346
-
347
- ## 💬 加入微信交流群
348
-
349
- 遇到使用问题、功能建议、或者想和other peaks-loop users直接交流?扫码加入 **Peaks-Loop** 微信群:
350
-
351
- <div align="center">
352
- <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Loop 微信群二维码" width="240" />
353
- </div>
354
-
355
- > 二维码图片过期后,欢迎在 GitHub Issues / Discussions 提反馈。
80
+ 你只需要把这一个仓库装好,后面每次跑新需求,都有现成的战术角色等你点。
356
81
 
357
82
  ---
358
83
 
359
- <div align="center">
360
-
361
- **觉得有用?**
362
-
363
- ⭐ [Star peaks-loop on GitHub](https://github.com/SquabbyZ/peaks-loop) · 🔍 [Browse on skills.sh](https://skills.sh/SquabbyZ/peaks-loop)
84
+ MIT License · Made by [SquabbyZ](https://github.com/SquabbyZ)
364
85
 
365
- </div>
86
+ - 全部技能清单 → [`skills/`](./skills/)
87
+ - 设计文档 → [`docs/`](./docs/)
88
+ - 更新日志 → [`CHANGELOG.md`](./CHANGELOG.md)
89
+ - 提问 → [GitHub Issues](https://github.com/SquabbyZ/peaks-loop/issues)
@@ -9,7 +9,7 @@ model: sonnet
9
9
 
10
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-loop 2.0 rules convention).
12
+ > **Project-internal pointer**: `skills/bee/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
 
@@ -223,7 +223,7 @@ karpathy-reviewer summary:
223
223
  ## 10. References
224
224
 
225
225
  - Canonical 4-guideline text: `andrej-karpathy-skills:karpathy-guidelines` skill id; full text in `skills/andrej-karpathy-src/skills/karpathy-guidelines/SKILL.md`.
226
- - Sub-agent dispatch contract: `skills/peaks-rd/references/rd-sub-agent-dispatch.md` §"Karpathy-guidelines context".
227
- - 5-way fanout integration: `skills/peaks-rd/references/rd-fanout-contracts.md` §"karpathy-reviewer contract (Slice 5/6)".
226
+ - Sub-agent dispatch contract: `skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md` §"Karpathy-guidelines context".
227
+ - 5-way fanout integration: `skills/bee/peaks-rd/references/rd-fanout-contracts.md` §"karpathy-reviewer contract (Slice 5/6)".
228
228
  - CLI gate: `KARPATHY_REVIEW` prereq in `src/services/artifacts/artifact-prerequisites.ts` (title-case `mustContain`).
229
229
  - Structural scanner (companion): `peaks scan karpathy` reads `rd/karpathy-review.md` and emits a similar markdown report; the structural scanner is **not** a replacement for this reviewer — it covers regex / file-presence checks, not the semantic judgement this reviewer provides.
@@ -12,6 +12,24 @@ export type ProgramIO = {
12
12
  export declare function printResult<T>(io: ProgramIO, result: ResultEnvelope<T>, asJson?: boolean): void;
13
13
  export declare function addJsonOption(command: Command): Command;
14
14
  export declare function failUnsupportedNonDryRun(io: ProgramIO, command: string, asJson?: boolean): void;
15
+ /** CLI shim helper: render a `{ ok: boolean, error?, data? }` envelope
16
+ * and set `process.exitCode = 1` on failure.
17
+ *
18
+ * Library functions MUST return envelopes like `{ ok, error?, data? }`
19
+ * and MUST NOT mutate `process.exitCode` themselves. The shim (the
20
+ * Commander `.action()` callback in `register*Commands`) owns the
21
+ * process-exit side-effect so the library can be re-used from non-CLI
22
+ * contexts (vitest, programmatic dispatch, plugin loading).
23
+ *
24
+ * Output format mirrors the existing `registerSedimentCommands` shim:
25
+ * a JSON envelope on stdout (one line, parseable), nothing else.
26
+ */
27
+ export interface CliEnvelope {
28
+ ok: boolean;
29
+ error?: string;
30
+ data?: unknown;
31
+ }
32
+ export declare function printCliEnvelope(io: ProgramIO, r: CliEnvelope): void;
15
33
  export declare function isRecommendationWorkflow(value: string): value is RecommendationWorkflow;
16
34
  export declare function isArtifactProvider(value: string): value is ArtifactProvider;
17
35
  export declare function isArtifactSetupStep(value: string): value is GuidedArtifactSetup['step'];
@@ -27,6 +27,14 @@ export function failUnsupportedNonDryRun(io, command, asJson) {
27
27
  printResult(io, fail(command, 'UNSUPPORTED_NON_DRY_RUN', 'Only dry-run planning is supported', {}, ['Rerun with --dry-run or omit --no-dry-run']), asJson);
28
28
  process.exitCode = 1;
29
29
  }
30
+ export function printCliEnvelope(io, r) {
31
+ if (r.ok) {
32
+ io.stdout(JSON.stringify({ ok: true, data: r.data ?? null }));
33
+ return;
34
+ }
35
+ io.stdout(JSON.stringify({ ok: false, error: r.error }));
36
+ process.exitCode = 1;
37
+ }
30
38
  export function isRecommendationWorkflow(value) {
31
39
  return value === 'code-refactor' || value === 'product-refactor' || value === 'frontend-design';
32
40
  }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `peaks skill adapter <verb>` — adapter selection + detection CLI.
3
+ *
4
+ * Slice 2026-07-04-cli-15a (Task 15a of the 18-verb plan). Two verbs:
5
+ *
6
+ * list — return the known adapter id list
7
+ * set-active — record which adapter is currently active
8
+ *
9
+ * Unknown verbs return an empty result so program.ts can render a
10
+ * NOT_FOUND envelope without throwing.
11
+ */
12
+ import type { Command } from "commander";
13
+ import type { ProgramIO } from "../cli-helpers.js";
14
+ export interface AdapterResult {
15
+ adapters?: string[];
16
+ active?: string;
17
+ }
18
+ /** Dispatch an adapter verb. `home` is accepted for API symmetry
19
+ * with runSediment, but the in-scope verbs don't read from disk yet. */
20
+ export declare function runAdapter(argv: string[], { home: _home }: {
21
+ home: string;
22
+ }): Promise<AdapterResult>;
23
+ /** Register the `peaks skill adapter <verb>` subcommand group.
24
+ *
25
+ * Matches the pattern used by sediment-commands.ts: the `skill`
26
+ * parent command is reused when present, created lazily otherwise.
27
+ * See src/cli/commands/workflow-plan-commands.ts:179 for the
28
+ * precedent.
29
+ */
30
+ export declare function registerAdapterCommands(program: Command, io: ProgramIO): void;
@@ -0,0 +1,35 @@
1
+ /** Dispatch an adapter verb. `home` is accepted for API symmetry
2
+ * with runSediment, but the in-scope verbs don't read from disk yet. */
3
+ export async function runAdapter(argv, { home: _home }) {
4
+ const verb = argv[0];
5
+ if (verb === "list") {
6
+ return { adapters: ["claude", "codex", "copilot"] };
7
+ }
8
+ if (verb === "set-active") {
9
+ const name = argv[1];
10
+ if (name === undefined)
11
+ return {};
12
+ return { active: name };
13
+ }
14
+ return {};
15
+ }
16
+ /** Register the `peaks skill adapter <verb>` subcommand group.
17
+ *
18
+ * Matches the pattern used by sediment-commands.ts: the `skill`
19
+ * parent command is reused when present, created lazily otherwise.
20
+ * See src/cli/commands/workflow-plan-commands.ts:179 for the
21
+ * precedent.
22
+ */
23
+ export function registerAdapterCommands(program, io) {
24
+ const existingSkill = program.commands.find((c) => c.name() === "skill");
25
+ const skill = existingSkill ??
26
+ program.command("skill").description("Manage Peaks skills");
27
+ skill
28
+ .command("adapter <args...>")
29
+ .description("Adapter selection and detection")
30
+ .action(async (args) => {
31
+ const home = process.env.HOME ?? process.env.USERPROFILE ?? process.cwd();
32
+ const r = await runAdapter(args, { home });
33
+ io.stdout(JSON.stringify(r));
34
+ });
35
+ }
@@ -7,7 +7,7 @@
7
7
  * - L2: index (just names + paths)
8
8
  * - L3: fuzzy search by query (delegates to peaks memory search)
9
9
  *
10
- * The LLM-side UX layer (peaks-solo / peaks-ide) picks the layer based
10
+ * The LLM-side UX layer (peaks-code / peaks-ide) picks the layer based
11
11
  * on the L1a task level:
12
12
  * - typo: L0 only (a few lines)
13
13
  * - bug: L0 + L1
@@ -7,7 +7,7 @@
7
7
  * - L2: index (just names + paths)
8
8
  * - L3: fuzzy search by query (delegates to peaks memory search)
9
9
  *
10
- * The LLM-side UX layer (peaks-solo / peaks-ide) picks the layer based
10
+ * The LLM-side UX layer (peaks-code / peaks-ide) picks the layer based
11
11
  * on the L1a task level:
12
12
  * - typo: L0 only (a few lines)
13
13
  * - bug: L0 + L1
@@ -17,7 +17,7 @@
17
17
  * via the standard `ok` / `fail` envelope used across peaks-loop.
18
18
  *
19
19
  * Skill-first / CLI-auxiliary red line: users do not invoke this
20
- * directly. The peaks-solo / peaks-rd LLM-side runner (the
20
+ * directly. The peaks-code / peaks-rd LLM-side runner (the
21
21
  * IDE-resident sub-agent that finished a slice) calls this command
22
22
  * after the slice completes.
23
23
  */
@@ -16,7 +16,7 @@ export function registerContractCommands(program, io) {
16
16
  const contract = program
17
17
  .command('contract')
18
18
  .description('Slice contract store (skill-first / CLI-auxiliary). These commands ' +
19
- 'are primitives that peaks-solo / peaks-rd SKILL.md compose. The LLM-side ' +
19
+ 'are primitives that peaks-code / peaks-rd SKILL.md compose. The LLM-side ' +
20
20
  'runner (the IDE-resident sub-agent that finished a slice) calls ' +
21
21
  '`peaks contract write` to persist the slice\'s public surface; the ' +
22
22
  'orchestrator picks it up on the next dispatch run via listContracts() ' +
@@ -14,6 +14,12 @@ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.j
14
14
  import { registerSessionCheckpointCommand } from '../session-checkpoint-command.js';
15
15
  import { registerSessionResumeCommand } from '../session-resume-command.js';
16
16
  import { registerSessionAutoCompactHookCommand } from '../session-auto-compact-hook-command.js';
17
+ // Slice 2 of the peaks-code → peaks-code rename plan: register the
18
+ // `peaks session migrate-skill-name` subcommand eagerly alongside
19
+ // checkpoint / resume / auto-compact-hook so it appears in
20
+ // `peaks session --help` for LLM `<TAB>`-discovery. See
21
+ // src/services/migrate-skill-name/.
22
+ import { registerSessionMigrateSkillNameCommand } from '../session-migrate-skill-name.js';
17
23
  export function registerSessionCommand(program, io) {
18
24
  const session = program.command('session').description('Manage Peaks session directories');
19
25
  addJsonOption(session
@@ -192,6 +198,12 @@ export function registerSessionCommand(program, io) {
192
198
  // it eager (same fix as checkpoint + resume) so `peaks session --help`
193
199
  // lists it for LLM `<TAB>`-discovery.
194
200
  registerSessionAutoCompactHookCommand(session);
201
+ // Slice 2 of the peaks-code → peaks-code rename plan:
202
+ // `peaks session migrate-skill-name --from <old> --to <new>
203
+ // [--apply] [--project <path>] [--json]`. Idempotent rewrite of
204
+ // .peaks/_runtime/** for the rename; skipped paths recorded in
205
+ // the response envelope. See src/services/migrate-skill-name/.
206
+ registerSessionMigrateSkillNameCommand(session);
195
207
  addJsonOption(session
196
208
  .command('rotate')
197
209
  .description('Drop the project-level session binding so the next peaks call auto-generates a fresh session id. The on-disk session directory is left intact — only .peaks/.session.json is removed.')