@hybridlabor-api/aos 4.4.0 → 4.4.2-beta.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 (306) hide show
  1. package/.agents/skills/firecrawl/SKILL.md +149 -0
  2. package/.agents/skills/firecrawl/rules/install.md +82 -0
  3. package/.agents/skills/firecrawl/rules/security.md +26 -0
  4. package/.agents/skills/firecrawl-agent/SKILL.md +58 -0
  5. package/.agents/skills/firecrawl-build/SKILL.md +39 -0
  6. package/.agents/skills/firecrawl-build-interact/SKILL.md +68 -0
  7. package/.agents/skills/firecrawl-build-onboarding/SKILL.md +103 -0
  8. package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
  9. package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
  10. package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
  11. package/.agents/skills/firecrawl-build-scrape/SKILL.md +69 -0
  12. package/.agents/skills/firecrawl-build-search/SKILL.md +69 -0
  13. package/.agents/skills/firecrawl-crawl/SKILL.md +59 -0
  14. package/.agents/skills/firecrawl-download/SKILL.md +70 -0
  15. package/.agents/skills/firecrawl-interact/SKILL.md +84 -0
  16. package/.agents/skills/firecrawl-map/SKILL.md +51 -0
  17. package/.agents/skills/firecrawl-scrape/SKILL.md +69 -0
  18. package/.agents/skills/firecrawl-search/SKILL.md +60 -0
  19. package/.claude/hooks/memb-inject.mjs +6 -0
  20. package/CLAUDE.md +573 -0
  21. package/README.de.md +0 -8
  22. package/README.md +0 -8
  23. package/README.pt.md +0 -8
  24. package/assets/brand/ao-ant-mark.svg +91 -0
  25. package/assets/brand/bdb-core-mark.svg +34 -0
  26. package/assets/brand/heimdall-guardian-mark.svg +16 -0
  27. package/assets/brand/memb-crystal-mark.svg +18 -0
  28. package/bin/aos-config.mjs +89 -0
  29. package/bin/aos-dashboard.mjs +608 -0
  30. package/bin/aos-uninstall.mjs +227 -0
  31. package/docs/sessions/audit-2026-09-14-silent-failures.md +114 -0
  32. package/docs/skills_table.md +0 -3
  33. package/installer.js +428 -237
  34. package/mcps/RhinoMCP/cc-plugin/.claude/settings.json +10 -0
  35. package/mcps/after-effects-mcp/build/index.js +840 -0
  36. package/mcps/after-effects-mcp/build/scripts/applyEffect.jsx +153 -0
  37. package/mcps/after-effects-mcp/build/scripts/applyEffectTemplate.jsx +218 -0
  38. package/mcps/after-effects-mcp/build/scripts/createComposition.jsx +71 -0
  39. package/mcps/after-effects-mcp/build/scripts/createShapeLayer.jsx +147 -0
  40. package/mcps/after-effects-mcp/build/scripts/createSolidLayer.jsx +114 -0
  41. package/mcps/after-effects-mcp/build/scripts/createTextLayer.jsx +115 -0
  42. package/mcps/after-effects-mcp/build/scripts/getLayerInfo.jsx +192 -0
  43. package/mcps/after-effects-mcp/build/scripts/getProjectInfo.jsx +90 -0
  44. package/mcps/after-effects-mcp/build/scripts/listCompositions.jsx +50 -0
  45. package/mcps/after-effects-mcp/build/scripts/mcp-bridge-auto.jsx +1773 -0
  46. package/mcps/after-effects-mcp/build/scripts/setLayerProperties.jsx +160 -0
  47. package/mcps/computer-use-mcp/dist/client.d.ts +150 -0
  48. package/mcps/computer-use-mcp/dist/client.js +136 -0
  49. package/mcps/computer-use-mcp/dist/entrypoint.d.ts +16 -0
  50. package/mcps/computer-use-mcp/dist/entrypoint.js +26 -0
  51. package/mcps/computer-use-mcp/dist/native.d.ts +212 -0
  52. package/mcps/computer-use-mcp/dist/native.js +50 -0
  53. package/mcps/computer-use-mcp/dist/server.d.ts +32 -0
  54. package/mcps/computer-use-mcp/dist/server.js +342 -0
  55. package/mcps/computer-use-mcp/dist/session.d.ts +101 -0
  56. package/mcps/computer-use-mcp/dist/session.js +2372 -0
  57. package/package.json +13 -4
  58. package/skills/global_config/aos-project-init/SKILL.md +97 -130
  59. package/skills/global_config/aos-project-init/assets/openwikiignore.template +62 -0
  60. package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +38 -1
  61. package/skills/global_config/aos-setup/SKILL.md +110 -11
  62. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +48 -4
  63. package/skills/global_config/ask-tim/SKILL.md +2 -7
  64. package/skills/global_config/openwiki-skill/scripts/openwiki_daemon.py +65 -12
  65. package/bin/setup-saas.mjs +0 -792
  66. package/mcps/blender-mcp-server/.dockerignore +0 -19
  67. package/mcps/blender-mcp-server/.github/workflows/ci.yml +0 -67
  68. package/mcps/blender-mcp-server/.github/workflows/publish-pypi.yml +0 -54
  69. package/mcps/blender-mcp-server/CHANGELOG.md +0 -64
  70. package/mcps/blender-mcp-server/CONTRIBUTING.md +0 -107
  71. package/mcps/blender-mcp-server/Dockerfile +0 -19
  72. package/mcps/blender-mcp-server/LICENSE +0 -21
  73. package/mcps/blender-mcp-server/README.md +0 -409
  74. package/mcps/blender-mcp-server/addon/__init__.py +0 -1440
  75. package/mcps/blender-mcp-server/addon/models.py +0 -223
  76. package/mcps/blender-mcp-server/pyproject.toml +0 -120
  77. package/mcps/blender-mcp-server/scripts/blender_bridge_request.py +0 -71
  78. package/mcps/blender-mcp-server/scripts/blender_create_test_cube.py +0 -49
  79. package/mcps/blender-mcp-server/scripts/blender_scene_info.py +0 -38
  80. package/mcps/blender-mcp-server/scripts/build_addon_zip.sh +0 -29
  81. package/mcps/blender-mcp-server/scripts/demos/README.md +0 -186
  82. package/mcps/blender-mcp-server/scripts/demos/dam_break_scene.py +0 -276
  83. package/mcps/blender-mcp-server/scripts/demos/open_dam_break_gui.py +0 -33
  84. package/mcps/blender-mcp-server/scripts/demos/pipe_movement_study.py +0 -518
  85. package/mcps/blender-mcp-server/scripts/demos/pipe_pressure_failure_scene.py +0 -806
  86. package/mcps/blender-mcp-server/scripts/demos/procedural_dam_break_scene.py +0 -600
  87. package/mcps/blender-mcp-server/scripts/demos/run_dam_break.py +0 -510
  88. package/mcps/blender-mcp-server/scripts/launch_blender_gui.py +0 -41
  89. package/mcps/blender-mcp-server/scripts/library/README.md +0 -64
  90. package/mcps/blender-mcp-server/scripts/library/apply_transforms.py +0 -46
  91. package/mcps/blender-mcp-server/scripts/library/camera.py +0 -51
  92. package/mcps/blender-mcp-server/scripts/library/collections.py +0 -65
  93. package/mcps/blender-mcp-server/scripts/library/create_mesh.py +0 -41
  94. package/mcps/blender-mcp-server/scripts/library/effector.py +0 -48
  95. package/mcps/blender-mcp-server/scripts/library/fluid_domain.py +0 -80
  96. package/mcps/blender-mcp-server/scripts/library/fluid_inflow.py +0 -98
  97. package/mcps/blender-mcp-server/scripts/library/frame_range.py +0 -35
  98. package/mcps/blender-mcp-server/scripts/library/keyframes.py +0 -59
  99. package/mcps/blender-mcp-server/scripts/library/rigid_body.py +0 -52
  100. package/mcps/blender-mcp-server/scripts/library/save_blend.py +0 -40
  101. package/mcps/blender-mcp-server/scripts/server_start.sh +0 -26
  102. package/mcps/blender-mcp-server/src/blender_mcp_server/__init__.py +0 -3
  103. package/mcps/blender-mcp-server/src/blender_mcp_server/headless.py +0 -330
  104. package/mcps/blender-mcp-server/src/blender_mcp_server/server.py +0 -606
  105. package/mcps/davinci-mcp-professional/.bandit +0 -35
  106. package/mcps/davinci-mcp-professional/.claude/commands/security-review.md +0 -191
  107. package/mcps/davinci-mcp-professional/.claude/settings.json +0 -1
  108. package/mcps/davinci-mcp-professional/.editorconfig +0 -27
  109. package/mcps/davinci-mcp-professional/.gitattributes +0 -207
  110. package/mcps/davinci-mcp-professional/.github/CODEOWNERS +0 -2
  111. package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
  112. package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  113. package/mcps/davinci-mcp-professional/.github/PULL_REQUEST_TEMPLATE.md +0 -20
  114. package/mcps/davinci-mcp-professional/.github/SECURITY.md +0 -97
  115. package/mcps/davinci-mcp-professional/.github/dependabot.yml +0 -27
  116. package/mcps/davinci-mcp-professional/.github/workflows/ci.yml +0 -39
  117. package/mcps/davinci-mcp-professional/ATTRIBUTION.md +0 -4
  118. package/mcps/davinci-mcp-professional/AUTHORS.md +0 -9
  119. package/mcps/davinci-mcp-professional/BUGS.md +0 -55
  120. package/mcps/davinci-mcp-professional/CLAUDE.md +0 -229
  121. package/mcps/davinci-mcp-professional/CONTRIBUTING.md +0 -51
  122. package/mcps/davinci-mcp-professional/COPYING.md +0 -228
  123. package/mcps/davinci-mcp-professional/Doxyfile +0 -379
  124. package/mcps/davinci-mcp-professional/README.md +0 -143
  125. package/mcps/davinci-mcp-professional/SECURITY.md +0 -40
  126. package/mcps/davinci-mcp-professional/USING.md +0 -301
  127. package/mcps/davinci-mcp-professional/VERSION.md +0 -13
  128. package/mcps/davinci-mcp-professional/build.py +0 -169
  129. package/mcps/davinci-mcp-professional/claude_desktop_config_template.json +0 -11
  130. package/mcps/davinci-mcp-professional/hooks/ci-check.sh +0 -29
  131. package/mcps/davinci-mcp-professional/hooks/pre-push +0 -46
  132. package/mcps/davinci-mcp-professional/main.py +0 -40
  133. package/mcps/davinci-mcp-professional/mcp_server.py +0 -30
  134. package/mcps/davinci-mcp-professional/pyproject.toml +0 -115
  135. package/mcps/davinci-mcp-professional/security_audit.py +0 -379
  136. package/mcps/davinci-mcp-professional/src/davinci_mcp/__init__.py +0 -19
  137. package/mcps/davinci-mcp-professional/src/davinci_mcp/cli.py +0 -138
  138. package/mcps/davinci-mcp-professional/src/davinci_mcp/resolve_client.py +0 -342
  139. package/mcps/davinci-mcp-professional/src/davinci_mcp/resources/__init__.py +0 -60
  140. package/mcps/davinci-mcp-professional/src/davinci_mcp/server.py +0 -185
  141. package/mcps/davinci-mcp-professional/src/davinci_mcp/tools/__init__.py +0 -146
  142. package/mcps/davinci-mcp-professional/src/davinci_mcp/types.py +0 -125
  143. package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/__init__.py +0 -19
  144. package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/platform.py +0 -239
  145. package/mcps/davinci-mcp-professional/test.py +0 -186
  146. package/mcps/davinci-mcp-professional/uv.lock +0 -2073
  147. package/mcps/davinci-resolve-mcp/.claude/skills/media-analysis.md +0 -44
  148. package/mcps/davinci-resolve-mcp/.clinerules +0 -17
  149. package/mcps/davinci-resolve-mcp/.cursorrules +0 -17
  150. package/mcps/davinci-resolve-mcp/.github/copilot-instructions.md +0 -17
  151. package/mcps/davinci-resolve-mcp/.github/workflows/npm-publish.yml +0 -109
  152. package/mcps/davinci-resolve-mcp/.windsurfrules +0 -17
  153. package/mcps/davinci-resolve-mcp/AGENTS.md +0 -114
  154. package/mcps/davinci-resolve-mcp/CHANGELOG.md +0 -2648
  155. package/mcps/davinci-resolve-mcp/CLAUDE.md +0 -15
  156. package/mcps/davinci-resolve-mcp/LICENSE +0 -21
  157. package/mcps/davinci-resolve-mcp/README.md +0 -173
  158. package/mcps/davinci-resolve-mcp/SECURITY.md +0 -53
  159. package/mcps/davinci-resolve-mcp/bin/davinci-resolve-mcp.mjs +0 -450
  160. package/mcps/davinci-resolve-mcp/examples/README.md +0 -53
  161. package/mcps/davinci-resolve-mcp/examples/markers/README.md +0 -81
  162. package/mcps/davinci-resolve-mcp/examples/media/README.md +0 -94
  163. package/mcps/davinci-resolve-mcp/examples/timeline/README.md +0 -98
  164. package/mcps/davinci-resolve-mcp/install.py +0 -1687
  165. package/mcps/davinci-resolve-mcp/package.json +0 -52
  166. package/mcps/davinci-resolve-mcp/release-notes/v2.22.0.md +0 -51
  167. package/mcps/davinci-resolve-mcp/release-notes/v2.23.0.md +0 -51
  168. package/mcps/davinci-resolve-mcp/release-notes/v2.23.1.md +0 -35
  169. package/mcps/davinci-resolve-mcp/release-notes/v2.24.1.md +0 -32
  170. package/mcps/davinci-resolve-mcp/scripts/audit_api_parity.py +0 -275
  171. package/mcps/davinci-resolve-mcp/scripts/audit_readwrite_symmetry.py +0 -80
  172. package/mcps/davinci-resolve-mcp/scripts/doctor.py +0 -227
  173. package/mcps/davinci-resolve-mcp/scripts/gen_api_limitations.py +0 -144
  174. package/mcps/davinci-resolve-mcp/scripts/live_media_analysis_polish_probe.py +0 -65
  175. package/mcps/davinci-resolve-mcp/scripts/measure_bridge_cost.py +0 -65
  176. package/mcps/davinci-resolve-mcp/scripts/regen_panel_screenshots.py +0 -76
  177. package/mcps/davinci-resolve-mcp/src/__init__.py +0 -3
  178. package/mcps/davinci-resolve-mcp/src/analysis_dashboard.py +0 -15505
  179. package/mcps/davinci-resolve-mcp/src/batch_cli.py +0 -540
  180. package/mcps/davinci-resolve-mcp/src/control_panel.py +0 -13
  181. package/mcps/davinci-resolve-mcp/src/granular/__init__.py +0 -17
  182. package/mcps/davinci-resolve-mcp/src/granular/common.py +0 -741
  183. package/mcps/davinci-resolve-mcp/src/granular/folder.py +0 -420
  184. package/mcps/davinci-resolve-mcp/src/granular/gallery.py +0 -306
  185. package/mcps/davinci-resolve-mcp/src/granular/graph.py +0 -309
  186. package/mcps/davinci-resolve-mcp/src/granular/media_pool.py +0 -679
  187. package/mcps/davinci-resolve-mcp/src/granular/media_pool_item.py +0 -1020
  188. package/mcps/davinci-resolve-mcp/src/granular/media_storage.py +0 -179
  189. package/mcps/davinci-resolve-mcp/src/granular/project.py +0 -1654
  190. package/mcps/davinci-resolve-mcp/src/granular/resolve_control.py +0 -538
  191. package/mcps/davinci-resolve-mcp/src/granular/timeline.py +0 -1075
  192. package/mcps/davinci-resolve-mcp/src/granular/timeline_item.py +0 -2251
  193. package/mcps/davinci-resolve-mcp/src/resolve_mcp_server.py +0 -43
  194. package/mcps/davinci-resolve-mcp/src/server.py +0 -24116
  195. package/mcps/davinci-resolve-mcp/src/utils/__init__.py +0 -3
  196. package/mcps/davinci-resolve-mcp/src/utils/actor_identity.py +0 -46
  197. package/mcps/davinci-resolve-mcp/src/utils/analysis_caps.py +0 -678
  198. package/mcps/davinci-resolve-mcp/src/utils/analysis_memory.py +0 -755
  199. package/mcps/davinci-resolve-mcp/src/utils/analysis_runs.py +0 -307
  200. package/mcps/davinci-resolve-mcp/src/utils/analysis_store.py +0 -945
  201. package/mcps/davinci-resolve-mcp/src/utils/api_truth.py +0 -525
  202. package/mcps/davinci-resolve-mcp/src/utils/app_control.py +0 -319
  203. package/mcps/davinci-resolve-mcp/src/utils/audio_fairlight_live_probe.py +0 -263
  204. package/mcps/davinci-resolve-mcp/src/utils/brain_edits.py +0 -387
  205. package/mcps/davinci-resolve-mcp/src/utils/bridge_metrics.py +0 -76
  206. package/mcps/davinci-resolve-mcp/src/utils/cdl.py +0 -20
  207. package/mcps/davinci-resolve-mcp/src/utils/clip_query.py +0 -85
  208. package/mcps/davinci-resolve-mcp/src/utils/cloud_operations.py +0 -192
  209. package/mcps/davinci-resolve-mcp/src/utils/color_grade_live_probe.py +0 -444
  210. package/mcps/davinci-resolve-mcp/src/utils/contracts.py +0 -102
  211. package/mcps/davinci-resolve-mcp/src/utils/cut_ir.py +0 -115
  212. package/mcps/davinci-resolve-mcp/src/utils/dctl_templates.py +0 -368
  213. package/mcps/davinci-resolve-mcp/src/utils/deep_vision.py +0 -643
  214. package/mcps/davinci-resolve-mcp/src/utils/destructive_hook.py +0 -606
  215. package/mcps/davinci-resolve-mcp/src/utils/edit_engine.py +0 -737
  216. package/mcps/davinci-resolve-mcp/src/utils/embeddings.py +0 -922
  217. package/mcps/davinci-resolve-mcp/src/utils/entities.py +0 -579
  218. package/mcps/davinci-resolve-mcp/src/utils/extension_authoring_live_probe.py +0 -292
  219. package/mcps/davinci-resolve-mcp/src/utils/failure_tracker.py +0 -119
  220. package/mcps/davinci-resolve-mcp/src/utils/fuse_templates.py +0 -1968
  221. package/mcps/davinci-resolve-mcp/src/utils/fusion_composition_live_probe.py +0 -284
  222. package/mcps/davinci-resolve-mcp/src/utils/fusion_group_settings.py +0 -334
  223. package/mcps/davinci-resolve-mcp/src/utils/layout_presets.py +0 -333
  224. package/mcps/davinci-resolve-mcp/src/utils/mcp_stdio.py +0 -32
  225. package/mcps/davinci-resolve-mcp/src/utils/mcp_transport.py +0 -128
  226. package/mcps/davinci-resolve-mcp/src/utils/media_analysis.py +0 -7690
  227. package/mcps/davinci-resolve-mcp/src/utils/media_analysis_jobs.py +0 -805
  228. package/mcps/davinci-resolve-mcp/src/utils/media_pool_changes.py +0 -121
  229. package/mcps/davinci-resolve-mcp/src/utils/media_pool_ingest_live_probe.py +0 -592
  230. package/mcps/davinci-resolve-mcp/src/utils/multicam.py +0 -393
  231. package/mcps/davinci-resolve-mcp/src/utils/object_inspection.py +0 -301
  232. package/mcps/davinci-resolve-mcp/src/utils/page_lock.py +0 -75
  233. package/mcps/davinci-resolve-mcp/src/utils/platform.py +0 -157
  234. package/mcps/davinci-resolve-mcp/src/utils/proc.py +0 -26
  235. package/mcps/davinci-resolve-mcp/src/utils/project_cleanup.py +0 -73
  236. package/mcps/davinci-resolve-mcp/src/utils/project_lifecycle_live_probe.py +0 -376
  237. package/mcps/davinci-resolve-mcp/src/utils/project_lint.py +0 -131
  238. package/mcps/davinci-resolve-mcp/src/utils/project_properties.py +0 -601
  239. package/mcps/davinci-resolve-mcp/src/utils/project_spec.py +0 -459
  240. package/mcps/davinci-resolve-mcp/src/utils/readback.py +0 -91
  241. package/mcps/davinci-resolve-mcp/src/utils/render_deliver_live_probe.py +0 -384
  242. package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_governance.py +0 -214
  243. package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_ledger.py +0 -244
  244. package/mcps/davinci-resolve-mcp/src/utils/resolve_busy.py +0 -171
  245. package/mcps/davinci-resolve-mcp/src/utils/resolve_connection.py +0 -77
  246. package/mcps/davinci-resolve-mcp/src/utils/review_annotation_live_probe.py +0 -352
  247. package/mcps/davinci-resolve-mcp/src/utils/script_templates.py +0 -1193
  248. package/mcps/davinci-resolve-mcp/src/utils/shot_relationships.py +0 -544
  249. package/mcps/davinci-resolve-mcp/src/utils/structural_diff.py +0 -175
  250. package/mcps/davinci-resolve-mcp/src/utils/sync_detection.py +0 -889
  251. package/mcps/davinci-resolve-mcp/src/utils/timeline_brain_db.py +0 -826
  252. package/mcps/davinci-resolve-mcp/src/utils/timeline_conform_live_probe.py +0 -280
  253. package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_live_probe.py +0 -1092
  254. package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_probe.py +0 -185
  255. package/mcps/davinci-resolve-mcp/src/utils/timeline_title_text.py +0 -87
  256. package/mcps/davinci-resolve-mcp/src/utils/timeline_versioning.py +0 -730
  257. package/mcps/davinci-resolve-mcp/src/utils/update_check.py +0 -685
  258. package/mcps/vectorworks-mcp/.dockerignore +0 -8
  259. package/mcps/vectorworks-mcp/Dockerfile +0 -28
  260. package/mcps/vectorworks-mcp/README.md +0 -156
  261. package/mcps/vectorworks-mcp/app/__init__.py +0 -2
  262. package/mcps/vectorworks-mcp/app/api.py +0 -52
  263. package/mcps/vectorworks-mcp/app/chunking.py +0 -56
  264. package/mcps/vectorworks-mcp/app/config.py +0 -29
  265. package/mcps/vectorworks-mcp/app/embeddings.py +0 -28
  266. package/mcps/vectorworks-mcp/app/indexer.py +0 -106
  267. package/mcps/vectorworks-mcp/app/main.py +0 -33
  268. package/mcps/vectorworks-mcp/app/mcp_server.py +0 -71
  269. package/mcps/vectorworks-mcp/app/search.py +0 -54
  270. package/mcps/vectorworks-mcp/app/utils.py +0 -14
  271. package/mcps/vectorworks-mcp/data/.gitkeep +0 -1
  272. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_PluginScript.htm +0 -95
  273. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_ScriptEditor.htm +0 -266
  274. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_Scripting.htm +0 -106
  275. package/mcps/vectorworks-mcp/data/vw-app-help/VW2023_CreatingScriptedPlugins.htm +0 -327
  276. package/mcps/vectorworks-mcp/data/vw-app-help/VW2024_RunningScripts.htm +0 -116
  277. package/mcps/vectorworks-mcp/data/vw-devwiki/VS_Function_Reference_category.html +0 -2129
  278. package/mcps/vectorworks-mcp/data/vw-jp-ref/ObjectsSymbols.html +0 -2035
  279. package/mcps/vectorworks-mcp/data/vw-jp-ref/ScriptFunctionReference.html +0 -29
  280. package/mcps/vectorworks-mcp/design.md +0 -57
  281. package/mcps/vectorworks-mcp/docker-compose.yml +0 -18
  282. package/mcps/vectorworks-mcp/index/.gitkeep +0 -1
  283. package/mcps/vectorworks-mcp/index/meta.jsonl +0 -3956
  284. package/mcps/vectorworks-mcp/index/vw.faiss +0 -0
  285. package/mcps/vectorworks-mcp/requirements.txt +0 -10
  286. package/mcps/vectorworks-mcp/scripts/fetch_docs_minimal.sh +0 -84
  287. package/mcps/vectorworks-mcp/scripts/fetch_github_vectorworks.sh +0 -85
  288. package/mcps/vectorworks-mcp/templates/index.html +0 -40
  289. package/scripts/ecosystem-health-audit.js +0 -257
  290. package/skills/bdb-dev-os-skill/SKILL.md +0 -49
  291. package/skills/bdb-dev-os-skill/package.json +0 -11
  292. package/skills/bdbsaastraining/SKILL.md +0 -316
  293. package/skills/bdbsaastraining/references/exam-pool.md +0 -313
  294. package/skills/bdbsaastraining/references/interaction-modes.md +0 -94
  295. package/skills/bdbsaastraining/references/track-a-ai-agent.md +0 -111
  296. package/skills/bdbsaastraining/references/track-b-wordpress.md +0 -111
  297. package/skills/bdbsaastraining/references/track-c-mailserver.md +0 -107
  298. package/skills/bdbsaastraining/references/track-d-debian.md +0 -109
  299. package/skills/bdbsaastraining/references/track-e-custom.md +0 -83
  300. package/skills/bdbsaastraining/scripts/build_profile.py +0 -529
  301. package/skills/bdbsaastraining/scripts/generate_certificate.py +0 -161
  302. package/skills/bdbsaastraining/scripts/preflight_check.sh +0 -150
  303. package/skills/bdbsaastraining/templates/certificate_template.html +0 -508
  304. package/skills/global_config/bdb-ecosystem-health/SKILL.md +0 -68
  305. package/skills/global_config/bdbsaas-ops/SKILL.md +0 -16
  306. package/skills/global_config/bdbsaashost/SKILL.md +0 -125
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: firecrawl-build-search
3
+ description: Integrate Firecrawl `/search` into product code and agent workflows. Use when an app needs discovery before extraction, when the feature starts with a query instead of a URL, or when the system should search the web and optionally hydrate result content.
4
+ category: library
5
+ license: ISC
6
+ metadata:
7
+ author: firecrawl
8
+ version: "0.1.0"
9
+ homepage: https://www.firecrawl.dev
10
+ source: https://github.com/firecrawl/skills
11
+ inputs:
12
+ - name: FIRECRAWL_API_KEY
13
+ description: Firecrawl API key for hosted Firecrawl requests.
14
+ required: true
15
+ - name: FIRECRAWL_API_URL
16
+ description: Optional base URL for self-hosted Firecrawl deployments.
17
+ required: false
18
+ ---
19
+
20
+ # Firecrawl Build Search
21
+
22
+ Use this when the application starts with a query, not a URL.
23
+
24
+ ## Use This When
25
+
26
+ - the user asks a question and the product must discover sources first
27
+ - the feature needs current web results
28
+ - you want to turn a search query into a shortlist of pages for later scraping
29
+
30
+ ## Default Recommendations
31
+
32
+ - Use `/search` first when URL discovery is part of the product behavior.
33
+ - Keep search and extraction conceptually separate unless scraping search results is clearly required.
34
+ - Prefer selective follow-up extraction over broad hydration when cost or latency matters.
35
+
36
+ ## Common Product Patterns
37
+
38
+ - answer generation with cited sources
39
+ - company, competitor, or topic discovery
40
+ - research workflows that produce a shortlist before deeper extraction
41
+ - query-to-URL pipelines for later `/scrape` or `/interact`
42
+
43
+ ## Escalation Rules
44
+
45
+ - If you already have the URL, use [firecrawl-build-scrape](../firecrawl-build-scrape/SKILL.md).
46
+ - If the result page then requires clicks or form interaction, escalate to [firecrawl-build-interact](../firecrawl-build-interact/SKILL.md).
47
+
48
+ ## Implementation Notes
49
+
50
+ - Treat `/search` as discovery, ranking, and source selection.
51
+ - Be explicit about whether the product needs snippets, URLs, or full result content.
52
+ - Keep the query contract stable so downstream scraping logic stays predictable.
53
+
54
+ ## Docs (Source of Truth)
55
+
56
+ Read the source-of-truth page for your project language before writing integration code:
57
+
58
+ - **Node / TypeScript**: [docs.firecrawl.dev/agent-source-of-truth/node](https://docs.firecrawl.dev/agent-source-of-truth/node)
59
+ - **Python**: [docs.firecrawl.dev/agent-source-of-truth/python](https://docs.firecrawl.dev/agent-source-of-truth/python)
60
+ - **Rust**: [docs.firecrawl.dev/agent-source-of-truth/rust](https://docs.firecrawl.dev/agent-source-of-truth/rust)
61
+ - **Java**: [docs.firecrawl.dev/agent-source-of-truth/java](https://docs.firecrawl.dev/agent-source-of-truth/java)
62
+ - **Elixir**: [docs.firecrawl.dev/agent-source-of-truth/elixir](https://docs.firecrawl.dev/agent-source-of-truth/elixir)
63
+ - **cURL / REST**: [docs.firecrawl.dev/agent-source-of-truth/curl](https://docs.firecrawl.dev/agent-source-of-truth/curl)
64
+
65
+ ## See Also
66
+
67
+ - [firecrawl-build](../firecrawl-build/SKILL.md)
68
+ - [firecrawl-build-scrape](../firecrawl-build-scrape/SKILL.md)
69
+ - [firecrawl-build-interact](../firecrawl-build-interact/SKILL.md)
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: firecrawl-crawl
3
+ description: |
4
+ Bulk extract content from an entire website or site section. Use this skill when the user wants to crawl a site, extract all pages from a docs section, bulk-scrape multiple pages following links, or says "crawl", "get all the pages", "extract everything under /docs", "bulk extract", or needs content from many pages on the same site. Handles depth limits, path filtering, and concurrent extraction.
5
+ category: library
6
+ allowed-tools:
7
+ - Bash(firecrawl *)
8
+ - Bash(npx firecrawl *)
9
+ ---
10
+
11
+ # firecrawl crawl
12
+
13
+ Bulk extract content from a website. Crawls pages following links up to a depth/limit.
14
+
15
+ ## When to use
16
+
17
+ - You need content from many pages on a site (e.g., all `/docs/`)
18
+ - You want to extract an entire site section
19
+ - Step 4 in the [workflow escalation pattern](firecrawl-cli): search → scrape → map → **crawl** → interact
20
+
21
+ ## Quick start
22
+
23
+ ```bash
24
+ # Crawl a docs section
25
+ firecrawl crawl "<url>" --include-paths /docs --limit 50 --wait -o .firecrawl/crawl.json
26
+
27
+ # Full crawl with depth limit
28
+ firecrawl crawl "<url>" --max-depth 3 --wait --progress -o .firecrawl/crawl.json
29
+
30
+ # Check status of a running crawl
31
+ firecrawl crawl <job-id>
32
+ ```
33
+
34
+ ## Options
35
+
36
+ | Option | Description |
37
+ | ------------------------- | ------------------------------------------- |
38
+ | `--wait` | Wait for crawl to complete before returning |
39
+ | `--progress` | Show progress while waiting |
40
+ | `--limit <n>` | Max pages to crawl |
41
+ | `--max-depth <n>` | Max link depth to follow |
42
+ | `--include-paths <paths>` | Only crawl URLs matching these paths |
43
+ | `--exclude-paths <paths>` | Skip URLs matching these paths |
44
+ | `--delay <ms>` | Delay between requests |
45
+ | `--max-concurrency <n>` | Max parallel crawl workers |
46
+ | `--pretty` | Pretty print JSON output |
47
+ | `-o, --output <path>` | Output file path |
48
+
49
+ ## Tips
50
+
51
+ - Always use `--wait` when you need the results immediately. Without it, crawl returns a job ID for async polling.
52
+ - Use `--include-paths` to scope the crawl — don't crawl an entire site when you only need one section.
53
+ - Crawl consumes credits per page. Check `firecrawl credit-usage` before large crawls.
54
+
55
+ ## See also
56
+
57
+ - [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — scrape individual pages
58
+ - [firecrawl-map](../firecrawl-map/SKILL.md) — discover URLs before deciding to crawl
59
+ - [firecrawl-download](../firecrawl-download/SKILL.md) — download site to local files (uses map + scrape)
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: firecrawl-download
3
+ description: |
4
+ Download an entire website as local files — markdown, screenshots, or multiple formats per page. Use this skill when the user wants to save a site locally, download documentation for offline use, bulk-save pages as files, or says "download the site", "save as local files", "offline copy", "download all the docs", or "save for reference". Combines site mapping and scraping into organized local directories.
5
+ category: library
6
+ allowed-tools:
7
+ - Bash(firecrawl *)
8
+ - Bash(npx firecrawl *)
9
+ ---
10
+
11
+ # firecrawl download
12
+
13
+ > **Experimental.** Convenience command that combines `map` + `scrape` to save an entire site as local files.
14
+
15
+ Maps the site first to discover pages, then scrapes each one into nested directories under `.firecrawl/`. All scrape options work with download. Always pass `-y` to skip the confirmation prompt.
16
+
17
+ ## When to use
18
+
19
+ - You want to save an entire site (or section) to local files
20
+ - You need offline access to documentation or content
21
+ - Bulk content extraction with organized file structure
22
+
23
+ ## Quick start
24
+
25
+ ```bash
26
+ # Interactive wizard (picks format, screenshots, paths for you)
27
+ firecrawl download https://docs.example.com
28
+
29
+ # With screenshots
30
+ firecrawl download https://docs.example.com --screenshot --limit 20 -y
31
+
32
+ # Multiple formats (each saved as its own file per page)
33
+ firecrawl download https://docs.example.com --format markdown,links --screenshot --limit 20 -y
34
+ # Creates per page: index.md + links.txt + screenshot.png
35
+
36
+ # Filter to specific sections
37
+ firecrawl download https://docs.example.com --include-paths "/features,/sdks"
38
+
39
+ # Skip translations
40
+ firecrawl download https://docs.example.com --exclude-paths "/zh,/ja,/fr,/es,/pt-BR"
41
+
42
+ # Full combo
43
+ firecrawl download https://docs.example.com \
44
+ --include-paths "/features,/sdks" \
45
+ --exclude-paths "/zh,/ja" \
46
+ --only-main-content \
47
+ --screenshot \
48
+ -y
49
+ ```
50
+
51
+ ## Download options
52
+
53
+ | Option | Description |
54
+ | ------------------------- | -------------------------------------------------------- |
55
+ | `--limit <n>` | Max pages to download |
56
+ | `--search <query>` | Filter URLs by search query |
57
+ | `--include-paths <paths>` | Only download matching paths |
58
+ | `--exclude-paths <paths>` | Skip matching paths |
59
+ | `--allow-subdomains` | Include subdomain pages |
60
+ | `-y` | Skip confirmation prompt (always use in automated flows) |
61
+
62
+ ## Scrape options (all work with download)
63
+
64
+ `-f <formats>`, `-H`, `-S`, `--screenshot`, `--full-page-screenshot`, `--only-main-content`, `--include-tags`, `--exclude-tags`, `--wait-for`, `--max-age`, `--country`, `--languages`
65
+
66
+ ## See also
67
+
68
+ - [firecrawl-map](../firecrawl-map/SKILL.md) — just discover URLs without downloading
69
+ - [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — scrape individual pages
70
+ - [firecrawl-crawl](../firecrawl-crawl/SKILL.md) — bulk extract as JSON (not local files)
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: firecrawl-interact
3
+ description: |
4
+ Control and interact with a live browser session on any scraped page — click buttons, fill forms, navigate flows, and extract data using natural language prompts or code. Use when the user needs to interact with a webpage beyond simple scraping: logging into a site, submitting forms, clicking through pagination, handling infinite scroll, navigating multi-step checkout or wizard flows, or when a regular scrape failed because content is behind JavaScript interaction. Also useful for authenticated scraping via profiles. Triggers on "interact", "click", "fill out the form", "log in to", "sign in", "submit", "paginated", "next page", "infinite scroll", "interact with the page", "navigate to", "open a session", or "scrape failed".
5
+ category: library
6
+ allowed-tools:
7
+ - Bash(firecrawl *)
8
+ - Bash(npx firecrawl *)
9
+ ---
10
+
11
+ # firecrawl interact
12
+
13
+ Interact with scraped pages in a live browser session. Scrape a page first, then use natural language prompts or code to click, fill forms, navigate, and extract data.
14
+
15
+ ## When to use
16
+
17
+ - Content requires interaction: clicks, form fills, pagination, login
18
+ - `scrape` failed because content is behind JavaScript interaction
19
+ - You need to navigate a multi-step flow
20
+ - Last resort in the [workflow escalation pattern](firecrawl-cli): search → scrape → map → crawl → **interact**
21
+ - **Never use interact for web searches** — use `search` instead
22
+
23
+ ## Quick start
24
+
25
+ ```bash
26
+ # 1. Scrape a page (scrape ID is saved automatically)
27
+ firecrawl scrape "<url>"
28
+
29
+ # 2. Interact with the page using natural language
30
+ firecrawl interact --prompt "Click the login button"
31
+ firecrawl interact --prompt "Fill in the email field with test@example.com"
32
+ firecrawl interact --prompt "Extract the pricing table"
33
+
34
+ # 3. Or use code for precise control
35
+ firecrawl interact --code "agent-browser click @e5" --language bash
36
+ firecrawl interact --code "agent-browser snapshot -i" --language bash
37
+
38
+ # 4. Stop the session when done
39
+ firecrawl interact stop
40
+ ```
41
+
42
+ ## Options
43
+
44
+ | Option | Description |
45
+ | --------------------- | ------------------------------------------------- |
46
+ | `--prompt <text>` | Natural language instruction (use this OR --code) |
47
+ | `--code <code>` | Code to execute in the browser session |
48
+ | `--language <lang>` | Language for code: bash, python, node |
49
+ | `--timeout <seconds>` | Execution timeout (default: 30, max: 300) |
50
+ | `--scrape-id <id>` | Target a specific scrape (default: last scrape) |
51
+ | `-o, --output <path>` | Output file path |
52
+
53
+ ## Profiles
54
+
55
+ Use `--profile` on the scrape to persist browser state (cookies, localStorage) across scrapes:
56
+
57
+ ```bash
58
+ # Session 1: Login and save state
59
+ firecrawl scrape "https://app.example.com/login" --profile my-app
60
+ firecrawl interact --prompt "Fill in email with user@example.com and click login"
61
+
62
+ # Session 2: Come back authenticated
63
+ firecrawl scrape "https://app.example.com/dashboard" --profile my-app
64
+ firecrawl interact --prompt "Extract the dashboard data"
65
+ ```
66
+
67
+ Read-only reconnect (no writes to profile state):
68
+
69
+ ```bash
70
+ firecrawl scrape "https://app.example.com" --profile my-app --no-save-changes
71
+ ```
72
+
73
+ ## Tips
74
+
75
+ - Always scrape first — `interact` requires a scrape ID from a previous `firecrawl scrape` call
76
+ - The scrape ID is saved automatically, so you don't need `--scrape-id` for subsequent interact calls
77
+ - Use `firecrawl interact stop` to free resources when done
78
+ - For parallel work, scrape multiple pages and interact with each using `--scrape-id`
79
+
80
+ ## See also
81
+
82
+ - [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — try scrape first, escalate to interact only when needed
83
+ - [firecrawl-search](../firecrawl-search/SKILL.md) — for web searches (never use interact for searching)
84
+ - [firecrawl-agent](../firecrawl-agent/SKILL.md) — AI-powered extraction (less manual control)
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: firecrawl-map
3
+ description: |
4
+ Discover and list all URLs on a website, with optional search filtering. Use this skill when the user wants to find a specific page on a large site, list all URLs, see the site structure, find where something is on a domain, or says "map the site", "find the URL for", "what pages are on", or "list all pages". Essential when the user knows which site but not which exact page.
5
+ category: library
6
+ allowed-tools:
7
+ - Bash(firecrawl *)
8
+ - Bash(npx firecrawl *)
9
+ ---
10
+
11
+ # firecrawl map
12
+
13
+ Discover URLs on a site. Use `--search` to find a specific page within a large site.
14
+
15
+ ## When to use
16
+
17
+ - You need to find a specific subpage on a large site
18
+ - You want a list of all URLs on a site before scraping or crawling
19
+ - Step 3 in the [workflow escalation pattern](firecrawl-cli): search → scrape → **map** → crawl → interact
20
+
21
+ ## Quick start
22
+
23
+ ```bash
24
+ # Find a specific page on a large site
25
+ firecrawl map "<url>" --search "authentication" -o .firecrawl/filtered.txt
26
+
27
+ # Get all URLs
28
+ firecrawl map "<url>" --limit 500 --json -o .firecrawl/urls.json
29
+ ```
30
+
31
+ ## Options
32
+
33
+ | Option | Description |
34
+ | --------------------------------- | ---------------------------- |
35
+ | `--limit <n>` | Max number of URLs to return |
36
+ | `--search <query>` | Filter URLs by search query |
37
+ | `--sitemap <include\|skip\|only>` | Sitemap handling strategy |
38
+ | `--include-subdomains` | Include subdomain URLs |
39
+ | `--json` | Output as JSON |
40
+ | `-o, --output <path>` | Output file path |
41
+
42
+ ## Tips
43
+
44
+ - **Map + scrape is a common pattern**: use `map --search` to find the right URL, then `scrape` it.
45
+ - Example: `map https://docs.example.com --search "auth"` → found `/docs/api/authentication` → `scrape` that URL.
46
+
47
+ ## See also
48
+
49
+ - [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — scrape the URLs you discover
50
+ - [firecrawl-crawl](../firecrawl-crawl/SKILL.md) — bulk extract instead of map + scrape
51
+ - [firecrawl-download](../firecrawl-download/SKILL.md) — download entire site (uses map internally)
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: firecrawl-scrape
3
+ description: |
4
+ Extract clean markdown from any URL, including JavaScript-rendered SPAs. Use this skill whenever the user provides a URL and wants its content, says "scrape", "grab", "fetch", "pull", "get the page", "extract from this URL", or "read this webpage". Handles JS-rendered pages, multiple concurrent URLs, and returns LLM-optimized markdown. Use this instead of WebFetch for any webpage content extraction.
5
+ category: library
6
+ allowed-tools:
7
+ - Bash(firecrawl *)
8
+ - Bash(npx firecrawl *)
9
+ ---
10
+
11
+ # firecrawl scrape
12
+
13
+ Scrape one or more URLs. Returns clean, LLM-optimized markdown. Multiple URLs are scraped concurrently.
14
+
15
+ ## When to use
16
+
17
+ - You have a specific URL and want its content
18
+ - The page is static or JS-rendered (SPA)
19
+ - Step 2 in the [workflow escalation pattern](firecrawl-cli): search → **scrape** → map → crawl → interact
20
+
21
+ ## Quick start
22
+
23
+ ```bash
24
+ # Basic markdown extraction
25
+ firecrawl scrape "<url>" -o .firecrawl/page.md
26
+
27
+ # Main content only, no nav/footer
28
+ firecrawl scrape "<url>" --only-main-content -o .firecrawl/page.md
29
+
30
+ # Wait for JS to render, then scrape
31
+ firecrawl scrape "<url>" --wait-for 3000 -o .firecrawl/page.md
32
+
33
+ # Multiple URLs (each saved to .firecrawl/)
34
+ firecrawl scrape https://example.com https://example.com/blog https://example.com/docs
35
+
36
+ # Get markdown and links together
37
+ firecrawl scrape "<url>" --format markdown,links -o .firecrawl/page.json
38
+
39
+ # Ask a question about the page
40
+ firecrawl scrape "https://example.com/pricing" --query "What is the enterprise plan price?"
41
+ ```
42
+
43
+ ## Options
44
+
45
+ | Option | Description |
46
+ | ------------------------ | ---------------------------------------------------------------- |
47
+ | `-f, --format <formats>` | Output formats: markdown, html, rawHtml, links, screenshot, json |
48
+ | `-Q, --query <prompt>` | Ask a question about the page content (5 credits) |
49
+ | `-H` | Include HTTP headers in output |
50
+ | `--only-main-content` | Strip nav, footer, sidebar — main content only |
51
+ | `--wait-for <ms>` | Wait for JS rendering before scraping |
52
+ | `--include-tags <tags>` | Only include these HTML tags |
53
+ | `--exclude-tags <tags>` | Exclude these HTML tags |
54
+ | `-o, --output <path>` | Output file path |
55
+
56
+ ## Tips
57
+
58
+ - **Prefer plain scrape over `--query`.** Scrape to a file, then use `grep`, `head`, or read the markdown directly — you can search and reason over the full content yourself. Use `--query` only when you want a single targeted answer without saving the page (costs 5 extra credits).
59
+ - **Try scrape before interact.** Scrape handles static pages and JS-rendered SPAs. Only escalate to `interact` when you need interaction (clicks, form fills, pagination).
60
+ - Multiple URLs are scraped concurrently — check `firecrawl --status` for your concurrency limit.
61
+ - Single format outputs raw content. Multiple formats (e.g., `--format markdown,links`) output JSON.
62
+ - Always quote URLs — shell interprets `?` and `&` as special characters.
63
+ - Naming convention: `.firecrawl/{site}-{path}.md`
64
+
65
+ ## See also
66
+
67
+ - [firecrawl-search](../firecrawl-search/SKILL.md) — find pages when you don't have a URL
68
+ - [firecrawl-interact](../firecrawl-interact/SKILL.md) — when scrape can't get the content, use `interact` to click, fill forms, etc.
69
+ - [firecrawl-download](../firecrawl-download/SKILL.md) — bulk download an entire site to local files
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: firecrawl-search
3
+ description: |
4
+ Web search with full page content extraction. Use this skill whenever the user asks to search the web, find articles, research a topic, look something up, find recent news, discover sources, or says "search for", "find me", "look up", "what are people saying about", or "find articles about". Returns real search results with optional full-page markdown — not just snippets. Provides capabilities beyond Claude's built-in WebSearch.
5
+ category: library
6
+ allowed-tools:
7
+ - Bash(firecrawl *)
8
+ - Bash(npx firecrawl *)
9
+ ---
10
+
11
+ # firecrawl search
12
+
13
+ Web search with optional content scraping. Returns search results as JSON, optionally with full page content.
14
+
15
+ ## When to use
16
+
17
+ - You don't have a specific URL yet
18
+ - You need to find pages, answer questions, or discover sources
19
+ - First step in the [workflow escalation pattern](firecrawl-cli): search → scrape → map → crawl → interact
20
+
21
+ ## Quick start
22
+
23
+ ```bash
24
+ # Basic search
25
+ firecrawl search "your query" -o .firecrawl/result.json --json
26
+
27
+ # Search and scrape full page content from results
28
+ firecrawl search "your query" --scrape -o .firecrawl/scraped.json --json
29
+
30
+ # News from the past day
31
+ firecrawl search "your query" --sources news --tbs qdr:d -o .firecrawl/news.json --json
32
+ ```
33
+
34
+ ## Options
35
+
36
+ | Option | Description |
37
+ | ------------------------------------ | --------------------------------------------- |
38
+ | `--limit <n>` | Max number of results |
39
+ | `--sources <web,images,news>` | Source types to search |
40
+ | `--categories <github,research,pdf>` | Filter by category |
41
+ | `--tbs <qdr:h\|d\|w\|m\|y>` | Time-based search filter |
42
+ | `--location` | Location for search results |
43
+ | `--country <code>` | Country code for search |
44
+ | `--scrape` | Also scrape full page content for each result |
45
+ | `--scrape-formats` | Formats when scraping (default: markdown) |
46
+ | `-o, --output <path>` | Output file path |
47
+ | `--json` | Output as JSON |
48
+
49
+ ## Tips
50
+
51
+ - **`--scrape` fetches full content** — don't re-scrape URLs from search results. This saves credits and avoids redundant fetches.
52
+ - Always write results to `.firecrawl/` with `-o` to avoid context window bloat.
53
+ - Use `jq` to extract URLs or titles: `jq -r '.data.web[].url' .firecrawl/search.json`
54
+ - Naming convention: `.firecrawl/search-{query}.json` or `.firecrawl/search-{query}-scraped.json`
55
+
56
+ ## See also
57
+
58
+ - [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — scrape a specific URL
59
+ - [firecrawl-map](../firecrawl-map/SKILL.md) — discover URLs within a site
60
+ - [firecrawl-crawl](../firecrawl-crawl/SKILL.md) — bulk extract from a site
@@ -1,7 +1,13 @@
1
1
  #!/usr/bin/env node
2
+ // aos-hook-version: 2
2
3
  /**
3
4
  * memB ambient memory hook for Claude Code (UserPromptSubmit).
4
5
  *
6
+ * The version line above is what /aos-setup's doctor reads to tell a current
7
+ * hook from a stale one left behind by an older install. Bump it whenever this
8
+ * file changes in a way a machine must actually pick up, and bump the expected
9
+ * value in aos-doctor.mjs in the same commit.
10
+ *
5
11
  * Reads ~/.MemBDB/memb.db directly through node:sqlite and injects the most
6
12
  * relevant memories as ephemeral additionalContext — nothing is written to
7
13
  * disk and nothing lands in git. Fails open: any error exits 0 silently, so a