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
@@ -0,0 +1,103 @@
1
+ # OpenCorporates — Global Corporate Registry
2
+
3
+ ## 1. Summary
4
+
5
+ OpenCorporates aggregates corporate registry data from 130+ jurisdictions
6
+ worldwide (~200M companies). Covers US state-level filings (NY DOS, Delaware
7
+ DOC, California SOS, etc.), UK Companies House, EU registries, and most
8
+ common-law jurisdictions.
9
+
10
+ ## 2. Access Methods
11
+
12
+ - **REST API:** `https://api.opencorporates.com/v0.4/`
13
+ - **HTML fallback:** `https://opencorporates.com/companies?q=...`
14
+ - **Auth:** API token required (free tier 500 calls/month, paid plans available)
15
+ - **Rate limit:** Token-bound; un-tokened requests return 401
16
+
17
+ Set `OPENCORPORATES_API_TOKEN` env var. Get a free token at
18
+ https://opencorporates.com/api_accounts/new.
19
+
20
+ ## 3. Data Schema
21
+
22
+ Key fields emitted by `fetch_opencorporates.py`:
23
+
24
+ | Column | Type | Description |
25
+ |--------|------|-------------|
26
+ | `name` | str | Company legal name |
27
+ | `company_number` | str | Registry-assigned number |
28
+ | `jurisdiction_code` | str | e.g. `us_ny`, `us_de`, `gb` |
29
+ | `jurisdiction_name` | str | Human-readable jurisdiction |
30
+ | `incorporation_date` | str | YYYY-MM-DD |
31
+ | `dissolution_date` | str | YYYY-MM-DD (empty if active) |
32
+ | `company_type` | str | Domestic LLC / Foreign Corp / etc. |
33
+ | `status` | str | Active / Inactive / Dissolved |
34
+ | `registered_address` | str | Registered office address |
35
+ | `opencorporates_url` | str | Link to OpenCorporates entity page |
36
+ | `officers_count` | str | Total officers on record |
37
+ | `source` | str | `api`, `html`, or `html-fallback` |
38
+
39
+ ## 4. Coverage
40
+
41
+ - US: all 50 states + DC at state level (LLCs, corps, LPs)
42
+ - International: UK, EU, Canada, Australia, NZ, many APAC + LATAM jurisdictions
43
+ - ~200M company records cumulative
44
+ - Update frequency varies by jurisdiction (UK CH is near-realtime; some
45
+ state registries lag months)
46
+
47
+ ## 5. Cross-Reference Potential
48
+
49
+ - **NYC ACRIS** ↔ `name` (LLC/corp owners of NYC property)
50
+ - **USAspending** ↔ `name` (corporate federal contractors)
51
+ - **SEC EDGAR** ↔ `name` (public companies + their subsidiaries)
52
+ - **ICIJ Offshore** ↔ `name` (international corporate structures)
53
+
54
+ Join key: normalized company name. Some entries have `previous_names` arrays
55
+ which are not currently exported by the fetch script — query OC directly
56
+ for that.
57
+
58
+ ## 6. Data Quality
59
+
60
+ - Company-name spellings vary across re-incorporations and renames
61
+ - Officer records are spottier than company records (many jurisdictions
62
+ don't require officer disclosure)
63
+ - Beneficial-ownership data is generally NOT here — most jurisdictions
64
+ don't require it. UK Companies House has PSC (people with significant
65
+ control) but that's not universal.
66
+ - Cross-jurisdictional links (parent / subsidiary) are based on registry
67
+ filings only; corporate trees are often incomplete
68
+
69
+ ## 7. Acquisition Script
70
+
71
+ Path: `scripts/fetch_opencorporates.py`
72
+
73
+ ```bash
74
+ # Search globally by name
75
+ python3 SKILL_DIR/scripts/fetch_opencorporates.py --query "Example Corp" \
76
+ --out data/oc.csv
77
+
78
+ # Restrict to a jurisdiction
79
+ python3 SKILL_DIR/scripts/fetch_opencorporates.py --query "Example Corp" \
80
+ --jurisdiction us_ny --out data/oc_ny.csv
81
+
82
+ # Set token via env or flag
83
+ OPENCORPORATES_API_TOKEN=xxx python3 SKILL_DIR/scripts/fetch_opencorporates.py \
84
+ --query "Microsoft" --out data/oc.csv
85
+ ```
86
+
87
+ Without a token the script falls back to scraping the HTML search page.
88
+ The fallback is brittle and only fills in `name`, `jurisdiction_code`,
89
+ `opencorporates_url` — set the token for serious work.
90
+
91
+ ## 8. Legal & Licensing
92
+
93
+ - OpenCorporates aggregates public records — the underlying facts are
94
+ public domain
95
+ - OpenCorporates own database is licensed CC-BY-SA-4.0; attribution required
96
+ - API ToS prohibits redistributing the full dataset; per-record reference
97
+ is fine
98
+
99
+ ## 9. References
100
+
101
+ - API docs: https://api.opencorporates.com/documentation/API-Reference
102
+ - Jurisdiction codes: https://api.opencorporates.com/v0.4/jurisdictions.json
103
+ - Schema: https://opencorporates.com/info/our_data
@@ -0,0 +1,83 @@
1
+ # SEC EDGAR — Corporate Filings
2
+
3
+ ## 1. Summary
4
+
5
+ EDGAR (Electronic Data Gathering, Analysis, and Retrieval) is the SEC's system
6
+ for corporate disclosure filings: 10-K (annual), 10-Q (quarterly), 8-K (current
7
+ events), DEF 14A (proxy), Form 4 (insider trading), 13F (institutional holdings).
8
+
9
+ ## 2. Access Methods
10
+
11
+ - **API:** `https://data.sec.gov/submissions/CIK<10-digit-padded>.json` (no auth)
12
+ - **Filing index:** `https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=...`
13
+ - **Full-text search:** `https://efts.sec.gov/LATEST/search-index?q=...`
14
+ - **Auth:** None — requires `User-Agent` header with contact info per SEC policy
15
+ - **Rate limit:** 10 requests/second per IP (enforced)
16
+
17
+ ## 3. Data Schema
18
+
19
+ Key fields emitted by `fetch_sec_edgar.py` (filings index):
20
+
21
+ | Column | Type | Description |
22
+ |--------|------|-------------|
23
+ | `cik` | str | Central Index Key (10-digit padded) |
24
+ | `company_name` | str | Registrant name |
25
+ | `form_type` | str | 10-K, 10-Q, 8-K, etc. |
26
+ | `filing_date` | str | YYYY-MM-DD |
27
+ | `accession_number` | str | Filing accession (e.g. 0000320193-24-000123) |
28
+ | `primary_document` | str | Filename of main document |
29
+ | `filing_url` | str | Direct URL to filing index |
30
+ | `reporting_period` | str | Period of report (where applicable) |
31
+
32
+ ## 4. Coverage
33
+
34
+ - All public US registrants from 1993 → present
35
+ - 1993-2000 has spotty coverage of older filings (paper-to-electronic migration)
36
+ - ~12M filings cumulative
37
+ - Updated within minutes of filing acceptance
38
+
39
+ ## 5. Cross-Reference Potential
40
+
41
+ - **USAspending** ↔ `company_name` (public companies as federal contractors)
42
+ - **Senate LD** ↔ `company_name` (public companies hire lobbyists)
43
+ - **OFAC SDN** ↔ `company_name` (sanctions screening of public registrants)
44
+
45
+ Join key: company name OR CIK if you have it. CIK is canonical and stable.
46
+
47
+ ## 6. Data Quality
48
+
49
+ - Subsidiaries often filed under parent CIK — be careful with name matches
50
+ - Name changes over time (rebrands, acquisitions) — CIK remains constant
51
+ - 10-K Item 1A Risk Factors are free-form text — useful for `web_extract`-style
52
+ parsing, not structured queries
53
+ - Foreign private issuers file 20-F instead of 10-K
54
+
55
+ ## 7. Acquisition Script
56
+
57
+ Path: `scripts/fetch_sec_edgar.py`
58
+
59
+ ```bash
60
+ # By CIK
61
+ python3 SKILL_DIR/scripts/fetch_sec_edgar.py --cik 0000320193 \
62
+ --types 10-K,10-Q --out data/edgar_filings.csv
63
+
64
+ # By company name (resolves to CIK first via name search)
65
+ python3 SKILL_DIR/scripts/fetch_sec_edgar.py --company "APPLE INC" \
66
+ --types 8-K --since 2024-01-01 --out data/edgar_filings.csv
67
+ ```
68
+
69
+ Set `SEC_USER_AGENT` env var with your contact email (SEC requirement).
70
+ Example: `SEC_USER_AGENT="Research example@example.com"`.
71
+
72
+ ## 8. Legal & Licensing
73
+
74
+ - Public record under SEC Rule 24b-2 / 17 CFR § 230.401
75
+ - No commercial use restrictions on filing content
76
+ - SEC asks all bulk users to include a `User-Agent` with contact info and to
77
+ respect 10 req/s — failure to do so can result in IP blocking
78
+
79
+ ## 9. References
80
+
81
+ - Developer docs: https://www.sec.gov/edgar/sec-api-documentation
82
+ - EDGAR full-text search: https://efts.sec.gov/LATEST/search-index
83
+ - Fair access policy: https://www.sec.gov/os/accessing-edgar-data
@@ -0,0 +1,89 @@
1
+ # Senate LD — Lobbying Disclosure (LD-1 / LD-2)
2
+
3
+ ## 1. Summary
4
+
5
+ The Senate Office of Public Records publishes lobbying disclosures under the
6
+ Lobbying Disclosure Act of 1995 (LDA, as amended by HLOGA 2007). LD-1 is
7
+ registration of a new client-lobbyist relationship; LD-2 is the quarterly
8
+ activity report.
9
+
10
+ ## 2. Access Methods
11
+
12
+ - **API:** `https://lda.senate.gov/api/v1/` (no auth required for read-only)
13
+ - **Bulk download:** `https://lda.senate.gov/api/v1/filings/?format=csv` (paginated)
14
+ - **Auth:** Token required for >120 req/hour — register at https://lda.senate.gov/api/auth/register/
15
+ - **Rate limit:** 120 req/hour unauthenticated, 1,200 req/hour authenticated
16
+
17
+ ## 3. Data Schema
18
+
19
+ Key fields emitted by `fetch_senate_ld.py`:
20
+
21
+ | Column | Type | Description |
22
+ |--------|------|-------------|
23
+ | `filing_uuid` | str | Unique filing ID |
24
+ | `filing_type` | str | LD-1, LD-2, LD-203, etc. |
25
+ | `filing_year` | int | Year |
26
+ | `filing_period` | str | Q1/Q2/Q3/Q4 or annual |
27
+ | `registrant_name` | str | Lobbying firm or organization |
28
+ | `registrant_id` | str | Senate-assigned registrant ID |
29
+ | `client_name` | str | Client being represented |
30
+ | `client_id` | str | Senate-assigned client ID |
31
+ | `client_general_description` | str | Client industry / business |
32
+ | `income` | float | LD-2 income from client this quarter (USD) |
33
+ | `expenses` | float | LD-2 expenses (in-house lobbying) |
34
+ | `lobbyists` | str | Semicolon-separated lobbyist names |
35
+ | `issues` | str | Semicolon-separated issue areas |
36
+ | `government_entities` | str | Agencies/chambers contacted |
37
+ | `filing_date` | str | YYYY-MM-DD |
38
+
39
+ ## 4. Coverage
40
+
41
+ - US federal lobbying only (state lobbying handled by individual state ethics offices)
42
+ - 1999 → present (full electronic coverage from 2008)
43
+ - Quarterly reporting cycle (LD-2)
44
+ - ~1M+ filings cumulative
45
+
46
+ ## 5. Cross-Reference Potential
47
+
48
+ - **USAspending** ↔ `client_name` (clients lobbying for contracts)
49
+ - **SEC EDGAR** ↔ `client_name` (public companies as lobbying clients)
50
+ - **OFAC SDN** ↔ `client_name` (sanctions screening of lobbying clients)
51
+
52
+ Join key: normalized client_name. registrant_id and client_id are canonical
53
+ when joining Senate-internal records.
54
+
55
+ ## 6. Data Quality
56
+
57
+ - Many lobbyist names appear in multiple registrants over time (job changes)
58
+ - `issues` and `government_entities` are free-text — Inconsistent capitalization
59
+ - Foreign agents register under FARA (Department of Justice), NOT here
60
+ - Income/expenses are reported in $10,000 brackets in some older filings
61
+
62
+ ## 7. Acquisition Script
63
+
64
+ Path: `scripts/fetch_senate_ld.py`
65
+
66
+ ```bash
67
+ # By client
68
+ python3 SKILL_DIR/scripts/fetch_senate_ld.py --client "EXAMPLE CORP" \
69
+ --year 2024 --out data/lobbying.csv
70
+
71
+ # By registrant (lobbying firm)
72
+ python3 SKILL_DIR/scripts/fetch_senate_ld.py --registrant "BIG K STREET LLP" \
73
+ --year 2024 --out data/lobbying.csv
74
+ ```
75
+
76
+ Set `SENATE_LDA_TOKEN` env var if you have one (or pass `--token`).
77
+ Defaults to anonymous (120 req/hour).
78
+
79
+ ## 8. Legal & Licensing
80
+
81
+ - Public record under 2 U.S.C. § 1604 (LDA)
82
+ - No commercial use restrictions
83
+ - Reuse is unconditional — see Senate Public Records Office disclaimer
84
+
85
+ ## 9. References
86
+
87
+ - API docs: https://lda.senate.gov/api/redoc/v1/
88
+ - LDA guidance: https://lobbyingdisclosure.house.gov/ld_guidance.pdf
89
+ - Senate Public Records: https://lda.senate.gov/
@@ -0,0 +1,97 @@
1
+ # USAspending — Federal Government Contracts and Grants
2
+
3
+ ## 1. Summary
4
+
5
+ USAspending.gov is the official source of federal spending data. Coverage:
6
+ contracts, grants, loans, direct payments, sub-awards. Required by the DATA Act
7
+ of 2014 — all federal agencies must report to a single schema.
8
+
9
+ ## 2. Access Methods
10
+
11
+ - **API v2:** `https://api.usaspending.gov/api/v2/` (no auth, no key)
12
+ - **Bulk:** `https://files.usaspending.gov/` (CSV / Parquet by award type)
13
+ - **Auth:** None
14
+ - **Rate limit:** Not strictly enforced, but be polite — keep to <10 req/s
15
+
16
+ ## 3. Data Schema
17
+
18
+ Key fields emitted by `fetch_usaspending.py` (prime awards):
19
+
20
+ | Column | Type | Description |
21
+ |--------|------|-------------|
22
+ | `award_id` | str | Federal award ID (PIID for contracts, FAIN for grants) |
23
+ | `recipient_name` | str | Awardee legal name |
24
+ | `recipient_uei` | str | Unique Entity Identifier (replaced DUNS in 2022) |
25
+ | `recipient_duns` | str | Legacy DUNS number (historical only) |
26
+ | `recipient_parent_name` | str | Ultimate parent organization |
27
+ | `recipient_state` | str | Recipient state |
28
+ | `awarding_agency` | str | Department / agency name |
29
+ | `awarding_sub_agency` | str | Sub-tier (e.g. DoD → Army) |
30
+ | `award_type` | str | Contract / Grant / Loan / Direct Payment |
31
+ | `award_amount` | float | Current total obligation in USD |
32
+ | `award_date` | str | Action / signed date YYYY-MM-DD |
33
+ | `period_of_performance_start` | str | YYYY-MM-DD |
34
+ | `period_of_performance_end` | str | YYYY-MM-DD |
35
+ | `naics_code` | str | Industry classification |
36
+ | `psc_code` | str | Product / Service Code |
37
+ | `competition_extent` | str | Full / limited / sole-source |
38
+ | `description` | str | Award description (free-text) |
39
+
40
+ ## 4. Coverage
41
+
42
+ - US federal awards only (state/local not included)
43
+ - FY 2008 → present (full coverage from FY 2017)
44
+ - Updated bi-weekly from agency reporting
45
+ - ~100M+ transaction records cumulative
46
+
47
+ ## 5. Cross-Reference Potential
48
+
49
+ - **SEC EDGAR** ↔ `recipient_name` (public companies as contractors)
50
+ - **Senate LD** ↔ `recipient_name` (lobbying clients winning contracts)
51
+ - **OFAC SDN** ↔ `recipient_name` (sanctions screening of contractors — must be
52
+ filtered out by SAM.gov but verify)
53
+ - **ICIJ Offshore** ↔ `recipient_name` (offshore-linked contractors)
54
+
55
+ Join key: normalized recipient name. UEI is canonical when present.
56
+
57
+ ## 6. Data Quality
58
+
59
+ - DUNS → UEI transition (April 2022) — old records have DUNS, new records have UEI
60
+ - Some sub-awards aren't reported (FFATA threshold is $30k)
61
+ - Award amount changes over time (mod actions) — fetch script reports current total
62
+ - `competition_extent` field is free-text in older records — `fetch_usaspending.py`
63
+ normalizes to canonical values
64
+ - Recipient name variations are extensive — "ACME LLC", "Acme L.L.C.", "ACME, INC"
65
+ all appear. Use `entity_resolution.py`.
66
+
67
+ ## 7. Acquisition Script
68
+
69
+ Path: `scripts/fetch_usaspending.py`
70
+
71
+ ```bash
72
+ # By recipient name
73
+ python3 SKILL_DIR/scripts/fetch_usaspending.py --recipient "EXAMPLE CORP" \
74
+ --fy 2024 --out data/contracts.csv
75
+
76
+ # By awarding agency
77
+ python3 SKILL_DIR/scripts/fetch_usaspending.py --agency "Department of Defense" \
78
+ --fy 2024 --out data/contracts.csv
79
+
80
+ # Filter to sole-source only
81
+ python3 SKILL_DIR/scripts/fetch_usaspending.py --recipient "EXAMPLE CORP" \
82
+ --fy 2024 --sole-source-only --out data/contracts.csv
83
+ ```
84
+
85
+ ## 8. Legal & Licensing
86
+
87
+ - Public record under the Federal Funding Accountability and Transparency Act
88
+ (FFATA, 2006) and DATA Act (2014)
89
+ - No commercial use restrictions on the data
90
+ - Personal information of award recipients (e.g. small business owners' addresses
91
+ in some grants) should be handled per the source agency's privacy notice
92
+
93
+ ## 9. References
94
+
95
+ - API docs: https://api.usaspending.gov/
96
+ - Data dictionary: https://www.usaspending.gov/data-dictionary
97
+ - Award schema: https://files.usaspending.gov/docs/Data_Dictionary_Crosswalk.xlsx
@@ -0,0 +1,93 @@
1
+ # Wayback Machine — Internet Archive CDX
2
+
3
+ ## 1. Summary
4
+
5
+ The Internet Archive's Wayback Machine has captured ~900B+ web pages since
6
+ 1996. The CDX server API indexes those captures by URL, timestamp, and
7
+ content hash. Free, anonymous, no auth.
8
+
9
+ ## 2. Access Methods
10
+
11
+ - **CDX server:** `https://web.archive.org/cdx/search/cdx`
12
+ - **Wayback URL:** `https://web.archive.org/web/<timestamp>/<url>`
13
+ - **Save Page Now (write):** `https://web.archive.org/save/<url>` (different API)
14
+ - **Auth:** None
15
+ - **Rate limit:** Generous; be polite (~1 req/s)
16
+
17
+ ## 3. Data Schema
18
+
19
+ Key fields emitted by `fetch_wayback.py`:
20
+
21
+ | Column | Type | Description |
22
+ |--------|------|-------------|
23
+ | `url` | str | Original URL captured |
24
+ | `timestamp` | str | YYYYMMDDHHMMSS (CDX format) |
25
+ | `wayback_url` | str | Direct replay URL |
26
+ | `mimetype` | str | Content-type at capture |
27
+ | `status` | str | HTTP status (typically 200) |
28
+ | `digest` | str | SHA1 of capture content (collapse-friendly) |
29
+ | `length` | str | Byte length of capture |
30
+
31
+ ## 4. Coverage
32
+
33
+ - 1996 → present
34
+ - ~900B+ captures across ~700M domains
35
+ - Updated continuously by automated crawls + manual saves
36
+ - Some domains have aggressive coverage (news), others sparse (private)
37
+
38
+ ## 5. Cross-Reference Potential
39
+
40
+ - **Wikipedia** ↔ Reverse-lookup pages cited as references that have since
41
+ disappeared
42
+ - **News URLs** ↔ Original article content when present-day URLs 404
43
+ - **Corporate websites** ↔ Historical "About" pages, executive bios that
44
+ have been scrubbed
45
+
46
+ The Wayback CDX is most useful as a **content-recovery** layer when other
47
+ sources point to URLs that no longer exist.
48
+
49
+ ## 6. Data Quality
50
+
51
+ - robots.txt-blocked domains may have spotty or no coverage
52
+ - Captures vary in completeness (HTML may be saved without CSS/JS)
53
+ - Some content is excluded by domain owner request (DMCA, etc.)
54
+ - Coverage of "deep links" (URLs with query strings) is uneven
55
+ - Time resolution is per-capture, not continuous — gaps are common
56
+
57
+ ## 7. Acquisition Script
58
+
59
+ Path: `scripts/fetch_wayback.py`
60
+
61
+ ```bash
62
+ # All captures of a specific URL
63
+ python3 SKILL_DIR/scripts/fetch_wayback.py --url "https://example.com/page" \
64
+ --out data/wb.csv
65
+
66
+ # All captures of a host
67
+ python3 SKILL_DIR/scripts/fetch_wayback.py --url "example.com" \
68
+ --match host --out data/wb.csv
69
+
70
+ # All captures of a domain + subdomains
71
+ python3 SKILL_DIR/scripts/fetch_wayback.py --url "example.com" \
72
+ --match domain --out data/wb.csv
73
+
74
+ # Only unique-content captures within a date window
75
+ python3 SKILL_DIR/scripts/fetch_wayback.py --url "example.com" \
76
+ --match host --collapse digest \
77
+ --from-date 2020-01-01 --to-date 2023-12-31 \
78
+ --out data/wb.csv
79
+ ```
80
+
81
+ ## 8. Legal & Licensing
82
+
83
+ - Internet Archive captures are made under fair-use research provisions
84
+ - Replay URLs are stable references — citing them is encouraged
85
+ - Internet Archive non-profit terms of use govern content
86
+ - Some content is rights-restricted; replay may be blocked even if the
87
+ CDX entry shows it as captured
88
+
89
+ ## 9. References
90
+
91
+ - CDX server docs: https://github.com/internetarchive/wayback/blob/master/wayback-cdx-server/README.md
92
+ - Wayback API: https://archive.org/help/wayback_api.php
93
+ - Internet Archive: https://archive.org/
@@ -0,0 +1,107 @@
1
+ # Wikipedia + Wikidata
2
+
3
+ ## 1. Summary
4
+
5
+ Wikipedia is the canonical narrative-bio source for notable people, places,
6
+ and organizations. Wikidata is its structured-data counterpart: ~110M
7
+ items, each with claims, dates, identifiers, and cross-references to
8
+ external authorities (VIAF, ISNI, ORCID, GRID, etc.).
9
+
10
+ Together they're a high-precision entity-resolution layer — the bar for
11
+ inclusion is real, but anything past that bar is well-cross-referenced.
12
+
13
+ ## 2. Access Methods
14
+
15
+ - **Wikipedia OpenSearch:** `https://en.wikipedia.org/w/api.php?action=opensearch`
16
+ - **Wikipedia REST summary:** `https://en.wikipedia.org/api/rest_v1/page/summary/<title>`
17
+ - **Wikidata Action API:** `https://www.wikidata.org/w/api.php?action=wbgetentities`
18
+ - **Wikidata SPARQL:** `https://query.wikidata.org/sparql` (more powerful but aggressively rate-limited)
19
+ - **Auth:** None, but **a meaningful User-Agent is required**
20
+
21
+ Set `HERMES_OSINT_UA` to something identifying (e.g. `your-app/1.0 (you@example.com)`).
22
+ Wikimedia returns HTTP 429 to generic UAs.
23
+
24
+ ## 3. Data Schema
25
+
26
+ Key fields emitted by `fetch_wikipedia.py`:
27
+
28
+ | Column | Type | Description |
29
+ |--------|------|-------------|
30
+ | `source` | str | `wikipedia` or `wikipedia+wikidata` |
31
+ | `label` | str | Wikipedia article title |
32
+ | `description` | str | Short Wikidata description |
33
+ | `qid` | str | Wikidata QID (e.g. Q2283 for Microsoft) |
34
+ | `wikipedia_title`, `wikipedia_url` | str | Article identifier + URL |
35
+ | `wikidata_url` | str | Wikidata entity URL |
36
+ | `instance_of` | str | What kind of thing it is (P31) |
37
+ | `country` | str | Country (P17 for orgs/places, P27 for people) |
38
+ | `occupation` | str | P106 |
39
+ | `employer` | str | P108 |
40
+ | `date_of_birth` | str | P569, YYYY-MM-DD |
41
+ | `place_of_birth` | str | P19 |
42
+ | `summary` | str | Wikipedia REST extract (~1000 chars) |
43
+
44
+ The fetch script uses Wikidata's Action API (NOT SPARQL) for structured
45
+ facts — far more lenient on rate limits.
46
+
47
+ ## 4. Coverage
48
+
49
+ - Wikipedia EN: ~7M articles
50
+ - Wikidata: ~110M items, ~1.5B statements
51
+ - Updated continuously; abuse filters and bots run constantly
52
+ - High notability bar — most private individuals are not in Wikipedia
53
+
54
+ ## 5. Cross-Reference Potential
55
+
56
+ - **All sources** ↔ `label` (entity identity resolution)
57
+ - **SEC EDGAR** ↔ `label` (public companies)
58
+ - **CourtListener** ↔ `label` (parties to notable litigation)
59
+ - **Wikidata external identifiers** (not currently in this fetcher's output)
60
+ link to VIAF, ISNI, ORCID, GRID, GitHub, Twitter, IMDb, ...
61
+
62
+ Join key: Wikidata QID is canonical. Wikipedia titles are stable for
63
+ most articles but can be renamed.
64
+
65
+ ## 6. Data Quality
66
+
67
+ - Notability filter — only notable entities (criteria vary by topic)
68
+ - Recency lag — current events take days to weeks to be reflected
69
+ - POV / vandalism — moderated, but edits between sweeps can be bad
70
+ - Living-persons biographies have stricter sourcing requirements
71
+ - Wikidata claims have qualifiers and references — the fetch script
72
+ doesn't currently export them
73
+
74
+ ## 7. Acquisition Script
75
+
76
+ Path: `scripts/fetch_wikipedia.py`
77
+
78
+ ```bash
79
+ # Look up a notable entity
80
+ python3 SKILL_DIR/scripts/fetch_wikipedia.py --query "Microsoft" --out data/wp.csv
81
+
82
+ # A specific person
83
+ python3 SKILL_DIR/scripts/fetch_wikipedia.py --query "Bill Gates" --out data/wp_bg.csv
84
+
85
+ # Skip the Wikidata enrichment for speed
86
+ python3 SKILL_DIR/scripts/fetch_wikipedia.py --query "Microsoft" --no-wikidata \
87
+ --limit 5 --out data/wp.csv
88
+ ```
89
+
90
+ The OpenSearch is fuzzy — `--limit 5` returns the top 5 Wikipedia article
91
+ matches. Each is enriched with the QID + structured facts unless
92
+ `--no-wikidata` is passed.
93
+
94
+ ## 8. Legal & Licensing
95
+
96
+ - Wikipedia text: CC-BY-SA-3.0 / GFDL
97
+ - Wikidata claims: CC0 (public domain)
98
+ - API ToS: respect rate limits, identify your agent
99
+ - Commercial use allowed with attribution
100
+
101
+ ## 9. References
102
+
103
+ - Wikipedia OpenSearch: https://www.mediawiki.org/wiki/API:Opensearch
104
+ - Wikipedia REST: https://en.wikipedia.org/api/rest_v1/
105
+ - Wikidata Action API: https://www.wikidata.org/wiki/Wikidata:Data_access
106
+ - Wikidata SPARQL: https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service
107
+ - User-Agent policy: https://meta.wikimedia.org/wiki/User-Agent_policy
@@ -0,0 +1,82 @@
1
+ """Tiny stdlib HTTP helper used by fetch_*.py scripts.
2
+
3
+ Provides polite retry + JSON convenience + User-Agent enforcement.
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import json
8
+ import os
9
+ import time
10
+ import urllib.error
11
+ import urllib.parse
12
+ import urllib.request
13
+
14
+ DEFAULT_UA = (
15
+ "hermes-osint-investigation/0.2 "
16
+ "(+https://github.com/NousResearch/hermes-agent; "
17
+ "set HERMES_OSINT_UA env var to identify yourself per "
18
+ "Wikimedia / SEC fair-use guidance)"
19
+ )
20
+
21
+
22
+ def get(
23
+ url: str,
24
+ *,
25
+ params: dict | None = None,
26
+ headers: dict | None = None,
27
+ user_agent: str | None = None,
28
+ max_retries: int = 3,
29
+ backoff: float = 1.5,
30
+ timeout: float = 30.0,
31
+ ) -> bytes:
32
+ """GET with retry on 5xx and Retry-After honoring.
33
+
34
+ 429 (rate-limit) is raised IMMEDIATELY with a clear message — retrying
35
+ when the upstream says "you're over quota" just wastes time. The caller
36
+ should slow down or supply real credentials.
37
+ """
38
+ if params:
39
+ sep = "&" if "?" in url else "?"
40
+ url = f"{url}{sep}{urllib.parse.urlencode(params)}"
41
+ h = {"User-Agent": user_agent or os.environ.get("HERMES_OSINT_UA", DEFAULT_UA)}
42
+ if headers:
43
+ h.update(headers)
44
+
45
+ last_err: Exception | None = None
46
+ for attempt in range(max_retries + 1):
47
+ req = urllib.request.Request(url, headers=h)
48
+ try:
49
+ with urllib.request.urlopen(req, timeout=timeout) as resp:
50
+ return resp.read()
51
+ except urllib.error.HTTPError as e:
52
+ if e.code == 429:
53
+ # Surface immediately. Read the body so the caller sees the
54
+ # provider's actual message ("OVER_RATE_LIMIT" etc.).
55
+ try:
56
+ body = e.read(2048).decode("utf-8", errors="replace")
57
+ except Exception: # noqa: BLE001
58
+ body = ""
59
+ raise RuntimeError(
60
+ f"HTTP 429 rate-limited by {urllib.parse.urlsplit(url).netloc}. "
61
+ f"Slow down or supply a real API key. Body: {body[:300]}"
62
+ ) from e
63
+ if e.code in {500, 502, 503, 504} and attempt < max_retries:
64
+ retry_after = e.headers.get("Retry-After") if e.headers else None
65
+ wait = float(retry_after) if (retry_after and retry_after.isdigit()) else backoff ** (attempt + 1)
66
+ time.sleep(wait)
67
+ last_err = e
68
+ continue
69
+ raise
70
+ except urllib.error.URLError as e:
71
+ if attempt < max_retries:
72
+ time.sleep(backoff ** (attempt + 1))
73
+ last_err = e
74
+ continue
75
+ raise
76
+ if last_err:
77
+ raise last_err
78
+ raise RuntimeError("unreachable")
79
+
80
+
81
+ def get_json(url: str, **kwargs) -> dict | list:
82
+ return json.loads(get(url, **kwargs).decode("utf-8"))