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,133 +10,131 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const SCOPE_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- productDescription: { type: 'string' },
18
- competitors: { type: 'array', items: { type: 'string' } },
19
- evaluationDimensions: { type: 'array', items: { type: 'string' } },
20
- targetMarket: { type: 'string' },
21
- },
22
- required: ['productDescription', 'competitors', 'targetMarket'],
23
- };
13
+ const SCOPE_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ productDescription: { type: 'string' },
17
+ competitors: { type: 'array', items: { type: 'string' } },
18
+ evaluationDimensions: { type: 'array', items: { type: 'string' } },
19
+ targetMarket: { type: 'string' },
20
+ },
21
+ required: ['productDescription', 'competitors', 'targetMarket'],
22
+ };
24
23
 
25
- const ANGLE_SCHEMA = {
26
- type: 'object',
27
- properties: {
28
- angle: { type: 'string' },
29
- findings: {
30
- type: 'array',
31
- items: {
32
- type: 'object',
33
- properties: {
34
- competitor: { type: 'string' },
35
- insight: { type: 'string' },
36
- strength: { type: 'string' },
37
- weakness: { type: 'string' },
38
- signal: { type: 'string' },
39
- },
40
- required: ['competitor', 'insight'],
24
+ const ANGLE_SCHEMA = {
25
+ type: 'object',
26
+ properties: {
27
+ angle: { type: 'string' },
28
+ findings: {
29
+ type: 'array',
30
+ items: {
31
+ type: 'object',
32
+ properties: {
33
+ competitor: { type: 'string' },
34
+ insight: { type: 'string' },
35
+ strength: { type: 'string' },
36
+ weakness: { type: 'string' },
37
+ signal: { type: 'string' },
41
38
  },
39
+ required: ['competitor', 'insight'],
42
40
  },
43
- keyTakeaway: { type: 'string' },
44
41
  },
45
- required: ['angle', 'findings', 'keyTakeaway'],
46
- };
42
+ keyTakeaway: { type: 'string' },
43
+ },
44
+ required: ['angle', 'findings', 'keyTakeaway'],
45
+ };
47
46
 
48
- const ANALYSIS_SCHEMA = {
49
- type: 'object',
50
- properties: {
51
- competitorProfiles: {
52
- type: 'array',
53
- items: {
54
- type: 'object',
55
- properties: {
56
- name: { type: 'string' },
57
- summary: { type: 'string' },
58
- keyStrengths: { type: 'array', items: { type: 'string' } },
59
- keyWeaknesses: { type: 'array', items: { type: 'string' } },
60
- threatLevel: { type: 'string', enum: ['high', 'medium', 'low'] },
61
- },
62
- required: ['name', 'summary', 'keyStrengths', 'keyWeaknesses', 'threatLevel'],
47
+ const ANALYSIS_SCHEMA = {
48
+ type: 'object',
49
+ properties: {
50
+ competitorProfiles: {
51
+ type: 'array',
52
+ items: {
53
+ type: 'object',
54
+ properties: {
55
+ name: { type: 'string' },
56
+ summary: { type: 'string' },
57
+ keyStrengths: { type: 'array', items: { type: 'string' } },
58
+ keyWeaknesses: { type: 'array', items: { type: 'string' } },
59
+ threatLevel: { type: 'string', enum: ['high', 'medium', 'low'] },
63
60
  },
61
+ required: ['name', 'summary', 'keyStrengths', 'keyWeaknesses', 'threatLevel'],
64
62
  },
65
- marketDynamics: { type: 'string' },
66
63
  },
67
- required: ['competitorProfiles', 'marketDynamics'],
68
- };
64
+ marketDynamics: { type: 'string' },
65
+ },
66
+ required: ['competitorProfiles', 'marketDynamics'],
67
+ };
69
68
 
70
- const SYNTHESIS_SCHEMA = {
71
- type: 'object',
72
- properties: {
73
- executiveSummary: { type: 'string' },
74
- competitivePosition: { type: 'string', enum: ['leader', 'challenger', 'follower', 'nicher'] },
75
- differentiationOpportunities: {
76
- type: 'array',
77
- items: {
78
- type: 'object',
79
- properties: {
80
- opportunity: { type: 'string' },
81
- dimension: { type: 'string' },
82
- confidence: { type: 'string', enum: ['high', 'medium', 'low'] },
83
- actionable: { type: 'string' },
84
- },
85
- required: ['opportunity', 'dimension', 'actionable'],
69
+ const SYNTHESIS_SCHEMA = {
70
+ type: 'object',
71
+ properties: {
72
+ executiveSummary: { type: 'string' },
73
+ competitivePosition: { type: 'string', enum: ['leader', 'challenger', 'follower', 'nicher'] },
74
+ differentiationOpportunities: {
75
+ type: 'array',
76
+ items: {
77
+ type: 'object',
78
+ properties: {
79
+ opportunity: { type: 'string' },
80
+ dimension: { type: 'string' },
81
+ confidence: { type: 'string', enum: ['high', 'medium', 'low'] },
82
+ actionable: { type: 'string' },
86
83
  },
84
+ required: ['opportunity', 'dimension', 'actionable'],
87
85
  },
88
- threatsToWatch: { type: 'array', items: { type: 'string' } },
89
- strategicRecommendations: { type: 'array', items: { type: 'string' } },
90
86
  },
91
- required: ['executiveSummary', 'competitivePosition', 'differentiationOpportunities', 'strategicRecommendations'],
92
- };
87
+ threatsToWatch: { type: 'array', items: { type: 'string' } },
88
+ strategicRecommendations: { type: 'array', items: { type: 'string' } },
89
+ },
90
+ required: ['executiveSummary', 'competitivePosition', 'differentiationOpportunities', 'strategicRecommendations'],
91
+ };
93
92
 
94
- const target = args || 'current product (describe your product and list competitors in args)';
93
+ const target = args || 'current product (describe your product and list competitors in args)';
95
94
 
96
- phase('Scope');
97
- log(`Competitive teardown for: ${target}`);
98
- const scope = await agent(
99
- `Define the competitive landscape for: "${target}". Identify: (1) a concise description of the product/service being analyzed, (2) the top 3-5 direct competitors, (3) key evaluation dimensions for this market, (4) the target market and customer segment. If competitors are not specified in the input, infer them from the product description.`,
100
- { schema: SCOPE_SCHEMA, label: 'scope' }
101
- );
102
- if (!scope) { log('Warning: agent returned null for scope, skipping'); return { target, error: 'agent-null' }; }
103
- log(`Analyzing ${scope.competitors.length} competitors: ${scope.competitors.join(', ')}`);
95
+ phase('Scope');
96
+ log(`Competitive teardown for: ${target}`);
97
+ const scope = await agent(
98
+ `Define the competitive landscape for: "${target}". Identify: (1) a concise description of the product/service being analyzed, (2) the top 3-5 direct competitors, (3) key evaluation dimensions for this market, (4) the target market and customer segment. If competitors are not specified in the input, infer them from the product description.`,
99
+ { schema: SCOPE_SCHEMA, label: 'scope' }
100
+ );
101
+ if (!scope) { log('Warning: agent returned null for scope, skipping'); return { target, error: 'agent-null' }; }
102
+ log(`Analyzing ${scope.competitors.length} competitors: ${scope.competitors.join(', ')}`);
104
103
 
105
- const competitorList = scope.competitors.join(', ');
106
- const productCtx = `Product: ${scope.productDescription} | Market: ${scope.targetMarket}`;
104
+ const competitorList = scope.competitors.join(', ');
105
+ const productCtx = `Product: ${scope.productDescription} | Market: ${scope.targetMarket}`;
107
106
 
108
- phase('Research');
109
- const ANGLES = [
110
- { label: 'product-features', prompt: `Analyze PRODUCT FEATURES AND UX for these competitors in the context of: "${target}". ${productCtx}. Competitors: ${competitorList}. For each: key features, UX quality, product gaps, what users love/hate (based on known reviews/feedback). What are the feature differentiators?` },
111
- { label: 'technical-architecture', prompt: `Analyze TECHNICAL ARCHITECTURE AND STACK for: ${competitorList}. Context: "${target}". ${productCtx}. For each: known tech stack, scalability approach, API availability, integration ecosystem, technical moat (patents, proprietary tech, network effects). What technical signals suggest future direction?` },
112
- { label: 'pricing-model', prompt: `Analyze PRICING MODELS for: ${competitorList}. Context: "${target}". ${productCtx}. For each: pricing tiers, free/trial offering, enterprise vs SMB focus, pricing transparency, value metric (per seat/usage/feature). What pricing patterns dominate? Where are the gaps?` },
113
- { label: 'hiring-signals', prompt: `Analyze HIRING SIGNALS for: ${competitorList}. Context: "${target}". ${productCtx}. For each: recent job postings patterns (what roles they're hiring = what they're building), team growth trajectory, key hires/departures, which teams are expanding. What does hiring signal about product roadmap?` },
114
- { label: 'community-ecosystem', prompt: `Analyze COMMUNITY AND ECOSYSTEM for: ${competitorList}. Context: "${target}". ${productCtx}. For each: community size and engagement (GitHub stars, Discord/Slack, forum activity), developer ecosystem (integrations, plugins, APIs), content marketing, thought leadership, NPS signals. Who has the strongest ecosystem moat?` },
115
- ];
107
+ phase('Research');
108
+ const ANGLES = [
109
+ { label: 'product-features', prompt: `Analyze PRODUCT FEATURES AND UX for these competitors in the context of: "${target}". ${productCtx}. Competitors: ${competitorList}. For each: key features, UX quality, product gaps, what users love/hate (based on known reviews/feedback). What are the feature differentiators?` },
110
+ { label: 'technical-architecture', prompt: `Analyze TECHNICAL ARCHITECTURE AND STACK for: ${competitorList}. Context: "${target}". ${productCtx}. For each: known tech stack, scalability approach, API availability, integration ecosystem, technical moat (patents, proprietary tech, network effects). What technical signals suggest future direction?` },
111
+ { label: 'pricing-model', prompt: `Analyze PRICING MODELS for: ${competitorList}. Context: "${target}". ${productCtx}. For each: pricing tiers, free/trial offering, enterprise vs SMB focus, pricing transparency, value metric (per seat/usage/feature). What pricing patterns dominate? Where are the gaps?` },
112
+ { label: 'hiring-signals', prompt: `Analyze HIRING SIGNALS for: ${competitorList}. Context: "${target}". ${productCtx}. For each: recent job postings patterns (what roles they're hiring = what they're building), team growth trajectory, key hires/departures, which teams are expanding. What does hiring signal about product roadmap?` },
113
+ { label: 'community-ecosystem', prompt: `Analyze COMMUNITY AND ECOSYSTEM for: ${competitorList}. Context: "${target}". ${productCtx}. For each: community size and engagement (GitHub stars, Discord/Slack, forum activity), developer ecosystem (integrations, plugins, APIs), content marketing, thought leadership, NPS signals. Who has the strongest ecosystem moat?` },
114
+ ];
116
115
 
117
- const angleResults = await parallel(
118
- ANGLES.map(a => () => agent(a.prompt, { schema: ANGLE_SCHEMA, label: `angle:${a.label}`, phase: 'Research' }))
119
- );
116
+ const angleResults = await parallel(
117
+ ANGLES.map(a => () => agent(a.prompt, { schema: ANGLE_SCHEMA, label: `angle:${a.label}`, phase: 'Research' }))
118
+ );
120
119
 
121
- phase('Analyze');
122
- const validAngles = angleResults.filter(Boolean);
123
- const angleSummary = validAngles.map(a => `${a.angle}: ${a.keyTakeaway}`).join('\n');
120
+ phase('Analyze');
121
+ const validAngles = angleResults.filter(Boolean);
122
+ const angleSummary = validAngles.map(a => `${a.angle}: ${a.keyTakeaway}`).join('\n');
124
123
 
125
- const analysis = await agent(
126
- `Synthesize competitive profiles for: "${target}"\n\nCompetitors: ${competitorList}\n\nAngle summaries:\n${angleSummary}\n\nFor each competitor: 2-sentence summary, top 3 strengths, top 3 weaknesses, and threat level (high/medium/low) to our product. Describe overall market dynamics.`,
127
- { schema: ANALYSIS_SCHEMA, label: 'analyze' }
128
- );
124
+ const analysis = await agent(
125
+ `Synthesize competitive profiles for: "${target}"\n\nCompetitors: ${competitorList}\n\nAngle summaries:\n${angleSummary}\n\nFor each competitor: 2-sentence summary, top 3 strengths, top 3 weaknesses, and threat level (high/medium/low) to our product. Describe overall market dynamics.`,
126
+ { schema: ANALYSIS_SCHEMA, label: 'analyze' }
127
+ );
129
128
 
130
- if (!analysis) { log('Warning: agent returned null for analysis, skipping'); return { target, error: 'agent-null' }; }
131
- phase('Synthesis');
132
- const profileSummary = analysis.competitorProfiles.map(p => `${p.name} (threat=${p.threatLevel}): strengths=[${p.keyStrengths.slice(0, 2).join(', ')}] weaknesses=[${p.keyWeaknesses.slice(0, 2).join(', ')}]`).join('\n');
129
+ if (!analysis) { log('Warning: agent returned null for analysis, skipping'); return { target, error: 'agent-null' }; }
130
+ phase('Synthesis');
131
+ const profileSummary = analysis.competitorProfiles.map(p => `${p.name} (threat=${p.threatLevel}): strengths=[${p.keyStrengths.slice(0, 2).join(', ')}] weaknesses=[${p.keyWeaknesses.slice(0, 2).join(', ')}]`).join('\n');
133
132
 
134
- const synthesis = await pipeline([
135
- () => agent(
136
- `Create a competitive positioning report for: "${target}"\n\n${productCtx}\n\nCompetitor profiles:\n${profileSummary}\n\nMarket dynamics: ${analysis.marketDynamics}\n\nAngle takeaways:\n${angleSummary}\n\nProvide: executive summary, competitive position (leader/challenger/follower/nicher), top 3-5 differentiation opportunities with confidence and actionable next steps, key threats to monitor, and 3-5 strategic recommendations.`,
137
- { schema: SYNTHESIS_SCHEMA, label: 'synthesis' }
138
- ),
139
- ]);
133
+ const synthesis = await pipeline([
134
+ () => agent(
135
+ `Create a competitive positioning report for: "${target}"\n\n${productCtx}\n\nCompetitor profiles:\n${profileSummary}\n\nMarket dynamics: ${analysis.marketDynamics}\n\nAngle takeaways:\n${angleSummary}\n\nProvide: executive summary, competitive position (leader/challenger/follower/nicher), top 3-5 differentiation opportunities with confidence and actionable next steps, key threats to monitor, and 3-5 strategic recommendations.`,
136
+ { schema: SYNTHESIS_SCHEMA, label: 'synthesis' }
137
+ ),
138
+ ]);
140
139
 
141
- return { target, scope, angles: validAngles, analysis, synthesis };
142
- }
140
+ return { target, scope, angles: validAngles, analysis, synthesis };
@@ -10,98 +10,96 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const SCOPE_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- costCenters: { type: 'array', items: { type: 'string' } },
18
- estimatedMonthlyCost: { type: 'string' },
19
- primaryTechnology: { type: 'string' },
20
- },
21
- required: ['costCenters', 'primaryTechnology'],
22
- };
13
+ const SCOPE_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ costCenters: { type: 'array', items: { type: 'string' } },
17
+ estimatedMonthlyCost: { type: 'string' },
18
+ primaryTechnology: { type: 'string' },
19
+ },
20
+ required: ['costCenters', 'primaryTechnology'],
21
+ };
23
22
 
24
- const COST_DIM_SCHEMA = {
25
- type: 'object',
26
- properties: {
27
- dimension: { type: 'string' },
28
- currentEstimate: { type: 'string' },
29
- findings: {
30
- type: 'array',
31
- items: {
32
- type: 'object',
33
- properties: {
34
- item: { type: 'string' },
35
- currentCost: { type: 'string' },
36
- wasteType: { type: 'string', enum: ['over-provisioning', 'idle-resource', 'inefficient-query', 'unused-api', 'large-bundle', 'redundant-call', 'other'] },
37
- potentialSaving: { type: 'string' },
38
- fix: { type: 'string' },
39
- },
40
- required: ['item', 'wasteType', 'potentialSaving', 'fix'],
23
+ const COST_DIM_SCHEMA = {
24
+ type: 'object',
25
+ properties: {
26
+ dimension: { type: 'string' },
27
+ currentEstimate: { type: 'string' },
28
+ findings: {
29
+ type: 'array',
30
+ items: {
31
+ type: 'object',
32
+ properties: {
33
+ item: { type: 'string' },
34
+ currentCost: { type: 'string' },
35
+ wasteType: { type: 'string', enum: ['over-provisioning', 'idle-resource', 'inefficient-query', 'unused-api', 'large-bundle', 'redundant-call', 'other'] },
36
+ potentialSaving: { type: 'string' },
37
+ fix: { type: 'string' },
41
38
  },
39
+ required: ['item', 'wasteType', 'potentialSaving', 'fix'],
42
40
  },
43
41
  },
44
- required: ['dimension', 'findings'],
45
- };
42
+ },
43
+ required: ['dimension', 'findings'],
44
+ };
46
45
 
47
- const PLAN_SCHEMA = {
48
- type: 'object',
49
- properties: {
50
- summary: { type: 'string' },
51
- totalEstimatedSaving: { type: 'string' },
52
- reductionItems: {
53
- type: 'array',
54
- items: {
55
- type: 'object',
56
- properties: {
57
- action: { type: 'string' },
58
- dimension: { type: 'string' },
59
- monthlySaving: { type: 'string' },
60
- effort: { type: 'string', enum: ['low', 'medium', 'high'] },
61
- roi: { type: 'string' },
62
- priority: { type: 'string', enum: ['p0', 'p1', 'p2'] },
63
- },
64
- required: ['action', 'dimension', 'monthlySaving', 'effort', 'priority'],
46
+ const PLAN_SCHEMA = {
47
+ type: 'object',
48
+ properties: {
49
+ summary: { type: 'string' },
50
+ totalEstimatedSaving: { type: 'string' },
51
+ reductionItems: {
52
+ type: 'array',
53
+ items: {
54
+ type: 'object',
55
+ properties: {
56
+ action: { type: 'string' },
57
+ dimension: { type: 'string' },
58
+ monthlySaving: { type: 'string' },
59
+ effort: { type: 'string', enum: ['low', 'medium', 'high'] },
60
+ roi: { type: 'string' },
61
+ priority: { type: 'string', enum: ['p0', 'p1', 'p2'] },
65
62
  },
63
+ required: ['action', 'dimension', 'monthlySaving', 'effort', 'priority'],
66
64
  },
67
65
  },
68
- required: ['summary', 'totalEstimatedSaving', 'reductionItems'],
69
- };
66
+ },
67
+ required: ['summary', 'totalEstimatedSaving', 'reductionItems'],
68
+ };
70
69
 
71
- const target = args || 'current codebase (run from repo root)';
70
+ const target = args || 'current codebase (run from repo root)';
72
71
 
73
- phase('Scope');
74
- log(`Cost analysis target: ${target}`);
75
- const scope = await agent(
76
- `Identify the cost centers and technology stack for: "${target}". What cloud provider, databases, third-party APIs, and frontend framework are used? Estimate the primary monthly cost categories (infra, API calls, database, frontend delivery).`,
77
- { schema: SCOPE_SCHEMA, label: 'scope' }
78
- );
79
- if (!scope) { log('Warning: agent returned null for scope, skipping'); return { target, error: 'agent-null' }; }
80
- log(`Cost centers: ${scope.costCenters.join(', ')}`);
72
+ phase('Scope');
73
+ log(`Cost analysis target: ${target}`);
74
+ const scope = await agent(
75
+ `Identify the cost centers and technology stack for: "${target}". What cloud provider, databases, third-party APIs, and frontend framework are used? Estimate the primary monthly cost categories (infra, API calls, database, frontend delivery).`,
76
+ { schema: SCOPE_SCHEMA, label: 'scope' }
77
+ );
78
+ if (!scope) { log('Warning: agent returned null for scope, skipping'); return { target, error: 'agent-null' }; }
79
+ log(`Cost centers: ${scope.costCenters.join(', ')}`);
81
80
 
82
- phase('Analyze');
83
- const DIMENSIONS = [
84
- { label: 'infrastructure', prompt: `Analyze INFRASTRUCTURE costs for: "${target}" (${scope.primaryTechnology}). Look for: over-provisioned compute (instances larger than needed), idle resources (unused databases, VMs, load balancers), storage waste (old snapshots, unused volumes), network egress inefficiencies, cold-start penalties on serverless. Estimate current spend and potential savings per item.` },
85
- { label: 'api-costs', prompt: `Analyze THIRD-PARTY API costs for: "${target}". Look for: excessive LLM/AI API calls (missing caching, redundant calls), payment provider fees that could be reduced, over-calling external APIs when local cache would suffice, unused API subscriptions, inefficient batch vs single calls. Estimate current spend and potential savings.` },
86
- { label: 'database-query', prompt: `Analyze DATABASE QUERY costs for: "${target}". Look for: N+1 queries (fetching rows in a loop), missing indexes on WHERE/JOIN/ORDER BY columns, SELECT * where only a few columns are needed, unbounded queries without LIMIT, expensive full-table scans, redundant queries that could be cached. Estimate compute cost impact and savings.` },
87
- { label: 'bundle-runtime', prompt: `Analyze BUNDLE AND RUNTIME OVERHEAD costs for: "${target}". Look for: large JS bundles (over 500KB) increasing CDN bandwidth costs, unoptimized images (missing WebP, no lazy loading), missing HTTP cache headers causing repeat downloads, unused dependencies inflating bundle size, missing code splitting. Estimate bandwidth/CDN cost impact.` },
88
- ];
81
+ phase('Analyze');
82
+ const DIMENSIONS = [
83
+ { label: 'infrastructure', prompt: `Analyze INFRASTRUCTURE costs for: "${target}" (${scope.primaryTechnology}). Look for: over-provisioned compute (instances larger than needed), idle resources (unused databases, VMs, load balancers), storage waste (old snapshots, unused volumes), network egress inefficiencies, cold-start penalties on serverless. Estimate current spend and potential savings per item.` },
84
+ { label: 'api-costs', prompt: `Analyze THIRD-PARTY API costs for: "${target}". Look for: excessive LLM/AI API calls (missing caching, redundant calls), payment provider fees that could be reduced, over-calling external APIs when local cache would suffice, unused API subscriptions, inefficient batch vs single calls. Estimate current spend and potential savings.` },
85
+ { label: 'database-query', prompt: `Analyze DATABASE QUERY costs for: "${target}". Look for: N+1 queries (fetching rows in a loop), missing indexes on WHERE/JOIN/ORDER BY columns, SELECT * where only a few columns are needed, unbounded queries without LIMIT, expensive full-table scans, redundant queries that could be cached. Estimate compute cost impact and savings.` },
86
+ { label: 'bundle-runtime', prompt: `Analyze BUNDLE AND RUNTIME OVERHEAD costs for: "${target}". Look for: large JS bundles (over 500KB) increasing CDN bandwidth costs, unoptimized images (missing WebP, no lazy loading), missing HTTP cache headers causing repeat downloads, unused dependencies inflating bundle size, missing code splitting. Estimate bandwidth/CDN cost impact.` },
87
+ ];
89
88
 
90
- const dimResults = await parallel(
91
- DIMENSIONS.map(d => () => agent(d.prompt, { schema: COST_DIM_SCHEMA, label: `cost:${d.label}`, phase: 'Analyze' }))
92
- );
89
+ const dimResults = await parallel(
90
+ DIMENSIONS.map(d => () => agent(d.prompt, { schema: COST_DIM_SCHEMA, label: `cost:${d.label}`, phase: 'Analyze' }))
91
+ );
93
92
 
94
- phase('Model');
95
- const allFindings = dimResults.filter(Boolean).flatMap(d => d.findings.map(f => ({ dimension: d.dimension, ...f })));
96
- log(`${allFindings.length} cost findings across 4 dimensions`);
93
+ phase('Model');
94
+ const allFindings = dimResults.filter(Boolean).flatMap(d => d.findings.map(f => ({ dimension: d.dimension, ...f })));
95
+ log(`${allFindings.length} cost findings across 4 dimensions`);
97
96
 
98
- phase('Plan');
99
- const findingSummary = allFindings.slice(0, 20).map(f => `[${f.dimension}/${f.wasteType}] ${f.item}: save ${f.potentialSaving} — ${f.fix}`).join('\n');
100
- const plan = await agent(
101
- `Create a cost reduction plan for: "${target}"\n\nCost findings:\n${findingSummary}\n\nPrioritize by: P0=quick wins with high savings (low effort, >$500/mo), P1=high savings medium effort, P2=nice-to-have. For each item estimate monthly saving, implementation effort, and ROI timeframe. Calculate total estimated monthly saving.`,
102
- { schema: PLAN_SCHEMA, label: 'plan' }
103
- );
104
- if (!plan) { return { target, scope, dimResults: dimResults.filter(Boolean), error: 'plan-agent-null' }; }
97
+ phase('Plan');
98
+ const findingSummary = allFindings.slice(0, 20).map(f => `[${f.dimension}/${f.wasteType}] ${f.item}: save ${f.potentialSaving} — ${f.fix}`).join('\n');
99
+ const plan = await agent(
100
+ `Create a cost reduction plan for: "${target}"\n\nCost findings:\n${findingSummary}\n\nPrioritize by: P0=quick wins with high savings (low effort, >$500/mo), P1=high savings medium effort, P2=nice-to-have. For each item estimate monthly saving, implementation effort, and ROI timeframe. Calculate total estimated monthly saving.`,
101
+ { schema: PLAN_SCHEMA, label: 'plan' }
102
+ );
103
+ if (!plan) { return { target, scope, dimResults: dimResults.filter(Boolean), error: 'plan-agent-null' }; }
105
104
 
106
- return { target, scope, dimResults: dimResults.filter(Boolean), plan };
107
- }
105
+ return { target, scope, dimResults: dimResults.filter(Boolean), plan };
@@ -10,60 +10,58 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const PIPELINE_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- stages: { type: 'array', items: { type: 'object', properties: { name: { type: 'string' }, type: { type: 'string', enum: ['source', 'transform', 'enrich', 'filter', 'aggregate', 'sink'] }, input: { type: 'string' }, output: { type: 'string' } }, required: ['name', 'type'] } },
18
- pipelineName: { type: 'string' },
19
- },
20
- required: ['stages', 'pipelineName'],
21
- };
13
+ const PIPELINE_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ stages: { type: 'array', items: { type: 'object', properties: { name: { type: 'string' }, type: { type: 'string', enum: ['source', 'transform', 'enrich', 'filter', 'aggregate', 'sink'] }, input: { type: 'string' }, output: { type: 'string' } }, required: ['name', 'type'] } },
17
+ pipelineName: { type: 'string' },
18
+ },
19
+ required: ['stages', 'pipelineName'],
20
+ };
22
21
 
23
- const STAGE_SCHEMA = {
24
- type: 'object',
25
- properties: {
26
- stage: { type: 'string' },
27
- issues: { type: 'array', items: { type: 'object', properties: { severity: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] }, category: { type: 'string' }, description: { type: 'string' }, fix: { type: 'string' } }, required: ['severity', 'category', 'description', 'fix'] } },
28
- healthScore: { type: 'number' },
29
- },
30
- required: ['stage', 'issues', 'healthScore'],
31
- };
22
+ const STAGE_SCHEMA = {
23
+ type: 'object',
24
+ properties: {
25
+ stage: { type: 'string' },
26
+ issues: { type: 'array', items: { type: 'object', properties: { severity: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] }, category: { type: 'string' }, description: { type: 'string' }, fix: { type: 'string' } }, required: ['severity', 'category', 'description', 'fix'] } },
27
+ healthScore: { type: 'number' },
28
+ },
29
+ required: ['stage', 'issues', 'healthScore'],
30
+ };
32
31
 
33
- const REPORT_SCHEMA = {
34
- type: 'object',
35
- properties: {
36
- overallHealth: { type: 'string', enum: ['healthy', 'degraded', 'critical', 'failing'] },
37
- summary: { type: 'string' },
38
- criticalIssues: { type: 'array', items: { type: 'string' } },
39
- recommendations: { type: 'array', items: { type: 'string' } },
40
- },
41
- required: ['overallHealth', 'summary', 'criticalIssues', 'recommendations'],
42
- };
32
+ const REPORT_SCHEMA = {
33
+ type: 'object',
34
+ properties: {
35
+ overallHealth: { type: 'string', enum: ['healthy', 'degraded', 'critical', 'failing'] },
36
+ summary: { type: 'string' },
37
+ criticalIssues: { type: 'array', items: { type: 'string' } },
38
+ recommendations: { type: 'array', items: { type: 'string' } },
39
+ },
40
+ required: ['overallHealth', 'summary', 'criticalIssues', 'recommendations'],
41
+ };
43
42
 
44
- const target = args || 'current data pipeline (run from pipeline directory)';
43
+ const target = args || 'current data pipeline (run from pipeline directory)';
45
44
 
46
- phase('Map');
47
- const pipelineMap = await agent(`Map all stages of the data pipeline in: "${target}". Identify each stage by name, type (source/transform/enrich/filter/aggregate/sink), its input data source, and output. List them in execution order.`, { schema: PIPELINE_SCHEMA, label: 'map' });
48
- if (!pipelineMap) { log('Warning: agent returned null for pipelineMap, skipping'); return { target, error: 'agent-null' }; }
49
- log(`Pipeline: ${pipelineMap.pipelineName} — ${pipelineMap.stages.length} stages`);
45
+ phase('Map');
46
+ const pipelineMap = await agent(`Map all stages of the data pipeline in: "${target}". Identify each stage by name, type (source/transform/enrich/filter/aggregate/sink), its input data source, and output. List them in execution order.`, { schema: PIPELINE_SCHEMA, label: 'map' });
47
+ if (!pipelineMap) { log('Warning: agent returned null for pipelineMap, skipping'); return { target, error: 'agent-null' }; }
48
+ log(`Pipeline: ${pipelineMap.pipelineName} — ${pipelineMap.stages.length} stages`);
50
49
 
51
- phase('Validate');
52
- const validations = await parallel(
53
- pipelineMap.stages.map(s => () => agent(
54
- `Validate pipeline stage "${s.name}" (${s.type}) in: "${target}". Check: (1) schema validation — correct data types, required fields present, (2) completeness — no unexpected nulls or missing records, (3) transform correctness — business rules applied correctly, (4) output contracts — downstream consumers will receive expected format. Rate each issue critical/high/medium/low.`,
55
- { schema: STAGE_SCHEMA, label: `validate:${s.name}`, phase: 'Validate' }
56
- ))
57
- );
50
+ phase('Validate');
51
+ const validations = await parallel(
52
+ pipelineMap.stages.map(s => () => agent(
53
+ `Validate pipeline stage "${s.name}" (${s.type}) in: "${target}". Check: (1) schema validation — correct data types, required fields present, (2) completeness — no unexpected nulls or missing records, (3) transform correctness — business rules applied correctly, (4) output contracts — downstream consumers will receive expected format. Rate each issue critical/high/medium/low.`,
54
+ { schema: STAGE_SCHEMA, label: `validate:${s.name}`, phase: 'Validate' }
55
+ ))
56
+ );
58
57
 
59
- phase('Quality');
60
- const stageScores = validations.filter(Boolean).map(v => `${v.stage}: ${v.healthScore}/100`).join(', ');
61
- log(`Stage health: ${stageScores}`);
58
+ phase('Quality');
59
+ const stageScores = validations.filter(Boolean).map(v => `${v.stage}: ${v.healthScore}/100`).join(', ');
60
+ log(`Stage health: ${stageScores}`);
62
61
 
63
- phase('Report');
64
- const issueList = validations.filter(Boolean).flatMap(v => v.issues.map(i => `[${v.stage}/${i.severity}] ${i.description}`)).slice(0, 15);
65
- const report = await agent(`Create a data pipeline validation report for: "${target}"\n\nStage health scores: ${stageScores}\n\nIssues found:\n${issueList.join('\n')}\n\nDetermine overall pipeline health, list critical issues, and provide prioritized recommendations.`, { schema: REPORT_SCHEMA, label: 'report' });
66
- if (!report) { return { target, pipelineMap, validations: validations.filter(Boolean), error: 'report-agent-null' }; }
62
+ phase('Report');
63
+ const issueList = validations.filter(Boolean).flatMap(v => v.issues.map(i => `[${v.stage}/${i.severity}] ${i.description}`)).slice(0, 15);
64
+ const report = await agent(`Create a data pipeline validation report for: "${target}"\n\nStage health scores: ${stageScores}\n\nIssues found:\n${issueList.join('\n')}\n\nDetermine overall pipeline health, list critical issues, and provide prioritized recommendations.`, { schema: REPORT_SCHEMA, label: 'report' });
65
+ if (!report) { return { target, pipelineMap, validations: validations.filter(Boolean), error: 'report-agent-null' }; }
67
66
 
68
- return { target, pipelineMap, validations: validations.filter(Boolean), report };
69
- }
67
+ return { target, pipelineMap, validations: validations.filter(Boolean), report };