@entelligentsia/forgecli 0.20.3 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +31 -33
  3. package/dist/CHANGELOG-forge-plugin.md +118 -0
  4. package/dist/CHANGELOG-pi.md +24 -1
  5. package/dist/bin/forgecli.d.ts +2 -0
  6. package/dist/bin/forgecli.js +6 -0
  7. package/dist/bin/forgecli.js.map +1 -0
  8. package/dist/extensions/forgecli/add-pipeline.js +1 -1
  9. package/dist/extensions/forgecli/add-pipeline.js.map +1 -1
  10. package/dist/extensions/forgecli/add-task.js +1 -1
  11. package/dist/extensions/forgecli/add-task.js.map +1 -1
  12. package/dist/extensions/forgecli/approve.js +17 -2
  13. package/dist/extensions/forgecli/approve.js.map +1 -1
  14. package/dist/extensions/forgecli/calibrate.js +11 -8
  15. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  16. package/dist/extensions/forgecli/collate.js +1 -1
  17. package/dist/extensions/forgecli/collate.js.map +1 -1
  18. package/dist/extensions/forgecli/commit.js +17 -2
  19. package/dist/extensions/forgecli/commit.js.map +1 -1
  20. package/dist/extensions/forgecli/enhance.js +1 -1
  21. package/dist/extensions/forgecli/enhance.js.map +1 -1
  22. package/dist/extensions/forgecli/fix-bug.d.ts +1 -1
  23. package/dist/extensions/forgecli/fix-bug.js +14 -6
  24. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  25. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +6 -8
  26. package/dist/extensions/forgecli/forge-artifact-tool.js +80 -195
  27. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  28. package/dist/extensions/forgecli/forge-commands.js +57 -18
  29. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  30. package/dist/extensions/forgecli/forge-init/phase4-register.js +6 -7
  31. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  32. package/dist/extensions/forgecli/forge-init/run-phases.d.ts +4 -0
  33. package/dist/extensions/forgecli/forge-init/run-phases.js +304 -0
  34. package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -0
  35. package/dist/extensions/forgecli/forge-init/verifiers.d.ts +14 -5
  36. package/dist/extensions/forgecli/forge-init/verifiers.js +79 -62
  37. package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -1
  38. package/dist/extensions/forgecli/forge-init.js +131 -76
  39. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  40. package/dist/extensions/forgecli/forge-subagent.d.ts +9 -0
  41. package/dist/extensions/forgecli/forge-subagent.js +11 -6
  42. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  43. package/dist/extensions/forgecli/forge-tools.d.ts +28 -4
  44. package/dist/extensions/forgecli/forge-tools.js +122 -73
  45. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  46. package/dist/extensions/forgecli/health-check.js +3 -3
  47. package/dist/extensions/forgecli/health-check.js.map +1 -1
  48. package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -1
  49. package/dist/extensions/forgecli/hooks/check-update.d.ts +8 -0
  50. package/dist/extensions/forgecli/hooks/check-update.js +29 -1
  51. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
  52. package/dist/extensions/forgecli/hooks/post-init-hook.js +6 -6
  53. package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
  54. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +6 -6
  55. package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
  56. package/dist/extensions/forgecli/hooks/triage-error.js +1 -0
  57. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -1
  58. package/dist/extensions/forgecli/implement.js +20 -2
  59. package/dist/extensions/forgecli/implement.js.map +1 -1
  60. package/dist/extensions/forgecli/index.js +39 -32
  61. package/dist/extensions/forgecli/index.js.map +1 -1
  62. package/dist/extensions/forgecli/lib/pipeline-guard.d.ts +41 -0
  63. package/dist/extensions/forgecli/lib/pipeline-guard.js +100 -0
  64. package/dist/extensions/forgecli/lib/pipeline-guard.js.map +1 -0
  65. package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
  66. package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
  67. package/dist/extensions/forgecli/migrate.d.ts +3 -0
  68. package/dist/extensions/forgecli/migrate.js +4 -2
  69. package/dist/extensions/forgecli/migrate.js.map +1 -1
  70. package/dist/extensions/forgecli/plan.js +21 -2
  71. package/dist/extensions/forgecli/plan.js.map +1 -1
  72. package/dist/extensions/forgecli/quiz-agent.js +7 -7
  73. package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
  74. package/dist/extensions/forgecli/regenerate.js +49 -18
  75. package/dist/extensions/forgecli/regenerate.js.map +1 -1
  76. package/dist/extensions/forgecli/remove-command.js +1 -1
  77. package/dist/extensions/forgecli/remove-command.js.map +1 -1
  78. package/dist/extensions/forgecli/report-bug.js +1 -1
  79. package/dist/extensions/forgecli/report-bug.js.map +1 -1
  80. package/dist/extensions/forgecli/retrospective.js +9 -9
  81. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  82. package/dist/extensions/forgecli/review-code.d.ts +13 -0
  83. package/dist/extensions/forgecli/review-code.js +62 -3
  84. package/dist/extensions/forgecli/review-code.js.map +1 -1
  85. package/dist/extensions/forgecli/review-plan.d.ts +13 -0
  86. package/dist/extensions/forgecli/review-plan.js +65 -3
  87. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  88. package/dist/extensions/forgecli/run-task.d.ts +2 -1
  89. package/dist/extensions/forgecli/run-task.js +48 -4
  90. package/dist/extensions/forgecli/run-task.js.map +1 -1
  91. package/dist/extensions/forgecli/skill-curator-subagent.d.ts +2 -1
  92. package/dist/extensions/forgecli/skill-curator-subagent.js +2 -1
  93. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
  94. package/dist/extensions/forgecli/sprint-intake.js +6 -6
  95. package/dist/extensions/forgecli/sprint-intake.js.map +1 -1
  96. package/dist/extensions/forgecli/sprint-plan.js +9 -9
  97. package/dist/extensions/forgecli/sprint-plan.js.map +1 -1
  98. package/dist/extensions/forgecli/status-command.js +1 -1
  99. package/dist/extensions/forgecli/status-command.js.map +1 -1
  100. package/dist/extensions/forgecli/store-query.js +11 -11
  101. package/dist/extensions/forgecli/store-query.js.map +1 -1
  102. package/dist/extensions/forgecli/store-repair.js +7 -7
  103. package/dist/extensions/forgecli/store-repair.js.map +1 -1
  104. package/dist/extensions/forgecli/validate.js +17 -2
  105. package/dist/extensions/forgecli/validate.js.map +1 -1
  106. package/dist/forge-payload/.base-pack/commands/check-agent.md +22 -0
  107. package/dist/forge-payload/.base-pack/commands/new-sprint.md +22 -0
  108. package/dist/forge-payload/.base-pack/commands/plan-sprint.md +22 -0
  109. package/dist/forge-payload/.base-pack/commands/quiz-agent.md +2 -18
  110. package/dist/forge-payload/.base-pack/commands/retro.md +22 -0
  111. package/dist/forge-payload/.base-pack/commands/retrospective.md +2 -18
  112. package/dist/forge-payload/.base-pack/commands/sprint-intake.md +2 -18
  113. package/dist/forge-payload/.base-pack/commands/sprint-plan.md +2 -18
  114. package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +2 -2
  115. package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +4 -4
  116. package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
  117. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +13 -1
  118. package/dist/forge-payload/.base-pack/workflows/commit_task.md +12 -1
  119. package/dist/forge-payload/.base-pack/workflows/enhance.md +40 -10
  120. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +1 -1
  121. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +14 -2
  122. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +2 -2
  123. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +20 -4
  124. package/dist/forge-payload/.base-pack/workflows/plan_task.md +14 -2
  125. package/dist/forge-payload/.base-pack/workflows/review_code.md +37 -7
  126. package/dist/forge-payload/.base-pack/workflows/review_plan.md +36 -6
  127. package/dist/forge-payload/.base-pack/workflows/run_sprint.md +2 -2
  128. package/dist/forge-payload/.base-pack/workflows/validate_task.md +37 -7
  129. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  130. package/dist/forge-payload/.schemas/config.schema.json +0 -5
  131. package/dist/forge-payload/.schemas/enum-catalog.json +9 -13
  132. package/dist/forge-payload/.schemas/migrations.json +65 -0
  133. package/dist/forge-payload/agents/tomoshibi.md +150 -6
  134. package/dist/forge-payload/commands/add-pipeline.md +1 -1
  135. package/dist/forge-payload/commands/add-task.md +1 -1
  136. package/dist/forge-payload/commands/calibrate.md +4 -350
  137. package/dist/forge-payload/commands/check-agent.md +38 -0
  138. package/dist/forge-payload/commands/config.md +3 -113
  139. package/dist/forge-payload/commands/enhance.md +5 -32
  140. package/dist/forge-payload/commands/health.md +155 -13
  141. package/dist/forge-payload/commands/init.md +25 -31
  142. package/dist/forge-payload/commands/migrate.md +6 -154
  143. package/dist/forge-payload/commands/quiz-agent.md +2 -34
  144. package/dist/forge-payload/commands/rebuild.md +664 -0
  145. package/dist/forge-payload/commands/regenerate.md +2 -774
  146. package/dist/forge-payload/commands/remove.md +10 -13
  147. package/dist/forge-payload/commands/repair.md +187 -0
  148. package/dist/forge-payload/commands/search.md +73 -0
  149. package/dist/forge-payload/commands/status.md +105 -0
  150. package/dist/forge-payload/commands/store-query.md +2 -69
  151. package/dist/forge-payload/commands/store-repair.md +2 -183
  152. package/dist/forge-payload/commands/update-tools.md +4 -50
  153. package/dist/forge-payload/commands/update.md +64 -58
  154. package/dist/forge-payload/hooks/check-update.cjs +1 -1
  155. package/dist/forge-payload/hooks/post-init.cjs +2 -2
  156. package/dist/forge-payload/hooks/post-sprint.cjs +2 -2
  157. package/dist/forge-payload/hooks/triage-error.cjs +11 -10
  158. package/dist/forge-payload/init/phases/phase-1-collect.md +138 -0
  159. package/dist/forge-payload/init/phases/phase-2-discover.md +127 -0
  160. package/dist/forge-payload/init/phases/phase-3-materialize.md +113 -0
  161. package/dist/forge-payload/init/phases/phase-4-register.md +159 -0
  162. package/dist/forge-payload/integrity.json +21 -24
  163. package/dist/forge-payload/meta/fragments/tool-discipline.md +22 -0
  164. package/dist/forge-payload/meta/templates/meta-retro.md +28 -0
  165. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +2 -2
  166. package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +4 -4
  167. package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
  168. package/dist/forge-payload/meta/workflows/meta-approve.md +13 -1
  169. package/dist/forge-payload/meta/workflows/meta-check-agent.md +138 -0
  170. package/dist/forge-payload/meta/workflows/meta-commit.md +12 -1
  171. package/dist/forge-payload/meta/workflows/meta-enhance.md +39 -9
  172. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +1 -1
  173. package/dist/forge-payload/meta/workflows/meta-implement.md +13 -1
  174. package/dist/forge-payload/meta/workflows/meta-migrate.md +3 -3
  175. package/dist/forge-payload/meta/workflows/meta-new-sprint.md +84 -0
  176. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +20 -4
  177. package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +152 -0
  178. package/dist/forge-payload/meta/workflows/meta-plan-task.md +13 -1
  179. package/dist/forge-payload/meta/workflows/meta-retro.md +73 -0
  180. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +37 -7
  181. package/dist/forge-payload/meta/workflows/meta-review-plan.md +36 -6
  182. package/dist/forge-payload/meta/workflows/meta-validate.md +37 -7
  183. package/dist/forge-payload/schemas/config.schema.json +0 -5
  184. package/dist/forge-payload/schemas/enum-catalog.json +9 -13
  185. package/dist/forge-payload/schemas/structure-manifest.json +6 -8
  186. package/dist/forge-payload/tools/artifact.cjs +295 -0
  187. package/dist/forge-payload/tools/banners.cjs +3 -4
  188. package/dist/forge-payload/tools/build-context-pack.cjs +1 -1
  189. package/dist/forge-payload/tools/check-structure.cjs +8 -3
  190. package/dist/forge-payload/tools/store-cli.cjs +67 -7
  191. package/dist/forge-payload/tools/substitute-placeholders.cjs +1 -1
  192. package/dist/forge-payload/tools/verify-apply.cjs +75 -0
  193. package/dist/forge-payload/tools/verify-phase.cjs +259 -0
  194. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  195. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +0 -17
  196. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  197. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +21 -38
  198. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  199. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  200. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +5 -4
  201. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  202. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +2 -1
  203. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  204. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
  205. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  206. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  207. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +24 -1
  208. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  209. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -3
  210. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  211. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts +1 -0
  212. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts.map +1 -1
  213. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js +52 -22
  214. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js.map +1 -1
  215. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  216. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +16 -4
  217. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  219. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +45 -50
  220. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  221. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  222. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +43 -81
  223. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  224. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  225. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js +27 -12
  226. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js.map +1 -1
  227. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  228. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +2 -3
  229. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  230. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  231. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +3 -3
  232. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  233. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  234. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -5
  235. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  236. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts +2 -0
  237. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  238. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +37 -0
  239. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  240. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  241. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +9 -8
  242. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  243. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  244. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +20 -35
  245. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  246. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +3 -0
  247. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  248. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +64 -7
  249. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  250. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  251. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +15 -3
  252. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  253. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts +3 -1
  254. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
  255. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js +14 -8
  256. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
  257. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts +30 -0
  258. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts.map +1 -0
  259. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js +124 -0
  260. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js.map +1 -0
  261. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts +2 -0
  262. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts.map +1 -0
  263. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js +31 -0
  264. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js.map +1 -0
  265. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts +7 -27
  266. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  267. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js +75 -115
  268. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  269. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +6 -0
  270. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  271. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  272. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  273. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  274. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -14
  275. package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -5
  276. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +3 -0
  277. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -0
  278. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +53 -0
  279. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -0
  280. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  281. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
  282. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  283. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +2 -0
  284. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  285. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +13 -1
  286. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  287. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  288. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  289. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  290. package/package.json +6 -6
  291. package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +0 -72
  292. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +0 -359
  293. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +0 -1
  294. package/dist/extensions/forgecli/forge-init/prompts.d.ts +0 -10
  295. package/dist/extensions/forgecli/forge-init/prompts.js +0 -91
  296. package/dist/extensions/forgecli/forge-init/prompts.js.map +0 -1
  297. package/dist/extensions/forgecli/lib/store-error-remediation.d.ts +0 -65
  298. package/dist/extensions/forgecli/lib/store-error-remediation.js +0 -298
  299. package/dist/extensions/forgecli/lib/store-error-remediation.js.map +0 -1
  300. package/dist/forge-payload/hooks/check-update.js +0 -378
  301. package/dist/forge-payload/hooks/forge-permissions.js +0 -164
  302. package/dist/forge-payload/hooks/triage-error.js +0 -77
  303. package/dist/forge-payload/hooks/validate-write.js +0 -250
@@ -0,0 +1,138 @@
1
+ # Phase 1 — Collect
2
+
3
+ **Deliverable:** `.forge/config.json` with all required fields.
4
+
5
+ Set `$FORGE_ROOT` to the forge plugin directory (the parent of this file's
6
+ parent directory — the folder containing `meta/` and `init/`).
7
+
8
+ ---
9
+
10
+ ## Pre-flight — Knowledge Base Folder
11
+
12
+ Before Phase 1 begins, ask the user where to create the knowledge base folder:
13
+
14
+ ```
15
+ Forge will create a folder for architecture docs, sprints, bugs, and features.
16
+ Default name: engineering/
17
+
18
+ Does "engineering" conflict with an existing folder in this project? [n/Y]
19
+ If yes, enter your preferred name (e.g. ai-docs, .forge-kb, docs/ai): ___
20
+ ```
21
+
22
+ - If the user accepts the default (types `n` or presses Enter): no config write needed.
23
+ `paths.engineering` defaults to `"engineering"` in the schema.
24
+ - If the user provides a custom name: write it immediately:
25
+ ```sh
26
+ node "$FORGE_ROOT/tools/manage-config.cjs" set paths.engineering "{chosen_name}"
27
+ ```
28
+ Note: folder name must not contain spaces.
29
+
30
+ After this question (and any config write), resolve `KB_PATH` for use in all
31
+ subsequent phases:
32
+
33
+ ```sh
34
+ KB_PATH=$(node -e "try{console.log(require('./.forge/config.json').paths.engineering)}catch{console.log('engineering')}")
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Steps (follow in order)
40
+
41
+ ### Step 1 — Render phase header
42
+
43
+ ```sh
44
+ node "$FORGE_ROOT/tools/banners.cjs" --phase 1 4 "Collect" north
45
+ ```
46
+
47
+ ### Step 2 — Discovery
48
+
49
+ Read each discovery prompt file below, then analyse the project codebase for
50
+ that topic. Summarise your structured findings for each topic before writing
51
+ anything to disk.
52
+
53
+ | Prompt | File |
54
+ |--------|------|
55
+ | Stack | `$FORGE_ROOT/init/discovery/discover-stack.md` |
56
+ | Processes | `$FORGE_ROOT/init/discovery/discover-processes.md` |
57
+ | Database | `$FORGE_ROOT/init/discovery/discover-database.md` |
58
+ | Routing | `$FORGE_ROOT/init/discovery/discover-routing.md` |
59
+ | Testing | `$FORGE_ROOT/init/discovery/discover-testing.md` |
60
+
61
+ Complete all 5 discovery reads before proceeding to Step 3.
62
+
63
+ ### Step 3 — Write config.json
64
+
65
+ Using your discovery findings, write `.forge/config.json` with this structure:
66
+
67
+ ```json
68
+ {
69
+ "version": "1",
70
+ "project": { "name": "<project name>", "prefix": "<UPPERCASE_ABBREV>" },
71
+ "stack": { "primary": [...], "test": "<framework>", "build": "<tool>", "lint": "<tool>" },
72
+ "commands": { "test": "<test cmd>", "build": "<build cmd>", "lint": "<lint cmd>" },
73
+ "paths": {
74
+ "engineering": "engineering",
75
+ "store": ".forge/store",
76
+ "workflows": ".forge/workflows",
77
+ "commands": ".claude/commands/<prefix-lowercased>",
78
+ "templates": ".forge/templates"
79
+ }
80
+ }
81
+ ```
82
+
83
+ `<prefix-lowercased>` = the `project.prefix` value you chose, lowercased. For example, if prefix is `HELLO`, write `".claude/commands/hello"`.
84
+
85
+ Write using:
86
+ ```sh
87
+ node "$FORGE_ROOT/tools/manage-config.cjs" set <key> <value>
88
+ ```
89
+ Or write `.forge/config.json` directly as valid JSON.
90
+
91
+ Write `mode` as `"full"` unconditionally:
92
+ ```sh
93
+ node "$FORGE_ROOT/tools/manage-config.cjs" set mode "full"
94
+ ```
95
+
96
+ ### Step 4 — Self-check
97
+
98
+ Read back `.forge/config.json` and confirm all 8 required keys are present
99
+ and non-empty: `version`, `project.name`, `project.prefix`, `stack`,
100
+ `commands`, `paths.engineering`, `paths.store`, `paths.workflows`.
101
+
102
+ If any key is missing or empty, fix it now before proceeding.
103
+
104
+ ### Step 5 — Marketplace Skills
105
+
106
+ Read `$FORGE_ROOT/meta/skill-recommendations.md` for the full mapping.
107
+
108
+ Using the stack discovered above, look up matching skills from the recommendation
109
+ mapping. For each match:
110
+
111
+ 1. Run `node "$FORGE_ROOT/tools/list-skills.js"` to get all currently installed skill names.
112
+ 2. Split matching skills into two buckets: Already installed / Not yet installed.
113
+ 3. Group not-yet-installed matches by confidence: High, Medium, Low.
114
+ 4. Present to the user for optional installation.
115
+ 5. Write `"installedSkills"` to `.forge/config.json` as the union of installed skills.
116
+ 6. Track skipped skills for the Report.
117
+
118
+ **If the user skips or installs none:** proceed without blocking.
119
+
120
+ Write `.forge/init-progress.json`:
121
+ ```json
122
+ { "lastPhase": 1, "timestamp": "<current ISO timestamp>" }
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Verify Phase 1
128
+
129
+ After writing `init-progress.json`, verify the deliverable:
130
+
131
+ ```sh
132
+ node "$FORGE_ROOT/tools/verify-phase.cjs" --phase 1
133
+ ```
134
+
135
+ - **Exit 0:** Phase 1 complete. Proceed to Phase 2.
136
+ - **Exit 1:** Read the JSON output to identify missing fields. Fix them and
137
+ re-run verify once. If it still fails, halt and surface the JSON error to
138
+ the user.
@@ -0,0 +1,127 @@
1
+ # Phase 2 — Discover
2
+
3
+ **Deliverable:** 7 KB architecture docs + 3 index files + `project-context.json` + calibration baseline.
4
+
5
+ Set `$FORGE_ROOT` and resolve `$KB_PATH` from `.forge/config.json`:
6
+
7
+ ```sh
8
+ KB_PATH=$(node -e "try{console.log(require('./.forge/config.json').paths.engineering)}catch{console.log('engineering')}")
9
+ ```
10
+
11
+ ---
12
+
13
+ ## Phase gate — verify Phase 1 foundation
14
+
15
+ Before starting any work, verify Phase 1 completed successfully:
16
+
17
+ ```sh
18
+ node "$FORGE_ROOT/tools/verify-phase.cjs" --phase 1
19
+ ```
20
+
21
+ If this exits 1, halt and surface the missing fields. Phase 2 cannot proceed
22
+ without a valid `.forge/config.json`.
23
+
24
+ ---
25
+
26
+ ## Steps (follow in order)
27
+
28
+ ### Step 1 — Render phase header
29
+
30
+ ```sh
31
+ node "$FORGE_ROOT/tools/banners.cjs" --phase 2 4 "Discover" oracle
32
+ ```
33
+
34
+ ### Step 2 — Scaffold directories
35
+
36
+ Create the directory structure (fast Bash operations):
37
+
38
+ ```sh
39
+ mkdir -p "{KB_PATH}/architecture" "{KB_PATH}/business-domain" \
40
+ "{KB_PATH}/sprints" "{KB_PATH}/bugs" "{KB_PATH}/tools" \
41
+ ".forge/store/sprints" ".forge/store/tasks" \
42
+ ".forge/store/bugs" ".forge/store/events"
43
+ touch "{KB_PATH}/sprints/.gitkeep" "{KB_PATH}/bugs/.gitkeep" \
44
+ ".forge/store/sprints/.gitkeep" ".forge/store/tasks/.gitkeep" \
45
+ ".forge/store/bugs/.gitkeep" ".forge/store/events/.gitkeep"
46
+ ```
47
+
48
+ ### Step 3 — Generate KB documents
49
+
50
+ Read `$FORGE_ROOT/init/generation/generate-kb-doc.md` once (the per-subagent rulebook).
51
+
52
+ Generate all 7 knowledge-base documents. For each document, analyse the
53
+ project codebase for that topic and write to its output path. After writing
54
+ each document, read it back and verify the confidence header is present
55
+ (`<!-- AUTO-GENERATED — confidence: NN% -->`).
56
+
57
+ | Document | Output path | Focus |
58
+ |----------|-------------|-------|
59
+ | stack.md | `{KB_PATH}/architecture/stack.md` | Languages, frameworks, runtime, versions |
60
+ | processes.md | `{KB_PATH}/architecture/processes.md` | Services, build/deploy topology |
61
+ | database.md | `{KB_PATH}/architecture/database.md` | Entities, relationships, field types |
62
+ | routing.md | `{KB_PATH}/architecture/routing.md` | API surface, route groups, auth strategy |
63
+ | deployment.md | `{KB_PATH}/architecture/deployment.md` | Environments, CI/CD, infra targets |
64
+ | entity-model.md | `{KB_PATH}/business-domain/entity-model.md` | Full entity inventory with fields |
65
+ | stack-checklist.md | `{KB_PATH}/stack-checklist.md` | Review checklist items from stack + testing |
66
+
67
+ You may spawn all 7 as parallel subagents in a single Agent tool message for speed.
68
+ Wait for all 7 to return. Retry any that returned FAILED: once.
69
+ Any still failing after one retry: halt and surface the id list.
70
+
71
+ ### Step 4 — Create index files (sequential)
72
+
73
+ After all leaf docs are written:
74
+
75
+ 1. **`{KB_PATH}/architecture/INDEX.md`** — list and link to the 5 architecture docs
76
+ 2. **`{KB_PATH}/business-domain/INDEX.md`** — list and link to entity-model.md
77
+ 3. **`{KB_PATH}/MASTER_INDEX.md`** — scaffold linking both INDEX files; include
78
+ `## Domain Entities` section listing discovered entities (one per line)
79
+
80
+ Generate these sequentially — each builds on what's already on disk.
81
+
82
+ ### Step 5 — Construct project-context.json
83
+
84
+ After all KB docs and MASTER_INDEX are written, construct `.forge/project-context.json`
85
+ inline (do NOT spawn a subagent for this step).
86
+
87
+ Using the `x-placeholder` annotations from
88
+ `$FORGE_ROOT/schemas/project-context.schema.json` as a guide, map discovered
89
+ facts to schema fields. Required fields: `project.name`, `project.prefix`
90
+ (must be non-empty strings). All array fields must be arrays.
91
+
92
+ Write the JSON to `.forge/project-context.json`.
93
+
94
+ **Structural validation failure halts Phase 2** with a descriptive error:
95
+ ```
96
+ × Phase 2 validation failed: project.name is missing or empty.
97
+ ```
98
+
99
+ ### Step 6 — Write calibration baseline
100
+
101
+ After `project-context.json` is written, compute and write `calibrationBaseline`
102
+ into `.forge/config.json`:
103
+
104
+ 1. Read `$FORGE_ROOT/.claude-plugin/plugin.json` → `version`
105
+ 2. Hash `{KB_PATH}/MASTER_INDEX.md` (strip blank lines + `<!--` lines, SHA-256)
106
+ 3. List done sprint IDs from `.forge/store/sprints/`
107
+ 4. Merge into config: `calibrationBaseline: { lastCalibrated, version, masterIndexHash, sprintsCovered }`
108
+
109
+ Write `.forge/init-progress.json`:
110
+ ```json
111
+ { "lastPhase": 2, "timestamp": "<current ISO timestamp>" }
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Verify Phase 2
117
+
118
+ After writing `init-progress.json`, verify the deliverable:
119
+
120
+ ```sh
121
+ node "$FORGE_ROOT/tools/verify-phase.cjs" --phase 2 --kb-path "$KB_PATH"
122
+ ```
123
+
124
+ - **Exit 0:** Phase 2 complete. Proceed to Phase 3.
125
+ - **Exit 1:** Read the JSON output to identify missing documents. Fix them and
126
+ re-run verify once. If it still fails, halt and surface the JSON error to
127
+ the user.
@@ -0,0 +1,113 @@
1
+ # Phase 3 — Materialize
2
+
3
+ **Deliverable:** `.forge/{personas,skills,workflows,templates}` fully populated.
4
+
5
+ This phase is deterministic and requires no LLM calls.
6
+
7
+ Set `$FORGE_ROOT` and resolve `$KB_PATH`:
8
+
9
+ ```sh
10
+ KB_PATH=$(node -e "try{console.log(require('./.forge/config.json').paths.engineering)}catch{console.log('engineering')}")
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Phase gate — verify Phase 1 foundation
16
+
17
+ Before starting any work, verify the Phase 1 foundation:
18
+
19
+ ```sh
20
+ node "$FORGE_ROOT/tools/verify-phase.cjs" --phase 1 --foundation-only
21
+ ```
22
+
23
+ If this exits 1, halt. `project.name` and `project.prefix` are required by
24
+ `substitute-placeholders.cjs`. Missing them causes a hard failure.
25
+
26
+ ---
27
+
28
+ ## Steps (follow in order)
29
+
30
+ ### Step 1 — Render phase header
31
+
32
+ ```sh
33
+ node "$FORGE_ROOT/tools/banners.cjs" --phase 3 4 "Materialize" ember
34
+ ```
35
+
36
+ ### Step 2 — Build project brief (first pass)
37
+
38
+ ```sh
39
+ node "$FORGE_ROOT/tools/build-init-context.cjs" \
40
+ --config .forge/config.json \
41
+ --personas .forge/personas \
42
+ --templates .forge/templates \
43
+ --kb "$KB_PATH" \
44
+ --out .forge/init-context.md \
45
+ --json-out .forge/init-context.json
46
+ ```
47
+
48
+ The script prints `〇 Brief written — N personas, M templates, K architecture docs` on success.
49
+ If it exits non-zero, halt and surface the error.
50
+
51
+ Note: `.forge/personas/` and `.forge/templates/` are empty at this point —
52
+ the brief will have stub entries. The full content is produced in Step 3 below.
53
+
54
+ ### Step 3 — Substitute placeholders (base-pack materialisation)
55
+
56
+ ```sh
57
+ node "$FORGE_ROOT/tools/substitute-placeholders.cjs" \
58
+ --forge-root "$FORGE_ROOT" \
59
+ --base-pack "$FORGE_ROOT/init/base-pack" \
60
+ --config .forge/config.json \
61
+ --context .forge/project-context.json \
62
+ --out .
63
+ ```
64
+
65
+ Output directories (managed by the tool's `SUBDIR_OUTPUT_MAP`):
66
+ - `base-pack/commands/` → `.claude/commands/<prefix-lowercased>/`
67
+ - `base-pack/personas/` → `.forge/personas/`
68
+ - `base-pack/skills/` → `.forge/skills/`
69
+ - `base-pack/workflows/` → `.forge/workflows/`
70
+ - `base-pack/templates/` → `.forge/templates/`
71
+
72
+ If `project-context.json` is absent or missing required keys, halt Phase 3:
73
+ ```
74
+ × Phase 3 aborted: project-context.json is missing or incomplete.
75
+ Ensure Phase 2 (Discover) completed successfully and try again.
76
+ ```
77
+
78
+ ### Step 4 — build-overlay.cjs smoke test
79
+
80
+ ```sh
81
+ node "$FORGE_ROOT/tools/build-overlay.cjs" --task INIT-SMOKE-TEST --format json 2>&1
82
+ ```
83
+
84
+ **Expected:** exit 1 with "task not found" error (store not yet seeded). This
85
+ is the passing result — it confirms the binary is functional.
86
+
87
+ Emit a warning when exit code is non-zero (expected):
88
+ ```
89
+ ⚠ build-overlay smoke-test: task INIT-SMOKE-TEST not found in store (expected — store not yet seeded). Overlay binary is functional.
90
+ ```
91
+
92
+ Phase 3 does NOT halt on this smoke test — result is informational.
93
+
94
+ Write `.forge/init-progress.json`:
95
+ ```json
96
+ { "lastPhase": 3, "timestamp": "<current ISO timestamp>" }
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Verify Phase 3
102
+
103
+ After writing `init-progress.json`, verify the deliverable:
104
+
105
+ ```sh
106
+ node "$FORGE_ROOT/tools/verify-phase.cjs" --phase 3
107
+ ```
108
+
109
+ - **Exit 0:** Phase 3 complete. Proceed to Phase 4.
110
+ - **Exit 1:** Read the JSON output. This usually means `substitute-placeholders.cjs`
111
+ ran against an incomplete config. Fix `.forge/config.json` and run
112
+ `/forge:rebuild`, or delete `.forge/init-progress.json` and restart.
113
+ **This is a hard failure — do not continue with partial Phase 3.**
@@ -0,0 +1,159 @@
1
+ # Phase 4 — Register
2
+
3
+ **Deliverable:** Versioning, manifest, caches, store entries, agent linking — fully registered.
4
+
5
+ This phase is deterministic and requires no LLM calls. Execute all 11 steps in order.
6
+
7
+ Set `$FORGE_ROOT` and resolve `$KB_PATH`:
8
+
9
+ ```sh
10
+ KB_PATH=$(node -e "try{console.log(require('./.forge/config.json').paths.engineering)}catch{console.log('engineering')}")
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Steps (follow in order)
16
+
17
+ ### Step 1 — Render phase header
18
+
19
+ ```sh
20
+ node "$FORGE_ROOT/tools/banners.cjs" --phase 4 4 "Register" forge
21
+ ```
22
+
23
+ ### Step 2 — Tools registration
24
+
25
+ Read `$FORGE_ROOT/init/generation/generate-tools.md` and follow it.
26
+
27
+ **Input**: `.forge/config.json`
28
+ **Output**: `paths.forgeRoot` written to `.forge/config.json`, schema copies to `.forge/schemas/`
29
+
30
+ ### Step 3 — Enhancement substrate (FR-007)
31
+
32
+ Materialize the substrate for post-init hooks:
33
+
34
+ ```sh
35
+ mkdir -p .forge/enhancements/
36
+ cp "$FORGE_ROOT/schemas/project-overlay.schema.json" .forge/schemas/
37
+ ```
38
+
39
+ ### Step 4 — structure-versions.json
40
+
41
+ ```sh
42
+ node "$FORGE_ROOT/tools/manage-versions.cjs" init
43
+ ```
44
+
45
+ ### Step 5 — generation-manifest.json
46
+
47
+ ```sh
48
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record-all
49
+ ```
50
+
51
+ ### Step 6 — persona-pack.json
52
+
53
+ ```sh
54
+ node "$FORGE_ROOT/tools/build-persona-pack.cjs" \
55
+ --out .forge/cache/persona-pack.json
56
+ ```
57
+
58
+ ### Step 7 — context-pack.md / context-pack.json
59
+
60
+ ```sh
61
+ node "$FORGE_ROOT/tools/build-context-pack.cjs" \
62
+ --arch-dir "$KB_PATH/architecture" \
63
+ --out-md .forge/cache/context-pack.md \
64
+ --out-json .forge/cache/context-pack.json
65
+ ```
66
+
67
+ ### Step 8 — init-context.json / init-context.md (final rebuild)
68
+
69
+ ```sh
70
+ node "$FORGE_ROOT/tools/build-init-context.cjs" \
71
+ --config .forge/config.json \
72
+ --personas .forge/personas \
73
+ --templates .forge/templates \
74
+ --kb "$KB_PATH" \
75
+ --out .forge/init-context.md \
76
+ --json-out .forge/init-context.json
77
+ ```
78
+
79
+ ### Step 9 — Store seed
80
+
81
+ ```sh
82
+ node "$FORGE_ROOT/tools/seed-store.cjs"
83
+ ```
84
+
85
+ ### Step 10 — Update-check cache
86
+
87
+ ```sh
88
+ node -e "
89
+ const fs = require('fs');
90
+ const pluginPkg = JSON.parse(fs.readFileSync('$FORGE_ROOT/.claude-plugin/plugin.json', 'utf8'));
91
+ const cache = {
92
+ lastChecked: new Date().toISOString(),
93
+ installedVersion: pluginPkg.version,
94
+ latestVersion: pluginPkg.version,
95
+ upToDate: true
96
+ };
97
+ fs.mkdirSync('.forge', { recursive: true });
98
+ fs.writeFileSync('.forge/update-check-cache.json', JSON.stringify(cache, null, 2) + '\n', 'utf8');
99
+ console.log('ノ update-check-cache.json written');
100
+ "
101
+ ```
102
+
103
+ ### Step 11 — Tomoshibi (refresh-kb-links)
104
+
105
+ Use the Skill tool:
106
+ ```
107
+ skill: "forge:refresh-kb-links"
108
+ ```
109
+
110
+ Fallback if unavailable:
111
+ ```
112
+ △ Run /forge:refresh-kb-links to wire KB links into your agent instruction files.
113
+ ```
114
+
115
+ ### Step 12 — Git hygiene — gitignore transient store paths
116
+
117
+ 1. Check whether `.gitignore` exists at project root:
118
+ ```sh
119
+ ls .gitignore 2>/dev/null
120
+ ```
121
+ If absent, skip this step.
122
+
123
+ 2. If `.gitignore` exists, check whether `.forge/store/events/` is already
124
+ ignored (any line containing `.forge/store/events/`, `.forge/store/events`,
125
+ `.forge/store/`, or `.forge/`).
126
+ - Found: emit `〇 .forge/store/events/ already gitignored — skipped.`
127
+
128
+ 3. If not already ignored, unconditionally append:
129
+ ```
130
+ # Forge — transient agent event logs (one file per phase, do not commit)
131
+ .forge/store/events/
132
+ ```
133
+ Emit `〇 Appended .forge/store/events/ to .gitignore.`
134
+
135
+ ### Step 13 — Agent instruction file linking
136
+
137
+ Check whether any agent instruction file exists at the project root:
138
+ ```sh
139
+ ls CLAUDE.md AGENTS.md CLAUDE.local.md .cursorrules 2>/dev/null
140
+ ```
141
+
142
+ If NONE exists, prompt:
143
+ ```
144
+ No agent instruction file found. Create a minimal CLAUDE.md with Forge KB links? [Y/n]
145
+ ```
146
+
147
+ If Y (default), create `CLAUDE.md` with:
148
+ - Project name header
149
+ - Links to `{KB_PATH}/MASTER_INDEX.md`, `{KB_PATH}/architecture/INDEX.md`,
150
+ `{KB_PATH}/business-domain/INDEX.md`
151
+ - Canonical Forge workflow table
152
+ - Footer: `Generated by /forge:init. Run /forge:refresh-kb-links to update.`
153
+
154
+ If one already exists: skip. Do NOT modify existing files.
155
+
156
+ Delete `.forge/init-progress.json` — init is complete:
157
+ ```sh
158
+ rm -f .forge/init-progress.json
159
+ ```
@@ -1,38 +1,35 @@
1
1
  {
2
- "version": "0.51.1",
3
- "generated": "2026-05-23",
2
+ "version": "1.0.2",
3
+ "generated": "2026-05-27",
4
4
  "note": "Tamper-evident only. Authoritative source: /forge:update from remote.",
5
5
  "files": {
6
- "commands/add-pipeline.md": "402c1deb6f19ad99561b48548ad89e3e1f625b827dce633eb84317556c0a1a4a",
7
- "commands/add-task.md": "b2640c4b3c8c4fb9d4a82633d8c4d8fcd13bd63d4d6deb2c5c6a2008508de770",
6
+ "commands/add-pipeline.md": "529a2fc01be49815efa2cf1147528827ff1bfc12ce2ac8663b5a3a9781f8682e",
7
+ "commands/add-task.md": "ce3d66fc38e7e0a7592705c559425c6e122f25280b838b631ad44e514bd64e04",
8
8
  "commands/ask.md": "df15f0aa68c93d65bfef05adb514c377bfc65617cafcd79534eb9b4149302657",
9
- "commands/calibrate.md": "c764e735c9212eaf785d3d0afaf926f536fef099421b2b1bde7a4b1e3114d443",
10
- "commands/config.md": "67251316b806d706bb77f063128e29995c6b4abaf554f4d5558bd97a1a6cfcfe",
11
- "commands/enhance.md": "4bbfc05cf85c862c49883bc36f1272f87cd49c8cbe00f9196e76d542e6eaa720",
12
- "commands/health.md": "31fdc6e01529b0ee8cfea4a4937e140bacec78f273260d5406108f8be1bf7aea",
13
- "commands/init.md": "3c0522294c692e8fbb75f925370caee66f54b23d7dd3a692bedcd69f95718b28",
14
- "commands/materialize.md": "195292c9e98f50773c1b0c84f9bbc42438c4c8c989a84bd98092f6692799d6d6",
15
- "commands/migrate.md": "b226f10a6f202bfd4a840314f34d503da34a077abbf1dff8d2b40f864474a76b",
16
- "commands/quiz-agent.md": "ed261a5c8ac7cd3a1d7c8b372c9bf099bba9a4f9dc0a41cb5c80f22b57a133a1",
17
- "commands/regenerate.md": "7c14f87b1bb178dd98ebdf0efafb86792c2b8b079bc5052d02a7e618165ec525",
18
- "commands/remove.md": "de8802ee8ad5db4c4f3d0f526eb8735ab7de1a4b8ad307355d11dac5e1e04fc6",
9
+ "commands/check-agent.md": "f92121cb150d4cf601654e25c28d0c13389039518d05433f1040d727054b127e",
10
+ "commands/config.md": "e67185f98cf0b045890398083991b9d48f32bf0d53bafda1eaca3ce0337ce49c",
11
+ "commands/enhance.md": "d28f6414119e84973809d32900bb7245b51f565aed86112bc7a994bc6941b547",
12
+ "commands/health.md": "29c3e5f9808d996f53a432c4b3aff1c3346d7a40fff54518d8ea2ac2c6ba9d12",
13
+ "commands/init.md": "cf7a70d55f718304820c310465071d3eea9d14a43131623f46b686499f630d4d",
14
+ "commands/rebuild.md": "e6d1e0bc29fd21c4c9109d8f40045b782207dfa6db2d98a9bf8c7254a80f09c6",
15
+ "commands/remove.md": "0ca5ec94d52959afaadd74910bd2c81c9872b71c9cc1ce8b89e5af69c06b304f",
16
+ "commands/repair.md": "22e21614eee31ee630ead3f587b0b948b8c537e54ecef3b65e7d819c55c0ebd4",
19
17
  "commands/report-bug.md": "af8a54bf8887b35e5c880898dd45783f6c2e80d3dc031d6479a6be613ac43053",
20
- "commands/store-query.md": "28925bd257ceb6645254628abf0e76524481460382192ea00081b17310b88fed",
21
- "commands/store-repair.md": "9317be65deb400953b8642b4d353d5583d3b032546c0b8f73d6c3a9b3445ebdd",
22
- "commands/update-tools.md": "768c0d7ec07a17055c3d4b1b31370812f4292e03b1496723ba36f8caf596a609",
23
- "commands/update.md": "6f7be76884888b0cbbe5e60a6926bbaa368f2ee3191f2be40adc8d263ad414aa",
18
+ "commands/search.md": "befc4ba9f3146e7599308b35b95ec315e16895c0c18c9c2bab7549619d79bf1c",
19
+ "commands/status.md": "2fa82a0b11d493918781aec6d95c39411f84fa923662ff3152b6de0cc830d755",
20
+ "commands/update.md": "a7eac4362a927eae708ee3844ef8d920f3166d1eafde36323d2dd92789fbdec9",
24
21
  "agents/store-query-validator.md": "f4c3573edcf6e28809515705362df611806a805c5269404fb17e31433cf3a81c",
25
- "agents/tomoshibi.md": "0112604af0856235d7f028683dbfa3f4af63355cb2dd79d26592e983a6ecec8b",
26
- "hooks/check-update.cjs": "e66a03eeca609c7426ba7ab8502d41a10b4d740861a6f9728e8ca1e49db8c86a",
22
+ "agents/tomoshibi.md": "0c1032df80dfc25a4f482b1276965b5318754d95ccde9f24820846d564e49a27",
23
+ "hooks/check-update.cjs": "9607cc0c51bedcbc123f5ea1d7a492916f29ee1f838846eec64776d5df70bbea",
27
24
  "hooks/forge-permissions.cjs": "8de18fe7e6c9ee1751926275a37f4bb68a5a53090d366d2aa44157c106e7857e",
28
- "hooks/post-init.cjs": "c82bc76e846708a471acfbbc6839f341be843a3fb8d711e3a0f2733aa3da9b3d",
29
- "hooks/post-sprint.cjs": "21099458fcde372f0f40895447ea76318de88d2a857d764f8fbbd0adab3ad74a",
30
- "hooks/triage-error.cjs": "f33e4fd67168c437d55d059f67cf893f1d11b59df4c712153a1dfd7d9bb55930",
25
+ "hooks/post-init.cjs": "b05d65e7192d126733995989998a0b480604e0cc152887e6d7d0807fba3cf70d",
26
+ "hooks/post-sprint.cjs": "28ddbd2c49d8b746c35d23a90b02362bc684d188159536a971b2d650bb85f3a9",
27
+ "hooks/triage-error.cjs": "e47fcb81fd0f99b8ecc449b38765cdc6929bde2461b5f1727d26bc31f76bfcfa",
31
28
  "hooks/validate-write.cjs": "3ec7bbbb2cc19f22c78da5a9e7b5031066f4b669c76a10c9f8a92a1a48fcea0a",
32
29
  "schemas/transitions/bug.json": "27b17da42d1cebffbd4f61ab3dcd432a0017aa71997d548ed80d22c2fc3fad6a",
33
30
  "schemas/transitions/sprint.json": "2e0a629396e687b0ca88e1814ac3e35d84533a5d55b25237ab67feddce3c9deb",
34
31
  "schemas/transitions/task.json": "4c71849747baa0d585756e57c56325ff6219c078178374e60815dff91e25e3e7",
35
- "schemas/enum-catalog.json": "db3ae83b313b5cea9186b3e28f8290daa1f562afd610d4ce9d1e52abbd0b13a4",
32
+ "schemas/enum-catalog.json": "af954fc219984ba9944de123867590c90c09c532b8d3d40859648a75e9010e5c",
36
33
  "tools/verify-integrity.cjs": "3ec3c970dd3d7c3001f8f373bcc40556803eadd2fc2afafb14f1c232cba4cc3f"
37
34
  }
38
35
  }
@@ -0,0 +1,22 @@
1
+ ## Forge Tool Discipline
2
+
3
+ All forge_* tools wrap local .cjs scripts via direct exec — deterministic, no LLM,
4
+ no agent loop. Prefer them over shelling out.
5
+
6
+ - Store CRUD: call `forge_store` (named tool). Canonical write is 2-positional:
7
+ `{command:"write", args:["<entity>","<json>"]}`. The id lives INSIDE the json
8
+ (e.g. `{"sprintId":"X-S01","title":"...","status":"planning","taskIds":[],"createdAt":"..."}`).
9
+ DO NOT pass id as a separate arg — `["sprint","X-S01","<json>"]` (3-arg) FAILS.
10
+ - Before writing any record, call `forge_store_template` for the canonical shape and
11
+ `forge_store_describe` for required fields, status enums, and FK constraints.
12
+ - Use `forge_store_query` (nlp/query/schema) for lookups instead of grepping `.forge/store/`.
13
+ - Use `forge_collate` to refresh the KB; `forge_validate_store` for integrity checks;
14
+ `forge_config` for project config reads/writes.
15
+ - Use `forge_artifact` to read/write/list phase artifacts (PLAN.md, PROGRESS.md, *-SUMMARY.json).
16
+ Never construct artifact paths manually — the tool resolves them from entity IDs.
17
+ - Use `forge_verify_apply` after applying edits to confirm changes landed on disk.
18
+ If `unchanged` is non-empty, re-apply those edits.
19
+ - Never `bash node "$FORGE_ROOT/tools/store-cli.cjs" ...` — use the named MCP tool instead.
20
+ The tool is schema-validated and shorter.
21
+ - Workflow text saying `forge_store write sprint '<json>'` means: call the MCP tool
22
+ `forge_store` with that 2-positional shape. Not a shell command.
@@ -0,0 +1,28 @@
1
+ # Meta-Template: Sprint Retrospective
2
+
3
+ ## Purpose
4
+
5
+ Defines the structure of the sprint retrospective document — metrics,
6
+ learnings, and improvements.
7
+
8
+ ## Sections
9
+
10
+ ### Required
11
+ - **Sprint Summary** — tasks completed, failed, carried over
12
+ - **Metrics** — plan iterations, code review iterations, time per task
13
+ - **What Went Well** — patterns that worked
14
+ - **What to Improve** — friction points, recurring issues
15
+ - **Knowledge Base Updates** — what was confirmed, added, or removed
16
+ - **Stack Checklist Changes** — items added or pruned
17
+
18
+ ### Optional
19
+ - **Workflow Improvements** — proposed edits to workflow files
20
+ - **Bug Pattern Analysis** — recurring root cause categories
21
+ - **Merge Conflicts** — if parallel mode, what conflicted and why
22
+ - **Recommendations for Next Sprint** — scope, focus, mode
23
+
24
+ ## Generation Instructions
25
+ - Reference the project's sprint artifact paths for data gathering
26
+ - Reference the project's domain docs and stack checklist
27
+ - Include the project's workflow file paths for proposed edits
28
+ - Reference the project's specific tech debt areas
@@ -1,6 +1,6 @@
1
1
  <!-- Canonical Friction Emit fragment.
2
2
  Referenced from meta-implement.md, meta-fix-bug.md, meta-validate.md,
3
- meta-plan-task.md, and meta-orchestrate.md. /forge:enhance --phase 2
3
+ meta-plan-task.md, and meta-orchestrate.md. /forge:rebuild --enrich (phase 2)
4
4
  greps generated workflows for `## Friction Emit` to discover the channel.
5
5
 
6
6
  PLAN-11 / SLICE-2 (2026-05-14): friction is now recorded via the
@@ -16,7 +16,7 @@ When the persona detects skill friction during the workflow — a referenced
16
16
  skill is unused, fails on invocation, is missing from the registry, has gone
17
17
  stale relative to current architecture, or is redundant with another skill —
18
18
  record a judgement-only friction signal. The orchestrator drains the
19
- signals and emits the corresponding events so `/forge:enhance --phase 2`
19
+ signals and emits the corresponding events so `/forge:rebuild --enrich` (phase 2)
20
20
  can act on them.
21
21
 
22
22
  ## Trigger conditions