mindforge-cc 11.8.2 → 11.9.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 (361) hide show
  1. package/.agent/mindforge/wf-orchestrate-review.md +35 -0
  2. package/.agent/mindforge/wf-verification-loop.md +45 -0
  3. package/.agent/mindforge/wf-workflow-optimizer.md +51 -0
  4. package/.agent/skills/article-illustrator/SKILL.md +7 -7
  5. package/.agent/skills/arxiv/SKILL.md +6 -6
  6. package/.agent/skills/code-wiki/SKILL.md +11 -11
  7. package/.agent/skills/concept-diagrams/SKILL.md +6 -6
  8. package/.agent/skills/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
  9. package/.agent/skills/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
  10. package/.agent/skills/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
  11. package/.agent/skills/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
  12. package/.agent/skills/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
  13. package/.agent/skills/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
  14. package/.agent/skills/concept-diagrams/examples/electricity-grid-flow.md +182 -0
  15. package/.agent/skills/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
  16. package/.agent/skills/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
  17. package/.agent/skills/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
  18. package/.agent/skills/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
  19. package/.agent/skills/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
  20. package/.agent/skills/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
  21. package/.agent/skills/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
  22. package/.agent/skills/concept-diagrams/examples/wind-turbine-structure.md +338 -0
  23. package/.agent/skills/concept-diagrams/templates/template.html +174 -0
  24. package/.agent/skills/domain-intel/SKILL.md +7 -7
  25. package/.agent/skills/duckduckgo-search/SKILL.md +17 -17
  26. package/.agent/skills/github-auth/scripts/gh-env.sh +66 -0
  27. package/.agent/skills/github-code-review/SKILL.md +9 -9
  28. package/.agent/skills/github-pr-workflow/SKILL.md +3 -3
  29. package/.agent/skills/godmode/SKILL.md +8 -8
  30. package/.agent/skills/jupyter-live-kernel/SKILL.md +3 -3
  31. package/.agent/skills/kanban-orchestrator/SKILL.md +10 -10
  32. package/.agent/skills/kanban-worker/SKILL.md +6 -6
  33. package/.agent/skills/llm-wiki/SKILL.md +7 -7
  34. package/.agent/skills/mindforge-autonomous/SKILL.md +1 -1
  35. package/.agent/skills/mindforge-complete-milestone/SKILL.md +1 -1
  36. package/.agent/skills/mindforge-discuss-phase/SKILL.md +1 -1
  37. package/.agent/skills/mindforge-do/SKILL.md +1 -1
  38. package/.agent/skills/mindforge-execute-phase/SKILL.md +1 -1
  39. package/.agent/skills/mindforge-list-workspaces/SKILL.md +1 -1
  40. package/.agent/skills/mindforge-manager/SKILL.md +1 -1
  41. package/.agent/skills/mindforge-neural-orchestrator/SKILL.md +1 -1
  42. package/.agent/skills/mindforge-new-milestone/SKILL.md +4 -4
  43. package/.agent/skills/mindforge-new-project/SKILL.md +4 -4
  44. package/.agent/skills/mindforge-new-workspace/SKILL.md +1 -1
  45. package/.agent/skills/mindforge-note/SKILL.md +1 -1
  46. package/.agent/skills/mindforge-plan-phase/SKILL.md +1 -1
  47. package/.agent/skills/mindforge-profile-user/SKILL.md +1 -1
  48. package/.agent/skills/mindforge-remove-workspace/SKILL.md +1 -1
  49. package/.agent/skills/mindforge-research-phase/SKILL.md +1 -1
  50. package/.agent/skills/mindforge-ui-phase/SKILL.md +1 -1
  51. package/.agent/skills/mindforge-ui-review/SKILL.md +1 -1
  52. package/.agent/skills/mindforge-verify-work/SKILL.md +1 -1
  53. package/.agent/skills/mindforge-workspace-isolated/SKILL.md +1 -1
  54. package/.agent/skills/node-inspect-debugger/SKILL.md +1 -1
  55. package/.agent/skills/obsidian/SKILL.md +15 -15
  56. package/.agent/skills/osint-investigation/SKILL.md +3 -2
  57. package/.agent/skills/osint-investigation/references/sources/courtlistener.md +98 -0
  58. package/.agent/skills/osint-investigation/references/sources/gdelt.md +104 -0
  59. package/.agent/skills/osint-investigation/references/sources/icij-offshore.md +104 -0
  60. package/.agent/skills/osint-investigation/references/sources/nyc-acris.md +90 -0
  61. package/.agent/skills/osint-investigation/references/sources/ofac-sdn.md +92 -0
  62. package/.agent/skills/osint-investigation/references/sources/opencorporates.md +103 -0
  63. package/.agent/skills/osint-investigation/references/sources/sec-edgar.md +83 -0
  64. package/.agent/skills/osint-investigation/references/sources/senate-ld.md +89 -0
  65. package/.agent/skills/osint-investigation/references/sources/usaspending.md +97 -0
  66. package/.agent/skills/osint-investigation/references/sources/wayback.md +93 -0
  67. package/.agent/skills/osint-investigation/references/sources/wikipedia.md +107 -0
  68. package/.agent/skills/osint-investigation/scripts/_http.py +82 -0
  69. package/.agent/skills/osint-investigation/scripts/_normalize.py +67 -0
  70. package/.agent/skills/osint-investigation/scripts/build_findings.py +221 -0
  71. package/.agent/skills/osint-investigation/scripts/entity_resolution.py +228 -0
  72. package/.agent/skills/osint-investigation/scripts/fetch_courtlistener.py +149 -0
  73. package/.agent/skills/osint-investigation/scripts/fetch_gdelt.py +161 -0
  74. package/.agent/skills/osint-investigation/scripts/fetch_icij_offshore.py +234 -0
  75. package/.agent/skills/osint-investigation/scripts/fetch_nyc_acris.py +203 -0
  76. package/.agent/skills/osint-investigation/scripts/fetch_ofac_sdn.py +175 -0
  77. package/.agent/skills/osint-investigation/scripts/fetch_opencorporates.py +191 -0
  78. package/.agent/skills/osint-investigation/scripts/fetch_sec_edgar.py +184 -0
  79. package/.agent/skills/osint-investigation/scripts/fetch_senate_ld.py +146 -0
  80. package/.agent/skills/osint-investigation/scripts/fetch_usaspending.py +170 -0
  81. package/.agent/skills/osint-investigation/scripts/fetch_wayback.py +142 -0
  82. package/.agent/skills/osint-investigation/scripts/fetch_wikipedia.py +266 -0
  83. package/.agent/skills/osint-investigation/scripts/timing_analysis.py +252 -0
  84. package/.agent/skills/oss-forensics/SKILL.md +10 -9
  85. package/.agent/skills/oss-forensics/scripts/evidence-store.py +313 -0
  86. package/.agent/skills/parallel-cli/SKILL.md +2 -2
  87. package/.agent/skills/pinggy-tunnel/SKILL.md +3 -3
  88. package/.agent/skills/pixel-art/SKILL.md +2 -2
  89. package/.agent/skills/plan/SKILL.md +10 -10
  90. package/.agent/skills/requesting-code-review/SKILL.md +4 -6
  91. package/.agent/skills/research-paper-writing/SKILL.md +32 -32
  92. package/.agent/skills/rest-graphql-debug/SKILL.md +31 -32
  93. package/.agent/skills/s6-container-supervision/SKILL.md +1 -1
  94. package/.agent/skills/scrapling/SKILL.md +1 -1
  95. package/.agent/skills/sherlock/SKILL.md +1 -1
  96. package/.agent/skills/simplify-code/SKILL.md +5 -7
  97. package/.agent/skills/skill-authoring/SKILL.md +4 -4
  98. package/.agent/skills/spike/SKILL.md +11 -13
  99. package/.agent/skills/subagent-driven-development/SKILL.md +7 -11
  100. package/.agent/skills/systematic-debugging/SKILL.md +13 -14
  101. package/.agent/skills/test-driven-development/SKILL.md +6 -7
  102. package/.agent/skills/video-orchestrator/SKILL.md +1 -1
  103. package/.agent/skills/web-pentest/SKILL.md +7 -7
  104. package/.mindforge/config.json +3 -2
  105. package/.mindforge/dynamic-workflows/REGISTRY.md +4 -1
  106. package/.mindforge/dynamic-workflows/index.json +910 -840
  107. package/.mindforge/dynamic-workflows/scripts/accessibility-audit.js +88 -90
  108. package/.mindforge/dynamic-workflows/scripts/ai-model-eval.js +59 -61
  109. package/.mindforge/dynamic-workflows/scripts/api-contract-test.js +87 -85
  110. package/.mindforge/dynamic-workflows/scripts/api-migration.js +120 -122
  111. package/.mindforge/dynamic-workflows/scripts/architecture-modernization.js +84 -86
  112. package/.mindforge/dynamic-workflows/scripts/code-audit.js +75 -77
  113. package/.mindforge/dynamic-workflows/scripts/code-explainer.js +99 -101
  114. package/.mindforge/dynamic-workflows/scripts/competitive-analysis.js +62 -64
  115. package/.mindforge/dynamic-workflows/scripts/competitive-teardown.js +106 -108
  116. package/.mindforge/dynamic-workflows/scripts/cost-analysis.js +78 -80
  117. package/.mindforge/dynamic-workflows/scripts/data-pipeline-validate.js +47 -49
  118. package/.mindforge/dynamic-workflows/scripts/database-migration.js +85 -87
  119. package/.mindforge/dynamic-workflows/scripts/debug-detective.js +97 -99
  120. package/.mindforge/dynamic-workflows/scripts/dependency-health.js +81 -83
  121. package/.mindforge/dynamic-workflows/scripts/design-system-audit.js +84 -86
  122. package/.mindforge/dynamic-workflows/scripts/documentation-gen.js +65 -67
  123. package/.mindforge/dynamic-workflows/scripts/feature-planner.js +78 -80
  124. package/.mindforge/dynamic-workflows/scripts/incident-response.js +81 -83
  125. package/.mindforge/dynamic-workflows/scripts/multi-repo-sync.js +49 -51
  126. package/.mindforge/dynamic-workflows/scripts/mutation-testing.js +113 -115
  127. package/.mindforge/dynamic-workflows/scripts/onboard-codebase.js +79 -81
  128. package/.mindforge/dynamic-workflows/scripts/orchestrate-review.js +115 -0
  129. package/.mindforge/dynamic-workflows/scripts/perf-optimize.js +97 -99
  130. package/.mindforge/dynamic-workflows/scripts/pr-review.js +61 -63
  131. package/.mindforge/dynamic-workflows/scripts/refactor-plan.js +88 -90
  132. package/.mindforge/dynamic-workflows/scripts/release-prep.js +79 -81
  133. package/.mindforge/dynamic-workflows/scripts/security-hardening.js +117 -119
  134. package/.mindforge/dynamic-workflows/scripts/security-threat-model.js +119 -121
  135. package/.mindforge/dynamic-workflows/scripts/tdd-sprint.js +80 -82
  136. package/.mindforge/dynamic-workflows/scripts/tech-evaluation.js +50 -52
  137. package/.mindforge/dynamic-workflows/scripts/test-coverage-gap.js +68 -70
  138. package/.mindforge/dynamic-workflows/scripts/ux-heuristic-audit.js +89 -91
  139. package/.mindforge/dynamic-workflows/scripts/verification-loop.js +138 -0
  140. package/.mindforge/dynamic-workflows/scripts/workflow-optimizer.js +136 -0
  141. package/.mindforge/dynamic-workflows/scripts/writer-reviewer.js +63 -65
  142. package/.mindforge/memory/sync-manifest.json +1 -1
  143. package/.mindforge/personas/advisor-researcher.md +2 -2
  144. package/.mindforge/personas/api-load-tester.md +1 -1
  145. package/.mindforge/personas/authentication-architect.md +1 -1
  146. package/.mindforge/personas/backup-recovery-specialist.md +1 -1
  147. package/.mindforge/personas/build-optimizer.md +1 -1
  148. package/.mindforge/personas/caching-strategist.md +1 -1
  149. package/.mindforge/personas/chaos-engineer.md +1 -1
  150. package/.mindforge/personas/compliance-auditor.md +1 -1
  151. package/.mindforge/personas/config-management-expert.md +1 -1
  152. package/.mindforge/personas/coverage-specialist.md +1 -1
  153. package/.mindforge/personas/debug-specialist.md +2 -2
  154. package/.mindforge/personas/debugger.md +2 -2
  155. package/.mindforge/personas/dependency-auditor.md +1 -1
  156. package/.mindforge/personas/developer.md +1 -1
  157. package/.mindforge/personas/devops-engineer.md +1 -1
  158. package/.mindforge/personas/executor.md +1 -1
  159. package/.mindforge/personas/go-specialist.md +1 -1
  160. package/.mindforge/personas/incident-commander.md +1 -1
  161. package/.mindforge/personas/java-specialist.md +1 -1
  162. package/.mindforge/personas/kubernetes-debugger.md +1 -1
  163. package/.mindforge/personas/logging-architect.md +1 -1
  164. package/.mindforge/personas/mf-planner.md +1 -1
  165. package/.mindforge/personas/mf-researcher.md +1 -1
  166. package/.mindforge/personas/mf-reviewer.md +1 -1
  167. package/.mindforge/personas/nyquist-auditor.md +1 -1
  168. package/.mindforge/personas/observability-engineer.md +1 -1
  169. package/.mindforge/personas/performance-optimizer.md +1 -1
  170. package/.mindforge/personas/phase-researcher.md +5 -5
  171. package/.mindforge/personas/planner.md +1 -1
  172. package/.mindforge/personas/project-researcher.md +2 -2
  173. package/.mindforge/personas/python-specialist.md +1 -1
  174. package/.mindforge/personas/qa-engineer.md +1 -1
  175. package/.mindforge/personas/release-manager.md +1 -1
  176. package/.mindforge/personas/research-agent.md +4 -4
  177. package/.mindforge/personas/roadmapper-extend.md +1 -1
  178. package/.mindforge/personas/rust-specialist.md +1 -1
  179. package/.mindforge/personas/security-reviewer.md +1 -1
  180. package/.mindforge/personas/tech-writer.md +1 -1
  181. package/.mindforge/personas/typescript-wizard.md +1 -1
  182. package/.mindforge/personas/ui-researcher.md +1 -1
  183. package/.mindforge/skills/accessibility/SKILL.md +3 -3
  184. package/.mindforge/skills/agent-architecture-audit/SKILL.md +11 -0
  185. package/.mindforge/skills/agent-loops/SKILL.md +1 -1
  186. package/.mindforge/skills/arxiv/SKILL.md +6 -6
  187. package/.mindforge/skills/arxiv/scripts/search_arxiv.py +114 -0
  188. package/.mindforge/skills/code-tour/SKILL.md +2 -2
  189. package/.mindforge/skills/code-wiki/SKILL.md +11 -11
  190. package/.mindforge/skills/code-wiki/templates/README.md +31 -0
  191. package/.mindforge/skills/code-wiki/templates/architecture.md +30 -0
  192. package/.mindforge/skills/code-wiki/templates/getting-started.md +47 -0
  193. package/.mindforge/skills/code-wiki/templates/module.md +38 -0
  194. package/.mindforge/skills/concept-diagrams/SKILL.md +6 -6
  195. package/.mindforge/skills/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
  196. package/.mindforge/skills/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
  197. package/.mindforge/skills/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
  198. package/.mindforge/skills/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
  199. package/.mindforge/skills/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
  200. package/.mindforge/skills/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
  201. package/.mindforge/skills/concept-diagrams/examples/electricity-grid-flow.md +182 -0
  202. package/.mindforge/skills/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
  203. package/.mindforge/skills/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
  204. package/.mindforge/skills/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
  205. package/.mindforge/skills/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
  206. package/.mindforge/skills/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
  207. package/.mindforge/skills/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
  208. package/.mindforge/skills/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
  209. package/.mindforge/skills/concept-diagrams/examples/wind-turbine-structure.md +338 -0
  210. package/.mindforge/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
  211. package/.mindforge/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
  212. package/.mindforge/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
  213. package/.mindforge/skills/concept-diagrams/templates/template.html +174 -0
  214. package/.mindforge/skills/creative-ideation/references/full-prompt-library.md +110 -0
  215. package/.mindforge/skills/documentation/SKILL.md +1 -1
  216. package/.mindforge/skills/domain-intel/SKILL.md +7 -7
  217. package/.mindforge/skills/domain-intel/scripts/domain_intel.py +397 -0
  218. package/.mindforge/skills/duckduckgo-search/SKILL.md +17 -17
  219. package/.mindforge/skills/duckduckgo-search/scripts/duckduckgo.sh +28 -0
  220. package/.mindforge/skills/environment-management/SKILL.md +1 -1
  221. package/.mindforge/skills/github-code-review/SKILL.md +9 -9
  222. package/.mindforge/skills/github-code-review/references/review-output-template.md +74 -0
  223. package/.mindforge/skills/github-issues/templates/bug-report.md +35 -0
  224. package/.mindforge/skills/github-issues/templates/feature-request.md +31 -0
  225. package/.mindforge/skills/github-pr-workflow/SKILL.md +3 -3
  226. package/.mindforge/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
  227. package/.mindforge/skills/github-pr-workflow/references/conventional-commits.md +71 -0
  228. package/.mindforge/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
  229. package/.mindforge/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
  230. package/.mindforge/skills/incident-response/SKILL.md +1 -1
  231. package/.mindforge/skills/jupyter-live-kernel/SKILL.md +3 -3
  232. package/.mindforge/skills/kanban-orchestrator/SKILL.md +10 -10
  233. package/.mindforge/skills/kanban-worker/SKILL.md +6 -6
  234. package/.mindforge/skills/meme-generation/SKILL.md +1 -1
  235. package/.mindforge/skills/meme-generation/scripts/generate_meme.py +470 -0
  236. package/.mindforge/skills/meme-generation/scripts/templates.json +97 -0
  237. package/.mindforge/skills/obsidian/SKILL.md +15 -15
  238. package/.mindforge/skills/orch-pipeline/SKILL.md +2 -2
  239. package/.mindforge/skills/osint-investigation/SKILL.md +3 -2
  240. package/.mindforge/skills/osint-investigation/references/sources/courtlistener.md +98 -0
  241. package/.mindforge/skills/osint-investigation/references/sources/gdelt.md +104 -0
  242. package/.mindforge/skills/osint-investigation/references/sources/icij-offshore.md +104 -0
  243. package/.mindforge/skills/osint-investigation/references/sources/nyc-acris.md +90 -0
  244. package/.mindforge/skills/osint-investigation/references/sources/ofac-sdn.md +92 -0
  245. package/.mindforge/skills/osint-investigation/references/sources/opencorporates.md +103 -0
  246. package/.mindforge/skills/osint-investigation/references/sources/sec-edgar.md +83 -0
  247. package/.mindforge/skills/osint-investigation/references/sources/senate-ld.md +89 -0
  248. package/.mindforge/skills/osint-investigation/references/sources/usaspending.md +97 -0
  249. package/.mindforge/skills/osint-investigation/references/sources/wayback.md +93 -0
  250. package/.mindforge/skills/osint-investigation/references/sources/wikipedia.md +107 -0
  251. package/.mindforge/skills/osint-investigation/scripts/_http.py +82 -0
  252. package/.mindforge/skills/osint-investigation/scripts/_normalize.py +67 -0
  253. package/.mindforge/skills/osint-investigation/scripts/build_findings.py +221 -0
  254. package/.mindforge/skills/osint-investigation/scripts/entity_resolution.py +228 -0
  255. package/.mindforge/skills/osint-investigation/scripts/fetch_courtlistener.py +149 -0
  256. package/.mindforge/skills/osint-investigation/scripts/fetch_gdelt.py +161 -0
  257. package/.mindforge/skills/osint-investigation/scripts/fetch_icij_offshore.py +234 -0
  258. package/.mindforge/skills/osint-investigation/scripts/fetch_nyc_acris.py +203 -0
  259. package/.mindforge/skills/osint-investigation/scripts/fetch_ofac_sdn.py +175 -0
  260. package/.mindforge/skills/osint-investigation/scripts/fetch_opencorporates.py +191 -0
  261. package/.mindforge/skills/osint-investigation/scripts/fetch_sec_edgar.py +184 -0
  262. package/.mindforge/skills/osint-investigation/scripts/fetch_senate_ld.py +146 -0
  263. package/.mindforge/skills/osint-investigation/scripts/fetch_usaspending.py +170 -0
  264. package/.mindforge/skills/osint-investigation/scripts/fetch_wayback.py +142 -0
  265. package/.mindforge/skills/osint-investigation/scripts/fetch_wikipedia.py +266 -0
  266. package/.mindforge/skills/osint-investigation/scripts/timing_analysis.py +252 -0
  267. package/.mindforge/skills/osint-investigation/templates/source-template.md +59 -0
  268. package/.mindforge/skills/oss-forensics/SKILL.md +6 -6
  269. package/.mindforge/skills/oss-forensics/references/evidence-types.md +89 -0
  270. package/.mindforge/skills/oss-forensics/references/github-archive-guide.md +184 -0
  271. package/.mindforge/skills/oss-forensics/references/investigation-templates.md +131 -0
  272. package/.mindforge/skills/oss-forensics/references/recovery-techniques.md +164 -0
  273. package/.mindforge/skills/oss-forensics/scripts/evidence-store.py +313 -0
  274. package/.mindforge/skills/oss-forensics/templates/forensic-report.md +151 -0
  275. package/.mindforge/skills/oss-forensics/templates/malicious-package-report.md +43 -0
  276. package/.mindforge/skills/pixel-art/SKILL.md +2 -2
  277. package/.mindforge/skills/pixel-art/references/palettes.md +49 -0
  278. package/.mindforge/skills/plan/SKILL.md +10 -10
  279. package/.mindforge/skills/requesting-code-review/SKILL.md +4 -6
  280. package/.mindforge/skills/research-paper-writing/SKILL.md +32 -32
  281. package/.mindforge/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
  282. package/.mindforge/skills/research-paper-writing/references/checklists.md +434 -0
  283. package/.mindforge/skills/research-paper-writing/references/citation-workflow.md +563 -0
  284. package/.mindforge/skills/research-paper-writing/references/experiment-patterns.md +728 -0
  285. package/.mindforge/skills/research-paper-writing/references/human-evaluation.md +476 -0
  286. package/.mindforge/skills/research-paper-writing/references/paper-types.md +481 -0
  287. package/.mindforge/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
  288. package/.mindforge/skills/research-paper-writing/references/sources.md +191 -0
  289. package/.mindforge/skills/research-paper-writing/references/writing-guide.md +474 -0
  290. package/.mindforge/skills/research-paper-writing/templates/README.md +251 -0
  291. package/.mindforge/skills/scrapling/SKILL.md +1 -1
  292. package/.mindforge/skills/security-review/SKILL.md +1 -1
  293. package/.mindforge/skills/sherlock/SKILL.md +1 -1
  294. package/.mindforge/skills/simplify-code/SKILL.md +5 -7
  295. package/.mindforge/skills/spike/SKILL.md +11 -13
  296. package/.mindforge/skills/subagent-driven-development/SKILL.md +7 -11
  297. package/.mindforge/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
  298. package/.mindforge/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
  299. package/.mindforge/skills/systematic-debugging/SKILL.md +13 -14
  300. package/.mindforge/skills/test-driven-development/SKILL.md +7 -8
  301. package/.mindforge/skills/testing-standards/SKILL.md +1 -1
  302. package/.mindforge/skills/web-pentest/SKILL.md +2 -2
  303. package/.mindforge/skills/web-pentest/references/bypass-techniques.md +133 -0
  304. package/.mindforge/skills/web-pentest/references/exploitation-techniques.md +204 -0
  305. package/.mindforge/skills/web-pentest/references/scope-enforcement.md +110 -0
  306. package/.mindforge/skills/web-pentest/references/vuln-taxonomy.md +81 -0
  307. package/.mindforge/skills/web-pentest/templates/authorization.md +69 -0
  308. package/.mindforge/skills/web-pentest/templates/pentest-report.md +178 -0
  309. package/.mindforge/skills/writing-skills/SKILL.md +4 -3
  310. package/CHANGELOG.md +35 -0
  311. package/MINDFORGE.md +3 -3
  312. package/README.md +9 -7
  313. package/RELEASENOTES.md +65 -2
  314. package/SECURITY.md +5 -3
  315. package/bin/autonomous/auto-runner.js +5 -2
  316. package/bin/engine/skill-loader.js +4 -0
  317. package/bin/governance/rbac.js +4 -0
  318. package/bin/memory/eis-client.js +1 -0
  319. package/bin/mindforge-cli.js +5 -0
  320. package/bin/models/bedrock-provider.js +192 -0
  321. package/bin/models/model-client.js +19 -0
  322. package/bin/spawn-agent.js +9 -2
  323. package/docs/commands-reference.md +68 -6
  324. package/docs/faq.md +38 -1
  325. package/docs/getting-started.md +27 -12
  326. package/docs/sdk-reference.md +36 -3
  327. package/docs/troubleshooting.md +59 -1
  328. package/docs/user-guide.md +7 -4
  329. package/package.json +3 -3
  330. package/.claude/commands/mindforge/skill-tdd.md +0 -53
  331. package/.claude/commands/mindforge/skills-index.md +0 -118
  332. package/.claude/commands/mindforge/systematic-debug.md +0 -60
  333. package/.claude/commands/mindforge/wf-accessibility-audit.md +0 -31
  334. package/.claude/commands/mindforge/wf-ai-model-eval.md +0 -31
  335. package/.claude/commands/mindforge/wf-api-migration.md +0 -31
  336. package/.claude/commands/mindforge/wf-architecture-modernization.md +0 -32
  337. package/.claude/commands/mindforge/wf-catalog.md +0 -59
  338. package/.claude/commands/mindforge/wf-code-audit.md +0 -31
  339. package/.claude/commands/mindforge/wf-code-explainer.md +0 -31
  340. package/.claude/commands/mindforge/wf-competitive-analysis.md +0 -31
  341. package/.claude/commands/mindforge/wf-competitive-teardown.md +0 -31
  342. package/.claude/commands/mindforge/wf-cost-analysis.md +0 -31
  343. package/.claude/commands/mindforge/wf-data-pipeline-validate.md +0 -31
  344. package/.claude/commands/mindforge/wf-database-migration.md +0 -31
  345. package/.claude/commands/mindforge/wf-debug-detective.md +0 -32
  346. package/.claude/commands/mindforge/wf-design-system-audit.md +0 -31
  347. package/.claude/commands/mindforge/wf-documentation-gen.md +0 -31
  348. package/.claude/commands/mindforge/wf-feature-planner.md +0 -31
  349. package/.claude/commands/mindforge/wf-incident-response.md +0 -31
  350. package/.claude/commands/mindforge/wf-multi-repo-sync.md +0 -31
  351. package/.claude/commands/mindforge/wf-mutation-testing.md +0 -31
  352. package/.claude/commands/mindforge/wf-onboard-codebase.md +0 -31
  353. package/.claude/commands/mindforge/wf-perf-optimize.md +0 -31
  354. package/.claude/commands/mindforge/wf-pr-review.md +0 -31
  355. package/.claude/commands/mindforge/wf-refactor-plan.md +0 -31
  356. package/.claude/commands/mindforge/wf-release-prep.md +0 -31
  357. package/.claude/commands/mindforge/wf-security-threat-model.md +0 -31
  358. package/.claude/commands/mindforge/wf-tdd-sprint.md +0 -31
  359. package/.claude/commands/mindforge/wf-tech-evaluation.md +0 -31
  360. package/.claude/commands/mindforge/wf-ux-heuristic-audit.md +0 -31
  361. package/.claude/commands/mindforge/wf-writer-reviewer.md +0 -30
@@ -10,78 +10,76 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const REVIEW_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- dimension: { type: 'string' },
18
- findings: {
19
- type: 'array',
20
- items: {
21
- type: 'object',
22
- properties: {
23
- severity: { type: 'string', enum: ['blocking', 'major', 'minor', 'suggestion'] },
24
- location: { type: 'string' },
25
- issue: { type: 'string' },
26
- suggestion: { type: 'string' },
27
- },
28
- required: ['severity', 'issue', 'suggestion'],
13
+ const REVIEW_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ dimension: { type: 'string' },
17
+ findings: {
18
+ type: 'array',
19
+ items: {
20
+ type: 'object',
21
+ properties: {
22
+ severity: { type: 'string', enum: ['blocking', 'major', 'minor', 'suggestion'] },
23
+ location: { type: 'string' },
24
+ issue: { type: 'string' },
25
+ suggestion: { type: 'string' },
29
26
  },
27
+ required: ['severity', 'issue', 'suggestion'],
30
28
  },
31
- summary: { type: 'string' },
32
29
  },
33
- required: ['dimension', 'findings', 'summary'],
34
- };
30
+ summary: { type: 'string' },
31
+ },
32
+ required: ['dimension', 'findings', 'summary'],
33
+ };
35
34
 
36
- const VERDICT_SCHEMA = {
37
- type: 'object',
38
- properties: {
39
- verdict: { type: 'string', enum: ['APPROVED', 'APPROVED_WITH_SUGGESTIONS', 'CHANGES_REQUIRED', 'BLOCKING'] },
40
- summary: { type: 'string' },
41
- blockingIssues: { type: 'array', items: { type: 'string' } },
42
- majorIssues: { type: 'array', items: { type: 'string' } },
43
- suggestions: { type: 'array', items: { type: 'string' } },
44
- },
45
- required: ['verdict', 'summary', 'blockingIssues', 'majorIssues', 'suggestions'],
46
- };
35
+ const VERDICT_SCHEMA = {
36
+ type: 'object',
37
+ properties: {
38
+ verdict: { type: 'string', enum: ['APPROVED', 'APPROVED_WITH_SUGGESTIONS', 'CHANGES_REQUIRED', 'BLOCKING'] },
39
+ summary: { type: 'string' },
40
+ blockingIssues: { type: 'array', items: { type: 'string' } },
41
+ majorIssues: { type: 'array', items: { type: 'string' } },
42
+ suggestions: { type: 'array', items: { type: 'string' } },
43
+ },
44
+ required: ['verdict', 'summary', 'blockingIssues', 'majorIssues', 'suggestions'],
45
+ };
47
46
 
48
- const target = args || 'current git diff HEAD~1 (run from repo root)';
47
+ const target = args || 'current git diff HEAD~1 (run from repo root)';
49
48
 
50
- phase('Scope');
51
- log(`Reviewing: ${target}`);
49
+ phase('Scope');
50
+ log(`Reviewing: ${target}`);
52
51
 
53
- const REVIEWERS = [
54
- { label: 'correctness', prompt: `Review this code change for CORRECTNESS: "${target}". Check for: logic errors, off-by-one bugs, null/undefined handling, incorrect assumptions, broken edge cases, missing error handling, incorrect API usage, race conditions, and test coverage gaps. Rate each finding as blocking/major/minor/suggestion.` },
55
- { label: 'security', prompt: `Review this code change for SECURITY: "${target}". Check for: injection vulnerabilities, broken authentication, XSS, CSRF, insecure direct object references, sensitive data exposure, hardcoded credentials, missing authorization checks, and insecure dependencies. Rate each as blocking/major/minor/suggestion.` },
56
- { label: 'performance', prompt: `Review this code change for PERFORMANCE: "${target}". Check for: N+1 queries, missing indexes, inefficient algorithms, memory leaks, synchronous blocking operations, unnecessary re-renders, large bundle imports, missing caching, and scalability concerns. Rate each as blocking/major/minor/suggestion.` },
57
- { label: 'style', prompt: `Review this code change for CODE STYLE and MAINTAINABILITY: "${target}". Check for: naming conventions, function length, complexity, magic numbers, dead code, missing comments for non-obvious logic, inconsistent patterns, DRY violations, and adherence to project conventions. Rate each as blocking/major/minor/suggestion.` },
58
- ];
52
+ const REVIEWERS = [
53
+ { label: 'correctness', prompt: `Review this code change for CORRECTNESS: "${target}". Check for: logic errors, off-by-one bugs, null/undefined handling, incorrect assumptions, broken edge cases, missing error handling, incorrect API usage, race conditions, and test coverage gaps. Rate each finding as blocking/major/minor/suggestion.` },
54
+ { label: 'security', prompt: `Review this code change for SECURITY: "${target}". Check for: injection vulnerabilities, broken authentication, XSS, CSRF, insecure direct object references, sensitive data exposure, hardcoded credentials, missing authorization checks, and insecure dependencies. Rate each as blocking/major/minor/suggestion.` },
55
+ { label: 'performance', prompt: `Review this code change for PERFORMANCE: "${target}". Check for: N+1 queries, missing indexes, inefficient algorithms, memory leaks, synchronous blocking operations, unnecessary re-renders, large bundle imports, missing caching, and scalability concerns. Rate each as blocking/major/minor/suggestion.` },
56
+ { label: 'style', prompt: `Review this code change for CODE STYLE and MAINTAINABILITY: "${target}". Check for: naming conventions, function length, complexity, magic numbers, dead code, missing comments for non-obvious logic, inconsistent patterns, DRY violations, and adherence to project conventions. Rate each as blocking/major/minor/suggestion.` },
57
+ ];
59
58
 
60
- phase('Review');
61
- const reviews = await parallel(
62
- REVIEWERS.map(r => () => agent(r.prompt, { schema: REVIEW_SCHEMA, label: `review:${r.label}`, phase: 'Review' }))
63
- );
59
+ phase('Review');
60
+ const reviews = await parallel(
61
+ REVIEWERS.map(r => () => agent(r.prompt, { schema: REVIEW_SCHEMA, label: `review:${r.label}`, phase: 'Review' }))
62
+ );
64
63
 
65
- phase('Consensus');
66
- const allFindings = reviews.filter(Boolean).flatMap(r => r.findings.map(f => ({ ...f, dimension: r.dimension })));
67
- const blocking = allFindings.filter(f => f.severity === 'blocking');
68
- const major = allFindings.filter(f => f.severity === 'major');
69
- const minor = allFindings.filter(f => f.severity === 'minor');
70
- const suggestions = allFindings.filter(f => f.severity === 'suggestion');
71
- log(`${allFindings.length} total findings: ${blocking.length} blocking, ${major.length} major, ${minor.length} minor, ${suggestions.length} suggestions`);
64
+ phase('Consensus');
65
+ const allFindings = reviews.filter(Boolean).flatMap(r => r.findings.map(f => ({ ...f, dimension: r.dimension })));
66
+ const blocking = allFindings.filter(f => f.severity === 'blocking');
67
+ const major = allFindings.filter(f => f.severity === 'major');
68
+ const minor = allFindings.filter(f => f.severity === 'minor');
69
+ const suggestions = allFindings.filter(f => f.severity === 'suggestion');
70
+ log(`${allFindings.length} total findings: ${blocking.length} blocking, ${major.length} major, ${minor.length} minor, ${suggestions.length} suggestions`);
72
71
 
73
- const findingsSummary = allFindings.slice(0, 20).map(f => `[${f.severity.toUpperCase()}][${f.dimension}] ${f.issue} → ${f.suggestion}`).join('\n');
72
+ const findingsSummary = allFindings.slice(0, 20).map(f => `[${f.severity.toUpperCase()}][${f.dimension}] ${f.issue} → ${f.suggestion}`).join('\n');
74
73
 
75
- phase('Verdict');
76
- const verdict = await agent(
77
- `Produce a final PR review verdict for: "${target}"\n\nFindings:\n${findingsSummary}\n\nIf there are any blocking issues, verdict is BLOCKING. If major issues exist, CHANGES_REQUIRED. If only minor/suggestions, APPROVED_WITH_SUGGESTIONS. Otherwise APPROVED.`,
78
- { schema: VERDICT_SCHEMA, label: 'verdict' }
79
- );
74
+ phase('Verdict');
75
+ const verdict = await agent(
76
+ `Produce a final PR review verdict for: "${target}"\n\nFindings:\n${findingsSummary}\n\nIf there are any blocking issues, verdict is BLOCKING. If major issues exist, CHANGES_REQUIRED. If only minor/suggestions, APPROVED_WITH_SUGGESTIONS. Otherwise APPROVED.`,
77
+ { schema: VERDICT_SCHEMA, label: 'verdict' }
78
+ );
80
79
 
81
- return {
82
- target,
83
- reviews: reviews.filter(Boolean),
84
- verdict,
85
- stats: { total: allFindings.length, blocking: blocking.length, major: major.length, minor: minor.length, suggestions: suggestions.length },
86
- };
87
- }
80
+ return {
81
+ target,
82
+ reviews: reviews.filter(Boolean),
83
+ verdict,
84
+ stats: { total: allFindings.length, blocking: blocking.length, major: major.length, minor: minor.length, suggestions: suggestions.length },
85
+ };
@@ -10,112 +10,110 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const DEBT_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- area: { type: 'string' },
18
- debts: {
19
- type: 'array',
20
- items: {
21
- type: 'object',
22
- properties: {
23
- type: { type: 'string' },
24
- location: { type: 'string' },
25
- description: { type: 'string' },
26
- blastRadius: { type: 'string', enum: ['wide', 'medium', 'narrow'] },
27
- testCoverage: { type: 'string', enum: ['good', 'partial', 'none'] },
28
- },
29
- required: ['type', 'description', 'blastRadius', 'testCoverage'],
13
+ const DEBT_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ area: { type: 'string' },
17
+ debts: {
18
+ type: 'array',
19
+ items: {
20
+ type: 'object',
21
+ properties: {
22
+ type: { type: 'string' },
23
+ location: { type: 'string' },
24
+ description: { type: 'string' },
25
+ blastRadius: { type: 'string', enum: ['wide', 'medium', 'narrow'] },
26
+ testCoverage: { type: 'string', enum: ['good', 'partial', 'none'] },
30
27
  },
28
+ required: ['type', 'description', 'blastRadius', 'testCoverage'],
31
29
  },
32
30
  },
33
- required: ['area', 'debts'],
34
- };
31
+ },
32
+ required: ['area', 'debts'],
33
+ };
35
34
 
36
- const PRIORITY_SCHEMA = {
37
- type: 'object',
38
- properties: {
39
- prioritized: {
40
- type: 'array',
41
- items: {
42
- type: 'object',
43
- properties: {
44
- rank: { type: 'number' },
45
- description: { type: 'string' },
46
- risk: { type: 'string', enum: ['low', 'medium', 'high'] },
47
- rationale: { type: 'string' },
48
- prerequisite: { type: 'string' },
49
- },
50
- required: ['rank', 'description', 'risk', 'rationale'],
35
+ const PRIORITY_SCHEMA = {
36
+ type: 'object',
37
+ properties: {
38
+ prioritized: {
39
+ type: 'array',
40
+ items: {
41
+ type: 'object',
42
+ properties: {
43
+ rank: { type: 'number' },
44
+ description: { type: 'string' },
45
+ risk: { type: 'string', enum: ['low', 'medium', 'high'] },
46
+ rationale: { type: 'string' },
47
+ prerequisite: { type: 'string' },
51
48
  },
49
+ required: ['rank', 'description', 'risk', 'rationale'],
52
50
  },
53
51
  },
54
- required: ['prioritized'],
55
- };
52
+ },
53
+ required: ['prioritized'],
54
+ };
56
55
 
57
- const PLAN_SCHEMA = {
58
- type: 'object',
59
- properties: {
60
- summary: { type: 'string' },
61
- steps: {
62
- type: 'array',
63
- items: {
64
- type: 'object',
65
- properties: {
66
- step: { type: 'number' },
67
- title: { type: 'string' },
68
- action: { type: 'string' },
69
- verification: { type: 'string' },
70
- rollback: { type: 'string' },
71
- estimatedEffort: { type: 'string' },
72
- },
73
- required: ['step', 'title', 'action', 'verification'],
56
+ const PLAN_SCHEMA = {
57
+ type: 'object',
58
+ properties: {
59
+ summary: { type: 'string' },
60
+ steps: {
61
+ type: 'array',
62
+ items: {
63
+ type: 'object',
64
+ properties: {
65
+ step: { type: 'number' },
66
+ title: { type: 'string' },
67
+ action: { type: 'string' },
68
+ verification: { type: 'string' },
69
+ rollback: { type: 'string' },
70
+ estimatedEffort: { type: 'string' },
74
71
  },
72
+ required: ['step', 'title', 'action', 'verification'],
75
73
  },
76
- totalEstimate: { type: 'string' },
77
- risks: { type: 'array', items: { type: 'string' } },
78
74
  },
79
- required: ['summary', 'steps', 'totalEstimate', 'risks'],
80
- };
75
+ totalEstimate: { type: 'string' },
76
+ risks: { type: 'array', items: { type: 'string' } },
77
+ },
78
+ required: ['summary', 'steps', 'totalEstimate', 'risks'],
79
+ };
81
80
 
82
- const target = args || 'current codebase (run from repo root)';
81
+ const target = args || 'current codebase (run from repo root)';
83
82
 
84
- phase('Scan');
85
- log(`Scanning: ${target}`);
83
+ phase('Scan');
84
+ log(`Scanning: ${target}`);
86
85
 
87
- const SCAN_AREAS = [
88
- { label: 'structural', prompt: `Scan for structural technical debt in: "${target}". Look for: God objects/files (>400 lines), circular dependencies, tight coupling, missing abstraction layers, inconsistent patterns across similar features.` },
89
- { label: 'complexity', prompt: `Scan for complexity debt in: "${target}". Look for: functions >50 lines, nesting >4 levels, cyclomatic complexity, boolean parameter flags, long parameter lists, feature envy, shotgun surgery patterns.` },
90
- { label: 'maintenance', prompt: `Scan for maintenance debt in: "${target}". Look for: dead code, commented-out code, outdated comments, TODO/FIXME/HACK markers, deprecated API usage, inconsistent naming, magic numbers/strings.` },
91
- ];
86
+ const SCAN_AREAS = [
87
+ { label: 'structural', prompt: `Scan for structural technical debt in: "${target}". Look for: God objects/files (>400 lines), circular dependencies, tight coupling, missing abstraction layers, inconsistent patterns across similar features.` },
88
+ { label: 'complexity', prompt: `Scan for complexity debt in: "${target}". Look for: functions >50 lines, nesting >4 levels, cyclomatic complexity, boolean parameter flags, long parameter lists, feature envy, shotgun surgery patterns.` },
89
+ { label: 'maintenance', prompt: `Scan for maintenance debt in: "${target}". Look for: dead code, commented-out code, outdated comments, TODO/FIXME/HACK markers, deprecated API usage, inconsistent naming, magic numbers/strings.` },
90
+ ];
92
91
 
93
- const scans = await parallel(
94
- SCAN_AREAS.map(a => () => agent(a.prompt, { schema: DEBT_SCHEMA, label: `scan:${a.label}`, phase: 'Scan' }))
95
- );
92
+ const scans = await parallel(
93
+ SCAN_AREAS.map(a => () => agent(a.prompt, { schema: DEBT_SCHEMA, label: `scan:${a.label}`, phase: 'Scan' }))
94
+ );
96
95
 
97
- phase('Prioritize');
98
- const allDebts = scans.filter(Boolean).flatMap(s => s.debts);
99
- log(`Found ${allDebts.length} debt items across ${scans.filter(Boolean).length} areas`);
100
- const debtList = allDebts.slice(0, 20).map((d, i) => `${i + 1}. [blast:${d.blastRadius}][coverage:${d.testCoverage}] ${d.description}`).join('\n');
101
- const prioritized = await agent(
102
- `Prioritize this refactoring backlog by risk. Items with narrow blast radius + good test coverage = tackle first (low risk). Wide blast radius + no coverage = tackle last or skip.\n\nDebts:\n${debtList}`,
103
- { schema: PRIORITY_SCHEMA, label: 'prioritize' }
104
- );
96
+ phase('Prioritize');
97
+ const allDebts = scans.filter(Boolean).flatMap(s => s.debts);
98
+ log(`Found ${allDebts.length} debt items across ${scans.filter(Boolean).length} areas`);
99
+ const debtList = allDebts.slice(0, 20).map((d, i) => `${i + 1}. [blast:${d.blastRadius}][coverage:${d.testCoverage}] ${d.description}`).join('\n');
100
+ const prioritized = await agent(
101
+ `Prioritize this refactoring backlog by risk. Items with narrow blast radius + good test coverage = tackle first (low risk). Wide blast radius + no coverage = tackle last or skip.\n\nDebts:\n${debtList}`,
102
+ { schema: PRIORITY_SCHEMA, label: 'prioritize' }
103
+ );
105
104
 
106
- phase('Sequence');
107
- const topItems = prioritized.prioritized.slice(0, 10).map(p => `${p.rank}. [${p.risk}] ${p.description}: ${p.rationale}`).join('\n');
105
+ phase('Sequence');
106
+ const topItems = prioritized.prioritized.slice(0, 10).map(p => `${p.rank}. [${p.risk}] ${p.description}: ${p.rationale}`).join('\n');
108
107
 
109
- phase('Plan');
110
- const plan = await agent(
111
- `Create a safe, step-by-step refactoring plan for: "${target}"\n\nPrioritized items:\n${topItems}\n\nFor each step, specify: the action to take, how to verify it didn't break anything, rollback procedure, and estimated effort. Order steps to minimize merge conflicts.`,
112
- { schema: PLAN_SCHEMA, label: 'plan' }
113
- );
108
+ phase('Plan');
109
+ const plan = await agent(
110
+ `Create a safe, step-by-step refactoring plan for: "${target}"\n\nPrioritized items:\n${topItems}\n\nFor each step, specify: the action to take, how to verify it didn't break anything, rollback procedure, and estimated effort. Order steps to minimize merge conflicts.`,
111
+ { schema: PLAN_SCHEMA, label: 'plan' }
112
+ );
114
113
 
115
- return {
116
- target,
117
- debtItems: allDebts.length,
118
- prioritized: prioritized.prioritized,
119
- plan,
120
- };
121
- }
114
+ return {
115
+ target,
116
+ debtItems: allDebts.length,
117
+ prioritized: prioritized.prioritized,
118
+ plan,
119
+ };
@@ -10,93 +10,91 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const READINESS_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- ready: { type: 'boolean' },
18
- blockers: { type: 'array', items: { type: 'string' } },
19
- warnings: { type: 'array', items: { type: 'string' } },
20
- testSummary: { type: 'string' },
21
- },
22
- required: ['ready', 'blockers', 'warnings', 'testSummary'],
23
- };
13
+ const READINESS_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ ready: { type: 'boolean' },
17
+ blockers: { type: 'array', items: { type: 'string' } },
18
+ warnings: { type: 'array', items: { type: 'string' } },
19
+ testSummary: { type: 'string' },
20
+ },
21
+ required: ['ready', 'blockers', 'warnings', 'testSummary'],
22
+ };
24
23
 
25
- const CHANGELOG_SCHEMA = {
26
- type: 'object',
27
- properties: {
28
- breaking: { type: 'array', items: { type: 'string' } },
29
- features: { type: 'array', items: { type: 'string' } },
30
- fixes: { type: 'array', items: { type: 'string' } },
31
- chores: { type: 'array', items: { type: 'string' } },
32
- highlights: { type: 'string' },
33
- },
34
- required: ['breaking', 'features', 'fixes', 'chores', 'highlights'],
35
- };
24
+ const CHANGELOG_SCHEMA = {
25
+ type: 'object',
26
+ properties: {
27
+ breaking: { type: 'array', items: { type: 'string' } },
28
+ features: { type: 'array', items: { type: 'string' } },
29
+ fixes: { type: 'array', items: { type: 'string' } },
30
+ chores: { type: 'array', items: { type: 'string' } },
31
+ highlights: { type: 'string' },
32
+ },
33
+ required: ['breaking', 'features', 'fixes', 'chores', 'highlights'],
34
+ };
36
35
 
37
- const VERSION_SCHEMA = {
38
- type: 'object',
39
- properties: {
40
- current: { type: 'string' },
41
- next: { type: 'string' },
42
- bumpType: { type: 'string', enum: ['major', 'minor', 'patch'] },
43
- rationale: { type: 'string' },
44
- filesToUpdate: { type: 'array', items: { type: 'string' } },
45
- },
46
- required: ['current', 'next', 'bumpType', 'rationale', 'filesToUpdate'],
47
- };
36
+ const VERSION_SCHEMA = {
37
+ type: 'object',
38
+ properties: {
39
+ current: { type: 'string' },
40
+ next: { type: 'string' },
41
+ bumpType: { type: 'string', enum: ['major', 'minor', 'patch'] },
42
+ rationale: { type: 'string' },
43
+ filesToUpdate: { type: 'array', items: { type: 'string' } },
44
+ },
45
+ required: ['current', 'next', 'bumpType', 'rationale', 'filesToUpdate'],
46
+ };
48
47
 
49
- const PR_SCHEMA = {
50
- type: 'object',
51
- properties: {
52
- prTitle: { type: 'string' },
53
- prBody: { type: 'string' },
54
- announcementDraft: { type: 'string' },
55
- releaseNotes: { type: 'string' },
56
- },
57
- required: ['prTitle', 'prBody', 'announcementDraft', 'releaseNotes'],
58
- };
48
+ const PR_SCHEMA = {
49
+ type: 'object',
50
+ properties: {
51
+ prTitle: { type: 'string' },
52
+ prBody: { type: 'string' },
53
+ announcementDraft: { type: 'string' },
54
+ releaseNotes: { type: 'string' },
55
+ },
56
+ required: ['prTitle', 'prBody', 'announcementDraft', 'releaseNotes'],
57
+ };
59
58
 
60
- const context = args || 'current repository (run from repo root)';
59
+ const context = args || 'current repository (run from repo root)';
61
60
 
62
- phase('Check');
63
- log(`Preparing release for: ${context}`);
64
- const readiness = await agent(
65
- `Check release readiness for: "${context}"\n\nVerify: are there uncommitted changes? Any failing tests? Any security vulnerabilities in dependencies? Any open critical bugs that should block release? List any blockers and warnings.`,
66
- { schema: READINESS_SCHEMA, label: 'check' }
67
- );
68
- if (!readiness.ready && readiness.blockers.length > 0) {
69
- log(`BLOCKED: ${readiness.blockers.join(', ')}`);
70
- }
71
- log(`Readiness: ${readiness.ready ? 'GO' : 'BLOCKED'} — ${readiness.blockers.length} blockers, ${readiness.warnings.length} warnings`);
61
+ phase('Check');
62
+ log(`Preparing release for: ${context}`);
63
+ const readiness = await agent(
64
+ `Check release readiness for: "${context}"\n\nVerify: are there uncommitted changes? Any failing tests? Any security vulnerabilities in dependencies? Any open critical bugs that should block release? List any blockers and warnings.`,
65
+ { schema: READINESS_SCHEMA, label: 'check' }
66
+ );
67
+ if (!readiness.ready && readiness.blockers.length > 0) {
68
+ log(`BLOCKED: ${readiness.blockers.join(', ')}`);
69
+ }
70
+ log(`Readiness: ${readiness.ready ? 'GO' : 'BLOCKED'} — ${readiness.blockers.length} blockers, ${readiness.warnings.length} warnings`);
72
71
 
73
- phase('Changelog');
74
- const changelog = await agent(
75
- `Generate a changelog for this release of: "${context}"\n\nAnalyze recent commits (look for conventional commit format: feat/fix/chore/refactor/docs/test/perf/ci). Separate into: breaking changes, new features, bug fixes, chores. Write a highlights summary (2-3 sentences).`,
76
- { schema: CHANGELOG_SCHEMA, label: 'changelog' }
77
- );
78
- log(`Changelog: ${changelog.breaking.length} breaking, ${changelog.features.length} features, ${changelog.fixes.length} fixes`);
72
+ phase('Changelog');
73
+ const changelog = await agent(
74
+ `Generate a changelog for this release of: "${context}"\n\nAnalyze recent commits (look for conventional commit format: feat/fix/chore/refactor/docs/test/perf/ci). Separate into: breaking changes, new features, bug fixes, chores. Write a highlights summary (2-3 sentences).`,
75
+ { schema: CHANGELOG_SCHEMA, label: 'changelog' }
76
+ );
77
+ log(`Changelog: ${changelog.breaking.length} breaking, ${changelog.features.length} features, ${changelog.fixes.length} fixes`);
79
78
 
80
- phase('Bump');
81
- const changelogSummary = `Breaking: ${changelog.breaking.length}, Features: ${changelog.features.length}, Fixes: ${changelog.fixes.length}`;
82
- const version = await agent(
83
- `Determine the next semantic version for: "${context}"\nChanges: ${changelogSummary}\nHighlights: ${changelog.highlights}\n\nUse semver rules: breaking change = major bump, new features = minor bump, fixes only = patch bump. List all files that need version updated.`,
84
- { schema: VERSION_SCHEMA, label: 'bump' }
85
- );
86
- log(`Version: ${version.current} → ${version.next} (${version.bumpType})`);
79
+ phase('Bump');
80
+ const changelogSummary = `Breaking: ${changelog.breaking.length}, Features: ${changelog.features.length}, Fixes: ${changelog.fixes.length}`;
81
+ const version = await agent(
82
+ `Determine the next semantic version for: "${context}"\nChanges: ${changelogSummary}\nHighlights: ${changelog.highlights}\n\nUse semver rules: breaking change = major bump, new features = minor bump, fixes only = patch bump. List all files that need version updated.`,
83
+ { schema: VERSION_SCHEMA, label: 'bump' }
84
+ );
85
+ log(`Version: ${version.current} → ${version.next} (${version.bumpType})`);
87
86
 
88
- phase('PR');
89
- const releaseContext = `Version: ${version.current} → ${version.next}\nHighlights: ${changelog.highlights}\nFeatures: ${changelog.features.slice(0, 5).join(', ')}\nFixes: ${changelog.fixes.slice(0, 5).join(', ')}`;
90
- const pr = await agent(
91
- `Draft the release PR and announcement for: "${context}"\n${releaseContext}\n\nWrite: a PR title and body (markdown), a 280-char social announcement draft, and full release notes (markdown, suitable for GitHub Releases).`,
92
- { schema: PR_SCHEMA, label: 'pr' }
93
- );
87
+ phase('PR');
88
+ const releaseContext = `Version: ${version.current} → ${version.next}\nHighlights: ${changelog.highlights}\nFeatures: ${changelog.features.slice(0, 5).join(', ')}\nFixes: ${changelog.fixes.slice(0, 5).join(', ')}`;
89
+ const pr = await agent(
90
+ `Draft the release PR and announcement for: "${context}"\n${releaseContext}\n\nWrite: a PR title and body (markdown), a 280-char social announcement draft, and full release notes (markdown, suitable for GitHub Releases).`,
91
+ { schema: PR_SCHEMA, label: 'pr' }
92
+ );
94
93
 
95
- return {
96
- context,
97
- readiness,
98
- changelog,
99
- version,
100
- pr,
101
- };
102
- }
94
+ return {
95
+ context,
96
+ readiness,
97
+ changelog,
98
+ version,
99
+ pr,
100
+ };