forgecraft-mcp 1.4.0 → 1.7.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 (418) hide show
  1. package/LICENSE +67 -0
  2. package/README.md +527 -525
  3. package/dist/analyzers/anchors/anchor-loader.d.ts +47 -0
  4. package/dist/analyzers/anchors/anchor-loader.d.ts.map +1 -0
  5. package/dist/analyzers/anchors/anchor-loader.js +113 -0
  6. package/dist/analyzers/anchors/anchor-loader.js.map +1 -0
  7. package/dist/analyzers/anti-pattern.d.ts.map +1 -1
  8. package/dist/analyzers/anti-pattern.js +38 -26
  9. package/dist/analyzers/anti-pattern.js.map +1 -1
  10. package/dist/analyzers/completeness-helpers.d.ts +5 -0
  11. package/dist/analyzers/completeness-helpers.d.ts.map +1 -1
  12. package/dist/analyzers/completeness-helpers.js +17 -0
  13. package/dist/analyzers/completeness-helpers.js.map +1 -1
  14. package/dist/analyzers/completeness.d.ts.map +1 -1
  15. package/dist/analyzers/completeness.js +4 -4
  16. package/dist/analyzers/completeness.js.map +1 -1
  17. package/dist/analyzers/gs-scorer.d.ts +3 -1
  18. package/dist/analyzers/gs-scorer.d.ts.map +1 -1
  19. package/dist/analyzers/gs-scorer.js +5 -2
  20. package/dist/analyzers/gs-scorer.js.map +1 -1
  21. package/dist/analyzers/package-json.d.ts.map +1 -1
  22. package/dist/analyzers/package-json.js +194 -34
  23. package/dist/analyzers/package-json.js.map +1 -1
  24. package/dist/analyzers/scorers/composable-scorer.d.ts +4 -2
  25. package/dist/analyzers/scorers/composable-scorer.d.ts.map +1 -1
  26. package/dist/analyzers/scorers/composable-scorer.js +50 -2
  27. package/dist/analyzers/scorers/composable-scorer.js.map +1 -1
  28. package/dist/analyzers/scorers/executable-scorer.d.ts +3 -2
  29. package/dist/analyzers/scorers/executable-scorer.d.ts.map +1 -1
  30. package/dist/analyzers/scorers/executable-scorer.js +64 -4
  31. package/dist/analyzers/scorers/executable-scorer.js.map +1 -1
  32. package/dist/analyzers/scorers/scorer-utils.d.ts +5 -3
  33. package/dist/analyzers/scorers/scorer-utils.d.ts.map +1 -1
  34. package/dist/analyzers/scorers/scorer-utils.js +34 -9
  35. package/dist/analyzers/scorers/scorer-utils.js.map +1 -1
  36. package/dist/analyzers/scorers/self-describing-scorer.d.ts +7 -4
  37. package/dist/analyzers/scorers/self-describing-scorer.d.ts.map +1 -1
  38. package/dist/analyzers/scorers/self-describing-scorer.js +17 -18
  39. package/dist/analyzers/scorers/self-describing-scorer.js.map +1 -1
  40. package/dist/cli/help.js +51 -51
  41. package/dist/disciplines/catalog.d.ts +16 -0
  42. package/dist/disciplines/catalog.d.ts.map +1 -0
  43. package/dist/disciplines/catalog.js +196 -0
  44. package/dist/disciplines/catalog.js.map +1 -0
  45. package/dist/disciplines/runner.d.ts +13 -0
  46. package/dist/disciplines/runner.d.ts.map +1 -0
  47. package/dist/disciplines/runner.js +35 -0
  48. package/dist/disciplines/runner.js.map +1 -0
  49. package/dist/registry/composer.d.ts.map +1 -1
  50. package/dist/registry/composer.js +9 -4
  51. package/dist/registry/composer.js.map +1 -1
  52. package/dist/registry/loader-tag.d.ts.map +1 -1
  53. package/dist/registry/loader-tag.js +1 -0
  54. package/dist/registry/loader-tag.js.map +1 -1
  55. package/dist/registry/remote-gates.js +1 -1
  56. package/dist/registry/remote-gates.js.map +1 -1
  57. package/dist/registry/renderer-skeletons.js +92 -92
  58. package/dist/registry/sentinel-renderer.js +299 -20
  59. package/dist/registry/sentinel-renderer.js.map +1 -1
  60. package/dist/sentinel/detect.d.ts +41 -0
  61. package/dist/sentinel/detect.d.ts.map +1 -0
  62. package/dist/sentinel/detect.js +122 -0
  63. package/dist/sentinel/detect.js.map +1 -0
  64. package/dist/sentinel/write.d.ts +54 -0
  65. package/dist/sentinel/write.d.ts.map +1 -0
  66. package/dist/sentinel/write.js +75 -0
  67. package/dist/sentinel/write.js.map +1 -0
  68. package/dist/shared/cnt-health.d.ts +16 -0
  69. package/dist/shared/cnt-health.d.ts.map +1 -1
  70. package/dist/shared/cnt-health.js +55 -8
  71. package/dist/shared/cnt-health.js.map +1 -1
  72. package/dist/shared/config.d.ts +14 -0
  73. package/dist/shared/config.d.ts.map +1 -1
  74. package/dist/shared/config.js +45 -0
  75. package/dist/shared/config.js.map +1 -1
  76. package/dist/shared/gs-score-logger.js +6 -6
  77. package/dist/shared/hook-installer.d.ts +58 -0
  78. package/dist/shared/hook-installer.d.ts.map +1 -0
  79. package/dist/shared/hook-installer.js +316 -0
  80. package/dist/shared/hook-installer.js.map +1 -0
  81. package/dist/shared/project-gates-helpers.d.ts +9 -0
  82. package/dist/shared/project-gates-helpers.d.ts.map +1 -1
  83. package/dist/shared/project-gates-helpers.js +35 -0
  84. package/dist/shared/project-gates-helpers.js.map +1 -1
  85. package/dist/shared/types/config.d.ts +7 -1
  86. package/dist/shared/types/config.d.ts.map +1 -1
  87. package/dist/shared/types/gates.d.ts +34 -0
  88. package/dist/shared/types/gates.d.ts.map +1 -1
  89. package/dist/shared/types/project.d.ts +68 -2
  90. package/dist/shared/types/project.d.ts.map +1 -1
  91. package/dist/shared/types/project.js +1 -0
  92. package/dist/shared/types/project.js.map +1 -1
  93. package/dist/shared/types/templates.d.ts +8 -1
  94. package/dist/shared/types/templates.d.ts.map +1 -1
  95. package/dist/shared/types/verify.d.ts +51 -1
  96. package/dist/shared/types/verify.d.ts.map +1 -1
  97. package/dist/shared/types/verify.js +37 -1
  98. package/dist/shared/types/verify.js.map +1 -1
  99. package/dist/tools/add-hook.d.ts.map +1 -1
  100. package/dist/tools/add-hook.js +8 -1
  101. package/dist/tools/add-hook.js.map +1 -1
  102. package/dist/tools/add-module.js +123 -123
  103. package/dist/tools/advice-registry.d.ts.map +1 -1
  104. package/dist/tools/advice-registry.js +108 -18
  105. package/dist/tools/advice-registry.js.map +1 -1
  106. package/dist/tools/advise-session-advisor.d.ts +16 -0
  107. package/dist/tools/advise-session-advisor.d.ts.map +1 -0
  108. package/dist/tools/advise-session-advisor.js +89 -0
  109. package/dist/tools/advise-session-advisor.js.map +1 -0
  110. package/dist/tools/advise-session-signals.d.ts +21 -0
  111. package/dist/tools/advise-session-signals.d.ts.map +1 -0
  112. package/dist/tools/advise-session-signals.js +113 -0
  113. package/dist/tools/advise-session-signals.js.map +1 -0
  114. package/dist/tools/advise-session.d.ts +22 -0
  115. package/dist/tools/advise-session.d.ts.map +1 -0
  116. package/dist/tools/advise-session.js +31 -0
  117. package/dist/tools/advise-session.js.map +1 -0
  118. package/dist/tools/analyze-harness.d.ts +18 -0
  119. package/dist/tools/analyze-harness.d.ts.map +1 -0
  120. package/dist/tools/analyze-harness.js +298 -0
  121. package/dist/tools/analyze-harness.js.map +1 -0
  122. package/dist/tools/audit.d.ts.map +1 -1
  123. package/dist/tools/audit.js +19 -0
  124. package/dist/tools/audit.js.map +1 -1
  125. package/dist/tools/change-request.d.ts +53 -0
  126. package/dist/tools/change-request.d.ts.map +1 -0
  127. package/dist/tools/change-request.js +395 -0
  128. package/dist/tools/change-request.js.map +1 -0
  129. package/dist/tools/check-cascade-contracts.d.ts +13 -0
  130. package/dist/tools/check-cascade-contracts.d.ts.map +1 -1
  131. package/dist/tools/check-cascade-contracts.js +73 -2
  132. package/dist/tools/check-cascade-contracts.js.map +1 -1
  133. package/dist/tools/check-cascade-report.js +64 -64
  134. package/dist/tools/check-cascade-steps.d.ts +3 -0
  135. package/dist/tools/check-cascade-steps.d.ts.map +1 -1
  136. package/dist/tools/check-cascade-steps.js +104 -15
  137. package/dist/tools/check-cascade-steps.js.map +1 -1
  138. package/dist/tools/check-cascade.d.ts +4 -3
  139. package/dist/tools/check-cascade.d.ts.map +1 -1
  140. package/dist/tools/check-cascade.js +30 -12
  141. package/dist/tools/check-cascade.js.map +1 -1
  142. package/dist/tools/check-derivation-chain.d.ts +37 -0
  143. package/dist/tools/check-derivation-chain.d.ts.map +1 -0
  144. package/dist/tools/check-derivation-chain.js +418 -0
  145. package/dist/tools/check-derivation-chain.js.map +1 -0
  146. package/dist/tools/check-spec-consistency.d.ts +25 -0
  147. package/dist/tools/check-spec-consistency.d.ts.map +1 -0
  148. package/dist/tools/check-spec-consistency.js +339 -0
  149. package/dist/tools/check-spec-consistency.js.map +1 -0
  150. package/dist/tools/check-t4.d.ts +54 -0
  151. package/dist/tools/check-t4.d.ts.map +1 -0
  152. package/dist/tools/check-t4.js +305 -0
  153. package/dist/tools/check-t4.js.map +1 -0
  154. package/dist/tools/close-cycle.d.ts +11 -0
  155. package/dist/tools/close-cycle.d.ts.map +1 -1
  156. package/dist/tools/close-cycle.js +364 -4
  157. package/dist/tools/close-cycle.js.map +1 -1
  158. package/dist/tools/cnt-add-routing.d.ts +31 -0
  159. package/dist/tools/cnt-add-routing.d.ts.map +1 -0
  160. package/dist/tools/cnt-add-routing.js +99 -0
  161. package/dist/tools/cnt-add-routing.js.map +1 -0
  162. package/dist/tools/configure-mcp.d.ts.map +1 -1
  163. package/dist/tools/configure-mcp.js +52 -2
  164. package/dist/tools/configure-mcp.js.map +1 -1
  165. package/dist/tools/consolidate-status.d.ts +31 -0
  166. package/dist/tools/consolidate-status.d.ts.map +1 -1
  167. package/dist/tools/consolidate-status.js +105 -0
  168. package/dist/tools/consolidate-status.js.map +1 -1
  169. package/dist/tools/executable-gates.d.ts +52 -0
  170. package/dist/tools/executable-gates.d.ts.map +1 -0
  171. package/dist/tools/executable-gates.js +333 -0
  172. package/dist/tools/executable-gates.js.map +1 -0
  173. package/dist/tools/extract-adrs-from-spec.d.ts +33 -0
  174. package/dist/tools/extract-adrs-from-spec.d.ts.map +1 -0
  175. package/dist/tools/extract-adrs-from-spec.js +410 -0
  176. package/dist/tools/extract-adrs-from-spec.js.map +1 -0
  177. package/dist/tools/extract-adrs-history.d.ts +47 -0
  178. package/dist/tools/extract-adrs-history.d.ts.map +1 -0
  179. package/dist/tools/extract-adrs-history.js +265 -0
  180. package/dist/tools/extract-adrs-history.js.map +1 -0
  181. package/dist/tools/forgecraft-dispatch-extended.d.ts.map +1 -1
  182. package/dist/tools/forgecraft-dispatch-extended.js +137 -0
  183. package/dist/tools/forgecraft-dispatch-extended.js.map +1 -1
  184. package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
  185. package/dist/tools/forgecraft-dispatch.js +16 -0
  186. package/dist/tools/forgecraft-dispatch.js.map +1 -1
  187. package/dist/tools/forgecraft-schema-params.d.ts +174 -2
  188. package/dist/tools/forgecraft-schema-params.d.ts.map +1 -1
  189. package/dist/tools/forgecraft-schema-params.js +197 -0
  190. package/dist/tools/forgecraft-schema-params.js.map +1 -1
  191. package/dist/tools/forgecraft-schema.d.ts +179 -7
  192. package/dist/tools/forgecraft-schema.d.ts.map +1 -1
  193. package/dist/tools/forgecraft-schema.js +37 -0
  194. package/dist/tools/forgecraft-schema.js.map +1 -1
  195. package/dist/tools/generate-adr.js +6 -6
  196. package/dist/tools/generate-adr.js.map +1 -1
  197. package/dist/tools/generate-decision.d.ts +77 -0
  198. package/dist/tools/generate-decision.d.ts.map +1 -0
  199. package/dist/tools/generate-decision.js +162 -0
  200. package/dist/tools/generate-decision.js.map +1 -0
  201. package/dist/tools/generate-env-probe.d.ts +49 -0
  202. package/dist/tools/generate-env-probe.d.ts.map +1 -0
  203. package/dist/tools/generate-env-probe.js +365 -0
  204. package/dist/tools/generate-env-probe.js.map +1 -0
  205. package/dist/tools/generate-harness.d.ts +53 -0
  206. package/dist/tools/generate-harness.d.ts.map +1 -0
  207. package/dist/tools/generate-harness.js +395 -0
  208. package/dist/tools/generate-harness.js.map +1 -0
  209. package/dist/tools/generate-roadmap.d.ts +1 -1
  210. package/dist/tools/generate-roadmap.d.ts.map +1 -1
  211. package/dist/tools/generate-roadmap.js +38 -4
  212. package/dist/tools/generate-roadmap.js.map +1 -1
  213. package/dist/tools/generate-session-prompt.d.ts +3 -3
  214. package/dist/tools/generate-session-prompt.d.ts.map +1 -1
  215. package/dist/tools/generate-session-prompt.js +9 -1
  216. package/dist/tools/generate-session-prompt.js.map +1 -1
  217. package/dist/tools/generate-slo-probe.d.ts +53 -0
  218. package/dist/tools/generate-slo-probe.d.ts.map +1 -0
  219. package/dist/tools/generate-slo-probe.js +366 -0
  220. package/dist/tools/generate-slo-probe.js.map +1 -0
  221. package/dist/tools/layer-status-gates.d.ts +24 -0
  222. package/dist/tools/layer-status-gates.d.ts.map +1 -0
  223. package/dist/tools/layer-status-gates.js +151 -0
  224. package/dist/tools/layer-status-gates.js.map +1 -0
  225. package/dist/tools/layer-status.d.ts +126 -0
  226. package/dist/tools/layer-status.d.ts.map +1 -0
  227. package/dist/tools/layer-status.js +647 -0
  228. package/dist/tools/layer-status.js.map +1 -0
  229. package/dist/tools/list.d.ts.map +1 -1
  230. package/dist/tools/list.js +9 -5
  231. package/dist/tools/list.js.map +1 -1
  232. package/dist/tools/postcondition-coverage.d.ts +57 -0
  233. package/dist/tools/postcondition-coverage.d.ts.map +1 -0
  234. package/dist/tools/postcondition-coverage.js +256 -0
  235. package/dist/tools/postcondition-coverage.js.map +1 -0
  236. package/dist/tools/probe-runners.d.ts +21 -0
  237. package/dist/tools/probe-runners.d.ts.map +1 -0
  238. package/dist/tools/probe-runners.js +246 -0
  239. package/dist/tools/probe-runners.js.map +1 -0
  240. package/dist/tools/probe-templates.d.ts +27 -0
  241. package/dist/tools/probe-templates.d.ts.map +1 -0
  242. package/dist/tools/probe-templates.js +279 -0
  243. package/dist/tools/probe-templates.js.map +1 -0
  244. package/dist/tools/propose-session.d.ts +28 -0
  245. package/dist/tools/propose-session.d.ts.map +1 -0
  246. package/dist/tools/propose-session.js +333 -0
  247. package/dist/tools/propose-session.js.map +1 -0
  248. package/dist/tools/refresh-output.js +14 -14
  249. package/dist/tools/review-stubs.d.ts +29 -0
  250. package/dist/tools/review-stubs.d.ts.map +1 -0
  251. package/dist/tools/review-stubs.js +173 -0
  252. package/dist/tools/review-stubs.js.map +1 -0
  253. package/dist/tools/roadmap-builder.d.ts +49 -1
  254. package/dist/tools/roadmap-builder.d.ts.map +1 -1
  255. package/dist/tools/roadmap-builder.js +210 -5
  256. package/dist/tools/roadmap-builder.js.map +1 -1
  257. package/dist/tools/run-env-probe.d.ts +57 -0
  258. package/dist/tools/run-env-probe.d.ts.map +1 -0
  259. package/dist/tools/run-env-probe.js +270 -0
  260. package/dist/tools/run-env-probe.js.map +1 -0
  261. package/dist/tools/run-harness.d.ts +52 -0
  262. package/dist/tools/run-harness.d.ts.map +1 -0
  263. package/dist/tools/run-harness.js +279 -0
  264. package/dist/tools/run-harness.js.map +1 -0
  265. package/dist/tools/run-slo-probe.d.ts +50 -0
  266. package/dist/tools/run-slo-probe.d.ts.map +1 -0
  267. package/dist/tools/run-slo-probe.js +281 -0
  268. package/dist/tools/run-slo-probe.js.map +1 -0
  269. package/dist/tools/scaffold-spec-stubs.js +115 -115
  270. package/dist/tools/scaffold-templates.js +62 -62
  271. package/dist/tools/scaffold-writer.d.ts.map +1 -1
  272. package/dist/tools/scaffold-writer.js +9 -0
  273. package/dist/tools/scaffold-writer.js.map +1 -1
  274. package/dist/tools/score-rubric.d.ts +19 -0
  275. package/dist/tools/score-rubric.d.ts.map +1 -0
  276. package/dist/tools/score-rubric.js +411 -0
  277. package/dist/tools/score-rubric.js.map +1 -0
  278. package/dist/tools/session-prompt-builders.d.ts +20 -0
  279. package/dist/tools/session-prompt-builders.d.ts.map +1 -1
  280. package/dist/tools/session-prompt-builders.js +78 -5
  281. package/dist/tools/session-prompt-builders.js.map +1 -1
  282. package/dist/tools/session-prompt-sections.d.ts +4 -2
  283. package/dist/tools/session-prompt-sections.d.ts.map +1 -1
  284. package/dist/tools/session-prompt-sections.js +22 -10
  285. package/dist/tools/session-prompt-sections.js.map +1 -1
  286. package/dist/tools/setup-artifact-writers.d.ts +69 -4
  287. package/dist/tools/setup-artifact-writers.d.ts.map +1 -1
  288. package/dist/tools/setup-artifact-writers.js +681 -5
  289. package/dist/tools/setup-artifact-writers.js.map +1 -1
  290. package/dist/tools/setup-cnt-builders.d.ts.map +1 -1
  291. package/dist/tools/setup-cnt-builders.js +162 -34
  292. package/dist/tools/setup-cnt-builders.js.map +1 -1
  293. package/dist/tools/setup-monitoring.d.ts +41 -0
  294. package/dist/tools/setup-monitoring.d.ts.map +1 -0
  295. package/dist/tools/setup-monitoring.js +364 -0
  296. package/dist/tools/setup-monitoring.js.map +1 -0
  297. package/dist/tools/setup-phase1.d.ts.map +1 -1
  298. package/dist/tools/setup-phase1.js +14 -1
  299. package/dist/tools/setup-phase1.js.map +1 -1
  300. package/dist/tools/setup-phase2.d.ts +14 -0
  301. package/dist/tools/setup-phase2.d.ts.map +1 -1
  302. package/dist/tools/setup-phase2.js +130 -3
  303. package/dist/tools/setup-phase2.js.map +1 -1
  304. package/dist/tools/setup-project.d.ts +8 -0
  305. package/dist/tools/setup-project.d.ts.map +1 -1
  306. package/dist/tools/setup-project.js +52 -2
  307. package/dist/tools/setup-project.js.map +1 -1
  308. package/dist/tools/spec-parser-tags.d.ts.map +1 -1
  309. package/dist/tools/spec-parser-tags.js +1 -0
  310. package/dist/tools/spec-parser-tags.js.map +1 -1
  311. package/dist/tools/verify-formatter.d.ts.map +1 -1
  312. package/dist/tools/verify-formatter.js +15 -1
  313. package/dist/tools/verify-formatter.js.map +1 -1
  314. package/dist/tools/verify.d.ts.map +1 -1
  315. package/dist/tools/verify.js +3 -0
  316. package/dist/tools/verify.js.map +1 -1
  317. package/package.json +98 -89
  318. package/templates/analytics/instructions.yaml +37 -37
  319. package/templates/analytics/mcp-servers.yaml +11 -11
  320. package/templates/analytics/structure.yaml +25 -25
  321. package/templates/api/harness/uc-template.hurl +20 -0
  322. package/templates/api/instructions.yaml +231 -231
  323. package/templates/api/mcp-servers.yaml +22 -22
  324. package/templates/api/nfr.yaml +23 -23
  325. package/templates/api/review.yaml +103 -103
  326. package/templates/api/structure.yaml +34 -34
  327. package/templates/api/verification.yaml +132 -132
  328. package/templates/cli/instructions.yaml +31 -31
  329. package/templates/cli/mcp-servers.yaml +11 -11
  330. package/templates/cli/review.yaml +53 -53
  331. package/templates/cli/structure.yaml +16 -16
  332. package/templates/data-lineage/instructions.yaml +28 -28
  333. package/templates/data-lineage/mcp-servers.yaml +22 -22
  334. package/templates/data-pipeline/instructions.yaml +84 -84
  335. package/templates/data-pipeline/mcp-servers.yaml +13 -13
  336. package/templates/data-pipeline/nfr.yaml +39 -39
  337. package/templates/data-pipeline/structure.yaml +23 -23
  338. package/templates/docs-manifest.yaml +227 -0
  339. package/templates/fintech/hooks.yaml +55 -55
  340. package/templates/fintech/instructions.yaml +112 -112
  341. package/templates/fintech/mcp-servers.yaml +13 -13
  342. package/templates/fintech/nfr.yaml +46 -46
  343. package/templates/fintech/playbook.yaml +210 -210
  344. package/templates/fintech/verification.yaml +239 -239
  345. package/templates/game/harness/uc-template.sim.ts +29 -0
  346. package/templates/game/instructions.yaml +289 -289
  347. package/templates/game/mcp-servers.yaml +38 -38
  348. package/templates/game/nfr.yaml +64 -64
  349. package/templates/game/playbook.yaml +214 -214
  350. package/templates/game/review.yaml +97 -97
  351. package/templates/game/structure.yaml +67 -67
  352. package/templates/game/verification.yaml +174 -174
  353. package/templates/healthcare/instructions.yaml +42 -42
  354. package/templates/healthcare/mcp-servers.yaml +13 -13
  355. package/templates/healthcare/nfr.yaml +47 -47
  356. package/templates/hipaa/instructions.yaml +41 -41
  357. package/templates/hipaa/mcp-servers.yaml +13 -13
  358. package/templates/infra/instructions.yaml +104 -104
  359. package/templates/infra/mcp-servers.yaml +20 -20
  360. package/templates/infra/nfr.yaml +46 -46
  361. package/templates/infra/review.yaml +65 -65
  362. package/templates/infra/structure.yaml +25 -25
  363. package/templates/library/instructions.yaml +36 -36
  364. package/templates/library/mcp-servers.yaml +20 -20
  365. package/templates/library/review.yaml +56 -56
  366. package/templates/library/structure.yaml +19 -19
  367. package/templates/medallion-architecture/instructions.yaml +41 -41
  368. package/templates/medallion-architecture/mcp-servers.yaml +22 -22
  369. package/templates/ml/instructions.yaml +85 -85
  370. package/templates/ml/mcp-servers.yaml +11 -11
  371. package/templates/ml/nfr.yaml +39 -39
  372. package/templates/ml/structure.yaml +25 -25
  373. package/templates/ml/verification.yaml +156 -156
  374. package/templates/mobile/instructions.yaml +44 -44
  375. package/templates/mobile/mcp-servers.yaml +11 -11
  376. package/templates/mobile/nfr.yaml +49 -49
  377. package/templates/mobile/structure.yaml +27 -27
  378. package/templates/mobile/verification.yaml +121 -121
  379. package/templates/observability-xray/instructions.yaml +40 -40
  380. package/templates/observability-xray/mcp-servers.yaml +15 -15
  381. package/templates/realtime/instructions.yaml +42 -42
  382. package/templates/realtime/mcp-servers.yaml +13 -13
  383. package/templates/soc2/instructions.yaml +41 -41
  384. package/templates/soc2/mcp-servers.yaml +24 -24
  385. package/templates/social/instructions.yaml +43 -43
  386. package/templates/social/mcp-servers.yaml +24 -24
  387. package/templates/state-machine/instructions.yaml +42 -42
  388. package/templates/state-machine/mcp-servers.yaml +11 -11
  389. package/templates/tools-registry.yaml +164 -164
  390. package/templates/universal/claude-md-blocks/layer-navigation.md +20 -0
  391. package/templates/universal/claude-md-blocks/nfr-contracts.md +22 -0
  392. package/templates/universal/hooks.yaml +879 -723
  393. package/templates/universal/instructions.yaml +1692 -1692
  394. package/templates/universal/mcp-servers.yaml +50 -50
  395. package/templates/universal/nfr.yaml +197 -197
  396. package/templates/universal/reference.yaml +326 -326
  397. package/templates/universal/review.yaml +204 -204
  398. package/templates/universal/skills.yaml +262 -262
  399. package/templates/universal/structure.yaml +67 -67
  400. package/templates/universal/verification.yaml +416 -416
  401. package/templates/web-next/hooks.yaml +114 -0
  402. package/templates/web-next/instructions.yaml +106 -0
  403. package/templates/web-react/harness/uc-template.spec.ts +35 -0
  404. package/templates/web-react/hooks.yaml +156 -44
  405. package/templates/web-react/instructions.yaml +296 -207
  406. package/templates/web-react/mcp-servers.yaml +20 -20
  407. package/templates/web-react/nfr.yaml +27 -27
  408. package/templates/web-react/review.yaml +94 -94
  409. package/templates/web-react/structure.yaml +46 -46
  410. package/templates/web-react/verification.yaml +126 -126
  411. package/templates/web-static/hooks.yaml +85 -0
  412. package/templates/web-static/instructions.yaml +204 -115
  413. package/templates/web-static/mcp-servers.yaml +20 -20
  414. package/templates/web3/instructions.yaml +44 -44
  415. package/templates/web3/mcp-servers.yaml +11 -11
  416. package/templates/web3/verification.yaml +159 -159
  417. package/templates/zero-trust/instructions.yaml +41 -41
  418. package/templates/zero-trust/mcp-servers.yaml +15 -15
@@ -32,70 +32,70 @@ export function writeInitialSessionPromptIfAbsent(projectDir) {
32
32
  .filter(Boolean)
33
33
  .join("\n");
34
34
  const tagLine = tags.length > 0 ? `\nProject tags: ${tags.join(", ")}\n` : "";
35
- const content = `# Initial Implementation Session Prompt
36
- > Generated by ForgeCraft \`check_cascade\` on cascade completion.
37
- > Delete this file after the first implementation session begins — it is a one-time bootstrap.
38
-
39
- ---
40
-
41
- ## Context Load Order
42
-
43
- Load these artifacts **before** issuing the implementation prompt:
44
-
45
- ${contextBlock || "- (No derived artifacts found — run setup_project first)"}
46
-
47
- ---
48
-
49
- ## Implementation Prompt
50
-
51
- *(Paste everything below this line to the AI assistant)*
52
-
53
- ---
54
-
55
- ### Task
56
-
57
- You are starting the first implementation session for **${projectName}**.
58
- ${tagLine}
59
- Read the PRD and use-cases, then implement the first feature end-to-end following
60
- the architectural constitution. Begin with the domain layer (entities + port interfaces),
61
- then the service layer, then the API/CLI adapter. Apply TDD throughout — write the test
62
- first, then the implementation. Do not proceed to the next layer until tests pass.
63
-
64
- ### Scope
65
-
66
- - Implement the primary use case (UC-001) completely before touching UC-002 or UC-003.
67
- - Infrastructure setup (DB, config, DI container) is in scope only as required by UC-001.
68
- - Do not stub or mock domain logic — implement it fully.
69
-
70
- ### Execution Loop
71
-
72
- 1. Read docs/PRD.md → identify UC-001 domain entities and port interfaces
73
- 2. Write failing tests for the domain layer
74
- 3. Implement domain layer until tests pass
75
- 4. Write failing tests for the service layer
76
- 5. Implement service layer until tests pass
77
- 6. Write failing integration/API tests
78
- 7. Implement API/CLI adapter until tests pass
79
- 8. Run \`check_cascade\` and \`close_cycle\` before committing
80
-
81
- ### Acceptance Criteria
82
-
83
- - [ ] UC-001 is fully implemented and tested (unit + integration)
84
- - [ ] All tests pass with ≥80% coverage
85
- - [ ] No circular imports (run layer check)
86
- - [ ] SOLID principles applied — each class has a single reason to change
87
- - [ ] \`close_cycle\` reports no blocking gate failures
88
-
89
- ### Session Close
90
-
91
- Before ending this session:
92
- 1. Run the full test suite — paste the summary output
93
- 2. Update Status.md: what was completed, current state, next steps
94
- 3. If a non-obvious architectural decision was made: write an ADR in docs/adrs/
95
-
96
- ---
97
- \`files_created\`: []
98
- \`next_steps\`: ["Run check_cascade to verify cascade is still complete after this session"]
35
+ const content = `# Initial Implementation Session Prompt
36
+ > Generated by ForgeCraft \`check_cascade\` on cascade completion.
37
+ > Delete this file after the first implementation session begins — it is a one-time bootstrap.
38
+
39
+ ---
40
+
41
+ ## Context Load Order
42
+
43
+ Load these artifacts **before** issuing the implementation prompt:
44
+
45
+ ${contextBlock || "- (No derived artifacts found — run setup_project first)"}
46
+
47
+ ---
48
+
49
+ ## Implementation Prompt
50
+
51
+ *(Paste everything below this line to the AI assistant)*
52
+
53
+ ---
54
+
55
+ ### Task
56
+
57
+ You are starting the first implementation session for **${projectName}**.
58
+ ${tagLine}
59
+ Read the PRD and use-cases, then implement the first feature end-to-end following
60
+ the architectural constitution. Begin with the domain layer (entities + port interfaces),
61
+ then the service layer, then the API/CLI adapter. Apply TDD throughout — write the test
62
+ first, then the implementation. Do not proceed to the next layer until tests pass.
63
+
64
+ ### Scope
65
+
66
+ - Implement the primary use case (UC-001) completely before touching UC-002 or UC-003.
67
+ - Infrastructure setup (DB, config, DI container) is in scope only as required by UC-001.
68
+ - Do not stub or mock domain logic — implement it fully.
69
+
70
+ ### Execution Loop
71
+
72
+ 1. Read docs/PRD.md → identify UC-001 domain entities and port interfaces
73
+ 2. Write failing tests for the domain layer
74
+ 3. Implement domain layer until tests pass
75
+ 4. Write failing tests for the service layer
76
+ 5. Implement service layer until tests pass
77
+ 6. Write failing integration/API tests
78
+ 7. Implement API/CLI adapter until tests pass
79
+ 8. Run \`check_cascade\` and \`close_cycle\` before committing
80
+
81
+ ### Acceptance Criteria
82
+
83
+ - [ ] UC-001 is fully implemented and tested (unit + integration)
84
+ - [ ] All tests pass with ≥80% coverage
85
+ - [ ] No circular imports (run layer check)
86
+ - [ ] SOLID principles applied — each class has a single reason to change
87
+ - [ ] \`close_cycle\` reports no blocking gate failures
88
+
89
+ ### Session Close
90
+
91
+ Before ending this session:
92
+ 1. Run the full test suite — paste the summary output
93
+ 2. Update Status.md: what was completed, current state, next steps
94
+ 3. If a non-obvious architectural decision was made: write an ADR in docs/adrs/
95
+
96
+ ---
97
+ \`files_created\`: []
98
+ \`next_steps\`: ["Run check_cascade to verify cascade is still complete after this session"]
99
99
  `;
100
100
  mkdirSync(join(projectDir, "docs"), { recursive: true });
101
101
  writeFileSync(outputPath, content, "utf-8");
@@ -66,6 +66,9 @@ export declare function checkDiagrams(projectDir: string): CascadeStep;
66
66
  /**
67
67
  * Step 3: Architectural constitution — the operative grammar.
68
68
  *
69
+ * Also checks .claude/core.md for declared-line-limit violations and includes
70
+ * content for the calling AI to evaluate for LLM prompt contamination.
71
+ *
69
72
  * @param projectDir - Absolute project root
70
73
  * @returns Cascade step result
71
74
  */
@@ -1 +1 @@
1
- {"version":3,"file":"check-cascade-steps.d.ts","sourceRoot":"","sources":["../../src/tools/check-cascade-steps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAID,eAAO,MAAM,kBAAkB,0HAOrB,CAAC;AAEX,eAAO,MAAM,qBAAqB,8GAMxB,CAAC;AAEX,eAAO,MAAM,QAAQ,oCAAqC,CAAC;AAE3D,eAAO,MAAM,cAAc,sEAIjB,CAAC;AAEX,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,uEAAuE;AACvE,eAAO,MAAM,mCAAmC,yIAStC,CAAC;AAEX,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,oGAOvB,CAAC;AAIX;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAQhF;AAID;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/C;AAID;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB5E;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAc3E;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAmCnE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAyC7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAwBjE"}
1
+ {"version":3,"file":"check-cascade-steps.d.ts","sourceRoot":"","sources":["../../src/tools/check-cascade-steps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAID,eAAO,MAAM,kBAAkB,0HAOrB,CAAC;AAEX,eAAO,MAAM,qBAAqB,8GAMxB,CAAC;AAEX,eAAO,MAAM,QAAQ,oCAAqC,CAAC;AAE3D,eAAO,MAAM,cAAc,sEAIjB,CAAC;AAEX,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,uEAAuE;AACvE,eAAO,MAAM,mCAAmC,yIAStC,CAAC;AAEX,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,oGAOvB,CAAC;AAIX;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,IAAI,CAQzB;AAID;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/C;AAID;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0B5E;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAmB3E;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAmDnE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAyD7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAyGjE"}
@@ -105,10 +105,14 @@ export function findFunctionalSpecFallback(projectDir) {
105
105
  if (matchCount >= 2)
106
106
  return relPath;
107
107
  }
108
- catch { /* skip */ }
108
+ catch {
109
+ /* skip */
110
+ }
109
111
  }
110
112
  }
111
- catch { /* skip */ }
113
+ catch {
114
+ /* skip */
115
+ }
112
116
  return null;
113
117
  }
114
118
  /**
@@ -131,10 +135,14 @@ export function detectUnsafeDeserializationCast(projectDir) {
131
135
  if (/(?:JSON\.parse|yaml\.load)\([^)]+\)\s+as\s+\w/i.test(content))
132
136
  return true;
133
137
  }
134
- catch { /* skip */ }
138
+ catch {
139
+ /* skip */
140
+ }
135
141
  }
136
142
  }
137
- catch { /* skip */ }
143
+ catch {
144
+ /* skip */
145
+ }
138
146
  return false;
139
147
  }
140
148
  // ── Step Checkers 1-3 ────────────────────────────────────────────────
@@ -155,14 +163,18 @@ export function checkFunctionalSpec(projectDir) {
155
163
  const fallback = findFunctionalSpecFallback(projectDir);
156
164
  if (fallback) {
157
165
  return {
158
- step: 1, name: "Functional Specification", status: "WARN",
166
+ step: 1,
167
+ name: "Functional Specification",
168
+ status: "WARN",
159
169
  detail: `Functional spec found at ${fallback}. Consider renaming to docs/PRD.md for standard compliance.`,
160
170
  action: `Rename ${fallback} to docs/PRD.md or docs/TechSpec.md for standard tooling compatibility.`,
161
171
  questions: [],
162
172
  };
163
173
  }
164
174
  return {
165
- step: 1, name: "Functional Specification", status: "FAIL",
175
+ step: 1,
176
+ name: "Functional Specification",
177
+ status: "FAIL",
166
178
  detail: "No functional specification found. The cascade has no axiom set.",
167
179
  action: "Create docs/PRD.md or docs/TechSpec.md: what the system does, for whom, and what constitutes success.",
168
180
  questions: STEP_QUESTIONS,
@@ -171,13 +183,21 @@ export function checkFunctionalSpec(projectDir) {
171
183
  const content = readFileSync(join(projectDir, found), "utf-8");
172
184
  if (isStub(content)) {
173
185
  return {
174
- step: 1, name: "Functional Specification", status: "STUB",
186
+ step: 1,
187
+ name: "Functional Specification",
188
+ status: "STUB",
175
189
  detail: `Found ${found} but it contains unfilled template markers. Fill in the spec before continuing.`,
176
190
  action: `Open ${found} and answer the questions below to complete it.`,
177
191
  questions: STEP_QUESTIONS,
178
192
  };
179
193
  }
180
- return { step: 1, name: "Functional Specification", status: "PASS", detail: `Found: ${found}`, questions: [] };
194
+ return {
195
+ step: 1,
196
+ name: "Functional Specification",
197
+ status: "PASS",
198
+ detail: `Found: ${found}`,
199
+ questions: [],
200
+ };
181
201
  }
182
202
  /**
183
203
  * Step 2: Architecture + C4 diagrams.
@@ -194,7 +214,9 @@ export function checkDiagrams(projectDir) {
194
214
  const diagramsDir = join(projectDir, "docs/diagrams");
195
215
  if (!existsSync(diagramsDir)) {
196
216
  return {
197
- step: 2, name: "Architecture Diagrams", status: "FAIL",
217
+ step: 2,
218
+ name: "Architecture Diagrams",
219
+ status: "FAIL",
198
220
  detail: "docs/diagrams/ does not exist.",
199
221
  action: "Create docs/diagrams/ and add a Mermaid C4 context diagram (docs/diagrams/c4-context.md).",
200
222
  questions: STEP_QUESTIONS,
@@ -203,7 +225,9 @@ export function checkDiagrams(projectDir) {
203
225
  const files = readdirSync(diagramsDir).filter((f) => /\.(md|mermaid|puml|svg|png)$/i.test(f));
204
226
  if (files.length === 0) {
205
227
  return {
206
- step: 2, name: "Architecture Diagrams", status: "WARN",
228
+ step: 2,
229
+ name: "Architecture Diagrams",
230
+ status: "WARN",
207
231
  detail: "docs/diagrams/ exists but contains no diagram files.",
208
232
  action: "Add docs/diagrams/c4-context.md with a Mermaid C4 context or container diagram.",
209
233
  questions: STEP_QUESTIONS,
@@ -219,14 +243,18 @@ export function checkDiagrams(projectDir) {
219
243
  });
220
244
  if (stubFile) {
221
245
  return {
222
- step: 2, name: "Architecture Diagrams", status: "STUB",
246
+ step: 2,
247
+ name: "Architecture Diagrams",
248
+ status: "STUB",
223
249
  detail: `docs/diagrams/${stubFile} contains unfilled template markers. Fill in the diagram before continuing.`,
224
250
  action: `Open docs/diagrams/${stubFile} and answer the questions below to complete it.`,
225
251
  questions: STEP_QUESTIONS,
226
252
  };
227
253
  }
228
254
  return {
229
- step: 2, name: "Architecture Diagrams", status: "PASS",
255
+ step: 2,
256
+ name: "Architecture Diagrams",
257
+ status: "PASS",
230
258
  detail: `${files.length} diagram file(s) in docs/diagrams/ (${files.join(", ")})`,
231
259
  questions: [],
232
260
  };
@@ -234,6 +262,9 @@ export function checkDiagrams(projectDir) {
234
262
  /**
235
263
  * Step 3: Architectural constitution — the operative grammar.
236
264
  *
265
+ * Also checks .claude/core.md for declared-line-limit violations and includes
266
+ * content for the calling AI to evaluate for LLM prompt contamination.
267
+ *
237
268
  * @param projectDir - Absolute project root
238
269
  * @returns Cascade step result
239
270
  */
@@ -241,7 +272,9 @@ export function checkConstitution(projectDir) {
241
272
  const foundPath = CONSTITUTION_PATHS.find((p) => existsSync(join(projectDir, p)));
242
273
  if (!foundPath) {
243
274
  return {
244
- step: 3, name: "Architectural Constitution", status: "FAIL",
275
+ step: 3,
276
+ name: "Architectural Constitution",
277
+ status: "FAIL",
245
278
  detail: "No AI assistant instruction file found (CLAUDE.md, AGENTS.md, etc.).",
246
279
  action: "Run `setup_project` or `forgecraft scaffold` to generate CLAUDE.md.",
247
280
  questions: [],
@@ -250,14 +283,70 @@ export function checkConstitution(projectDir) {
250
283
  const lines = readFileSync(join(projectDir, foundPath), "utf-8").split("\n").length;
251
284
  if (lines > CONSTITUTION_LINE_LIMIT) {
252
285
  return {
253
- step: 3, name: "Architectural Constitution", status: "WARN",
286
+ step: 3,
287
+ name: "Architectural Constitution",
288
+ status: "WARN",
254
289
  detail: `${foundPath} found (${lines} lines) — exceeds the ${CONSTITUTION_LINE_LIMIT}-line threshold.`,
255
290
  action: "Run `refresh_project` with tier: core to compress. An oversized constitution dilutes AI attention on every turn.",
256
291
  questions: [],
257
292
  };
258
293
  }
294
+ // Secondary check: .claude/core.md quality
295
+ const coreMdPath = join(projectDir, ".claude", "core.md");
296
+ if (existsSync(coreMdPath)) {
297
+ const coreContent = readFileSync(coreMdPath, "utf-8");
298
+ const coreLines = coreContent.split("\n");
299
+ // Detect a declared "Hard limit: N lines" in the file
300
+ const limitMatch = coreContent.match(/(?:hard limit|line limit):\s*(\d+)\s*lines?/i);
301
+ const declaredLimit = limitMatch ? parseInt(limitMatch[1], 10) : null;
302
+ const limitViolated = declaredLimit !== null && coreLines.length > declaredLimit;
303
+ // Fast-path contamination heuristic: obvious LLM instruction patterns
304
+ const PROMPT_PATTERNS = [
305
+ /you are\b/i,
306
+ /the user has answered/i,
307
+ /respond (?:with|to)/i,
308
+ /your (?:task|job|role) is/i,
309
+ /\bassistant:\s/i,
310
+ /\bsystem:\s/i,
311
+ /confirmatory questions/i,
312
+ ];
313
+ const suspiciousLine = coreLines.find((l) => PROMPT_PATTERNS.some((p) => p.test(l)));
314
+ if (limitViolated || suspiciousLine) {
315
+ const snippet = coreLines.slice(0, 60).join("\n");
316
+ const issues = [];
317
+ if (limitViolated) {
318
+ issues.push(`⚠️ .claude/core.md has ${coreLines.length} lines but declares "Hard limit: ${declaredLimit} lines" (exceeded by ${coreLines.length - declaredLimit}).`);
319
+ }
320
+ if (suspiciousLine) {
321
+ issues.push(`⚠️ .claude/core.md may contain LLM prompt text (not project invariants). Flagged line: "${suspiciousLine.trim().slice(0, 80)}"`);
322
+ }
323
+ return {
324
+ step: 3,
325
+ name: "Architectural Constitution",
326
+ status: "WARN",
327
+ detail: [
328
+ `${foundPath} (${lines} lines) ✓`,
329
+ "",
330
+ ...issues,
331
+ "",
332
+ "Review .claude/core.md below for LLM prompt contamination — this file must contain",
333
+ "project invariants only, not instructions intended for an AI assistant:",
334
+ "",
335
+ "```",
336
+ snippet,
337
+ "```",
338
+ ].join("\n"),
339
+ action: "Remove LLM prompt instructions from .claude/core.md. " +
340
+ "Only project-specific invariants, architectural constraints, and naming conventions belong here. " +
341
+ "Respect the declared line limit.",
342
+ questions: [],
343
+ };
344
+ }
345
+ }
259
346
  return {
260
- step: 3, name: "Architectural Constitution", status: "PASS",
347
+ step: 3,
348
+ name: "Architectural Constitution",
349
+ status: "PASS",
261
350
  detail: `${foundPath} (${lines} lines) — within the ${CONSTITUTION_LINE_LIMIT}-line threshold`,
262
351
  questions: [],
263
352
  };
@@ -1 +1 @@
1
- {"version":3,"file":"check-cascade-steps.js","sourceRoot":"","sources":["../../src/tools/check-cascade-steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-cascade-steps.js","sourceRoot":"","sources":["../../src/tools/check-cascade-steps.ts"],"names":[],"mappings":"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"}
@@ -6,20 +6,21 @@
6
6
  * stateless agent given the artifact set should be able to derive any valid
7
7
  * implementation state without further human direction.
8
8
  *
9
- * Five-step cascade (§6.2):
9
+ * Six-step cascade (§6.2):
10
10
  * 1. Functional specification — user-facing behavior and domain model
11
11
  * 2. Architecture + C4 diagrams — layered structure and component map
12
12
  * 3. Architectural constitution — operative grammar (CLAUDE.md / equivalent)
13
13
  * 4. ADRs — non-obvious decisions recorded before impl
14
14
  * 5. Use cases + behavioral contracts / Status.md next steps
15
+ * 6. Schema definitions — vocabulary of the system (DB, API, event)
15
16
  */
16
17
  import { z } from "zod";
17
18
  import type { CascadeDecision } from "../shared/types.js";
18
19
  import { CascadeStep as _CascadeStep } from "./check-cascade-steps.js";
19
20
  export type { CascadeStep } from "./check-cascade-steps.js";
20
21
  export { isStub, loadForgeCraftConfig, CONSTITUTION_PATHS, FUNCTIONAL_SPEC_PATHS, ADR_DIRS, USE_CASE_PATHS, CONSTITUTION_LINE_LIMIT, PYTHON_PACKAGE_FILES, checkFunctionalSpec, checkDiagrams, checkConstitution, detectUnsafeDeserializationCast, findFunctionalSpecFallback, } from "./check-cascade-steps.js";
21
- export { findBehavioralContractFallback, detectPlaceholderTestScript, checkAdrs, checkBehavioralContracts, } from "./check-cascade-contracts.js";
22
- export { writeInitialSessionPromptIfAbsent, formatReport } from "./check-cascade-report.js";
22
+ export { findBehavioralContractFallback, detectPlaceholderTestScript, checkAdrs, checkBehavioralContracts, checkSchemaDefinitions, SCHEMA_ARTIFACT_PATHS, } from "./check-cascade-contracts.js";
23
+ export { writeInitialSessionPromptIfAbsent, formatReport, } from "./check-cascade-report.js";
23
24
  export declare const checkCascadeSchema: z.ZodObject<{
24
25
  project_dir: z.ZodString;
25
26
  }, "strip", z.ZodTypeAny, {
@@ -1 +1 @@
1
- {"version":3,"file":"check-cascade.d.ts","sourceRoot":"","sources":["../../src/tools/check-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,WAAW,IAAI,YAAY,EAK5B,MAAM,0BAA0B,CAAC;AAUlC,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,SAAS,EACT,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iCAAiC,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI5F,eAAO,MAAM,kBAAkB;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAInE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAS1E;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,SAAS,eAAe,EAAO,GACzC,YAAY,EAAE,CAWhB;AAED,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMlE,CAAC;AA8BF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAgB7D;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CA2B7E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD"}
1
+ {"version":3,"file":"check-cascade.d.ts","sourceRoot":"","sources":["../../src/tools/check-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,WAAW,IAAI,YAAY,EAK5B,MAAM,0BAA0B,CAAC;AAWlC,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,SAAS,EACT,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,iCAAiC,EACjC,YAAY,GACb,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,kBAAkB;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAInE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAW1E;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,SAAS,eAAe,EAAO,GACzC,YAAY,EAAE,CAYhB;AAED,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOlE,CAAC;AAkCF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAuB7D;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAIzE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CA6B7E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBpD"}
@@ -6,23 +6,24 @@
6
6
  * stateless agent given the artifact set should be able to derive any valid
7
7
  * implementation state without further human direction.
8
8
  *
9
- * Five-step cascade (§6.2):
9
+ * Six-step cascade (§6.2):
10
10
  * 1. Functional specification — user-facing behavior and domain model
11
11
  * 2. Architecture + C4 diagrams — layered structure and component map
12
12
  * 3. Architectural constitution — operative grammar (CLAUDE.md / equivalent)
13
13
  * 4. ADRs — non-obvious decisions recorded before impl
14
14
  * 5. Use cases + behavioral contracts / Status.md next steps
15
+ * 6. Schema definitions — vocabulary of the system (DB, API, event)
15
16
  */
16
17
  import { z } from "zod";
17
18
  import { resolve, join } from "node:path";
18
19
  import { existsSync, readFileSync } from "node:fs";
19
20
  import yaml from "js-yaml";
20
21
  import { checkFunctionalSpec, checkDiagrams, checkConstitution, } from "./check-cascade-steps.js";
21
- import { checkAdrs, checkBehavioralContracts, } from "./check-cascade-contracts.js";
22
+ import { checkAdrs, checkBehavioralContracts, checkSchemaDefinitions, } from "./check-cascade-contracts.js";
22
23
  import { writeInitialSessionPromptIfAbsent, formatReport, } from "./check-cascade-report.js";
23
24
  export { isStub, loadForgeCraftConfig, CONSTITUTION_PATHS, FUNCTIONAL_SPEC_PATHS, ADR_DIRS, USE_CASE_PATHS, CONSTITUTION_LINE_LIMIT, PYTHON_PACKAGE_FILES, checkFunctionalSpec, checkDiagrams, checkConstitution, detectUnsafeDeserializationCast, findFunctionalSpecFallback, } from "./check-cascade-steps.js";
24
- export { findBehavioralContractFallback, detectPlaceholderTestScript, checkAdrs, checkBehavioralContracts, } from "./check-cascade-contracts.js";
25
- export { writeInitialSessionPromptIfAbsent, formatReport } from "./check-cascade-report.js";
25
+ export { findBehavioralContractFallback, detectPlaceholderTestScript, checkAdrs, checkBehavioralContracts, checkSchemaDefinitions, SCHEMA_ARTIFACT_PATHS, } from "./check-cascade-contracts.js";
26
+ export { writeInitialSessionPromptIfAbsent, formatReport, } from "./check-cascade-report.js";
26
27
  // ── Schema ───────────────────────────────────────────────────────────
27
28
  export const checkCascadeSchema = z.object({
28
29
  project_dir: z
@@ -64,6 +65,7 @@ export function runCascadeChecks(projectDir, decisions = []) {
64
65
  checkConstitution(projectDir),
65
66
  checkAdrs(projectDir),
66
67
  checkBehavioralContracts(projectDir),
68
+ checkSchemaDefinitions(projectDir),
67
69
  ];
68
70
  if (decisions.length === 0)
69
71
  return rawSteps;
@@ -76,6 +78,7 @@ export const STEP_TO_DECISION_NAME = {
76
78
  3: "constitution",
77
79
  4: "adrs",
78
80
  5: "behavioral_contracts",
81
+ 6: "schema_definitions",
79
82
  };
80
83
  /**
81
84
  * Apply a cascade decision to a step result.
@@ -91,7 +94,9 @@ function applyDecision(step, decisions) {
91
94
  return step;
92
95
  if (decision.required)
93
96
  return step;
94
- if (step.status === "FAIL" || step.status === "STUB" || step.status === "WARN") {
97
+ if (step.status === "FAIL" ||
98
+ step.status === "STUB" ||
99
+ step.status === "WARN") {
95
100
  return {
96
101
  step: step.step,
97
102
  name: step.name,
@@ -119,7 +124,12 @@ export async function checkCascadeHandler(args) {
119
124
  writeInitialSessionPromptIfAbsent(projectDir);
120
125
  }
121
126
  return {
122
- content: [{ type: "text", text: formatReport(steps, passingCount, failingCount, noCascadeConfig) }],
127
+ content: [
128
+ {
129
+ type: "text",
130
+ text: formatReport(steps, passingCount, failingCount, noCascadeConfig),
131
+ },
132
+ ],
123
133
  };
124
134
  }
125
135
  // ── Exported Helpers ─────────────────────────────────────────────────
@@ -171,12 +181,20 @@ export function buildGuidedRemediation(steps) {
171
181
  */
172
182
  export function getArtifactPath(step) {
173
183
  switch (step) {
174
- case 1: return "docs/PRD.md";
175
- case 2: return "docs/diagrams/c4-context.md";
176
- case 3: return "CLAUDE.md";
177
- case 4: return "docs/adrs/ADR-0001.md";
178
- case 5: return "docs/use-cases.md";
179
- default: return "docs/";
184
+ case 1:
185
+ return "docs/PRD.md";
186
+ case 2:
187
+ return "docs/diagrams/c4-context.md";
188
+ case 3:
189
+ return "CLAUDE.md";
190
+ case 4:
191
+ return "docs/adrs/ADR-0001.md";
192
+ case 5:
193
+ return "docs/use-cases.md";
194
+ case 6:
195
+ return "openapi.yaml";
196
+ default:
197
+ return "docs/";
180
198
  }
181
199
  }
182
200
  //# sourceMappingURL=check-cascade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-cascade.js","sourceRoot":"","sources":["../../src/tools/check-cascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-cascade.js","sourceRoot":"","sources":["../../src/tools/check-cascade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * check_derivation_chain tool handler.
3
+ *
4
+ * Verifies that spec artifacts form a coherent derivation chain:
5
+ * PRD → Use Cases → ADRs → L2 Probes → L3/L4 Probes → Gates
6
+ *
7
+ * Checks:
8
+ * 1. PRD / spec artifact present
9
+ * 2. Use cases present and well-formed
10
+ * 3. Each UC has a corresponding L2 probe file
11
+ * 4. Each L2 probe file references its UC ID
12
+ * 5. ADRs exist with meaningful quality (Accepted vs Retroactive ratio)
13
+ * 6. Cross-references: UCs that mention ADR IDs, ADRs that mention UC IDs
14
+ * 7. Gates: at least some reference a UC or ADR ID
15
+ *
16
+ * Emits a chain score (0-100%) and a list of specific breaks.
17
+ * Read-only — no files written.
18
+ */
19
+ import type { ToolResult } from "../shared/types.js";
20
+ export interface ChainLink {
21
+ readonly name: string;
22
+ readonly score: number;
23
+ readonly detail: string;
24
+ readonly breaks: string[];
25
+ }
26
+ export interface DerivationChainReport {
27
+ readonly chainScore: number;
28
+ readonly links: ChainLink[];
29
+ readonly breaks: string[];
30
+ readonly strengths: string[];
31
+ }
32
+ export interface CheckDerivationChainInput {
33
+ readonly project_dir: string;
34
+ }
35
+ export declare function buildDerivationChainReport(projectDir: string): DerivationChainReport;
36
+ export declare function checkDerivationChainHandler(args: CheckDerivationChainInput): Promise<ToolResult>;
37
+ //# sourceMappingURL=check-derivation-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-derivation-chain.d.ts","sourceRoot":"","sources":["../../src/tools/check-derivation-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAkZD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,GACjB,qBAAqB,CA4BvB;AAID,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,CA6DrB"}