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,104 +10,102 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const DIFF_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- changes: {
18
- type: 'array',
19
- items: {
20
- type: 'object',
21
- properties: {
22
- type: { type: 'string', enum: ['add_table', 'drop_table', 'add_column', 'drop_column', 'change_type', 'add_index', 'drop_index', 'add_constraint', 'drop_constraint'] },
23
- table: { type: 'string' },
24
- column: { type: 'string' },
25
- from: { type: 'string' },
26
- to: { type: 'string' },
27
- notes: { type: 'string' },
28
- },
29
- required: ['type', 'table'],
13
+ const DIFF_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ changes: {
17
+ type: 'array',
18
+ items: {
19
+ type: 'object',
20
+ properties: {
21
+ type: { type: 'string', enum: ['add_table', 'drop_table', 'add_column', 'drop_column', 'change_type', 'add_index', 'drop_index', 'add_constraint', 'drop_constraint'] },
22
+ table: { type: 'string' },
23
+ column: { type: 'string' },
24
+ from: { type: 'string' },
25
+ to: { type: 'string' },
26
+ notes: { type: 'string' },
30
27
  },
28
+ required: ['type', 'table'],
31
29
  },
32
- database: { type: 'string' },
33
30
  },
34
- required: ['changes', 'database'],
35
- };
31
+ database: { type: 'string' },
32
+ },
33
+ required: ['changes', 'database'],
34
+ };
36
35
 
37
- const RISK_SCHEMA = {
38
- type: 'object',
39
- properties: {
40
- overallRisk: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
41
- risks: {
42
- type: 'array',
43
- items: {
44
- type: 'object',
45
- properties: {
46
- change: { type: 'string' },
47
- risk: { type: 'string' },
48
- severity: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
49
- mitigation: { type: 'string' },
50
- },
51
- required: ['change', 'risk', 'severity', 'mitigation'],
36
+ const RISK_SCHEMA = {
37
+ type: 'object',
38
+ properties: {
39
+ overallRisk: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
40
+ risks: {
41
+ type: 'array',
42
+ items: {
43
+ type: 'object',
44
+ properties: {
45
+ change: { type: 'string' },
46
+ risk: { type: 'string' },
47
+ severity: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
48
+ mitigation: { type: 'string' },
52
49
  },
50
+ required: ['change', 'risk', 'severity', 'mitigation'],
53
51
  },
54
- requiresMaintenanceWindow: { type: 'boolean' },
55
- estimatedLockDuration: { type: 'string' },
56
52
  },
57
- required: ['overallRisk', 'risks', 'requiresMaintenanceWindow'],
58
- };
53
+ requiresMaintenanceWindow: { type: 'boolean' },
54
+ estimatedLockDuration: { type: 'string' },
55
+ },
56
+ required: ['overallRisk', 'risks', 'requiresMaintenanceWindow'],
57
+ };
59
58
 
60
- const SCRIPTS_SCHEMA = {
61
- type: 'object',
62
- properties: {
63
- forwardMigration: { type: 'string' },
64
- rollbackMigration: { type: 'string' },
65
- verificationQueries: { type: 'array', items: { type: 'string' } },
66
- },
67
- required: ['forwardMigration', 'rollbackMigration', 'verificationQueries'],
68
- };
59
+ const SCRIPTS_SCHEMA = {
60
+ type: 'object',
61
+ properties: {
62
+ forwardMigration: { type: 'string' },
63
+ rollbackMigration: { type: 'string' },
64
+ verificationQueries: { type: 'array', items: { type: 'string' } },
65
+ },
66
+ required: ['forwardMigration', 'rollbackMigration', 'verificationQueries'],
67
+ };
69
68
 
70
- const RUNBOOK_SCHEMA = {
71
- type: 'object',
72
- properties: {
73
- preChecks: { type: 'array', items: { type: 'string' } },
74
- steps: { type: 'array', items: { type: 'object', properties: { step: { type: 'number' }, action: { type: 'string' }, command: { type: 'string' }, rollbackIf: { type: 'string' } }, required: ['step', 'action'] } },
75
- postChecks: { type: 'array', items: { type: 'string' } },
76
- rollbackProcedure: { type: 'string' },
77
- },
78
- required: ['preChecks', 'steps', 'postChecks', 'rollbackProcedure'],
79
- };
69
+ const RUNBOOK_SCHEMA = {
70
+ type: 'object',
71
+ properties: {
72
+ preChecks: { type: 'array', items: { type: 'string' } },
73
+ steps: { type: 'array', items: { type: 'object', properties: { step: { type: 'number' }, action: { type: 'string' }, command: { type: 'string' }, rollbackIf: { type: 'string' } }, required: ['step', 'action'] } },
74
+ postChecks: { type: 'array', items: { type: 'string' } },
75
+ rollbackProcedure: { type: 'string' },
76
+ },
77
+ required: ['preChecks', 'steps', 'postChecks', 'rollbackProcedure'],
78
+ };
80
79
 
81
- const target = args || 'current migration files (provide schema diff or migration directory as args)';
80
+ const target = args || 'current migration files (provide schema diff or migration directory as args)';
82
81
 
83
- phase('SchemaDiff');
84
- log(`Analyzing schema migration for: ${target}`);
85
- const diff = await agent(
86
- `Parse the database schema migration in: "${target}". Identify all schema changes: tables added/dropped, columns added/dropped/renamed, type changes, index changes, constraint changes. Identify the database type (PostgreSQL, MySQL, SQLite, etc.).`,
87
- { schema: DIFF_SCHEMA, label: 'schema-diff' }
88
- );
89
- if (!diff) { log('Warning: agent returned null for diff, skipping'); return { target, error: 'agent-null' }; }
90
- log(`${diff.changes.length} schema changes in ${diff.database}`);
82
+ phase('SchemaDiff');
83
+ log(`Analyzing schema migration for: ${target}`);
84
+ const diff = await agent(
85
+ `Parse the database schema migration in: "${target}". Identify all schema changes: tables added/dropped, columns added/dropped/renamed, type changes, index changes, constraint changes. Identify the database type (PostgreSQL, MySQL, SQLite, etc.).`,
86
+ { schema: DIFF_SCHEMA, label: 'schema-diff' }
87
+ );
88
+ if (!diff) { log('Warning: agent returned null for diff, skipping'); return { target, error: 'agent-null' }; }
89
+ log(`${diff.changes.length} schema changes in ${diff.database}`);
91
90
 
92
- phase('RiskAnalysis');
93
- const [risks, scripts] = await parallel([
94
- () => agent(
95
- `Assess the production risk of this database migration on ${diff.database}: ${diff.changes.map(c => `${c.type} on ${c.table}${c.column ? '.' + c.column : ''}`).join(', ')}. For each change identify: data loss risk, lock duration, rollback complexity. Does this require a maintenance window? What's the overall risk level?`,
96
- { schema: RISK_SCHEMA, label: 'risk-analysis', phase: 'RiskAnalysis' }
97
- ),
98
- () => agent(
99
- `Generate migration scripts for ${diff.database} with these changes: ${diff.changes.map(c => `${c.type} on ${c.table}`).join(', ')}. Write: (1) forward migration SQL, (2) rollback SQL that fully reverses the changes, (3) verification queries to confirm success. Use safe patterns: IF NOT EXISTS, transactions, backfill before NOT NULL, etc.`,
100
- { schema: SCRIPTS_SCHEMA, label: 'scripts', phase: 'RiskAnalysis' }
101
- ),
102
- ]);
91
+ phase('RiskAnalysis');
92
+ const [risks, scripts] = await parallel([
93
+ () => agent(
94
+ `Assess the production risk of this database migration on ${diff.database}: ${diff.changes.map(c => `${c.type} on ${c.table}${c.column ? '.' + c.column : ''}`).join(', ')}. For each change identify: data loss risk, lock duration, rollback complexity. Does this require a maintenance window? What's the overall risk level?`,
95
+ { schema: RISK_SCHEMA, label: 'risk-analysis', phase: 'RiskAnalysis' }
96
+ ),
97
+ () => agent(
98
+ `Generate migration scripts for ${diff.database} with these changes: ${diff.changes.map(c => `${c.type} on ${c.table}`).join(', ')}. Write: (1) forward migration SQL, (2) rollback SQL that fully reverses the changes, (3) verification queries to confirm success. Use safe patterns: IF NOT EXISTS, transactions, backfill before NOT NULL, etc.`,
99
+ { schema: SCRIPTS_SCHEMA, label: 'scripts', phase: 'RiskAnalysis' }
100
+ ),
101
+ ]);
103
102
 
104
- if (!risks) { log('Warning: agent returned null for risks, skipping'); return { target, diff, error: 'agent-null' }; }
105
- phase('Runbook');
106
- const runbook = await agent(
107
- `Create a production deployment runbook for this ${diff.database} migration.\n\nChanges: ${diff.changes.map(c => `${c.type} on ${c.table}`).join(', ')}\nRisk: ${risks.overallRisk} — maintenance window required: ${risks.requiresMaintenanceWindow}\nTop risks: ${risks.risks.slice(0, 3).map(r => r.risk).join(', ')}\n\nInclude: pre-migration checks, numbered execution steps with exact commands and rollback conditions per step, post-migration verification, and complete rollback procedure.`,
108
- { schema: RUNBOOK_SCHEMA, label: 'runbook' }
109
- );
110
- if (!runbook) { return { target, diff, risks, scripts, error: 'runbook-agent-null' }; }
103
+ if (!risks) { log('Warning: agent returned null for risks, skipping'); return { target, diff, error: 'agent-null' }; }
104
+ phase('Runbook');
105
+ const runbook = await agent(
106
+ `Create a production deployment runbook for this ${diff.database} migration.\n\nChanges: ${diff.changes.map(c => `${c.type} on ${c.table}`).join(', ')}\nRisk: ${risks.overallRisk} — maintenance window required: ${risks.requiresMaintenanceWindow}\nTop risks: ${risks.risks.slice(0, 3).map(r => r.risk).join(', ')}\n\nInclude: pre-migration checks, numbered execution steps with exact commands and rollback conditions per step, post-migration verification, and complete rollback procedure.`,
107
+ { schema: RUNBOOK_SCHEMA, label: 'runbook' }
108
+ );
109
+ if (!runbook) { return { target, diff, risks, scripts, error: 'runbook-agent-null' }; }
111
110
 
112
- return { target, diff, risks, scripts, runbook };
113
- }
111
+ return { target, diff, risks, scripts, runbook };
@@ -11,114 +11,112 @@ export const meta = {
11
11
  ],
12
12
  };
13
13
 
14
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
15
- const INTAKE_SCHEMA = {
16
- type: 'object',
17
- properties: {
18
- bugSummary: { type: 'string' },
19
- symptoms: { type: 'array', items: { type: 'string' } },
20
- reproducible: { type: 'boolean' },
21
- affectedComponents: { type: 'array', items: { type: 'string' } },
22
- recentChanges: { type: 'array', items: { type: 'string' } },
23
- environment: { type: 'string' },
24
- },
25
- required: ['bugSummary', 'symptoms', 'affectedComponents'],
26
- };
14
+ const INTAKE_SCHEMA = {
15
+ type: 'object',
16
+ properties: {
17
+ bugSummary: { type: 'string' },
18
+ symptoms: { type: 'array', items: { type: 'string' } },
19
+ reproducible: { type: 'boolean' },
20
+ affectedComponents: { type: 'array', items: { type: 'string' } },
21
+ recentChanges: { type: 'array', items: { type: 'string' } },
22
+ environment: { type: 'string' },
23
+ },
24
+ required: ['bugSummary', 'symptoms', 'affectedComponents'],
25
+ };
27
26
 
28
- const HYPOTHESIS_SCHEMA = {
29
- type: 'object',
30
- properties: {
31
- angle: { type: 'string' },
32
- hypothesis: { type: 'string' },
33
- reasoning: { type: 'string' },
34
- evidenceNeeded: { type: 'array', items: { type: 'string' } },
35
- probability: { type: 'string', enum: ['high', 'medium', 'low'] },
36
- },
37
- required: ['angle', 'hypothesis', 'reasoning', 'evidenceNeeded', 'probability'],
38
- };
27
+ const HYPOTHESIS_SCHEMA = {
28
+ type: 'object',
29
+ properties: {
30
+ angle: { type: 'string' },
31
+ hypothesis: { type: 'string' },
32
+ reasoning: { type: 'string' },
33
+ evidenceNeeded: { type: 'array', items: { type: 'string' } },
34
+ probability: { type: 'string', enum: ['high', 'medium', 'low'] },
35
+ },
36
+ required: ['angle', 'hypothesis', 'reasoning', 'evidenceNeeded', 'probability'],
37
+ };
39
38
 
40
- const EVIDENCE_SCHEMA = {
41
- type: 'object',
42
- properties: {
43
- hypothesis: { type: 'string' },
44
- supportingEvidence: { type: 'array', items: { type: 'string' } },
45
- refutingEvidence: { type: 'array', items: { type: 'string' } },
46
- verdict: { type: 'string', enum: ['strongly-supported', 'weakly-supported', 'inconclusive', 'refuted'] },
47
- confidence: { type: 'number' },
48
- },
49
- required: ['hypothesis', 'supportingEvidence', 'refutingEvidence', 'verdict', 'confidence'],
50
- };
39
+ const EVIDENCE_SCHEMA = {
40
+ type: 'object',
41
+ properties: {
42
+ hypothesis: { type: 'string' },
43
+ supportingEvidence: { type: 'array', items: { type: 'string' } },
44
+ refutingEvidence: { type: 'array', items: { type: 'string' } },
45
+ verdict: { type: 'string', enum: ['strongly-supported', 'weakly-supported', 'inconclusive', 'refuted'] },
46
+ confidence: { type: 'number' },
47
+ },
48
+ required: ['hypothesis', 'supportingEvidence', 'refutingEvidence', 'verdict', 'confidence'],
49
+ };
51
50
 
52
- const RCA_SCHEMA = {
53
- type: 'object',
54
- properties: {
55
- rootCause: { type: 'string' },
56
- causalChain: { type: 'array', items: { type: 'string' } },
57
- contributingFactors: { type: 'array', items: { type: 'string' } },
58
- whyNowExplanation: { type: 'string' },
59
- confidence: { type: 'string', enum: ['high', 'medium', 'low'] },
60
- },
61
- required: ['rootCause', 'causalChain', 'confidence'],
62
- };
51
+ const RCA_SCHEMA = {
52
+ type: 'object',
53
+ properties: {
54
+ rootCause: { type: 'string' },
55
+ causalChain: { type: 'array', items: { type: 'string' } },
56
+ contributingFactors: { type: 'array', items: { type: 'string' } },
57
+ whyNowExplanation: { type: 'string' },
58
+ confidence: { type: 'string', enum: ['high', 'medium', 'low'] },
59
+ },
60
+ required: ['rootCause', 'causalChain', 'confidence'],
61
+ };
63
62
 
64
- const FIX_SCHEMA = {
65
- type: 'object',
66
- properties: {
67
- fixDescription: { type: 'string' },
68
- filestoChange: { type: 'array', items: { type: 'string' } },
69
- implementationSteps: { type: 'array', items: { type: 'string' } },
70
- regressionTestSpec: { type: 'string' },
71
- riskOfFix: { type: 'string', enum: ['low', 'medium', 'high'] },
72
- },
73
- required: ['fixDescription', 'implementationSteps', 'regressionTestSpec'],
74
- };
63
+ const FIX_SCHEMA = {
64
+ type: 'object',
65
+ properties: {
66
+ fixDescription: { type: 'string' },
67
+ filestoChange: { type: 'array', items: { type: 'string' } },
68
+ implementationSteps: { type: 'array', items: { type: 'string' } },
69
+ regressionTestSpec: { type: 'string' },
70
+ riskOfFix: { type: 'string', enum: ['low', 'medium', 'high'] },
71
+ },
72
+ required: ['fixDescription', 'implementationSteps', 'regressionTestSpec'],
73
+ };
75
74
 
76
- const bugReport = args || 'No bug report provided — describe the bug, symptoms, and context in args.';
75
+ const bugReport = args || 'No bug report provided — describe the bug, symptoms, and context in args.';
77
76
 
78
- phase('Intake');
79
- log(`Analyzing bug report: ${bugReport.slice(0, 80)}`);
80
- const intake = await agent(
81
- `Analyze this bug report and extract structured information: "${bugReport}"\n\nIdentify: bug summary, specific symptoms observed, whether reproducible, affected components/files, any recent changes that might be related, and environment (prod/staging/dev, OS, browser, etc.).`,
82
- { schema: INTAKE_SCHEMA, label: 'intake' }
83
- );
84
- if (!intake) { log('Warning: agent returned null for intake, skipping'); return { bugReport, error: 'agent-null' }; }
85
- log(`Bug: ${intake.bugSummary} | Affects: ${intake.affectedComponents.join(', ')}`);
77
+ phase('Intake');
78
+ log(`Analyzing bug report: ${bugReport.slice(0, 80)}`);
79
+ const intake = await agent(
80
+ `Analyze this bug report and extract structured information: "${bugReport}"\n\nIdentify: bug summary, specific symptoms observed, whether reproducible, affected components/files, any recent changes that might be related, and environment (prod/staging/dev, OS, browser, etc.).`,
81
+ { schema: INTAKE_SCHEMA, label: 'intake' }
82
+ );
83
+ if (!intake) { log('Warning: agent returned null for intake, skipping'); return { bugReport, error: 'agent-null' }; }
84
+ log(`Bug: ${intake.bugSummary} | Affects: ${intake.affectedComponents.join(', ')}`);
86
85
 
87
- phase('Hypothesize');
88
- const context = `Bug: ${intake.bugSummary}\nSymptoms: ${intake.symptoms.join(', ')}\nAffected: ${intake.affectedComponents.join(', ')}\nRecent changes: ${(intake.recentChanges || []).join(', ')}`;
89
- const hypotheses = await parallel([
90
- () => agent(`Generate a hypothesis from a CODE perspective for this bug: ${context}\n\nFocus on: logic errors, off-by-one, null/undefined handling, async/await issues, type coercion. What specific code defect could cause these symptoms?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-code', phase: 'Hypothesize' }),
91
- () => agent(`Generate a hypothesis from a STATE/DATA perspective for this bug: ${context}\n\nFocus on: database state corruption, stale cache, race condition, shared mutable state, session/cookie issues. What data or state problem could cause these symptoms?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-state', phase: 'Hypothesize' }),
92
- () => agent(`Generate a hypothesis from an INTEGRATION/ENVIRONMENT perspective for this bug: ${context}\n\nFocus on: API contract mismatch, network timeout, environment variable, dependency version conflict, OS/browser differences. What external factor could cause these symptoms?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-integration', phase: 'Hypothesize' }),
93
- () => agent(`Generate a hypothesis from a REGRESSION perspective for this bug: ${context}\n\nFocus on: what recent change (deploy, config, dependency update) most likely introduced this. Which commit or change is the prime suspect?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-regression', phase: 'Hypothesize' }),
94
- ]);
86
+ phase('Hypothesize');
87
+ const context = `Bug: ${intake.bugSummary}\nSymptoms: ${intake.symptoms.join(', ')}\nAffected: ${intake.affectedComponents.join(', ')}\nRecent changes: ${(intake.recentChanges || []).join(', ')}`;
88
+ const hypotheses = await parallel([
89
+ () => agent(`Generate a hypothesis from a CODE perspective for this bug: ${context}\n\nFocus on: logic errors, off-by-one, null/undefined handling, async/await issues, type coercion. What specific code defect could cause these symptoms?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-code', phase: 'Hypothesize' }),
90
+ () => agent(`Generate a hypothesis from a STATE/DATA perspective for this bug: ${context}\n\nFocus on: database state corruption, stale cache, race condition, shared mutable state, session/cookie issues. What data or state problem could cause these symptoms?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-state', phase: 'Hypothesize' }),
91
+ () => agent(`Generate a hypothesis from an INTEGRATION/ENVIRONMENT perspective for this bug: ${context}\n\nFocus on: API contract mismatch, network timeout, environment variable, dependency version conflict, OS/browser differences. What external factor could cause these symptoms?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-integration', phase: 'Hypothesize' }),
92
+ () => agent(`Generate a hypothesis from a REGRESSION perspective for this bug: ${context}\n\nFocus on: what recent change (deploy, config, dependency update) most likely introduced this. Which commit or change is the prime suspect?`, { schema: HYPOTHESIS_SCHEMA, label: 'hypothesis-regression', phase: 'Hypothesize' }),
93
+ ]);
95
94
 
96
- phase('Evidence');
97
- const validHypotheses = hypotheses.filter(Boolean);
98
- log(`${validHypotheses.length} hypotheses — gathering evidence in parallel`);
95
+ phase('Evidence');
96
+ const validHypotheses = hypotheses.filter(Boolean);
97
+ log(`${validHypotheses.length} hypotheses — gathering evidence in parallel`);
99
98
 
100
- const evidence = await parallel(
101
- validHypotheses.map(h => () => agent(
102
- `Gather evidence for or against this hypothesis about the bug "${intake.bugSummary}":\n\nHypothesis: ${h.hypothesis}\nEvidence needed: ${h.evidenceNeeded.join(', ')}\n\nLook in the codebase for: ${h.evidenceNeeded.join(', ')}. Report what you find that supports OR refutes this hypothesis. Rate your verdict.`,
103
- { schema: EVIDENCE_SCHEMA, label: `evidence:${h.angle.slice(0, 20)}`, phase: 'Evidence' }
104
- ))
105
- );
99
+ const evidence = await parallel(
100
+ validHypotheses.map(h => () => agent(
101
+ `Gather evidence for or against this hypothesis about the bug "${intake.bugSummary}":\n\nHypothesis: ${h.hypothesis}\nEvidence needed: ${h.evidenceNeeded.join(', ')}\n\nLook in the codebase for: ${h.evidenceNeeded.join(', ')}. Report what you find that supports OR refutes this hypothesis. Rate your verdict.`,
102
+ { schema: EVIDENCE_SCHEMA, label: `evidence:${h.angle.slice(0, 20)}`, phase: 'Evidence' }
103
+ ))
104
+ );
106
105
 
107
- phase('RCA');
108
- const evidenceSummary = evidence.filter(Boolean).map(e => `${e.hypothesis}: ${e.verdict} (${e.confidence}%) — supports: [${e.supportingEvidence.slice(0, 2).join(', ')}] refutes: [${e.refutingEvidence.slice(0, 1).join(', ')}]`).join('\n');
109
- const rca = await agent(
110
- `Perform a scientific root cause analysis for: "${intake.bugSummary}"\n\nEvidence summary:\n${evidenceSummary}\n\nIdentify the root cause (the specific defect that, if fixed, would prevent the bug), the causal chain (how root cause leads to symptoms), contributing factors, and why it appeared now. Rate your confidence.`,
111
- { schema: RCA_SCHEMA, label: 'rca' }
112
- );
113
- if (!rca) { log('Warning: agent returned null for rca, skipping'); return { bugReport, intake, hypotheses: validHypotheses, evidence: evidence.filter(Boolean), error: 'agent-null' }; }
114
- log(`RCA: ${rca.rootCause.slice(0, 80)} (confidence: ${rca.confidence})`);
106
+ phase('RCA');
107
+ const evidenceSummary = evidence.filter(Boolean).map(e => `${e.hypothesis}: ${e.verdict} (${e.confidence}%) — supports: [${e.supportingEvidence.slice(0, 2).join(', ')}] refutes: [${e.refutingEvidence.slice(0, 1).join(', ')}]`).join('\n');
108
+ const rca = await agent(
109
+ `Perform a scientific root cause analysis for: "${intake.bugSummary}"\n\nEvidence summary:\n${evidenceSummary}\n\nIdentify the root cause (the specific defect that, if fixed, would prevent the bug), the causal chain (how root cause leads to symptoms), contributing factors, and why it appeared now. Rate your confidence.`,
110
+ { schema: RCA_SCHEMA, label: 'rca' }
111
+ );
112
+ if (!rca) { log('Warning: agent returned null for rca, skipping'); return { bugReport, intake, hypotheses: validHypotheses, evidence: evidence.filter(Boolean), error: 'agent-null' }; }
113
+ log(`RCA: ${rca.rootCause.slice(0, 80)} (confidence: ${rca.confidence})`);
115
114
 
116
- phase('Fix');
117
- const fix = await agent(
118
- `Design a targeted fix for this bug.\n\nRoot cause: ${rca.rootCause}\nCausal chain: ${rca.causalChain.join(' → ')}\nAffected components: ${intake.affectedComponents.join(', ')}\n\nProvide: exact fix description, which files to change, step-by-step implementation, a regression test specification that would catch this bug if reintroduced, and risk assessment of the fix.`,
119
- { schema: FIX_SCHEMA, label: 'fix' }
120
- );
121
- if (!fix) { log('Warning: agent returned null for fix, skipping'); return { bugReport, intake, hypotheses: validHypotheses, evidence: evidence.filter(Boolean), rca, error: 'agent-null' }; }
115
+ phase('Fix');
116
+ const fix = await agent(
117
+ `Design a targeted fix for this bug.\n\nRoot cause: ${rca.rootCause}\nCausal chain: ${rca.causalChain.join(' → ')}\nAffected components: ${intake.affectedComponents.join(', ')}\n\nProvide: exact fix description, which files to change, step-by-step implementation, a regression test specification that would catch this bug if reintroduced, and risk assessment of the fix.`,
118
+ { schema: FIX_SCHEMA, label: 'fix' }
119
+ );
120
+ if (!fix) { log('Warning: agent returned null for fix, skipping'); return { bugReport, intake, hypotheses: validHypotheses, evidence: evidence.filter(Boolean), rca, error: 'agent-null' }; }
122
121
 
123
- return { bugReport, intake, hypotheses: validHypotheses, evidence: evidence.filter(Boolean), rca, fix };
124
- }
122
+ return { bugReport, intake, hypotheses: validHypotheses, evidence: evidence.filter(Boolean), rca, fix };
@@ -10,101 +10,99 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const INVENTORY_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- dependencies: {
18
- type: 'array',
19
- items: {
20
- type: 'object',
21
- properties: {
22
- name: { type: 'string' },
23
- version: { type: 'string' },
24
- type: { type: 'string', enum: ['prod', 'dev', 'peer', 'optional'] },
25
- },
26
- required: ['name', 'version', 'type'],
13
+ const INVENTORY_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ dependencies: {
17
+ type: 'array',
18
+ items: {
19
+ type: 'object',
20
+ properties: {
21
+ name: { type: 'string' },
22
+ version: { type: 'string' },
23
+ type: { type: 'string', enum: ['prod', 'dev', 'peer', 'optional'] },
27
24
  },
25
+ required: ['name', 'version', 'type'],
28
26
  },
29
- packageManager: { type: 'string' },
30
27
  },
31
- required: ['dependencies', 'packageManager'],
32
- };
28
+ packageManager: { type: 'string' },
29
+ },
30
+ required: ['dependencies', 'packageManager'],
31
+ };
33
32
 
34
- const BATCH_SCHEMA = {
35
- type: 'object',
36
- properties: {
37
- audits: {
38
- type: 'array',
39
- items: {
40
- type: 'object',
41
- properties: {
42
- name: { type: 'string' },
43
- cveRisk: { type: 'string', enum: ['critical', 'high', 'medium', 'low', 'none'] },
44
- licenseRisk: { type: 'string', enum: ['copyleft', 'permissive', 'unknown', 'proprietary'] },
45
- staleness: { type: 'string', enum: ['current', 'minor-behind', 'major-behind', 'abandoned'] },
46
- maintenanceStatus: { type: 'string', enum: ['active', 'slow', 'stale', 'archived', 'unknown'] },
47
- recommendation: { type: 'string', enum: ['upgrade', 'replace', 'accept', 'remove'] },
48
- notes: { type: 'string' },
49
- },
50
- required: ['name', 'cveRisk', 'licenseRisk', 'staleness', 'maintenanceStatus', 'recommendation'],
33
+ const BATCH_SCHEMA = {
34
+ type: 'object',
35
+ properties: {
36
+ audits: {
37
+ type: 'array',
38
+ items: {
39
+ type: 'object',
40
+ properties: {
41
+ name: { type: 'string' },
42
+ cveRisk: { type: 'string', enum: ['critical', 'high', 'medium', 'low', 'none'] },
43
+ licenseRisk: { type: 'string', enum: ['copyleft', 'permissive', 'unknown', 'proprietary'] },
44
+ staleness: { type: 'string', enum: ['current', 'minor-behind', 'major-behind', 'abandoned'] },
45
+ maintenanceStatus: { type: 'string', enum: ['active', 'slow', 'stale', 'archived', 'unknown'] },
46
+ recommendation: { type: 'string', enum: ['upgrade', 'replace', 'accept', 'remove'] },
47
+ notes: { type: 'string' },
51
48
  },
49
+ required: ['name', 'cveRisk', 'licenseRisk', 'staleness', 'maintenanceStatus', 'recommendation'],
52
50
  },
53
51
  },
54
- required: ['audits'],
55
- };
52
+ },
53
+ required: ['audits'],
54
+ };
56
55
 
57
- const ACTION_SCHEMA = {
58
- type: 'object',
59
- properties: {
60
- summary: { type: 'string' },
61
- immediateUpgrades: { type: 'array', items: { type: 'string' } },
62
- replaceWithAlternatives: { type: 'array', items: { type: 'object', properties: { current: { type: 'string' }, replacement: { type: 'string' }, reason: { type: 'string' } }, required: ['current', 'replacement', 'reason'] } },
63
- acceptableRisks: { type: 'array', items: { type: 'string' } },
64
- licenseIssues: { type: 'array', items: { type: 'string' } },
65
- },
66
- required: ['summary', 'immediateUpgrades', 'replaceWithAlternatives', 'acceptableRisks'],
67
- };
56
+ const ACTION_SCHEMA = {
57
+ type: 'object',
58
+ properties: {
59
+ summary: { type: 'string' },
60
+ immediateUpgrades: { type: 'array', items: { type: 'string' } },
61
+ replaceWithAlternatives: { type: 'array', items: { type: 'object', properties: { current: { type: 'string' }, replacement: { type: 'string' }, reason: { type: 'string' } }, required: ['current', 'replacement', 'reason'] } },
62
+ acceptableRisks: { type: 'array', items: { type: 'string' } },
63
+ licenseIssues: { type: 'array', items: { type: 'string' } },
64
+ },
65
+ required: ['summary', 'immediateUpgrades', 'replaceWithAlternatives', 'acceptableRisks'],
66
+ };
68
67
 
69
- const target = args || 'current project (run from repo root)';
68
+ const target = args || 'current project (run from repo root)';
70
69
 
71
- phase('Inventory');
72
- log(`Inventorying dependencies in: ${target}`);
73
- const inventory = await agent(
74
- `Extract the complete dependency list from package manifests in: "${target}". Look for package.json, requirements.txt, Pipfile, go.mod, Gemfile, Cargo.toml, or similar. List each dependency with its current version and type (prod/dev/peer/optional). Identify the package manager used.`,
75
- { schema: INVENTORY_SCHEMA, label: 'inventory' }
76
- );
77
- if (!inventory) { return { target, error: 'inventory-agent-null' }; }
78
- const allDeps = inventory.dependencies || [];
79
- log(`Found ${allDeps.length} dependencies (${inventory.packageManager})`);
70
+ phase('Inventory');
71
+ log(`Inventorying dependencies in: ${target}`);
72
+ const inventory = await agent(
73
+ `Extract the complete dependency list from package manifests in: "${target}". Look for package.json, requirements.txt, Pipfile, go.mod, Gemfile, Cargo.toml, or similar. List each dependency with its current version and type (prod/dev/peer/optional). Identify the package manager used.`,
74
+ { schema: INVENTORY_SCHEMA, label: 'inventory' }
75
+ );
76
+ if (!inventory) { return { target, error: 'inventory-agent-null' }; }
77
+ const allDeps = inventory.dependencies || [];
78
+ log(`Found ${allDeps.length} dependencies (${inventory.packageManager})`);
80
79
 
81
- const BATCH_SIZE = 10;
82
- const batches = [];
83
- for (let i = 0; i < allDeps.length; i += BATCH_SIZE) {
84
- batches.push(allDeps.slice(i, i + BATCH_SIZE));
85
- }
86
- log(`Auditing in ${batches.length} batches of up to ${BATCH_SIZE}`);
80
+ const BATCH_SIZE = 10;
81
+ const batches = [];
82
+ for (let i = 0; i < allDeps.length; i += BATCH_SIZE) {
83
+ batches.push(allDeps.slice(i, i + BATCH_SIZE));
84
+ }
85
+ log(`Auditing in ${batches.length} batches of up to ${BATCH_SIZE}`);
87
86
 
88
- phase('Audit');
89
- const batchResults = await parallel(
90
- batches.map((batch, idx) => () => agent(
91
- `Audit these dependencies for security and health: ${batch.map(d => `${d.name}@${d.version}`).join(', ')}. For each: (1) known CVEs or security advisories, (2) license type (MIT/Apache/GPL/etc.), (3) staleness (how far behind latest), (4) maintenance status (active/slow/stale/archived). Provide upgrade/replace/accept/remove recommendation.`,
92
- { schema: BATCH_SCHEMA, label: `audit-batch-${idx}`, phase: 'Audit' }
93
- ))
94
- );
87
+ phase('Audit');
88
+ const batchResults = await parallel(
89
+ batches.map((batch, idx) => () => agent(
90
+ `Audit these dependencies for security and health: ${batch.map(d => `${d.name}@${d.version}`).join(', ')}. For each: (1) known CVEs or security advisories, (2) license type (MIT/Apache/GPL/etc.), (3) staleness (how far behind latest), (4) maintenance status (active/slow/stale/archived). Provide upgrade/replace/accept/remove recommendation.`,
91
+ { schema: BATCH_SCHEMA, label: `audit-batch-${idx}`, phase: 'Audit' }
92
+ ))
93
+ );
95
94
 
96
- phase('RiskMatrix');
97
- const allAudits = batchResults.filter(Boolean).flatMap(b => b.audits || []);
98
- const critical = allAudits.filter(a => a.cveRisk === 'critical' || a.cveRisk === 'high');
99
- const licenseIssues = allAudits.filter(a => a.licenseRisk === 'copyleft' || a.licenseRisk === 'unknown');
100
- log(`${critical.length} high/critical CVE risks, ${licenseIssues.length} license issues`);
95
+ phase('RiskMatrix');
96
+ const allAudits = batchResults.filter(Boolean).flatMap(b => b.audits || []);
97
+ const critical = allAudits.filter(a => a.cveRisk === 'critical' || a.cveRisk === 'high');
98
+ const licenseIssues = allAudits.filter(a => a.licenseRisk === 'copyleft' || a.licenseRisk === 'unknown');
99
+ log(`${critical.length} high/critical CVE risks, ${licenseIssues.length} license issues`);
101
100
 
102
- phase('Action');
103
- const matrixText = allAudits.filter(a => a.cveRisk !== 'none' || a.recommendation !== 'accept').slice(0, 20).map(a => `${a.name}: CVE=${a.cveRisk}, license=${a.licenseRisk}, staleness=${a.staleness}, status=${a.maintenanceStatus} → ${a.recommendation}`).join('\n');
104
- const actions = await agent(
105
- `Create a dependency action plan for: "${target}"\n\nRisk matrix:\n${matrixText}\n\nPrioritize: (1) immediate upgrades for critical CVEs, (2) replacements for abandoned/high-risk deps, (3) acceptable-risk accepts, (4) license issues to resolve. For replacements, suggest specific alternative packages.`,
106
- { schema: ACTION_SCHEMA, label: 'action-plan' }
107
- );
101
+ phase('Action');
102
+ const matrixText = allAudits.filter(a => a.cveRisk !== 'none' || a.recommendation !== 'accept').slice(0, 20).map(a => `${a.name}: CVE=${a.cveRisk}, license=${a.licenseRisk}, staleness=${a.staleness}, status=${a.maintenanceStatus} → ${a.recommendation}`).join('\n');
103
+ const actions = await agent(
104
+ `Create a dependency action plan for: "${target}"\n\nRisk matrix:\n${matrixText}\n\nPrioritize: (1) immediate upgrades for critical CVEs, (2) replacements for abandoned/high-risk deps, (3) acceptable-risk accepts, (4) license issues to resolve. For replacements, suggest specific alternative packages.`,
105
+ { schema: ACTION_SCHEMA, label: 'action-plan' }
106
+ );
108
107
 
109
- return { target, inventory, audits: allAudits, actions, stats: { total: allDeps.length, criticalCVE: critical.length, licenseIssues: licenseIssues.length } };
110
- }
108
+ return { target, inventory, audits: allAudits, actions, stats: { total: allDeps.length, criticalCVE: critical.length, licenseIssues: licenseIssues.length } };