@jairodri/huckleberry-cli 1.0.1 → 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 +349 -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,230 @@
1
+ # Cross-API Compound Recipes
2
+
3
+ Single APIs answer single questions. Compound recipes — chaining two or three APIs in one move — answer the questions Ahrefs alone can't. The four recipes here are mktg-native and depend only on tools already in our stack: **Exa MCP**, **last30days** skill, **firecrawl**, **gh CLI**, **mktg-x**, **DeepWiki**, **company-research** skill, **people-research** skill, **Exa Websets MCP**.
4
+
5
+ Each recipe in this file is a sequence — run the steps in order, accumulate outputs, hand the consolidated result to the parent skill.
6
+
7
+ ---
8
+
9
+ ## Recipe 1 — Pain-Point Cluster Discovery
10
+
11
+ Finds the *real* complaints the audience has today, not yesterday's keyword data. Drives `/for/` use-case page angles and `/playbooks/` opening hooks. Replaces stale Ahrefs "questions" data.
12
+
13
+ **APIs chained:** `/last30days` + Exa `deep_search_exa` + `mktg-x` (optional, when X login cookie is configured) + Exa `web_search_advanced_exa`
14
+
15
+ ```
16
+ Step 1 — Aggregate recent organic signal
17
+ Invoke: /last30days "<product-category> + frustrations OR problems OR struggling with"
18
+ → Returns Reddit + X + HN + YouTube + TikTok mentions with engagement counts
19
+ → Filter to posts with >10 engagement (avoid astroturfed noise)
20
+
21
+ Step 2 — Cluster the complaints
22
+ For each high-engagement complaint, extract the verb phrase:
23
+ "I keep losing track of..." → "keep losing track of <object>"
24
+ "Why is <task> so hard?" → "<task> being hard"
25
+ "There has to be a better way to..." → "better way to <task>"
26
+ Cluster phrases by verb-object similarity. 5-10 clusters typical.
27
+
28
+ Step 3 — Validate via Exa deep search
29
+ For each cluster, run:
30
+ mcp__exa__deep_search_exa(
31
+ objective: "What are people saying about <cluster-phrase> in <product-category>?",
32
+ type: "deep",
33
+ numResults: 8
34
+ )
35
+ → Confirms cluster is real (not a single noisy post)
36
+ → Surfaces authoritative articles already covering the pain
37
+
38
+ Step 4 — Optional X deep-dive (if MKTG_X_AUTH_TOKEN configured)
39
+ For the top 2-3 clusters, invoke /mktg-x to read a representative thread:
40
+ /mktg-x https://twitter.com/<user>/status/<id>
41
+ → Lived-experience quotes for the page's pain section
42
+ → Three-beat vignette material (scenario / surprise / lesson)
43
+
44
+ Step 5 — Map to page candidates
45
+ Each surviving cluster becomes either:
46
+ - A /for/<audience>/<verb> use-case page (Pattern B)
47
+ - A /playbooks/<topic> playbook opening hook (Pattern E)
48
+ Output schema: array of { cluster, sources[], page_type, draft_h1, draft_lede }
49
+ ```
50
+
51
+ **Why this beats Ahrefs question data:** Ahrefs Questions reflects last 30-90 days of search-engine signal aggregated globally. `/last30days` reflects real conversations from the past 30 days, with engagement counts proving they aren't astroturfed. For B2B SaaS and developer-targeted products, the conversation signal leads the search-engine signal by 3-6 months.
52
+
53
+ ---
54
+
55
+ ## Recipe 2 — OSS Competitor Teardown
56
+
57
+ For competitors that are open source (most agent / dev-tool / Claude-Code-skill competitors are), pull a full profile in one fan-out. Replaces single-source competitor research with a multi-API mosaic.
58
+
59
+ **APIs chained:** `gh CLI` + `mcp__deepwiki__read_wiki_contents` + `company-research` skill + Exa `web_search_advanced_exa`
60
+
61
+ ```
62
+ Step 1 — GitHub baseline (parallel fan-out)
63
+ gh repo view <owner/repo> --json description,homepageUrl,stargazerCount,forkCount,createdAt,updatedAt
64
+ gh api repos/<owner/repo>/contents/README.md --jq '.content' | base64 -d
65
+ gh api repos/<owner/repo>/contents/skills 2>/dev/null # Claude Code skills
66
+ gh api repos/<owner/repo>/releases --jq 'length' # release cadence
67
+ gh api repos/<owner/repo>/contributors --jq 'length' # contributor count
68
+
69
+ Step 2 — Deep documentation read
70
+ mcp__deepwiki__read_wiki_structure(repoName: "<owner/repo>")
71
+ → Get the wiki TOC; identify the architecture/getting-started sections
72
+ mcp__deepwiki__read_wiki_contents(repoName: "<owner/repo>", path: "<section>")
73
+ → Read the most informative sections (limit to 3-5 to avoid token bloat)
74
+
75
+ Step 3 — Business context (company-research)
76
+ Invoke: /company-research "<competitor-brand-name>"
77
+ → Returns funding state, team size, positioning, customer list
78
+ → Note: only meaningful if the OSS project has a parent company
79
+
80
+ Step 4 — Live SERP context
81
+ mcp__exa__web_search_advanced_exa(
82
+ query: "<competitor-brand> review",
83
+ numResults: 10,
84
+ enableSummary: true
85
+ )
86
+ → What 3rd-party reviewers say (the "weaknesses" most users cite)
87
+
88
+ Step 5 — Consolidate into competitor profile
89
+ Output a single block per competitor:
90
+ {
91
+ "slug": "<canonical-slug>",
92
+ "github": { stars, contributors, last_release, release_cadence_days },
93
+ "positioning": "<from README intro>",
94
+ "pricing": "<free / freemium / paid + price points>",
95
+ "weaknesses_cited": ["<from Exa review summaries>"],
96
+ "differentiators": ["<what they emphasize>"],
97
+ "our_win_angles": ["<derived by comparison with our brand>"]
98
+ }
99
+ ```
100
+
101
+ **Where it lands:** the competitor profile goes into `brand/competitors.md` (via the `competitive-intel` skill's writer agent `mktg-competitive-scanner`) AND into `.seo/keyword-research.json` per-competitor block for the alternatives pages.
102
+
103
+ ---
104
+
105
+ ## Recipe 3 — Outreach Prospect Discovery
106
+
107
+ Turn a backlink target list into an actual person to pitch. Required for Phase 15 (listicle outreach) in the seo-machine roadmap.
108
+
109
+ **APIs chained:** off-page-seo Recipe F output + Exa `people_search_exa` + Exa `web_search_advanced_exa` + `mktg-x` (optional)
110
+
111
+ ```
112
+ Step 1 — Start from .seo/backlink-targets.json
113
+ Read the `listicles` and `guest_posts` arrays from the existing target list.
114
+ These have { domain, dr, url, topic }.
115
+
116
+ Step 2 — Find the byline author per target
117
+ For each listicle URL:
118
+ mcp__exa__web_search_advanced_exa(
119
+ query: "site:<domain> author <topic>",
120
+ numResults: 5,
121
+ enableSummary: true,
122
+ summaryQuery: "Who wrote this article? What's their role and contact info?"
123
+ )
124
+ → Extract: { name, role, twitter/X handle, email pattern if visible }
125
+
126
+ Step 3 — Enrich with people-research
127
+ For each name surfaced:
128
+ Invoke: /people-research "<name> + <company>"
129
+ → LinkedIn role, recent talks, social handles, areas of focus
130
+
131
+ Step 4 — Pre-pitch context (optional X dive)
132
+ If mktg-x configured AND person has an active X handle:
133
+ /mktg-x https://twitter.com/<handle>
134
+ → Last 10 tweets → reveals their current focus / recent rants → angle for personalized pitch
135
+
136
+ Step 5 — Output enriched prospects
137
+ Schema appended to .seo/backlink-targets.json:
138
+ {
139
+ ...listicle entry...,
140
+ "prospect": {
141
+ "name": "Jane Doe",
142
+ "role": "Senior Editor",
143
+ "linkedin": "...",
144
+ "x_handle": "@janedoe",
145
+ "recent_focus": "AI search optimization, December 2025 article series",
146
+ "pitch_angle": "Her recent series on AI overviews aligns with our /playbooks/ai-citation page; lead with that"
147
+ }
148
+ }
149
+ ```
150
+
151
+ **The prospect block is consumed by:** `direct-response-copy` (cold-email mode) when /cmo chains into outreach email writing in Phase 15.
152
+
153
+ ---
154
+
155
+ ## Recipe 4 — Newcomer Surveillance (ongoing competitive radar)
156
+
157
+ Replaces ad-hoc "I saw a new tool launched on Product Hunt" lookups with continuous monitoring. Refreshes `brand/competitors.md` automatically when new entrants appear.
158
+
159
+ **APIs chained:** Exa Websets MCP + Exa `web_search_advanced_exa` + `/last30days` + `competitive-intel` skill
160
+
161
+ ```
162
+ Step 1 — Create a webset for the category (one-time setup)
163
+ mcp__exa-websets__create_webset({
164
+ criteria: "AI marketing tools launched in the last 90 days targeting <persona>",
165
+ enrichments: [
166
+ { type: "company_basics" },
167
+ { type: "founder_lookup" }
168
+ ]
169
+ })
170
+ → Returns a webset ID. Persist to .seo/config.json as `surveillance_webset_id`.
171
+
172
+ Step 2 — On every seo-machine Resume invocation
173
+ mcp__exa-websets__list_webset_items(websetId: "<id>", since: "<last-check>")
174
+ → Returns new entries since last check
175
+ Persist `last_surveillance_check` to .seo/config.json.
176
+
177
+ Step 3 — Validate via /last30days for each new entry
178
+ For each new tool name:
179
+ Invoke: /last30days "<new-tool-name>"
180
+ → Confirms the tool has real organic signal (≥5 mentions in 30d)
181
+ → Filters out vaporware and stale listings
182
+
183
+ Step 4 — Triage decision
184
+ For each surviving entry, /cmo runs the standard /competitive-intel check:
185
+ - Is this a direct overlap with our positioning? → propose alts page
186
+ - Is it adjacent? → propose comparison content
187
+ - Is it tangential? → log to brand/competitors.md "Watching" section, no immediate action
188
+
189
+ Step 5 — Auto-refresh brand/competitors.md when triggered
190
+ When a new direct overlap clears triage, /cmo spawns `mktg-competitive-scanner`
191
+ on just that one competitor, which appends to brand/competitors.md without
192
+ rewriting the existing entries.
193
+ ```
194
+
195
+ **Cadence:** weekly via `/loop 7d` or on every seo-machine Resume invocation (whichever comes first). Cheap because Exa Websets is incremental — only new items get processed.
196
+
197
+ ---
198
+
199
+ ## When to use which recipe
200
+
201
+ | You want… | Recipe |
202
+ |---|---|
203
+ | Real audience complaints → use-case page hooks | 1 (Pain-Point Cluster Discovery) |
204
+ | Full competitor profile in one pass | 2 (OSS Competitor Teardown) |
205
+ | Actual humans to email for backlink outreach | 3 (Outreach Prospect Discovery) |
206
+ | Continuous radar on new entrants in the category | 4 (Newcomer Surveillance) |
207
+
208
+ For numeric volume/KD/TP data → see `references/exa-recipes.md` (the standard 7 recipes for keyword research).
209
+ For the manual fallback when no MCPs are available → `references/manual-research.md`.
210
+
211
+ ---
212
+
213
+ ## Cost discipline
214
+
215
+ Each compound recipe touches 3-5 APIs. Token discipline:
216
+
217
+ | Recipe | Heavy API | Budget per run |
218
+ |---|---|---|
219
+ | 1 — Pain-Point | Exa `deep_search_exa` | ~$0.05 (deep) — run weekly, not per session |
220
+ | 2 — OSS Teardown | DeepWiki contents | ~$0.02 per competitor — cache for 30 days |
221
+ | 3 — Outreach Prospect | Exa Websets enrichments | ~$0.10 per 50 prospects — run once per off-page phase |
222
+ | 4 — Newcomer Surveillance | Exa Websets list | ~$0.01 per check — run weekly |
223
+
224
+ Cache to `.seo/<recipe>-cache.json` per recipe. Re-run only when:
225
+ - Recipe 1: every 7 days (audience pain cycles weekly)
226
+ - Recipe 2: every 30 days per competitor (competitive movement is slower)
227
+ - Recipe 3: per off-page phase (one-shot)
228
+ - Recipe 4: every 7 days (newcomer cadence)
229
+
230
+ Total monthly research cost stays under $5 for a project running all four recipes on the recommended cadence — orders of magnitude cheaper than Ahrefs Pro ($249/mo) while covering signal Ahrefs doesn't have.
@@ -0,0 +1,260 @@
1
+ # Exa-Native Research Cookbook
2
+
3
+ The 7 recipes below replace the Ahrefs-only flow with mktg's native research stack: **Exa MCP** (primary) + **Firecrawl** (SERP scraping) + **gh CLI** (OSS competitor signal) + **last30days** (Reddit/X/HN aggregation) + **mktg-x** (auth-walled Twitter) + **company-research** / **people-research** skills (already in mktg's catalog).
4
+
5
+ The trade vs Ahrefs: less numeric precision on volume/KD/TP, but live data, broader signal surface, no paid subscription gate, and recipes that compound multiple APIs in ways a single tool can't.
6
+
7
+ For the Ahrefs path on projects where you *do* have a subscription, see the appendix at the bottom of this file.
8
+
9
+ ---
10
+
11
+ ## Recipe A — Domain baseline (DR proxy + topical authority)
12
+
13
+ Replaces Ahrefs `site-explorer-domain-rating`. Builds a multi-signal DR estimate from public data.
14
+
15
+ ```
16
+ 1. mcp__exa__company_research_exa(companyName: "<user-brand>")
17
+ → existence + business profile + age signal
18
+ 2. mcp__exa__web_search_advanced_exa(
19
+ query: "site:<user-domain>",
20
+ numResults: 100,
21
+ type: "fast"
22
+ )
23
+ → indexed page count (Exa proxy for what Google has crawled)
24
+ 3. (If OSS) gh repo view <owner/repo> --json stargazerCount,forkCount,createdAt
25
+ → GitHub-stars-as-authority signal for tech-product competitors
26
+ 4. mcp__exa__web_search_advanced_exa(
27
+ query: "<brand-name> -site:<user-domain>",
28
+ numResults: 30
29
+ )
30
+ → unique referring domains mentioning the brand (DR proxy)
31
+ ```
32
+
33
+ **DR estimate rules:**
34
+
35
+ | Signal | DR estimate |
36
+ |---|---|
37
+ | < 50 indexed pages AND < 20 mentions | 0–10 (greenfield) |
38
+ | 50–500 indexed pages, 20–100 mentions | 10–25 |
39
+ | 500–5000 indexed pages, 100–500 mentions | 25–45 |
40
+ | 5000+ indexed pages, 500+ mentions | 45+ |
41
+ | GitHub OSS bonus: stars > 1k | +5 |
42
+ | GitHub OSS bonus: stars > 10k | +10 |
43
+
44
+ Record the DR estimate in `.seo/config.json` under `domain_rating_estimate`. Default to 10 (greenfield) when uncertain — under-estimating is safer than over-estimating (the KD cap stays conservative).
45
+
46
+ ---
47
+
48
+ ## Recipe B — Competitor reverse-lookup (what they rank for)
49
+
50
+ Replaces Ahrefs `site-explorer-organic-keywords`. Exa surfaces the pages a competitor has indexed; we infer which keywords drive them.
51
+
52
+ ```
53
+ 1. mcp__exa__web_search_advanced_exa(
54
+ query: "site:<competitor-domain>",
55
+ numResults: 50,
56
+ type: "auto",
57
+ enableSummary: true,
58
+ summaryQuery: "What is this page about? What keyword would search for it?"
59
+ )
60
+ → top 50 indexed pages with AI-summarized intent
61
+ 2. For each top page that looks like an alts/compare/use-case target:
62
+ mcp__exa__web_search_advanced_exa(
63
+ query: "<inferred-keyword>",
64
+ numResults: 10,
65
+ enableSummary: true
66
+ )
67
+ → Verify the keyword is real (competitor actually ranks for it)
68
+ 3. (Bonus, for OSS competitors)
69
+ gh api repos/<owner/repo>/contents/website 2>/dev/null
70
+ gh api repos/<owner/repo>/contents/docs 2>/dev/null
71
+ → Read their actual marketing routes / docs structure
72
+ ```
73
+
74
+ **Output schema (per competitor in `.seo/keyword-research.json`):**
75
+
76
+ ```json
77
+ {
78
+ "competitor": "<slug>",
79
+ "indexed_pages_sampled": 50,
80
+ "high_value_pages": [
81
+ { "url": "...", "inferred_keyword": "...", "page_type": "alternatives|compare|use-case|playbook" }
82
+ ],
83
+ "win_angles_for_our_brand": [...]
84
+ }
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Recipe C — Use-case keyword sweep (the `/for/` and `/playbooks/` discovery loop)
90
+
91
+ Replaces Ahrefs `keywords-explorer-matching-terms`. Three parallel passes for breadth.
92
+
93
+ ```
94
+ PASS 1 — Use-case seed expansion via Exa deep search
95
+ mcp__exa__deep_search_exa(
96
+ objective: "What are the most-searched 'for [audience]' and 'for [use-case]' queries in <product-category>?",
97
+ numResults: 12,
98
+ type: "deep"
99
+ )
100
+
101
+ PASS 2 — Google autocomplete via Firecrawl
102
+ firecrawl scrape "https://www.google.com/complete/search?q=<seed>&output=toolbar"
103
+ firecrawl scrape "https://www.google.com/complete/search?q=<seed>+for"
104
+ firecrawl scrape "https://www.google.com/complete/search?q=<seed>+vs"
105
+ firecrawl scrape "https://www.google.com/complete/search?q=best+<seed>"
106
+ → Real query suggestions from Google's autocomplete index
107
+
108
+ PASS 3 — Pain-point mining (last30days skill)
109
+ Invoke: /last30days "<product-category> problems"
110
+ Invoke: /last30days "<persona> + <pain-point>"
111
+ → Returns Reddit + X + HN + YouTube + TikTok mentions with engagement counts
112
+ → Recurring complaints = keyword opportunities ("how to <unblock>")
113
+ ```
114
+
115
+ **What "good" looks like for this recipe:**
116
+ - 30–60 candidate keywords/topics per competitor
117
+ - Filtered to KD ≤ DR + buffer (see DR-cap heuristic in keyword-research/references/dr-cap-and-confidence.md)
118
+ - Grouped by parent topic (cluster header)
119
+ - Tagged with `confidence: high|medium|estimated` per the 3-tier label rule
120
+
121
+ ---
122
+
123
+ ## Recipe D — Comparison volume (`/compare/[a]-vs-[b]` validation)
124
+
125
+ Replaces Ahrefs `keywords-explorer-overview` on "[a] vs [b]". Confirms volume exists for a comparison page before writing it.
126
+
127
+ ```
128
+ 1. mcp__exa__web_search_advanced_exa(
129
+ query: "<a> vs <b>",
130
+ numResults: 10,
131
+ type: "fast"
132
+ )
133
+ → If SERP returns 5+ comparison-shaped results, demand exists.
134
+ → If 0–2 results, defer this comparison.
135
+
136
+ 2. firecrawl scrape "https://www.google.com/search?q=<a>+vs+<b>"
137
+ → Captures "About X,XXX results" line (rough volume proxy)
138
+ → Captures featured snippet (signals comparison-page winnability)
139
+
140
+ 3. mcp__exa__deep_search_exa(
141
+ objective: "Are people actively comparing <a> and <b> on Reddit, HN, X in the last 90 days?",
142
+ type: "deep"
143
+ )
144
+ → Confirms real audience interest, not just SEO ghost demand
145
+ ```
146
+
147
+ **Decision rule:** ship a `/compare/[a]-vs-[b]` page when Pass 1 returns ≥5 results AND Pass 3 surfaces ≥3 organic mentions in the last 90 days. Otherwise defer.
148
+
149
+ ---
150
+
151
+ ## Recipe E — SERP saturation analysis (replaces Ahrefs DR/KD numbers)
152
+
153
+ Replaces Ahrefs `keywords-explorer-overview` (KD field) and `serp-overview`. Builds a "is this winnable?" verdict from SERP composition.
154
+
155
+ ```
156
+ 1. mcp__exa__web_search_advanced_exa(
157
+ query: "<target-keyword>",
158
+ numResults: 10,
159
+ type: "auto"
160
+ )
161
+ → Top 10 results
162
+
163
+ 2. For EACH top-10 result, run:
164
+ mcp__exa__company_research_exa(companyName: "<domain-from-result>")
165
+ → Returns business signal (size, age, recognition) → DR proxy
166
+
167
+ 3. Classify each top-10 result:
168
+ | Result type | KD signal |
169
+ |---|---|
170
+ | Major SaaS landing page (G2, Capterra, established competitor) | High KD (60+) |
171
+ | Reddit / Quora / forum thread | LOW KD (10-30) — content gap |
172
+ | Listicle from DR 30-60 niche site | Medium KD (30-50) |
173
+ | Generic blog from unknown site | LOW KD (10-30) — winnable |
174
+ | YouTube video / TikTok at position 5+ | Medium KD + AI-citation surface |
175
+
176
+ 4. Compute SERP-derived KD:
177
+ - 5+ "high KD" results → KD 60+
178
+ - 5+ "medium KD" results → KD 30-50
179
+ - 3+ "low KD" results in top 5 → KD ≤ 20
180
+ ```
181
+
182
+ **Output rule:** record both `serp_signal_kd` (derived) AND `confidence` (`high` if Pass 2 ran on every result, `medium` if sampled, `estimated` if SERP was small).
183
+
184
+ ---
185
+
186
+ ## Recipe F — Backlink prospecting (referring-domains via Exa)
187
+
188
+ See `skills/off-page-seo/SKILL.md` for the canonical version. Quick reference:
189
+
190
+ ```
191
+ mcp__exa__web_search_advanced_exa(
192
+ query: "<competitor-domain>",
193
+ numResults: 50
194
+ // Note: Exa indexes by content, not by linksTo metadata, so this
195
+ // surfaces pages mentioning the competitor — proxy for inbound link sources
196
+ )
197
+
198
+ Then for each top result:
199
+ - mcp__exa__company_research_exa(companyName: "<result-domain>")
200
+ → DR proxy + business profile (filters paid networks / PR wires)
201
+ - Classify into: directories / listicles / guest-post candidates
202
+ ```
203
+
204
+ Output: `.seo/backlink-targets.json` (schema in `off-page-seo` SKILL).
205
+
206
+ ---
207
+
208
+ ## Recipe G — Content gap analysis (what competitors rank for that we don't)
209
+
210
+ Replaces Ahrefs `site-explorer-organic-keywords` cross-referenced with the user's own indexed pages.
211
+
212
+ ```
213
+ 1. Recipe B output per competitor → list of inferred keywords they rank for
214
+ 2. mcp__exa__web_search_advanced_exa(
215
+ query: "site:<our-domain>",
216
+ numResults: 100
217
+ )
218
+ → Our indexed pages (what we already rank for)
219
+ 3. Compute set difference: their_keywords − our_keywords = the gap
220
+ 4. Filter gap to keywords within our DR-cap (per KD signal from Recipe E)
221
+ 5. Rank surviving gaps by traffic_potential proxy:
222
+ - 1st-page SERP demand (Recipe E) × intent fit (commercial > info)
223
+ ```
224
+
225
+ **Output:** ranked content gap list with the proposed page slug + pattern (A/B/C/D/E) per gap entry. Becomes the input to the roadmap's pending phases.
226
+
227
+ ---
228
+
229
+ ## Cross-API compound recipes
230
+
231
+ Single APIs are useful; chained APIs are differentiating. The big ones:
232
+
233
+ - **Pain-point cluster discovery**: `/last30days` + Exa `deep_search_exa` + mktg-x targeted reading → produces the real complaints the audience has today (drives use-case page angles and playbook hooks)
234
+ - **OSS competitor teardown**: `gh repo view` + `gh api repos/<r>/contents` + DeepWiki `read_wiki_contents` + Exa company research → full competitor profile in one fan-out
235
+ - **Outreach prospect list**: Recipe F output + `mcp__exa__people_search_exa` per domain → finds the actual person to pitch (byline author, marketing lead, etc.) for the listicle outreach phase
236
+ - **Newcomer surveillance**: `mcp__exa-websets__create_webset` with "new <category> tools 2026" criteria → ongoing competitive radar; ingest into `brand/competitors.md` updates
237
+
238
+ Full details for these compound moves: `references/api-stack-recipes.md`.
239
+
240
+ ---
241
+
242
+ ## Ahrefs appendix (when you have a paid subscription)
243
+
244
+ If `mcp__ahrefs__subscription-info-limits-and-usage` returns data, Ahrefs adds **numeric precision** on top of the Exa-stack recipes above. It does not replace them — Ahrefs has no equivalent for pain-point mining via `/last30days`, no `gh`-style OSS competitor signal, no built-in deep research.
245
+
246
+ The minimal Ahrefs-augmented flow when available:
247
+
248
+ | Exa-stack recipe | Ahrefs upgrade for that step |
249
+ |---|---|
250
+ | Recipe A — DR proxy | `site-explorer-domain-rating` returns the real Ahrefs DR (0–100). Replaces the proxy estimate. |
251
+ | Recipe B — Competitor reverse-lookup | `site-explorer-organic-keywords` filtered `kd <= DR_CAP AND volume >= 30` returns numeric KD/volume per keyword. Replaces inferred-keyword step. |
252
+ | Recipe C — Use-case sweep | `keywords-explorer-matching-terms` with seeds → KD/volume/TP per candidate. Replaces deep-search inference. |
253
+ | Recipe D — Comparison volume | `keywords-explorer-overview` on "[a] vs [b]" → exact monthly volume. Replaces "About X results" proxy. |
254
+ | Recipe E — SERP saturation | `serp-overview` → top 10 with DR per row, no per-domain `company_research_exa` lookups needed. |
255
+ | Recipe F — Backlink prospecting | `site-explorer-referring-domains` filtered `DR >= 30 AND traffic_dofollow >= 100` → cleaner target list. |
256
+ | Recipe G — Content gap | `site-explorer-content-gap` (cross-references multiple competitors at once) → faster than the set-difference computation. |
257
+
258
+ When using Ahrefs, record `research_backend: "ahrefs+exa"` in `.seo/config.json` (both — Ahrefs for numerics, Exa-stack for breadth/qualitative signal). The compound-recipe stack (`api-stack-recipes.md`) still runs in parallel because Ahrefs doesn't replace it.
259
+
260
+ **Not chained into mktg's ecosystem.** Ahrefs MCP requires a paid Ahrefs subscription. It is intentionally NOT in `CLAUDE.md`'s chained-in CLI table or registered as a catalog. If you want it, configure it in your own MCP config — mktg's recipes will detect it via the probe and switch paths automatically.
@@ -0,0 +1,73 @@
1
+ # Manual Research Mode (Ahrefs MCP unavailable)
2
+
3
+ When `mcp__ahrefs__*` tools aren't available, the skill still works — keyword data quality just drops. The goal of this fallback is to produce *good-enough* keyword research to populate the roadmap, not to pretend Ahrefs-grade data is there.
4
+
5
+ Be honest with the user: "Ahrefs MCP isn't connected, so I'll work in manual mode. We'll have less precise volume/KD numbers, but we can still ship a roadmap. You can re-run with Ahrefs later to refine it."
6
+
7
+ ## Three substitution patterns
8
+
9
+ ### 1. User pastes data from their UI
10
+
11
+ If the user has Ahrefs, Semrush, Mangools, Ubersuggest, or similar — ask them to paste:
12
+
13
+ - Their domain's DR / DA / authority score
14
+ - Top 20 competitor organic keywords (export CSV → paste here)
15
+ - Striking-distance keywords (pos 5-20 in their GSC)
16
+ - Comparison-keyword volumes for the pairs we want to target
17
+
18
+ Parse the pasted CSV/text into the same `.seo/keyword-research.json` schema you'd build from Ahrefs. Validate columns; warn if KD or volume are missing.
19
+
20
+ ### 2. Web-search-based competitor reverse-lookup
21
+
22
+ If the user has nothing:
23
+
24
+ 1. **Identify competitors** — ask the user, or pull from their pricing page / about page.
25
+ 2. **Web search for each competitor** — use the `firecrawl-search` or built-in WebSearch to query `"<competitor name> alternatives"` and `"<competitor name> vs"`. Look at:
26
+ - Autocomplete suggestions on Google (use a `google.com/search?q=` URL via firecrawl-scrape)
27
+ - "People also ask" boxes
28
+ - Related searches at the bottom of the SERP
29
+ 3. **Scrape top-3 ranking competitor-alternative pages** — these are your benchmark. Capture their H1/H2/comparison structure. Lets you understand the intent and quality bar.
30
+ 4. **Estimate volume crudely.** Use Google Trends (web search) for relative interest. A comparison keyword with steady Google Trends interest score 10+ is probably worth ≥30 monthly searches.
31
+
32
+ Document estimated volumes as **ranges** (e.g. "100-500 monthly") and **mark as estimated** in `keyword-research.json` (`"source": "estimated"`). The user can refine later.
33
+
34
+ ### 3. Manual question-driven discovery
35
+
36
+ Failing all the above, run a structured interview using `AskUserQuestion`:
37
+
38
+ - "Who are your 3-5 most-known direct competitors?"
39
+ - "What problems do customers tell you they're trying to solve when they sign up?"
40
+ - "What tools did customers tell you they tried before yours?"
41
+ - "What does your ideal customer's job title look like? Industry?"
42
+
43
+ From those answers, generate hypothesis keywords:
44
+ - Competitor names → `/alternatives/[competitor]` candidates
45
+ - Stated problems → `/for/[use-case]` candidates
46
+ - Industries / personas → `/for/[audience]` candidates
47
+
48
+ Mark all as unvalidated and **encourage the user to validate volumes via free tools** before deep work:
49
+ - Google Keyword Planner (free with any Google Ads account)
50
+ - Mangools KWFinder free tier (5 queries/day)
51
+ - Keywords Everywhere browser extension (paid, but cheap)
52
+
53
+ ## What's degraded vs Ahrefs mode
54
+
55
+ Be explicit with the user about what's missing:
56
+
57
+ | Capability | Ahrefs mode | Manual mode |
58
+ |---|---|---|
59
+ | Keyword volume | Precise monthly searches | Range estimate or "validate before targeting" |
60
+ | Keyword difficulty (KD) | 0-100 score | Heuristic ("competitive" if top-3 are DR>60) |
61
+ | Traffic potential | Per-keyword TP score | Not available — use volume × CTR estimate |
62
+ | Striking-distance | GSC pos 5-20 via MCP | Requires user to paste GSC data manually |
63
+ | Backlink target research | competitor referring-domains | Manual: who links to top-3 competitor results? |
64
+ | SERP overview | Top 10 with DR per result | firecrawl-scrape the SERP page |
65
+
66
+ ## Roadmap impact
67
+
68
+ In manual mode, the roadmap doc should:
69
+ - Front-load the "validate this volume" step on every phase
70
+ - Use 3-tier confidence labels per row: `high`, `medium`, `estimated`
71
+ - Include a top-of-doc note: "Manual research mode — refine with Ahrefs when available."
72
+
73
+ When Ahrefs MCP becomes available later, run an "Initialize: refresh" pass to upgrade `estimated` rows to real numbers.
@@ -0,0 +1,87 @@
1
+ # Methodology
2
+
3
+ The principles below come from running this playbook across many production phases on a real site. They're not a framework; they're what consistently worked.
4
+
5
+ ## Core mental model
6
+
7
+ SEO is a compounding asset. Pages need time to age in Google's index before they rank, and the day-0 crawl shapes how Google understands your product for months. So:
8
+
9
+ 1. **Publish early, refine later.** A thin page indexed now ages while you sleep. A perfect page indexed a month from now loses that month of compounding. The age signal is real and one-way.
10
+ 2. **Conversion intent before traffic intent.** Most founders publish blog posts first because they're easier. But comparison pages and alternative pages convert at 5-20x the rate of "what is X" blog posts, even at 1/10 the volume. Start with the bottom of the funnel.
11
+ 3. **Bet only where you can win.** DR < 10 cannot rank for KD > 30 in any reasonable timeframe. Target KD ≤ DR + 10 while your DR is still climbing. This is non-negotiable math.
12
+ 4. **Topical depth beats topical breadth.** Pick a niche slice (e.g. "Twitter monitoring for B2B SaaS") and own it. Don't fan out across 20 unrelated themes.
13
+
14
+ ## The publishing-order inversion (most founders do this backwards)
15
+
16
+ The instinct is: write educational content first to build "authority," then add product pages later. This is wrong. The actual high-performing order is:
17
+
18
+ | Order | Page type | Why |
19
+ |---|---|---|
20
+ | 1 | `/alternatives/[competitor]` | Highest conversion intent. User typing "hootsuite alternative" wants to switch tools, today. |
21
+ | 2 | `/compare/[a]-vs-[b]` | High intent. User is deciding between two known tools — be the third option. |
22
+ | 3 | `/for/[use-case]` and `/for/[audience]` | Mid intent. User has a job-to-be-done but doesn't know which tool fits. |
23
+ | 4 | `/playbooks/[topic]` (long-form pillar) | Brand authority + AI-citation surface area. Lower direct conversion but huge inbound link draw and LLM mentions. |
24
+ | 5 | `/blog/...` informational posts | Lowest direct conversion; useful for keyword sweep and internal linking after the conversion pages exist. (Out of scope for this skill — use `blog-article` skill.) |
25
+
26
+ This sequence matches the 4 patterns this skill bundles. Phase 0 is technical foundations; everything after Phase 0 follows this order by default.
27
+
28
+ ## Five lessons from running this for real
29
+
30
+ Each one is here because skipping it cost real time on the first try.
31
+
32
+ ### 1. Capture singular AND plural in one URL.
33
+
34
+ For most competitor brands, `[brand] alternatives` (plural) has 2-3× the volume of `[brand] alternative` (singular). A single URL can rank for both if the H2 reads "Best [Brand] alternatives in 2026" and the meta title hints at plural. **Bake this in from page 1.** Retrofitting later cost an entire phase on the real project.
35
+
36
+ ### 2. The honesty section is non-negotiable.
37
+
38
+ Every `/alternatives/[competitor]` page must list 3-4 things where the competitor genuinely wins. This is:
39
+ - A brand signal (you're trustworthy)
40
+ - A Google quality signal (genuine comparison > thinly-veiled vendor page)
41
+ - A conversion signal (readers convert when they trust the comparison)
42
+
43
+ Pages without honesty sections measurably underperform on rankings and conversion.
44
+
45
+ ### 3. Internal-link minimums are quality bars, not nice-to-haves.
46
+
47
+ A new page nobody links to is invisible. Bake link counts into the quality gate per pattern:
48
+ - `/alternatives/*` → ≥2 sibling alts, ≥1 feature, ≥1 tool
49
+ - `/for/*` → ≥2 features, ≥2 tools, ≥1 sibling `/for/`
50
+ - `/compare/*` → both alt pages + ≥1 `/for/` + pricing
51
+ - `/playbooks/*` → ≥3 features, ≥2 tools, ≥2 `/for/`, ≥1 `/alternatives/`
52
+ - **Every page reachable from ≥2 other pages.**
53
+
54
+ Verify these mechanically (`scripts/link_audit.py`). Don't ship pages that fail.
55
+
56
+ ### 4. Word-count minimums catch lazy phase work.
57
+
58
+ Soft floors per pattern:
59
+ - `/alternatives/*`: ≥600 words of unique copy
60
+ - `/for/*`: ≥800 words
61
+ - `/compare/*`: ≥700 words
62
+ - `/playbooks/*`: ≥2,500 words
63
+
64
+ These aren't about Google word-count algorithms (there isn't one). They're about ensuring the page actually answers the searcher's question. A 200-word "[brand] alternative" page that's just a comparison table will lose to a 1,200-word page that explains tradeoffs.
65
+
66
+ ### 5. Striking-distance is the fastest win on any existing site.
67
+
68
+ Pages currently ranking position 8-20 in GSC are one push from page 1. Adding 200-400 words of depth + 3-5 new internal links to a position-14 page routinely moves it to position 3-5, **tripling traffic** without writing a new page.
69
+
70
+ **Run the striking-distance audit at Initialize time on any existing site.** It almost always surfaces 3-8 immediate wins that beat shipping new pages.
71
+
72
+ ## Why this skill writes a persistent roadmap
73
+
74
+ Multi-phase SEO work spans weeks. Contexts compact, agents change, the user comes and goes. The roadmap doc (`docs/seo-machine.md`) is the **single source of truth** that survives:
75
+ - Conversation compaction
76
+ - New worktree / fresh Claude session
77
+ - Different team members executing different phases
78
+ - Long pauses between phases
79
+
80
+ The tracker row update lands **in the same commit/PR as the phase work**, never after. This is so every PR review sees the doc-level status change alongside the code change, and the tracker stays in sync with `main` history.
81
+
82
+ ## What this skill explicitly does NOT do
83
+
84
+ - **Write blog posts.** Use the `blog-article` skill for those. This skill scaffolds the strategy (which topics, what cluster structure) but hands off the writing.
85
+ - **Generate images / OG cards.** Use the `og-image` or `feature-image` skill. This skill specifies which pages need OG images but doesn't make them.
86
+ - **Submit to GSC / IndexNow / directories.** The off-page checklist is informational. The user (or future automation) does the submitting.
87
+ - **Target keywords where DR < KD - 10.** It will refuse to add doomed phases to the tracker. This is a feature.