@accelerator-mzq/forge 1.4.0

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 (663) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-THIRD-PARTY.md +50 -0
  3. package/README.md +159 -0
  4. package/dist/cli/commands/ack.d.ts +7 -0
  5. package/dist/cli/commands/ack.d.ts.map +1 -0
  6. package/dist/cli/commands/ack.js +223 -0
  7. package/dist/cli/commands/ack.js.map +1 -0
  8. package/dist/cli/commands/archive.d.ts +44 -0
  9. package/dist/cli/commands/archive.d.ts.map +1 -0
  10. package/dist/cli/commands/archive.js +689 -0
  11. package/dist/cli/commands/archive.js.map +1 -0
  12. package/dist/cli/commands/backlog.d.ts +3 -0
  13. package/dist/cli/commands/backlog.d.ts.map +1 -0
  14. package/dist/cli/commands/backlog.js +55 -0
  15. package/dist/cli/commands/backlog.js.map +1 -0
  16. package/dist/cli/commands/config.d.ts +3 -0
  17. package/dist/cli/commands/config.d.ts.map +1 -0
  18. package/dist/cli/commands/config.js +107 -0
  19. package/dist/cli/commands/config.js.map +1 -0
  20. package/dist/cli/commands/evidence.d.ts +7 -0
  21. package/dist/cli/commands/evidence.d.ts.map +1 -0
  22. package/dist/cli/commands/evidence.js +662 -0
  23. package/dist/cli/commands/evidence.js.map +1 -0
  24. package/dist/cli/commands/finding.d.ts +3 -0
  25. package/dist/cli/commands/finding.d.ts.map +1 -0
  26. package/dist/cli/commands/finding.js +93 -0
  27. package/dist/cli/commands/finding.js.map +1 -0
  28. package/dist/cli/commands/init.d.ts +3 -0
  29. package/dist/cli/commands/init.d.ts.map +1 -0
  30. package/dist/cli/commands/init.js +126 -0
  31. package/dist/cli/commands/init.js.map +1 -0
  32. package/dist/cli/commands/legacy-bridge.d.ts +11 -0
  33. package/dist/cli/commands/legacy-bridge.d.ts.map +1 -0
  34. package/dist/cli/commands/legacy-bridge.js +586 -0
  35. package/dist/cli/commands/legacy-bridge.js.map +1 -0
  36. package/dist/cli/commands/migrate.d.ts +3 -0
  37. package/dist/cli/commands/migrate.d.ts.map +1 -0
  38. package/dist/cli/commands/migrate.js +34 -0
  39. package/dist/cli/commands/migrate.js.map +1 -0
  40. package/dist/cli/commands/monitor.d.ts +3 -0
  41. package/dist/cli/commands/monitor.d.ts.map +1 -0
  42. package/dist/cli/commands/monitor.js +113 -0
  43. package/dist/cli/commands/monitor.js.map +1 -0
  44. package/dist/cli/commands/preflight.d.ts +7 -0
  45. package/dist/cli/commands/preflight.d.ts.map +1 -0
  46. package/dist/cli/commands/preflight.js +63 -0
  47. package/dist/cli/commands/preflight.js.map +1 -0
  48. package/dist/cli/commands/scope.d.ts +3 -0
  49. package/dist/cli/commands/scope.d.ts.map +1 -0
  50. package/dist/cli/commands/scope.js +32 -0
  51. package/dist/cli/commands/scope.js.map +1 -0
  52. package/dist/cli/commands/stage-extensions.d.ts +45 -0
  53. package/dist/cli/commands/stage-extensions.d.ts.map +1 -0
  54. package/dist/cli/commands/stage-extensions.js +590 -0
  55. package/dist/cli/commands/stage-extensions.js.map +1 -0
  56. package/dist/cli/commands/update.d.ts +3 -0
  57. package/dist/cli/commands/update.d.ts.map +1 -0
  58. package/dist/cli/commands/update.js +98 -0
  59. package/dist/cli/commands/update.js.map +1 -0
  60. package/dist/cli/commands/upgrade.d.ts +3 -0
  61. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  62. package/dist/cli/commands/upgrade.js +277 -0
  63. package/dist/cli/commands/upgrade.js.map +1 -0
  64. package/dist/cli/commands/validate.d.ts +3 -0
  65. package/dist/cli/commands/validate.d.ts.map +1 -0
  66. package/dist/cli/commands/validate.js +66 -0
  67. package/dist/cli/commands/validate.js.map +1 -0
  68. package/dist/cli/index.d.ts +3 -0
  69. package/dist/cli/index.d.ts.map +1 -0
  70. package/dist/cli/index.js +69 -0
  71. package/dist/cli/index.js.map +1 -0
  72. package/dist/core/ack-log.d.ts +107 -0
  73. package/dist/core/ack-log.d.ts.map +1 -0
  74. package/dist/core/ack-log.js +197 -0
  75. package/dist/core/ack-log.js.map +1 -0
  76. package/dist/core/archive/ack-log-consistency.d.ts +15 -0
  77. package/dist/core/archive/ack-log-consistency.d.ts.map +1 -0
  78. package/dist/core/archive/ack-log-consistency.js +164 -0
  79. package/dist/core/archive/ack-log-consistency.js.map +1 -0
  80. package/dist/core/archive/fence.d.ts +66 -0
  81. package/dist/core/archive/fence.d.ts.map +1 -0
  82. package/dist/core/archive/fence.js +218 -0
  83. package/dist/core/archive/fence.js.map +1 -0
  84. package/dist/core/archive/index.d.ts +4 -0
  85. package/dist/core/archive/index.d.ts.map +1 -0
  86. package/dist/core/archive/index.js +6 -0
  87. package/dist/core/archive/index.js.map +1 -0
  88. package/dist/core/archive/legacy-exemption.d.ts +14 -0
  89. package/dist/core/archive/legacy-exemption.d.ts.map +1 -0
  90. package/dist/core/archive/legacy-exemption.js +82 -0
  91. package/dist/core/archive/legacy-exemption.js.map +1 -0
  92. package/dist/core/archive/lock.d.ts +46 -0
  93. package/dist/core/archive/lock.d.ts.map +1 -0
  94. package/dist/core/archive/lock.js +98 -0
  95. package/dist/core/archive/lock.js.map +1 -0
  96. package/dist/core/archive/pause-decisions-fence.d.ts +13 -0
  97. package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -0
  98. package/dist/core/archive/pause-decisions-fence.js +384 -0
  99. package/dist/core/archive/pause-decisions-fence.js.map +1 -0
  100. package/dist/core/archive/process-evidence-fence.d.ts +110 -0
  101. package/dist/core/archive/process-evidence-fence.d.ts.map +1 -0
  102. package/dist/core/archive/process-evidence-fence.js +449 -0
  103. package/dist/core/archive/process-evidence-fence.js.map +1 -0
  104. package/dist/core/archive/process-evidence-rerun.d.ts +9 -0
  105. package/dist/core/archive/process-evidence-rerun.d.ts.map +1 -0
  106. package/dist/core/archive/process-evidence-rerun.js +238 -0
  107. package/dist/core/archive/process-evidence-rerun.js.map +1 -0
  108. package/dist/core/archive/recover-prompt.d.ts +10 -0
  109. package/dist/core/archive/recover-prompt.d.ts.map +1 -0
  110. package/dist/core/archive/recover-prompt.js +29 -0
  111. package/dist/core/archive/recover-prompt.js.map +1 -0
  112. package/dist/core/archive/recover.d.ts +83 -0
  113. package/dist/core/archive/recover.d.ts.map +1 -0
  114. package/dist/core/archive/recover.js +219 -0
  115. package/dist/core/archive/recover.js.map +1 -0
  116. package/dist/core/archive/resume-summary.d.ts +22 -0
  117. package/dist/core/archive/resume-summary.d.ts.map +1 -0
  118. package/dist/core/archive/resume-summary.js +82 -0
  119. package/dist/core/archive/resume-summary.js.map +1 -0
  120. package/dist/core/archive/summary-builder.d.ts +28 -0
  121. package/dist/core/archive/summary-builder.d.ts.map +1 -0
  122. package/dist/core/archive/summary-builder.js +287 -0
  123. package/dist/core/archive/summary-builder.js.map +1 -0
  124. package/dist/core/archive/summary-render.d.ts +8 -0
  125. package/dist/core/archive/summary-render.d.ts.map +1 -0
  126. package/dist/core/archive/summary-render.js +64 -0
  127. package/dist/core/archive/summary-render.js.map +1 -0
  128. package/dist/core/archive/three-level-fence.d.ts +10 -0
  129. package/dist/core/archive/three-level-fence.d.ts.map +1 -0
  130. package/dist/core/archive/three-level-fence.js +93 -0
  131. package/dist/core/archive/three-level-fence.js.map +1 -0
  132. package/dist/core/archive/transaction.d.ts +41 -0
  133. package/dist/core/archive/transaction.d.ts.map +1 -0
  134. package/dist/core/archive/transaction.js +184 -0
  135. package/dist/core/archive/transaction.js.map +1 -0
  136. package/dist/core/archive/verify-findings-fence.d.ts +11 -0
  137. package/dist/core/archive/verify-findings-fence.d.ts.map +1 -0
  138. package/dist/core/archive/verify-findings-fence.js +80 -0
  139. package/dist/core/archive/verify-findings-fence.js.map +1 -0
  140. package/dist/core/archive/version-retrograde-fence.d.ts +10 -0
  141. package/dist/core/archive/version-retrograde-fence.d.ts.map +1 -0
  142. package/dist/core/archive/version-retrograde-fence.js +103 -0
  143. package/dist/core/archive/version-retrograde-fence.js.map +1 -0
  144. package/dist/core/artifact-graph/builder.d.ts +16 -0
  145. package/dist/core/artifact-graph/builder.d.ts.map +1 -0
  146. package/dist/core/artifact-graph/builder.js +32 -0
  147. package/dist/core/artifact-graph/builder.js.map +1 -0
  148. package/dist/core/artifact-graph/index.d.ts +3 -0
  149. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  150. package/dist/core/artifact-graph/index.js +4 -0
  151. package/dist/core/artifact-graph/index.js.map +1 -0
  152. package/dist/core/artifact-graph/types.d.ts +14 -0
  153. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  154. package/dist/core/artifact-graph/types.js +2 -0
  155. package/dist/core/artifact-graph/types.js.map +1 -0
  156. package/dist/core/backlog/assets/backlog-readme.md +11 -0
  157. package/dist/core/backlog/index.d.ts +20 -0
  158. package/dist/core/backlog/index.d.ts.map +1 -0
  159. package/dist/core/backlog/index.js +60 -0
  160. package/dist/core/backlog/index.js.map +1 -0
  161. package/dist/core/backlog/render.d.ts +51 -0
  162. package/dist/core/backlog/render.d.ts.map +1 -0
  163. package/dist/core/backlog/render.js +196 -0
  164. package/dist/core/backlog/render.js.map +1 -0
  165. package/dist/core/bootstrap/index.d.ts +2 -0
  166. package/dist/core/bootstrap/index.d.ts.map +1 -0
  167. package/dist/core/bootstrap/index.js +5 -0
  168. package/dist/core/bootstrap/index.js.map +1 -0
  169. package/dist/core/canonical-json.d.ts +11 -0
  170. package/dist/core/canonical-json.d.ts.map +1 -0
  171. package/dist/core/canonical-json.js +43 -0
  172. package/dist/core/canonical-json.js.map +1 -0
  173. package/dist/core/git/utils.d.ts +27 -0
  174. package/dist/core/git/utils.d.ts.map +1 -0
  175. package/dist/core/git/utils.js +53 -0
  176. package/dist/core/git/utils.js.map +1 -0
  177. package/dist/core/harness-adapters/claude.d.ts +13 -0
  178. package/dist/core/harness-adapters/claude.d.ts.map +1 -0
  179. package/dist/core/harness-adapters/claude.js +53 -0
  180. package/dist/core/harness-adapters/claude.js.map +1 -0
  181. package/dist/core/harness-adapters/codex.d.ts +14 -0
  182. package/dist/core/harness-adapters/codex.d.ts.map +1 -0
  183. package/dist/core/harness-adapters/codex.js +60 -0
  184. package/dist/core/harness-adapters/codex.js.map +1 -0
  185. package/dist/core/harness-adapters/detector.d.ts +15 -0
  186. package/dist/core/harness-adapters/detector.d.ts.map +1 -0
  187. package/dist/core/harness-adapters/detector.js +45 -0
  188. package/dist/core/harness-adapters/detector.js.map +1 -0
  189. package/dist/core/harness-adapters/hash-compare.d.ts +21 -0
  190. package/dist/core/harness-adapters/hash-compare.d.ts.map +1 -0
  191. package/dist/core/harness-adapters/hash-compare.js +49 -0
  192. package/dist/core/harness-adapters/hash-compare.js.map +1 -0
  193. package/dist/core/harness-adapters/index.d.ts +8 -0
  194. package/dist/core/harness-adapters/index.d.ts.map +1 -0
  195. package/dist/core/harness-adapters/index.js +8 -0
  196. package/dist/core/harness-adapters/index.js.map +1 -0
  197. package/dist/core/harness-adapters/interface.d.ts +52 -0
  198. package/dist/core/harness-adapters/interface.d.ts.map +1 -0
  199. package/dist/core/harness-adapters/interface.js +3 -0
  200. package/dist/core/harness-adapters/interface.js.map +1 -0
  201. package/dist/core/harness-adapters/legacy-detector.d.ts +14 -0
  202. package/dist/core/harness-adapters/legacy-detector.d.ts.map +1 -0
  203. package/dist/core/harness-adapters/legacy-detector.js +83 -0
  204. package/dist/core/harness-adapters/legacy-detector.js.map +1 -0
  205. package/dist/core/harness-adapters/transaction.d.ts +12 -0
  206. package/dist/core/harness-adapters/transaction.d.ts.map +1 -0
  207. package/dist/core/harness-adapters/transaction.js +113 -0
  208. package/dist/core/harness-adapters/transaction.js.map +1 -0
  209. package/dist/core/harness-adapters/types.d.ts +45 -0
  210. package/dist/core/harness-adapters/types.d.ts.map +1 -0
  211. package/dist/core/harness-adapters/types.js +3 -0
  212. package/dist/core/harness-adapters/types.js.map +1 -0
  213. package/dist/core/hash/content.d.ts +10 -0
  214. package/dist/core/hash/content.d.ts.map +1 -0
  215. package/dist/core/hash/content.js +131 -0
  216. package/dist/core/hash/content.js.map +1 -0
  217. package/dist/core/hash/diff.d.ts +26 -0
  218. package/dist/core/hash/diff.d.ts.map +1 -0
  219. package/dist/core/hash/diff.js +40 -0
  220. package/dist/core/hash/diff.js.map +1 -0
  221. package/dist/core/hash/index.d.ts +6 -0
  222. package/dist/core/hash/index.d.ts.map +1 -0
  223. package/dist/core/hash/index.js +7 -0
  224. package/dist/core/hash/index.js.map +1 -0
  225. package/dist/core/hash/log.d.ts +7 -0
  226. package/dist/core/hash/log.d.ts.map +1 -0
  227. package/dist/core/hash/log.js +14 -0
  228. package/dist/core/hash/log.js.map +1 -0
  229. package/dist/core/hash/tasks.d.ts +9 -0
  230. package/dist/core/hash/tasks.d.ts.map +1 -0
  231. package/dist/core/hash/tasks.js +20 -0
  232. package/dist/core/hash/tasks.js.map +1 -0
  233. package/dist/core/legacy-bridge/ack.d.ts +30 -0
  234. package/dist/core/legacy-bridge/ack.d.ts.map +1 -0
  235. package/dist/core/legacy-bridge/ack.js +133 -0
  236. package/dist/core/legacy-bridge/ack.js.map +1 -0
  237. package/dist/core/legacy-bridge/anchors.d.ts +15 -0
  238. package/dist/core/legacy-bridge/anchors.d.ts.map +1 -0
  239. package/dist/core/legacy-bridge/anchors.js +119 -0
  240. package/dist/core/legacy-bridge/anchors.js.map +1 -0
  241. package/dist/core/legacy-bridge/budget.d.ts +39 -0
  242. package/dist/core/legacy-bridge/budget.d.ts.map +1 -0
  243. package/dist/core/legacy-bridge/budget.js +83 -0
  244. package/dist/core/legacy-bridge/budget.js.map +1 -0
  245. package/dist/core/legacy-bridge/conflict.d.ts +44 -0
  246. package/dist/core/legacy-bridge/conflict.d.ts.map +1 -0
  247. package/dist/core/legacy-bridge/conflict.js +105 -0
  248. package/dist/core/legacy-bridge/conflict.js.map +1 -0
  249. package/dist/core/legacy-bridge/diff-report.d.ts +14 -0
  250. package/dist/core/legacy-bridge/diff-report.d.ts.map +1 -0
  251. package/dist/core/legacy-bridge/diff-report.js +105 -0
  252. package/dist/core/legacy-bridge/diff-report.js.map +1 -0
  253. package/dist/core/legacy-bridge/encoding.d.ts +42 -0
  254. package/dist/core/legacy-bridge/encoding.d.ts.map +1 -0
  255. package/dist/core/legacy-bridge/encoding.js +104 -0
  256. package/dist/core/legacy-bridge/encoding.js.map +1 -0
  257. package/dist/core/legacy-bridge/excel.d.ts +32 -0
  258. package/dist/core/legacy-bridge/excel.d.ts.map +1 -0
  259. package/dist/core/legacy-bridge/excel.js +124 -0
  260. package/dist/core/legacy-bridge/excel.js.map +1 -0
  261. package/dist/core/legacy-bridge/hash-anchor.d.ts +23 -0
  262. package/dist/core/legacy-bridge/hash-anchor.d.ts.map +1 -0
  263. package/dist/core/legacy-bridge/hash-anchor.js +55 -0
  264. package/dist/core/legacy-bridge/hash-anchor.js.map +1 -0
  265. package/dist/core/legacy-bridge/indexer.d.ts +28 -0
  266. package/dist/core/legacy-bridge/indexer.d.ts.map +1 -0
  267. package/dist/core/legacy-bridge/indexer.js +145 -0
  268. package/dist/core/legacy-bridge/indexer.js.map +1 -0
  269. package/dist/core/legacy-bridge/mapper.d.ts +40 -0
  270. package/dist/core/legacy-bridge/mapper.d.ts.map +1 -0
  271. package/dist/core/legacy-bridge/mapper.js +241 -0
  272. package/dist/core/legacy-bridge/mapper.js.map +1 -0
  273. package/dist/core/legacy-bridge/quality-judge.d.ts +65 -0
  274. package/dist/core/legacy-bridge/quality-judge.d.ts.map +1 -0
  275. package/dist/core/legacy-bridge/quality-judge.js +277 -0
  276. package/dist/core/legacy-bridge/quality-judge.js.map +1 -0
  277. package/dist/core/legacy-bridge/redact.d.ts +28 -0
  278. package/dist/core/legacy-bridge/redact.d.ts.map +1 -0
  279. package/dist/core/legacy-bridge/redact.js +121 -0
  280. package/dist/core/legacy-bridge/redact.js.map +1 -0
  281. package/dist/core/legacy-bridge/regenerator.d.ts +50 -0
  282. package/dist/core/legacy-bridge/regenerator.d.ts.map +1 -0
  283. package/dist/core/legacy-bridge/regenerator.js +193 -0
  284. package/dist/core/legacy-bridge/regenerator.js.map +1 -0
  285. package/dist/core/legacy-bridge/resolve.d.ts +28 -0
  286. package/dist/core/legacy-bridge/resolve.d.ts.map +1 -0
  287. package/dist/core/legacy-bridge/resolve.js +75 -0
  288. package/dist/core/legacy-bridge/resolve.js.map +1 -0
  289. package/dist/core/legacy-bridge/sync-check.d.ts +47 -0
  290. package/dist/core/legacy-bridge/sync-check.d.ts.map +1 -0
  291. package/dist/core/legacy-bridge/sync-check.js +198 -0
  292. package/dist/core/legacy-bridge/sync-check.js.map +1 -0
  293. package/dist/core/legacy-bridge/types.d.ts +114 -0
  294. package/dist/core/legacy-bridge/types.d.ts.map +1 -0
  295. package/dist/core/legacy-bridge/types.js +4 -0
  296. package/dist/core/legacy-bridge/types.js.map +1 -0
  297. package/dist/core/markers/index.d.ts +3 -0
  298. package/dist/core/markers/index.d.ts.map +1 -0
  299. package/dist/core/markers/index.js +3 -0
  300. package/dist/core/markers/index.js.map +1 -0
  301. package/dist/core/markers/parse.d.ts +12 -0
  302. package/dist/core/markers/parse.d.ts.map +1 -0
  303. package/dist/core/markers/parse.js +31 -0
  304. package/dist/core/markers/parse.js.map +1 -0
  305. package/dist/core/markers/types.d.ts +142 -0
  306. package/dist/core/markers/types.d.ts.map +1 -0
  307. package/dist/core/markers/types.js +3 -0
  308. package/dist/core/markers/types.js.map +1 -0
  309. package/dist/core/migrate/ack.d.ts +13 -0
  310. package/dist/core/migrate/ack.d.ts.map +1 -0
  311. package/dist/core/migrate/ack.js +62 -0
  312. package/dist/core/migrate/ack.js.map +1 -0
  313. package/dist/core/migrate/archive-detect.d.ts +19 -0
  314. package/dist/core/migrate/archive-detect.d.ts.map +1 -0
  315. package/dist/core/migrate/archive-detect.js +89 -0
  316. package/dist/core/migrate/archive-detect.js.map +1 -0
  317. package/dist/core/migrate/budget.d.ts +7 -0
  318. package/dist/core/migrate/budget.d.ts.map +1 -0
  319. package/dist/core/migrate/budget.js +25 -0
  320. package/dist/core/migrate/budget.js.map +1 -0
  321. package/dist/core/migrate/conflict.d.ts +49 -0
  322. package/dist/core/migrate/conflict.d.ts.map +1 -0
  323. package/dist/core/migrate/conflict.js +99 -0
  324. package/dist/core/migrate/conflict.js.map +1 -0
  325. package/dist/core/migrate/index.d.ts +7 -0
  326. package/dist/core/migrate/index.d.ts.map +1 -0
  327. package/dist/core/migrate/index.js +389 -0
  328. package/dist/core/migrate/index.js.map +1 -0
  329. package/dist/core/migrate/markdown-aware.d.ts +27 -0
  330. package/dist/core/migrate/markdown-aware.d.ts.map +1 -0
  331. package/dist/core/migrate/markdown-aware.js +112 -0
  332. package/dist/core/migrate/markdown-aware.js.map +1 -0
  333. package/dist/core/migrate/quality.d.ts +66 -0
  334. package/dist/core/migrate/quality.d.ts.map +1 -0
  335. package/dist/core/migrate/quality.js +302 -0
  336. package/dist/core/migrate/quality.js.map +1 -0
  337. package/dist/core/migrate/regenerate.d.ts +24 -0
  338. package/dist/core/migrate/regenerate.d.ts.map +1 -0
  339. package/dist/core/migrate/regenerate.js +145 -0
  340. package/dist/core/migrate/regenerate.js.map +1 -0
  341. package/dist/core/migrate/report.d.ts +36 -0
  342. package/dist/core/migrate/report.d.ts.map +1 -0
  343. package/dist/core/migrate/report.js +154 -0
  344. package/dist/core/migrate/report.js.map +1 -0
  345. package/dist/core/migrate/sources/index.d.ts +4 -0
  346. package/dist/core/migrate/sources/index.d.ts.map +1 -0
  347. package/dist/core/migrate/sources/index.js +17 -0
  348. package/dist/core/migrate/sources/index.js.map +1 -0
  349. package/dist/core/migrate/sources/openspec.d.ts +14 -0
  350. package/dist/core/migrate/sources/openspec.d.ts.map +1 -0
  351. package/dist/core/migrate/sources/openspec.js +453 -0
  352. package/dist/core/migrate/sources/openspec.js.map +1 -0
  353. package/dist/core/migrate/sources/superpowers.d.ts +12 -0
  354. package/dist/core/migrate/sources/superpowers.d.ts.map +1 -0
  355. package/dist/core/migrate/sources/superpowers.js +310 -0
  356. package/dist/core/migrate/sources/superpowers.js.map +1 -0
  357. package/dist/core/migrate/types.d.ts +183 -0
  358. package/dist/core/migrate/types.d.ts.map +1 -0
  359. package/dist/core/migrate/types.js +5 -0
  360. package/dist/core/migrate/types.js.map +1 -0
  361. package/dist/core/migrate/utils.d.ts +2 -0
  362. package/dist/core/migrate/utils.d.ts.map +1 -0
  363. package/dist/core/migrate/utils.js +28 -0
  364. package/dist/core/migrate/utils.js.map +1 -0
  365. package/dist/core/monitor/artifact-observer.d.ts +9 -0
  366. package/dist/core/monitor/artifact-observer.d.ts.map +1 -0
  367. package/dist/core/monitor/artifact-observer.js +180 -0
  368. package/dist/core/monitor/artifact-observer.js.map +1 -0
  369. package/dist/core/monitor/config.d.ts +16 -0
  370. package/dist/core/monitor/config.d.ts.map +1 -0
  371. package/dist/core/monitor/config.js +48 -0
  372. package/dist/core/monitor/config.js.map +1 -0
  373. package/dist/core/monitor/divergence-map.d.ts +5 -0
  374. package/dist/core/monitor/divergence-map.d.ts.map +1 -0
  375. package/dist/core/monitor/divergence-map.js +92 -0
  376. package/dist/core/monitor/divergence-map.js.map +1 -0
  377. package/dist/core/monitor/exit-handler.d.ts +6 -0
  378. package/dist/core/monitor/exit-handler.d.ts.map +1 -0
  379. package/dist/core/monitor/exit-handler.js +27 -0
  380. package/dist/core/monitor/exit-handler.js.map +1 -0
  381. package/dist/core/monitor/health-verdict.d.ts +9 -0
  382. package/dist/core/monitor/health-verdict.d.ts.map +1 -0
  383. package/dist/core/monitor/health-verdict.js +55 -0
  384. package/dist/core/monitor/health-verdict.js.map +1 -0
  385. package/dist/core/monitor/report-renderer.d.ts +4 -0
  386. package/dist/core/monitor/report-renderer.d.ts.map +1 -0
  387. package/dist/core/monitor/report-renderer.js +82 -0
  388. package/dist/core/monitor/report-renderer.js.map +1 -0
  389. package/dist/core/monitor/trace-store.d.ts +39 -0
  390. package/dist/core/monitor/trace-store.d.ts.map +1 -0
  391. package/dist/core/monitor/trace-store.js +130 -0
  392. package/dist/core/monitor/trace-store.js.map +1 -0
  393. package/dist/core/monitor/types.d.ts +63 -0
  394. package/dist/core/monitor/types.d.ts.map +1 -0
  395. package/dist/core/monitor/types.js +26 -0
  396. package/dist/core/monitor/types.js.map +1 -0
  397. package/dist/core/parse/design.d.ts +14 -0
  398. package/dist/core/parse/design.d.ts.map +1 -0
  399. package/dist/core/parse/design.js +17 -0
  400. package/dist/core/parse/design.js.map +1 -0
  401. package/dist/core/parse/fenced-yaml.d.ts +18 -0
  402. package/dist/core/parse/fenced-yaml.d.ts.map +1 -0
  403. package/dist/core/parse/fenced-yaml.js +45 -0
  404. package/dist/core/parse/fenced-yaml.js.map +1 -0
  405. package/dist/core/parse/index.d.ts +7 -0
  406. package/dist/core/parse/index.d.ts.map +1 -0
  407. package/dist/core/parse/index.js +8 -0
  408. package/dist/core/parse/index.js.map +1 -0
  409. package/dist/core/parse/markdown.d.ts +30 -0
  410. package/dist/core/parse/markdown.d.ts.map +1 -0
  411. package/dist/core/parse/markdown.js +66 -0
  412. package/dist/core/parse/markdown.js.map +1 -0
  413. package/dist/core/parse/proposal.d.ts +18 -0
  414. package/dist/core/parse/proposal.d.ts.map +1 -0
  415. package/dist/core/parse/proposal.js +22 -0
  416. package/dist/core/parse/proposal.js.map +1 -0
  417. package/dist/core/parse/specs.d.ts +25 -0
  418. package/dist/core/parse/specs.d.ts.map +1 -0
  419. package/dist/core/parse/specs.js +58 -0
  420. package/dist/core/parse/specs.js.map +1 -0
  421. package/dist/core/parse/tasks.d.ts +33 -0
  422. package/dist/core/parse/tasks.d.ts.map +1 -0
  423. package/dist/core/parse/tasks.js +82 -0
  424. package/dist/core/parse/tasks.js.map +1 -0
  425. package/dist/core/parse/yaml.d.ts +13 -0
  426. package/dist/core/parse/yaml.d.ts.map +1 -0
  427. package/dist/core/parse/yaml.js +39 -0
  428. package/dist/core/parse/yaml.js.map +1 -0
  429. package/dist/core/process-evidence-freeze-warnings.d.ts +24 -0
  430. package/dist/core/process-evidence-freeze-warnings.d.ts.map +1 -0
  431. package/dist/core/process-evidence-freeze-warnings.js +153 -0
  432. package/dist/core/process-evidence-freeze-warnings.js.map +1 -0
  433. package/dist/core/schema/index.d.ts +5 -0
  434. package/dist/core/schema/index.d.ts.map +1 -0
  435. package/dist/core/schema/index.js +6 -0
  436. package/dist/core/schema/index.js.map +1 -0
  437. package/dist/core/schema/model-tiers-config.d.ts +41 -0
  438. package/dist/core/schema/model-tiers-config.d.ts.map +1 -0
  439. package/dist/core/schema/model-tiers-config.js +85 -0
  440. package/dist/core/schema/model-tiers-config.js.map +1 -0
  441. package/dist/core/schema/process-verification-config.d.ts +18 -0
  442. package/dist/core/schema/process-verification-config.d.ts.map +1 -0
  443. package/dist/core/schema/process-verification-config.js +74 -0
  444. package/dist/core/schema/process-verification-config.js.map +1 -0
  445. package/dist/core/schema/stage-extensions-config.d.ts +28 -0
  446. package/dist/core/schema/stage-extensions-config.d.ts.map +1 -0
  447. package/dist/core/schema/stage-extensions-config.js +228 -0
  448. package/dist/core/schema/stage-extensions-config.js.map +1 -0
  449. package/dist/core/schema/types.d.ts +262 -0
  450. package/dist/core/schema/types.d.ts.map +1 -0
  451. package/dist/core/schema/types.js +51 -0
  452. package/dist/core/schema/types.js.map +1 -0
  453. package/dist/core/schema/writing-plans-config.d.ts +11 -0
  454. package/dist/core/schema/writing-plans-config.d.ts.map +1 -0
  455. package/dist/core/schema/writing-plans-config.js +40 -0
  456. package/dist/core/schema/writing-plans-config.js.map +1 -0
  457. package/dist/core/schemas/archive-summary.d.ts +131 -0
  458. package/dist/core/schemas/archive-summary.d.ts.map +1 -0
  459. package/dist/core/schemas/archive-summary.js +31 -0
  460. package/dist/core/schemas/archive-summary.js.map +1 -0
  461. package/dist/core/schemas/process-evidence.d.ts +156 -0
  462. package/dist/core/schemas/process-evidence.d.ts.map +1 -0
  463. package/dist/core/schemas/process-evidence.js +12 -0
  464. package/dist/core/schemas/process-evidence.js.map +1 -0
  465. package/dist/core/schemas/scope-entries.d.ts +68 -0
  466. package/dist/core/schemas/scope-entries.d.ts.map +1 -0
  467. package/dist/core/schemas/scope-entries.js +47 -0
  468. package/dist/core/schemas/scope-entries.js.map +1 -0
  469. package/dist/core/schemas/severity.d.ts +58 -0
  470. package/dist/core/schemas/severity.d.ts.map +1 -0
  471. package/dist/core/schemas/severity.js +26 -0
  472. package/dist/core/schemas/severity.js.map +1 -0
  473. package/dist/core/scope/aggregator.d.ts +49 -0
  474. package/dist/core/scope/aggregator.d.ts.map +1 -0
  475. package/dist/core/scope/aggregator.js +141 -0
  476. package/dist/core/scope/aggregator.js.map +1 -0
  477. package/dist/core/scope/index.d.ts +2 -0
  478. package/dist/core/scope/index.d.ts.map +1 -0
  479. package/dist/core/scope/index.js +2 -0
  480. package/dist/core/scope/index.js.map +1 -0
  481. package/dist/core/specs-sync/apply.d.ts +8 -0
  482. package/dist/core/specs-sync/apply.d.ts.map +1 -0
  483. package/dist/core/specs-sync/apply.js +26 -0
  484. package/dist/core/specs-sync/apply.js.map +1 -0
  485. package/dist/core/specs-sync/deltas.d.ts +15 -0
  486. package/dist/core/specs-sync/deltas.d.ts.map +1 -0
  487. package/dist/core/specs-sync/deltas.js +27 -0
  488. package/dist/core/specs-sync/deltas.js.map +1 -0
  489. package/dist/core/specs-sync/index.d.ts +3 -0
  490. package/dist/core/specs-sync/index.d.ts.map +1 -0
  491. package/dist/core/specs-sync/index.js +4 -0
  492. package/dist/core/specs-sync/index.js.map +1 -0
  493. package/dist/core/stage-extensions/convergence-judge.d.ts +35 -0
  494. package/dist/core/stage-extensions/convergence-judge.d.ts.map +1 -0
  495. package/dist/core/stage-extensions/convergence-judge.js +47 -0
  496. package/dist/core/stage-extensions/convergence-judge.js.map +1 -0
  497. package/dist/core/stage-extensions/index.d.ts +13 -0
  498. package/dist/core/stage-extensions/index.d.ts.map +1 -0
  499. package/dist/core/stage-extensions/index.js +11 -0
  500. package/dist/core/stage-extensions/index.js.map +1 -0
  501. package/dist/core/stage-extensions/output-watcher.d.ts +93 -0
  502. package/dist/core/stage-extensions/output-watcher.d.ts.map +1 -0
  503. package/dist/core/stage-extensions/output-watcher.js +163 -0
  504. package/dist/core/stage-extensions/output-watcher.js.map +1 -0
  505. package/dist/core/stage-extensions/severity-mapper.d.ts +21 -0
  506. package/dist/core/stage-extensions/severity-mapper.d.ts.map +1 -0
  507. package/dist/core/stage-extensions/severity-mapper.js +26 -0
  508. package/dist/core/stage-extensions/severity-mapper.js.map +1 -0
  509. package/dist/core/stage-extensions/state-machine.d.ts +43 -0
  510. package/dist/core/stage-extensions/state-machine.d.ts.map +1 -0
  511. package/dist/core/stage-extensions/state-machine.js +19 -0
  512. package/dist/core/stage-extensions/state-machine.js.map +1 -0
  513. package/dist/core/stage-extensions/thread-map.d.ts +60 -0
  514. package/dist/core/stage-extensions/thread-map.d.ts.map +1 -0
  515. package/dist/core/stage-extensions/thread-map.js +107 -0
  516. package/dist/core/stage-extensions/thread-map.js.map +1 -0
  517. package/dist/core/stage-extensions/trend-analyzer.d.ts +29 -0
  518. package/dist/core/stage-extensions/trend-analyzer.d.ts.map +1 -0
  519. package/dist/core/stage-extensions/trend-analyzer.js +60 -0
  520. package/dist/core/stage-extensions/trend-analyzer.js.map +1 -0
  521. package/dist/core/stage-extensions/types.d.ts +39 -0
  522. package/dist/core/stage-extensions/types.d.ts.map +1 -0
  523. package/dist/core/stage-extensions/types.js +5 -0
  524. package/dist/core/stage-extensions/types.js.map +1 -0
  525. package/dist/core/staging-lock.d.ts +36 -0
  526. package/dist/core/staging-lock.d.ts.map +1 -0
  527. package/dist/core/staging-lock.js +122 -0
  528. package/dist/core/staging-lock.js.map +1 -0
  529. package/dist/core/templates/commands/ack-confirm.md +32 -0
  530. package/dist/core/templates/commands/apply.md +220 -0
  531. package/dist/core/templates/commands/archive.md +178 -0
  532. package/dist/core/templates/commands/brainstorm.md +58 -0
  533. package/dist/core/templates/commands/codex-adversarial.md +95 -0
  534. package/dist/core/templates/commands/explore.md +29 -0
  535. package/dist/core/templates/commands/index.d.ts +12 -0
  536. package/dist/core/templates/commands/index.d.ts.map +1 -0
  537. package/dist/core/templates/commands/index.js +26 -0
  538. package/dist/core/templates/commands/index.js.map +1 -0
  539. package/dist/core/templates/commands/propose.md +90 -0
  540. package/dist/core/templates/commands/review.md +105 -0
  541. package/dist/core/templates/commands/upgrade.md +58 -0
  542. package/dist/core/templates/commands/verify.md +186 -0
  543. package/dist/core/templates/index.d.ts +3 -0
  544. package/dist/core/templates/index.d.ts.map +1 -0
  545. package/dist/core/templates/index.js +5 -0
  546. package/dist/core/templates/index.js.map +1 -0
  547. package/dist/core/templates/skills/_shared/scope-category-guidance.md +40 -0
  548. package/dist/core/templates/skills/brainstorming.md +161 -0
  549. package/dist/core/templates/skills/dispatching-parallel-agents.md +209 -0
  550. package/dist/core/templates/skills/exploring.md +476 -0
  551. package/dist/core/templates/skills/finishing-a-development-branch.md +251 -0
  552. package/dist/core/templates/skills/index.d.ts +17 -0
  553. package/dist/core/templates/skills/index.d.ts.map +1 -0
  554. package/dist/core/templates/skills/index.js +53 -0
  555. package/dist/core/templates/skills/index.js.map +1 -0
  556. package/dist/core/templates/skills/process-evidence.md +146 -0
  557. package/dist/core/templates/skills/receiving-code-review.md +294 -0
  558. package/dist/core/templates/skills/requesting-code-review.md +108 -0
  559. package/dist/core/templates/skills/subagent-driven-development.md +405 -0
  560. package/dist/core/templates/skills/subagent-driven-discipline/references/codex-tools.md +72 -0
  561. package/dist/core/templates/skills/subagent-driven-discipline/references/opencode-tools.md +104 -0
  562. package/dist/core/templates/skills/subagent-driven-discipline.md +725 -0
  563. package/dist/core/templates/skills/systematic-debugging.md +297 -0
  564. package/dist/core/templates/skills/test-driven-development.md +402 -0
  565. package/dist/core/templates/skills/using-forge.md +163 -0
  566. package/dist/core/templates/skills/using-git-worktrees.md +229 -0
  567. package/dist/core/templates/skills/verification-before-completion.md +175 -0
  568. package/dist/core/templates/skills/verifying-three-dimensions.md +245 -0
  569. package/dist/core/templates/skills/writing-plans.md +259 -0
  570. package/dist/core/templates/skills/writing-skills.md +214 -0
  571. package/dist/core/test-reporters/index.d.ts +41 -0
  572. package/dist/core/test-reporters/index.d.ts.map +1 -0
  573. package/dist/core/test-reporters/index.js +39 -0
  574. package/dist/core/test-reporters/index.js.map +1 -0
  575. package/dist/core/test-reporters/junit.d.ts +8 -0
  576. package/dist/core/test-reporters/junit.d.ts.map +1 -0
  577. package/dist/core/test-reporters/junit.js +94 -0
  578. package/dist/core/test-reporters/junit.js.map +1 -0
  579. package/dist/core/test-reporters/tap.d.ts +18 -0
  580. package/dist/core/test-reporters/tap.d.ts.map +1 -0
  581. package/dist/core/test-reporters/tap.js +73 -0
  582. package/dist/core/test-reporters/tap.js.map +1 -0
  583. package/dist/core/test-reporters/vitest-json.d.ts +8 -0
  584. package/dist/core/test-reporters/vitest-json.d.ts.map +1 -0
  585. package/dist/core/test-reporters/vitest-json.js +56 -0
  586. package/dist/core/test-reporters/vitest-json.js.map +1 -0
  587. package/dist/core/upgrade/resign-markers.d.ts +14 -0
  588. package/dist/core/upgrade/resign-markers.d.ts.map +1 -0
  589. package/dist/core/upgrade/resign-markers.js +245 -0
  590. package/dist/core/upgrade/resign-markers.js.map +1 -0
  591. package/dist/core/validate/archive-summary-schema.d.ts +8 -0
  592. package/dist/core/validate/archive-summary-schema.d.ts.map +1 -0
  593. package/dist/core/validate/archive-summary-schema.js +186 -0
  594. package/dist/core/validate/archive-summary-schema.js.map +1 -0
  595. package/dist/core/validate/auto-findings.d.ts +36 -0
  596. package/dist/core/validate/auto-findings.d.ts.map +1 -0
  597. package/dist/core/validate/auto-findings.js +38 -0
  598. package/dist/core/validate/auto-findings.js.map +1 -0
  599. package/dist/core/validate/candidate-validators.d.ts +22 -0
  600. package/dist/core/validate/candidate-validators.d.ts.map +1 -0
  601. package/dist/core/validate/candidate-validators.js +46 -0
  602. package/dist/core/validate/candidate-validators.js.map +1 -0
  603. package/dist/core/validate/change.d.ts +3 -0
  604. package/dist/core/validate/change.d.ts.map +1 -0
  605. package/dist/core/validate/change.js +205 -0
  606. package/dist/core/validate/change.js.map +1 -0
  607. package/dist/core/validate/coverage-gap.d.ts +37 -0
  608. package/dist/core/validate/coverage-gap.d.ts.map +1 -0
  609. package/dist/core/validate/coverage-gap.js +181 -0
  610. package/dist/core/validate/coverage-gap.js.map +1 -0
  611. package/dist/core/validate/finding-hash.d.ts +14 -0
  612. package/dist/core/validate/finding-hash.d.ts.map +1 -0
  613. package/dist/core/validate/finding-hash.js +29 -0
  614. package/dist/core/validate/finding-hash.js.map +1 -0
  615. package/dist/core/validate/index.d.ts +15 -0
  616. package/dist/core/validate/index.d.ts.map +1 -0
  617. package/dist/core/validate/index.js +19 -0
  618. package/dist/core/validate/index.js.map +1 -0
  619. package/dist/core/validate/marker-integrity.d.ts +28 -0
  620. package/dist/core/validate/marker-integrity.d.ts.map +1 -0
  621. package/dist/core/validate/marker-integrity.js +170 -0
  622. package/dist/core/validate/marker-integrity.js.map +1 -0
  623. package/dist/core/validate/marker-schema.d.ts +10 -0
  624. package/dist/core/validate/marker-schema.d.ts.map +1 -0
  625. package/dist/core/validate/marker-schema.js +661 -0
  626. package/dist/core/validate/marker-schema.js.map +1 -0
  627. package/dist/core/validate/orphan-tmp.d.ts +13 -0
  628. package/dist/core/validate/orphan-tmp.d.ts.map +1 -0
  629. package/dist/core/validate/orphan-tmp.js +49 -0
  630. package/dist/core/validate/orphan-tmp.js.map +1 -0
  631. package/dist/core/validate/proposal.d.ts +4 -0
  632. package/dist/core/validate/proposal.d.ts.map +1 -0
  633. package/dist/core/validate/proposal.js +40 -0
  634. package/dist/core/validate/proposal.js.map +1 -0
  635. package/dist/core/validate/scope-entries.d.ts +23 -0
  636. package/dist/core/validate/scope-entries.d.ts.map +1 -0
  637. package/dist/core/validate/scope-entries.js +108 -0
  638. package/dist/core/validate/scope-entries.js.map +1 -0
  639. package/dist/core/validate/specs.d.ts +4 -0
  640. package/dist/core/validate/specs.d.ts.map +1 -0
  641. package/dist/core/validate/specs.js +74 -0
  642. package/dist/core/validate/specs.js.map +1 -0
  643. package/dist/core/validate/tasks.d.ts +4 -0
  644. package/dist/core/validate/tasks.d.ts.map +1 -0
  645. package/dist/core/validate/tasks.js +48 -0
  646. package/dist/core/validate/tasks.js.map +1 -0
  647. package/dist/core/validate/test-failure-stub.d.ts +23 -0
  648. package/dist/core/validate/test-failure-stub.d.ts.map +1 -0
  649. package/dist/core/validate/test-failure-stub.js +21 -0
  650. package/dist/core/validate/test-failure-stub.js.map +1 -0
  651. package/dist/core/validate/types.d.ts +33 -0
  652. package/dist/core/validate/types.d.ts.map +1 -0
  653. package/dist/core/validate/types.js +20 -0
  654. package/dist/core/validate/types.js.map +1 -0
  655. package/dist/core/worktree.d.ts +52 -0
  656. package/dist/core/worktree.d.ts.map +1 -0
  657. package/dist/core/worktree.js +145 -0
  658. package/dist/core/worktree.js.map +1 -0
  659. package/dist/index.d.ts +12 -0
  660. package/dist/index.d.ts.map +1 -0
  661. package/dist/index.js +14 -0
  662. package/dist/index.js.map +1 -0
  663. package/package.json +82 -0
@@ -0,0 +1,405 @@
1
+ ---
2
+ name: forge:subagent-driven-development
3
+ description: Use when executing implementation plans with independent tasks in the current session
4
+ ---
5
+
6
+ # Subagent-Driven Development
7
+
8
+ Execute plan by dispatching fresh subagent per task, with two-stage review after each: spec compliance review first, then code quality review.
9
+
10
+ **Why subagents:** You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit your session's context or history — you construct exactly what they need. This also preserves your own context for coordination work.
11
+
12
+ **Core principle:** Fresh subagent per task + two-stage review (spec then quality) = high quality, fast iteration
13
+
14
+ ## When to Use
15
+
16
+ ```dot
17
+ digraph when_to_use {
18
+ "Have implementation plan?" [shape=diamond];
19
+ "Tasks mostly independent?" [shape=diamond];
20
+ "Stay in this session?" [shape=diamond];
21
+ "forge:subagent-driven-development" [shape=box];
22
+ "Manual execution or brainstorm first" [shape=box];
23
+
24
+ "Have implementation plan?" -> "Tasks mostly independent?" [label="yes"];
25
+ "Have implementation plan?" -> "Manual execution or brainstorm first" [label="no"];
26
+ "Tasks mostly independent?" -> "Stay in this session?" [label="yes"];
27
+ "Tasks mostly independent?" -> "Manual execution or brainstorm first" [label="no - tightly coupled"];
28
+ "Stay in this session?" -> "forge:subagent-driven-development" [label="yes"];
29
+ "Stay in this session?" -> "Manual execution or brainstorm first" [label="no - parallel session"];
30
+ }
31
+ ```
32
+
33
+ ## Companion Skill
34
+
35
+ Dispatch 前,检查环境中是否存在 `forge:subagent-driven-discipline`。
36
+
37
+ - **若存在** → 立即调用(`Skill(forge:subagent-driven-discipline)`)再开始 dispatch。它是本 skill 内联摘要的权威完整版 —— 包含完整的 subagent task-type taxonomy(§1)、cheap-model 可靠性 playbook、cross-verify 协议(§3.2)、inline-fix vs round-2 decision tree(§3.3)、以及 Trigger Type Matrix retrospect。以其 taxonomy / playbook 驱动 model-tier 选型和 review discipline。
38
+ - **若不存在** → model tier 选型回退到本 skill `## Model Selection` 的粗粒度直觉(cheap↔`haiku` / standard↔`sonnet` / most-capable↔`opus`);cross-verify 五类与 decision tree 仍由本 skill 内联段自足(这两段本就 harness/模型无关)。仅凭本 skill 继续执行即可。
39
+
40
+ ## The Process
41
+
42
+ ```dot
43
+ digraph process {
44
+ rankdir=TB;
45
+
46
+ subgraph cluster_per_task {
47
+ label="Per Task";
48
+ "Dispatch implementer subagent" [shape=box];
49
+ "Implementer subagent asks questions?" [shape=diamond];
50
+ "Answer questions, provide context" [shape=box];
51
+ "Implementer subagent implements, tests, commits, self-reviews" [shape=box];
52
+ "Dispatch spec reviewer subagent" [shape=box];
53
+ "Spec reviewer subagent confirms code matches spec?" [shape=diamond];
54
+ "Implementer subagent fixes spec gaps" [shape=box];
55
+ "Dispatch code quality reviewer subagent" [shape=box];
56
+ "Code quality reviewer subagent approves?" [shape=diamond];
57
+ "Implementer subagent fixes quality issues" [shape=box];
58
+ "Mark task complete in TodoWrite" [shape=box];
59
+ }
60
+
61
+ "Read plan, extract all tasks with full text, note context, create TodoWrite" [shape=box];
62
+ "More tasks remain?" [shape=diamond];
63
+ "Dispatch final code reviewer subagent for entire implementation" [shape=box];
64
+ "Use forge:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
65
+
66
+ "Read plan, extract all tasks with full text, note context, create TodoWrite" -> "Dispatch implementer subagent";
67
+ "Dispatch implementer subagent" -> "Implementer subagent asks questions?";
68
+ "Implementer subagent asks questions?" -> "Answer questions, provide context" [label="yes"];
69
+ "Answer questions, provide context" -> "Dispatch implementer subagent";
70
+ "Implementer subagent asks questions?" -> "Implementer subagent implements, tests, commits, self-reviews" [label="no"];
71
+ "Implementer subagent implements, tests, commits, self-reviews" -> "Dispatch spec reviewer subagent";
72
+ "Dispatch spec reviewer subagent" -> "Spec reviewer subagent confirms code matches spec?";
73
+ "Spec reviewer subagent confirms code matches spec?" -> "Implementer subagent fixes spec gaps" [label="no"];
74
+ "Implementer subagent fixes spec gaps" -> "Dispatch spec reviewer subagent" [label="re-review"];
75
+ "Spec reviewer subagent confirms code matches spec?" -> "Dispatch code quality reviewer subagent" [label="yes"];
76
+ "Dispatch code quality reviewer subagent" -> "Code quality reviewer subagent approves?";
77
+ "Code quality reviewer subagent approves?" -> "Implementer subagent fixes quality issues" [label="no"];
78
+ "Implementer subagent fixes quality issues" -> "Dispatch code quality reviewer subagent" [label="re-review"];
79
+ "Code quality reviewer subagent approves?" -> "Mark task complete in TodoWrite" [label="yes"];
80
+ "Mark task complete in TodoWrite" -> "More tasks remain?";
81
+ "More tasks remain?" -> "Dispatch implementer subagent" [label="yes"];
82
+ "More tasks remain?" -> "Dispatch final code reviewer subagent for entire implementation" [label="no"];
83
+ "Dispatch final code reviewer subagent for entire implementation" -> "Use forge:finishing-a-development-branch";
84
+ }
85
+ ```
86
+
87
+ ## Model Selection
88
+
89
+ Use the least powerful model that can handle each role to conserve cost and increase speed.
90
+
91
+ **Mechanical implementation tasks** (isolated functions, clear specs, 1-2 files): use a fast, cheap model. Most implementation tasks are mechanical when the plan is well-specified.
92
+
93
+ **Integration and judgment tasks** (multi-file coordination, pattern matching, debugging): use a standard model.
94
+
95
+ **Architecture, design, and review tasks**: use the most capable available model.
96
+
97
+ **Task complexity signals:**
98
+
99
+ - Touches 1-2 files with a complete spec → cheap model
100
+ - Touches multiple files with integration concerns → standard model
101
+ - Requires design judgment or broad codebase understanding → most capable model
102
+
103
+ ## How to Dispatch(plan-v1.1 Task 2 加 — SDD 实操字面)
104
+
105
+ Subagents are dispatched via the **Task tool**(not `spawn_agent` or other invented tools). Specify both `subagent_type` and `model` explicitly:
106
+
107
+ ```
108
+ Use Task tool with:
109
+ subagent_type: <implementer | spec_reviewer | code_quality_reviewer>
110
+ model: <haiku | sonnet | opus> # 按 task subtype 选(实际模型见 forge:subagent-driven-discipline 的「Model Tier 映射」段);不传则 inherit 父 session 浪费 cost
111
+ description: <3-5 word task summary>
112
+ prompt: <full task text + context + DoD + verify checklist>
113
+ ```
114
+
115
+ **model 选型**:每个 task 的 model tier 依据 `forge:subagent-driven-discipline` §1 task-type taxonomy。§1 的 `haiku`/`sonnet`/`opus` 是 tier 标签 —— 在 Claude Code 等直接传 `model` 参数的 harness 上,实际模型经 discipline 的 `model_tiers` 配置解析(默认恒等);在 OpenCode/Codex 等 harness 上,经 subagent agent 定义的 `model:` 解析。本 skill 不单列 model tier 摘要,以免与 discipline §1 漂移。粗粒度直觉见上方 `## Model Selection`。
116
+
117
+ **fresh subagent per task 原则**:每个 task 独立 dispatch,**不共享 context**(避免 context bloat + 责任不清);subagent return 后 controller cross-verify(`§3.2` 五类 verify 命令)再决策。
118
+
119
+ **two-stage review per task**(implementer DONE 后):
120
+
121
+ 1. **spec_reviewer**(sonnet)— spec compliance(verify 字面要求被实现 + 无 extra scope)
122
+ 2. **code_quality_reviewer**(sonnet)— runtime correctness / pattern adherence / latent bug
123
+
124
+ ## Review Protocol(plan-v1.1 Task 3 加 — reviewer 实操字面)
125
+
126
+ When subagent reports DONE, **do not trust at face value**. Run **cross-verify** + assign **verdict 三级** before continuing.
127
+
128
+ **cross-verify 五类**(sonnet reviewer must run + report file:line evidence;沿 forge:subagent-driven-discipline §3.2):
129
+
130
+ 1. **test count**(`pnpm vitest run` 实测 / `git show <SHA>` 看 test diff;不只信 implementer self-report "X tests passed")
131
+ 2. **commit SHA**(`git show <SHA>`/`git log -1 --stat` 看 commit 真实改了什么文件)
132
+ 3. **branch**(`git rev-parse --abbrev-ref HEAD` 确认在正确 feature branch)
133
+ 4. **spec strings**(`grep -n "<key spec phrase>" <files>` 验 spec 字面要求被实现)
134
+ 5. **file:line**(`cat -n <file> | sed -n '<line>,<line+10>p'` 看具体改动 line range)
135
+
136
+ **verdict 三级**(reviewer 返结果时必标):
137
+
138
+ - **Critical** — runtime bug / 安全 / **test fail(failing test count > 0)** / 测试断言静默降级 / cross-source hash mismatch → MUST inline fix or round 2 dispatch;**不允许 merge / release**(即使 PM / 上线压力);沿 `not-merge-without-test` scenario 协议
139
+ - **Important** — pattern adherence / signature 不一致 / spec 字面要求漏 → controller cross-verify file:line 后决策(inline fix 或接受 deferred)
140
+ - **Informational** — style / 命名 / 注释 polish / deferred candidates → noted不阻 release
141
+
142
+ **decision tree**(沿 forge:subagent-driven-discipline §3.3):
143
+
144
+ - Critical = 0 + Important = 0 → 跳过修改 → 下一 task
145
+ - Critical = 0 + Important ≥ 1 → controller cross-verify reviewer claim(file:line 实测)→ inline fix preferred
146
+ - Critical ≥ 1 → 阻止 commit;controller inline fix(若小 scope)或 round 2 dispatch implementer
147
+
148
+ **Never** accept subagent self-report "all tests pass / commit looks good" without running cross-verify 五类 first. Self-report ≠ evidence.
149
+
150
+ ## Handling Implementer Status
151
+
152
+ Implementer subagents report one of **five** statuses (forge v1.0 沿 design §2.1.2 加第 5 档 `DESIGN_ISSUE_FOUND`)。Handle each appropriately:
153
+
154
+ **DONE:** Proceed to spec compliance review.
155
+
156
+ **DONE_WITH_CONCERNS:** The implementer completed the work but flagged doubts. Read the concerns before proceeding:
157
+
158
+ - **CRITICAL concerns**(测试 fail / hash mismatch / evidence 丢)→ 走 forge 强 fence 拒签路径(原 v0.4 行为不变)
159
+ - **WARNING / SUGGESTION concerns about correctness or scope**(非 CRITICAL)→ **invoke Fluid Pause Decision Point**(沿 `commands/apply.md` §"Fluid Pause Decision Point" 段;主代理调 AskUserQuestion 四选项)
160
+ - **Observations**(e.g., "this file is getting large")→ note them and proceed to review
161
+
162
+ **NEEDS_CONTEXT:** The implementer needs information that wasn't provided. Provide the missing context and re-dispatch.
163
+
164
+ **BLOCKED:** The implementer cannot complete the task. Assess the blocker:
165
+
166
+ 1. If it's a context problem, provide more context and re-dispatch with the same model
167
+ 2. If the task requires more reasoning, re-dispatch with a more capable model
168
+ 3. If the task is too large, break it into smaller pieces
169
+ 4. If the **plan itself is wrong** → **invoke Fluid Pause Decision Point**(沿 forge v1.0;原 "escalate to human" 现有合规通道,沿 `commands/apply.md` §"Fluid Pause Decision Point" 段)
170
+
171
+ **`DESIGN_ISSUE_FOUND`**(v1.0 新增第 5 档,沿 forge design §2.1.2):The implementer is reporting that the current task requires functionality that's part of the change but **not covered by the spec**(spec 未覆盖但本 change 应做的需求)。This is **not BLOCKED**(还能干活)和 **not DONE_WITH_CONCERNS**(主体功能没完工就发现 spec 缺口)。Handle by **invoking Fluid Pause Decision Point**(沿 `commands/apply.md` §"Fluid Pause Decision Point" 段;典型走 option=1 扩 scope 或 option=3 转 out-of-scope)。
172
+
173
+ **Never** ignore an escalation or force the same model to retry without changes. If the implementer said it's stuck or surfaced a design issue, something needs to change.
174
+
175
+ ## Example Workflow
176
+
177
+ ```
178
+ You: I'm using Subagent-Driven Development to execute this plan.
179
+
180
+ [Read plan file once: forge/changes/<change-id>/tasks.md]
181
+ [Extract all 5 tasks with full text and context]
182
+ [Create TodoWrite with all tasks]
183
+
184
+ Task 1: Hook installation script
185
+
186
+ [Get Task 1 text and context (already extracted)]
187
+ [Dispatch implementation subagent with full task text + context]
188
+
189
+ Implementer: "Before I begin - should the hook be installed at user or system level?"
190
+
191
+ You: "User level (~/.config/forge/hooks/)"
192
+
193
+ Implementer: "Got it. Implementing now..."
194
+ [Later] Implementer:
195
+ - Implemented install-hook command
196
+ - Added tests, 5/5 passing
197
+ - Self-review: Found I missed --force flag, added it
198
+ - Committed
199
+
200
+ [Dispatch spec compliance reviewer]
201
+ Spec reviewer: ✅ Spec compliant - all requirements met, nothing extra
202
+
203
+ [Get git SHAs, dispatch code quality reviewer]
204
+ Code reviewer: Strengths: Good test coverage, clean. Issues: None. Approved.
205
+
206
+ [Mark Task 1 complete]
207
+
208
+ Task 2: Recovery modes
209
+
210
+ [Get Task 2 text and context (already extracted)]
211
+ [Dispatch implementation subagent with full task text + context]
212
+
213
+ Implementer: [No questions, proceeds]
214
+ Implementer:
215
+ - Added verify/repair modes
216
+ - 8/8 tests passing
217
+ - Self-review: All good
218
+ - Committed
219
+
220
+ [Dispatch spec compliance reviewer]
221
+ Spec reviewer: ❌ Issues:
222
+ - Missing: Progress reporting (spec says "report every 100 items")
223
+ - Extra: Added --json flag (not requested)
224
+
225
+ [Implementer fixes issues]
226
+ Implementer: Removed --json flag, added progress reporting
227
+
228
+ [Spec reviewer reviews again]
229
+ Spec reviewer: ✅ Spec compliant now
230
+
231
+ [Dispatch code quality reviewer]
232
+ Code reviewer: Strengths: Solid. Issues (Important): Magic number (100)
233
+
234
+ [Implementer fixes]
235
+ Implementer: Extracted PROGRESS_INTERVAL constant
236
+
237
+ [Code reviewer reviews again]
238
+ Code reviewer: ✅ Approved
239
+
240
+ [Mark Task 2 complete]
241
+
242
+ ...
243
+
244
+ [After all tasks]
245
+ [Dispatch final code-reviewer]
246
+ Final reviewer: All requirements met, ready to merge
247
+
248
+ Done!
249
+ ```
250
+
251
+ ## Advantages
252
+
253
+ **vs. Manual execution:**
254
+
255
+ - Subagents follow TDD naturally
256
+ - Fresh context per task (no confusion)
257
+ - Parallel-safe (subagents don't interfere)
258
+ - Subagent can ask questions (before AND during work)
259
+
260
+ **Efficiency gains:**
261
+
262
+ - No file reading overhead (controller provides full text)
263
+ - Controller curates exactly what context is needed
264
+ - Subagent gets complete information upfront
265
+ - Questions surfaced before work begins (not after)
266
+
267
+ **Quality gates:**
268
+
269
+ - Self-review catches issues before handoff
270
+ - Two-stage review: spec compliance, then code quality
271
+ - Review loops ensure fixes actually work
272
+ - Spec compliance prevents over/under-building
273
+ - Code quality ensures implementation is well-built
274
+
275
+ **Cost:**
276
+
277
+ - More subagent invocations (implementer + 2 reviewers per task)
278
+ - Controller does more prep work (extracting all tasks upfront)
279
+ - Review loops add iterations
280
+ - But catches issues early (cheaper than debugging later)
281
+
282
+ ## Red Flags
283
+
284
+ **Never:**
285
+
286
+ - Start implementation on main/master branch without explicit user consent
287
+ - Skip reviews (spec compliance OR code quality)
288
+ - Proceed with unfixed issues
289
+ - Dispatch multiple implementation subagents in parallel (conflicts)
290
+ - Make subagent read plan file (provide full text instead)
291
+ - Skip scene-setting context (subagent needs to understand where task fits)
292
+ - Ignore subagent questions (answer before letting them proceed)
293
+ - Accept "close enough" on spec compliance (spec reviewer found issues = not done)
294
+ - Skip review loops (reviewer found issues = implementer fixes = review again)
295
+ - Let implementer self-review replace actual review (both are needed)
296
+ - **Start code quality review before spec compliance is ✅** (wrong order)
297
+ - Move to next task while either review has open issues
298
+
299
+ **If subagent asks questions:**
300
+
301
+ - Answer clearly and completely
302
+ - Provide additional context if needed
303
+ - Don't rush them into implementation
304
+
305
+ **If reviewer finds issues:**
306
+
307
+ - Implementer (same subagent) fixes them
308
+ - Reviewer reviews again
309
+ - Repeat until approved
310
+ - Don't skip the re-review
311
+
312
+ **If subagent fails task:**
313
+
314
+ - Dispatch fix subagent with specific instructions
315
+ - Don't try to fix manually (context pollution)
316
+
317
+ ## Integration
318
+
319
+ **Required workflow skills:**
320
+
321
+ - **forge:using-git-worktrees** - REQUIRED: Set up isolated workspace before starting
322
+ - **forge:writing-plans** - Creates the plan this skill executes
323
+ - **forge:requesting-code-review** - Code review template for reviewer subagents
324
+ - **forge:finishing-a-development-branch** - Complete development after all tasks
325
+
326
+ **Subagents should use:**
327
+
328
+ - **forge:test-driven-development** - Subagents follow TDD for each task
329
+
330
+ ## forge-specific 反向加固(v1.0)
331
+
332
+ forge v1.0 在本 skill 基础上加以下反向加固协议(与上游 superpowers 兼容、不冲突):
333
+
334
+ ### Fluid Pause 不可绕过的不变量
335
+
336
+ 主代理在调 AskUserQuestion 并写入 `pause_decisions` marker 字段时**不可**:
337
+
338
+ 1. **伪造 `severity_acked_by`** — WARNING pause_decision 的 `severity_acked_by` 必须是真实用户响应,且 `.evidence/ack-log.jsonl` 必须有对应 `kind=ack` + `action=ack-pause-warning` + `finding_id=pause_decisions:<id>` + `user=<同 marker>` 条目。若 marker 直填 `severity_acked_by: msc` 但 ack-log.jsonl 无该条目 → `validateAckLogConsistency`(v2 codex BLOCKER 1 扩展)拒签;若 ack-log `user` 与 marker `severity_acked_by` 不一致(如 marker 写 `msc`,ack-log 写 `ai-agent`)→ 拒签。**SUGGESTION 例外**:fence 不要求 ack 一致性(沿 design §2.1.5 SUGGESTION 允许空 ack)
339
+
340
+ 2. **CRITICAL 走 pause 路径** — 主代理判定 severity=CRITICAL 时**禁止**调 AskUserQuestion 让用户在 1-4 间选;CRITICAL 必须走 forge 强 fence 拒签(沿 design §2.1.2)。`forge archive` 步骤 3.7 任一 `pause_decisions[].severity === 'CRITICAL'` → exit 1
341
+
342
+ 3. **option=3 没 `non_blocking_rationale`** — `option=3` 转 out-of-scope 必须配 `non_blocking_rationale` 论证"为什么 subagent 能跳过该 issue 完成主体 task"。fence 拒签缺失
343
+
344
+ 4. **option=2 不勾选新 task** — `option=2` 加 task 时,主代理 append 新 task 到 tasks.md 后 subagent 重派实施;实施完成后**必须**改 `[ ]` → `[x]`。fence 校验 `tasks.md` 中 `task_ref` 末段对应行已勾选
345
+
346
+ ### 红旗清单(借口模式)
347
+
348
+ | AI 借口 | 反向加固 |
349
+ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
350
+ | "用户在对话中确认过,我直接写 ack 就好" | `forge archive` ack-log 一致性 cross-check 会发现 marker ack ↔ ack-log 不一致(沿 plan-9d v2 B-4) |
351
+ | "CRITICAL 太严了,我降级为 WARNING 让用户 ack" | fence 在 `severity` 字段重算 finding_hash(沿 plan-9d Task 6),篡改任一 hash payload 字段 → 拒签 |
352
+ | "option=3 转 out-of-scope 时 rationale 写"用户决定即可"" | rationale 必须论证"为什么 subagent 能跳过"— 不是"用户决定"是答案 |
353
+
354
+ ### plan-9g 新增:DONE_REPORT 必须含 process_evidence 字段
355
+
356
+ subagent 在 task 实施完成报 DONE 时,**必须**提供以下字段给主代理(供 `forge evidence record-tdd` helper 用):
357
+
358
+ - `red_commit`:RED 阶段 commit sha + ISO timestamp
359
+ - `red_log_path` + `red_log_hash`(sha256)
360
+ - `red_report_path` + `red_report_hash`(JUnit XML / TAP / Vitest JSON)
361
+ - `red_exit_code`(必 != 0)
362
+ - `green_commit`:同上(GREEN)
363
+ - `green_exit_code`(必 == 0)
364
+ - `expected_failures`:RED 阶段绑定具体失败的 test(test_file + test_name + failure_type)
365
+
366
+ 若 light mode trivial change 走 tdd_exemption:必须先调 `forge ack propose --action ack-tdd-exemption`,DONE_REPORT 含 ack_log entry 引用。
367
+
368
+ 详细 process_evidence 协议见 `skills/process-evidence/SKILL.md`。
369
+
370
+ ### plan-9h 新增:Main Agent STOP Triggers
371
+
372
+ 主代理在 apply 阶段必须停下问用户的 **6 类触发条件**(不允许自动绕过或重试,沿 design v3 §2.8.3 B + §2.8.3 C):
373
+
374
+ | 触发条件 | 主代理行为 | cross-ref |
375
+ | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
376
+ | Critical Plan Review 发现 critical gap | 暂停 dispatch,走 AskUserQuestion 4 类 concerns | `commands/apply.md` 步骤 3.5 |
377
+ | subagent 报告 BLOCKED 第 4 项("plan itself is wrong") | 转 §"Fluid Pause Decision Point" | 本 SKILL.md §"Handling Implementer Status" BLOCKED 第 4 项(line 115)+ `commands/apply.md` §"Fluid Pause" |
378
+ | **同一 task 被 subagent BLOCKED ≥ 2 次** | STOP 问用户(可能任务过大需拆分,或 plan 本身错) | — |
379
+ | **verify 命令重试 ≥ 3 次仍失败** | STOP 问用户(可能 spec 错 / 测试本身错) | — |
380
+ | 用户主动 interrupt | STOP,等下一步指令 | — |
381
+ | **保护分支拒签**(`forge preflight branch-check` 报 exit 2,在 `main`/`master`/`develop`/`trunk` 等保护分支跑 `forge apply`) | CLI 已 fail-closed,主代理转告用户切换 `feature/<change-id>` 分支并重跑;**不允许** `--allow-protected-branch` 自动绕过 | `commands/apply.md` 步骤 0 + `forge preflight branch-check`(plan-9h Task 1 + plan-9z polish P-1) |
382
+
383
+ #### 计数机制(plan-9h Q5 决策:接口零侵入)
384
+
385
+ 主代理必须在 **session memory 内追踪**同 task BLOCKED 计数 + verify 重试计数:
386
+
387
+ - 每次接到 subagent BLOCKED 报告 → 该 task 计数 +1
388
+ - 每次 verify 命令失败 → 该次重试计数 +1
389
+ - **不依赖 marker / ack-log 持久化字段**(避免侵入 master plan §3.12.4 ack-log schema freeze + §3.12 marker schema freeze)
390
+ - 跨 session wakeup 丢计数属 v0.4 known limitation;若用户手工告知"task X 已 BLOCKED N 次",主代理按用户告知值续计
391
+
392
+ #### 禁止行为(主代理 dispatch 阶段红线)
393
+
394
+ - ✗ 不允许"绕过失败 task 跑下一个"
395
+ - ✗ 不允许"修改 task 描述让它能过"(改 task 描述需经 §"Fluid Pause Decision Point" 走选项 1/2)
396
+ - ✗ 不允许"重试同一 task ≥ 3 次不停下"
397
+
398
+ #### 与现有 BLOCKED 状态处理的关系(横切补强)
399
+
400
+ 本子段是 §"Handling Implementer Status" BLOCKED 4 项处理(line 110-115)的**横切补强**:
401
+
402
+ - **BLOCKED 4 项处理**:**单次** BLOCKED 报告时主代理按 context / model / 拆分 / plan-wrong 4 选 1 处理
403
+ - **本 STOP triggers**:**多次累积** BLOCKED / verify 重试 时强制 STOP 问用户(避免主代理无限循环)
404
+
405
+ 两者不冲突 — 现有 BLOCKED 第 4 项 "plan itself is wrong → Fluid Pause" 仍走 Fluid Pause(单次 critical gap 即触发);本 STOP triggers 表第 3-4 行(BLOCKED ≥ 2 次 / verify ≥ 3 次)是**累积失败**的反向加固,触发 STOP 后用户决策可能是"拆 task"/"重写 spec"/"走 explore"(沿 §2.8.4 与 §2.1/§2.5 桥接)。
@@ -0,0 +1,72 @@
1
+ # Codex CLI Tool Mapping for `subagent-driven-discipline`
2
+
3
+ This skill is written using Claude Code tool names. When running on Codex CLI, use these equivalents.
4
+
5
+ ## Skill loading
6
+
7
+ | Skill references | Codex equivalent |
8
+ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | `Skill(subagent-driven-discipline)` | Skills auto-load from `.codex/skills/` and `~/.agents/skills/`. When you see `Skill(name)` in a Claude Code prompt, just follow the instructions — Codex already has the skill content visible. |
10
+
11
+ ## Subagent dispatch (the central concept of this skill)
12
+
13
+ | Claude Code | Codex equivalent |
14
+ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
15
+ | `Task` tool / `Agent` tool dispatch | `spawn_agent` |
16
+ | Multiple `Task` calls in one message (parallel) | Multiple `spawn_agent` calls |
17
+ | Wait for subagent result | `wait_agent` |
18
+ | Free subagent slot | `close_agent` |
19
+ | `model:` parameter on Task | Codex configures model via the agent profile / config — pass model selection via the spawned-agent profile field, not as a tool parameter |
20
+
21
+ **Required Codex config** (in `~/.codex/config.toml`):
22
+
23
+ ```toml
24
+ [features]
25
+ multi_agent = true
26
+ ```
27
+
28
+ This enables `spawn_agent`, `wait_agent`, `close_agent`. Without it, this skill cannot function on Codex.
29
+
30
+ **Legacy note**: Codex builds before `rust-v0.115.0` exposed spawned-agent waiting as `wait`. Current Codex uses `wait_agent`. The `wait` name now belongs to code-mode `exec/wait` (resumes a yielded exec cell by `cell_id`); it is NOT the spawned-agent result tool.
31
+
32
+ ## Other tool name mapping
33
+
34
+ | Claude Code | Codex equivalent |
35
+ | ------------------------------- | ------------------------------- |
36
+ | `Read`, `Write`, `Edit` (files) | use Codex's native file tools |
37
+ | `Bash` (run commands) | use Codex's native shell tools |
38
+ | `Grep`, `Glob` | use Codex's native search tools |
39
+ | `TodoWrite` (task tracking) | `update_plan` |
40
+
41
+ ## §3.1 STRICT cwd verify (Codex-specific note)
42
+
43
+ Codex sandbox sometimes places spawned agents in linked git worktrees. Before performing the §3.1 cwd-verify block, also run:
44
+
45
+ ```bash
46
+ GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
47
+ GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
48
+ BRANCH=$(git branch --show-current)
49
+ ```
50
+
51
+ - `GIT_DIR != GIT_COMMON` → already in a linked worktree (skip §4.1 cherry-pick recovery if commits land where they should)
52
+ - `BRANCH` empty → detached HEAD (§4.1 cherry-pick recovery cannot push, only commit + hand off to user)
53
+
54
+ ## §3.4 Trigger Type 5 (Codex CLI subprocess) is out of scope for THIS skill
55
+
56
+ §3.4.5 explicitly notes that Codex CLI subprocesses invoked via `/codex:adversarial-review` / `/codex:review` from a Claude Code parent **are not** governed by this skill. They follow Codex's own review protocol.
57
+
58
+ When Codex itself is the controller (not the subprocess), §3.4 Type 1–4 apply normally — Codex dispatches `spawn_agent` subagents and runs the same retrospect protocol.
59
+
60
+ ## §3.4 retrospect actor model (Codex-specific note)
61
+
62
+ This skill mandates **Opus actor** for Type 1 + Type 2 retrospect. On Codex:
63
+
64
+ - If Codex is configured to use Anthropic Claude Opus → controller can run retrospect directly
65
+ - If Codex uses GPT-5 / other model as controller → spawn an Opus agent for retrospect via `spawn_agent` with profile pointing at `claude-opus-*`
66
+ - If no Opus access available → **the retrospect protocol cannot be honored**. Either skip retrospect (skill stops growing reliably) or downgrade to Sonnet-tier with explicit acknowledgment that meta-judgment quality drops
67
+
68
+ ## What still works exactly as written
69
+
70
+ §1 28-subtype taxonomy, §2 strict prompt elements, §3.2 cross-verify command list, §3.3 inline-fix decision tree, §4.1 cherry-pick recovery, §4.2 mid-phase upgrade trigger, §5 case studies, §6 pattern catalog — these are platform-independent controller-side judgments and apply verbatim.
71
+
72
+ > 注:此处「platform-independent」指跨 _harness_ 通用;§1 的 model tier 列 `haiku`/`sonnet`/`opus` 是 tier 标签,默认对应同名 Claude 模型,实际派发模型按 harness / `forge/config.yaml#model_tiers` 解析(见 SKILL.md `## Model Tier 映射` 段)。
@@ -0,0 +1,104 @@
1
+ # OpenCode Tool Mapping for `subagent-driven-discipline`
2
+
3
+ Tested against [anomalyco/opencode](https://github.com/anomalyco/opencode) (the open-source AI coding agent at opencode.ai). This skill is written using Claude Code tool names. When running on OpenCode, use these equivalents.
4
+
5
+ ## Install path (OpenCode reads `.claude/skills/` natively)
6
+
7
+ OpenCode walks up from the current working directory to the git worktree and discovers skills at the following paths (in priority order):
8
+
9
+ **Project-local:**
10
+
11
+ - `.opencode/skills/<name>/SKILL.md` (native)
12
+ - `.claude/skills/<name>/SKILL.md` (Claude Code-compatible)
13
+ - `.agents/skills/<name>/SKILL.md` (cross-platform)
14
+
15
+ **Global:**
16
+
17
+ - `~/.config/opencode/skills/<name>/SKILL.md` (native)
18
+ - `~/.claude/skills/<name>/SKILL.md` (Claude Code-compatible)
19
+ - `~/.agents/skills/<name>/SKILL.md` (cross-platform)
20
+
21
+ **Practical implication**: a single install at `.claude/skills/subagent-driven-discipline/` is read by both Claude Code AND OpenCode without duplication. You do not need a separate copy at `.opencode/skills/`.
22
+
23
+ ## Skill loading
24
+
25
+ | Claude Code | OpenCode equivalent |
26
+ | ----------------------------------- | -------------------------------------------------------------------------------------------- |
27
+ | `Skill(subagent-driven-discipline)` | `skill({ name: "subagent-driven-discipline" })` (lowercase tool name; JSON object parameter) |
28
+
29
+ OpenCode auto-discovers skills and shows the agent the available skill list (name + description from frontmatter); the agent decides when to invoke `skill(...)` to load full content.
30
+
31
+ ## Subagent dispatch (the central concept of this skill)
32
+
33
+ | Claude Code | OpenCode equivalent |
34
+ | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
35
+ | `Task` tool dispatch | The `Task` tool (per opencode docs `permission.task`) — exact case + signature is not fully documented in opencode public docs; consult opencode's runtime tool list when in doubt. |
36
+ | User-driven `@subagent` invocation | Same in OpenCode — type `@<agent-name>` in chat to invoke a subagent |
37
+ | `model:` parameter on Task | OpenCode subagents are defined as separate `.md` files with `model:` in their frontmatter — the model is picked at agent definition, NOT per-dispatch. To dispatch with different models, define multiple subagents (one per model tier). |
38
+ | `subagent_type:` parameter | The agent name (filename without `.md`) — e.g. invoke `general` to call the built-in `general` subagent |
39
+
40
+ **Subagent definition path** (where you create the implementer / spec-reviewer / code-quality-reviewer agents this skill assumes):
41
+
42
+ - Project: `.opencode/agents/<name>.md`
43
+ - Global: `~/.config/opencode/agents/<name>.md`
44
+
45
+ Frontmatter required: `description` + `mode`. Optional: `model`, `temperature`, `permission`, `prompt`, `steps`, `disable`, `hidden`, `color`, `top_p`.
46
+
47
+ Example agent definition matching this skill's §1 model tiers:
48
+
49
+ ```markdown
50
+ ---
51
+ description: implementer for mechanical / pattern-matching tasks (§1.1.1 / §1.1.2). Use for tasks where plan provides full code samples or sister-file references.
52
+ mode: subagent
53
+ model: anthropic/claude-haiku-*
54
+ permission:
55
+ edit: allow
56
+ bash: allow
57
+ ---
58
+
59
+ [system prompt — paste §2.1 Implementation Haiku Reliability Playbook here]
60
+ ```
61
+
62
+ You will need 3+ such agent files (one per model tier × role: haiku-implementer, sonnet-implementer, opus-implementer, haiku-spec-reviewer, sonnet-code-quality-reviewer, etc.) or a smaller set if you don't need all tiers.
63
+
64
+ ## Other tool name mapping
65
+
66
+ | Claude Code | OpenCode equivalent |
67
+ | ----------------- | ------------------------------------------------ |
68
+ | `Read` | `read` |
69
+ | `Write` | `write` |
70
+ | `Edit` | `edit` |
71
+ | `Bash` | `bash` |
72
+ | `Grep` | `grep` |
73
+ | `Glob` | `glob` |
74
+ | `TodoWrite` | `todowrite` |
75
+ | `WebFetch` | `webfetch` |
76
+ | `WebSearch` | `websearch` (requires `OPENCODE_ENABLE_EXA` env) |
77
+ | `AskUserQuestion` | `question` |
78
+ | (no equivalent) | `apply_patch`, `lsp` (OpenCode-specific) |
79
+
80
+ OpenCode tool names are **lowercase**, in contrast to Claude Code's PascalCase.
81
+
82
+ ## §3.1 STRICT cwd verify (OpenCode-specific)
83
+
84
+ OpenCode's TUI is client/server — the agent runs in a server process that may not share cwd with the user's terminal. The §3.1 cwd verify block (`pwd` + `git branch --show-current` + `git rev-parse HEAD`) catches this — the bash output reflects the server-side cwd, which is what subsequent commits use.
85
+
86
+ ## §3.4 retrospect actor model (OpenCode-specific note)
87
+
88
+ This skill mandates **Opus actor** for Type 1 + Type 2 retrospect. On OpenCode:
89
+
90
+ - OpenCode is provider-agnostic — the controller can be Anthropic Claude, OpenAI GPT, Google Gemini, or local model
91
+ - If your OpenCode controller is configured to Claude Opus → run retrospect directly
92
+ - If controller is non-Opus → define a dedicated retrospect subagent in `.opencode/agents/retrospect.md` with `model: anthropic/claude-opus-*`, then dispatch via `Task` / `@retrospect`
93
+ - If no Opus access → see Codex tool-mapping note (skip retrospect or downgrade with acknowledgment)
94
+
95
+ ## What still works exactly as written
96
+
97
+ §1 28-subtype taxonomy, §2 strict prompt elements, §3.2 cross-verify command list, §3.3 inline-fix decision tree, §4.1 cherry-pick recovery, §4.2 mid-phase upgrade trigger, §5 case studies, §6 pattern catalog — these are platform-independent controller-side judgments and apply verbatim on OpenCode.
98
+
99
+ > 注:此处「platform-independent」指跨 _harness_ 通用;§1 的 model tier 列 `haiku`/`sonnet`/`opus` 是 tier 标签,默认对应同名 Claude 模型,实际派发模型按 harness / `forge/config.yaml#model_tiers` 解析(见 SKILL.md `## Model Tier 映射` 段)。
100
+
101
+ ## OpenCode-specific advantages this skill exploits
102
+
103
+ - **Permission model**: OpenCode's `permission.task` config can hard-block subagent dispatches by name pattern. Use this to enforce §3.4.5 Type 5 boundary (deny all `codex-*` subagent names if you don't want Codex CLI mixed in).
104
+ - **Plan-mode agent**: OpenCode's built-in `plan` agent (read-only, denies edits) maps cleanly to §1.7 verification tasks — use it for §1.7.2 cross-check evidence vs spec.