peaks-loop 3.1.2 → 4.0.0-beta.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 (344) hide show
  1. package/.claude-plugin/marketplace.json +62 -12
  2. package/CHANGELOG.md +148 -116
  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/{solo-commands.d.ts → code-commands.d.ts} +25 -25
  11. package/dist/src/cli/commands/{solo-commands.js → code-commands.js} +82 -82
  12. package/dist/src/cli/commands/context-commands.d.ts +1 -1
  13. package/dist/src/cli/commands/context-commands.js +1 -1
  14. package/dist/src/cli/commands/contract-commands.d.ts +1 -1
  15. package/dist/src/cli/commands/contract-commands.js +1 -1
  16. package/dist/src/cli/commands/core/session-command.js +12 -0
  17. package/dist/src/cli/commands/core/skill-command.js +4 -4
  18. package/dist/src/cli/commands/dispatch-commands.js +2 -2
  19. package/dist/src/cli/commands/dispatch-from-dag.js +1 -1
  20. package/dist/src/cli/commands/hook-handle.js +7 -7
  21. package/dist/src/cli/commands/job-commands.js +7 -7
  22. package/dist/src/cli/commands/observability-commands.js +1 -1
  23. package/dist/src/cli/commands/perf-audit-commands.js +2 -2
  24. package/dist/src/cli/commands/security-audit-commands.js +2 -2
  25. package/dist/src/cli/commands/sediment-commands.d.ts +80 -0
  26. package/dist/src/cli/commands/sediment-commands.js +640 -0
  27. package/dist/src/cli/commands/session-auto-compact-hook-command.js +2 -2
  28. package/dist/src/cli/commands/session-migrate-skill-name.d.ts +17 -0
  29. package/dist/src/cli/commands/session-migrate-skill-name.js +41 -0
  30. package/dist/src/cli/commands/skill-visibility.d.ts +8 -0
  31. package/dist/src/cli/commands/skill-visibility.js +63 -0
  32. package/dist/src/cli/commands/slice-commands.js +2 -2
  33. package/dist/src/cli/commands/sub-agent-commands.d.ts +1 -1
  34. package/dist/src/cli/commands/sub-agent-commands.js +1 -1
  35. package/dist/src/cli/commands/sub-agent-shared.d.ts +1 -1
  36. package/dist/src/cli/commands/understand-commands.js +1 -1
  37. package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
  38. package/dist/src/cli/commands/upgrade-commands.js +3 -3
  39. package/dist/src/cli/commands/user-touchpoint-commands.d.ts +4 -4
  40. package/dist/src/cli/commands/user-touchpoint-commands.js +15 -15
  41. package/dist/src/cli/commands/verdict-aggregate-command.d.ts +1 -1
  42. package/dist/src/cli/commands/verdict-aggregate-command.js +2 -2
  43. package/dist/src/cli/commands/workflow-commands.js +23 -23
  44. package/dist/src/cli/commands/workspace/init-command.d.ts +3 -3
  45. package/dist/src/cli/commands/workspace/init-command.js +7 -7
  46. package/dist/src/cli/program.js +24 -7
  47. package/dist/src/services/adapter/adapter.d.ts +27 -0
  48. package/dist/src/services/adapter/adapter.js +5 -0
  49. package/dist/src/services/adapter/auto-adapter.d.ts +11 -0
  50. package/dist/src/services/adapter/auto-adapter.js +15 -0
  51. package/dist/src/services/adapter/claude-adapter.d.ts +14 -0
  52. package/dist/src/services/adapter/claude-adapter.js +40 -0
  53. package/dist/src/services/adapter/codex-adapter.d.ts +14 -0
  54. package/dist/src/services/adapter/codex-adapter.js +14 -0
  55. package/dist/src/services/adapter/copilot-adapter.d.ts +14 -0
  56. package/dist/src/services/adapter/copilot-adapter.js +14 -0
  57. package/dist/src/services/artifacts/repair-cycle-service.js +1 -1
  58. package/dist/src/services/audit/enforcers/active-skill-resolver.d.ts +1 -1
  59. package/dist/src/services/audit/enforcers/active-skill-resolver.js +1 -1
  60. package/dist/src/services/audit/enforcers/{solo-code-ban.d.ts → code-ban.d.ts} +6 -6
  61. package/dist/src/services/audit/enforcers/{solo-code-ban.js → code-ban.js} +6 -6
  62. package/dist/src/services/audit/red-line-catalog.d.ts +2 -2
  63. package/dist/src/services/audit/red-line-catalog.js +6 -6
  64. package/dist/src/services/audit/scanners/skills-tree-scanner.js +22 -0
  65. package/dist/src/services/audit/types.d.ts +2 -2
  66. package/dist/src/services/{solo → code}/auto-compact-orchestrator.d.ts +2 -2
  67. package/dist/src/services/{solo → code}/auto-compact-orchestrator.js +5 -5
  68. package/dist/src/services/{solo → code}/dag-orchestrator.d.ts +4 -4
  69. package/dist/src/services/{solo → code}/dag-orchestrator.js +5 -5
  70. package/dist/src/services/{solo → code}/emit-handoff.d.ts +1 -1
  71. package/dist/src/services/{solo → code}/emit-handoff.js +1 -1
  72. package/dist/src/services/{solo → code}/job-shape-decision.d.ts +1 -1
  73. package/dist/src/services/{solo → code}/job-shape-decision.js +5 -5
  74. package/dist/src/services/{solo → code}/mode-gate.d.ts +11 -11
  75. package/dist/src/services/{solo → code}/mode-gate.js +5 -5
  76. package/dist/src/services/{solo → code}/post-compact-detector.d.ts +3 -3
  77. package/dist/src/services/{solo → code}/post-compact-detector.js +6 -6
  78. package/dist/src/services/{solo → code}/status-line-renderer.d.ts +4 -4
  79. package/dist/src/services/{solo → code}/step-08-gate.d.ts +4 -4
  80. package/dist/src/services/{solo → code}/step-08-gate.js +4 -4
  81. package/dist/src/services/{solo → code}/user-touchpoint-classifier.d.ts +1 -1
  82. package/dist/src/services/{solo → code}/user-touchpoint-classifier.js +1 -1
  83. package/dist/src/services/context/auto-compact-dispatcher.d.ts +3 -3
  84. package/dist/src/services/context/auto-compact-dispatcher.js +2 -2
  85. package/dist/src/services/context/auto-compact-types.d.ts +1 -1
  86. package/dist/src/services/dispatch/batch-counter.js +1 -1
  87. package/dist/src/services/dispatch/leak-detector.js +1 -1
  88. package/dist/src/services/dispatch/slice-dag.d.ts +2 -2
  89. package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
  90. package/dist/src/services/dispatch/test-tool-detection.js +1 -1
  91. package/dist/src/services/doctor/doctor-service.js +2 -2
  92. package/dist/src/services/feedback/feedback-promotion-service.js +2 -2
  93. package/dist/src/services/job/job-progress-store.d.ts +1 -1
  94. package/dist/src/services/job/job-progress-store.js +1 -1
  95. package/dist/src/services/job/job-resource-snapshot.js +29 -1
  96. package/dist/src/services/memory/project-memory-service.js +1 -1
  97. package/dist/src/services/migrate-skill-name/migrate.d.ts +17 -0
  98. package/dist/src/services/migrate-skill-name/migrate.js +152 -0
  99. package/dist/src/services/migrate-skill-name/schema.d.ts +42 -0
  100. package/dist/src/services/migrate-skill-name/schema.js +25 -0
  101. package/dist/src/services/observability/aggregation.d.ts +1 -1
  102. package/dist/src/services/observability/aggregation.js +1 -1
  103. package/dist/src/services/perf/perf-baseline-service.d.ts +1 -1
  104. package/dist/src/services/perf/perf-baseline-service.js +1 -1
  105. package/dist/src/services/prd/handoff-types.d.ts +1 -1
  106. package/dist/src/services/prd/handoff-types.js +1 -1
  107. package/dist/src/services/preferences/preferences-service.d.ts +1 -1
  108. package/dist/src/services/preferences/preferences-types.d.ts +1 -1
  109. package/dist/src/services/progress/progress-service.d.ts +1 -1
  110. package/dist/src/services/progress/progress-service.js +1 -1
  111. package/dist/src/services/rd/standards-diagnostic.d.ts +1 -1
  112. package/dist/src/services/rd/standards-diagnostic.js +3 -3
  113. package/dist/src/services/recommendations/capability-seed-items.js +1 -1
  114. package/dist/src/services/recommendations/capability-seed-mappings.js +1 -1
  115. package/dist/src/services/recommendations/recommendation-service.js +1 -1
  116. package/dist/src/services/refactor/refactor-service.d.ts +1 -1
  117. package/dist/src/services/sc/sc-service.js +1 -1
  118. package/dist/src/services/sediment/dispose-confirm.d.ts +9 -0
  119. package/dist/src/services/sediment/dispose-confirm.js +5 -0
  120. package/dist/src/services/sediment/json-schema.d.ts +247 -0
  121. package/dist/src/services/sediment/json-schema.js +26 -0
  122. package/dist/src/services/sediment/manifest-lint.d.ts +13 -0
  123. package/dist/src/services/sediment/manifest-lint.js +11 -0
  124. package/dist/src/services/sediment/pool-paths.d.ts +22 -0
  125. package/dist/src/services/sediment/pool-paths.js +25 -0
  126. package/dist/src/services/sediment/pool-read.d.ts +20 -0
  127. package/dist/src/services/sediment/pool-read.js +73 -0
  128. package/dist/src/services/sediment/pool-rebuild-index.d.ts +15 -0
  129. package/dist/src/services/sediment/pool-rebuild-index.js +28 -0
  130. package/dist/src/services/sediment/pool-write.d.ts +14 -0
  131. package/dist/src/services/sediment/pool-write.js +25 -0
  132. package/dist/src/services/sediment/promotion-gate.d.ts +12 -0
  133. package/dist/src/services/sediment/promotion-gate.js +20 -0
  134. package/dist/src/services/sediment/types.d.ts +52 -0
  135. package/dist/src/services/sediment/types.js +1 -0
  136. package/dist/src/services/session/binding-store.d.ts +1 -1
  137. package/dist/src/services/session/binding-store.js +1 -1
  138. package/dist/src/services/session/caller-id-types.d.ts +1 -1
  139. package/dist/src/services/session/session-manager.d.ts +1 -1
  140. package/dist/src/services/session/session-manager.js +1 -1
  141. package/dist/src/services/signal/cancel-handler.js +3 -3
  142. package/dist/src/services/skill/resume-detector.js +2 -2
  143. package/dist/src/services/skill/skill-scheduler.d.ts +1 -1
  144. package/dist/src/services/skill/skill-scheduler.js +1 -1
  145. package/dist/src/services/skillhub/release-diff.d.ts +18 -0
  146. package/dist/src/services/skillhub/release-diff.js +38 -0
  147. package/dist/src/services/skillhub/release-export.d.ts +8 -0
  148. package/dist/src/services/skillhub/release-export.js +31 -0
  149. package/dist/src/services/skillhub/release-gc-blobs.d.ts +13 -0
  150. package/dist/src/services/skillhub/release-gc-blobs.js +32 -0
  151. package/dist/src/services/skillhub/release-import.d.ts +7 -0
  152. package/dist/src/services/skillhub/release-import.js +59 -0
  153. package/dist/src/services/skillhub/release-retain.d.ts +23 -0
  154. package/dist/src/services/skillhub/release-retain.js +89 -0
  155. package/dist/src/services/skillhub/sqlite-store.d.ts +22 -0
  156. package/dist/src/services/skillhub/sqlite-store.js +47 -0
  157. package/dist/src/services/skillhub/tar-runtime.d.ts +21 -0
  158. package/dist/src/services/skillhub/tar-runtime.js +91 -0
  159. package/dist/src/services/skillhub/types.d.ts +105 -0
  160. package/dist/src/services/skillhub/types.js +1 -0
  161. package/dist/src/services/skills/skill-conformance-service.js +8 -5
  162. package/dist/src/services/skills/skill-presence-service.d.ts +5 -5
  163. package/dist/src/services/skills/skill-presence-service.js +2 -2
  164. package/dist/src/services/skills/skill-registry.js +27 -0
  165. package/dist/src/services/skills/skill-runbook-service.js +2 -2
  166. package/dist/src/services/slice/slice-check-service.js +1 -1
  167. package/dist/src/services/slice/slice-check-types.d.ts +1 -1
  168. package/dist/src/services/slice/slice-check-types.js +1 -1
  169. package/dist/src/services/slice/slice-decompose-types.d.ts +1 -1
  170. package/dist/src/services/slice/slice-decompose-types.js +1 -1
  171. package/dist/src/services/standards/missing-standards-detector.d.ts +1 -1
  172. package/dist/src/services/standards/missing-standards-detector.js +1 -1
  173. package/dist/src/services/standards/project-standards-service.d.ts +1 -1
  174. package/dist/src/services/standards/project-standards-service.js +4 -4
  175. package/dist/src/services/understand/understand-types.d.ts +1 -1
  176. package/dist/src/services/upgrade/1x-detector-service.js +2 -2
  177. package/dist/src/services/upgrade/upgrade-service.d.ts +34 -0
  178. package/dist/src/services/upgrade/upgrade-service.js +52 -30
  179. package/dist/src/services/verdict/verdict-aggregator.d.ts +1 -1
  180. package/dist/src/services/workflow/pipeline-verify-service.d.ts +1 -1
  181. package/dist/src/services/workflow/pipeline-verify-service.js +3 -3
  182. package/dist/src/services/workflow/workflow-autonomous-service.d.ts +3 -3
  183. package/dist/src/services/workflow/workflow-autonomous-service.js +2 -2
  184. package/dist/src/services/workflow/workflow-router-service.d.ts +7 -7
  185. package/dist/src/services/workflow/workflow-router-service.js +33 -33
  186. package/dist/src/services/workspace/claude-settings-template.d.ts +2 -2
  187. package/dist/src/services/workspace/claude-settings-template.js +7 -7
  188. package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +1 -1
  189. package/dist/src/services/workspace/workspace-claude-settings-materializer.js +1 -1
  190. package/dist/src/services/workspace/workspace-service.d.ts +4 -4
  191. package/dist/src/services/workspace/workspace-service.js +2 -2
  192. package/dist/src/shared/paths.d.ts +1 -1
  193. package/dist/src/shared/paths.js +1 -1
  194. package/dist/src/shared/version.d.ts +1 -1
  195. package/dist/src/shared/version.js +1 -1
  196. package/dist/src/skills/peaks-maker/index.d.ts +5 -0
  197. package/dist/src/skills/peaks-maker/index.js +32 -0
  198. package/output-styles/peaks-skill-swarm.md +3 -3
  199. package/package.json +8 -3
  200. package/scripts/install-skills.mjs +29 -4
  201. package/skills/{peaks-prd → bee/peaks-prd}/SKILL.md +8 -2
  202. package/skills/{peaks-prd → bee/peaks-prd}/references/workflow.md +1 -1
  203. package/skills/{peaks-qa → bee/peaks-qa}/SKILL.md +10 -4
  204. package/skills/{peaks-qa → bee/peaks-qa}/references/artifact-per-request.md +3 -3
  205. package/skills/{peaks-qa → bee/peaks-qa}/references/browser-validation-contracts.md +2 -2
  206. package/skills/{peaks-qa → bee/peaks-qa}/references/external-capability-guidance.md +1 -1
  207. package/skills/{peaks-qa → bee/peaks-qa}/references/qa-fanout-contract.md +3 -3
  208. package/skills/{peaks-qa → bee/peaks-qa}/references/qa-sub-agent-dispatch.md +7 -7
  209. package/skills/{peaks-rd → bee/peaks-rd}/SKILL.md +13 -6
  210. package/skills/{peaks-rd → bee/peaks-rd}/references/browser-self-test-contracts.md +1 -1
  211. package/skills/{peaks-rd → bee/peaks-rd}/references/mock-data-placement.md +1 -1
  212. package/skills/{peaks-rd → bee/peaks-rd}/references/parallel-review-fanout.md +1 -1
  213. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-fanout-contracts.md +1 -1
  214. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-runbook.md +2 -2
  215. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-sub-agent-dispatch.md +13 -13
  216. package/skills/{peaks-rd → bee/peaks-rd}/references/rd-transition-gates.md +2 -2
  217. package/skills/{peaks-rd → bee/peaks-rd}/references/skill-presence-and-title.md +1 -1
  218. package/skills/{peaks-reviewer → bee/peaks-reviewer}/SKILL.md +2 -2
  219. package/skills/{peaks-sc → bee/peaks-sc}/SKILL.md +8 -2
  220. package/skills/{peaks-txt → bee/peaks-txt}/SKILL.md +11 -5
  221. package/skills/{peaks-ui → bee/peaks-ui}/SKILL.md +19 -13
  222. package/skills/peaks-audit/SKILL.md +1 -1
  223. package/skills/{peaks-solo → peaks-code}/SKILL.md +29 -29
  224. package/skills/{peaks-solo → peaks-code}/references/a2a-artifact-mapping.md +2 -2
  225. package/skills/{peaks-solo → peaks-code}/references/anchoring-and-session-info.md +6 -6
  226. package/skills/{peaks-solo → peaks-code}/references/artifact-contracts.md +3 -3
  227. package/skills/{peaks-solo → peaks-code}/references/boundaries.md +3 -3
  228. package/skills/{peaks-solo → peaks-code}/references/browser-workflow.md +1 -1
  229. package/skills/{peaks-solo → peaks-code}/references/codegraph-orchestration.md +1 -1
  230. package/skills/peaks-code/references/command-migration.md +3 -0
  231. package/skills/{peaks-solo → peaks-code}/references/completion-handoff.md +2 -2
  232. package/skills/{peaks-solo → peaks-code}/references/context-governance.md +2 -2
  233. package/skills/{peaks-solo → peaks-code}/references/dag-orchestrator.md +7 -7
  234. package/skills/{peaks-solo → peaks-code}/references/external-references.md +2 -2
  235. package/skills/{peaks-solo → peaks-code}/references/fanout-mandatory.md +3 -3
  236. package/skills/{peaks-solo → peaks-code}/references/fast-mode.md +2 -2
  237. package/skills/{peaks-solo → peaks-code}/references/frontend-only-mode.md +10 -10
  238. package/skills/{peaks-solo → peaks-code}/references/job-loop.md +1 -1
  239. package/skills/{peaks-solo → peaks-code}/references/local-artifact-workspace.md +3 -3
  240. package/skills/{peaks-solo → peaks-code}/references/micro-cycle.md +23 -23
  241. package/skills/{peaks-solo → peaks-code}/references/mode-selection-with-stale-presence.md +16 -16
  242. package/skills/{peaks-solo → peaks-code}/references/mode-selection.md +4 -4
  243. package/skills/{peaks-solo → peaks-code}/references/openspec-workflow.md +17 -17
  244. package/skills/{peaks-solo → peaks-code}/references/periodic-checkpoint.md +4 -4
  245. package/skills/{peaks-solo → peaks-code}/references/project-scan-checklist.md +1 -1
  246. package/skills/{peaks-solo → peaks-code}/references/quality-gate-cheatsheet.md +1 -1
  247. package/skills/{peaks-solo → peaks-code}/references/refactor-mode.md +2 -2
  248. package/skills/{peaks-solo → peaks-code}/references/resume-detection.md +1 -1
  249. package/skills/{peaks-solo → peaks-code}/references/runbook.md +20 -20
  250. package/skills/{peaks-solo → peaks-code}/references/skill-presence-and-title.md +3 -3
  251. package/skills/{peaks-solo → peaks-code}/references/standards-preflight.md +1 -1
  252. package/skills/{peaks-solo → peaks-code}/references/step-0-55-1x-detection.md +6 -6
  253. package/skills/{peaks-solo → peaks-code}/references/step-0-8-gate.md +11 -11
  254. package/skills/{peaks-solo → peaks-code}/references/sub-agent-dispatch.md +17 -17
  255. package/skills/{peaks-solo → peaks-code}/references/swarm-dispatch-contract.md +22 -22
  256. package/skills/{peaks-solo → peaks-code}/references/workflow-gates-and-types.md +4 -4
  257. package/skills/{peaks-solo → peaks-code}/references/workflow.md +5 -5
  258. package/skills/peaks-doctor/SKILL.md +1 -1
  259. package/skills/peaks-doctor/references/doctor-check-catalog.md +1 -1
  260. package/skills/peaks-final-review/SKILL.md +3 -3
  261. package/skills/peaks-final-review/references/4-dimensions.md +1 -1
  262. package/skills/peaks-ide/SKILL.md +1 -1
  263. package/skills/{peaks-solo-resume → peaks-resume}/SKILL.md +15 -15
  264. package/skills/peaks-sop/SKILL.md +1 -1
  265. package/skills/{peaks-solo-status → peaks-status}/SKILL.md +14 -14
  266. package/skills/{peaks-solo-test → peaks-test}/SKILL.md +12 -12
  267. package/skills/peaks-solo/references/command-migration.md +0 -3
  268. /package/dist/src/services/{solo → code}/batch-heartbeat-poller.d.ts +0 -0
  269. /package/dist/src/services/{solo → code}/batch-heartbeat-poller.js +0 -0
  270. /package/dist/src/services/{solo → code}/status-line-renderer.js +0 -0
  271. /package/skills/{peaks-perf-audit → bee/peaks-perf-audit}/SKILL.md +0 -0
  272. /package/skills/{peaks-perf-audit → bee/peaks-perf-audit}/references/audit-protocol.md +0 -0
  273. /package/skills/{peaks-prd → bee/peaks-prd}/references/artifact-contracts.md +0 -0
  274. /package/skills/{peaks-prd → bee/peaks-prd}/references/artifact-per-request.md +0 -0
  275. /package/skills/{peaks-prd → bee/peaks-prd}/references/command-migration.md +0 -0
  276. /package/skills/{peaks-prd → bee/peaks-prd}/references/prd-for-multi-pass.md +0 -0
  277. /package/skills/{peaks-qa → bee/peaks-qa}/references/artifact-contracts.md +0 -0
  278. /package/skills/{peaks-qa → bee/peaks-qa}/references/codegraph-regression-focus.md +0 -0
  279. /package/skills/{peaks-qa → bee/peaks-qa}/references/command-migration.md +0 -0
  280. /package/skills/{peaks-qa → bee/peaks-qa}/references/openspec-validation-gate.md +0 -0
  281. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-compact-handoff.md +0 -0
  282. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-context-governance.md +0 -0
  283. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-gstack-integration.md +0 -0
  284. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-local-artifacts.md +0 -0
  285. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-matt-pocock-integration.md +0 -0
  286. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-perf-test-plan.md +0 -0
  287. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-refactor-role.md +0 -0
  288. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-runbook.md +0 -0
  289. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-security-test-plan.md +0 -0
  290. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-skill-presence.md +0 -0
  291. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-standards-preflight.md +0 -0
  292. /package/skills/{peaks-qa → bee/peaks-qa}/references/qa-transition-gates.md +0 -0
  293. /package/skills/{peaks-qa → bee/peaks-qa}/references/reading-handoff-frontmatter.md +0 -0
  294. /package/skills/{peaks-qa → bee/peaks-qa}/references/regression-gates.md +0 -0
  295. /package/skills/{peaks-qa → bee/peaks-qa}/references/requirement-boundary-recheck.md +0 -0
  296. /package/skills/{peaks-qa → bee/peaks-qa}/references/test-case-generation.md +0 -0
  297. /package/skills/{peaks-qa → bee/peaks-qa}/references/test-report-output.md +0 -0
  298. /package/skills/{peaks-rd → bee/peaks-rd}/references/artifact-and-standards-output.md +0 -0
  299. /package/skills/{peaks-rd → bee/peaks-rd}/references/artifact-contracts.md +0 -0
  300. /package/skills/{peaks-rd → bee/peaks-rd}/references/artifact-per-request.md +0 -0
  301. /package/skills/{peaks-rd → bee/peaks-rd}/references/browser-action-wrapper.md +0 -0
  302. /package/skills/{peaks-rd → bee/peaks-rd}/references/code-reviewer-4dim-hint.md +0 -0
  303. /package/skills/{peaks-rd → bee/peaks-rd}/references/codegraph-project-analysis.md +0 -0
  304. /package/skills/{peaks-rd → bee/peaks-rd}/references/command-migration.md +0 -0
  305. /package/skills/{peaks-rd → bee/peaks-rd}/references/compact-handoff.md +0 -0
  306. /package/skills/{peaks-rd → bee/peaks-rd}/references/external-references.md +0 -0
  307. /package/skills/{peaks-rd → bee/peaks-rd}/references/frontend-project-generation.md +0 -0
  308. /package/skills/{peaks-rd → bee/peaks-rd}/references/karpathy-reviewer-prompt.md +0 -0
  309. /package/skills/{peaks-rd → bee/peaks-rd}/references/library-version-awareness.md +0 -0
  310. /package/skills/{peaks-rd → bee/peaks-rd}/references/mandatory-perf-baseline.md +0 -0
  311. /package/skills/{peaks-rd → bee/peaks-rd}/references/matt-pocock-integration.md +0 -0
  312. /package/skills/{peaks-rd → bee/peaks-rd}/references/ocr-integration.md +0 -0
  313. /package/skills/{peaks-rd → bee/peaks-rd}/references/openspec-cli.md +0 -0
  314. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-context-governance.md +0 -0
  315. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-gstack-integration.md +0 -0
  316. /package/skills/{peaks-rd → bee/peaks-rd}/references/rd-standards-preflight.md +0 -0
  317. /package/skills/{peaks-rd → bee/peaks-rd}/references/reading-v2-slice-results.md +0 -0
  318. /package/skills/{peaks-rd → bee/peaks-rd}/references/refactor-workflow.md +0 -0
  319. /package/skills/{peaks-rd → bee/peaks-rd}/references/v2-12-fanout-collapse.md +0 -0
  320. /package/skills/{peaks-rd → bee/peaks-rd}/references/writing-handoff-frontmatter.md +0 -0
  321. /package/skills/{peaks-reviewer → bee/peaks-reviewer}/references/reviewer-prompt.md +0 -0
  322. /package/skills/{peaks-reviewer → bee/peaks-reviewer}/references/reviewer-schema.md +0 -0
  323. /package/skills/{peaks-sc → bee/peaks-sc}/references/artifact-contracts.md +0 -0
  324. /package/skills/{peaks-sc → bee/peaks-sc}/references/artifact-retention.md +0 -0
  325. /package/skills/{peaks-sc → bee/peaks-sc}/references/command-migration.md +0 -0
  326. /package/skills/{peaks-sc → bee/peaks-sc}/references/openspec-commit-boundaries.md +0 -0
  327. /package/skills/{peaks-security-audit → bee/peaks-security-audit}/SKILL.md +0 -0
  328. /package/skills/{peaks-security-audit → bee/peaks-security-audit}/references/audit-protocol.md +0 -0
  329. /package/skills/{peaks-txt → bee/peaks-txt}/references/artifact-contracts.md +0 -0
  330. /package/skills/{peaks-txt → bee/peaks-txt}/references/command-migration.md +0 -0
  331. /package/skills/{peaks-txt → bee/peaks-txt}/references/context-capsule.md +0 -0
  332. /package/skills/{peaks-ui → bee/peaks-ui}/references/artifact-contracts.md +0 -0
  333. /package/skills/{peaks-ui → bee/peaks-ui}/references/artifact-per-request.md +0 -0
  334. /package/skills/{peaks-ui → bee/peaks-ui}/references/command-migration.md +0 -0
  335. /package/skills/{peaks-ui → bee/peaks-ui}/references/workflow.md +0 -0
  336. /package/skills/{peaks-solo → peaks-code}/references/checkpoint-resume.md +0 -0
  337. /package/skills/{peaks-solo → peaks-code}/references/cross-date-session-check.md +0 -0
  338. /package/skills/{peaks-solo → peaks-code}/references/envelope-contract.md +0 -0
  339. /package/skills/{peaks-solo → peaks-code}/references/existing-system-extraction.md +0 -0
  340. /package/skills/{peaks-solo → peaks-code}/references/external-skill-invocation.md +0 -0
  341. /package/skills/{peaks-solo → peaks-code}/references/gstack-integration.md +0 -0
  342. /package/skills/{peaks-solo → peaks-code}/references/headroom-integration.md +0 -0
  343. /package/skills/{peaks-solo → peaks-code}/references/playwright-mcp-multi-terminal.md +0 -0
  344. /package/skills/{peaks-solo → peaks-code}/references/project-memory-loading.md +0 -0
@@ -0,0 +1,27 @@
1
+ export interface AdapterSegment {
2
+ name: string;
3
+ skillMd: string;
4
+ scripts: {
5
+ name: string;
6
+ content: string;
7
+ }[];
8
+ }
9
+ export interface AdapterEnvelope {
10
+ preamble: string;
11
+ refs: {
12
+ path: string;
13
+ kind: "file" | "dir" | "script";
14
+ }[];
15
+ }
16
+ export interface Adapter {
17
+ readonly name: "claude" | "codex" | "copilot" | "auto";
18
+ resolveScratchDir(beeName: string): Promise<string>;
19
+ materialize(beeName: string, env: AdapterEnvelope, segments: AdapterSegment[]): Promise<string>;
20
+ publish(scratchDir: string): Promise<string>;
21
+ activate(scratchDir: string): Promise<void>;
22
+ cleanup(scratchDir: string): Promise<void>;
23
+ detect(): Promise<boolean>;
24
+ }
25
+ export declare class ADAPTER_NOT_IMPLEMENTED extends Error {
26
+ constructor(adapter: string, method: string);
27
+ }
@@ -0,0 +1,5 @@
1
+ export class ADAPTER_NOT_IMPLEMENTED extends Error {
2
+ constructor(adapter, method) {
3
+ super(`ADAPTER_NOT_IMPLEMENTED: ${adapter}.${method} — stub until later slice`);
4
+ }
5
+ }
@@ -0,0 +1,11 @@
1
+ import { Adapter } from "./adapter.js";
2
+ type Detectable = Pick<Adapter, "name" | "detect">;
3
+ export declare class AutoAdapter {
4
+ private readonly _o;
5
+ private readonly _adapters;
6
+ constructor(_o: {
7
+ home: string;
8
+ }, _adapters: Detectable[]);
9
+ detectAndPick(): Promise<Detectable>;
10
+ }
11
+ export {};
@@ -0,0 +1,15 @@
1
+ export class AutoAdapter {
2
+ _o;
3
+ _adapters;
4
+ constructor(_o, _adapters) {
5
+ this._o = _o;
6
+ this._adapters = _adapters;
7
+ }
8
+ async detectAndPick() {
9
+ for (const a of this._adapters) {
10
+ if (await a.detect())
11
+ return a;
12
+ }
13
+ throw new Error("No adapter detected. Use `peaks skill adapter set-active <name>` to force one.");
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ import { Adapter, AdapterEnvelope, AdapterSegment } from "./adapter.js";
2
+ export declare class ClaudeAdapter implements Adapter {
3
+ private readonly opts;
4
+ readonly name: "claude";
5
+ constructor(opts: {
6
+ home: string;
7
+ });
8
+ detect(): Promise<boolean>;
9
+ resolveScratchDir(beeName: string): Promise<string>;
10
+ materialize(beeName: string, env: AdapterEnvelope, segments: AdapterSegment[]): Promise<string>;
11
+ publish(scratchDir: string): Promise<string>;
12
+ activate(_scratchDir: string): Promise<void>;
13
+ cleanup(scratchDir: string): Promise<void>;
14
+ }
@@ -0,0 +1,40 @@
1
+ import { writeFileSync, mkdirSync, rmSync, existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ export class ClaudeAdapter {
4
+ opts;
5
+ name = "claude";
6
+ constructor(opts) {
7
+ this.opts = opts;
8
+ }
9
+ async detect() {
10
+ return true; /* Claude is the default; ship this slice first */
11
+ }
12
+ async resolveScratchDir(beeName) {
13
+ return join(this.opts.home, ".claude", "skills", `peaks-bee-${beeName}.peaks-generated`);
14
+ }
15
+ async materialize(beeName, env, segments) {
16
+ const dir = await this.resolveScratchDir(beeName);
17
+ if (existsSync(dir))
18
+ rmSync(dir, { recursive: true, force: true });
19
+ mkdirSync(dir, { recursive: true });
20
+ const frontmatter = `---\nname: peaks-bee-${beeName}\ndescription: peaks-loop generated bee ${beeName} — see local SkillHub for source\n---\n\n`;
21
+ const body = `${env.preamble}\n\n` + segments.map((s) => s.skillMd).join("\n\n");
22
+ writeFileSync(join(dir, "SKILL.md"), frontmatter + body);
23
+ mkdirSync(join(dir, "scripts"), { recursive: true });
24
+ for (const s of segments) {
25
+ for (const sc of s.scripts)
26
+ writeFileSync(join(dir, "scripts", sc.name), sc.content);
27
+ }
28
+ return dir;
29
+ }
30
+ async publish(scratchDir) {
31
+ return scratchDir;
32
+ }
33
+ async activate(_scratchDir) {
34
+ /* no-op; runtime picks up by convention */
35
+ }
36
+ async cleanup(scratchDir) {
37
+ if (existsSync(scratchDir))
38
+ rmSync(scratchDir, { recursive: true, force: true });
39
+ }
40
+ }
@@ -0,0 +1,14 @@
1
+ import { Adapter } from "./adapter.js";
2
+ export declare class CodexAdapter implements Pick<Adapter, "name"> {
3
+ private readonly _o;
4
+ readonly name: "codex";
5
+ constructor(_o: {
6
+ home: string;
7
+ });
8
+ detect(): Promise<boolean>;
9
+ resolveScratchDir(): Promise<void>;
10
+ materialize(): Promise<void>;
11
+ publish(): Promise<void>;
12
+ activate(): Promise<void>;
13
+ cleanup(): Promise<void>;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { ADAPTER_NOT_IMPLEMENTED } from "./adapter.js";
2
+ export class CodexAdapter {
3
+ _o;
4
+ name = "codex";
5
+ constructor(_o) {
6
+ this._o = _o;
7
+ }
8
+ async detect() { return false; }
9
+ async resolveScratchDir() { throw new ADAPTER_NOT_IMPLEMENTED("codex", "resolveScratchDir"); }
10
+ async materialize() { throw new ADAPTER_NOT_IMPLEMENTED("codex", "materialize"); }
11
+ async publish() { throw new ADAPTER_NOT_IMPLEMENTED("codex", "publish"); }
12
+ async activate() { throw new ADAPTER_NOT_IMPLEMENTED("codex", "activate"); }
13
+ async cleanup() { throw new ADAPTER_NOT_IMPLEMENTED("codex", "cleanup"); }
14
+ }
@@ -0,0 +1,14 @@
1
+ import { Adapter } from "./adapter.js";
2
+ export declare class CopilotAdapter implements Pick<Adapter, "name"> {
3
+ private readonly _o;
4
+ readonly name: "copilot";
5
+ constructor(_o: {
6
+ home: string;
7
+ });
8
+ detect(): Promise<boolean>;
9
+ resolveScratchDir(): Promise<void>;
10
+ materialize(): Promise<void>;
11
+ publish(): Promise<void>;
12
+ activate(): Promise<void>;
13
+ cleanup(): Promise<void>;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { ADAPTER_NOT_IMPLEMENTED } from "./adapter.js";
2
+ export class CopilotAdapter {
3
+ _o;
4
+ name = "copilot";
5
+ constructor(_o) {
6
+ this._o = _o;
7
+ }
8
+ async detect() { return false; }
9
+ async resolveScratchDir() { throw new ADAPTER_NOT_IMPLEMENTED("copilot", "resolveScratchDir"); }
10
+ async materialize() { throw new ADAPTER_NOT_IMPLEMENTED("copilot", "materialize"); }
11
+ async publish() { throw new ADAPTER_NOT_IMPLEMENTED("copilot", "publish"); }
12
+ async activate() { throw new ADAPTER_NOT_IMPLEMENTED("copilot", "activate"); }
13
+ async cleanup() { throw new ADAPTER_NOT_IMPLEMENTED("copilot", "cleanup"); }
14
+ }
@@ -1,6 +1,6 @@
1
1
  import { showRequestArtifact } from './request-artifact-service.js';
2
2
  const DEFAULT_MAX_CYCLES = 3;
3
- // Matches transition notes Solo writes during repair routing.
3
+ // Matches transition notes Code writes during repair routing.
4
4
  // Format example:
5
5
  // - transition note (2026-05-25T08:00:00.000Z): QA return-to-rd cycle 1: failing acceptance items A, B
6
6
  // - transition note (2026-05-25T09:00:00.000Z): QA cycle 2: regression in module X
@@ -2,7 +2,7 @@
2
2
  * active-skill-resolver — utility for hook enforcers.
3
3
  *
4
4
  * Resolves the active peak skill name for the current session, so hook
5
- * enforcers (e.g. solo-code-ban) can decide whether to fire.
5
+ * enforcers (e.g. code-ban) can decide whether to fire.
6
6
  *
7
7
  * Per `src/services/session/caller-id-types.ts`: the active-skill file is
8
8
  * at `.peaks/_runtime/<peakSessionId>/active-skill-<callerId>.json`.
@@ -2,7 +2,7 @@
2
2
  * active-skill-resolver — utility for hook enforcers.
3
3
  *
4
4
  * Resolves the active peak skill name for the current session, so hook
5
- * enforcers (e.g. solo-code-ban) can decide whether to fire.
5
+ * enforcers (e.g. code-ban) can decide whether to fire.
6
6
  *
7
7
  * Per `src/services/session/caller-id-types.ts`: the active-skill file is
8
8
  * at `.peaks/_runtime/<peakSessionId>/active-skill-<callerId>.json`.
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Solo-code-ban enforcer — PreToolUse Bash guard.
2
+ * Code-commit-ban enforcer — PreToolUse Bash guard.
3
3
  *
4
4
  * Per L2 redesign §5.4. Deny `git commit` or `git apply` invocations from
5
- * a peaks-* skill. The Solo Code-Change Red Line says peaks-solo / peaks-rd
5
+ * a peaks-* skill. The Code Commit Ban Red Line says peaks-code / peaks-rd
6
6
  * are orchestrators, not implementers; the actual `git commit` step must
7
7
  * go through `peaks request transition`, which itself enforces spec-locked
8
8
  * + tech-doc-presence.
@@ -11,13 +11,13 @@
11
11
  * manifest read fails, the hook must fail-OPEN (warn + allow). The LLM is
12
12
  * never bricked by a peaks bug.
13
13
  */
14
- export interface SoloCodeBanInput {
14
+ export interface CodeBanInput {
15
15
  readonly skill: string;
16
16
  readonly command: string;
17
17
  }
18
- export interface SoloCodeBanResult {
18
+ export interface CodeBanResult {
19
19
  readonly denied: boolean;
20
20
  readonly reason: string;
21
21
  }
22
- export declare function isSoloCodeCommit(skill: string, command: string): boolean;
23
- export declare function evaluateSoloCodeBan(input: SoloCodeBanInput): SoloCodeBanResult;
22
+ export declare function isCodeCommit(skill: string, command: string): boolean;
23
+ export declare function evaluateCodeBan(input: CodeBanInput): CodeBanResult;
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Solo-code-ban enforcer — PreToolUse Bash guard.
2
+ * Code-commit-ban enforcer — PreToolUse Bash guard.
3
3
  *
4
4
  * Per L2 redesign §5.4. Deny `git commit` or `git apply` invocations from
5
- * a peaks-* skill. The Solo Code-Change Red Line says peaks-solo / peaks-rd
5
+ * a peaks-* skill. The Code Commit Ban Red Line says peaks-code / peaks-rd
6
6
  * are orchestrators, not implementers; the actual `git commit` step must
7
7
  * go through `peaks request transition`, which itself enforces spec-locked
8
8
  * + tech-doc-presence.
@@ -12,15 +12,15 @@
12
12
  * never bricked by a peaks bug.
13
13
  */
14
14
  const COMMIT_APPLY_PATTERN = /^\s*git\s+(commit|apply)\b/;
15
- const DENY_REASON = 'Solo Code-Change Red Line: peaks-* skills must go through peaks-solo / peaks-rd. ' +
15
+ const DENY_REASON = 'Code Commit Ban Red Line: peaks-* skills must go through peaks-code / peaks-rd. ' +
16
16
  'Use `peaks request transition` instead of `git commit` / `git apply` directly.';
17
- export function isSoloCodeCommit(skill, command) {
17
+ export function isCodeCommit(skill, command) {
18
18
  if (!skill.startsWith('peaks-'))
19
19
  return false;
20
20
  return COMMIT_APPLY_PATTERN.test(command);
21
21
  }
22
- export function evaluateSoloCodeBan(input) {
23
- if (isSoloCodeCommit(input.skill, input.command)) {
22
+ export function evaluateCodeBan(input) {
23
+ if (isCodeCommit(input.skill, input.command)) {
24
24
  return { denied: true, reason: DENY_REASON };
25
25
  }
26
26
  return { denied: false, reason: '' };
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import type { RedLineMarker } from './types.js';
9
9
  export interface RedLineCatalogEntry {
10
- /** Stable id, e.g. "rl-solo-code-ban-001". */
10
+ /** Stable id, e.g. "rl-code-ban-001". */
11
11
  readonly id: string;
12
12
  readonly rule: string;
13
13
  /** Markers that, if found near the rule's text, identify this red line. */
@@ -26,7 +26,7 @@ export declare const RED_LINE_CATALOG: readonly RedLineCatalogEntry[];
26
26
  * the integration seam is missing. When the integration lands, the entry
27
27
  * is removed from this set in a single-line follow-up commit.
28
28
  *
29
- * L2.1 final state: Tasks 5 (solo-code-ban) + 6 (no-root-pollution) are
29
+ * L2.1 final state: Tasks 5 (code-ban) + 6 (no-root-pollution) are
30
30
  * wired into peaks hook handle (Tasks 1-4: framework + 3 enforcers also
31
31
  * integrated). Tasks 3 (tech-doc-presence) and 4 (mock-placement) are
32
32
  * deferred — their request-transition / slice-check integrations are
@@ -9,15 +9,15 @@ import { RED_LINE_CATALOG_P2_A } from './red-line-catalog-p2-a.js';
9
9
  import { RED_LINE_CATALOG_P2_B } from './red-line-catalog-p2-b.js';
10
10
  export const RED_LINE_CATALOG = [
11
11
  {
12
- id: 'rl-solo-code-ban-001',
13
- rule: 'Solo Code-Change Red Line',
12
+ id: 'rl-code-ban-001',
13
+ rule: 'Code Commit Ban',
14
14
  markers: ['BLOCKING', 'MANDATORY'],
15
15
  phrases: [
16
- 'peaks-solo',
16
+ 'peaks-code',
17
17
  'orchestrator, NOT an implementer',
18
- 'solo',
18
+ 'code',
19
19
  ],
20
- enforcerRef: 'src/services/audit/enforcers/solo-code-ban.ts',
20
+ enforcerRef: 'src/services/audit/enforcers/code-ban.ts',
21
21
  },
22
22
  {
23
23
  id: 'rl-no-root-pollution-001',
@@ -146,7 +146,7 @@ export const RED_LINE_CATALOG = [
146
146
  * the integration seam is missing. When the integration lands, the entry
147
147
  * is removed from this set in a single-line follow-up commit.
148
148
  *
149
- * L2.1 final state: Tasks 5 (solo-code-ban) + 6 (no-root-pollution) are
149
+ * L2.1 final state: Tasks 5 (code-ban) + 6 (no-root-pollution) are
150
150
  * wired into peaks hook handle (Tasks 1-4: framework + 3 enforcers also
151
151
  * integrated). Tasks 3 (tech-doc-presence) and 4 (mock-placement) are
152
152
  * deferred — their request-transition / slice-check integrations are
@@ -39,6 +39,28 @@ export function scanSkillsTree(input) {
39
39
  for (const entry of entries) {
40
40
  if (!entry.isDirectory() || entry.name.startsWith('.'))
41
41
  continue;
42
+ // LLM-internal skills live under `skills/bee/<name>/` per spec 2026-07-05.
43
+ // Recurse one level into `bee/` to cover all 9 demoted role/audit skills.
44
+ if (entry.name === 'bee') {
45
+ let subEntries;
46
+ try {
47
+ subEntries = readdirSync(join(skillsRoot, 'bee'), { withFileTypes: true });
48
+ }
49
+ catch (error) {
50
+ warnings.push({
51
+ file: 'skills/bee',
52
+ message: `readdir failed: ${error instanceof Error ? error.message : String(error)}`,
53
+ });
54
+ continue;
55
+ }
56
+ for (const subEntry of subEntries) {
57
+ if (!subEntry.isDirectory() || subEntry.name.startsWith('.'))
58
+ continue;
59
+ const skillMd = readSkillFile(input.projectRoot, join('bee', subEntry.name), 'SKILL.md');
60
+ lines.push(...skillMd);
61
+ }
62
+ continue;
63
+ }
42
64
  const skillMd = readSkillFile(input.projectRoot, entry.name, 'SKILL.md');
43
65
  lines.push(...skillMd);
44
66
  }
@@ -21,9 +21,9 @@ export interface RedLineSource {
21
21
  readonly context: string;
22
22
  }
23
23
  export interface RedLineEntry {
24
- /** Stable id, e.g. "rl-solo-code-ban-001". */
24
+ /** Stable id, e.g. "rl-code-ban-001". */
25
25
  readonly id: string;
26
- /** Human-readable rule name, e.g. "Solo Code-Change Red Line". */
26
+ /** Human-readable rule name, e.g. "Code Commit Ban". */
27
27
  readonly rule: string;
28
28
  readonly source: RedLineSource;
29
29
  readonly backing: RedLineBacking;
@@ -20,9 +20,9 @@ export interface AutoCompactInput {
20
20
  /** Injectable clock for mtime checks (test seam). */
21
21
  readonly now?: Date | undefined;
22
22
  /**
23
- * Slice 2026-06-28-solo-mode-bypass-fix (defect #4): which session
23
+ * Slice 2026-06-28-code-mode-bypass-fix (defect #4): which session
24
24
  * the compact should target. Default `'main'` — the orchestrator
25
- * (peaks-solo body) runs in the main-session Claude Code window and
25
+ * (peaks-code body) runs in the main-session Claude Code window and
26
26
  * wants to compress *its* context. Sub-agent shells pass
27
27
  * `'sub-agent'` to preserve the legacy shell-spawn behaviour.
28
28
  */
@@ -16,7 +16,7 @@
16
16
  * 3. If 0.85 ≤ ratio < 0.95 (pre-compact zone): peaks-loop prepares
17
17
  * the convergence toolkit (checkpoint + auto-decisions log +
18
18
  * IDE-dispatch handle) and surfaces it to the LLM. The LLM
19
- * DECIDES when to fire `peaks solo auto-compact --execute`;
19
+ * DECIDES when to fire `peaks code auto-compact --execute`;
20
20
  * peaks-loop does NOT auto-fire. The toolkit is ready so the
21
21
  * LLM doesn't lose context to a last-second `/compact` panic.
22
22
  * 4. If ratio < 0.85: skip — return a one-line info row.
@@ -64,7 +64,7 @@ export function evaluateCompactTrigger(ratio) {
64
64
  kind: 'pre-compact',
65
65
  ratio,
66
66
  toolkitReady: true,
67
- message: `Context at ${(ratio * 100).toFixed(1)}% in pre-compact zone (0.85–0.95). Convergence toolkit is ready; LLM decides when to fire \`peaks solo auto-compact --execute\`.`
67
+ message: `Context at ${(ratio * 100).toFixed(1)}% in pre-compact zone (0.85–0.95). Convergence toolkit is ready; LLM decides when to fire \`peaks code auto-compact --execute\`.`
68
68
  };
69
69
  }
70
70
  /**
@@ -139,14 +139,14 @@ function appendAutoDecisionLog(input) {
139
139
  ''
140
140
  ].join('\n');
141
141
  if (!existsSync(logPath)) {
142
- writeFileSync(logPath, `# peaks-solo auto-decisions log\n${row}`, 'utf8');
142
+ writeFileSync(logPath, `# peaks-code auto-decisions log\n${row}`, 'utf8');
143
143
  return;
144
144
  }
145
145
  const existing = readFileSync(logPath, 'utf8');
146
146
  writeFileSync(logPath, `${existing}${row}`, 'utf8');
147
147
  }
148
148
  /**
149
- * Slice 2026-06-28-solo-mode-bypass-fix (defect #4): write the
149
+ * Slice 2026-06-28-code-mode-bypass-fix (defect #4): write the
150
150
  * main-session compact intent so the main-session LLM picks it up on
151
151
  * its next turn and fires `/compact` in-band. Without this file the
152
152
  * orchestrator's "main-session compact" request is invisible to the
@@ -200,7 +200,7 @@ function writePreCompactCheckpoint(input) {
200
200
  recentDecisions: [],
201
201
  recentArtifactPaths: [],
202
202
  gitStatus: '',
203
- skillsActive: ['peaks-solo'],
203
+ skillsActive: ['peaks-code'],
204
204
  todoState: []
205
205
  };
206
206
  writeFileSync(path, JSON.stringify(content, null, 2), 'utf8');
@@ -8,7 +8,7 @@
8
8
  * Design:
9
9
  * - **Pure dispatcher contract**: the orchestrator never calls an LLM
10
10
  * directly; it returns `DispatchSpec[]` per topological level and lets
11
- * the caller (the CLI / peaks-solo LLM) execute the per-IDE tool calls.
11
+ * the caller (the CLI / peaks-code LLM) execute the per-IDE tool calls.
12
12
  * This keeps the orchestrator testable end-to-end with mock sub-agents.
13
13
  * - **Join barrier**: between levels, the orchestrator awaits the
14
14
  * results of all dispatched leaves and refuses to advance if any
@@ -20,8 +20,8 @@
20
20
  * orchestrator writes its public contract to disk via `writeContract`,
21
21
  * and the next dispatch's prompt is built with `formatContractInjection`.
22
22
  *
23
- * Why this lives in `services/solo/`:
24
- * `peaks-solo` is the natural caller. The CLI surface (`peaks sub-agent
23
+ * Why this lives in `services/code/`:
24
+ * `peaks-code` is the natural caller. The CLI surface (`peaks sub-agent
25
25
  * dispatch --from-dag`) consumes the planner's output but the planner
26
26
  * itself is a library.
27
27
  */
@@ -123,6 +123,6 @@ export declare function runDag(dag: SliceDag, opts: RunDagOptions): Promise<DagR
123
123
  * cancels in-flight siblings and breaks the loop.
124
124
  *
125
125
  * Pure planner; same I/O contract as `runDag`. The caller (CLI /
126
- * peaks-solo LLM) executes the per-IDE tool calls.
126
+ * peaks-code LLM) executes the per-IDE tool calls.
127
127
  */
128
128
  export declare function runLayeredDag(dag: SliceDag, opts: RunDagOptions): Promise<DagRunResult>;
@@ -8,7 +8,7 @@
8
8
  * Design:
9
9
  * - **Pure dispatcher contract**: the orchestrator never calls an LLM
10
10
  * directly; it returns `DispatchSpec[]` per topological level and lets
11
- * the caller (the CLI / peaks-solo LLM) execute the per-IDE tool calls.
11
+ * the caller (the CLI / peaks-code LLM) execute the per-IDE tool calls.
12
12
  * This keeps the orchestrator testable end-to-end with mock sub-agents.
13
13
  * - **Join barrier**: between levels, the orchestrator awaits the
14
14
  * results of all dispatched leaves and refuses to advance if any
@@ -20,8 +20,8 @@
20
20
  * orchestrator writes its public contract to disk via `writeContract`,
21
21
  * and the next dispatch's prompt is built with `formatContractInjection`.
22
22
  *
23
- * Why this lives in `services/solo/`:
24
- * `peaks-solo` is the natural caller. The CLI surface (`peaks sub-agent
23
+ * Why this lives in `services/code/`:
24
+ * `peaks-code` is the natural caller. The CLI surface (`peaks sub-agent
25
25
  * dispatch --from-dag`) consumes the planner's output but the planner
26
26
  * itself is a library.
27
27
  */
@@ -110,7 +110,7 @@ export function buildDispatchSpec(dag, sliceId, contracts, defaultPrompt) {
110
110
  'Handoff protocol (REQUIRED — orchestrator depends on this):',
111
111
  ' 1. Execute the slice to completion.',
112
112
  ` 2. Write your public contract via \`peaks contract write --project <root> --session-id <sid> --slice-id ${sliceId} --exports <...> --types <...> --signatures <...>\`. The orchestrator will pick it up on the next dispatch run.`,
113
- ' 3. Do NOT re-invoke `peaks sub-agent dispatch --from-dag` yourself — the parent orchestrator (peaks-solo) drives level advancement.',
113
+ ' 3. Do NOT re-invoke `peaks sub-agent dispatch --from-dag` yourself — the parent orchestrator (peaks-code) drives level advancement.',
114
114
  '',
115
115
  `After your contract is on disk, the orchestrator will auto-advance to the next topological level (if any) by re-invoking \`peaks sub-agent dispatch --from-dag\` with the same batch-id. Your slice will appear in its ancestors via \`formatContractInjection\`.${ancestorFragment}`
116
116
  ].join('\n');
@@ -214,7 +214,7 @@ export async function runDag(dag, opts) {
214
214
  * cancels in-flight siblings and breaks the loop.
215
215
  *
216
216
  * Pure planner; same I/O contract as `runDag`. The caller (CLI /
217
- * peaks-solo LLM) executes the per-IDE tool calls.
217
+ * peaks-code LLM) executes the per-IDE tool calls.
218
218
  */
219
219
  export async function runLayeredDag(dag, opts) {
220
220
  try {
@@ -16,7 +16,7 @@
16
16
  * --force-under-job → ALLOW (override path)
17
17
  *
18
18
  * Karpathy §2 (Simplicity First): ~70 lines, no LLM call, no regex.
19
- * Pure read + arithmetic. The CLI wrapper in solo-commands.ts
19
+ * Pure read + arithmetic. The CLI wrapper in code-commands.ts
20
20
  * translates the verdict into exit code + JSON envelope.
21
21
  */
22
22
  export declare const JOB_NOT_INITIALIZED: "JOB_NOT_INITIALIZED";
@@ -16,7 +16,7 @@
16
16
  * --force-under-job → ALLOW (override path)
17
17
  *
18
18
  * Karpathy §2 (Simplicity First): ~70 lines, no LLM call, no regex.
19
- * Pure read + arithmetic. The CLI wrapper in solo-commands.ts
19
+ * Pure read + arithmetic. The CLI wrapper in code-commands.ts
20
20
  * translates the verdict into exit code + JSON envelope.
21
21
  */
22
22
  import { existsSync, readFileSync } from 'node:fs';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The CLI is a *recorder and gate*, not a judge. The LLM makes the
5
5
  * semantic call ("is this a Job?") and writes the verdict via
6
- * `peaks solo detect-job`; this service persists the verdict to
6
+ * `peaks code detect-job`; this service persists the verdict to
7
7
  * `.peaks/_runtime/<sessionId>/job-shape.json` and refuses downstream
8
8
  * steps that need a decision when the file is missing.
9
9
  *
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The CLI is a *recorder and gate*, not a judge. The LLM makes the
5
5
  * semantic call ("is this a Job?") and writes the verdict via
6
- * `peaks solo detect-job`; this service persists the verdict to
6
+ * `peaks code detect-job`; this service persists the verdict to
7
7
  * `.peaks/_runtime/<sessionId>/job-shape.json` and refuses downstream
8
8
  * steps that need a decision when the file is missing.
9
9
  *
@@ -73,7 +73,7 @@ export function readJobShapeDecision(projectRoot, sessionId) {
73
73
  if (!existsSync(path)) {
74
74
  throw new JobShapeDecisionError({
75
75
  code: JOB_SHAPE_NOT_DECIDED,
76
- message: `No Job-shape decision recorded for session ${sessionId}. Run \`peaks solo detect-job\` to record a decision.`,
76
+ message: `No Job-shape decision recorded for session ${sessionId}. Run \`peaks code detect-job\` to record a decision.`,
77
77
  details: { path }
78
78
  });
79
79
  }
@@ -84,7 +84,7 @@ export function readJobShapeDecision(projectRoot, sessionId) {
84
84
  catch (err) {
85
85
  throw new JobShapeDecisionError({
86
86
  code: JOB_SHAPE_NOT_DECIDED,
87
- message: `Job-shape decision file is unreadable for session ${sessionId}. Run \`peaks solo detect-job\` to re-record.`,
87
+ message: `Job-shape decision file is unreadable for session ${sessionId}. Run \`peaks code detect-job\` to re-record.`,
88
88
  details: { path, cause: err instanceof Error ? err.message : String(err) }
89
89
  });
90
90
  }
@@ -95,7 +95,7 @@ export function readJobShapeDecision(projectRoot, sessionId) {
95
95
  catch (err) {
96
96
  throw new JobShapeDecisionError({
97
97
  code: JOB_SHAPE_NOT_DECIDED,
98
- message: `Job-shape decision file is malformed JSON for session ${sessionId}. Run \`peaks solo detect-job --force\` to overwrite.`,
98
+ message: `Job-shape decision file is malformed JSON for session ${sessionId}. Run \`peaks code detect-job --force\` to overwrite.`,
99
99
  details: { path, cause: err instanceof Error ? err.message : String(err) }
100
100
  });
101
101
  }
@@ -105,7 +105,7 @@ export function readJobShapeDecision(projectRoot, sessionId) {
105
105
  catch (err) {
106
106
  throw new JobShapeDecisionError({
107
107
  code: JOB_SHAPE_NOT_DECIDED,
108
- message: `Job-shape decision file is schema-invalid for session ${sessionId}. Run \`peaks solo detect-job --force\` to overwrite.`,
108
+ message: `Job-shape decision file is schema-invalid for session ${sessionId}. Run \`peaks code detect-job --force\` to overwrite.`,
109
109
  details: { path, cause: err instanceof Error ? err.message : String(err) }
110
110
  });
111
111
  }
@@ -20,8 +20,8 @@
20
20
  * 4 mode values stay in lockstep with the rest of the runtime.
21
21
  */
22
22
  import type { SkillPresenceMode } from '../skills/skill-presence-service.js';
23
- export type SoloMode = SkillPresenceMode;
24
- export declare const SOLO_MODES: readonly SoloMode[];
23
+ export type CodeMode = SkillPresenceMode;
24
+ export declare const CODE_MODES: readonly CodeMode[];
25
25
  export type HardFloorCategory = 'irreversible-external-side-effect' | 'authentication-credential' | 'multi-day-investment'
26
26
  /**
27
27
  * v2.15.0 slice 002 AC-4: actions that are past the user's
@@ -42,8 +42,8 @@ export declare const HARD_FLOOR_CATEGORIES: readonly HardFloorCategory[];
42
42
  export type GatedStepId = 'step-0.5-openspec-opt-in' | 'step-0.6-audit-goal' | 'step-0.7-resume-detection' | 'step-0.55-1x-upgrade' | 'step-1-mode-select' | 'step-2.5-session-title' | 'phase-2-prd-confirm' | 'phase-3-swarm-gate-b' | 'phase-6-qa-gate-d' | 'phase-10-txt-memory-extract' | 'step-n+1-final-review' | 'frontend-only-mismatch' | 'step-0.75-checkpoint-resume' | 'standards-preflight';
43
43
  export declare const GATED_STEPS: readonly GatedStepId[];
44
44
  /**
45
- * Slice 2026-06-28-solo-mode-bypass-fix: the kind of gate that
46
- * produced this decision. The LLM-side caller (peaks-solo body) reads
45
+ * Slice 2026-06-28-code-mode-bypass-fix: the kind of gate that
46
+ * produced this decision. The LLM-side caller (peaks-code body) reads
47
47
  * this to distinguish "you paused because the user must choose the
48
48
  * mode" (`mode-selection-itself`) from "you paused because the mode
49
49
  * you already chose is assisted/strict" (`mode-driven`) from "you
@@ -63,23 +63,23 @@ export declare const GATED_STEPS: readonly GatedStepId[];
63
63
  export type GateKind = 'mode-selection-itself' | 'mode-driven' | 'hard-floor';
64
64
  export interface GateDecision {
65
65
  readonly shouldPause: boolean;
66
- /** Human-readable rationale; surfaces in `peaks solo should-pause --json` */
66
+ /** Human-readable rationale; surfaces in `peaks code should-pause --json` */
67
67
  readonly reason: string;
68
68
  /** Hard-floor override applied? Surfaces in audit log when true */
69
69
  readonly hardFloorCategory?: HardFloorCategory;
70
- /** Slice 2026-06-28-solo-mode-bypass-fix: kind of gate that produced
70
+ /** Slice 2026-06-28-code-mode-bypass-fix: kind of gate that produced
71
71
  * this decision. Always present; defaults to `'mode-driven'` for the
72
72
  * assisted/strict pause branch. */
73
73
  readonly gateKind: GateKind;
74
74
  }
75
- export declare function isSoloMode(value: string): value is SoloMode;
75
+ export declare function isCodeMode(value: string): value is CodeMode;
76
76
  export declare function isHardFloorCategory(value: string): value is HardFloorCategory;
77
77
  /**
78
78
  * `true` when the current mode should auto-proceed (skip the
79
79
  * AskUserQuestion round-trip). Mirrors D5.a: "recommended = chosen
80
80
  * in full-auto / swarm; always log, never silently skip".
81
81
  */
82
- export declare function shouldAutoProceed(mode: SoloMode): boolean;
82
+ export declare function shouldAutoProceed(mode: CodeMode): boolean;
83
83
  /**
84
84
  * Should the LLM emit an AskUserQuestion at `step` given `mode`?
85
85
  * Pure function: no IO, no LLM call. The LLM-side caller passes the
@@ -98,7 +98,7 @@ export declare function shouldAutoProceed(mode: SoloMode): boolean;
98
98
  /**
99
99
  * v2.15.0 slice 002 AC-4: the 5 action identifiers that qualify as
100
100
  * commit-boundary side effects. Matched by the LLM-side caller
101
- * (peaks-solo body / peaks-rd fork agent) when it is about to run a
101
+ * (peaks-code body / peaks-rd fork agent) when it is about to run a
102
102
  * Bash command that maps to one of these. Set `commitBoundaryAction:
103
103
  * true` on the `shouldPauseAtGate` call to trigger the hard-floor
104
104
  * override.
@@ -107,7 +107,7 @@ export type CommitBoundaryActionId = 'git-push' | 'git-tag' | 'npm-publish' | 'n
107
107
  export declare const COMMIT_BOUNDARY_ACTIONS: readonly CommitBoundaryActionId[];
108
108
  export declare function isCommitBoundaryAction(value: string): value is CommitBoundaryActionId;
109
109
  export declare function shouldPauseAtGate(opts: {
110
- mode: SoloMode;
110
+ mode: CodeMode;
111
111
  step: GatedStepId;
112
112
  hardFloorCategory?: HardFloorCategory | undefined;
113
113
  /**
@@ -125,7 +125,7 @@ export declare function shouldPauseAtGate(opts: {
125
125
  * system. The CLI / LLM is responsible for appending.
126
126
  */
127
127
  export declare function formatAutoProceedLogLine(opts: {
128
- mode: SoloMode;
128
+ mode: CodeMode;
129
129
  step: GatedStepId;
130
130
  recommendedOption: string;
131
131
  hardFloorCategory?: HardFloorCategory | undefined;