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,94 +10,92 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const FINDING_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- dimension: { type: 'string' },
18
- findings: {
19
- type: 'array',
20
- items: {
21
- type: 'object',
22
- properties: {
23
- severity: { type: 'string', enum: ['critical', 'high', 'medium', 'low', 'info'] },
24
- title: { type: 'string' },
25
- file: { type: 'string' },
26
- description: { type: 'string' },
27
- remediation: { type: 'string' },
28
- },
29
- required: ['severity', 'title', 'description', 'remediation'],
13
+ const FINDING_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ dimension: { type: 'string' },
17
+ findings: {
18
+ type: 'array',
19
+ items: {
20
+ type: 'object',
21
+ properties: {
22
+ severity: { type: 'string', enum: ['critical', 'high', 'medium', 'low', 'info'] },
23
+ title: { type: 'string' },
24
+ file: { type: 'string' },
25
+ description: { type: 'string' },
26
+ remediation: { type: 'string' },
30
27
  },
28
+ required: ['severity', 'title', 'description', 'remediation'],
31
29
  },
32
30
  },
33
- required: ['dimension', 'findings'],
34
- };
31
+ },
32
+ required: ['dimension', 'findings'],
33
+ };
35
34
 
36
- const VERDICT_SCHEMA = {
37
- type: 'object',
38
- properties: { isReal: { type: 'boolean' }, reason: { type: 'string' } },
39
- required: ['isReal', 'reason'],
40
- };
35
+ const VERDICT_SCHEMA = {
36
+ type: 'object',
37
+ properties: { isReal: { type: 'boolean' }, reason: { type: 'string' } },
38
+ required: ['isReal', 'reason'],
39
+ };
41
40
 
42
- const REPORT_SCHEMA = {
43
- type: 'object',
44
- properties: {
45
- summary: { type: 'string' },
46
- riskLevel: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
47
- findings: { type: 'array', items: { type: 'object', properties: { severity: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' }, remediation: { type: 'string' } }, required: ['severity', 'title', 'description', 'remediation'] } },
48
- immediateActions: { type: 'array', items: { type: 'string' } },
49
- },
50
- required: ['summary', 'riskLevel', 'findings', 'immediateActions'],
51
- };
41
+ const REPORT_SCHEMA = {
42
+ type: 'object',
43
+ properties: {
44
+ summary: { type: 'string' },
45
+ riskLevel: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
46
+ findings: { type: 'array', items: { type: 'object', properties: { severity: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' }, remediation: { type: 'string' } }, required: ['severity', 'title', 'description', 'remediation'] } },
47
+ immediateActions: { type: 'array', items: { type: 'string' } },
48
+ },
49
+ required: ['summary', 'riskLevel', 'findings', 'immediateActions'],
50
+ };
52
51
 
53
- const target = args || 'current git diff (run from repo root)';
52
+ const target = args || 'current git diff (run from repo root)';
54
53
 
55
- phase('Scope');
56
- log(`Auditing: ${target}`);
54
+ phase('Scope');
55
+ log(`Auditing: ${target}`);
57
56
 
58
- const AUDITORS = [
59
- { label: 'security', prompt: `Perform a security audit of this codebase/diff: "${target}". Check for: OWASP Top 10 (injection, broken auth, XSS, IDOR, misconfig, exposure, CSRF, insecure deserialization, known vulns, logging failures), hardcoded secrets, unsafe dependencies, input validation gaps, authorization flaws. Rate each finding as critical/high/medium/low/info.` },
60
- { label: 'quality', prompt: `Perform a code quality audit of: "${target}". Check for: functions >50 lines, nesting >4 levels, magic numbers, dead code, missing error handling, naming issues, copy-paste anti-patterns, missing tests, undefined behavior, race conditions. Rate each finding as critical/high/medium/low/info.` },
61
- { label: 'performance', prompt: `Perform a performance audit of: "${target}". Check for: N+1 queries, unbounded loops, missing pagination, synchronous I/O in hot paths, memory leaks, missing indexes, large bundle imports, inefficient algorithms, cache invalidation issues. Rate each finding as critical/high/medium/low/info.` },
62
- ];
57
+ const AUDITORS = [
58
+ { label: 'security', prompt: `Perform a security audit of this codebase/diff: "${target}". Check for: OWASP Top 10 (injection, broken auth, XSS, IDOR, misconfig, exposure, CSRF, insecure deserialization, known vulns, logging failures), hardcoded secrets, unsafe dependencies, input validation gaps, authorization flaws. Rate each finding as critical/high/medium/low/info.` },
59
+ { label: 'quality', prompt: `Perform a code quality audit of: "${target}". Check for: functions >50 lines, nesting >4 levels, magic numbers, dead code, missing error handling, naming issues, copy-paste anti-patterns, missing tests, undefined behavior, race conditions. Rate each finding as critical/high/medium/low/info.` },
60
+ { label: 'performance', prompt: `Perform a performance audit of: "${target}". Check for: N+1 queries, unbounded loops, missing pagination, synchronous I/O in hot paths, memory leaks, missing indexes, large bundle imports, inefficient algorithms, cache invalidation issues. Rate each finding as critical/high/medium/low/info.` },
61
+ ];
63
62
 
64
- phase('Audit');
65
- const audits = await parallel(
66
- AUDITORS.map(a => () => agent(a.prompt, { schema: FINDING_SCHEMA, label: `audit:${a.label}`, phase: 'Audit' }))
67
- );
63
+ phase('Audit');
64
+ const audits = await parallel(
65
+ AUDITORS.map(a => () => agent(a.prompt, { schema: FINDING_SCHEMA, label: `audit:${a.label}`, phase: 'Audit' }))
66
+ );
68
67
 
69
- phase('Verify');
70
- const allFindings = audits.filter(Boolean).flatMap(a => a.findings.map(f => ({ ...f, dimension: a.dimension })));
71
- const highSeverity = allFindings.filter(f => f.severity === 'critical' || f.severity === 'high');
72
- log(`${allFindings.length} total findings, ${highSeverity.length} high/critical → adversarially verifying`);
68
+ phase('Verify');
69
+ const allFindings = audits.filter(Boolean).flatMap(a => a.findings.map(f => ({ ...f, dimension: a.dimension })));
70
+ const highSeverity = allFindings.filter(f => f.severity === 'critical' || f.severity === 'high');
71
+ log(`${allFindings.length} total findings, ${highSeverity.length} high/critical → adversarially verifying`);
73
72
 
74
- const verifiedFindings = await parallel(
75
- highSeverity.map(f => () =>
76
- parallel([
77
- () => agent(`Is this finding a real issue or a false positive? Try to REFUTE it. Finding: "${f.title}" — ${f.description}`, { schema: VERDICT_SCHEMA, label: `verify-1:${f.title.slice(0, 30)}` }),
78
- () => agent(`Challenge this finding from a different angle. Is it actually exploitable/impactful? Finding: "${f.title}" — ${f.description}`, { schema: VERDICT_SCHEMA, label: `verify-2:${f.title.slice(0, 30)}` }),
79
- ]).then(votes => {
80
- const confirmed = votes.filter(Boolean).filter(v => v.isReal).length;
81
- return { ...f, verified: confirmed >= 1 };
82
- })
83
- )
84
- );
73
+ const verifiedFindings = await parallel(
74
+ highSeverity.map(f => () =>
75
+ parallel([
76
+ () => agent(`Is this finding a real issue or a false positive? Try to REFUTE it. Finding: "${f.title}" — ${f.description}`, { schema: VERDICT_SCHEMA, label: `verify-1:${f.title.slice(0, 30)}` }),
77
+ () => agent(`Challenge this finding from a different angle. Is it actually exploitable/impactful? Finding: "${f.title}" — ${f.description}`, { schema: VERDICT_SCHEMA, label: `verify-2:${f.title.slice(0, 30)}` }),
78
+ ]).then(votes => {
79
+ const confirmed = votes.filter(Boolean).filter(v => v.isReal).length;
80
+ return { ...f, verified: confirmed >= 1 };
81
+ })
82
+ )
83
+ );
85
84
 
86
- const confirmedHigh = verifiedFindings.filter(Boolean).filter(f => f.verified);
87
- const lowSeverity = allFindings.filter(f => f.severity !== 'critical' && f.severity !== 'high');
88
- const finalFindings = [...confirmedHigh, ...lowSeverity];
85
+ const confirmedHigh = verifiedFindings.filter(Boolean).filter(f => f.verified);
86
+ const lowSeverity = allFindings.filter(f => f.severity !== 'critical' && f.severity !== 'high');
87
+ const finalFindings = [...confirmedHigh, ...lowSeverity];
89
88
 
90
- phase('Report');
91
- const findingsSummary = finalFindings.slice(0, 20).map(f => `[${f.severity.toUpperCase()}] ${f.title}: ${f.description} → Fix: ${f.remediation}`).join('\n');
92
- const report = await agent(
93
- `Produce a final security and quality report for: "${target}"\n\nFindings:\n${findingsSummary}\n\nIdentify the overall risk level, list findings by severity, and give the 3-5 most important immediate actions.`,
94
- { schema: REPORT_SCHEMA, label: 'report' }
95
- );
89
+ phase('Report');
90
+ const findingsSummary = finalFindings.slice(0, 20).map(f => `[${f.severity.toUpperCase()}] ${f.title}: ${f.description} → Fix: ${f.remediation}`).join('\n');
91
+ const report = await agent(
92
+ `Produce a final security and quality report for: "${target}"\n\nFindings:\n${findingsSummary}\n\nIdentify the overall risk level, list findings by severity, and give the 3-5 most important immediate actions.`,
93
+ { schema: REPORT_SCHEMA, label: 'report' }
94
+ );
96
95
 
97
- return {
98
- target,
99
- audits: audits.filter(Boolean),
100
- report,
101
- stats: { total: allFindings.length, highSeverity: highSeverity.length, confirmed: confirmedHigh.length },
102
- };
103
- }
96
+ return {
97
+ target,
98
+ audits: audits.filter(Boolean),
99
+ report,
100
+ stats: { total: allFindings.length, highSeverity: highSeverity.length, confirmed: confirmedHigh.length },
101
+ };
@@ -10,129 +10,127 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const STRUCTURE_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- entryPoints: { type: 'array', items: { type: 'string' } },
18
- modules: {
19
- type: 'array',
20
- items: {
21
- type: 'object',
22
- properties: {
23
- name: { type: 'string' },
24
- path: { type: 'string' },
25
- responsibility: { type: 'string' },
26
- publicApi: { type: 'array', items: { type: 'string' } },
27
- },
28
- required: ['name', 'path', 'responsibility'],
13
+ const STRUCTURE_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ entryPoints: { type: 'array', items: { type: 'string' } },
17
+ modules: {
18
+ type: 'array',
19
+ items: {
20
+ type: 'object',
21
+ properties: {
22
+ name: { type: 'string' },
23
+ path: { type: 'string' },
24
+ responsibility: { type: 'string' },
25
+ publicApi: { type: 'array', items: { type: 'string' } },
29
26
  },
27
+ required: ['name', 'path', 'responsibility'],
30
28
  },
31
- keyFiles: { type: 'array', items: { type: 'string' } },
32
- dependencies: { type: 'array', items: { type: 'string' } },
33
29
  },
34
- required: ['entryPoints', 'modules', 'keyFiles'],
35
- };
30
+ keyFiles: { type: 'array', items: { type: 'string' } },
31
+ dependencies: { type: 'array', items: { type: 'string' } },
32
+ },
33
+ required: ['entryPoints', 'modules', 'keyFiles'],
34
+ };
36
35
 
37
- const DOMAIN_SCHEMA = {
38
- type: 'object',
39
- properties: {
40
- coreConcepts: {
41
- type: 'array',
42
- items: {
43
- type: 'object',
44
- properties: {
45
- concept: { type: 'string' },
46
- definition: { type: 'string' },
47
- whereImplemented: { type: 'string' },
48
- },
49
- required: ['concept', 'definition'],
36
+ const DOMAIN_SCHEMA = {
37
+ type: 'object',
38
+ properties: {
39
+ coreConcepts: {
40
+ type: 'array',
41
+ items: {
42
+ type: 'object',
43
+ properties: {
44
+ concept: { type: 'string' },
45
+ definition: { type: 'string' },
46
+ whereImplemented: { type: 'string' },
50
47
  },
48
+ required: ['concept', 'definition'],
51
49
  },
52
- businessRules: { type: 'array', items: { type: 'string' } },
53
- dataModels: { type: 'array', items: { type: 'string' } },
54
50
  },
55
- required: ['coreConcepts', 'businessRules'],
56
- };
51
+ businessRules: { type: 'array', items: { type: 'string' } },
52
+ dataModels: { type: 'array', items: { type: 'string' } },
53
+ },
54
+ required: ['coreConcepts', 'businessRules'],
55
+ };
57
56
 
58
- const ARCHITECTURE_SCHEMA = {
59
- type: 'object',
60
- properties: {
61
- pattern: { type: 'string' },
62
- dataFlow: { type: 'string' },
63
- keyDesignDecisions: { type: 'array', items: { type: 'string' } },
64
- integrationPoints: { type: 'array', items: { type: 'string' } },
65
- gotchas: { type: 'array', items: { type: 'string' } },
66
- },
67
- required: ['pattern', 'dataFlow', 'keyDesignDecisions'],
68
- };
57
+ const ARCHITECTURE_SCHEMA = {
58
+ type: 'object',
59
+ properties: {
60
+ pattern: { type: 'string' },
61
+ dataFlow: { type: 'string' },
62
+ keyDesignDecisions: { type: 'array', items: { type: 'string' } },
63
+ integrationPoints: { type: 'array', items: { type: 'string' } },
64
+ gotchas: { type: 'array', items: { type: 'string' } },
65
+ },
66
+ required: ['pattern', 'dataFlow', 'keyDesignDecisions'],
67
+ };
69
68
 
70
- const TOUR_SCHEMA = {
71
- type: 'object',
72
- properties: {
73
- summary: { type: 'string' },
74
- steps: {
75
- type: 'array',
76
- items: {
77
- type: 'object',
78
- properties: {
79
- step: { type: 'number' },
80
- title: { type: 'string' },
81
- fileOrConcept: { type: 'string' },
82
- explanation: { type: 'string' },
83
- whyItMatters: { type: 'string' },
84
- },
85
- required: ['step', 'title', 'explanation', 'whyItMatters'],
69
+ const TOUR_SCHEMA = {
70
+ type: 'object',
71
+ properties: {
72
+ summary: { type: 'string' },
73
+ steps: {
74
+ type: 'array',
75
+ items: {
76
+ type: 'object',
77
+ properties: {
78
+ step: { type: 'number' },
79
+ title: { type: 'string' },
80
+ fileOrConcept: { type: 'string' },
81
+ explanation: { type: 'string' },
82
+ whyItMatters: { type: 'string' },
86
83
  },
84
+ required: ['step', 'title', 'explanation', 'whyItMatters'],
87
85
  },
88
- firstDayChecklist: { type: 'array', items: { type: 'string' } },
89
86
  },
90
- required: ['summary', 'steps', 'firstDayChecklist'],
91
- };
87
+ firstDayChecklist: { type: 'array', items: { type: 'string' } },
88
+ },
89
+ required: ['summary', 'steps', 'firstDayChecklist'],
90
+ };
92
91
 
93
- const target = args || 'current codebase (run from repo root)';
92
+ const target = args || 'current codebase (run from repo root)';
94
93
 
95
- phase('Structure');
96
- log(`Mapping code structure for: ${target}`);
97
- const structure = await agent(
98
- `Map the file structure of: "${target}". Identify: (1) entry points (main files, index files, CLI entry), (2) all major modules with their path and single-line responsibility, (3) the 5-10 most important files a new developer should read first, (4) key external dependencies. Focus on what's PUBLIC — exported functions, routes, APIs.`,
99
- { schema: STRUCTURE_SCHEMA, label: 'structure' }
100
- );
101
- if (!structure) { log('Warning: agent returned null for structure, skipping'); return { target, error: 'agent-null' }; }
102
- log(`Found ${structure.modules.length} modules, ${structure.entryPoints.length} entry points`);
94
+ phase('Structure');
95
+ log(`Mapping code structure for: ${target}`);
96
+ const structure = await agent(
97
+ `Map the file structure of: "${target}". Identify: (1) entry points (main files, index files, CLI entry), (2) all major modules with their path and single-line responsibility, (3) the 5-10 most important files a new developer should read first, (4) key external dependencies. Focus on what's PUBLIC — exported functions, routes, APIs.`,
98
+ { schema: STRUCTURE_SCHEMA, label: 'structure' }
99
+ );
100
+ if (!structure) { log('Warning: agent returned null for structure, skipping'); return { target, error: 'agent-null' }; }
101
+ log(`Found ${structure.modules.length} modules, ${structure.entryPoints.length} entry points`);
103
102
 
104
- phase('Domain');
105
- const moduleContext = structure.modules.slice(0, 10).map(m => `${m.name} (${m.path}): ${m.responsibility}`).join('\n');
106
- const domain = await agent(
107
- `Extract the domain concepts and business logic from: "${target}"\n\nModules:\n${moduleContext}\n\nIdentify: (1) core business concepts and their definitions (what is a "User", "Order", "Pipeline" etc. in THIS codebase), (2) key business rules (what must always be true), (3) the main data models and their relationships. Focus on the WHAT, not the HOW.`,
108
- { schema: DOMAIN_SCHEMA, label: 'domain' }
109
- );
110
- if (!domain) { log('Warning: agent returned null for domain, skipping'); return { target, structure, error: 'agent-null' }; }
111
- log(`${domain.coreConcepts.length} core concepts, ${domain.businessRules.length} business rules identified`);
103
+ phase('Domain');
104
+ const moduleContext = structure.modules.slice(0, 10).map(m => `${m.name} (${m.path}): ${m.responsibility}`).join('\n');
105
+ const domain = await agent(
106
+ `Extract the domain concepts and business logic from: "${target}"\n\nModules:\n${moduleContext}\n\nIdentify: (1) core business concepts and their definitions (what is a "User", "Order", "Pipeline" etc. in THIS codebase), (2) key business rules (what must always be true), (3) the main data models and their relationships. Focus on the WHAT, not the HOW.`,
107
+ { schema: DOMAIN_SCHEMA, label: 'domain' }
108
+ );
109
+ if (!domain) { log('Warning: agent returned null for domain, skipping'); return { target, structure, error: 'agent-null' }; }
110
+ log(`${domain.coreConcepts.length} core concepts, ${domain.businessRules.length} business rules identified`);
112
111
 
113
- phase('Architecture');
114
- const domainContext = domain.coreConcepts.slice(0, 5).map(c => `${c.concept}: ${c.definition}`).join('\n');
115
- const arch = await agent(
116
- `Identify the architectural patterns in: "${target}"\n\nDomain: ${domainContext}\n\nDescribe: (1) the overall architectural pattern (MVC, CQRS, event-driven, layered, etc.), (2) how data flows through the system end-to-end, (3) the top 3-5 key design decisions and WHY they were made, (4) integration points with external systems, (5) gotchas and non-obvious behaviors a new developer must know.`,
117
- { schema: ARCHITECTURE_SCHEMA, label: 'architecture' }
118
- );
119
- if (!arch) { log('Warning: agent returned null for arch, skipping'); return { target, structure, domain, error: 'agent-null' }; }
120
- log(`Architecture: ${arch.pattern}`);
112
+ phase('Architecture');
113
+ const domainContext = domain.coreConcepts.slice(0, 5).map(c => `${c.concept}: ${c.definition}`).join('\n');
114
+ const arch = await agent(
115
+ `Identify the architectural patterns in: "${target}"\n\nDomain: ${domainContext}\n\nDescribe: (1) the overall architectural pattern (MVC, CQRS, event-driven, layered, etc.), (2) how data flows through the system end-to-end, (3) the top 3-5 key design decisions and WHY they were made, (4) integration points with external systems, (5) gotchas and non-obvious behaviors a new developer must know.`,
116
+ { schema: ARCHITECTURE_SCHEMA, label: 'architecture' }
117
+ );
118
+ if (!arch) { log('Warning: agent returned null for arch, skipping'); return { target, structure, domain, error: 'agent-null' }; }
119
+ log(`Architecture: ${arch.pattern}`);
121
120
 
122
- phase('Tour');
123
- const tourContext = `
121
+ phase('Tour');
122
+ const tourContext = `
124
123
  Structure: ${structure.entryPoints.length} entry points, ${structure.modules.length} modules
125
124
  Key files: ${structure.keyFiles.slice(0, 5).join(', ')}
126
125
  Pattern: ${arch.pattern}
127
126
  Data flow: ${arch.dataFlow}
128
127
  Core concepts: ${domain.coreConcepts.slice(0, 4).map(c => c.concept).join(', ')}
129
128
  Gotchas: ${(arch.gotchas || []).slice(0, 3).join('; ')}
130
- `.trim();
129
+ `.trim();
131
130
 
132
- const tour = await agent(
133
- `Create a guided narrative tour of: "${target}" for a developer joining the team today.\n\n${tourContext}\n\nWrite 6-10 sequential steps that progressively reveal the codebase. Each step: a clear title, which file/concept to look at, plain-English explanation, and WHY it matters. Start with the entry point, build to the domain, then reveal the architecture. End with a "first day" checklist of things to read and run.`,
134
- { schema: TOUR_SCHEMA, label: 'tour' }
135
- );
131
+ const tour = await agent(
132
+ `Create a guided narrative tour of: "${target}" for a developer joining the team today.\n\n${tourContext}\n\nWrite 6-10 sequential steps that progressively reveal the codebase. Each step: a clear title, which file/concept to look at, plain-English explanation, and WHY it matters. Start with the entry point, build to the domain, then reveal the architecture. End with a "first day" checklist of things to read and run.`,
133
+ { schema: TOUR_SCHEMA, label: 'tour' }
134
+ );
136
135
 
137
- return { target, structure, domain, arch, tour };
138
- }
136
+ return { target, structure, domain, arch, tour };
@@ -10,76 +10,74 @@ export const meta = {
10
10
  ],
11
11
  };
12
12
 
13
- export default async function run({ agent, parallel, pipeline, phase, log, args, budget }) {
14
- const RESEARCH_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- angle: { type: 'string' },
18
- findings: { type: 'array', items: { type: 'string' } },
19
- sources: { type: 'array', items: { type: 'string' } },
20
- },
21
- required: ['angle', 'findings', 'sources'],
22
- };
13
+ const RESEARCH_SCHEMA = {
14
+ type: 'object',
15
+ properties: {
16
+ angle: { type: 'string' },
17
+ findings: { type: 'array', items: { type: 'string' } },
18
+ sources: { type: 'array', items: { type: 'string' } },
19
+ },
20
+ required: ['angle', 'findings', 'sources'],
21
+ };
23
22
 
24
- const SWOT_SCHEMA = {
25
- type: 'object',
26
- properties: {
27
- strengths: { type: 'array', items: { type: 'string' } },
28
- weaknesses: { type: 'array', items: { type: 'string' } },
29
- opportunities: { type: 'array', items: { type: 'string' } },
30
- threats: { type: 'array', items: { type: 'string' } },
31
- },
32
- required: ['strengths', 'weaknesses', 'opportunities', 'threats'],
33
- };
23
+ const SWOT_SCHEMA = {
24
+ type: 'object',
25
+ properties: {
26
+ strengths: { type: 'array', items: { type: 'string' } },
27
+ weaknesses: { type: 'array', items: { type: 'string' } },
28
+ opportunities: { type: 'array', items: { type: 'string' } },
29
+ threats: { type: 'array', items: { type: 'string' } },
30
+ },
31
+ required: ['strengths', 'weaknesses', 'opportunities', 'threats'],
32
+ };
34
33
 
35
- const POSITION_SCHEMA = {
36
- type: 'object',
37
- properties: {
38
- summary: { type: 'string' },
39
- differentiators: { type: 'array', items: { type: 'string' } },
40
- recommendations: { type: 'array', items: { type: 'string' } },
41
- risks: { type: 'array', items: { type: 'string' } },
42
- },
43
- required: ['summary', 'differentiators', 'recommendations', 'risks'],
44
- };
34
+ const POSITION_SCHEMA = {
35
+ type: 'object',
36
+ properties: {
37
+ summary: { type: 'string' },
38
+ differentiators: { type: 'array', items: { type: 'string' } },
39
+ recommendations: { type: 'array', items: { type: 'string' } },
40
+ risks: { type: 'array', items: { type: 'string' } },
41
+ },
42
+ required: ['summary', 'differentiators', 'recommendations', 'risks'],
43
+ };
45
44
 
46
- const target = args || 'No target specified — pass your product/company/technology as args.';
45
+ const target = args || 'No target specified — pass your product/company/technology as args.';
47
46
 
48
- phase('Scope');
49
- log(`Target: ${target.slice(0, 60)}`);
47
+ phase('Scope');
48
+ log(`Target: ${target.slice(0, 60)}`);
50
49
 
51
- const ANGLES = [
52
- { label: 'product', prompt: `Research the core product features, capabilities, and user experience of: ${target}. Include concrete examples and compare against known alternatives.` },
53
- { label: 'pricing', prompt: `Research the pricing model, tiers, and value proposition of: ${target}. Compare against competitor pricing. Include free vs paid features.` },
54
- { label: 'reviews', prompt: `Research user reviews, sentiment, and common complaints/praise for: ${target}. Look for patterns in G2, Product Hunt, Reddit, and tech forums.` },
55
- { label: 'community', prompt: `Research the developer/user community, ecosystem, integrations, and third-party support for: ${target}. Check GitHub stars, Discord, documentation quality.` },
56
- { label: 'roadmap', prompt: `Research the public roadmap, recent releases, and future direction of: ${target}. Look for changelogs, blog posts, and founder/team communications.` },
57
- ];
50
+ const ANGLES = [
51
+ { label: 'product', prompt: `Research the core product features, capabilities, and user experience of: ${target}. Include concrete examples and compare against known alternatives.` },
52
+ { label: 'pricing', prompt: `Research the pricing model, tiers, and value proposition of: ${target}. Compare against competitor pricing. Include free vs paid features.` },
53
+ { label: 'reviews', prompt: `Research user reviews, sentiment, and common complaints/praise for: ${target}. Look for patterns in G2, Product Hunt, Reddit, and tech forums.` },
54
+ { label: 'community', prompt: `Research the developer/user community, ecosystem, integrations, and third-party support for: ${target}. Check GitHub stars, Discord, documentation quality.` },
55
+ { label: 'roadmap', prompt: `Research the public roadmap, recent releases, and future direction of: ${target}. Look for changelogs, blog posts, and founder/team communications.` },
56
+ ];
58
57
 
59
- phase('Research');
60
- const research = await parallel(
61
- ANGLES.map(a => () => agent(a.prompt, { schema: RESEARCH_SCHEMA, label: `research:${a.label}`, phase: 'Research' }))
62
- );
58
+ phase('Research');
59
+ const research = await parallel(
60
+ ANGLES.map(a => () => agent(a.prompt, { schema: RESEARCH_SCHEMA, label: `research:${a.label}`, phase: 'Research' }))
61
+ );
63
62
 
64
- phase('SWOT');
65
- const allFindings = research.filter(Boolean).map(r => `[${r.angle}] ${r.findings.join(' | ')}`).join('\n');
66
- const swot = await agent(
67
- `Based on this competitive research about "${target}", produce a SWOT analysis:\n\n${allFindings}`,
68
- { schema: SWOT_SCHEMA, label: 'swot' }
69
- );
63
+ phase('SWOT');
64
+ const allFindings = research.filter(Boolean).map(r => `[${r.angle}] ${r.findings.join(' | ')}`).join('\n');
65
+ const swot = await agent(
66
+ `Based on this competitive research about "${target}", produce a SWOT analysis:\n\n${allFindings}`,
67
+ { schema: SWOT_SCHEMA, label: 'swot' }
68
+ );
70
69
 
71
- phase('Position');
72
- const swotText = `S: ${swot.strengths.join(', ')} | W: ${swot.weaknesses.join(', ')} | O: ${swot.opportunities.join(', ')} | T: ${swot.threats.join(', ')}`;
73
- const positioning = await agent(
74
- `Based on this SWOT for "${target}", produce a positioning summary with key differentiators, strategic recommendations, and risks to watch:\n\n${swotText}`,
75
- { schema: POSITION_SCHEMA, label: 'position' }
76
- );
70
+ phase('Position');
71
+ const swotText = `S: ${swot.strengths.join(', ')} | W: ${swot.weaknesses.join(', ')} | O: ${swot.opportunities.join(', ')} | T: ${swot.threats.join(', ')}`;
72
+ const positioning = await agent(
73
+ `Based on this SWOT for "${target}", produce a positioning summary with key differentiators, strategic recommendations, and risks to watch:\n\n${swotText}`,
74
+ { schema: POSITION_SCHEMA, label: 'position' }
75
+ );
77
76
 
78
- return {
79
- target,
80
- research: research.filter(Boolean),
81
- swot,
82
- positioning,
83
- sources: research.filter(Boolean).flatMap(r => r.sources),
84
- };
85
- }
77
+ return {
78
+ target,
79
+ research: research.filter(Boolean),
80
+ swot,
81
+ positioning,
82
+ sources: research.filter(Boolean).flatMap(r => r.sources),
83
+ };