@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,123 @@
1
+ # Off-Page Strategy (Backlinks + Distribution)
2
+
3
+ On-page work (everything in the pattern references) only gets you so far. Without inbound links from other domains, even a perfect page caps out around DR + 20 in achievable KD targets. The off-page work expands that ceiling.
4
+
5
+ This skill does **not** submit links anywhere on the user's behalf. It generates a prioritized checklist and a researched target list — the user (or the user's marketing team) does the outreach.
6
+
7
+ ## The starter stack (universal)
8
+
9
+ Every new SaaS/app site should be in these by week 4. Most are free; all are worth a one-time submission.
10
+
11
+ ### Directories (just submit and check off)
12
+
13
+ - **Product Hunt** — single biggest launch-day backlink + traffic source
14
+ - **G2** — high-DR, becomes a destination for "[brand] reviews" searches
15
+ - **Capterra / GetApp / Software Advice** (Gartner Digital Markets — same submission flow)
16
+ - **SaaSHub**
17
+ - **AlternativeTo** — DR 80+, list yourself as an alternative to your top 5 competitors
18
+ - **Betalist** (if pre-launch or recently launched)
19
+ - **Indie Hackers** — products section
20
+ - **TopAlternatives.com / SimilarSiteSearch / Slant.co** — niche but useful
21
+ - **Crunchbase** — even free profile gets DR pass-through
22
+
23
+ ### Community surfaces (selective)
24
+
25
+ - **Reddit** — niche subreddits ONLY. Find them via Ahrefs site-explorer on `reddit.com` for your keywords. Engage genuinely; never just post a link.
26
+ - **Slack/Discord communities** — for your audience. Join 3-5, contribute for 2 weeks before mentioning the product.
27
+ - **Hacker News** — for technical products. Show HN posts can drive enormous traffic spikes; require a real launch story.
28
+
29
+ ### Founder outreach (the slow-burn channel)
30
+
31
+ - **Founder link trades** with complementary (non-competitive) products. Reach out to 5-10 founders of products your audience also uses. Offer mutual blog mentions, "tools we love" pages, or guest posts.
32
+ - **Guest posts on DR 30+ blogs** in your niche. Find them via Recipe F (competitor referring-domains). Pitch 1-2 strong posts per month.
33
+
34
+ ## Recipe F — researched target list
35
+
36
+ Use Ahrefs MCP to surface high-value link opportunities your competitors already have.
37
+
38
+ For each top-3 competitor:
39
+
40
+ ```
41
+ mcp__ahrefs__site-explorer-referring-domains
42
+ target: <competitor-domain>
43
+ where: domain_rating >= 30 AND traffic_dofollow >= 100
44
+ order_by: domain_rating:desc
45
+ limit: 100
46
+ ```
47
+
48
+ Then for each candidate domain, filter manually into buckets:
49
+
50
+ | Bucket | Signal |
51
+ |---|---|
52
+ | **Directory candidates** | Site name matches "[category] directory", "best of [category]", "[category] tools", "alternatives to [tool]" |
53
+ | **Listicle candidates** | Blog posts titled "Top X [category] in YYYY" — pitch yourself for inclusion |
54
+ | **Guest-post candidates** | Looks like a blog (`*.com/blog/...` URLs), DR 30+, posts on your niche |
55
+ | **Skip** | PR wires, paid networks, irrelevant niches, sites that link to *everyone* in the space |
56
+
57
+ Save to `.seo/backlink-targets.json` as:
58
+
59
+ ```json
60
+ {
61
+ "generated_at": "2026-MM-DD",
62
+ "directories": [
63
+ { "domain": "g2.com", "dr": 88, "url_to_submit": "https://www.g2.com/products/new", "competitor_uses": ["hootsuite", "buffer"] }
64
+ ],
65
+ "listicles": [
66
+ { "domain": "thedigitalprojectmanager.com", "dr": 65, "url": "https://...", "topic": "Best Twitter monitoring tools", "competitor_listed": "hootsuite" }
67
+ ],
68
+ "guest_posts": [
69
+ { "domain": "indiehackers.com/blog", "dr": 81, "topic_fit": "founder-led marketing" }
70
+ ]
71
+ }
72
+ ```
73
+
74
+ ## Off-page phase template
75
+
76
+ Add 2-4 off-page phases near the end of the tracker:
77
+
78
+ ```markdown
79
+ ### Phase N — Directory submissions (starter stack)
80
+
81
+ **Why:** baseline backlinks from high-DR directories. Cap at 2-3 hours of submission work.
82
+
83
+ **Scope:**
84
+
85
+ - [ ] Product Hunt — schedule launch (separate launch-strategy work)
86
+ - [ ] G2 — submit product page
87
+ - [ ] Capterra — submit product page
88
+ - [ ] SaaSHub
89
+ - [ ] AlternativeTo — list as alternative to: hootsuite, buffer, sprout-social, agorapulse, later
90
+ - [ ] Indie Hackers — claim product page
91
+ - [ ] Crunchbase — basic profile
92
+
93
+ **Files modified:** none — this is external work. Track status in `.seo/off-page-status.md`.
94
+ ```
95
+
96
+ ```markdown
97
+ ### Phase N+1 — Listicle outreach (top 10 targets)
98
+
99
+ **Why:** "Top X [category]" listicles already rank for our target keywords. Getting added is faster than displacing them.
100
+
101
+ **Targets (from .seo/backlink-targets.json):**
102
+
103
+ 1. example.com/best-twitter-monitoring-tools (DR 65)
104
+ 2. example.com/top-social-listening-tools-2026 (DR 72)
105
+ 3. ...
106
+
107
+ **Action:**
108
+ - [ ] For each, find the author via the byline or about page
109
+ - [ ] Send a personalized note: short pitch + screenshot proof of value + link to demo
110
+ - [ ] Track reply status in `.seo/off-page-status.md`
111
+
112
+ **Verification:** 3+ listicles update to include the product within 60 days.
113
+ ```
114
+
115
+ ## What this skill explicitly does NOT do
116
+
117
+ - **Auto-submit anything.** Submission flows often need real human review (G2 needs a screenshot + URL + verification email; Product Hunt needs a launch coordinator).
118
+ - **Generate outreach emails.** Use the `cold-email` skill for that.
119
+ - **Track ongoing referring-domain growth.** That's a weekly checking-in task the user owns; the skill just provides the initial target list.
120
+
121
+ ## Honest caveats
122
+
123
+ Off-page work is slower and more uncertain than on-page work. A great alternatives page ranks within 30-90 days. A great backlink campaign might produce 3 useful links in the first month, 10 in three months. **Don't gate the on-page sprint on off-page progress.** Ship pages; queue outreach in parallel.
@@ -0,0 +1,176 @@
1
+ # Pattern A — `/alternatives/[competitor]`
2
+
3
+ The single highest-converting page type for SaaS SEO. User typing "[competitor] alternative" is one decision away from signing up for a replacement. Most sprints should start with this pattern and ship 5-15 of these before anything else.
4
+
5
+ ## Target keyword profile
6
+
7
+ Each `/alternatives/[brand]` page must rank for at least TWO related keywords:
8
+
9
+ 1. **Singular** — `[brand] alternative` (e.g. "hootsuite alternative") — vol typically 100-400
10
+ 2. **Plural** — `[brand] alternatives` (e.g. "hootsuite alternatives") — vol typically 2-3× the singular
11
+
12
+ A single URL captures both if the H2 reads "Best [Brand] alternatives in [Year]" and the meta title hints at plural. **Build for both from day 1.** Retrofitting is wasted work.
13
+
14
+ Secondary keywords often capturable from the same URL (verify via SERP):
15
+ - `alternative to [brand]` — vol typically 50-150
16
+ - `[brand] pricing` — if their pricing is public and contentious (e.g. price hike, removed free plan)
17
+ - `is [brand] free` — if there's a recent change to their free tier
18
+ - `[brand] review` — captures evaluation-stage searchers
19
+
20
+ ## URL slug rules
21
+
22
+ - lowercase, hyphenated. `sprout-social` not `sprout_social` and not `SproutSocial`
23
+ - match the competitor's primary brand spelling. "Sprout Social" → `sprout-social`. "MeetEdgar" → `meetedgar` (no internal cap)
24
+ - avoid pluralizing in the URL even though keywords are plural. `/alternatives/buffer` not `/alternatives/buffers`
25
+
26
+ ## Required data shape
27
+
28
+ Every alternatives page renders from this payload. The shape is the same regardless of stack — only the serialization differs (Ruby hash, JSON, TypeScript interface, frontmatter).
29
+
30
+ ```typescript
31
+ interface AlternativeData {
32
+ competitor_name: string // "Hootsuite" — display form, not slug
33
+ hero_eyebrow: string // e.g. "Hootsuite alternative"
34
+ hero_h1: string // "Looking for a Hootsuite alternative?"
35
+ hero_lede: string // 30-60 word subhead
36
+
37
+ // First H2 — CAPTURES PLURAL KEYWORD
38
+ table_h2: string // "Best Hootsuite alternatives in 2026"
39
+ table_lede: string // 30-50 words
40
+ comparison_rows: ComparisonRow[] // ≥10 rows: feature + your-cell + competitor-cell
41
+
42
+ // Why switch — 4 reasons
43
+ switch_eyebrow: string // "Why switch"
44
+ switch_h2: string
45
+ switch_lede: string
46
+ switch_reasons: SwitchReason[] // exactly 4 reasons, each ≥40 words
47
+
48
+ // HONESTY SECTION — NON-NEGOTIABLE
49
+ honesty_eyebrow: string
50
+ honesty_h2: string // "Where Hootsuite still wins"
51
+ honesty_lede: string
52
+ honesty_rows: HonestyRow[] // 3-4 honest tradeoffs, each ≥30 words
53
+
54
+ faq_h2: string
55
+ faqs: AlternativeFAQ[] // 4-6 Q/A
56
+
57
+ cta_h2: string
58
+ cta_lede: string
59
+ }
60
+
61
+ interface ComparisonRow {
62
+ feature: string
63
+ yours: { state: "yes" | "no" | "partial" | "text"; note?: string }
64
+ theirs: { state: "yes" | "no" | "partial" | "text"; note?: string }
65
+ }
66
+
67
+ interface SwitchReason {
68
+ icon: SwitchReasonIcon // bolt | sparkle | check | info | shield | chart | clock | target | flame
69
+ title: string
70
+ body: string // ≥40 words
71
+ }
72
+
73
+ interface HonestyRow {
74
+ feature: string
75
+ body: string // ≥30 words explaining why they win here
76
+ }
77
+
78
+ interface AlternativeFAQ {
79
+ question: string
80
+ answer: string // ≥40 words
81
+ }
82
+ ```
83
+
84
+ ## Quality bar (verification gate)
85
+
86
+ A phase is NOT done until all of these pass. Use `scripts/word_count.py` and `scripts/link_audit.py`.
87
+
88
+ - [ ] **≥600 words of unique rendered copy.** Strip out JSX/Ruby syntax and recount. Anything under is thin.
89
+ - [ ] **First H2 reads "Best [Brand] alternatives in [Year]".** Captures plural.
90
+ - [ ] **Meta title ≤60 chars, includes brand + "Alternative" + a hint at free/price intent.**
91
+ - Example: `"Hootsuite Alternative — ReplySocial (free, $25/mo Pro)"`
92
+ - Bad: `"Hootsuite Alternative"` (wasted character budget, no pricing hook)
93
+ - [ ] **Meta description ≤155 chars, has primary keyword + reason to click.**
94
+ - [ ] **Comparison table has ≥10 rows.** Each row honest. Pricing must be one row (even if you do "Free" vs "$249/mo"). Free-tier presence/absence must be one row if either party has free or recently removed it.
95
+ - [ ] **Honesty section present with 3-4 rows.** Acknowledge real competitor strengths. Don't fabricate weakness in yourself; fabricate nothing.
96
+ - [ ] **4-6 FAQs.** At least one answers "is [brand] free" or "[brand] pricing" if there's any volume on those intents.
97
+ - [ ] **Internal links from this page:** ≥2 sibling `/alternatives/*`, ≥1 `/features/*`, ≥1 `/tools/*` (or whatever the user's equivalent of "tools" is in their nav).
98
+ - [ ] **Internal links TO this page:** ≥2 from existing pages. Common spots: homepage marketing block, sibling alts (link cluster), feature pages mentioning the competitor.
99
+ - [ ] **JSON-LD schemas:**
100
+ - `BreadcrumbList` (auto from meta helper, but verify present)
101
+ - `FAQPage` (from the FAQ section)
102
+ - `SoftwareApplication` or `Product` representing the user's product
103
+ - [ ] **OG image generated** (defer to `og-image` skill if not yet wired).
104
+ - [ ] **Sitemap updated** with the new URL + today's lastmod. Never future-date.
105
+
106
+ ## Worked example (skeleton)
107
+
108
+ ```ruby
109
+ # Rails+Inertia example. For other stacks see references/stacks/*.md
110
+ {
111
+ competitor_name: "Hootsuite",
112
+ hero_eyebrow: "Hootsuite alternative",
113
+ hero_h1: "Looking for a Hootsuite alternative?",
114
+ hero_lede: "ReplySocial is the lightweight social media monitoring and engagement tool that does what most Hootsuite users actually need — without the $249/mo enterprise price tag or the deprecated free plan.",
115
+
116
+ table_h2: "Best Hootsuite alternatives in 2026",
117
+ table_lede: "We built ReplySocial after years of paying Hootsuite for features we never used. Here's how the two compare on the things our users actually care about.",
118
+ comparison_rows: [
119
+ { feature: "Free plan",
120
+ yours: { state: "yes", note: "Free forever for 1 X account" },
121
+ theirs: { state: "no", note: "Discontinued in 2023" } },
122
+ { feature: "Starting price",
123
+ yours: { state: "text", note: "$25/mo Pro" },
124
+ theirs: { state: "text", note: "$249/mo Professional" } },
125
+ # … 8+ more
126
+ ],
127
+
128
+ switch_reasons: [
129
+ { icon: "bolt",
130
+ title: "Reply in 30 seconds, not 5 minutes",
131
+ body: "ReplySocial's unified inbox surfaces every mention…" }, # ≥40 words
132
+ # 3 more
133
+ ],
134
+
135
+ honesty_eyebrow: "Honest tradeoffs",
136
+ honesty_h2: "Where Hootsuite still wins",
137
+ honesty_lede: "We won't pretend we've matched everything Hootsuite does. Here's where their product is still ahead.",
138
+ honesty_rows: [
139
+ { feature: "Multi-platform scheduling",
140
+ body: "Hootsuite supports scheduling to Instagram, TikTok, LinkedIn, and Facebook from one dashboard. ReplySocial is X-first and doesn't schedule to those platforms — if you need cross-platform scheduling, Hootsuite (or Buffer) is the better fit." },
141
+ # 2-3 more
142
+ ],
143
+
144
+ faqs: [
145
+ { question: "Why did Hootsuite end its free plan?",
146
+ answer: "Hootsuite discontinued its free plan in March 2023…" },
147
+ # …
148
+ ],
149
+ }
150
+ ```
151
+
152
+ ## Sibling-link selection logic
153
+
154
+ When picking ≥2 sibling alts to link to, prefer:
155
+ 1. **Closest substitute** — same audience, similar feature set (e.g. Buffer ↔ Hootsuite, both general SMM)
156
+ 2. **Adjacent category** — covers the next-most-likely query (e.g. Hootsuite ↔ Sprout Social, both enterprise-tier)
157
+ 3. **Up-funnel** — a more well-known competitor someone might also be searching (e.g. Buffer ↔ Hootsuite, both top-of-mind)
158
+
159
+ Don't link to obscure alts just to hit the count. Each link should be useful to the reader.
160
+
161
+ ## Anti-patterns
162
+
163
+ - **Fabricated honesty rows** ("they have a worse UI" is not honest, it's just a fluffy claim with no specifics). Real honest tradeoffs reference concrete features.
164
+ - **Pricing rows with "Contact sales"** if the competitor publishes actual numbers. Use their actual numbers.
165
+ - **"Best" claims in copy.** "ReplySocial is the best Hootsuite alternative" reads like a product page. Let the comparison speak; you provide structure and honesty.
166
+ - **No FAQ schema.** Featured-snippet opportunity wasted.
167
+ - **Sitemap lastmod in the future.** A red flag to crawlers. Use today's date.
168
+
169
+ ## Reference implementation
170
+
171
+ This pattern's reference implementation is in the `reply-social` repo:
172
+ - Hash entry: `app/controllers/marketing_controller.rb` — search for `ALTERNATIVES = {` then the `'hootsuite'` key
173
+ - Component: `app/frontend/components/AlternativeLayout.tsx`
174
+ - Routing: `get 'alternatives/:slug', to: 'marketing#alternatives_show'`
175
+
176
+ For non-Rails stacks, see `references/stacks/<framework>.md`.
@@ -0,0 +1,105 @@
1
+ # Pattern D — `/compare/[a]-vs-[b]`
2
+
3
+ Third-party comparison pages between two competitors (neither is your product). The funnel:
4
+
5
+ > User searches "[a] vs [b]" → lands on your page → reads your honest take → sees CTA at the bottom: "If both feel too heavy, try [your product] free."
6
+
7
+ Volumes per page are usually small (30-500), but commercial intent is the **highest of any pattern** — these searchers are mid-decision and ready to evaluate options.
8
+
9
+ ## When to add a compare page
10
+
11
+ Each page targets ONE canonical comparison. Add when:
12
+
13
+ 1. Both brands appear in the user's competitor list in `.seo/brand.md`
14
+ 2. Combined volume of "a vs b" + "b vs a" ≥ 30 (via Recipe D)
15
+ 3. KD ≤ DR + 10
16
+ 4. At least one search result in the current SERP for that comparison is a generic listicle (`forbes.com/best...`, `g2.com/categories/...`) — those are weak rankers you can displace with a focused page
17
+
18
+ ## URL slug rules
19
+
20
+ - **Always alphabetical** for the canonical slug: `buffer-vs-hootsuite`, not `hootsuite-vs-buffer`.
21
+ - Both directional searches ("buffer vs hootsuite" AND "hootsuite vs buffer") will rank for the same URL — Google understands the intent is identical.
22
+ - Internal-link anchor text on each individual alt page should match the canonical slug, but the link text can be either direction ("compare Buffer vs Hootsuite" or "Hootsuite vs Buffer comparison" both fine).
23
+
24
+ ## Required data shape
25
+
26
+ ```typescript
27
+ interface ComparisonData {
28
+ a_name: string // "Buffer"
29
+ b_name: string // "Hootsuite"
30
+
31
+ hero_h1: string // "Buffer vs Hootsuite: which is better in 2026?"
32
+ hero_lede: string // 40-80 words
33
+
34
+ // The verdict goes EARLY — searchers want the answer up front
35
+ verdict_h2: string // "Our take, in one paragraph"
36
+ verdict_body: string // ≥80 words
37
+
38
+ comparison_rows: ComparisonRow[] // ~12 rows. 3 columns: feature / [A] / [B]
39
+
40
+ pricing_h2: string
41
+ pricing_a: { tier: string; price: string; notes: string }[]
42
+ pricing_b: { tier: string; price: string; notes: string }[]
43
+
44
+ winner_h2: string // "Pick [A] if… pick [B] if…"
45
+ winner_a_for: string[] // 3-5 bullet criteria
46
+ winner_b_for: string[]
47
+
48
+ // The ONLY place your product shows up prominently
49
+ replysocial_aside_h2: string // "Neither one fits? Here's what we'd suggest"
50
+ replysocial_aside_body: string // 80-120 words; soft pitch with link to /pricing
51
+
52
+ faq_h2: string
53
+ faqs: { question: string; answer: string }[] // 4-6
54
+
55
+ cta_h2: string
56
+ cta_lede: string
57
+ }
58
+ ```
59
+
60
+ ## Quality bar
61
+
62
+ - [ ] **≥700 words of unique rendered copy.**
63
+ - [ ] **Verdict appears within the first viewport.** Don't make searchers scroll for the answer. The verdict is 80-150 words and states an opinion (with caveats).
64
+ - [ ] **12+ comparison rows.** Each cell concrete and verifiable. Pricing rows must use the brands' actual published numbers.
65
+ - [ ] **Pricing section uses live published pricing.** Re-fetch via web search if data is >60 days old.
66
+ - [ ] **"Pick A if / pick B if" criteria are mutually exclusive and concrete.** "Pick Buffer if you prioritize simplicity" — vague. "Pick Buffer if you manage ≤5 accounts and don't need analytics deeper than 30 days" — concrete.
67
+ - [ ] **Your product mention is honest and short** — 80-120 words, mentioned ONCE in the dedicated aside. Not sprinkled throughout. Google rewards genuine comparison; thinly-veiled vendor pages get demoted.
68
+ - [ ] **Internal links:** to `/alternatives/[a]`, `/alternatives/[b]`, ≥1 relevant `/for/*`, your `/pricing`.
69
+ - [ ] **Inbound links:** both `/alternatives/[a]` and `/alternatives/[b]` link here. Homepage compare-block if you have one.
70
+ - [ ] **JSON-LD:** `BreadcrumbList`, `FAQPage`, `ComparisonReview` if you implement it (rare; FAQ schema is the high-leverage one).
71
+
72
+ ## The verdict paragraph — the most important section
73
+
74
+ If a reader only reads one paragraph, this is it. It must:
75
+
76
+ 1. Open with the verdict — "Buffer is the better fit for X; Hootsuite is the better fit for Y."
77
+ 2. Acknowledge the close-call dimensions — "Both are strong on [shared strength]."
78
+ 3. State the situation-dependent factor — "The choice usually comes down to [budget / team size / specific feature]."
79
+ 4. Be honest. If they're nearly tied, say so. Don't manufacture differentiation.
80
+
81
+ A good verdict reads like advice from a friend who's used both. A bad verdict reads like a "best of" listicle with hedge-everything language.
82
+
83
+ ## The "your product aside" — the soft pitch
84
+
85
+ This is where your product appears. Rules:
86
+
87
+ - **Tone: humble.** "If you tried both and felt they were overkill" is better than "Or skip both and try us — we're better."
88
+ - **Trigger: when both don't fit.** Don't pitch as a primary recommendation. Pitch as the third option for a specific scenario.
89
+ - **Length: 80-120 words.** Not more. Searchers came for "A vs B" — respect that.
90
+ - **Honest about what you don't do.** If you don't match their scale or feature breadth, say so.
91
+
92
+ ## Anti-patterns
93
+
94
+ - **Recency disclaimers without recency.** "As of January 2024" on a page written today and never updated will age badly. Either commit to keeping it fresh, or omit the date.
95
+ - **"Our take" without an actual take.** Hedging on every dimension reads like AI-generated comparison content. Pick a side per dimension and defend it.
96
+ - **Pricing tables with "Contact sales" when actual numbers are public.** Look them up. Searchers can.
97
+ - **Both alts treated identically.** Compare pages need editorial direction — usually one tool wins for one audience, the other for a different audience. State it.
98
+
99
+ ## Reference implementation
100
+
101
+ Reply-social repo:
102
+ - Hash entry: `app/controllers/marketing_controller.rb` — `COMPARISONS = {`
103
+ - Routing: `get 'compare/:slug', to: 'marketing#compare_show'`
104
+ - Component: `app/frontend/components/ComparisonLayout.tsx`
105
+ - Phase 3 PR (`#425`) is the proof-of-concept ship.
@@ -0,0 +1,106 @@
1
+ # Pattern E — `/playbooks/[topic]` (long-form pillar)
2
+
3
+ Long-form prose guides (2,500+ words) targeting commercial-investigation queries. These are the only pattern where you write long-form custom content per page rather than fan out templated data.
4
+
5
+ ## Why this pattern exists
6
+
7
+ Three distinct jobs:
8
+ 1. **Brand authority.** A genuine 3,000-word guide on "B2B social media strategy" positions the author as a real practitioner, not a tool vendor.
9
+ 2. **AI-citation surface area.** LLMs (ChatGPT, Claude, Perplexity, Gemini) cite long-form guides when answering related queries. Long, well-structured playbooks get scraped into training and inference contexts way more than templated pages.
10
+ 3. **Inbound link draw.** Other writers cite playbooks. Almost nobody cites an alternatives page.
11
+
12
+ The tradeoff: each playbook is 2-3 days of real writing work, vs ~4 hours for a `/alternatives/*` page. Ship 2-3 playbooks early in the sprint as pillar content; defer the rest until programmatic patterns are exhausted.
13
+
14
+ ## Target keyword profile
15
+
16
+ - Volume 50-700 (small head terms)
17
+ - KD ≤ DR + 15 (slightly more aggressive than templated patterns because long-form content can punch above its KD)
18
+ - Strong "commercial investigation" or "informational with commercial sub-intent" — e.g. "b2b social media strategy" (people doing this are buying tools)
19
+ - High traffic potential (≥500 ideal). The keyword cluster matters more than the head term.
20
+
21
+ Avoid:
22
+ - Pure informational queries with no buying intent ("what is social media")
23
+ - Brand-direct queries (those are alternatives/compare territory)
24
+ - Queries dominated by Wikipedia / how-to listicles in top 5 (you won't displace them at low DR)
25
+
26
+ ## URL slug rules
27
+
28
+ - lowercase, hyphenated, descriptive
29
+ - 2-5 words
30
+ - Match common phrasing of the keyword: "b2b social media strategy" → `b2b-social-media-strategy` (not `b2bsocialmediastrategy` and not `b2b-social-strategy`)
31
+
32
+ ## Required data shape
33
+
34
+ Playbooks are written as long-form components, not data hashes. Each playbook has:
35
+
36
+ ```typescript
37
+ interface PlaybookMetadata {
38
+ slug: string
39
+ component: string // path to the React/Astro/Markdown component
40
+ headline: string // displays on listing
41
+ summary: string // 1-2 sentence summary
42
+ meta_title: string // ≤60 chars
43
+ meta_description: string // ≤155 chars
44
+ og_subtitle: string
45
+ date_published: string // ISO
46
+ date_modified: string // ISO; update when you edit
47
+ read_time_min: number // honest estimate; ~140 wpm for operator content
48
+ }
49
+
50
+ interface PlaybookContent {
51
+ eyebrow: string
52
+ title: string
53
+ lede: string // 60-120 word intro
54
+ toc: TocEntry[] // section anchors
55
+ body: ReactNode | MarkdownAST // the article itself
56
+ related: RelatedLink[] // 4-6 cards: features, tools, /for/, /alternatives/
57
+ also_useful: InlineLink[] // 3-6 secondary inline links
58
+ cta_h2: string
59
+ cta_lede: string
60
+ }
61
+ ```
62
+
63
+ ## Quality bar (the hard one)
64
+
65
+ Playbooks have the strictest quality gate of any pattern. **Most first-draft playbooks fail this gate and need rewriting.** Set the bar high upfront.
66
+
67
+ - [ ] **≥2,500 words of original prose** in the article body. Strip JSX/markdown syntax before counting (`scripts/word_count.py --pattern=playbook`).
68
+ - [ ] **8 sections minimum.** Each `<section id="..." className="scroll-mt-24">` with an anchor. No section under ~250 words.
69
+ - [ ] **TOC ordered identically to section order.** Every section has a TOC entry.
70
+ - [ ] **Vignettes/case studies have three beats each:** (1) scenario (what they did), (2) what surprised them (non-obvious outcome), (3) lesson. Single-paragraph vignettes allowed only if all three beats fit.
71
+ - [ ] **Operational sections name actual numbers.** A "30-day plan" with "Week 2: connect monitoring" is a TOC entry, not a plan. Each step needs (a) "what done looks like" measurable outcome and (b) "if you're behind" branch.
72
+ - [ ] **Tooling sections name what NOT to use.** Listing 4 good tools is generic. Listing 4 good tools + 4 categories of tools to avoid (with reasons) is differentiated.
73
+ - [ ] **Internal links (in body, NOT sidebar):** ≥3 features, ≥2 tools, ≥2 `/for/*`, ≥1 `/alternatives/*`.
74
+ - [ ] **Schema:** `Article` JSON-LD with author + datePublished + dateModified.
75
+ - [ ] **Read-time honest.** 2,500 words ≈ 18 min for operator-audience skim. Don't lowball; readers calibrate trust against the displayed read-time.
76
+ - [ ] **Cross-link inbound from ≥2 relevant existing pages.** Don't ship an orphan.
77
+
78
+ ## Section structure pattern
79
+
80
+ Most successful playbooks follow this shape (8-12 sections, ≥250 words each):
81
+
82
+ 1. **The problem framing** — why this topic, why now, why this is hard
83
+ 2. **The mental-model section** — the framework or framing the rest of the playbook hangs on
84
+ 3. **3-5 "do this" sections** — concrete actions, with examples
85
+ 4. **2-3 "don't do this" sections** — anti-patterns, mistakes, what NOT to use
86
+ 5. **An operational plan** — week-by-week or step-by-step, with measurable outcomes per step
87
+ 6. **The closing section** — what success looks like, when to know you've made it, what to do next
88
+
89
+ Don't slavishly copy this structure if a different one fits better, but if you're stuck, use it.
90
+
91
+ ## Writing style notes (specific to playbooks)
92
+
93
+ - **Operator voice.** First-person plural ("we") is fine if the brand uses it elsewhere. Personal stories are welcome. Detached "best practices" voice loses to lived-experience voice.
94
+ - **Concrete numbers everywhere.** "Many companies struggle" → "73% of B2B SaaS companies under 50 employees post less than once a week." If you don't have a source, use a *bracketed* range: "[somewhere between 50-80% of teams we've worked with]" and source it later.
95
+ - **Counter-arguments inline.** When you make a strong claim, address the obvious counter-argument in the next paragraph. This is what differentiates 2,500 words of *thinking* from 2,500 words of *content*.
96
+ - **No padding.** If a paragraph could be cut without losing meaning, cut it. 2,500 words of real content beats 4,000 words of fluff.
97
+
98
+ ## Reference implementation
99
+
100
+ Reply-social repo:
101
+ - Hash entry: `app/controllers/marketing_controller.rb` — `PLAYBOOKS = {`
102
+ - Routing: `get 'playbooks/:slug', to: 'marketing#playbooks_show'`
103
+ - Layout: `app/frontend/components/PlaybookLayout.tsx`
104
+ - Reference playbook (highest-quality bar): `app/frontend/pages/Playbooks/B2bSocialMediaStrategy.tsx`
105
+
106
+ Note `VignetteCard` and `WeekCard` components in that file — clone them for new playbooks.
@@ -0,0 +1,109 @@
1
+ # Pattern B+C — `/for/[use-case]` and `/for/[audience]`
2
+
3
+ Two flavors of the same template, same data shape, same component. The difference is only in framing:
4
+
5
+ - **Pattern B (use-case):** slug is a verb-or-noun describing what the user is trying to *accomplish* — `social-listening`, `competitor-monitoring`, `crisis-management`, `customer-support`.
6
+ - **Pattern C (audience):** slug is the user's industry or role — `agencies`, `small-business`, `ecommerce`, `freelancers`, `creators`.
7
+
8
+ Build the infra once; fan out per slug.
9
+
10
+ ## Why this pattern is high-leverage
11
+
12
+ Pattern B/C pages target keywords with **the highest traffic-potential-to-volume ratio** in the entire roadmap. Examples from a real execution:
13
+
14
+ - `social media tools for agencies`: vol 150, KD 9, **TP 34,000**
15
+ - `competitor monitoring tool`: vol 150, KD 22, **TP 2,500**
16
+ - `twitter mentions tracker`: vol 50, KD 6, **TP 2,100**
17
+
18
+ These low-volume head terms gate access to massive long-tail clusters. A `/for/agencies` page that ranks for "social media tools for agencies" will also pick up dozens of long-tail variants and sub-queries — sometimes 50-100 additional ranking keywords per page.
19
+
20
+ ## Target keyword profile
21
+
22
+ Pick ONE primary keyword per page. Mid-volume (50-500), mid-KD (≤DR+10), high TP (≥500 ideal, ≥150 acceptable).
23
+
24
+ Good targets:
25
+ - "[category] for [audience]" — e.g. "social media tools for agencies"
26
+ - "[verb] [object] tool" — e.g. "competitor monitoring tool"
27
+ - "[platform] [verb-noun]" — e.g. "twitter mentions tracker"
28
+
29
+ Validate via SERP overview (Recipe G) before adding to the tracker. If top 5 are all DR > 60 mega-sites with template content, the KD score lied — skip.
30
+
31
+ ## URL slug rules
32
+
33
+ - lowercase, hyphenated
34
+ - noun or short noun phrase, not a full sentence
35
+ - ≤4 words, ideally 1-2
36
+ - `/for/agencies`, `/for/social-listening`, `/for/competitor-monitoring`
37
+
38
+ ## Required data shape
39
+
40
+ ```typescript
41
+ interface ForData {
42
+ name: string // "Social Listening", "Agencies"
43
+ hero_eyebrow: string // "For agencies" or "For social listening"
44
+ hero_h1: string // e.g. "Social media monitoring built for agencies"
45
+ hero_lede: string // 40-80 words
46
+
47
+ pain_h2: string // "The agency reality"
48
+ pain_lede: string
49
+ pains: { title: string; body: string }[] // 3-4 specific pains, ≥40 words each
50
+
51
+ solution_h2: string // "How ReplySocial helps"
52
+ solution_lede: string
53
+ solutions: { icon: SwitchReasonIcon; title: string; body: string }[] // exactly 4
54
+
55
+ proof_h2?: string // optional but recommended
56
+ proof_lede?: string
57
+ proof?: { title: string; body: string }[] // 2-3 proof points
58
+
59
+ related: {
60
+ features: { slug: string; title: string }[] // ≥2 internal /features/ links
61
+ tools: { slug: string; title: string }[] // ≥2 internal /tools/ links
62
+ siblings: { slug: string; title: string }[] // ≥1 sibling /for/ link
63
+ }
64
+
65
+ faq_h2: string
66
+ faqs: { question: string; answer: string }[] // 4-6
67
+
68
+ cta_h2: string
69
+ cta_lede: string
70
+ }
71
+ ```
72
+
73
+ ## Quality bar
74
+
75
+ - [ ] **≥800 words of unique rendered copy.**
76
+ - [ ] **Hero H1 contains the primary keyword** (e.g. for `/for/agencies` targeting "social media tools for agencies", H1 should include "social media" + "agencies").
77
+ - [ ] **Meta title ≤60 chars.** Format: "[Primary keyword] — [Product name]" or "[Primary keyword]: [outcome]".
78
+ - [ ] **Meta description ≤155 chars.** Lead with the keyword, end with the conversion hook.
79
+ - [ ] **3-4 pains, 4 solutions.** Each ≥40 words. Pains must be specific to the audience/use-case, not generic ("social media is hard" is generic; "agencies juggle 8-15 brands with no unified inbox" is specific).
80
+ - [ ] **Internal links:** ≥2 features, ≥2 tools, ≥1 sibling `/for/*`.
81
+ - [ ] **Inbound links:** ≥2 existing pages link to this new one. Common spots: homepage, related alts (audience-relevant), `/pricing` page if it mentions the audience.
82
+ - [ ] **JSON-LD:** `BreadcrumbList`, `FAQPage`, `SoftwareApplication` representing your product. Optionally `Service` schema if framing as a service.
83
+ - [ ] **No vague "for everyone" framing.** Audience-specific = better signals. If the page would apply equally to a 1-person solo creator and a 50-person agency, it's not pointed enough.
84
+
85
+ ## Pain section quality bar
86
+
87
+ The most common failure mode in `/for/*` pages is generic pain copy. Each pain row should have:
88
+ 1. **A concrete trigger** (the moment the user notices the pain) — "Every Monday morning you open Hootsuite and see 47 unread mentions across 8 client accounts…"
89
+ 2. **The cost** (what they lose) — "…and your most important client expected a reply by 9am."
90
+ 3. **The current workaround** (what they do today) — "So you switch tabs frantically, copy-paste from a Google Sheet, and miss two anyway."
91
+
92
+ Generic: "Agencies have a lot of social media to manage." Useless.
93
+ Specific: "Agency social leads spend 11 hours a week triaging mentions across 8-15 client accounts in tools that don't share an inbox." Concrete + ownable.
94
+
95
+ ## Sibling-link selection
96
+
97
+ For Pattern B (use-case): link to 1 other use-case in the same audience cluster (e.g. `social-listening` ↔ `competitor-monitoring`, both monitoring-flavored).
98
+
99
+ For Pattern C (audience): link to 1 other audience that overlaps (e.g. `agencies` ↔ `freelancers`, both service-providers).
100
+
101
+ If a sibling doesn't exist yet, queue an inbound-link update for when it ships (track in `.seo/link-inventory.md`).
102
+
103
+ ## Reference implementation
104
+
105
+ Reply-social repo:
106
+ - Hash entry: `app/controllers/marketing_controller.rb` — `USE_CASES = {`
107
+ - Routing: `get 'for/:slug', to: 'marketing#for_show'`
108
+ - Component: `app/frontend/components/ForLayout.tsx`
109
+ - The `/for/agencies` page is the gold-standard reference — TP 34k on KD 9 was the proof-of-concept that validated this pattern.