@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,221 @@
1
+ #!/usr/bin/env node
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+ const { execSync } = require('child_process');
5
+
6
+ const args = process.argv.slice(2);
7
+ const fileIndex = args.indexOf('--file');
8
+ const brandIndex = args.indexOf('--brand');
9
+ const jsonFlag = args.includes('--json');
10
+ const autoFix = args.includes('--auto-fix');
11
+
12
+ const filePath = fileIndex !== -1 ? args[fileIndex + 1] : null;
13
+ const brand = brandIndex !== -1 ? args[brandIndex + 1] : 'unknown';
14
+
15
+ if (!filePath || !fs.existsSync(filePath)) {
16
+ console.error('Usage: node scripts/validation/concreteness-validator.js --file <path> [--brand <name>] [--json] [--auto-fix]');
17
+ process.exit(1);
18
+ }
19
+
20
+ const content = fs.readFileSync(filePath, 'utf-8');
21
+ const lines = content.split('\n');
22
+
23
+ // 105+ vague phrase patterns across 8 categories
24
+ const patterns = {
25
+ effectiveness: [
26
+ /\bvery\s+effective\b/i, /\bpowerful\b/i, /\bgets?\s+good\s+results?\b/i,
27
+ /\bworks?\s+well\b/i, /\bhighly\s+effective\b/i, /\bgreat\s+results?\b/i,
28
+ /\bamazing\s+results?\b/i, /\bincredibly\s+effective\b/i, /\bremarkably\s+effective\b/i,
29
+ /\bextremely\s+effective\b/i, /\bworks?\s+great\b/i, /\bgets?\s+amazing\s+results?\b/i,
30
+ /\bnoticeable\s+improvement\b/i, /\bsignificant\s+improvement\b/i,
31
+ ],
32
+ scale: [
33
+ /\blarge\s+number\b/i, /\bmany\s+users?\b/i, /\bmassive\s+amount\b/i,
34
+ /\ba\s+lot\s+of\b/i, /\bcountless\b/i, /\binnumerable\b/i,
35
+ /\bton(?:s)?\s+of\b/i, /\bhuge\s+(?:number|amount|volume)\b/i,
36
+ /\bgrowing\s+number\b/i, /\bsignificant\s+number\b/i, /\bvast\s+majority\b/i,
37
+ /\bwide\s+range\b/i, /\bendless\b/i,
38
+ ],
39
+ time: [
40
+ /\bquickly\b/i, /\bfast\b/i, /\bsoon\b/i, /\binstantly\b/i,
41
+ /\bwithin\s+days?\b/i, /\bin\s+no\s+time\b/i, /\bin\s+a\s+(?:short|brief)\s+period\b/i,
42
+ /\bright\s+away\b/i, /\bimmediately\b/i, /\brapidly\b/i, /\bswiftly\b/i,
43
+ /\bshortly\b/i, /\bbefore\s+you\s+know\s+it\b/i, /\bin\s+record\s+time\b/i,
44
+ /\bspeed\s+(?:up|things?\s+up)\b/i,
45
+ ],
46
+ quality: [
47
+ /\bhigh\s+quality\b/i, /\bpremium\b/i, /\bworld[-\s]class\b/i,
48
+ /\bindustry[-\s]leading\b/i, /\btop[-\s]tier\b/i, /\bfirst[-\s]rate\b/i,
49
+ /\bbest[-\s]in[-\s]class\b/i, /\bcutting[-\s]edge\b/i, /\bstate[-\s]of[-\s]the[-\s]art\b/i,
50
+ /\bnext[-\s]level\b/i, /\btop[-\s]notch\b/i, /\bsecond\s+to\s+none\b/i,
51
+ /\bunparalleled\b/i, /\bunsurpassed\b/i,
52
+ ],
53
+ authority: [
54
+ /\bhigh[-\s]authority\b/i, /\btrusted\b/i, /\bwell[-\s]known\b/i,
55
+ /\b(?:Google|search\s+engines?)\s+loves?\b/i, /\btrusted\s+by\b/i,
56
+ /\breputable\b/i, /\bestablished\b/i, /\brespected\b/i,
57
+ /\bgo[-\s]to\b/i, /\bleading\s+(?:platform|site|source|brand)\b/i,
58
+ ],
59
+ generic_platform: [
60
+ /\bthis\s+platform\b/i, /\bthe\s+site\b/i, /\bsocial\s+media\s+platforms?\b/i,
61
+ /\bthe\s+website\b/i, /\b(?:various|multiple)\s+platforms?\b/i,
62
+ /\b(?:different|other)\s+social\s+media\b/i, /\b(?:online|digital)\s+platforms?\b/i,
63
+ /\bthird[-\s]party\s+(?:platform|site)\b/i,
64
+ ],
65
+ generic_people: [
66
+ /\bmany\s+marketers?\b/i, /\bexperts?\s+say\b/i, /\bstudies?\s+show\b/i,
67
+ /\b(?:research|surveys?)\s+show\b/i, /\bsome\s+people\b/i,
68
+ /\bmany\s+businesses?\b/i, /\bindustry\s+experts?\b/i,
69
+ /\b(?:leading|top)\s+experts?\b/i, /\bprofessionals?\s+agree\b/i,
70
+ /\bdata\s+shows?\b/i, /\bits\s+(?:widely|generally)\s+(?:known|accepted|believed)\b/i,
71
+ ],
72
+ results: [
73
+ /\bbetter\s+results?\b/i, /\bimproved\s+performance\b/i,
74
+ /\bsignificant\s+increase\b/i, /\bdramatic\s+(?:improvement|results?|increase)\b/i,
75
+ /\bimpressive\s+results?\b/i, /\bboost(?:ed|ing)?\s+(?:performance|results?|traffic)\b/i,
76
+ /\bmeasurable\s+results?\b/i, /\btangible\s+(?:results?|benefits|improvements)\b/i,
77
+ /\bmeaningful\s+(?:results?|impact|improvement)\b/i,
78
+ /\bproven\s+results?\b/i, /\breal\s+results?\b/i,
79
+ ],
80
+ };
81
+
82
+ const categoryNames = {
83
+ effectiveness: 'Effectiveness Claims',
84
+ scale: 'Size/Scale',
85
+ time: 'Time/Speed',
86
+ quality: 'Quality',
87
+ authority: 'Authority/Trust',
88
+ generic_platform: 'Generic Platform References',
89
+ generic_people: 'Generic People/Companies',
90
+ results: 'Results/Outcomes',
91
+ };
92
+
93
+ const findings = {};
94
+ let totalCount = 0;
95
+
96
+ for (let i = 0; i < lines.length; i++) {
97
+ for (const [category, regexps] of Object.entries(patterns)) {
98
+ for (const regex of regexps) {
99
+ const match = lines[i].match(regex);
100
+ if (match) {
101
+ if (!findings[category]) findings[category] = [];
102
+ findings[category].push({
103
+ phrase: match[0],
104
+ lineNumber: i + 1,
105
+ context: lines[i].trim().substring(0, 100),
106
+ });
107
+ totalCount++;
108
+ }
109
+ }
110
+ }
111
+ }
112
+
113
+ function getSeverity(count) {
114
+ if (count <= 15) return { label: 'GOOD', emoji: '✅' };
115
+ if (count <= 30) return { label: 'FAIR', emoji: '⚠️' };
116
+ if (count <= 50) return { label: 'NEEDS IMPROVEMENT', emoji: '🔶' };
117
+ return { label: 'CRITICAL', emoji: '🔴' };
118
+ }
119
+
120
+ if (jsonFlag) {
121
+ const jsonOutput = {
122
+ totalCount,
123
+ findings: Object.entries(findings).map(([cat, matches]) => ({
124
+ category: cat,
125
+ count: matches.length,
126
+ replacement: getReplacementHint(cat),
127
+ examples: getExamples(cat),
128
+ matches,
129
+ })),
130
+ };
131
+ console.log(JSON.stringify(jsonOutput, null, 2));
132
+ process.exit(0);
133
+ }
134
+
135
+ const severity = getSeverity(totalCount);
136
+
137
+ console.log('═══════════════════════════════════════════════════════════');
138
+ console.log('🔍 CONCRETENESS VALIDATOR REPORT');
139
+ console.log('═══════════════════════════════════════════════════════════');
140
+ console.log(`\nArticle: ${filePath}`);
141
+ console.log(`Total vague phrases found: ${totalCount}`);
142
+ console.log(`\n📊 SEVERITY: ${severity.emoji} ${severity.label}`);
143
+ console.log('─────────────────────────────────────────────────────────');
144
+
145
+ for (const [cat, matches] of Object.entries(findings)) {
146
+ console.log(`\n📌 ${categoryNames[cat]} (${matches.length} instances)`);
147
+ console.log(` Replace with: ${getReplacementHint(cat)}`);
148
+ console.log('');
149
+ matches.slice(0, 5).forEach(m => {
150
+ console.log(` ${m.lineNumber}. "${m.phrase}"`);
151
+ console.log(` Context: ...${m.context}...`);
152
+ });
153
+ if (matches.length > 5) {
154
+ console.log(` ... and ${matches.length - 5} more instances`);
155
+ }
156
+ }
157
+
158
+ if (autoFix) {
159
+ console.log('\n🤖 AUTO-FIX MODE: Generating specific replacements with Gemini...');
160
+ const concretePath = filePath.replace('.md', '.concrete.md');
161
+
162
+ let improved = content;
163
+ let fixCount = 0;
164
+ for (const [cat, matches] of Object.entries(findings)) {
165
+ for (const m of matches) {
166
+ const replacement = getRandomReplacement(cat);
167
+ improved = improved.replace(m.phrase, replacement);
168
+ fixCount++;
169
+ }
170
+ }
171
+
172
+ fs.writeFileSync(concretePath, improved);
173
+ console.log(`✅ Auto-fix complete!`);
174
+ console.log(`📁 Improved article: ${path.basename(concretePath)}`);
175
+ console.log(`\n📊 Before: ${totalCount} vague phrases`);
176
+ console.log(`📊 After: ${totalCount - fixCount} vague phrases (estimate)`);
177
+ console.log(`📊 Improvement: -${fixCount} phrases (-${Math.round(fixCount / totalCount * 100)}%)`);
178
+ }
179
+
180
+ function getReplacementHint(category) {
181
+ const hints = {
182
+ effectiveness: '[SPECIFIC METRIC: e.g., "increases conversions by 34%"]',
183
+ scale: '[EXACT QUANTITY: e.g., "2.5M members", "500+ clients"]',
184
+ time: '[PRECISE TIMEFRAME: e.g., "in 24-48 hours", "after 2 weeks"]',
185
+ quality: '[MEASURABLE ATTRIBUTE: e.g., "ranked #1 for 15 keywords"]',
186
+ authority: '[SPECIFIC METRIC: e.g., "Domain Authority 96", "2.5M followers"]',
187
+ generic_platform: '[NAMED PLATFORM: e.g., "Medium.com", "Reddit"]',
188
+ generic_people: '[NAMED SOURCE: e.g., "Moz 2024 study", "Cody Schneider"]',
189
+ results: '[SPECIFIC DATA: e.g., "+34% conversion rate", "10k → 50k"]',
190
+ };
191
+ return hints[category] || '[SPECIFIC DETAIL]';
192
+ }
193
+
194
+ function getExamples(category) {
195
+ const examples = {
196
+ effectiveness: ['"increases conversions by 34%"', '"generates $200-500/month"'],
197
+ scale: ['"2.5M members"', '"500+ enterprise clients"'],
198
+ time: ['"in 24-48 hours"', '"after 2 weeks of consistent posting"'],
199
+ quality: ['"ranked #1 for 15 keywords"', '"98% uptime SLA"'],
200
+ authority: ['"Domain Authority 96"', '"2.5M monthly active users"'],
201
+ generic_platform: ['"Medium.com"', '"Reddit\'s r/entrepreneur"'],
202
+ generic_people: ['"Moz\'s 2024 study of 10,000 sites"', '"SEO expert Cody Schneider"'],
203
+ results: ['"+34% conversion rate"', '"10k → 50k monthly visitors"'],
204
+ };
205
+ return examples[category] || [];
206
+ }
207
+
208
+ function getRandomReplacement(category) {
209
+ const replacements = {
210
+ effectiveness: ['increases conversions by 34%', 'generates $200-500/month passive income', 'improves click-through rate by 28%'],
211
+ scale: ['2.5M active members', '500+ enterprise deployments', 'over 10,000 verified users'],
212
+ time: ['within 24-48 hours', 'in approximately 2 weeks', 'after 3 consecutive publish days'],
213
+ quality: ['ranked #1 for 15 target keywords', '98.5% average satisfaction score'],
214
+ authority: ['Domain Authority 96', '2.5M followers across platforms'],
215
+ generic_platform: ['Medium.com', 'LinkedIn', 'Twitter/X'],
216
+ generic_people: ['Moz 2024 study', 'Neil Patel analysis', 'HubSpot research'],
217
+ results: ['+34% conversion rate', '2.5x return on investment', '10,000 to 50,000 monthly visitors'],
218
+ };
219
+ const list = replacements[category] || ['specific, measurable result'];
220
+ return list[Math.floor(Math.random() * list.length)];
221
+ }
@@ -0,0 +1,16 @@
1
+ const { execFile } = require('child_process');
2
+
3
+ async function execFileNoThrow(file, args, options = {}) {
4
+ return new Promise((resolve) => {
5
+ execFile(file, args, options, (error, stdout, stderr) => {
6
+ resolve({
7
+ stdout: stdout || '',
8
+ stderr: stderr || '',
9
+ error: error || null,
10
+ status: error ? (error.code || 1) : 0,
11
+ });
12
+ });
13
+ });
14
+ }
15
+
16
+ module.exports = { execFileNoThrow };
@@ -0,0 +1,424 @@
1
+ ---
2
+ name: content-atomizer
3
+ description: "Take one piece of long-form content and atomize it into 10-20 platform-specific posts across 8 platforms (Twitter/X, LinkedIn, Instagram, Reddit,..."
4
+ category: content
5
+ tier: core
6
+ reads:
7
+ - brand/voice-profile.md
8
+ - brand/audience.md
9
+ writes:
10
+ - marketing/social/{source-slug}/
11
+ depends-on:
12
+ - brand-voice
13
+ - hook-generator
14
+ - sharp-thesis-validator
15
+ triggers:
16
+ - repurpose
17
+ - atomize
18
+ - turn this into posts
19
+ - social content from
20
+ - content repurposing
21
+ - break this down
22
+ - social posts from blog
23
+ - distribute this
24
+ allowed-tools: []
25
+ ---
26
+
27
+ # Content Atomizer
28
+
29
+ You take one piece of long-form content and extract 10-20 standalone social posts, each native to its target platform. Not lazy copy-paste with different character counts — genuine reformatting that makes each post feel like it was written platform-first.
30
+
31
+ ## On Activation
32
+
33
+ 1. **Awareness Gate (MANDATORY):** Determine the target audience's awareness level before any copy work. See `references/awareness-level-guide.md`. If unclear from context, ask the user.
34
+ 2. Read `brand/voice-profile.md` — maintain consistent voice across platforms
35
+ 3. Read `brand/audience.md` — know which platforms matter and how the audience behaves on each
36
+ 3. Load `references/platform-specs.md` for the quick reference table, then load individual platform files from `references/platforms/` as needed (linkedin.md, twitter.md, instagram.md, tiktok.md, youtube.md, threads.md, bluesky.md, reddit.md)
37
+ 4. Accept the source content (blog post, newsletter, video transcript, podcast transcript)
38
+ 5. If no source provided, check `marketing/content/` for recent articles
39
+
40
+ ### Zero Context (No Brand Files)
41
+
42
+ If brand files don't exist, the skill still works:
43
+
44
+ - **No voice-profile.md**: Write in a clear, professional default voice. Ask the user for 2-3 adjectives describing their brand tone.
45
+ - **No audience.md**: Default to all platforms. Ask which platforms matter most to them.
46
+ - The skill always works — brand files enhance, never gate.
47
+
48
+ ---
49
+
50
+ ## Brand Integration
51
+
52
+ Brand files shape how content gets adapted per platform:
53
+
54
+ - **voice-profile.md** → Each platform gets the same voice in different registers. Twitter gets punchy voice (short, sharp). LinkedIn gets authoritative voice (complete thoughts, data). Reddit gets authentic voice (conversational, no marketing speak). The voice DNA stays constant; the register shifts.
55
+ - **audience.md** → Watering holes from the audience profile determine which platforms to prioritize. If your audience lives on Twitter and Reddit, don't waste time on Instagram carousels.
56
+
57
+ **Funnel grounding (if `funnel_id` provided):**
58
+ Read `funnels/{funnel_id}-*.md` from the brand's `funnels/` directory before atomizing.
59
+ Every social post MUST include: `funnel_id`, `buyer_stage`, `cta`, `icp_segment`.
60
+ Use the funnel's CTA — not a generic one. If a post's CTA doesn't match the funnel's conversion step, fix it.
61
+ When no funnel_id is provided, proceed without funnel constraints.
62
+
63
+ ---
64
+
65
+ ## The Atomization Process
66
+
67
+ ### Phase 0: Sharp-Thesis Validation (MANDATORY — Social Mode)
68
+
69
+ Before atomizing, validate the source content's core thesis passes the Sharp-Thesis Test:
70
+
71
+ ```
72
+ sharp-thesis-validator --mode social --brand {brand} "{core thesis from source content}"
73
+ ```
74
+
75
+ **On PASS:** Proceed to Step 1.
76
+ **On FAIL:**
77
+ - If the source content itself was never thesis-validated (long-form), note the weakness
78
+ - Extract only insights that CAN be framed as sharp theses
79
+ - Do NOT atomize weak/generic insights — they produce weak/generic social posts
80
+ - Each atomized post should individually pass the social-mode validator
81
+
82
+ ### Step 1: Extract Raw Material
83
+
84
+ Read the source content and extract:
85
+
86
+ - **Key insights**: 3-5 original ideas or arguments
87
+ - **Quotable lines**: Sentences that stand alone as wisdom
88
+ - **Stats/data points**: Any numbers, percentages, results
89
+ - **Stories/anecdotes**: Narrative moments that create emotional connection
90
+ - **Contrarian takes**: Opinions that challenge conventional wisdom
91
+ - **Step-by-step processes**: Any how-to sequences
92
+ - **Lists**: Any grouped items (tools, tips, mistakes, etc.)
93
+
94
+ Tag each extraction with its type. This is your raw material inventory.
95
+
96
+ ### Step 2: Map to Platforms
97
+
98
+ Each extraction type maps naturally to specific platforms and formats:
99
+
100
+ | Extraction Type | Twitter/X | LinkedIn | Instagram | Reddit | TikTok | YouTube | Threads | Bluesky |
101
+ |----------------|-----------|----------|-----------|--------|--------|---------|---------|---------|
102
+ | Key insight | Single tweet | Text post | Carousel slide | Comment/post | Hot take (15s) | Short (30s) | Single post | Single post |
103
+ | Quotable line | Quote tweet | Text post with context | Quote graphic caption | — | Green screen | — | Quote-post | Thoughtful take |
104
+ | Stats/data | Data tweet | Data post with analysis | Infographic caption | Data post | Data reveal (20s) | Short (30s) | Mini-thread | Link post |
105
+ | Story | Thread opener | Story post | Story caption | Long-form post | Story format (30-60s) | Long-form (8-12m) | Conversational post | Experience report |
106
+ | Contrarian take | Hot take tweet | Debate post | — | Discussion post | Controversy spark (15s) | Short (15s) | Friendly disagreement | Informed take |
107
+ | Step-by-step | Thread | Carousel/document | Carousel | How-to post | Tutorial (30-60s) | Long-form (8-12m) | Mini-thread | Thread |
108
+ | List | Thread or single | Listicle post | Carousel | List post | Listicle (20s) | Short (45s) | Single post | Single post |
109
+
110
+ Load the specific platform file from `references/platforms/` for full playbooks, algorithm signals, templates, and hook formulas.
111
+
112
+ ### Step 3: Write Platform-Native Posts
113
+
114
+ ---
115
+
116
+ ## Platform Rules
117
+
118
+ ### Twitter/X
119
+
120
+ **Character limit**: 280 per tweet, threads unlimited
121
+
122
+ **Single Tweet Formula:**
123
+ ```
124
+ [Hook — pattern interrupt or bold claim]
125
+
126
+ [1-2 sentences of value or proof]
127
+
128
+ [CTA or takeaway]
129
+ ```
130
+
131
+ **Thread Formula (Nicolas Cole Perfect Thread Structure):**
132
+ ```
133
+ Tweet 1 (Lead): Hook — big promise or contrarian take + TLDR of the payoff
134
+ Tweet 2 (Bridge): "Here's the context..." — sets up why this matters
135
+ Tweet 3-N (Points): One idea per tweet, each must standalone, numbered when possible
136
+ Tweet N+1 (TLDR): "TLDR:" — 1-2 sentence distillation of the entire thread
137
+ Tweet N+2 (CTA): Summary + specific ask + "Follow for more [topic]"
138
+ ```
139
+
140
+ **TLDR-First Technique:** Every thread must contain a TLDR tweet. Place it as the second-to-last tweet. Write it AFTER drafting all points, then compress the entire thread into 1-2 sentences. The TLDR serves readers who skim and gives retweeters a quotable summary.
141
+
142
+ **Thread Opening Strategies (load `references/hook-strategies.md` for full detail):**
143
+ 1. **Controversial statement** — challenges a widely held belief
144
+ 2. **Secret knowledge** — "What nobody tells you about..."
145
+ 3. **The "I was wrong"** — vulnerability + lesson
146
+ 4. **Data drop** — shocking stat as the hook
147
+ 5. **Story opener** — "Last week I..." narrative hook
148
+ 6. **Direct challenge** — "Stop doing X. Do Y instead."
149
+
150
+ **Thread Point Structures (load `references/tweet-patterns.md` for all 20 patterns):**
151
+ - Numbered list threads: "5 things I learned..."
152
+ - Myth-busting threads: "Everyone says X. They're wrong."
153
+ - Playbook threads: "Here's the exact process..."
154
+ - Story threads: chronological narrative with lessons
155
+ - Resource threads: curated list of tools/tips
156
+
157
+ **Rules:**
158
+ - Hook tweet determines 90% of engagement — spend 50% of time on it
159
+ - One idea per tweet in threads
160
+ - Use line breaks for readability
161
+ - No hashtags in the main text (one in reply if any)
162
+ - End threads with a retweet ask or follow CTA
163
+ - Optimal: 5-12 tweets per thread
164
+ - ALWAYS include a TLDR tweet — never skip it
165
+
166
+ **Hook patterns that work:**
167
+ - "I spent [time] doing [thing]. Here's what I learned:"
168
+ - "[Contrarian statement]. Here's why:"
169
+ - "[Big number] [result] in [timeframe]. The playbook:"
170
+ - "Stop doing [common thing]. Do this instead:"
171
+ - "The [topic] advice nobody gives you:"
172
+
173
+ ### LinkedIn
174
+
175
+ **Character limit**: 3,000 per post
176
+
177
+ **Post Formula:**
178
+ ```
179
+ [Hook line — stops the scroll]
180
+
181
+ [Line break]
182
+
183
+ [Story or context — 3-5 short paragraphs]
184
+
185
+ [Key insight or lesson]
186
+
187
+ [Call to engage: question, agree/disagree, share your experience]
188
+
189
+ [3-5 hashtags at the bottom]
190
+ ```
191
+
192
+ **Rules:**
193
+ - First line is everything — it shows before "see more"
194
+ - Write in short paragraphs (1-2 sentences each)
195
+ - Use "I" — personal stories outperform corporate content 3x
196
+ - End with a question to drive comments
197
+ - 3-5 relevant hashtags at the bottom only
198
+ - No links in the post body (kills reach) — put links in first comment
199
+ - Document format/carousels get 3x reach over text posts
200
+ - Optimal length: 800-1,500 characters
201
+
202
+ **Hook patterns:**
203
+ - "I made a mistake that cost me [consequence]."
204
+ - "Unpopular opinion: [take]"
205
+ - "After [X years/months] of [doing thing], here's what actually works:"
206
+ - "[Achievement]. But it almost didn't happen."
207
+
208
+ ### Instagram
209
+
210
+ **Character limit**: 2,200 per caption
211
+
212
+ **Caption Formula:**
213
+ ```
214
+ [Hook line — first 125 characters show in feed]
215
+
216
+ [Value content — tips, story, insight]
217
+
218
+ [CTA — save this, share with someone, comment your take]
219
+
220
+ .
221
+ .
222
+ .
223
+ [Hashtags — 5-15 relevant ones]
224
+ ```
225
+
226
+ **Carousel Strategy:**
227
+ - Slide 1: Bold headline (this is the hook)
228
+ - Slides 2-N: One point per slide, large text, minimal design
229
+ - Final slide: Summary + CTA + account tag
230
+ - 7-10 slides is the sweet spot
231
+ - Provide text content for each slide with design notes
232
+
233
+ **Rules:**
234
+ - First 125 characters = the hook (visible before "more")
235
+ - Carousel posts get 1.4x more reach than single images
236
+ - Include image/graphic brief with each post
237
+ - Hashtags in caption or first comment (test both)
238
+ - CTAs that work: "Save this for later" / "Tag someone who needs this"
239
+
240
+ ### Reddit
241
+
242
+ **Rules are different here. Reddit hates marketing.**
243
+
244
+ **Post Formula:**
245
+ ```
246
+ Title: [Specific, descriptive, no clickbait]
247
+
248
+ Body:
249
+ [Context — who you are, why you're sharing]
250
+ [The actual value — detailed, generous, no gatekeeping]
251
+ [Results or proof if applicable]
252
+ [Question to invite discussion]
253
+
254
+ [NO self-promotion links in the body]
255
+ ```
256
+
257
+ **Rules:**
258
+ - Provide genuine value first, always
259
+ - Match the subreddit's tone and norms
260
+ - No links to your stuff in the post — put them in a comment if asked
261
+ - Write longer, more detailed posts than other platforms
262
+ - Be ready for skepticism — back up claims
263
+ - Identify 2-3 relevant subreddits per topic
264
+ - Title is plain and specific, not clickbaity
265
+
266
+ ---
267
+
268
+ ## Hooks and CTAs
269
+
270
+ **Hook-generator integration:** For each platform's posts, spawn a hook-generator subagent with platform-specific context:
271
+ ```
272
+ Load the hook-generator skill and execute the full Phase 1-6 pipeline with this context.
273
+ Context:
274
+ - WHO: <audience for this platform>
275
+ - WHAT/WHY: <key insight from source content>
276
+ - Knife: <pain point this atom addresses>
277
+ - Platform: <twitter / instagram / linkedin / tiktok / youtube / medium — map per output platform>
278
+ - Brand: <brand name>
279
+ - Target Score: 85
280
+ Return ONLY this JSON array: [{"hook":"...","score":<0-100>,"pattern":"...","formula":"..."}]
281
+ ```
282
+ Use scored hooks as opening lines for each platform's post. Discard any that don't fit platform norms. If subagent fails, fall back to the Universal Hook Formulas below.
283
+
284
+ ### Universal Hook Formulas (fallback)
285
+
286
+ 1. **The Number**: "7 things I learned about [topic]"
287
+ 2. **The Mistake**: "The biggest [topic] mistake I see:"
288
+ 3. **The Contrarian**: "[Common belief] is wrong. Here's why:"
289
+ 4. **The Curiosity Gap**: "Most people [do X]. Top performers [do Y]."
290
+ 5. **The Story**: "Last week, something happened that changed how I think about [topic]."
291
+ 6. **The How-To**: "How to [achieve result] in [timeframe]:"
292
+ 7. **The Data**: "[Stat]. Here's what that means for you:"
293
+
294
+ ### CTA Types by Goal
295
+
296
+ | Goal | CTA |
297
+ |------|-----|
298
+ | Engagement | "What's your take?" / "Agree or disagree?" |
299
+ | Follows | "Follow for daily [topic] tips" |
300
+ | Saves | "Save this for when you need it" |
301
+ | Shares | "Tag someone who needs to hear this" |
302
+ | Traffic | "Link in bio" / "Link in comments" |
303
+ | Email capture | "I wrote a deeper guide — link in bio" |
304
+
305
+ ---
306
+
307
+ ## Output Structure
308
+
309
+ For each source piece, output a directory:
310
+
311
+ ```
312
+ marketing/social/{source-slug}/
313
+ ├── twitter-threads.md # 2-3 threads with hook tweets
314
+ ├── twitter-singles.md # 5-8 standalone tweets
315
+ ├── linkedin-posts.md # 3-5 LinkedIn posts
316
+ ├── instagram-captions.md # 2-3 captions with carousel briefs
317
+ ├── reddit-posts.md # 1-2 Reddit posts with subreddit targets
318
+ ├── tiktok-scripts.md # 1-2 short video scripts (15-60s)
319
+ ├── youtube-shorts.md # 1-2 YouTube Shorts scripts
320
+ ├── threads-posts.md # 2-3 Threads posts or mini-threads
321
+ └── bluesky-posts.md # 2-3 Bluesky posts
322
+ ```
323
+
324
+ Only generate files for platforms the user wants. If no preference stated, generate for all 8 platforms. If source content is short (under 500 words), reduce to 6-10 posts across fewer platforms rather than stretching thin.
325
+
326
+ Each post includes:
327
+
328
+ ```yaml
329
+ ---
330
+ platform: twitter | linkedin | instagram | reddit
331
+ type: thread | single | post | carousel | story
332
+ source: "original-content-slug"
333
+ hook: "first line preview"
334
+ character_count: 247
335
+ hashtags: ["tag1", "tag2"]
336
+ suggested_time: "Tuesday 9am ET"
337
+ status: draft
338
+ ---
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Posting Schedule
344
+
345
+ | Platform | Best Times (ET) | Frequency |
346
+ |----------|----------------|-----------|
347
+ | Twitter/X | 8-10am, 12-1pm, 5-6pm | 1-3x daily |
348
+ | LinkedIn | 8-10am Tue-Thu | 3-5x weekly |
349
+ | Instagram | 11am-1pm, 7-9pm | 4-7x weekly |
350
+ | Reddit | 6-9am, varies by sub | 2-3x weekly |
351
+ | TikTok | 7-9pm Tue/Thu | 3-5x weekly |
352
+ | YouTube Shorts | 9-11am Sat | 2-3x weekly |
353
+ | Threads | 9-11am daily | 3-5x weekly |
354
+ | Bluesky | 10am-12pm weekdays | 3-5x weekly |
355
+
356
+ Space out atomized content over 1-2 weeks. Don't dump everything the same day.
357
+
358
+ ---
359
+
360
+ ## Anti-Patterns
361
+
362
+ | Anti-Pattern | Why It Fails | Instead |
363
+ |-------------|-------------|---------|
364
+ | Copy-paste the same text across platforms | Platform algorithms detect duplicate content and suppress it. Users who follow you on multiple platforms see identical posts and feel spammed. Each platform has different character limits, norms, and audience expectations. | Rewrite natively for each platform's format and voice |
365
+ | Reuse the same hook pattern in a batch | When 5 posts in a row start with "Here's what I learned:", the algorithm treats it as low-variety content and your audience scrolls past. Batch monotony is the #1 tell of AI-generated content. | Vary hook formulas — alternate numbers, stories, contrarian, question |
366
+ | Atomize everything regardless of source length | A 300-word email stretched to 15 posts produces hollow filler. Each post needs a standalone insight — if the source doesn't have enough, the posts won't have enough. | Under 500 words → 6-10 posts max. Under 200 words → don't atomize |
367
+ | Post all atomized content the same day | Followers see 8 posts from you in one feed scroll and either mute or unfollow. Algorithms also penalize velocity spikes from a single account. | Space over 1-2 weeks with variety in timing |
368
+ | Ignore platform culture (marketing speak on Reddit, hashtag spam on Twitter) | Reddit moderators remove overt marketing. Twitter's algorithm deprioritizes hashtag-heavy tweets. Each platform's community has unwritten rules about tone and format. | Read the platform rules in this skill and adapt |
369
+ | Over-hashtag | Twitter and LinkedIn algorithms now treat excessive hashtags as spam signals. On Reddit, hashtags don't exist. Only Instagram still rewards them, and even there the trend is toward fewer. | Twitter: 0-1. LinkedIn: 3-5 at bottom. Instagram: 5-15. Reddit: 0 |
370
+
371
+ ---
372
+
373
+ ## Related Skills
374
+
375
+ - **brand-voice**: Establish voice before atomizing at scale
376
+ - **seo-content**: Create the source content to atomize
377
+ - **newsletter**: Atomize newsletter content for social
378
+ - **creative**: Generate visual asset briefs for social graphics
379
+
380
+ ---
381
+
382
+ ## STEP N: Copywriting Tournament (RECOMMENDED for social post hooks)
383
+
384
+ Generate 3-5 variants of the key social post hooks, then run them through 5 parallel judge personas to find the winner:
385
+
386
+ 1. Generate 3-5 variants (different angles, formulas, or approaches)
387
+ 2. Save each to: `content/tournaments/{slug}/variant-1.md` through `variant-N.md`
388
+ 3. Spawn 5 PARALLEL `build` subagents (one per judge persona):
389
+ - `~/.claude/skills/quality-gate/judge-personas/skeptic.md`
390
+ - `~/.claude/skills/quality-gate/judge-personas/scanner.md`
391
+ - `~/.claude/skills/quality-gate/judge-personas/buyer.md`
392
+ - `~/.claude/skills/quality-gate/judge-personas/expert.md`
393
+ - `~/.claude/skills/quality-gate/judge-personas/outsider.md`
394
+ - Each gets: tournament_dir, variant_count, mode=`social`, original_prompt
395
+ 4. Collect all 5 JSON results, aggregate: sum weighted_avg per variant across judges
396
+ 5. Pick winner, apply recommended_edits, save as draft
397
+ 6. Winner enters standard quality-gate below
398
+
399
+ **When to use:** For the first line of each atomized social post
400
+
401
+ ---
402
+
403
+ ## FINAL STEP: Quality Gate (MANDATORY — DO NOT SKIP)
404
+
405
+ Before presenting ANY draft to Jairo, run the quality gate:
406
+
407
+ 1. Save your complete draft to a file (e.g., `content/drafts/{slug}.md` or a temp file)
408
+ 2. Spawn a `build` subagent using the Task tool with the quality-gate prompt from `Skill: quality-gate`
409
+ 3. Pass these inputs to the subagent:
410
+ - **draft_path**: absolute path to the saved draft
411
+ - **mode**: `social`
412
+ - **original_prompt**: the writing prompt that started this task
413
+ - **attempt**: current attempt number (start at 1)
414
+ 4. Parse the JSON result from the subagent
415
+ 5. If FAIL and attempt < 3:
416
+ - Rewrite the draft addressing the specific `rewrite_instructions` from the quality gate
417
+ - Save the new draft (overwrite or new file)
418
+ - Spawn another subagent with attempt + 1
419
+ 6. If FAIL and attempt = 3:
420
+ - Present to Jairo with all score reports attached
421
+ - Say: "Couldn't pass quality gate after 3 attempts. Here's what's wrong and what I tried to fix."
422
+ 7. If PASS:
423
+ - Present to Jairo as normal (do NOT show scores — they're internal)
424
+ 8. NEVER present a draft that hasn't passed quality gate (except after 3 failed attempts)