@jairodri/huckleberry-cli 1.0.2 → 1.1.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 (745) hide show
  1. package/README.md +85 -0
  2. package/agents/cos.json +2 -5
  3. package/agents/hermes/AGENTS.md +25 -49
  4. package/agents/hermes/fix-kimaki/SKILL.md +19 -92
  5. package/agents/hermes/hermes-fixer.md +44 -74
  6. package/agents/hermes.json +6 -18
  7. package/kanban/SKILL.md +18 -18
  8. package/kanban/package.json +1 -1
  9. package/kanban/src/dispatcher.mjs +1 -1
  10. package/kanban/templates/blog-social-campaign.yaml +6 -2
  11. package/kanban/templates/social-campaign.yaml +9 -4
  12. package/mcp/jev-calibration.mjs +335 -0
  13. package/mcp/jev-client.mjs +119 -0
  14. package/mcp/jev-thresholds.json +27 -0
  15. package/package.json +13 -9
  16. package/scripts/doctor-watchdog.sh +73 -0
  17. package/scripts/install-services.sh +34 -27
  18. package/scripts/self-improve-weekly.sh +34 -0
  19. package/scripts/sync-skills.mjs +121 -0
  20. package/skills/ab-test-setup/SKILL.md +266 -0
  21. package/skills/ab-test-setup/evals/evals.json +105 -0
  22. package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
  23. package/skills/ab-test-setup/references/test-templates.md +277 -0
  24. package/skills/agent-reach/SKILL.md +132 -0
  25. package/skills/agent-reach/references/career.md +29 -0
  26. package/skills/agent-reach/references/dev.md +62 -0
  27. package/skills/agent-reach/references/search.md +33 -0
  28. package/skills/agent-reach/references/social.md +232 -0
  29. package/skills/agent-reach/references/video.md +130 -0
  30. package/skills/agent-reach/references/web.md +50 -0
  31. package/skills/ai-agent-seo/SKILL.md +450 -0
  32. package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
  33. package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
  34. package/skills/ai-consensus-builder/SKILL.md +324 -0
  35. package/skills/ai-seo/SKILL.md +399 -0
  36. package/skills/ai-seo/evals/evals.json +90 -0
  37. package/skills/ai-seo/references/content-patterns.md +284 -0
  38. package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
  39. package/skills/ai-visibility-audit/SKILL.md +322 -0
  40. package/skills/analytics-tracking/SKILL.md +309 -0
  41. package/skills/analytics-tracking/evals/evals.json +90 -0
  42. package/skills/analytics-tracking/references/event-library.md +260 -0
  43. package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
  44. package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
  45. package/skills/article-generator/SKILL.md +216 -0
  46. package/skills/auto-indexing/SKILL.md +179 -0
  47. package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
  48. package/skills/auto-skill/SKILL.md +151 -0
  49. package/skills/auto-skill/correction-queue.js +102 -0
  50. package/skills/auto-skill/dedup.js +97 -0
  51. package/skills/auto-skill/skill-router.js +224 -0
  52. package/skills/autoresearch/SKILL.md +334 -0
  53. package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
  54. package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
  55. package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
  56. package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
  57. package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
  58. package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
  59. package/skills/autoresearch/eval-guide.md +121 -0
  60. package/skills/b2b-cold-outreach/SKILL.md +322 -0
  61. package/skills/birdclaw/SKILL.md +82 -0
  62. package/skills/brainstorm/SKILL.md +168 -0
  63. package/skills/brand-kit-playground/SKILL.md +312 -0
  64. package/skills/brand-kit-playground/references/html-architecture.md +316 -0
  65. package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
  66. package/skills/brand-voice/SKILL.md +223 -0
  67. package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
  68. package/skills/brand-voice/references/voice-modes.md +1158 -0
  69. package/skills/business-advisory-council/README.md +136 -0
  70. package/skills/business-advisory-council/SKILL.md +94 -0
  71. package/skills/business-advisory-council/business-advisory-council.py +492 -0
  72. package/skills/business-advisory-council/discord-components-decision.json +8 -0
  73. package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
  74. package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
  75. package/skills/churn-prevention/SKILL.md +305 -0
  76. package/skills/churn-prevention/evals/evals.json +93 -0
  77. package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
  78. package/skills/churn-prevention/references/dunning-playbook.md +408 -0
  79. package/skills/claw-compactor/LICENSE +21 -0
  80. package/skills/claw-compactor/README.md +459 -0
  81. package/skills/claw-compactor/SKILL.md +329 -0
  82. package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
  83. package/skills/claw-compactor/benchmark/__init__.py +1 -0
  84. package/skills/claw-compactor/benchmark/compressors.py +520 -0
  85. package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
  86. package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
  87. package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
  88. package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
  89. package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
  90. package/skills/claw-compactor/benchmark/evaluate.py +278 -0
  91. package/skills/claw-compactor/benchmark/report.py +241 -0
  92. package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
  93. package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
  94. package/skills/claw-compactor/engram.yaml +49 -0
  95. package/skills/claw-compactor/proxy/README.md +87 -0
  96. package/skills/claw-compactor/proxy/dashboard.html +804 -0
  97. package/skills/claw-compactor/proxy/event-log.mjs +213 -0
  98. package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
  99. package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
  100. package/skills/claw-compactor/proxy/package-lock.json +125 -0
  101. package/skills/claw-compactor/proxy/package.json +15 -0
  102. package/skills/claw-compactor/proxy/portal.html +360 -0
  103. package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
  104. package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
  105. package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
  106. package/skills/claw-compactor/proxy/retry.mjs +182 -0
  107. package/skills/claw-compactor/proxy/server.mjs +2100 -0
  108. package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
  109. package/skills/claw-compactor/proxy/start.sh +23 -0
  110. package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
  111. package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
  112. package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
  113. package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
  114. package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
  115. package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
  116. package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
  117. package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
  118. package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
  119. package/skills/claw-compactor/pyproject.toml +26 -0
  120. package/skills/claw-compactor/references/README.md +44 -0
  121. package/skills/claw-compactor/references/architecture.md +197 -0
  122. package/skills/claw-compactor/references/benchmarks.md +94 -0
  123. package/skills/claw-compactor/references/compression-prompts.md +39 -0
  124. package/skills/claw-compactor/references/compression-techniques.md +219 -0
  125. package/skills/claw-compactor/references/testing.md +160 -0
  126. package/skills/claw-compactor/scripts/audit_memory.py +216 -0
  127. package/skills/claw-compactor/scripts/compress_memory.py +236 -0
  128. package/skills/claw-compactor/scripts/compressed_context.py +280 -0
  129. package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
  130. package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
  131. package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
  132. package/skills/claw-compactor/scripts/engram_auto.py +695 -0
  133. package/skills/claw-compactor/scripts/engram_cli.py +474 -0
  134. package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
  135. package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
  136. package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
  137. package/skills/claw-compactor/scripts/lib/config.py +289 -0
  138. package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
  139. package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
  140. package/skills/claw-compactor/scripts/lib/engram.py +793 -0
  141. package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
  142. package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
  143. package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
  144. package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
  145. package/skills/claw-compactor/scripts/lib/rle.py +165 -0
  146. package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
  147. package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
  148. package/skills/claw-compactor/scripts/mem_compress.py +788 -0
  149. package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
  150. package/skills/claw-compactor/tests/__init__.py +0 -0
  151. package/skills/claw-compactor/tests/conftest.py +94 -0
  152. package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
  153. package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
  154. package/skills/claw-compactor/tests/test_benchmark.py +122 -0
  155. package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
  156. package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
  157. package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
  158. package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
  159. package/skills/claw-compactor/tests/test_config.py +54 -0
  160. package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
  161. package/skills/claw-compactor/tests/test_dictionary.py +327 -0
  162. package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
  163. package/skills/claw-compactor/tests/test_engram.py +1091 -0
  164. package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
  165. package/skills/claw-compactor/tests/test_error_handling.py +194 -0
  166. package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
  167. package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
  168. package/skills/claw-compactor/tests/test_integration.py +249 -0
  169. package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
  170. package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
  171. package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
  172. package/skills/claw-compactor/tests/test_main_entry.py +176 -0
  173. package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
  174. package/skills/claw-compactor/tests/test_new_features.py +77 -0
  175. package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
  176. package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
  177. package/skills/claw-compactor/tests/test_performance.py +172 -0
  178. package/skills/claw-compactor/tests/test_pipeline.py +109 -0
  179. package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
  180. package/skills/claw-compactor/tests/test_rle.py +114 -0
  181. package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
  182. package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
  183. package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
  184. package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
  185. package/skills/claw-compactor/tests/test_token_economics.py +237 -0
  186. package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
  187. package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
  188. package/skills/claw-compactor/tests/test_tokens.py +27 -0
  189. package/skills/cmo/CHANGELOG.md +61 -0
  190. package/skills/cmo/SKILL.md +500 -0
  191. package/skills/cmo/references/ai-slop-patterns.md +56 -0
  192. package/skills/cmo/references/analytics-guide.md +152 -0
  193. package/skills/cmo/references/ideas-library.md +197 -0
  194. package/skills/cmo/rules/brand-file-map.md +198 -0
  195. package/skills/cmo/rules/brand-memory.md +158 -0
  196. package/skills/cmo/rules/cli-runtime-index.md +95 -0
  197. package/skills/cmo/rules/command-reference.md +167 -0
  198. package/skills/cmo/rules/communication.md +15 -0
  199. package/skills/cmo/rules/context-switch.md +101 -0
  200. package/skills/cmo/rules/ecosystem.md +125 -0
  201. package/skills/cmo/rules/error-recovery.md +98 -0
  202. package/skills/cmo/rules/learning-loop.md +170 -0
  203. package/skills/cmo/rules/monorepo.md +78 -0
  204. package/skills/cmo/rules/output-format.md +124 -0
  205. package/skills/cmo/rules/persona.md +15 -0
  206. package/skills/cmo/rules/playbooks.md +327 -0
  207. package/skills/cmo/rules/progressive-enhancement.md +231 -0
  208. package/skills/cmo/rules/publish-index.md +106 -0
  209. package/skills/cmo/rules/quality-gate.md +90 -0
  210. package/skills/cmo/rules/recency-grounding.md +124 -0
  211. package/skills/cmo/rules/safety.md +80 -0
  212. package/skills/cmo/rules/studio-api-index.md +138 -0
  213. package/skills/cmo/rules/studio-integration.md +147 -0
  214. package/skills/cmo/rules/sub-agents.md +167 -0
  215. package/skills/cold-email/SKILL.md +240 -0
  216. package/skills/cold-email/evals/evals.json +94 -0
  217. package/skills/cold-email/references/benchmarks.md +83 -0
  218. package/skills/cold-email/references/follow-up-sequences.md +81 -0
  219. package/skills/cold-email/references/frameworks.md +90 -0
  220. package/skills/cold-email/references/personalization.md +79 -0
  221. package/skills/cold-email/references/subject-lines.md +53 -0
  222. package/skills/competitive-intel/SKILL.md +433 -0
  223. package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
  224. package/skills/competitor-alternatives/SKILL.md +362 -0
  225. package/skills/competitor-alternatives/evals/evals.json +93 -0
  226. package/skills/competitor-alternatives/references/content-architecture.md +271 -0
  227. package/skills/competitor-alternatives/references/templates.md +223 -0
  228. package/skills/concreteness-fixer/SKILL.md +483 -0
  229. package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
  230. package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
  231. package/skills/content-atomizer/SKILL.md +424 -0
  232. package/skills/content-atomizer/references/hook-strategies.md +56 -0
  233. package/skills/content-atomizer/references/platform-specs.md +118 -0
  234. package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
  235. package/skills/content-atomizer/references/platforms/instagram.md +77 -0
  236. package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
  237. package/skills/content-atomizer/references/platforms/reddit.md +73 -0
  238. package/skills/content-atomizer/references/platforms/threads.md +64 -0
  239. package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
  240. package/skills/content-atomizer/references/platforms/twitter.md +123 -0
  241. package/skills/content-atomizer/references/platforms/youtube.md +56 -0
  242. package/skills/content-atomizer/references/tweet-patterns.md +40 -0
  243. package/skills/content-repost-manager/SKILL.md +245 -0
  244. package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
  245. package/skills/context-recovery/.clawdhub/origin.json +7 -0
  246. package/skills/context-recovery/SKILL.md +198 -0
  247. package/skills/context-recovery/_meta.json +6 -0
  248. package/skills/conversion-flow-cro/SKILL.md +248 -0
  249. package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
  250. package/skills/copy-editing/SKILL.md +474 -0
  251. package/skills/copy-editing/evals/evals.json +89 -0
  252. package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
  253. package/skills/copywriting/SKILL.md +349 -0
  254. package/skills/copywriting/evals/evals.json +111 -0
  255. package/skills/copywriting/references/awareness-level-guide.md +227 -0
  256. package/skills/copywriting/references/copy-frameworks.md +389 -0
  257. package/skills/copywriting/references/natural-transitions.md +272 -0
  258. package/skills/creative/SKILL.md +365 -0
  259. package/skills/creative/modes/ad-creative.md +1748 -0
  260. package/skills/creative/modes/product-photo.md +1520 -0
  261. package/skills/creative/modes/product-video.md +1657 -0
  262. package/skills/creative/modes/social-graphics.md +1511 -0
  263. package/skills/creative/modes/talking-head.md +2208 -0
  264. package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
  265. package/skills/deep-serp-article/SKILL.md +677 -0
  266. package/skills/deep-serp-article/SKILL.md.bak +530 -0
  267. package/skills/earned-media/SKILL.md +260 -0
  268. package/skills/email-sequences/SKILL.md +446 -0
  269. package/skills/email-sequences/references/sequence-templates.md +1217 -0
  270. package/skills/firecrawl/.skill-meta.json +13 -0
  271. package/skills/firecrawl/SKILL.md +154 -0
  272. package/skills/firecrawl/rules/install.md +63 -0
  273. package/skills/firecrawl/rules/security.md +26 -0
  274. package/skills/form-cro/SKILL.md +429 -0
  275. package/skills/form-cro/evals/evals.json +90 -0
  276. package/skills/free-tool-strategy/SKILL.md +325 -0
  277. package/skills/free-tool-strategy/evals/evals.json +90 -0
  278. package/skills/free-tool-strategy/references/tool-types.md +253 -0
  279. package/skills/frontend-slides/SKILL.md +248 -0
  280. package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  281. package/skills/frontend-slides/animation-patterns.md +110 -0
  282. package/skills/frontend-slides/html-template.md +347 -0
  283. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  284. package/skills/frontend-slides/viewport-base.css +153 -0
  285. package/skills/guardrail-framework/SKILL.md +319 -0
  286. package/skills/hook-generator/SKILL.md +438 -0
  287. package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
  288. package/skills/hook-generator/database/instagram-hooks.json +591 -0
  289. package/skills/hook-generator/database/linkedin-hooks.json +502 -0
  290. package/skills/hook-generator/database/medium-hooks.json +181 -0
  291. package/skills/hook-generator/database/tiktok-hooks.json +337 -0
  292. package/skills/hook-generator/database/twitter-hooks.json +567 -0
  293. package/skills/hook-generator/database/youtube-hooks.json +275 -0
  294. package/skills/hook-generator/package-lock.json +24 -0
  295. package/skills/hook-generator/package.json +5 -0
  296. package/skills/hook-generator/references/hook-generation-system.md +257 -0
  297. package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
  298. package/skills/hook-generator/references/hooks-library.md +128 -0
  299. package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
  300. package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
  301. package/skills/hook-generator/scripts/generate-hooks.js +225 -0
  302. package/skills/hook-generator/scripts/generate.sh +36 -0
  303. package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
  304. package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
  305. package/skills/humanizer/README.md +120 -0
  306. package/skills/humanizer/SKILL.md +699 -0
  307. package/skills/image-gen/SKILL.md +277 -0
  308. package/skills/image-gen/references/prompt-patterns.md +114 -0
  309. package/skills/image-gen/references/visual-metaphors.md +51 -0
  310. package/skills/impeccable/SKILL.md +86 -0
  311. package/skills/impeccable/reference/adapt.md +312 -0
  312. package/skills/impeccable/reference/adapt.native.md +58 -0
  313. package/skills/impeccable/reference/android.md +40 -0
  314. package/skills/impeccable/reference/animate.md +86 -0
  315. package/skills/impeccable/reference/audit.md +136 -0
  316. package/skills/impeccable/reference/audit.native.md +139 -0
  317. package/skills/impeccable/reference/bolder.md +31 -0
  318. package/skills/impeccable/reference/clarify.md +94 -0
  319. package/skills/impeccable/reference/colorize.md +86 -0
  320. package/skills/impeccable/reference/craft-floor.md +42 -0
  321. package/skills/impeccable/reference/craft.md +5 -0
  322. package/skills/impeccable/reference/critique.md +788 -0
  323. package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
  324. package/skills/impeccable/reference/degraded/documenter.md +24 -0
  325. package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
  326. package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  327. package/skills/impeccable/reference/delight.md +70 -0
  328. package/skills/impeccable/reference/distill.md +111 -0
  329. package/skills/impeccable/reference/doctor.md +53 -0
  330. package/skills/impeccable/reference/document.md +416 -0
  331. package/skills/impeccable/reference/extract.md +69 -0
  332. package/skills/impeccable/reference/harden.md +336 -0
  333. package/skills/impeccable/reference/hooks.md +105 -0
  334. package/skills/impeccable/reference/init.md +125 -0
  335. package/skills/impeccable/reference/ios.md +45 -0
  336. package/skills/impeccable/reference/layout.md +84 -0
  337. package/skills/impeccable/reference/live-setup.md +102 -0
  338. package/skills/impeccable/reference/live.md +323 -0
  339. package/skills/impeccable/reference/new-work.md +110 -0
  340. package/skills/impeccable/reference/onboard.md +234 -0
  341. package/skills/impeccable/reference/operate.md +61 -0
  342. package/skills/impeccable/reference/optimize.md +258 -0
  343. package/skills/impeccable/reference/overdrive.md +127 -0
  344. package/skills/impeccable/reference/polish.md +97 -0
  345. package/skills/impeccable/reference/quieter.md +99 -0
  346. package/skills/impeccable/reference/routing.md +18 -0
  347. package/skills/impeccable/reference/shape.md +59 -0
  348. package/skills/impeccable/reference/typeset.md +80 -0
  349. package/skills/impeccable/reference/visualize.md +49 -0
  350. package/skills/impeccable/scripts/command-metadata.json +94 -0
  351. package/skills/impeccable/scripts/concept-seed.mjs +558 -0
  352. package/skills/impeccable/scripts/context-signals.mjs +334 -0
  353. package/skills/impeccable/scripts/context.mjs +1467 -0
  354. package/skills/impeccable/scripts/critique-storage.mjs +213 -0
  355. package/skills/impeccable/scripts/detect-csp.mjs +198 -0
  356. package/skills/impeccable/scripts/detect.mjs +21 -0
  357. package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
  358. package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
  359. package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
  360. package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
  361. package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
  362. package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
  363. package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
  364. package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
  365. package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
  366. package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
  367. package/skills/impeccable/scripts/detector/findings.mjs +18 -0
  368. package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
  369. package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
  370. package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
  371. package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
  372. package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
  373. package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
  374. package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  375. package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
  376. package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
  377. package/skills/impeccable/scripts/doctor.mjs +336 -0
  378. package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
  379. package/skills/impeccable/scripts/generate-image.mjs +240 -0
  380. package/skills/impeccable/scripts/hook-admin.mjs +801 -0
  381. package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
  382. package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
  383. package/skills/impeccable/scripts/hook.mjs +78 -0
  384. package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  385. package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
  386. package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
  387. package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
  388. package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
  389. package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
  390. package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
  391. package/skills/impeccable/scripts/lib/provider.mjs +5 -0
  392. package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
  393. package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
  394. package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  395. package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  396. package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  397. package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
  398. package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  399. package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  400. package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
  401. package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
  402. package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
  403. package/skills/impeccable/scripts/live/completion.mjs +28 -0
  404. package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
  405. package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
  406. package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
  407. package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
  408. package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
  409. package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
  410. package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
  411. package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
  412. package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
  413. package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
  414. package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
  415. package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
  416. package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
  417. package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  418. package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
  419. package/skills/impeccable/scripts/live/instructions.mjs +142 -0
  420. package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
  421. package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
  422. package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
  423. package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  424. package/skills/impeccable/scripts/live/roots.mjs +508 -0
  425. package/skills/impeccable/scripts/live/session-store.mjs +563 -0
  426. package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  427. package/skills/impeccable/scripts/live/source-search.mjs +105 -0
  428. package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
  429. package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
  430. package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
  431. package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  432. package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
  433. package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
  434. package/skills/impeccable/scripts/live-accept.mjs +954 -0
  435. package/skills/impeccable/scripts/live-browser-dom.js +146 -0
  436. package/skills/impeccable/scripts/live-browser-session.js +123 -0
  437. package/skills/impeccable/scripts/live-browser.js +12520 -0
  438. package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
  439. package/skills/impeccable/scripts/live-complete.mjs +107 -0
  440. package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
  441. package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
  442. package/skills/impeccable/scripts/live-inject.mjs +503 -0
  443. package/skills/impeccable/scripts/live-insert.mjs +292 -0
  444. package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
  445. package/skills/impeccable/scripts/live-poll.mjs +429 -0
  446. package/skills/impeccable/scripts/live-resume.mjs +123 -0
  447. package/skills/impeccable/scripts/live-server.mjs +1669 -0
  448. package/skills/impeccable/scripts/live-status.mjs +71 -0
  449. package/skills/impeccable/scripts/live-target.mjs +30 -0
  450. package/skills/impeccable/scripts/live-wrap.mjs +927 -0
  451. package/skills/impeccable/scripts/live.mjs +359 -0
  452. package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  453. package/skills/impeccable/scripts/palette.mjs +628 -0
  454. package/skills/impeccable/scripts/pin.mjs +221 -0
  455. package/skills/impeccable/scripts/serve-question.mjs +932 -0
  456. package/skills/impeccable/scripts/surface-brief.mjs +74 -0
  457. package/skills/inkstone-admin/SKILL.md +66 -0
  458. package/skills/jev-hook-gate/SKILL.md +111 -0
  459. package/skills/keyword-research/SKILL.md +503 -0
  460. package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
  461. package/skills/keyword-research/references/keyword-examples.md +769 -0
  462. package/skills/landing-page-architect/SKILL.md +585 -0
  463. package/skills/landing-page-architect/references/architecture-reference.md +32 -0
  464. package/skills/launch-strategy/SKILL.md +384 -0
  465. package/skills/launch-strategy/evals/evals.json +91 -0
  466. package/skills/launch-strategy/references/launch-checklist.md +209 -0
  467. package/skills/launch-strategy/references/launch-timeline.md +159 -0
  468. package/skills/lead-email-craft/SKILL.md +522 -0
  469. package/skills/lead-magnets/SKILL.md +310 -0
  470. package/skills/lead-magnets/references/benchmarks.md +129 -0
  471. package/skills/lead-magnets/references/format-guide.md +196 -0
  472. package/skills/link-building-seo/SKILL.md +210 -0
  473. package/skills/lint-report.txt +1 -0
  474. package/skills/manifest.json +129 -0
  475. package/skills/marketing-demo/SKILL.md +249 -0
  476. package/skills/marketing-demo/references/remotion-examples.md +281 -0
  477. package/skills/marketing-ideas/SKILL.md +167 -0
  478. package/skills/marketing-ideas/evals/evals.json +90 -0
  479. package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
  480. package/skills/marketing-psychology/SKILL.md +374 -0
  481. package/skills/marketing-psychology/evals/evals.json +88 -0
  482. package/skills/marketing-psychology/references/case-studies.md +148 -0
  483. package/skills/narrative-research-article/SKILL.md +469 -0
  484. package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
  485. package/skills/notebooklm/SKILL.md +674 -0
  486. package/skills/off-page-seo/SKILL.md +219 -0
  487. package/skills/onboarding-cro/SKILL.md +220 -0
  488. package/skills/onboarding-cro/evals/evals.json +92 -0
  489. package/skills/onboarding-cro/references/experiments.md +258 -0
  490. package/skills/original-research/SKILL.md +388 -0
  491. package/skills/page-cro/SKILL.md +269 -0
  492. package/skills/page-cro/references/cro-benchmarks.md +140 -0
  493. package/skills/paper-marketing/SKILL.md +448 -0
  494. package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
  495. package/skills/paper-marketing/references/brand-system-template.md +120 -0
  496. package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
  497. package/skills/paper-marketing/references/platform-conventions.md +43 -0
  498. package/skills/paywall-upgrade-cro/SKILL.md +227 -0
  499. package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
  500. package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
  501. package/skills/platform-formatting/SKILL.md +51 -0
  502. package/skills/popup-cro/SKILL.md +454 -0
  503. package/skills/popup-cro/evals/evals.json +94 -0
  504. package/skills/positioning-angles/SKILL.md +524 -0
  505. package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
  506. package/skills/positioning-angles/references/angle-frameworks.md +187 -0
  507. package/skills/positioning-angles/references/dunford-positioning.md +135 -0
  508. package/skills/positioning-angles/references/hormozi-offer.md +247 -0
  509. package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
  510. package/skills/positioning-angles/references/unique-mechanism.md +162 -0
  511. package/skills/pricing-strategy/SKILL.md +346 -0
  512. package/skills/pricing-strategy/evals/evals.json +90 -0
  513. package/skills/pricing-strategy/references/research-methods.md +152 -0
  514. package/skills/pricing-strategy/references/tier-structure.md +307 -0
  515. package/skills/programmatic-seo/SKILL.md +238 -0
  516. package/skills/programmatic-seo/evals/evals.json +94 -0
  517. package/skills/programmatic-seo/references/playbooks.md +308 -0
  518. package/skills/project-rag/SKILL.md +127 -0
  519. package/skills/quality-gate/SKILL.md +519 -0
  520. package/skills/quality-gate/judge-personas/buyer.md +47 -0
  521. package/skills/quality-gate/judge-personas/expert.md +47 -0
  522. package/skills/quality-gate/judge-personas/outsider.md +47 -0
  523. package/skills/quality-gate/judge-personas/scanner.md +41 -0
  524. package/skills/quality-gate/judge-personas/skeptic.md +40 -0
  525. package/skills/referral-program/SKILL.md +290 -0
  526. package/skills/referral-program/evals/evals.json +89 -0
  527. package/skills/referral-program/references/affiliate-programs.md +163 -0
  528. package/skills/referral-program/references/program-examples.md +143 -0
  529. package/skills/review-sites/SKILL.md +279 -0
  530. package/skills/revops/SKILL.md +343 -0
  531. package/skills/revops/evals/evals.json +91 -0
  532. package/skills/revops/references/automation-playbooks.md +290 -0
  533. package/skills/revops/references/lifecycle-definitions.md +278 -0
  534. package/skills/revops/references/routing-rules.md +203 -0
  535. package/skills/revops/references/scoring-models.md +247 -0
  536. package/skills/saas-product-seo/SKILL.md +324 -0
  537. package/skills/sales-enablement/SKILL.md +349 -0
  538. package/skills/sales-enablement/evals/evals.json +91 -0
  539. package/skills/sales-enablement/references/deck-frameworks.md +263 -0
  540. package/skills/sales-enablement/references/demo-scripts.md +355 -0
  541. package/skills/sales-enablement/references/objection-library.md +270 -0
  542. package/skills/sales-enablement/references/one-pager-templates.md +208 -0
  543. package/skills/schema-markup/SKILL.md +179 -0
  544. package/skills/schema-markup/evals/evals.json +87 -0
  545. package/skills/schema-markup/references/schema-examples.md +398 -0
  546. package/skills/self-improve/SKILL.md +166 -0
  547. package/skills/self-improving-agent/README.md +243 -0
  548. package/skills/self-improving-agent/SKILL.md +437 -0
  549. package/skills/self-improving-agent/scripts/__init__.py +16 -0
  550. package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
  551. package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
  552. package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
  553. package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
  554. package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
  555. package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
  556. package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
  557. package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
  558. package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
  559. package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
  560. package/skills/send-email/SKILL.md +426 -0
  561. package/skills/send-email/references/batch-email-examples.md +807 -0
  562. package/skills/send-email/references/best-practices.md +453 -0
  563. package/skills/send-email/references/installation.md +123 -0
  564. package/skills/send-email/references/single-email-examples.md +470 -0
  565. package/skills/send-email/references/webhooks.md +221 -0
  566. package/skills/seo-audit/SKILL.md +362 -0
  567. package/skills/seo-audit/references/ai-writing-detection.md +200 -0
  568. package/skills/seo-audit/references/architecture-patterns.md +271 -0
  569. package/skills/seo-audit/references/schema-templates.md +427 -0
  570. package/skills/seo-content/SKILL.md +510 -0
  571. package/skills/seo-content/references/anti-ai-detection.md +184 -0
  572. package/skills/seo-content/references/content-structures.md +148 -0
  573. package/skills/seo-content/references/eeat-examples.md +235 -0
  574. package/skills/seo-content/references/on-page-seo.md +261 -0
  575. package/skills/seo-content/references/pseo-playbooks.md +226 -0
  576. package/skills/seo-content/references/schema-templates.md +104 -0
  577. package/skills/seo-content/references/serp-analysis-format.md +151 -0
  578. package/skills/seo-machine/SKILL.md +331 -0
  579. package/skills/seo-machine/assets/brand-template.md +73 -0
  580. package/skills/seo-machine/assets/link-inventory-template.md +74 -0
  581. package/skills/seo-machine/assets/roadmap-template.md +184 -0
  582. package/skills/seo-machine/references/api-stack-recipes.md +230 -0
  583. package/skills/seo-machine/references/exa-recipes.md +260 -0
  584. package/skills/seo-machine/references/manual-research.md +73 -0
  585. package/skills/seo-machine/references/methodology.md +87 -0
  586. package/skills/seo-machine/references/off-page.md +123 -0
  587. package/skills/seo-machine/references/patterns/alternatives.md +176 -0
  588. package/skills/seo-machine/references/patterns/compare.md +105 -0
  589. package/skills/seo-machine/references/patterns/playbooks.md +106 -0
  590. package/skills/seo-machine/references/patterns/use-case.md +109 -0
  591. package/skills/seo-machine/references/quality-bars.md +99 -0
  592. package/skills/seo-machine/references/stacks/astro.md +156 -0
  593. package/skills/seo-machine/references/stacks/detection.md +61 -0
  594. package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
  595. package/skills/seo-machine/references/stacks/nextjs.md +108 -0
  596. package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
  597. package/skills/seo-machine/references/striking-distance.md +116 -0
  598. package/skills/seo-machine/references/technical-audit.md +153 -0
  599. package/skills/seo-machine/scripts/link_audit.py +265 -0
  600. package/skills/seo-machine/scripts/tech_audit.py +221 -0
  601. package/skills/seo-machine/scripts/word_count.py +154 -0
  602. package/skills/sharp-thesis-validator/SKILL.md +393 -0
  603. package/skills/sharp-thesis-validator/examples.md +186 -0
  604. package/skills/signup-flow-cro/SKILL.md +359 -0
  605. package/skills/signup-flow-cro/evals/evals.json +88 -0
  606. package/skills/site-architecture/SKILL.md +357 -0
  607. package/skills/site-architecture/evals/evals.json +88 -0
  608. package/skills/site-architecture/references/mermaid-templates.md +216 -0
  609. package/skills/site-architecture/references/navigation-patterns.md +305 -0
  610. package/skills/site-architecture/references/site-type-templates.md +293 -0
  611. package/skills/skill-self-improvement/SKILL.md +151 -0
  612. package/skills/slideshow-script/SKILL.md +274 -0
  613. package/skills/slideshow-script/references/content-spec-schema.md +77 -0
  614. package/skills/slideshow-script/references/frameworks.md +84 -0
  615. package/skills/slideshow-script/references/paips-framework.md +37 -0
  616. package/skills/social-campaign/SKILL.md +419 -0
  617. package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
  618. package/skills/social-content/SKILL.md +359 -0
  619. package/skills/social-content/evals/evals.json +92 -0
  620. package/skills/social-content/references/platforms.md +170 -0
  621. package/skills/social-content/references/post-templates.md +177 -0
  622. package/skills/social-content/references/reverse-engineering.md +195 -0
  623. package/skills/social-worker/SKILL.md +204 -0
  624. package/skills/startup-launcher/SKILL.md +252 -0
  625. package/skills/startup-launcher/references/file-router.md +64 -0
  626. package/skills/startup-launcher/references/platform-matrix.md +65 -0
  627. package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
  628. package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
  629. package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
  630. package/skills/startup-launcher/references/platforms/betalist.md +98 -0
  631. package/skills/startup-launcher/references/platforms/capterra.md +276 -0
  632. package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
  633. package/skills/startup-launcher/references/platforms/dealify.md +291 -0
  634. package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
  635. package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
  636. package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
  637. package/skills/startup-launcher/references/platforms/devpost.md +448 -0
  638. package/skills/startup-launcher/references/platforms/fazier.md +56 -0
  639. package/skills/startup-launcher/references/platforms/firsto.md +489 -0
  640. package/skills/startup-launcher/references/platforms/g2.md +226 -0
  641. package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
  642. package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
  643. package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
  644. package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
  645. package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
  646. package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
  647. package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
  648. package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
  649. package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
  650. package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
  651. package/skills/startup-launcher/references/platforms/launchit.md +574 -0
  652. package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
  653. package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
  654. package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
  655. package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
  656. package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
  657. package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
  658. package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
  659. package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
  660. package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
  661. package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
  662. package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
  663. package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
  664. package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
  665. package/skills/startup-launcher/references/platforms/saashub.md +205 -0
  666. package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
  667. package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
  668. package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
  669. package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
  670. package/skills/startup-launcher/references/platforms/selected.md +925 -0
  671. package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
  672. package/skills/startup-launcher/references/platforms/softonic.md +240 -0
  673. package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
  674. package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
  675. package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
  676. package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
  677. package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
  678. package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
  679. package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
  680. package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
  681. package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
  682. package/skills/startup-launcher/references/platforms/uneed.md +57 -0
  683. package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
  684. package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
  685. package/skills/startup-launcher/references/templates/product-brief.md +98 -0
  686. package/skills/summarize/.skill-meta.json +13 -0
  687. package/skills/summarize/SKILL.md +170 -0
  688. package/skills/summarize/rules/install.md +157 -0
  689. package/skills/summarize/rules/usage.md +207 -0
  690. package/skills/topical-authority/SKILL.md +307 -0
  691. package/skills/topical-authority/references/jake-ward-framework.md +201 -0
  692. package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
  693. package/skills/topical-authority/scripts/orchestrator.js +367 -0
  694. package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
  695. package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
  696. package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
  697. package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
  698. package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
  699. package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
  700. package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
  701. package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
  702. package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
  703. package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
  704. package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
  705. package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
  706. package/skills/visual-style/SKILL.md +199 -0
  707. package/skills/voice-brand-alignment/SKILL.md +70 -0
  708. package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
  709. package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
  710. package/skills/voice-extraction/SKILL.md +234 -0
  711. package/skills/voice-extraction/references/extraction-prompt.md +155 -0
  712. package/skills/voice-extraction/references/voice-dna-template.md +168 -0
  713. package/skills/voice-extraction/references/voice-elements.md +259 -0
  714. package/skills/voice-extraction/scripts/build-corpus.js +120 -0
  715. package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
  716. package/skills/warm-outbound/SKILL.md +299 -0
  717. package/skills/warm-outbound/templates/warm-message.md +39 -0
  718. package/skills/weekly-newsletter-digest/SKILL.md +78 -0
  719. package/skills/x-playwriter/SKILL.md +428 -0
  720. package/skills/x-playwriter/scripts/x-browser.js +185 -0
  721. package/skills/x-post-generator-openclaw/SKILL.md +138 -0
  722. package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
  723. package/skills/x-posting-playwriter/SKILL.md +203 -0
  724. package/skills/x-research/SKILL.md +129 -0
  725. package/skills/x-research/x-research.sh +85 -0
  726. package/skills/youtube-summarize/SKILL.md +90 -0
  727. package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
  728. package/src/cli.js +347 -172
  729. package/src/harness/deepseek-adapter.js +102 -0
  730. package/src/harness/deepseek.js +225 -0
  731. package/src/harness/opencode-adapter.js +174 -0
  732. package/src/harness/pi-adapter.js +172 -0
  733. package/src/harness/registry.js +121 -0
  734. package/src/harness/telemetry.js +102 -0
  735. package/src/harness/types.js +165 -0
  736. package/src/interview.js +36 -4
  737. package/src/postinstall.js +10 -12
  738. package/templates/AGENTS.md +17 -17
  739. package/templates/ORG.md +1 -1
  740. package/templates/TOOLS.md +7 -2
  741. package/templates/opencode.json +26 -29
  742. package/wiki/doctor.md +54 -0
  743. package/wiki/inkstone.md +4 -4
  744. package/wiki/opencode.md +3 -3
  745. package/skills/curated.txt +0 -68
@@ -0,0 +1,203 @@
1
+ ---
2
+ name: x-posting-playwriter
3
+ description: >
4
+ Post tweets and threads to X/Twitter via Playwriter (browser automation).
5
+ Use when bird CLI is blocked (error 226) or as primary posting method.
6
+ Handles Draft.js contenteditable, single tweets and multi-tweet threads
7
+ with rate limiting. Triggers on: "post to x", "tweet via playwriter",
8
+ "x thread playwriter", "post tweet browser".
9
+ ---
10
+
11
+ # X Posting via Playwriter
12
+
13
+ Post tweets and threads to X.com using browser automation via Playwriter. Works when bird CLI is blocked by anti-automation detection (error 226).
14
+
15
+ **Why this exists:** bird CLI uses cookie auth which X flags as automated. Playwriter controls your actual Chrome browser, which X sees as a real user session.
16
+
17
+ ## Key Discovery: Draft.js + keyboard.insertText
18
+
19
+ X uses Draft.js for its compose editor. Normal Playwright methods fail:
20
+ - `locator.click()` on textarea → times out (X blocks programmatic clicks on compose)
21
+ - `locator.fill()` → times out
22
+ - `keyboard.type()` → Draft.js doesn't register
23
+ - `keyboard.press()` per char → Draft.js doesn't register
24
+ - `document.execCommand('insertText')` → sometimes works but unreliable
25
+ - `navigator.clipboard.writeText()` + paste → X blocks programmatic paste
26
+
27
+ **What works:**
28
+ 1. `mouse.click()` with coordinates from `boundingBox()` → bypasses X's click interception
29
+ 2. `keyboard.insertText()` → triggers Draft.js input handler properly
30
+ 3. `mouse.click()` on Post button via coordinates → posts successfully
31
+
32
+ ## Prerequisites
33
+
34
+ - Chrome must be running with the X account logged in
35
+ - Playwriter extension must be connected
36
+ - Use the correct browser profile (the one logged into X)
37
+
38
+ ```bash
39
+ bunx playwriter@latest session new --browser "profile:108142496489660000816"
40
+ ```
41
+
42
+ ## Posting a Single Tweet
43
+
44
+ ```bash
45
+ SESSION=7 # your session id
46
+
47
+ # Step 1: Navigate to X home
48
+ bunx playwriter@latest -s $SESSION -e "$(cat <<'EOF'
49
+ state.page = context.pages().find(p => p.url() === 'https://x.com/home')
50
+ if (!state.page) {
51
+ state.page = await context.newPage()
52
+ await state.page.goto('https://x.com/home', { waitUntil: 'domcontentloaded' })
53
+ }
54
+ await state.page.waitForTimeout(5000)
55
+ console.log("Ready:", state.page.url())
56
+ EOF
57
+ )"
58
+
59
+ # Step 2: Click textarea via coordinates and type
60
+ bunx playwriter@latest -s $SESSION -e "$(cat <<'EOF'
61
+ const textarea = state.page.locator('[data-testid="tweetTextarea_0"]')
62
+ const tbox = await textarea.boundingBox()
63
+ await state.page.mouse.click(tbox.x + tbox.width/2, tbox.y + tbox.height/2)
64
+ await state.page.waitForTimeout(1000)
65
+ await state.page.keyboard.insertText("YOUR TWEET TEXT HERE")
66
+ await state.page.waitForTimeout(1000)
67
+ const postBtn = state.page.locator('[data-testid="tweetButtonInline"]')
68
+ const pbox = await postBtn.boundingBox()
69
+ await state.page.mouse.click(pbox.x + pbox.width/2, pbox.y + pbox.height/2)
70
+ console.log("Posted!")
71
+ await state.page.waitForTimeout(3000)
72
+ EOF
73
+ )"
74
+ ```
75
+
76
+ ## Posting a Thread (Multi-Tweet)
77
+
78
+ Thread = tweet 1, then reply to tweet 1, then reply to reply, etc.
79
+
80
+ ```bash
81
+ TWEET1_URL="" # will be captured after first tweet
82
+
83
+ # Step 1: Post first tweet (same as single tweet above)
84
+ # After posting, capture URL:
85
+ bunx playwriter@latest -s $SESSION -e "$(cat <<'EOF'
86
+ await state.page.goto('https://x.com/AIwithJai', { waitUntil: 'domcontentloaded' })
87
+ await state.page.waitForTimeout(4000)
88
+ const articles = await state.page.locator('article').all()
89
+ const tweet1 = articles[1] // skip pinned
90
+ const timeLink = await tweet1.locator('time').evaluateHandle(el => el.closest('a')?.href)
91
+ state.tweet1Url = await timeLink.evaluate(el => el?.href || el)
92
+ console.log("Tweet 1 URL:", state.tweet1Url)
93
+ EOF
94
+ )"
95
+
96
+ # Step 2: Wait 45 seconds (rate limiting!)
97
+ sleep 45
98
+
99
+ # Step 3: Navigate to tweet, click reply, type, post
100
+ bunx playwriter@latest -s $SESSION -e "$(cat <<'EOF'
101
+ await state.page.goto(state.tweet1Url, { waitUntil: 'domcontentloaded' })
102
+ await state.page.waitForTimeout(4000)
103
+ const replyBtn = state.page.locator('[data-testid="reply"]').first()
104
+ const rbox = await replyBtn.boundingBox()
105
+ await state.page.mouse.click(rbox.x + rbox.width/2, rbox.y + rbox.height/2)
106
+ await state.page.waitForTimeout(2000)
107
+ const textarea = state.page.locator('[data-testid="tweetTextarea_0"]').first()
108
+ const tbox = await textarea.boundingBox()
109
+ await state.page.mouse.click(tbox.x + tbox.width/2, tbox.y + tbox.height/2)
110
+ await state.page.waitForTimeout(1000)
111
+ await state.page.keyboard.insertText("REPLY TEXT HERE")
112
+ await state.page.waitForTimeout(1000)
113
+ const postBtn = state.page.locator('[data-testid="tweetButton"]').first()
114
+ const pbox = await postBtn.boundingBox()
115
+ await state.page.mouse.click(pbox.x + pbox.width/2, pbox.y + pbox.height/2)
116
+ console.log("Reply posted!")
117
+ await state.page.waitForTimeout(4000)
118
+ EOF
119
+ )"
120
+
121
+ # Step 4+: Repeat step 3 for each additional reply
122
+ # ALWAYS wait 45 seconds between each tweet
123
+ # After each reply, reload the page before clicking reply again
124
+ ```
125
+
126
+ ## Thread Reply Template (reusable)
127
+
128
+ For replies 2-N in a thread, after the first reply:
129
+
130
+ ```javascript
131
+ // Reload to see updated thread
132
+ await state.page.reload({ waitUntil: 'domcontentloaded' })
133
+ await state.page.waitForTimeout(3000)
134
+
135
+ // Click first reply button
136
+ const replyBtns = await state.page.locator('[data-testid="reply"]').all()
137
+ const rbox = await replyBtns[0].boundingBox()
138
+ await state.page.mouse.click(rbox.x + rbox.width/2, rbox.y + rbox.height/2)
139
+ await state.page.waitForTimeout(2000)
140
+
141
+ // Click textarea and type
142
+ const textarea = state.page.locator('[data-testid="tweetTextarea_0"]').first()
143
+ const tbox = await textarea.boundingBox()
144
+ await state.page.mouse.click(tbox.x + tbox.width/2, tbox.y + tbox.height/2)
145
+ await state.page.waitForTimeout(1000)
146
+ await state.page.keyboard.insertText("TWEET TEXT")
147
+ await state.page.waitForTimeout(1000)
148
+
149
+ // Click Post
150
+ const postBtn = state.page.locator('[data-testid="tweetButton"]').first()
151
+ const pbox = await postBtn.boundingBox()
152
+ await state.page.mouse.click(pbox.x + pbox.width/2, pbox.y + pbox.height/2)
153
+ console.log("Posted!")
154
+ await state.page.waitForTimeout(4000)
155
+ ```
156
+
157
+ ## Element Selectors
158
+
159
+ | Element | Selector | Notes |
160
+ |---------|----------|-------|
161
+ | Compose textarea | `[data-testid="tweetTextarea_0"]` | Contenteditable div, NOT input |
162
+ | Post button (home) | `[data-testid="tweetButtonInline"]` | Inline compose on home page |
163
+ | Post button (reply) | `[data-testid="tweetButton"]` | Reply compose dialog |
164
+ | Reply button | `[data-testid="reply"]` | On each tweet |
165
+ | Side nav Post button | `[data-testid="SideNav_NewTweet_Button"]` | Left sidebar |
166
+
167
+ ## Rate Limiting (CRITICAL)
168
+
169
+ - **45 seconds minimum** between each tweet in a thread
170
+ - Use `sleep 45` between playwriter commands
171
+ - Max ~5 tweets per thread per session
172
+ - If Post button stays disabled after insertText, reload the page and retry
173
+ - X may still flag accounts that post too frequently
174
+
175
+ ## Troubleshooting
176
+
177
+ | Problem | Cause | Fix |
178
+ |---------|-------|-----|
179
+ | Post button stays disabled | Draft.js didn't register text | Reload page, refocus textarea, use `keyboard.insertText()` |
180
+ | Click on textarea times out | X blocks programmatic clicks | Use `mouse.click()` with `boundingBox()` coordinates |
181
+ | Text appears but button disabled | Wrong input method used | Must use `keyboard.insertText()`, not `type()` or `fill()` |
182
+ | Page closed error | User closed the tab | Reset session: `playwriter session reset N` |
183
+ | "Node is not input" error | X uses contenteditable div | Use `textContent()` not `inputValue()` |
184
+ | Reply didn't chain properly | Replied to wrong tweet | Reload page between replies, use first reply button |
185
+
186
+ ## Limitations
187
+
188
+ - No media upload support yet (images, video)
189
+ - No emoji picker interaction
190
+ - No poll creation
191
+ - No scheduled posts via this method (use typefully for scheduling)
192
+ - Newlines in tweets not supported (keyboard.insertText treats \n as space)
193
+ - For multi-paragraph tweets, use single paragraph with periods for breaks
194
+
195
+ ## When to Use vs Other Methods
196
+
197
+ | Method | Use When | Reliability |
198
+ |--------|----------|-------------|
199
+ | bird CLI | Normal posting, not flagged | High (when not blocked) |
200
+ | **playwriter** | bird blocked (226), threads | Medium (Draft.js quirks) |
201
+ | typefully | Scheduled posts, reliable API | High (needs API key setup) |
202
+
203
+ *Last updated: 2026-05-09*
@@ -0,0 +1,129 @@
1
+ ---
2
+ slash_command: false
3
+ name: x-research
4
+ description: Search and research X (Twitter) using bird CLI. Use when researching social media sentiment, trending topics, user activity, or platform-specific content that only exists on X.
5
+ ---
6
+
7
+ ## USE WHEN
8
+ **Use this skill when:**
9
+
10
+ - Researching **X/Twitter-specific content** that won't appear in web search
11
+ - Analyzing **social media sentiment** around topics, brands, or people
12
+ - Tracking **trending hashtags** or conversations on X
13
+ - Researching **user activity** and tweet history (recent tweets, engagement patterns)
14
+ - Finding **real-time reactions** to events or announcements
15
+ - Monitoring **brand mentions** or competitor activity on X
16
+ - Researching **influencer or thought leader** presence and engagement
17
+ - Finding **thread content** or quote tweets (context not in web search)
18
+
19
+ **Example scenarios:**
20
+ - "What's X saying about NVDA stock today?" → sentiment analysis + recent tweets
21
+ - "Research @elonmusk's recent AI-related tweets" → user tweet history
22
+ - "Find trending hashtags for #AI" → hashtag research
23
+ - "Who's mentioning Nomadixgear on X?" → brand mention monitoring
24
+ - "What's the reaction to this news on X?" → real-time sentiment
25
+
26
+ ## DON'T WHEN
27
+ **Don't use this skill when:**
28
+
29
+ - Researching **general web content** (use web_search or web_fetch instead)
30
+ - Topic is **not X-specific** (general knowledge, Wikipedia, etc.)
31
+ - Looking for **long-form content** (blog posts, articles) → use web_fetch
32
+ - Researching **official documentation** or press releases → use web_fetch on official sites
33
+ - User wants **broad research across platforms** (not just X)
34
+ - Topic is **evergreen content** (not time-sensitive tweets)
35
+ - Need **in-depth analysis** (X is for quick hits, use deep-research for comprehensive)
36
+
37
+ **Wrong uses:**
38
+ - "What's the capital of France?" → Use web_search or answer directly
39
+ - "Read this blog post" → Use web_fetch on the URL
40
+ - "Who is CEO of Apple?" → Use web_search, not X search
41
+ - "Find me documentation for X API" → Use web_fetch on docs.x.com
42
+ - "Research competitor features" → Use deep-research or web_search (broader than X)
43
+
44
+ **Alternative patterns:**
45
+ - Web search → web_search tool (broader sources)
46
+ - URL content → web_fetch tool (direct access)
47
+ - Deep research → deep-research skill (comprehensive with citations)
48
+ - Social media beyond X → Consider platform-specific tools or web_search with site filters
49
+
50
+ # X Research Skill
51
+ Search and research X (Twitter) using bird CLI.
52
+
53
+ ## Agent-Reach Integration (Free X Search)
54
+
55
+ **Agent-Reach** (skill: `agent-reach`) provides free X/Twitter search via bird CLI / twitter-cli (no API key, zero config):
56
+ ```bash
57
+ agent-reach doctor --json # Check if X backend is available (shows bird CLI or twitter-cli)
58
+
59
+ # Search tweets
60
+ twitter search "query" -n 10
61
+ # or
62
+ bird search "query"
63
+
64
+ # Read single tweet/thread
65
+ twitter tweet URL
66
+ bird tweet URL
67
+
68
+ # User timeline
69
+ twitter user-posts @username -n 20
70
+ ```
71
+
72
+ **Use Agent-Reach for**: Quick searches, broad discovery, zero-setup research.
73
+ **Use x-research skill for**: Structured queries with time filters, sentiment analysis, historical tracking.
74
+
75
+ ## Usage
76
+ ```bash
77
+
78
+ # Quick search (via x-research skill)
79
+ x-research --query "OpenClaw skills" --time 24h
80
+
81
+ # Quick search (via Agent-Reach, zero config)
82
+ twitter search "OpenClaw skills" -n 10
83
+
84
+ # Deep research with analysis (x-research skill)
85
+ x-research --query "what are people saying about NVDA today" --time today --analyze
86
+
87
+ # Search specific user tweets (x-research skill)
88
+ x-research --query "from:@elonmusk AI" --time 7d
89
+
90
+ # Read specific tweet/thread (Agent-Reach)
91
+ twitter tweet "https://x.com/user/status/123"
92
+ ```
93
+
94
+ ## Time Filters
95
+ - `1h`, `24h`, `today`, `7d`, `30d`
96
+
97
+ ## Output Formats
98
+
99
+ ### Quick Search
100
+ - Tweet text and metadata
101
+ - Author, timestamp, engagement stats
102
+ - URLs and hashtags
103
+
104
+ ### Analysis Mode (--analyze)
105
+ - Sentiment summary (positive/negative/neutral), Top themes extracted, Key accounts mentioned, Engagement patterns
106
+
107
+ # Recent conversation tracking
108
+ x-research --query "AIwithJai" --time 24h
109
+
110
+ # Sentiment analysis
111
+ x-research --query "Nomadixgear" --time today --analyze
112
+
113
+ # Competitor monitoring
114
+ x-research --query "competitor-name" --time 7d
115
+
116
+ # Trending hashtag research
117
+ x-research --query "#glamping" --time today
118
+
119
+ ## Tips
120
+ - X search is best for **recent, time-sensitive content** (last 1-7 days)
121
+ - For older content, X search is limited — use web_search with site:twitter.com
122
+ - Engagement metrics help identify **influential tweets** vs noise
123
+ - Analysis mode provides **qualitative insights** beyond raw tweet lists
124
+
125
+ ## Limitations
126
+ - X search API limits historical data (usually 7 days for full search, longer for user-specific)
127
+ - Retweets and quote tweets may need manual inspection for context
128
+ - Direct messages (DMs) are not searchable
129
+ - Deleted tweets remain indexed briefly in some cases
@@ -0,0 +1,85 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ QUERY=""
5
+ TIME="24h"
6
+ ANALYZE=false
7
+ MAX_RESULTS=20
8
+
9
+ # Auth tokens from TOOLS.md
10
+ AUTH_TOKEN="16dfd5eaf636980f73c0dfd602df8fea26e63feb"
11
+ CT0="a3b15922b77da31a57fd003b3bc7e769c2617235113ea68327d336244473c5aad91e0519bba46817e37f1c8f4ab87ad8269d82859533da53da252b7fb7d3872f8fe0cb755b0f0507cb1f5ccca936189d"
12
+
13
+ usage() {
14
+ echo "Usage: x-research --query <query> [--time 1h|24h|today|7d|30d] [--analyze]"
15
+ exit 1
16
+ }
17
+
18
+ while [[ $# -gt 0 ]]; do
19
+ case $1 in
20
+ --query)
21
+ QUERY="$2"
22
+ shift 2
23
+ ;;
24
+ --time)
25
+ TIME="$2"
26
+ shift 2
27
+ ;;
28
+ --analyze)
29
+ ANALYZE=true
30
+ shift
31
+ ;;
32
+ *)
33
+ echo "Unknown option: $1"
34
+ usage
35
+ ;;
36
+ esac
37
+ done
38
+
39
+ if [[ -z "$QUERY" ]]; then
40
+ echo "Error: --query is required"
41
+ usage
42
+ fi
43
+
44
+ echo "🔍 Searching X for: $QUERY"
45
+ echo "⏱️ Time filter: $TIME"
46
+ echo ""
47
+
48
+ # Run bird search
49
+ bird search "$QUERY" -n $MAX_RESULTS --auth-token "$AUTH_TOKEN" --ct0 "$CT0" 2>&1 | awk '
50
+ BEGIN { topic=1; first=1 }
51
+ /^@[a-zA-Z0-9_]+ \(/ {
52
+ if (!first) print ""
53
+ first=0
54
+
55
+ # Parse user and name
56
+ user=$1
57
+ name=$0
58
+ sub(/^@[a-zA-Z0-9_]+ \(/, "", name)
59
+ sub(/\):.*$/, "", name)
60
+
61
+ # Get the tweet text (everything after the first closing paren and colon)
62
+ tweet=""
63
+ for (i=2; i<=NF; i++) {
64
+ if ($i ~ /\):$/) {
65
+ tweet_start=i+1
66
+ break
67
+ }
68
+ }
69
+ for (i=tweet_start; i<=NF; i++) {
70
+ tweet=tweet " " $i
71
+ }
72
+
73
+ # Print formatted output
74
+ print "• " user ":" tweet
75
+ next
76
+ }
77
+ /^🔗/ {
78
+ sub(/^🔗 /, "→ ", $0)
79
+ print $0
80
+ print ""
81
+ next
82
+ }
83
+ /^📅/ { next }
84
+ /^[─═]/ { next }
85
+ { next }'
@@ -0,0 +1,90 @@
1
+ ---
2
+ slash_command: false
3
+ name: youtube-summarize
4
+ description: Summarize YouTube videos using Google Gemini API with direct URL input. Extract key insights, transcripts, and content ideas from YouTube videos. Use when needing to analyze YouTube content for content creation, research, or information extraction.
5
+ ---
6
+
7
+ # YouTube Summarize Skill
8
+ Summarize YouTube videos using Google's Gemini API with direct YouTube URL input. This skill extracts video content insights without needing transcript downloads.
9
+
10
+ ## How It Works
11
+ The Gemini API accepts YouTube URLs directly in the `fileData.fileUri` field. Gemini fetches and processes the video content, including visual understanding and audio transcription.
12
+
13
+ ## Prerequisites
14
+ - `GEMINI_API_KEY` environment variable set with your Google AI Studio API key
15
+
16
+ ## Usage
17
+ ```bash
18
+
19
+ # Basic summary
20
+ ./scripts/youtube-summarize.sh "https://youtu.be/VIDEO_ID"
21
+
22
+ # Extract content ideas
23
+ ./scripts/youtube-summarize.sh "https://www.youtube.com/watch?v=VIDEO_ID" --mode ideas
24
+
25
+ # Full transcript with timestamps
26
+ ./scripts/youtube-summarize.sh "https://youtu.be/VIDEO_ID" --mode transcript
27
+
28
+ # Custom prompt
29
+ ./scripts/youtube-summarize.sh "https://youtu.be/VIDEO_ID" --prompt "What are the key points about X?"
30
+
31
+ # JSON output
32
+ ./scripts/youtube-summarize.sh "https://youtu.be/VIDEO_ID" --json
33
+ ```
34
+
35
+ ## Output Modes
36
+ - `summary`: Concise overview (default)
37
+ - `ideas`: Content ideas and angles
38
+ - `transcript`: Full transcript with timestamps
39
+ - `key_points`: Numbered key takeaways
40
+ - `custom`: Use with --prompt for custom analysis
41
+
42
+ # Extract ideas for your content
43
+ ./scripts/youtube-summarize.sh "https://youtu.be/..." --mode ideas --json > ideas.json
44
+
45
+ # Batch process multiple videos
46
+ for url in urls.txt; do
47
+ ./scripts/youtube-summarize.sh "$url" --mode key_points
48
+ done
49
+
50
+ # Get transcript for analysis
51
+ ./scripts/youtube-summarize.sh "https://youtu.be/..." --mode transcript > transcript.md
52
+
53
+ ## Limitations
54
+ - Videos must be publicly accessible
55
+ - Some videos (music, restricted) may not work
56
+ - For blocked videos, use direct download + transcription instead
57
+
58
+ ## Agent-Reach Alternative (Free Transcripts)
59
+
60
+ **Agent-Reach** (skill: `agent-reach`) provides free YouTube transcripts via yt-dlp:
61
+ ```bash
62
+ agent-reach doctor --json # Check if YouTube backend is available
63
+
64
+ # Download transcripts (no API key needed)
65
+ yt-dlp --write-sub --write-auto-sub --sub-lang "zh-Hans,zh,en" --skip-download -o "/tmp/%(id)s" "URL"
66
+ cat /tmp/VIDEO_ID.*.vtt
67
+
68
+ # Or use Agent-Reach transcribe for Whisper fallback
69
+ agent-reach configure groq-key YOUR_KEY # Free at console.groq.com
70
+ agent-reach transcribe "https://www.youtube.com/watch?v=VIDEO_ID"
71
+ ```
72
+
73
+ **Use Agent-Reach for**: Free transcripts without API key, batch processing, when Gemini API fails.
74
+ **Use youtube-summarize for**: Gemini-powered analysis, visual understanding, custom prompts.
75
+
76
+ ## Technical Reference
77
+ API endpoint: `https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent`
78
+
79
+ Request body includes:
80
+ ```json
81
+ {
82
+ "contents": [{
83
+ "parts": [
84
+ {"text": "Summarize this video"},
85
+ {"fileData": {"fileUri": "https://www.youtube.com/watch?v=..."}}
86
+ ]
87
+ }]
88
+ }
89
+
90
+ See `/scripts/youtube-summarize.sh` for implementation details.
@@ -0,0 +1,143 @@
1
+ #!/bin/bash
2
+ # youtube-summarize.sh - Summarize YouTube videos using Gemini API
3
+ # Usage: youtube-summarize.sh <youtube_url> [options]
4
+
5
+ set -e
6
+
7
+ # Configuration
8
+ API_KEY="${GEMINI_API_KEY:-${GOOGLE_API_KEY:-}}"
9
+ MODEL="gemini-3-flash-preview"
10
+ API_BASE="https://generativelanguage.googleapis.com/v1beta/models"
11
+
12
+ # Default settings
13
+ MODE="summary"
14
+ JSON_OUTPUT=false
15
+ CUSTOM_PROMPT=""
16
+
17
+ # Parse arguments
18
+ URL=""
19
+ while [[ $# -gt 0 ]]; do
20
+ case $1 in
21
+ --mode)
22
+ MODE="$2"
23
+ shift 2
24
+ ;;
25
+ --prompt)
26
+ CUSTOM_PROMPT="$2"
27
+ shift 2
28
+ ;;
29
+ --json)
30
+ JSON_OUTPUT=true
31
+ shift
32
+ ;;
33
+ -*|--*)
34
+ echo "Unknown option: $1" >&2
35
+ echo "Usage: $0 <youtube_url> [--mode summary|ideas|transcript|key_points] [--prompt 'custom text'] [--json]" >&2
36
+ exit 1
37
+ ;;
38
+ *)
39
+ URL="$1"
40
+ shift
41
+ ;;
42
+ esac
43
+ done
44
+
45
+ # Validate
46
+ if [[ -z "$URL" ]]; then
47
+ echo "Error: YouTube URL is required" >&2
48
+ echo "Usage: $0 <youtube_url> [options]" >&2
49
+ exit 1
50
+ fi
51
+
52
+ if [[ -z "$API_KEY" ]]; then
53
+ echo "Error: GEMINI_API_KEY or GOOGLE_API_KEY environment variable is required" >&2
54
+ exit 1
55
+ fi
56
+
57
+ # Normalize URL to full YouTube URL
58
+ if [[ "$URL" == "https://youtu.be/"* ]]; then
59
+ VIDEO_ID="${URL#https://youtu.be/}"
60
+ FULL_URL="https://www.youtube.com/watch?v=${VIDEO_ID%%\?*}"
61
+ elif [[ "$URL" == "https://www.youtube.com/shorts/"* ]]; then
62
+ VIDEO_ID="${URL#https://www.youtube.com/shorts/}"
63
+ FULL_URL="https://www.youtube.com/watch?v=${VIDEO_ID%%\?*}"
64
+ else
65
+ FULL_URL="$URL"
66
+ fi
67
+
68
+ # Build prompt based on mode
69
+ case "$MODE" in
70
+ summary)
71
+ PROMPT="${CUSTOM_PROMPT:-Provide a concise summary of this YouTube video in 3-5 sentences. Include the main topic, key insights, and any actionable takeaways.}"
72
+ ;;
73
+ ideas)
74
+ PROMPT="${CUSTOM_PROMPT:-Extract 5-10 content ideas from this video that could be turned into blog posts, social media threads, or newsletter content. For each idea, include a title and a brief description.}"
75
+ ;;
76
+ transcript)
77
+ PROMPT="${CUSTOM_PROMPT:-Provide a full transcript of this video with timestamps. Format as: [MM:SS] text}"
78
+ ;;
79
+ key_points)
80
+ PROMPT="${CUSTOM_PROMPT:-Extract the 5-7 most important key points from this video as a numbered list. Each point should be 1-2 sentences.}"
81
+ ;;
82
+ custom)
83
+ PROMPT="${CUSTOM_PROMPT:-Analyze this video}"
84
+ ;;
85
+ *)
86
+ PROMPT="${CUSTOM_PROMPT:-Summarize this video}"
87
+ ;;
88
+ esac
89
+
90
+ # Build request JSON
91
+ REQUEST_BODY=$(cat <<EOF
92
+ {
93
+ "contents": [{
94
+ "parts": [
95
+ {"text": "${PROMPT}"},
96
+ {"fileData": {"fileUri": "${FULL_URL}"}}
97
+ ]
98
+ }],
99
+ "generationConfig": {
100
+ "maxOutputTokens": 8192,
101
+ "temperature": 0.4
102
+ }
103
+ }
104
+ EOF
105
+ )
106
+
107
+ # Make API call
108
+ URL_ENCODED=$(echo "$FULL_URL" | sed 's/&/\&/g')
109
+ RESPONSE=$(curl -s -X POST "${API_BASE}/${MODEL}:generateContent" \
110
+ -H "x-goog-api-key: ${API_KEY}" \
111
+ -H "Content-Type: application/json" \
112
+ -d "$REQUEST_BODY" 2>&1) || {
113
+ echo "Error: Failed to connect to Gemini API" >&2
114
+ exit 1
115
+ }
116
+
117
+ # Check for API errors
118
+ if echo "$RESPONSE" | grep -q '"error":'; then
119
+ ERROR=$(echo "$RESPONSE" | grep -o '"message": "[^"]*"' | head -1 | cut -d'"' -f4)
120
+ echo "API Error: ${ERROR:-$RESPONSE}" >&2
121
+ exit 1
122
+ fi
123
+
124
+ # Extract content from response
125
+ SUMMARY=$(echo "$RESPONSE" | sed -n 's/.*"text": "\([^"]*\)".*/\1/p; s/\\n/\n/g' | head -1)
126
+
127
+ # If extraction failed, try jq or alternative parsing
128
+ if [[ -z "$SUMMARY" ]] && command -v jq >/dev/null 2>&1; then
129
+ SUMMARY=$(echo "$RESPONSE" | jq -r '.candidates[0].content.parts[0].text' 2>/dev/null)
130
+ fi
131
+
132
+ # Output
133
+ if [[ "$JSON_OUTPUT" == true ]]; then
134
+ echo "$RESPONSE"
135
+ else
136
+ if [[ -n "$SUMMARY" ]]; then
137
+ printf '%b\n' "$SUMMARY"
138
+ else
139
+ # Fallback: output raw response if parsing failed
140
+ echo "Note: Summary extraction failed, showing raw response:"
141
+ echo "$RESPONSE"
142
+ fi
143
+ fi