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
@@ -1,115 +1,204 @@
1
- tag: WEB-STATIC
2
- section: instructions
3
- blocks:
4
- - id: static-site-architecture
5
- tier: recommended
6
- title: "Static Site Architecture"
7
- content: |
8
- ## Static Site & Jamstack Patterns
9
-
10
- - Use Static Site Generation (SSG) as the default rendering strategy; reserve SSR or ISR only for pages requiring dynamic data at request time.
11
- - Pre-render all content pages at build time. Ensure the build pipeline fails fast on broken links, missing assets, or template errors.
12
- - Separate content from presentation: store structured content in Markdown, MDX, or a headless CMS, and consume it via build-time data fetching.
13
- - Implement incremental builds where supported to keep build times under 60 seconds for content-heavy sites.
14
- - Use content hashing for all emitted assets (JS, CSS, images) to enable aggressive, immutable caching (`Cache-Control: public, max-age=31536000, immutable`).
15
- - Serve the site behind a CDN. Configure cache invalidation on deploy so users never see stale HTML entry points.
16
- - Generate a `sitemap.xml` and `robots.txt` at build time. Include canonical URLs and Open Graph meta tags on every page.
17
- - Keep JavaScript payload minimal. Audit bundle size on every PR; set a performance budget (e.g., < 100 KB compressed JS for the critical path).
18
-
19
- - id: asset-optimization
20
- tier: recommended
21
- title: "Asset Optimization"
22
- content: |
23
- ## Asset Optimization & Performance
24
-
25
- - Serve images in modern formats (WebP/AVIF) with `<picture>` fallbacks. Use responsive `srcset` and `sizes` attributes to deliver appropriately sized images.
26
- - Inline critical CSS for above-the-fold content and defer non-critical stylesheets. Avoid render-blocking resources.
27
- - Enable Brotli or gzip compression on the CDN/server for all text-based assets (HTML, CSS, JS, SVG, JSON).
28
- - Lazy-load below-the-fold images and iframes using `loading="lazy"` or Intersection Observer.
29
- - Preload key resources (`<link rel="preload">`) such as fonts and hero images. Use `font-display: swap` to prevent FOIT.
30
- - Minimize third-party scripts. Load analytics and tracking asynchronously and after the main content is interactive.
31
- - Run Lighthouse CI in the build pipeline; fail the build if performance score drops below the agreed threshold (e.g., 90).
32
-
33
- - id: html-css-best-practices
34
- tier: recommended
35
- title: "HTML & CSS Best Practices"
36
- content: |
37
- ## HTML & CSS Quality Standards
38
-
39
- - Write semantic HTML5 markup. Use `<header>`, `<nav>`, `<main>`, `<article>`, `<section>`, and `<footer>` to convey document structure.
40
- - Ensure all pages pass WCAG 2.1 AA. Provide alt text for images, proper heading hierarchy, sufficient color contrast, and keyboard navigability.
41
- - Use CSS custom properties (variables) for theming. Maintain a design-token file as the single source of truth for colors, spacing, and typography.
42
- - Prefer utility-first or modular CSS methodologies (e.g., Tailwind, CSS Modules) to avoid specificity conflicts and dead CSS accumulation.
43
- - Validate HTML output with the W3C validator in CI. Fix all errors; treat warnings as errors in new code.
44
- - Support dark mode via `prefers-color-scheme` media query or a user-togglable theme that persists in `localStorage`.
45
-
46
- - id: static-deployment
47
- tier: recommended
48
- title: "Static Site Deployment"
49
- content: |
50
- ## Static Site Deployment
51
-
52
- ### Platforms
53
- - **Netlify**: Git-push deploy, instant rollbacks, form handling, edge functions, split testing.
54
- Free tier generous for static sites. Build plugins for Lighthouse, broken link detection.
55
- - **Vercel**: Zero-config for Next.js/Astro/SvelteKit. Preview deployments per PR.
56
- - **Cloudflare Pages**: Unlimited bandwidth, global edge network, Pages Functions for dynamic routes.
57
- - **GitHub Pages**: Free for open-source. Limited (no server functions, no redirects file natively).
58
- Suitable for docs sites and project landing pages only.
59
- - **AWS S3 + CloudFront**: Maximum control, lowest cost at scale. Use `aws-cdk` or Terraform
60
- to define the stack: S3 bucket (private) → CloudFront distribution → Route53 DNS → ACM cert.
61
-
62
- ### Build Pipeline
63
- - Build locally mirrors CI exactly (same Node version, same env vars). Use `.nvmrc` or `.node-version`.
64
- - Build output is a static directory (`dist/`, `out/`, `public/`). No server process.
65
- - Atomic deploys: new version fully uploaded before traffic switches. No partial states.
66
- - Rollback = redeploy previous build artifact. Must complete in < 30 seconds.
67
-
68
- ### Cache Strategy
69
- - HTML: `Cache-Control: public, max-age=300, stale-while-revalidate=86400`.
70
- Short-lived so deploys take effect quickly.
71
- - Hashed assets (JS, CSS, images): `Cache-Control: public, max-age=31536000, immutable`.
72
- Filename changes on content change — cache forever.
73
- - Invalidate CDN cache on deploy (automatic on Netlify/Vercel/CF Pages; manual on CloudFront).
74
-
75
- - id: web-static-smoke-testing
76
- tier: recommended
77
- title: "Static Site Smoke Testing (Post-Deploy)"
78
- content: |
79
- ## Static Site Smoke Testing
80
-
81
- ### Required: Playwright Full Browser
82
- Tag all smoke tests `@smoke` for isolated execution:
83
- ```
84
- npx playwright test --config playwright.smoke.config.ts --grep @smoke
85
- ```
86
-
87
- Minimum smoke suite:
88
- - **Key pages load**: home + primary section pages render, no console errors, title present
89
- - **No broken assets**: no 404 network requests (images, JS, CSS)
90
- - **404 handling**: non-existent path returns 404, custom error page renders (not browser default)
91
- - **HTTPS redirect**: `http://` redirects to `https://` (if applicable)
92
-
93
- ```typescript
94
- // tests/smoke/site.smoke.ts
95
- import { test, expect } from '@playwright/test';
96
-
97
- const KEY_PAGES = ['/', '/about', '/contact'];
98
-
99
- for (const path of KEY_PAGES) {
100
- test(`@smoke ${path} loads without broken assets`, async ({ page }) => {
101
- const failed: string[] = [];
102
- page.on('requestfailed', r => failed.push(r.url()));
103
- page.on('response', r => { if (r.status() === 404) failed.push(r.url()); });
104
- await page.goto(path);
105
- await expect(page).toHaveTitle(/.+/);
106
- expect(failed).toHaveLength(0);
107
- });
108
- }
109
-
110
- test('@smoke 404 renders custom page', async ({ page }) => {
111
- const res = await page.goto('/this-path-does-not-exist-smoke-xyz');
112
- expect(res?.status()).toBe(404);
113
- await expect(page.locator('body')).not.toBeEmpty();
114
- });
115
- ```
1
+ tag: WEB-STATIC
2
+ section: instructions
3
+ blocks:
4
+ - id: static-site-architecture
5
+ tier: recommended
6
+ title: "Static Site Architecture"
7
+ content: |
8
+ ## Static Site & Jamstack Patterns
9
+
10
+ - Use Static Site Generation (SSG) as the default rendering strategy; reserve SSR or ISR only for pages requiring dynamic data at request time.
11
+ - Pre-render all content pages at build time. Ensure the build pipeline fails fast on broken links, missing assets, or template errors.
12
+ - Separate content from presentation: store structured content in Markdown, MDX, or a headless CMS, and consume it via build-time data fetching.
13
+ - Implement incremental builds where supported to keep build times under 60 seconds for content-heavy sites.
14
+ - Use content hashing for all emitted assets (JS, CSS, images) to enable aggressive, immutable caching (`Cache-Control: public, max-age=31536000, immutable`).
15
+ - Serve the site behind a CDN. Configure cache invalidation on deploy so users never see stale HTML entry points.
16
+ - Generate a `sitemap.xml` and `robots.txt` at build time. Include canonical URLs and Open Graph meta tags on every page.
17
+ - Keep JavaScript payload minimal. Audit bundle size on every PR; set a performance budget (e.g., < 100 KB compressed JS for the critical path).
18
+
19
+ - id: asset-optimization
20
+ tier: recommended
21
+ title: "Asset Optimization"
22
+ content: |
23
+ ## Asset Optimization & Performance
24
+
25
+ - Serve images in modern formats (WebP/AVIF) with `<picture>` fallbacks. Use responsive `srcset` and `sizes` attributes to deliver appropriately sized images.
26
+ - Inline critical CSS for above-the-fold content and defer non-critical stylesheets. Avoid render-blocking resources.
27
+ - Enable Brotli or gzip compression on the CDN/server for all text-based assets (HTML, CSS, JS, SVG, JSON).
28
+ - Lazy-load below-the-fold images and iframes using `loading="lazy"` or Intersection Observer.
29
+ - Preload key resources (`<link rel="preload">`) such as fonts and hero images. Use `font-display: swap` to prevent FOIT.
30
+ - Minimize third-party scripts. Load analytics and tracking asynchronously and after the main content is interactive.
31
+ - Run Lighthouse CI in the build pipeline; fail the build if performance score drops below the agreed threshold (e.g., 90).
32
+
33
+ - id: html-css-best-practices
34
+ tier: recommended
35
+ title: "HTML & CSS Best Practices"
36
+ content: |
37
+ ## HTML & CSS Quality Standards
38
+
39
+ - Write semantic HTML5 markup. Use `<header>`, `<nav>`, `<main>`, `<article>`, `<section>`, and `<footer>` to convey document structure.
40
+ - Ensure all pages pass WCAG 2.1 AA. Provide alt text for images, proper heading hierarchy, sufficient color contrast, and keyboard navigability.
41
+ - Use CSS custom properties (variables) for theming. Maintain a design-token file as the single source of truth for colors, spacing, and typography.
42
+ - Prefer utility-first or modular CSS methodologies (e.g., Tailwind, CSS Modules) to avoid specificity conflicts and dead CSS accumulation.
43
+ - Validate HTML output with the W3C validator in CI. Fix all errors; treat warnings as errors in new code.
44
+ - Support dark mode via `prefers-color-scheme` media query or a user-togglable theme that persists in `localStorage`.
45
+
46
+ - id: static-deployment
47
+ tier: recommended
48
+ title: "Static Site Deployment"
49
+ content: |
50
+ ## Static Site Deployment
51
+
52
+ ### Platforms
53
+ - **Netlify**: Git-push deploy, instant rollbacks, form handling, edge functions, split testing.
54
+ Free tier generous for static sites. Build plugins for Lighthouse, broken link detection.
55
+ - **Vercel**: Zero-config for Next.js/Astro/SvelteKit. Preview deployments per PR.
56
+ - **Cloudflare Pages**: Unlimited bandwidth, global edge network, Pages Functions for dynamic routes.
57
+ - **GitHub Pages**: Free for open-source. Limited (no server functions, no redirects file natively).
58
+ Suitable for docs sites and project landing pages only.
59
+ - **AWS S3 + CloudFront**: Maximum control, lowest cost at scale. Use `aws-cdk` or Terraform
60
+ to define the stack: S3 bucket (private) → CloudFront distribution → Route53 DNS → ACM cert.
61
+
62
+ ### Build Pipeline
63
+ - Build locally mirrors CI exactly (same Node version, same env vars). Use `.nvmrc` or `.node-version`.
64
+ - Build output is a static directory (`dist/`, `out/`, `public/`). No server process.
65
+ - Atomic deploys: new version fully uploaded before traffic switches. No partial states.
66
+ - Rollback = redeploy previous build artifact. Must complete in < 30 seconds.
67
+
68
+ ### Cache Strategy
69
+ - HTML: `Cache-Control: public, max-age=300, stale-while-revalidate=86400`.
70
+ Short-lived so deploys take effect quickly.
71
+ - Hashed assets (JS, CSS, images): `Cache-Control: public, max-age=31536000, immutable`.
72
+ Filename changes on content change — cache forever.
73
+ - Invalidate CDN cache on deploy (automatic on Netlify/Vercel/CF Pages; manual on CloudFront).
74
+
75
+ - id: web-static-smoke-testing
76
+ tier: recommended
77
+ title: "Static Site Smoke Testing (Post-Deploy)"
78
+ content: |
79
+ ## Static Site Smoke Testing
80
+
81
+ ### Required: Playwright Full Browser
82
+ Tag all smoke tests `@smoke` for isolated execution:
83
+ ```
84
+ npx playwright test --config playwright.smoke.config.ts --grep @smoke
85
+ ```
86
+
87
+ Minimum smoke suite:
88
+ - **Key pages load**: home + primary section pages render, no console errors, title present
89
+ - **No broken assets**: no 404 network requests (images, JS, CSS)
90
+ - **404 handling**: non-existent path returns 404, custom error page renders (not browser default)
91
+ - **HTTPS redirect**: `http://` redirects to `https://` (if applicable)
92
+
93
+ ```typescript
94
+ // tests/smoke/site.smoke.ts
95
+ import { test, expect } from '@playwright/test';
96
+
97
+ const KEY_PAGES = ['/', '/about', '/contact'];
98
+
99
+ for (const path of KEY_PAGES) {
100
+ test(`@smoke ${path} loads without broken assets`, async ({ page }) => {
101
+ const failed: string[] = [];
102
+ page.on('requestfailed', r => failed.push(r.url()));
103
+ page.on('response', r => { if (r.status() === 404) failed.push(r.url()); });
104
+ await page.goto(path);
105
+ await expect(page).toHaveTitle(/.+/);
106
+ expect(failed).toHaveLength(0);
107
+ });
108
+ }
109
+
110
+ test('@smoke 404 renders custom page', async ({ page }) => {
111
+ const res = await page.goto('/this-path-does-not-exist-smoke-xyz');
112
+ expect(res?.status()).toBe(404);
113
+ await expect(page.locator('body')).not.toBeEmpty();
114
+ });
115
+ ```
116
+
117
+ - id: ui-design-token-enforcement
118
+ tier: core
119
+ title: "Design Token Enforcement"
120
+ content: |
121
+ ## Design Token Enforcement — Non-Negotiable
122
+
123
+ **Before writing any CSS or style code**, read `src/styles/tokens.css` (or `src/css/variables.css`).
124
+
125
+ - NEVER use raw hex (`#1a2b3c`), `rgb()`, `rgba()`, or `hsl()` values in stylesheets or template files.
126
+ - ALL colors: `var(--color-primary)`, `var(--color-text-muted)`, `var(--color-surface)`.
127
+ - ALL spacing: `var(--spacing-4)`, `var(--spacing-8)` (or equivalent scale tokens).
128
+ - ALL typography: `var(--font-size-lg)`, `var(--font-weight-semibold)`.
129
+ - If a token for the intended value doesn't exist, **add it to the token file** — don't hardcode the value inline.
130
+ - Token definition files (`tokens.css`, `_variables.scss`, `custom-properties.css`) are the ONLY exception.
131
+ - A pre-commit hook blocks commits containing raw color literals in HTML, CSS, or template files.
132
+
133
+ - id: ui-atomic-component-structure
134
+ tier: recommended
135
+ title: "Atomic Component Structure"
136
+ content: |
137
+ ## Atomic Component Structure — For Component-Based SSGs
138
+
139
+ For component-based static site generators (Astro, Svelte, Vue, Eleventy with components):
140
+
141
+ **Before creating any new component**, search the component library:
142
+ 1. `src/components/atoms/` — does the primitive already exist?
143
+ 2. `src/components/molecules/` — does the composition already exist?
144
+ 3. `src/components/organisms/` — does the full section already exist?
145
+
146
+ ### Placement Rules
147
+ | Level | Scope | Examples |
148
+ |---|---|---|
149
+ | **atoms/** | Indivisible UI elements | Button, Icon, Badge, Label |
150
+ | **molecules/** | Small compositions | Card, NavItem, FormField |
151
+ | **organisms/** | Section-level components | Header, Footer, HeroSection, Gallery |
152
+ | **templates/** | Page layout shells | BaseLayout, ArticleLayout |
153
+ | **pages/** | Route-specific page files | index.astro, about.astro |
154
+
155
+ For template-engine SSGs (Nunjucks, Liquid, Handlebars): use `src/includes/` organized by the same scope tiers.
156
+
157
+ - id: ui-ux-pattern-wiring
158
+ tier: core
159
+ title: "UX Pattern Wiring"
160
+ content: |
161
+ ## UX Pattern Wiring — Read Before Implementing
162
+
163
+ **Before implementing any common interaction**, read the relevant pattern from `docs/patterns/`:
164
+
165
+ | Interaction | Pattern doc | What it defines |
166
+ |---|---|---|
167
+ | Error state | `docs/patterns/error.md` | 404/500 pages, form error display |
168
+ | Loading | `docs/patterns/loading.md` | Page transitions, lazy-load skeletons |
169
+ | Empty state | `docs/patterns/empty.md` | Zero-content pages, placeholder UI |
170
+ | Modal / overlay | `docs/patterns/modals.md` | Focus trap, overlay behaviour |
171
+ | Data table | `docs/patterns/tables.md` | Responsive table patterns |
172
+
173
+ If a pattern doc does not exist, **create it before implementing the component**.
174
+ Pattern docs define: when to use, HTML/CSS structure, accessibility requirements, and edge cases.
175
+
176
+ - id: ui-responsive-strategy-adr
177
+ tier: core
178
+ title: "Responsive Strategy ADR"
179
+ content: |
180
+ ## Responsive Strategy — ADR Required Before Any Responsive Code
181
+
182
+ Before writing any `@media` query or breakpoint value, verify that `docs/adrs/active/responsive-strategy.md` exists.
183
+
184
+ If it doesn't exist, create it:
185
+ ```markdown
186
+ # ADR: Responsive Strategy
187
+
188
+ ## Status: Accepted
189
+
190
+ ## Context
191
+ [Device/viewport range this site must support]
192
+
193
+ ## Decision
194
+ - **Breakpoints**: mobile < 640px | tablet 640–1024px | desktop > 1024px
195
+ - **Approach**: mobile-first (min-width media queries)
196
+ - **Methodology**: [CSS custom properties / Sass variables / Tailwind]
197
+ - **Target devices**: iOS Safari 16+, Chrome 110+, minimum viewport 320px
198
+
199
+ ## Consequences
200
+ All responsive layout code uses these breakpoints exclusively. No page-local
201
+ breakpoint values. Deviations require an amendment to this ADR.
202
+ ```
203
+
204
+ A pre-commit hook blocks responsive code when no responsive strategy ADR is present.
@@ -1,20 +1,20 @@
1
- tag: WEB-STATIC
2
- section: mcp-servers
3
- servers:
4
- - name: chrome-devtools
5
- description: "Chrome DevTools integration for debugging, profiling, and network inspection"
6
- command: npx
7
- args: ["-y", "@anthropic/chrome-devtools-mcp@latest"]
8
- tags: [WEB-REACT, WEB-STATIC, ANALYTICS]
9
- category: devtools
10
- tier: recommended
11
- url: "https://github.com/anthropics/anthropic-quickstarts/tree/main/chrome-devtools-mcp"
12
-
13
- - name: playwright
14
- description: "Browser automation for E2E testing, screenshots, and web scraping"
15
- command: npx
16
- args: ["-y", "@anthropic/mcp-server-playwright"]
17
- tags: [WEB-REACT, WEB-STATIC]
18
- category: testing
19
- tier: recommended
20
- url: "https://github.com/anthropics/anthropic-quickstarts/tree/main/mcp-server-playwright"
1
+ tag: WEB-STATIC
2
+ section: mcp-servers
3
+ servers:
4
+ - name: chrome-devtools
5
+ description: "Chrome DevTools integration for debugging, profiling, and network inspection"
6
+ command: npx
7
+ args: ["-y", "@anthropic/chrome-devtools-mcp@latest"]
8
+ tags: [WEB-REACT, WEB-STATIC, ANALYTICS]
9
+ category: devtools
10
+ tier: recommended
11
+ url: "https://github.com/anthropics/anthropic-quickstarts/tree/main/chrome-devtools-mcp"
12
+
13
+ - name: playwright
14
+ description: "Browser automation for E2E testing, screenshots, and web scraping"
15
+ command: npx
16
+ args: ["-y", "@anthropic/mcp-server-playwright"]
17
+ tags: [WEB-REACT, WEB-STATIC]
18
+ category: testing
19
+ tier: recommended
20
+ url: "https://github.com/anthropics/anthropic-quickstarts/tree/main/mcp-server-playwright"
@@ -1,44 +1,44 @@
1
- tag: WEB3
2
- section: instructions
3
- blocks:
4
- - id: smart-contract-patterns
5
- tier: recommended
6
- title: "Smart Contract Design"
7
- content: |
8
- ## Smart Contract Design Patterns
9
-
10
- - Follow the Checks-Effects-Interactions pattern in every state-mutating function: validate inputs, update state, then make external calls. This prevents reentrancy attacks.
11
- - Use the proxy pattern (UUPS or Transparent Proxy) for upgradeable contracts. Separate storage layout from logic, and never change the order of existing storage variables.
12
- - Minimize on-chain storage. Store large data off-chain (IPFS, Arweave) and keep only content hashes on-chain for verification.
13
- - Emit events for every significant state change. Events are the primary mechanism for off-chain indexers and UIs to track contract activity.
14
- - Use OpenZeppelin's audited base contracts for standard functionality (ERC-20, ERC-721, ERC-1155, AccessControl, ReentrancyGuard) rather than writing from scratch.
15
- - Implement access control with role-based patterns. Use multi-sig or timelocks for admin operations to prevent single points of compromise.
16
- - Write comprehensive Solidity NatSpec comments for every public and external function, including `@param`, `@return`, and `@notice` tags.
17
- - Target 100% branch coverage in contract tests. Test edge cases: zero values, max uint values, unauthorized callers, reentrancy attempts, and contract self-destruction scenarios.
18
-
19
- - id: gas-optimization
20
- tier: recommended
21
- title: "Gas Optimization"
22
- content: |
23
- ## Gas Optimization Strategies
24
-
25
- - Pack struct fields by size to minimize storage slots. Group `uint128` pairs, `bool` clusters, and `address` + smaller types into single 32-byte slots.
26
- - Use `calldata` instead of `memory` for read-only function parameters in external functions to avoid unnecessary copying.
27
- - Prefer mappings over arrays for lookups. If iteration is needed, maintain a separate array of keys alongside the mapping.
28
- - Batch operations where possible: multi-transfer, batch minting, and batch approvals reduce per-transaction overhead.
29
- - Use custom errors (`error InsufficientBalance(uint256 available, uint256 required)`) instead of `require` strings to save deployment and runtime gas.
30
- - Cache storage variables in local `memory` or `stack` variables when accessed multiple times within a function.
31
- - Profile gas usage in tests using Hardhat's gas reporter. Set gas budgets per function and fail CI if a change exceeds the budget.
32
-
33
- - id: wallet-offchain
34
- tier: recommended
35
- title: "Wallet Integration & Off-Chain Patterns"
36
- content: |
37
- ## Wallet Integration & Off-Chain Architecture
38
-
39
- - Support multiple wallet providers (MetaMask, WalletConnect, Coinbase Wallet) via a unified connector abstraction. Never hard-code a single provider.
40
- - Handle chain switching and network mismatch gracefully. Prompt users to switch networks and display clear error messages for unsupported chains.
41
- - Use EIP-712 typed structured data for off-chain signature requests so users can read and understand what they are signing.
42
- - Implement an off-chain indexer (The Graph, custom) to serve query-heavy read operations. Never query the blockchain directly from the frontend for list or aggregate views.
43
- - Design for L2 and multi-chain: abstract chain-specific logic behind an interface so the application can deploy to new chains without rewriting business logic.
44
- - Validate all inputs on-chain even if they were validated off-chain. Off-chain validation is a UX convenience; on-chain validation is the security boundary.
1
+ tag: WEB3
2
+ section: instructions
3
+ blocks:
4
+ - id: smart-contract-patterns
5
+ tier: recommended
6
+ title: "Smart Contract Design"
7
+ content: |
8
+ ## Smart Contract Design Patterns
9
+
10
+ - Follow the Checks-Effects-Interactions pattern in every state-mutating function: validate inputs, update state, then make external calls. This prevents reentrancy attacks.
11
+ - Use the proxy pattern (UUPS or Transparent Proxy) for upgradeable contracts. Separate storage layout from logic, and never change the order of existing storage variables.
12
+ - Minimize on-chain storage. Store large data off-chain (IPFS, Arweave) and keep only content hashes on-chain for verification.
13
+ - Emit events for every significant state change. Events are the primary mechanism for off-chain indexers and UIs to track contract activity.
14
+ - Use OpenZeppelin's audited base contracts for standard functionality (ERC-20, ERC-721, ERC-1155, AccessControl, ReentrancyGuard) rather than writing from scratch.
15
+ - Implement access control with role-based patterns. Use multi-sig or timelocks for admin operations to prevent single points of compromise.
16
+ - Write comprehensive Solidity NatSpec comments for every public and external function, including `@param`, `@return`, and `@notice` tags.
17
+ - Target 100% branch coverage in contract tests. Test edge cases: zero values, max uint values, unauthorized callers, reentrancy attempts, and contract self-destruction scenarios.
18
+
19
+ - id: gas-optimization
20
+ tier: recommended
21
+ title: "Gas Optimization"
22
+ content: |
23
+ ## Gas Optimization Strategies
24
+
25
+ - Pack struct fields by size to minimize storage slots. Group `uint128` pairs, `bool` clusters, and `address` + smaller types into single 32-byte slots.
26
+ - Use `calldata` instead of `memory` for read-only function parameters in external functions to avoid unnecessary copying.
27
+ - Prefer mappings over arrays for lookups. If iteration is needed, maintain a separate array of keys alongside the mapping.
28
+ - Batch operations where possible: multi-transfer, batch minting, and batch approvals reduce per-transaction overhead.
29
+ - Use custom errors (`error InsufficientBalance(uint256 available, uint256 required)`) instead of `require` strings to save deployment and runtime gas.
30
+ - Cache storage variables in local `memory` or `stack` variables when accessed multiple times within a function.
31
+ - Profile gas usage in tests using Hardhat's gas reporter. Set gas budgets per function and fail CI if a change exceeds the budget.
32
+
33
+ - id: wallet-offchain
34
+ tier: recommended
35
+ title: "Wallet Integration & Off-Chain Patterns"
36
+ content: |
37
+ ## Wallet Integration & Off-Chain Architecture
38
+
39
+ - Support multiple wallet providers (MetaMask, WalletConnect, Coinbase Wallet) via a unified connector abstraction. Never hard-code a single provider.
40
+ - Handle chain switching and network mismatch gracefully. Prompt users to switch networks and display clear error messages for unsupported chains.
41
+ - Use EIP-712 typed structured data for off-chain signature requests so users can read and understand what they are signing.
42
+ - Implement an off-chain indexer (The Graph, custom) to serve query-heavy read operations. Never query the blockchain directly from the frontend for list or aggregate views.
43
+ - Design for L2 and multi-chain: abstract chain-specific logic behind an interface so the application can deploy to new chains without rewriting business logic.
44
+ - Validate all inputs on-chain even if they were validated off-chain. Off-chain validation is a UX convenience; on-chain validation is the security boundary.
@@ -1,11 +1,11 @@
1
- tag: WEB3
2
- section: mcp-servers
3
- servers:
4
- - name: solidity
5
- description: "Solidity smart contract development — compilation, ABI generation, and deployment helpers"
6
- command: npx
7
- args: ["-y", "mcp-server-solidity"]
8
- tags: [WEB3]
9
- category: devtools
10
- tier: recommended
11
- url: "https://github.com/AIMONGmbH/solidity-mcp-server"
1
+ tag: WEB3
2
+ section: mcp-servers
3
+ servers:
4
+ - name: solidity
5
+ description: "Solidity smart contract development — compilation, ABI generation, and deployment helpers"
6
+ command: npx
7
+ args: ["-y", "mcp-server-solidity"]
8
+ tags: [WEB3]
9
+ category: devtools
10
+ tier: recommended
11
+ url: "https://github.com/AIMONGmbH/solidity-mcp-server"