@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
+ # Twitter/X
2
+
3
+ **Algorithm Signals (December 2025):**
4
+ - **Replies** — Highest weight, especially from accounts you engage with
5
+ - **Quote tweets** — 2x engagement value vs plain retweet
6
+ - **Time spent** — On tweet and clicked links
7
+ - **Profile clicks** — Curiosity driven by tweet
8
+ - **Media boost** — Images/videos/GIFs increase visibility scores
9
+ - **Early engagement** — First hours critical for amplification
10
+
11
+ **2025 Changes:** Following feed now uses **Grok AI** for ranking (based on past interactions and topics) — no longer purely chronological. Users default to For You feed.
12
+
13
+ **Optimal Specs:**
14
+
15
+ | Format | Specs | Performance |
16
+ |--------|-------|-------------|
17
+ | Single Tweet | <100 characters optimal | Highest engagement rate |
18
+ | Thread | 8-15 tweets | Best for depth + followers |
19
+ | Quote Tweet | Add value to original | 2x engagement vs retweet |
20
+ | Image Tweet | 1200x675px | 35% more engagement |
21
+
22
+ ## Thread Template
23
+
24
+ **Tweet 1: Hook Tweet**
25
+ ```
26
+ [BOLD CLAIM OR PROMISE]
27
+
28
+ [What they'll learn in one line]
29
+
30
+ Thread:
31
+ ```
32
+
33
+ **Tweets 2-X: Content Tweets**
34
+ ```
35
+ [NUMBER]. [POINT]
36
+
37
+ [2-3 sentences of explanation]
38
+
39
+ [Example or proof if fits]
40
+ ```
41
+
42
+ **Final Tweet: Wrap + CTA**
43
+ ```
44
+ TL;DR:
45
+
46
+ - [Point 1]
47
+ - [Point 2]
48
+ - [Point 3]
49
+ - [Point 4]
50
+ - [Point 5]
51
+
52
+ If this was useful:
53
+ 1. Follow @[handle] for more
54
+ 2. RT the first tweet
55
+
56
+ [Link if relevant]
57
+ ```
58
+
59
+ ## Single Tweet Templates
60
+
61
+ **The Insight Tweet:**
62
+ ```
63
+ [Counterintuitive observation about industry/topic]
64
+
65
+ Most people think [X].
66
+
67
+ But [Y] is actually true because [Z].
68
+ ```
69
+
70
+ **The List Tweet:**
71
+ ```
72
+ [Number] [things] that [outcome]:
73
+
74
+ - [Item 1]
75
+ - [Item 2]
76
+ - [Item 3]
77
+ - [Item 4]
78
+ - [Item 5]
79
+
80
+ Which one hits different?
81
+ ```
82
+
83
+ **The Hot Take:**
84
+ ```
85
+ Unpopular opinion:
86
+
87
+ [Contrarian statement]
88
+
89
+ Here's why: [One-line reasoning]
90
+ ```
91
+
92
+ **The Question Tweet:**
93
+ ```
94
+ [Provocative question about industry/topic]?
95
+
96
+ Genuine question. Reply with your take.
97
+ ```
98
+
99
+ **The Proof Tweet:**
100
+ ```
101
+ [Impressive result/stat]
102
+
103
+ Here's exactly how:
104
+
105
+ [3-5 bullet points of method]
106
+ ```
107
+
108
+ ## Hook Formulas
109
+
110
+ **Pattern 1: Bold Opener**
111
+ > "[Thing] is dead. Here's what's replacing it:"
112
+
113
+ **Pattern 2: Numbers + Outcome**
114
+ > "I [did X] for [time period]. Here's what happened:"
115
+
116
+ **Pattern 3: Controversial Take**
117
+ > "This will piss off [group], but [claim]."
118
+
119
+ **Pattern 4: Curiosity Gap**
120
+ > "The [industry] secret no one talks about:"
121
+
122
+ **Pattern 5: Specific Proof**
123
+ > "[Specific result] in [timeframe]. No [common excuse]. Here's the playbook:"
@@ -0,0 +1,56 @@
1
+ # YouTube
2
+
3
+ **Algorithm Signals (December 2025):**
4
+ - **Click-through rate (CTR)** — How often people click when shown your video
5
+ - **Average view duration & % watched** — Raw watch time AND completion percentage
6
+ - **Session impact** — Does your video keep people on YouTube longer?
7
+ - **Viewer satisfaction** — YouTube now uses surveys + behavior to estimate quality
8
+ - **Negative feedback** — "Not interested," skips, very low retention hurt you
9
+ - **Topical authority** — Channels focused on clear topics get recommended more
10
+
11
+ **2025 Changes:** AI-driven hyper-personalization. Older evergreen videos get revived when topics trend again. Stronger emphasis on authority, depth, and "entity-rich" content.
12
+
13
+ **Optimal Specs:**
14
+
15
+ | Format | Specs | Performance |
16
+ |--------|-------|-------------|
17
+ | Shorts | 10-35 sec (discovery), up to 60 sec | Highest reach, lower depth |
18
+ | Long-form | 8-12 minutes (sweet spot) | Best for monetization + depth |
19
+ | Thumbnail | 1280x720px | CTR target: 4-10% (Home), 6-12% strong |
20
+
21
+ ## Shorts Script Template
22
+
23
+ ```
24
+ [HOOK - 0-2 seconds]
25
+ "[Immediate value promise or pattern interrupt]"
26
+
27
+ [BODY - 2-50 seconds]
28
+ [Deliver value fast, each point 5-10 seconds max, keep visual movement]
29
+
30
+ [CTA - 50-60 seconds]
31
+ "Subscribe for more [topic]" OR "Full video on my channel" OR end abruptly (drives rewatch)
32
+ ```
33
+
34
+ ## Long-Form Framework (HIVES)
35
+
36
+ **H - Hook (0-30 seconds)** — Pattern interrupt, credibility, preview. "By the end of this video, you'll know exactly how to [outcome]"
37
+
38
+ **I - Intro (30 seconds - 1 minute)** — Brief context, who this is for, what you'll cover.
39
+
40
+ **V - Value (Main content)** — Deliver on the promise. Clear sections with verbal signposting. Examples and proof.
41
+
42
+ **E - Engagement Prompts (Throughout)** — Every 2-3 minutes: "Let me know in the comments if [question]"
43
+
44
+ **S - Strong CTA (Final 30 seconds)** — Summarize, clear next action, end screen with subscribe + related video.
45
+
46
+ ## Thumbnail + Title Patterns
47
+
48
+ **Thumbnail Principles:** 3 elements max (face, text, object). High contrast. Readable at small size. Emotion on face. Curiosity gap.
49
+
50
+ | Title Pattern | Example |
51
+ |---------------|---------|
52
+ | How I [result] | "How I Built a 6-Figure Newsletter in 8 Months" |
53
+ | [Number] [Things] That [Outcome] | "7 LinkedIn Mistakes Killing Your Reach" |
54
+ | Why [Thing] Doesn't Work | "Why Your Content Strategy Isn't Working" |
55
+ | The [Adjective] [Thing] | "The Boring Marketing Strategy That Actually Works" |
56
+ | I [Did X] For [Time]. Here's What Happened | "I Posted Daily for 90 Days. Here's What Happened" |
@@ -0,0 +1,40 @@
1
+ # 20 Tweet Patterns
2
+
3
+ A comprehensive taxonomy of tweet types. Use when generating X/Twitter content to ensure structural variety. When generating tweets, randomly select from these patterns rather than defaulting to the same format.
4
+
5
+ ## General Advice / Observation
6
+ 1. **Pithy Statement** — Short, impactful advice or observation. "Your network is your net worth."
7
+ 2. **Statement + Action** — Advice followed by a call to action. "The best time to start writing was yesterday. The second best time is now. What are you waiting for?"
8
+ 3. **Open-Ended Question** — Thought-provoking question inviting reflection. "What's the biggest lesson you learned in your 20s?"
9
+ 4. **Direct Quote** — Quote from a famous figure, lending credibility. "The only way to do great work is to love what you do.' - Steve Jobs"
10
+ 5. **Quote + Commentary** — Quote followed by your personal interpretation or analysis.
11
+
12
+ ## Tips / Lessons / Insights / Secrets
13
+ 6. **Listicle (Bullets)** — Numbered tips in concise bullet points for easy consumption.
14
+ 7. **Listicle (Numbered)** — Numbered list with detailed explanations for each point.
15
+ 8. **Concept Breakdown** — Specific concept explained in detail with insights, examples, or applications. "The Pareto Principle: 80% of results come from 20% of efforts..."
16
+ 9. **Concept + Action** — Concise explanation followed by a specific call to action. "Small, consistent actions create massive results. What habit can you start today?"
17
+
18
+ ## Personal Experience / Story
19
+ 10. **Anecdote + Lesson** — Personal experience illustrating a specific lesson, adding authenticity.
20
+ 11. **Story Thread** — Longer personal story in multi-tweet thread, building suspense with detailed insights.
21
+ 12. **Story + Action** — Personal anecdote followed by a relevant call to action.
22
+
23
+ ## Questions / Polls
24
+ 13. **Multiple Choice Poll** — Multiple-choice question with clearly defined options.
25
+ 14. **Open-Ended Question** — Question allowing nuanced responses and deeper engagement.
26
+ 15. **Question + Context** — Question followed by additional context to encourage thoughtful responses.
27
+
28
+ ## Promotions / Announcements
29
+ 16. **Direct Promotion** — Simple announcement with a direct link.
30
+ 17. **Promotion + Action** — Announcement followed by a call to action for engagement or lead generation.
31
+ 18. **Testimonial + Promotion** — Client testimonial followed by a relevant promotion.
32
+
33
+ ## Humorous / Controversial
34
+ 19. **Humorous Statement + Action** — Humorous or controversial statement designed to spark conversation, followed by a CTA.
35
+ 20. **Statement + Media** — Humorous or controversial statement paired with a relevant image or video.
36
+
37
+ ## Usage Guidelines
38
+ - When generating a batch of tweets, distribute across at least 4 different pattern categories
39
+ - Match pattern type to content goal (tips for value, stories for connection, humor for engagement)
40
+ - For thread generation, use patterns 6-9 for body tweets, patterns 1-5 for the hook tweet
@@ -0,0 +1,245 @@
1
+ ---
2
+ name: content-repost-manager
3
+ repo: https://github.com/clawdbot/clawd
4
+ description: >
5
+ Identify top-performing evergreen content for reposting across platforms.
6
+ Brand-agnostic — reads analytics data and content taxonomy from any brand's
7
+ evergreen system folder. Classifies posts as trending (skip) vs evergreen
8
+ (repost eligible), applies platform-specific cooldowns, and outputs a
9
+ repost queue. Triggers on "repost", "banger", "top performer", "content
10
+ recycling", "repost queue", "evergreen content repost", or "which posts
11
+ should I repost".
12
+ depends-on:
13
+ - hook-generator
14
+ ---
15
+
16
+ # Content Repost Manager
17
+
18
+ Brand-agnostic repost intelligence that reads from each brand's evergreen analytics system. Never duplicates existing platform-specific analytics — this is a **lens** on top of existing weekly reports and hook performance data.
19
+
20
+ ## When to Use
21
+
22
+ - Agent or user asks "which posts should I repost"
23
+ - Weekly content review identifies bangers
24
+ - Cross-platform content recycling (X banger → LinkedIn adaptation)
25
+ - Building a repost queue from analytics data
26
+
27
+ ## Core Principle: Trending vs Evergreen
28
+
29
+ **Trending posts are NEVER repost candidates.** They reference specific news, product launches, or time-bound events. Reposting stale news destroys credibility.
30
+
31
+ **Evergreen posts are repost candidates.** They address persistent pain points, share frameworks, or make contrarian observations that stay relevant.
32
+
33
+ ### Classification Rules
34
+
35
+ | Tag | Category | Repost? |
36
+ |-----|----------|---------|
37
+ | `market_signal` | Trending (usually) | Only if content references a general pattern, not a specific news event |
38
+ | `market_news` | Trending | **Never repost** — news stales in hours |
39
+ | `tool_overload` | Evergreen | Repost eligible |
40
+ | `manual_loops` | Evergreen | Repost eligible |
41
+ | `founder_router` | Evergreen | Repost eligible |
42
+ | `unfinished_workflow` | Evergreen | Repost eligible |
43
+ | `proof_test` | Evergreen | Repost eligible |
44
+ | `context_bloat` | Evergreen | Repost eligible |
45
+ | `template_confusion` | Evergreen | Repost eligible |
46
+ | `expensive_mistake` | Evergreen | Repost eligible |
47
+ | `vertical_law` | Evergreen | Repost eligible |
48
+ | `vertical_real_estate` | Evergreen | Repost eligible |
49
+ | `agent_lifestyle` | Evergreen | Repost eligible |
50
+ | `contrarian` | Evergreen | Repost eligible |
51
+ | `first_person` | Context-dependent | Repost only if not referencing a specific dated event |
52
+ | `pain_pill` | Evergreen | Repost eligible |
53
+
54
+ When in doubt, read the post text. If it mentions a specific product name, date, or "this week/month" → trending. If it describes a universal pain or framework → evergreen.
55
+
56
+ ## Brand-Agnostic Discovery
57
+
58
+ This skill works for ANY brand in the evergreen system. The agent must discover the brand's analytics structure by reading its evergreen.md first.
59
+
60
+ ### Step 1: Identify the brand
61
+
62
+ Read the brand's evergreen.md from:
63
+ ```
64
+ businesses/<brand-slug>/evergreen.md
65
+ ```
66
+
67
+ Look for the **Connected Systems** or **File Locations** section to find:
68
+ - Analytics folder path
69
+ - Hook performance data path
70
+ - Content taxonomy definitions
71
+ - Weekly report paths
72
+
73
+ ### Step 2: Read analytics data
74
+
75
+ Read the latest snapshot from the brand's analytics folder:
76
+ ```
77
+ businesses/<brand-slug>/analytics/snapshots/latest-x-metrics.json
78
+ ```
79
+
80
+ Or the latest weekly report:
81
+ ```
82
+ businesses/<brand-slug>/analytics/reports/latest-weekly-report.md
83
+ ```
84
+
85
+ If the brand has no analytics folder, check evergreen.md for alternative paths. Some brands store analytics under `content-systems/` or shared directories.
86
+
87
+ ### Step 3: Read content taxonomy
88
+
89
+ Each brand defines its own pain angles and hook patterns. Read them from:
90
+ - The brand's `content-systems/` folder
91
+ - Or the `weekly-analytics-feedback-loop.md` if it exists for that brand
92
+ - Or the analytics script if it contains classification rules
93
+
94
+ If no taxonomy exists, extract it from the snapshot data itself (the `pain_angle` and `hook_pattern` fields in JSON snapshots).
95
+
96
+ ## Repost Eligibility Criteria
97
+
98
+ A post qualifies for repost when ALL of the following are true:
99
+
100
+ 1. **Performance**: Engagement ≥ 2x the brand's median weighted engagement
101
+ 2. **Content type**: Classified as evergreen (see table above)
102
+ 3. **Cooldown**: Not posted/reposted within the platform's cooldown window
103
+ 4. **Not previously reposted**: Check repost history in the queue file
104
+
105
+ ### Platform Cooldowns
106
+
107
+ | Platform | Cooldown | Rationale |
108
+ |----------|----------|-----------|
109
+ | X/Twitter | 30 days | Fast feed, audience overlap acceptable |
110
+ | LinkedIn | 60 days | Slower feed, different audience subset |
111
+ | Instagram | 45 days | Visual-first, needs fresh image |
112
+ | Medium | 90 days | Long-form, readers expect fresh takes |
113
+ | Threads/Bluesky | 30 days | Fast feed, similar to X |
114
+
115
+ ### Engagement Thresholds
116
+
117
+ Use the brand's own data. Calculate median weighted engagement from the latest snapshot:
118
+
119
+ ```
120
+ weighted_engagement = likes + (2 × replies) + (2 × reposts)
121
+ ```
122
+
123
+ - **Tier 1 banger**: ≥ 3x median → prioritize for repost + cross-platform adaptation
124
+ - **Tier 2 solid**: ≥ 2x median → queue for repost on same platform
125
+ - **Tier 3 moderate**: ≥ 1.5x median → consider for cross-platform adaptation only
126
+
127
+ ## Cross-Platform Adaptation
128
+
129
+ When a banger on one platform is adapted for another:
130
+
131
+ 1. **Read the original post** — understand the hook, pain angle, proof, and CTA
132
+ 2. **Adapt, never copy** — rephrase for the target platform's conventions:
133
+ - X → LinkedIn: expand to 2-3 paragraphs, add professional framing
134
+ - X → Instagram: condense to 1 punchy line + carousel slides
135
+ - LinkedIn → X: extract the sharpest single insight
136
+ 3. **Hook Regeneration** — For Tier 1 bangers, spawn hook-generator subagent for platform-optimized adaptation hooks:
137
+ ```markdown
138
+ Load the hook-generator skill and execute the full Phase 1-6 pipeline with this context:
139
+ - WHO: [Target platform audience from brand evergreen.md]
140
+ - WHAT/WHY: [Original post's core insight + pain angle]
141
+ - Knife: [Original post's pain point]
142
+ - Platform: [Target platform — LinkedIn/Instagram/Threads/etc.]
143
+ - Brand: [Brand voice from evergreen.md]
144
+ - Target Score: 80
145
+ Return ONLY this JSON array: [{"hook":"...","score":<0-100>,"pattern":"...","formula":"..."}]
146
+ ```
147
+ Filter: Discard hooks that don't match target platform conventions (e.g., no thread hooks on LinkedIn, no hashtag-heavy hooks on Threads)
148
+ Fallback: If subagent fails, use manual platform adaptation rules from step 2
149
+ 4. **Preserve the winning formula** — keep the same pain angle and hook pattern that performed
150
+ 5. **Update the CTA** — match the platform's link conventions
151
+ 6. **Tag as `adapted_from: <original_url>`** in the repost queue
152
+
153
+ ## Repost Queue File
154
+
155
+ Output location (brand-specific):
156
+ ```
157
+ businesses/<brand-slug>/analytics/repost-queue.md
158
+ ```
159
+
160
+ ### Format
161
+
162
+ ```md
163
+ # Repost Queue — <Brand Name>
164
+
165
+ > Last updated: YYYY-MM-DD
166
+ > Median engagement: X (from latest weekly report)
167
+
168
+ ## Tier 1 — Bangers (≥ 3x median)
169
+ | Original URL | Platform | Pain | Pattern | Engagement | Repost Eligible On | Adapted For | Status |
170
+ |---|---|---|---|---:|---|---|---|
171
+ | https://x.com/... | X | tool_overload | contrarian | 22 | 2026-06-15 | LinkedIn | queued |
172
+
173
+ ## Tier 2 — Solid (≥ 2x median)
174
+ | Original URL | Platform | Pain | Pattern | Engagement | Repost Eligible On | Adapted For | Status |
175
+ |---|---|---|---|---:|---|---|---|
176
+
177
+ ## Tier 3 — Cross-Platform Candidates (≥ 1.5x median)
178
+ | Original URL | Platform | Pain | Pattern | Engagement | Adapt For | Status |
179
+ |---|---|---|---|---:|---|---|
180
+
181
+ ## Repost History
182
+ | Date | Original URL | Platform | Action | Result |
183
+ |---|---|---|---|---|
184
+ ```
185
+
186
+ ### Status Values
187
+
188
+ - `queued` — waiting for cooldown to expire
189
+ - `ready` — cooldown passed, ready to post
190
+ - `adapted` — rewritten for different platform
191
+ - `posted` — live, track results
192
+ - `killed` — decided not to repost after all
193
+ - `skip` — content staled or became irrelevant
194
+
195
+ ## Integration with Existing Systems
196
+
197
+ This skill is a **consumer** of analytics data, not a producer. It reads from:
198
+
199
+ | Data Source | Owner | What We Read |
200
+ |-------------|-------|-------------|
201
+ | Weekly analytics script | Hermes / analytics cron | JSON snapshots, weekly reports |
202
+ | Hook performance registry | Hook intelligence skill | Winning hook patterns |
203
+ | Content taxonomy | Brand evergreen.md | Pain angles, hook patterns, CTA types |
204
+ | Posting history | Platform posting queues | What was already posted/reposted |
205
+
206
+ It writes to:
207
+ | Output | What |
208
+ |--------|------|
209
+ | `analytics/repost-queue.md` | Repost candidates + history |
210
+ | Evergreen.md systems table | Entry pointing to this skill + queue file |
211
+
212
+ ## Workflow
213
+
214
+ ### Manual (on demand)
215
+
216
+ When user asks "what should I repost" or "which posts are bangers":
217
+
218
+ 1. Read the brand's evergreen.md → find analytics paths
219
+ 2. Read latest snapshot or report
220
+ 3. Calculate median engagement
221
+ 4. Filter for evergreen content types only
222
+ 5. Apply cooldown check (compare post date vs today)
223
+ 6. Output the repost queue
224
+
225
+ ### Automated (cron extension)
226
+
227
+ Add a repost scan step to the existing weekly analytics cron:
228
+
229
+ ```bash
230
+ # After the existing analytics script runs, scan for repost candidates
231
+ python3 scripts/content-repost-scan.py --business <brand-slug>
232
+ ```
233
+
234
+ This script reads the snapshot output by the analytics script and appends to the repost queue.
235
+
236
+ ## Anti-Patterns
237
+
238
+ | Mistake | Why Wrong | Fix |
239
+ |---------|-----------|-----|
240
+ | Reposting market news | Stale in hours, destroys credibility | Classify first, never repost trending |
241
+ | Same text on same platform | Audience remembers, looks lazy | Always adapt or add new framing |
242
+ | 30-day cooldown on news | Irrelevant — news is dead by then | No cooldown needed, just don't repost |
243
+ | Ignoring cross-platform opportunity | X banger may kill it on LinkedIn | Always check Tier 1 for adaptation |
244
+ | Duplicating analytics logic | Hermes already runs weekly analytics | Read data, don't regenerate |
245
+ | Brand-specific hardcoded paths | Breaks for other brands | Always discover from evergreen.md |
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env python3
2
+ """Content Repost Scanner: Reads analytics snapshots and identifies repost candidates."""
3
+ import json
4
+ import sys
5
+ import os
6
+ from datetime import datetime, timedelta
7
+
8
+ def load_snapshot(path):
9
+ with open(path) as f:
10
+ return json.load(f)
11
+
12
+ def calc_weighted_engagement(post):
13
+ return post.get('likes', 0) + 2 * post.get('replies', 0) + 2 * post.get('reposts', 0)
14
+
15
+ def classify_evergreen(post):
16
+ tag = post.get('pain_angle', post.get('tag', '')).lower()
17
+ trending_tags = {'market_signal', 'market_news'}
18
+ evergreen_tags = {
19
+ 'tool_overload', 'manual_loops', 'founder_router', 'unfinished_workflow',
20
+ 'proof_test', 'context_bloat', 'template_confusion', 'expensive_mistake',
21
+ 'vertical_law', 'vertical_real_estate', 'agent_lifestyle', 'contrarian',
22
+ 'pain_pill', 'first_person',
23
+ }
24
+ if tag in trending_tags:
25
+ return False
26
+ if tag in evergreen_tags:
27
+ return True
28
+ return 'evergreen' in tag
29
+
30
+ def main():
31
+ import argparse
32
+ parser = argparse.ArgumentParser()
33
+ parser.add_argument('--business', required=True, help='Brand slug')
34
+ parser.add_argument('--snapshot', help='Path to analytics snapshot JSON')
35
+ parser.add_argument('--output', help='Output queue file path')
36
+ args = parser.parse_args()
37
+
38
+ business = args.business
39
+ base = f'businesses/{business}'
40
+
41
+ snapshot_path = args.snapshot or f'{base}/analytics/snapshots/latest-x-metrics.json'
42
+ if not os.path.exists(snapshot_path):
43
+ print(f'No snapshot found at {snapshot_path}')
44
+ sys.exit(0)
45
+
46
+ snapshot = load_snapshot(snapshot_path)
47
+ posts = snapshot if isinstance(snapshot, list) else snapshot.get('posts', [])
48
+
49
+ if not posts:
50
+ print('No posts in snapshot')
51
+ return
52
+
53
+ engagements = [calc_weighted_engagement(p) for p in posts]
54
+ median = sorted(engagements)[len(engagements) // 2] if engagements else 0
55
+
56
+ candidates = []
57
+ for post in posts:
58
+ ew = calc_weighted_engagement(post)
59
+ ratio = ew / median if median > 0 else 0
60
+ if not classify_evergreen(post):
61
+ continue
62
+ post_date = post.get('date', post.get('created_at', ''))
63
+ if post_date:
64
+ try:
65
+ pd = datetime.fromisoformat(post_date.replace('Z', '+00:00'))
66
+ days_ago = (datetime.now().astimezone() - pd).days
67
+ except:
68
+ days_ago = 999
69
+ else:
70
+ days_ago = 999
71
+
72
+ candidates.append({
73
+ 'url': post.get('url', ''),
74
+ 'platform': post.get('platform', 'X'),
75
+ 'pain': post.get('pain_angle', post.get('tag', 'unknown')),
76
+ 'pattern': post.get('hook_pattern', 'unknown'),
77
+ 'engagement': ew,
78
+ 'ratio': round(ratio, 1),
79
+ 'age_days': days_ago,
80
+ 'eligible_after': days_ago,
81
+ })
82
+
83
+ candidates.sort(key=lambda c: c['engagement'], reverse=True)
84
+
85
+ tier1 = [c for c in candidates if c['ratio'] >= 3]
86
+ tier2 = [c for c in candidates if c['ratio'] >= 2 and c not in tier1]
87
+ tier3 = [c for c in candidates if c['ratio'] >= 1.5 and c not in tier1 and c not in tier2]
88
+
89
+ output_lines = [f'# Repost Queue — {business}', '']
90
+ output_lines.append(f'> Last updated: {datetime.now().strftime("%Y-%m-%d")}')
91
+ output_lines.append(f'> Median engagement: {median}')
92
+ output_lines.append('')
93
+
94
+ if tier1:
95
+ output_lines.append('## Tier 1 — Bangers (≥ 3x median)')
96
+ output_lines.append('| URL | Platform | Pain | Pattern | Engagement | Ratio | Age (days) | Eligible | Status |')
97
+ output_lines.append('|---|---|---|---:|---:|---:|---|---|')
98
+ for c in tier1:
99
+ eligible_on = (datetime.now() + timedelta(days=max(0, 30 - c['age_days']))).strftime('%Y-%m-%d')
100
+ output_lines.append(f"| {c['url']} | {c['platform']} | {c['pain']} | {c['pattern']} | {c['engagement']} | {c['ratio']}x | {c['age_days']} | {eligible_on} | queued |")
101
+ output_lines.append('')
102
+
103
+ if tier2:
104
+ output_lines.append('## Tier 2 — Solid (≥ 2x median)')
105
+ output_lines.append('| URL | Platform | Pain | Pattern | Engagement | Ratio | Age (days) | Eligible | Status |')
106
+ output_lines.append('|---|---|---|---:|---:|---:|---|---|')
107
+ for c in tier2:
108
+ output_lines.append(f"| {c['url']} | {c['platform']} | {c['pain']} | {c['pattern']} | {c['engagement']} | {c['ratio']}x | {c['age_days']} | — | queued |")
109
+ output_lines.append('')
110
+
111
+ if tier3:
112
+ output_lines.append('## Tier 3 — Cross-Platform Candidates (≥ 1.5x median)')
113
+ output_lines.append('| URL | Platform | Pain | Pattern | Engagement | Ratio | Adapt For | Status |')
114
+ output_lines.append('|---|---|---|---:|---:|---|---|')
115
+ for c in tier3:
116
+ alt_platform = 'LinkedIn' if c['platform'] == 'X' else 'X'
117
+ output_lines.append(f"| {c['url']} | {c['platform']} | {c['pain']} | {c['pattern']} | {c['engagement']} | {c['ratio']}x | {alt_platform} | candidate |")
118
+ output_lines.append('')
119
+
120
+ output = '\n'.join(output_lines)
121
+
122
+ output_path = args.output or f'{base}/analytics/repost-queue.md'
123
+ os.makedirs(os.path.dirname(output_path), exist_ok=True)
124
+ with open(output_path, 'w') as f:
125
+ f.write(output)
126
+
127
+ print(f'Repost queue written to {output_path}')
128
+ print(f'Tier 1 (bangers): {len(tier1)}')
129
+ print(f'Tier 2 (solid): {len(tier2)}')
130
+ print(f'Tier 3 (cross-platform): {len(tier3)}')
131
+
132
+ if __name__ == '__main__':
133
+ main()
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 1,
3
+ "registry": "https://clawhub.ai",
4
+ "slug": "context-recovery",
5
+ "installedVersion": "1.2.2",
6
+ "installedAt": 1772816764944
7
+ }