@jairodri/huckleberry-cli 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) hide show
  1. package/README.md +85 -0
  2. package/agents/cos.json +2 -5
  3. package/agents/hermes/AGENTS.md +25 -49
  4. package/agents/hermes/fix-kimaki/SKILL.md +19 -92
  5. package/agents/hermes/hermes-fixer.md +44 -74
  6. package/agents/hermes.json +6 -18
  7. package/kanban/SKILL.md +18 -18
  8. package/kanban/package.json +1 -1
  9. package/kanban/src/dispatcher.mjs +1 -1
  10. package/kanban/templates/blog-social-campaign.yaml +6 -2
  11. package/kanban/templates/social-campaign.yaml +9 -4
  12. package/mcp/jev-calibration.mjs +335 -0
  13. package/mcp/jev-client.mjs +119 -0
  14. package/mcp/jev-thresholds.json +27 -0
  15. package/package.json +13 -9
  16. package/scripts/doctor-watchdog.sh +73 -0
  17. package/scripts/install-services.sh +34 -27
  18. package/scripts/self-improve-weekly.sh +34 -0
  19. package/scripts/sync-skills.mjs +121 -0
  20. package/skills/ab-test-setup/SKILL.md +266 -0
  21. package/skills/ab-test-setup/evals/evals.json +105 -0
  22. package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
  23. package/skills/ab-test-setup/references/test-templates.md +277 -0
  24. package/skills/agent-reach/SKILL.md +132 -0
  25. package/skills/agent-reach/references/career.md +29 -0
  26. package/skills/agent-reach/references/dev.md +62 -0
  27. package/skills/agent-reach/references/search.md +33 -0
  28. package/skills/agent-reach/references/social.md +232 -0
  29. package/skills/agent-reach/references/video.md +130 -0
  30. package/skills/agent-reach/references/web.md +50 -0
  31. package/skills/ai-agent-seo/SKILL.md +450 -0
  32. package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
  33. package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
  34. package/skills/ai-consensus-builder/SKILL.md +324 -0
  35. package/skills/ai-seo/SKILL.md +399 -0
  36. package/skills/ai-seo/evals/evals.json +90 -0
  37. package/skills/ai-seo/references/content-patterns.md +284 -0
  38. package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
  39. package/skills/ai-visibility-audit/SKILL.md +322 -0
  40. package/skills/analytics-tracking/SKILL.md +309 -0
  41. package/skills/analytics-tracking/evals/evals.json +90 -0
  42. package/skills/analytics-tracking/references/event-library.md +260 -0
  43. package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
  44. package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
  45. package/skills/article-generator/SKILL.md +216 -0
  46. package/skills/auto-indexing/SKILL.md +179 -0
  47. package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
  48. package/skills/auto-skill/SKILL.md +151 -0
  49. package/skills/auto-skill/correction-queue.js +102 -0
  50. package/skills/auto-skill/dedup.js +97 -0
  51. package/skills/auto-skill/skill-router.js +224 -0
  52. package/skills/autoresearch/SKILL.md +334 -0
  53. package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
  54. package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
  55. package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
  56. package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
  57. package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
  58. package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
  59. package/skills/autoresearch/eval-guide.md +121 -0
  60. package/skills/b2b-cold-outreach/SKILL.md +322 -0
  61. package/skills/birdclaw/SKILL.md +82 -0
  62. package/skills/brainstorm/SKILL.md +168 -0
  63. package/skills/brand-kit-playground/SKILL.md +312 -0
  64. package/skills/brand-kit-playground/references/html-architecture.md +316 -0
  65. package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
  66. package/skills/brand-voice/SKILL.md +223 -0
  67. package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
  68. package/skills/brand-voice/references/voice-modes.md +1158 -0
  69. package/skills/business-advisory-council/README.md +136 -0
  70. package/skills/business-advisory-council/SKILL.md +94 -0
  71. package/skills/business-advisory-council/business-advisory-council.py +492 -0
  72. package/skills/business-advisory-council/discord-components-decision.json +8 -0
  73. package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
  74. package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
  75. package/skills/churn-prevention/SKILL.md +305 -0
  76. package/skills/churn-prevention/evals/evals.json +93 -0
  77. package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
  78. package/skills/churn-prevention/references/dunning-playbook.md +408 -0
  79. package/skills/claw-compactor/LICENSE +21 -0
  80. package/skills/claw-compactor/README.md +459 -0
  81. package/skills/claw-compactor/SKILL.md +329 -0
  82. package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
  83. package/skills/claw-compactor/benchmark/__init__.py +1 -0
  84. package/skills/claw-compactor/benchmark/compressors.py +520 -0
  85. package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
  86. package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
  87. package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
  88. package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
  89. package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
  90. package/skills/claw-compactor/benchmark/evaluate.py +278 -0
  91. package/skills/claw-compactor/benchmark/report.py +241 -0
  92. package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
  93. package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
  94. package/skills/claw-compactor/engram.yaml +49 -0
  95. package/skills/claw-compactor/proxy/README.md +87 -0
  96. package/skills/claw-compactor/proxy/dashboard.html +804 -0
  97. package/skills/claw-compactor/proxy/event-log.mjs +213 -0
  98. package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
  99. package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
  100. package/skills/claw-compactor/proxy/package-lock.json +125 -0
  101. package/skills/claw-compactor/proxy/package.json +15 -0
  102. package/skills/claw-compactor/proxy/portal.html +360 -0
  103. package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
  104. package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
  105. package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
  106. package/skills/claw-compactor/proxy/retry.mjs +182 -0
  107. package/skills/claw-compactor/proxy/server.mjs +2100 -0
  108. package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
  109. package/skills/claw-compactor/proxy/start.sh +23 -0
  110. package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
  111. package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
  112. package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
  113. package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
  114. package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
  115. package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
  116. package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
  117. package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
  118. package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
  119. package/skills/claw-compactor/pyproject.toml +26 -0
  120. package/skills/claw-compactor/references/README.md +44 -0
  121. package/skills/claw-compactor/references/architecture.md +197 -0
  122. package/skills/claw-compactor/references/benchmarks.md +94 -0
  123. package/skills/claw-compactor/references/compression-prompts.md +39 -0
  124. package/skills/claw-compactor/references/compression-techniques.md +219 -0
  125. package/skills/claw-compactor/references/testing.md +160 -0
  126. package/skills/claw-compactor/scripts/audit_memory.py +216 -0
  127. package/skills/claw-compactor/scripts/compress_memory.py +236 -0
  128. package/skills/claw-compactor/scripts/compressed_context.py +280 -0
  129. package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
  130. package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
  131. package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
  132. package/skills/claw-compactor/scripts/engram_auto.py +695 -0
  133. package/skills/claw-compactor/scripts/engram_cli.py +474 -0
  134. package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
  135. package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
  136. package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
  137. package/skills/claw-compactor/scripts/lib/config.py +289 -0
  138. package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
  139. package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
  140. package/skills/claw-compactor/scripts/lib/engram.py +793 -0
  141. package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
  142. package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
  143. package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
  144. package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
  145. package/skills/claw-compactor/scripts/lib/rle.py +165 -0
  146. package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
  147. package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
  148. package/skills/claw-compactor/scripts/mem_compress.py +788 -0
  149. package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
  150. package/skills/claw-compactor/tests/__init__.py +0 -0
  151. package/skills/claw-compactor/tests/conftest.py +94 -0
  152. package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
  153. package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
  154. package/skills/claw-compactor/tests/test_benchmark.py +122 -0
  155. package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
  156. package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
  157. package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
  158. package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
  159. package/skills/claw-compactor/tests/test_config.py +54 -0
  160. package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
  161. package/skills/claw-compactor/tests/test_dictionary.py +327 -0
  162. package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
  163. package/skills/claw-compactor/tests/test_engram.py +1091 -0
  164. package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
  165. package/skills/claw-compactor/tests/test_error_handling.py +194 -0
  166. package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
  167. package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
  168. package/skills/claw-compactor/tests/test_integration.py +249 -0
  169. package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
  170. package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
  171. package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
  172. package/skills/claw-compactor/tests/test_main_entry.py +176 -0
  173. package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
  174. package/skills/claw-compactor/tests/test_new_features.py +77 -0
  175. package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
  176. package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
  177. package/skills/claw-compactor/tests/test_performance.py +172 -0
  178. package/skills/claw-compactor/tests/test_pipeline.py +109 -0
  179. package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
  180. package/skills/claw-compactor/tests/test_rle.py +114 -0
  181. package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
  182. package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
  183. package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
  184. package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
  185. package/skills/claw-compactor/tests/test_token_economics.py +237 -0
  186. package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
  187. package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
  188. package/skills/claw-compactor/tests/test_tokens.py +27 -0
  189. package/skills/cmo/CHANGELOG.md +61 -0
  190. package/skills/cmo/SKILL.md +500 -0
  191. package/skills/cmo/references/ai-slop-patterns.md +56 -0
  192. package/skills/cmo/references/analytics-guide.md +152 -0
  193. package/skills/cmo/references/ideas-library.md +197 -0
  194. package/skills/cmo/rules/brand-file-map.md +198 -0
  195. package/skills/cmo/rules/brand-memory.md +158 -0
  196. package/skills/cmo/rules/cli-runtime-index.md +95 -0
  197. package/skills/cmo/rules/command-reference.md +167 -0
  198. package/skills/cmo/rules/communication.md +15 -0
  199. package/skills/cmo/rules/context-switch.md +101 -0
  200. package/skills/cmo/rules/ecosystem.md +125 -0
  201. package/skills/cmo/rules/error-recovery.md +98 -0
  202. package/skills/cmo/rules/learning-loop.md +170 -0
  203. package/skills/cmo/rules/monorepo.md +78 -0
  204. package/skills/cmo/rules/output-format.md +124 -0
  205. package/skills/cmo/rules/persona.md +15 -0
  206. package/skills/cmo/rules/playbooks.md +327 -0
  207. package/skills/cmo/rules/progressive-enhancement.md +231 -0
  208. package/skills/cmo/rules/publish-index.md +106 -0
  209. package/skills/cmo/rules/quality-gate.md +90 -0
  210. package/skills/cmo/rules/recency-grounding.md +124 -0
  211. package/skills/cmo/rules/safety.md +80 -0
  212. package/skills/cmo/rules/studio-api-index.md +138 -0
  213. package/skills/cmo/rules/studio-integration.md +147 -0
  214. package/skills/cmo/rules/sub-agents.md +167 -0
  215. package/skills/cold-email/SKILL.md +240 -0
  216. package/skills/cold-email/evals/evals.json +94 -0
  217. package/skills/cold-email/references/benchmarks.md +83 -0
  218. package/skills/cold-email/references/follow-up-sequences.md +81 -0
  219. package/skills/cold-email/references/frameworks.md +90 -0
  220. package/skills/cold-email/references/personalization.md +79 -0
  221. package/skills/cold-email/references/subject-lines.md +53 -0
  222. package/skills/competitive-intel/SKILL.md +433 -0
  223. package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
  224. package/skills/competitor-alternatives/SKILL.md +362 -0
  225. package/skills/competitor-alternatives/evals/evals.json +93 -0
  226. package/skills/competitor-alternatives/references/content-architecture.md +271 -0
  227. package/skills/competitor-alternatives/references/templates.md +223 -0
  228. package/skills/concreteness-fixer/SKILL.md +483 -0
  229. package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
  230. package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
  231. package/skills/content-atomizer/SKILL.md +424 -0
  232. package/skills/content-atomizer/references/hook-strategies.md +56 -0
  233. package/skills/content-atomizer/references/platform-specs.md +118 -0
  234. package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
  235. package/skills/content-atomizer/references/platforms/instagram.md +77 -0
  236. package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
  237. package/skills/content-atomizer/references/platforms/reddit.md +73 -0
  238. package/skills/content-atomizer/references/platforms/threads.md +64 -0
  239. package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
  240. package/skills/content-atomizer/references/platforms/twitter.md +123 -0
  241. package/skills/content-atomizer/references/platforms/youtube.md +56 -0
  242. package/skills/content-atomizer/references/tweet-patterns.md +40 -0
  243. package/skills/content-repost-manager/SKILL.md +245 -0
  244. package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
  245. package/skills/context-recovery/.clawdhub/origin.json +7 -0
  246. package/skills/context-recovery/SKILL.md +198 -0
  247. package/skills/context-recovery/_meta.json +6 -0
  248. package/skills/conversion-flow-cro/SKILL.md +248 -0
  249. package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
  250. package/skills/copy-editing/SKILL.md +474 -0
  251. package/skills/copy-editing/evals/evals.json +89 -0
  252. package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
  253. package/skills/copywriting/SKILL.md +349 -0
  254. package/skills/copywriting/evals/evals.json +111 -0
  255. package/skills/copywriting/references/awareness-level-guide.md +227 -0
  256. package/skills/copywriting/references/copy-frameworks.md +389 -0
  257. package/skills/copywriting/references/natural-transitions.md +272 -0
  258. package/skills/creative/SKILL.md +365 -0
  259. package/skills/creative/modes/ad-creative.md +1748 -0
  260. package/skills/creative/modes/product-photo.md +1520 -0
  261. package/skills/creative/modes/product-video.md +1657 -0
  262. package/skills/creative/modes/social-graphics.md +1511 -0
  263. package/skills/creative/modes/talking-head.md +2208 -0
  264. package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
  265. package/skills/deep-serp-article/SKILL.md +677 -0
  266. package/skills/deep-serp-article/SKILL.md.bak +530 -0
  267. package/skills/earned-media/SKILL.md +260 -0
  268. package/skills/email-sequences/SKILL.md +446 -0
  269. package/skills/email-sequences/references/sequence-templates.md +1217 -0
  270. package/skills/firecrawl/.skill-meta.json +13 -0
  271. package/skills/firecrawl/SKILL.md +154 -0
  272. package/skills/firecrawl/rules/install.md +63 -0
  273. package/skills/firecrawl/rules/security.md +26 -0
  274. package/skills/form-cro/SKILL.md +429 -0
  275. package/skills/form-cro/evals/evals.json +90 -0
  276. package/skills/free-tool-strategy/SKILL.md +325 -0
  277. package/skills/free-tool-strategy/evals/evals.json +90 -0
  278. package/skills/free-tool-strategy/references/tool-types.md +253 -0
  279. package/skills/frontend-slides/SKILL.md +248 -0
  280. package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  281. package/skills/frontend-slides/animation-patterns.md +110 -0
  282. package/skills/frontend-slides/html-template.md +347 -0
  283. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  284. package/skills/frontend-slides/viewport-base.css +153 -0
  285. package/skills/guardrail-framework/SKILL.md +319 -0
  286. package/skills/hook-generator/SKILL.md +438 -0
  287. package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
  288. package/skills/hook-generator/database/instagram-hooks.json +591 -0
  289. package/skills/hook-generator/database/linkedin-hooks.json +502 -0
  290. package/skills/hook-generator/database/medium-hooks.json +181 -0
  291. package/skills/hook-generator/database/tiktok-hooks.json +337 -0
  292. package/skills/hook-generator/database/twitter-hooks.json +567 -0
  293. package/skills/hook-generator/database/youtube-hooks.json +275 -0
  294. package/skills/hook-generator/package-lock.json +24 -0
  295. package/skills/hook-generator/package.json +5 -0
  296. package/skills/hook-generator/references/hook-generation-system.md +257 -0
  297. package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
  298. package/skills/hook-generator/references/hooks-library.md +128 -0
  299. package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
  300. package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
  301. package/skills/hook-generator/scripts/generate-hooks.js +225 -0
  302. package/skills/hook-generator/scripts/generate.sh +36 -0
  303. package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
  304. package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
  305. package/skills/humanizer/README.md +120 -0
  306. package/skills/humanizer/SKILL.md +699 -0
  307. package/skills/image-gen/SKILL.md +277 -0
  308. package/skills/image-gen/references/prompt-patterns.md +114 -0
  309. package/skills/image-gen/references/visual-metaphors.md +51 -0
  310. package/skills/impeccable/SKILL.md +86 -0
  311. package/skills/impeccable/reference/adapt.md +312 -0
  312. package/skills/impeccable/reference/adapt.native.md +58 -0
  313. package/skills/impeccable/reference/android.md +40 -0
  314. package/skills/impeccable/reference/animate.md +86 -0
  315. package/skills/impeccable/reference/audit.md +136 -0
  316. package/skills/impeccable/reference/audit.native.md +139 -0
  317. package/skills/impeccable/reference/bolder.md +31 -0
  318. package/skills/impeccable/reference/clarify.md +94 -0
  319. package/skills/impeccable/reference/colorize.md +86 -0
  320. package/skills/impeccable/reference/craft-floor.md +42 -0
  321. package/skills/impeccable/reference/craft.md +5 -0
  322. package/skills/impeccable/reference/critique.md +788 -0
  323. package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
  324. package/skills/impeccable/reference/degraded/documenter.md +24 -0
  325. package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
  326. package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  327. package/skills/impeccable/reference/delight.md +70 -0
  328. package/skills/impeccable/reference/distill.md +111 -0
  329. package/skills/impeccable/reference/doctor.md +53 -0
  330. package/skills/impeccable/reference/document.md +416 -0
  331. package/skills/impeccable/reference/extract.md +69 -0
  332. package/skills/impeccable/reference/harden.md +336 -0
  333. package/skills/impeccable/reference/hooks.md +105 -0
  334. package/skills/impeccable/reference/init.md +125 -0
  335. package/skills/impeccable/reference/ios.md +45 -0
  336. package/skills/impeccable/reference/layout.md +84 -0
  337. package/skills/impeccable/reference/live-setup.md +102 -0
  338. package/skills/impeccable/reference/live.md +323 -0
  339. package/skills/impeccable/reference/new-work.md +110 -0
  340. package/skills/impeccable/reference/onboard.md +234 -0
  341. package/skills/impeccable/reference/operate.md +61 -0
  342. package/skills/impeccable/reference/optimize.md +258 -0
  343. package/skills/impeccable/reference/overdrive.md +127 -0
  344. package/skills/impeccable/reference/polish.md +97 -0
  345. package/skills/impeccable/reference/quieter.md +99 -0
  346. package/skills/impeccable/reference/routing.md +18 -0
  347. package/skills/impeccable/reference/shape.md +59 -0
  348. package/skills/impeccable/reference/typeset.md +80 -0
  349. package/skills/impeccable/reference/visualize.md +49 -0
  350. package/skills/impeccable/scripts/command-metadata.json +94 -0
  351. package/skills/impeccable/scripts/concept-seed.mjs +558 -0
  352. package/skills/impeccable/scripts/context-signals.mjs +334 -0
  353. package/skills/impeccable/scripts/context.mjs +1467 -0
  354. package/skills/impeccable/scripts/critique-storage.mjs +213 -0
  355. package/skills/impeccable/scripts/detect-csp.mjs +198 -0
  356. package/skills/impeccable/scripts/detect.mjs +21 -0
  357. package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
  358. package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
  359. package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
  360. package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
  361. package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
  362. package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
  363. package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
  364. package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
  365. package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
  366. package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
  367. package/skills/impeccable/scripts/detector/findings.mjs +18 -0
  368. package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
  369. package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
  370. package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
  371. package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
  372. package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
  373. package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
  374. package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  375. package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
  376. package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
  377. package/skills/impeccable/scripts/doctor.mjs +336 -0
  378. package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
  379. package/skills/impeccable/scripts/generate-image.mjs +240 -0
  380. package/skills/impeccable/scripts/hook-admin.mjs +801 -0
  381. package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
  382. package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
  383. package/skills/impeccable/scripts/hook.mjs +78 -0
  384. package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  385. package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
  386. package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
  387. package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
  388. package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
  389. package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
  390. package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
  391. package/skills/impeccable/scripts/lib/provider.mjs +5 -0
  392. package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
  393. package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
  394. package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  395. package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  396. package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  397. package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
  398. package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  399. package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  400. package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
  401. package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
  402. package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
  403. package/skills/impeccable/scripts/live/completion.mjs +28 -0
  404. package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
  405. package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
  406. package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
  407. package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
  408. package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
  409. package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
  410. package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
  411. package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
  412. package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
  413. package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
  414. package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
  415. package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
  416. package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
  417. package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  418. package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
  419. package/skills/impeccable/scripts/live/instructions.mjs +142 -0
  420. package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
  421. package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
  422. package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
  423. package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  424. package/skills/impeccable/scripts/live/roots.mjs +508 -0
  425. package/skills/impeccable/scripts/live/session-store.mjs +563 -0
  426. package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  427. package/skills/impeccable/scripts/live/source-search.mjs +105 -0
  428. package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
  429. package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
  430. package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
  431. package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  432. package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
  433. package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
  434. package/skills/impeccable/scripts/live-accept.mjs +954 -0
  435. package/skills/impeccable/scripts/live-browser-dom.js +146 -0
  436. package/skills/impeccable/scripts/live-browser-session.js +123 -0
  437. package/skills/impeccable/scripts/live-browser.js +12520 -0
  438. package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
  439. package/skills/impeccable/scripts/live-complete.mjs +107 -0
  440. package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
  441. package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
  442. package/skills/impeccable/scripts/live-inject.mjs +503 -0
  443. package/skills/impeccable/scripts/live-insert.mjs +292 -0
  444. package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
  445. package/skills/impeccable/scripts/live-poll.mjs +429 -0
  446. package/skills/impeccable/scripts/live-resume.mjs +123 -0
  447. package/skills/impeccable/scripts/live-server.mjs +1669 -0
  448. package/skills/impeccable/scripts/live-status.mjs +71 -0
  449. package/skills/impeccable/scripts/live-target.mjs +30 -0
  450. package/skills/impeccable/scripts/live-wrap.mjs +927 -0
  451. package/skills/impeccable/scripts/live.mjs +359 -0
  452. package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  453. package/skills/impeccable/scripts/palette.mjs +628 -0
  454. package/skills/impeccable/scripts/pin.mjs +221 -0
  455. package/skills/impeccable/scripts/serve-question.mjs +932 -0
  456. package/skills/impeccable/scripts/surface-brief.mjs +74 -0
  457. package/skills/inkstone-admin/SKILL.md +66 -0
  458. package/skills/jev-hook-gate/SKILL.md +111 -0
  459. package/skills/keyword-research/SKILL.md +503 -0
  460. package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
  461. package/skills/keyword-research/references/keyword-examples.md +769 -0
  462. package/skills/landing-page-architect/SKILL.md +585 -0
  463. package/skills/landing-page-architect/references/architecture-reference.md +32 -0
  464. package/skills/launch-strategy/SKILL.md +384 -0
  465. package/skills/launch-strategy/evals/evals.json +91 -0
  466. package/skills/launch-strategy/references/launch-checklist.md +209 -0
  467. package/skills/launch-strategy/references/launch-timeline.md +159 -0
  468. package/skills/lead-email-craft/SKILL.md +522 -0
  469. package/skills/lead-magnets/SKILL.md +310 -0
  470. package/skills/lead-magnets/references/benchmarks.md +129 -0
  471. package/skills/lead-magnets/references/format-guide.md +196 -0
  472. package/skills/link-building-seo/SKILL.md +210 -0
  473. package/skills/lint-report.txt +1 -0
  474. package/skills/manifest.json +129 -0
  475. package/skills/marketing-demo/SKILL.md +249 -0
  476. package/skills/marketing-demo/references/remotion-examples.md +281 -0
  477. package/skills/marketing-ideas/SKILL.md +167 -0
  478. package/skills/marketing-ideas/evals/evals.json +90 -0
  479. package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
  480. package/skills/marketing-psychology/SKILL.md +374 -0
  481. package/skills/marketing-psychology/evals/evals.json +88 -0
  482. package/skills/marketing-psychology/references/case-studies.md +148 -0
  483. package/skills/narrative-research-article/SKILL.md +469 -0
  484. package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
  485. package/skills/notebooklm/SKILL.md +674 -0
  486. package/skills/off-page-seo/SKILL.md +219 -0
  487. package/skills/onboarding-cro/SKILL.md +220 -0
  488. package/skills/onboarding-cro/evals/evals.json +92 -0
  489. package/skills/onboarding-cro/references/experiments.md +258 -0
  490. package/skills/original-research/SKILL.md +388 -0
  491. package/skills/page-cro/SKILL.md +269 -0
  492. package/skills/page-cro/references/cro-benchmarks.md +140 -0
  493. package/skills/paper-marketing/SKILL.md +448 -0
  494. package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
  495. package/skills/paper-marketing/references/brand-system-template.md +120 -0
  496. package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
  497. package/skills/paper-marketing/references/platform-conventions.md +43 -0
  498. package/skills/paywall-upgrade-cro/SKILL.md +227 -0
  499. package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
  500. package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
  501. package/skills/platform-formatting/SKILL.md +51 -0
  502. package/skills/popup-cro/SKILL.md +454 -0
  503. package/skills/popup-cro/evals/evals.json +94 -0
  504. package/skills/positioning-angles/SKILL.md +524 -0
  505. package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
  506. package/skills/positioning-angles/references/angle-frameworks.md +187 -0
  507. package/skills/positioning-angles/references/dunford-positioning.md +135 -0
  508. package/skills/positioning-angles/references/hormozi-offer.md +247 -0
  509. package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
  510. package/skills/positioning-angles/references/unique-mechanism.md +162 -0
  511. package/skills/pricing-strategy/SKILL.md +346 -0
  512. package/skills/pricing-strategy/evals/evals.json +90 -0
  513. package/skills/pricing-strategy/references/research-methods.md +152 -0
  514. package/skills/pricing-strategy/references/tier-structure.md +307 -0
  515. package/skills/programmatic-seo/SKILL.md +238 -0
  516. package/skills/programmatic-seo/evals/evals.json +94 -0
  517. package/skills/programmatic-seo/references/playbooks.md +308 -0
  518. package/skills/project-rag/SKILL.md +127 -0
  519. package/skills/quality-gate/SKILL.md +519 -0
  520. package/skills/quality-gate/judge-personas/buyer.md +47 -0
  521. package/skills/quality-gate/judge-personas/expert.md +47 -0
  522. package/skills/quality-gate/judge-personas/outsider.md +47 -0
  523. package/skills/quality-gate/judge-personas/scanner.md +41 -0
  524. package/skills/quality-gate/judge-personas/skeptic.md +40 -0
  525. package/skills/referral-program/SKILL.md +290 -0
  526. package/skills/referral-program/evals/evals.json +89 -0
  527. package/skills/referral-program/references/affiliate-programs.md +163 -0
  528. package/skills/referral-program/references/program-examples.md +143 -0
  529. package/skills/review-sites/SKILL.md +279 -0
  530. package/skills/revops/SKILL.md +343 -0
  531. package/skills/revops/evals/evals.json +91 -0
  532. package/skills/revops/references/automation-playbooks.md +290 -0
  533. package/skills/revops/references/lifecycle-definitions.md +278 -0
  534. package/skills/revops/references/routing-rules.md +203 -0
  535. package/skills/revops/references/scoring-models.md +247 -0
  536. package/skills/saas-product-seo/SKILL.md +324 -0
  537. package/skills/sales-enablement/SKILL.md +349 -0
  538. package/skills/sales-enablement/evals/evals.json +91 -0
  539. package/skills/sales-enablement/references/deck-frameworks.md +263 -0
  540. package/skills/sales-enablement/references/demo-scripts.md +355 -0
  541. package/skills/sales-enablement/references/objection-library.md +270 -0
  542. package/skills/sales-enablement/references/one-pager-templates.md +208 -0
  543. package/skills/schema-markup/SKILL.md +179 -0
  544. package/skills/schema-markup/evals/evals.json +87 -0
  545. package/skills/schema-markup/references/schema-examples.md +398 -0
  546. package/skills/self-improve/SKILL.md +166 -0
  547. package/skills/self-improving-agent/README.md +243 -0
  548. package/skills/self-improving-agent/SKILL.md +437 -0
  549. package/skills/self-improving-agent/scripts/__init__.py +16 -0
  550. package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
  551. package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
  552. package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
  553. package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
  554. package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
  555. package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
  556. package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
  557. package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
  558. package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
  559. package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
  560. package/skills/send-email/SKILL.md +426 -0
  561. package/skills/send-email/references/batch-email-examples.md +807 -0
  562. package/skills/send-email/references/best-practices.md +453 -0
  563. package/skills/send-email/references/installation.md +123 -0
  564. package/skills/send-email/references/single-email-examples.md +470 -0
  565. package/skills/send-email/references/webhooks.md +221 -0
  566. package/skills/seo-audit/SKILL.md +362 -0
  567. package/skills/seo-audit/references/ai-writing-detection.md +200 -0
  568. package/skills/seo-audit/references/architecture-patterns.md +271 -0
  569. package/skills/seo-audit/references/schema-templates.md +427 -0
  570. package/skills/seo-content/SKILL.md +510 -0
  571. package/skills/seo-content/references/anti-ai-detection.md +184 -0
  572. package/skills/seo-content/references/content-structures.md +148 -0
  573. package/skills/seo-content/references/eeat-examples.md +235 -0
  574. package/skills/seo-content/references/on-page-seo.md +261 -0
  575. package/skills/seo-content/references/pseo-playbooks.md +226 -0
  576. package/skills/seo-content/references/schema-templates.md +104 -0
  577. package/skills/seo-content/references/serp-analysis-format.md +151 -0
  578. package/skills/seo-machine/SKILL.md +331 -0
  579. package/skills/seo-machine/assets/brand-template.md +73 -0
  580. package/skills/seo-machine/assets/link-inventory-template.md +74 -0
  581. package/skills/seo-machine/assets/roadmap-template.md +184 -0
  582. package/skills/seo-machine/references/api-stack-recipes.md +230 -0
  583. package/skills/seo-machine/references/exa-recipes.md +260 -0
  584. package/skills/seo-machine/references/manual-research.md +73 -0
  585. package/skills/seo-machine/references/methodology.md +87 -0
  586. package/skills/seo-machine/references/off-page.md +123 -0
  587. package/skills/seo-machine/references/patterns/alternatives.md +176 -0
  588. package/skills/seo-machine/references/patterns/compare.md +105 -0
  589. package/skills/seo-machine/references/patterns/playbooks.md +106 -0
  590. package/skills/seo-machine/references/patterns/use-case.md +109 -0
  591. package/skills/seo-machine/references/quality-bars.md +99 -0
  592. package/skills/seo-machine/references/stacks/astro.md +156 -0
  593. package/skills/seo-machine/references/stacks/detection.md +61 -0
  594. package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
  595. package/skills/seo-machine/references/stacks/nextjs.md +108 -0
  596. package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
  597. package/skills/seo-machine/references/striking-distance.md +116 -0
  598. package/skills/seo-machine/references/technical-audit.md +153 -0
  599. package/skills/seo-machine/scripts/link_audit.py +265 -0
  600. package/skills/seo-machine/scripts/tech_audit.py +221 -0
  601. package/skills/seo-machine/scripts/word_count.py +154 -0
  602. package/skills/sharp-thesis-validator/SKILL.md +393 -0
  603. package/skills/sharp-thesis-validator/examples.md +186 -0
  604. package/skills/signup-flow-cro/SKILL.md +359 -0
  605. package/skills/signup-flow-cro/evals/evals.json +88 -0
  606. package/skills/site-architecture/SKILL.md +357 -0
  607. package/skills/site-architecture/evals/evals.json +88 -0
  608. package/skills/site-architecture/references/mermaid-templates.md +216 -0
  609. package/skills/site-architecture/references/navigation-patterns.md +305 -0
  610. package/skills/site-architecture/references/site-type-templates.md +293 -0
  611. package/skills/skill-self-improvement/SKILL.md +151 -0
  612. package/skills/slideshow-script/SKILL.md +274 -0
  613. package/skills/slideshow-script/references/content-spec-schema.md +77 -0
  614. package/skills/slideshow-script/references/frameworks.md +84 -0
  615. package/skills/slideshow-script/references/paips-framework.md +37 -0
  616. package/skills/social-campaign/SKILL.md +419 -0
  617. package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
  618. package/skills/social-content/SKILL.md +359 -0
  619. package/skills/social-content/evals/evals.json +92 -0
  620. package/skills/social-content/references/platforms.md +170 -0
  621. package/skills/social-content/references/post-templates.md +177 -0
  622. package/skills/social-content/references/reverse-engineering.md +195 -0
  623. package/skills/social-worker/SKILL.md +204 -0
  624. package/skills/startup-launcher/SKILL.md +252 -0
  625. package/skills/startup-launcher/references/file-router.md +64 -0
  626. package/skills/startup-launcher/references/platform-matrix.md +65 -0
  627. package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
  628. package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
  629. package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
  630. package/skills/startup-launcher/references/platforms/betalist.md +98 -0
  631. package/skills/startup-launcher/references/platforms/capterra.md +276 -0
  632. package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
  633. package/skills/startup-launcher/references/platforms/dealify.md +291 -0
  634. package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
  635. package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
  636. package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
  637. package/skills/startup-launcher/references/platforms/devpost.md +448 -0
  638. package/skills/startup-launcher/references/platforms/fazier.md +56 -0
  639. package/skills/startup-launcher/references/platforms/firsto.md +489 -0
  640. package/skills/startup-launcher/references/platforms/g2.md +226 -0
  641. package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
  642. package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
  643. package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
  644. package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
  645. package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
  646. package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
  647. package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
  648. package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
  649. package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
  650. package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
  651. package/skills/startup-launcher/references/platforms/launchit.md +574 -0
  652. package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
  653. package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
  654. package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
  655. package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
  656. package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
  657. package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
  658. package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
  659. package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
  660. package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
  661. package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
  662. package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
  663. package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
  664. package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
  665. package/skills/startup-launcher/references/platforms/saashub.md +205 -0
  666. package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
  667. package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
  668. package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
  669. package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
  670. package/skills/startup-launcher/references/platforms/selected.md +925 -0
  671. package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
  672. package/skills/startup-launcher/references/platforms/softonic.md +240 -0
  673. package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
  674. package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
  675. package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
  676. package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
  677. package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
  678. package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
  679. package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
  680. package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
  681. package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
  682. package/skills/startup-launcher/references/platforms/uneed.md +57 -0
  683. package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
  684. package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
  685. package/skills/startup-launcher/references/templates/product-brief.md +98 -0
  686. package/skills/summarize/.skill-meta.json +13 -0
  687. package/skills/summarize/SKILL.md +170 -0
  688. package/skills/summarize/rules/install.md +157 -0
  689. package/skills/summarize/rules/usage.md +207 -0
  690. package/skills/topical-authority/SKILL.md +307 -0
  691. package/skills/topical-authority/references/jake-ward-framework.md +201 -0
  692. package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
  693. package/skills/topical-authority/scripts/orchestrator.js +367 -0
  694. package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
  695. package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
  696. package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
  697. package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
  698. package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
  699. package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
  700. package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
  701. package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
  702. package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
  703. package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
  704. package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
  705. package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
  706. package/skills/visual-style/SKILL.md +199 -0
  707. package/skills/voice-brand-alignment/SKILL.md +70 -0
  708. package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
  709. package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
  710. package/skills/voice-extraction/SKILL.md +234 -0
  711. package/skills/voice-extraction/references/extraction-prompt.md +155 -0
  712. package/skills/voice-extraction/references/voice-dna-template.md +168 -0
  713. package/skills/voice-extraction/references/voice-elements.md +259 -0
  714. package/skills/voice-extraction/scripts/build-corpus.js +120 -0
  715. package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
  716. package/skills/warm-outbound/SKILL.md +299 -0
  717. package/skills/warm-outbound/templates/warm-message.md +39 -0
  718. package/skills/weekly-newsletter-digest/SKILL.md +78 -0
  719. package/skills/x-playwriter/SKILL.md +428 -0
  720. package/skills/x-playwriter/scripts/x-browser.js +185 -0
  721. package/skills/x-post-generator-openclaw/SKILL.md +138 -0
  722. package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
  723. package/skills/x-posting-playwriter/SKILL.md +203 -0
  724. package/skills/x-research/SKILL.md +129 -0
  725. package/skills/x-research/x-research.sh +85 -0
  726. package/skills/youtube-summarize/SKILL.md +90 -0
  727. package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
  728. package/src/cli.js +347 -172
  729. package/src/harness/deepseek-adapter.js +102 -0
  730. package/src/harness/deepseek.js +225 -0
  731. package/src/harness/opencode-adapter.js +174 -0
  732. package/src/harness/pi-adapter.js +172 -0
  733. package/src/harness/registry.js +121 -0
  734. package/src/harness/telemetry.js +102 -0
  735. package/src/harness/types.js +165 -0
  736. package/src/interview.js +36 -4
  737. package/src/postinstall.js +10 -12
  738. package/templates/AGENTS.md +17 -17
  739. package/templates/ORG.md +1 -1
  740. package/templates/TOOLS.md +7 -2
  741. package/templates/opencode.json +26 -29
  742. package/wiki/doctor.md +54 -0
  743. package/wiki/inkstone.md +4 -4
  744. package/wiki/opencode.md +3 -3
  745. package/skills/curated.txt +0 -68
@@ -0,0 +1,90 @@
1
+ # Quality Gate — AI Slop Audit
2
+
3
+ After ANY content skill produces text output (copy, emails, social posts, SEO articles, lead magnets, landing pages), run this quality gate before presenting to the user.
4
+
5
+ ## When to Apply
6
+
7
+ Apply after these skills produce output:
8
+ - `direct-response-copy` (all modes: generate, edit, cold email)
9
+ - `seo-content` (single article and programmatic)
10
+ - `email-sequences` (all sequence types)
11
+ - `content-atomizer` (all platform variants)
12
+ - `newsletter` (editorial content)
13
+ - `lead-magnet` (all written sections)
14
+ - `social-campaign` (Phase 3 is this audit)
15
+ - `competitor-alternatives` (comparison copy)
16
+
17
+ Do NOT apply to:
18
+ - Research output (audience profiles, competitive intel, keyword plans)
19
+ - Strategy documents (launch plans, pricing analysis)
20
+ - Technical output (schema markup, SEO audit reports)
21
+
22
+ ## How to Audit
23
+
24
+ 1. Read the full reference: [references/ai-slop-patterns.md](../references/ai-slop-patterns.md)
25
+ 2. Read the output in sequence, not paragraph by paragraph
26
+ 3. Check structural patterns (em dashes, triple anaphora, dramatic reveals)
27
+ 4. Check transition filler ("Here's why", "Here's the thing", "The reality is")
28
+ 5. Check vocabulary tells ("landscape", "delve", "nuanced", "multifaceted")
29
+ 6. If multiple pieces: check batch-level patterns (uniform openings, identical rhythm)
30
+ 7. Fix anything that fails — rewrite, don't just flag
31
+ 8. If `brand/voice-profile.md` exists, compare output against the documented voice
32
+
33
+ ## The Rule
34
+
35
+ **If the output reads like AI wrote it, rewrite it until it doesn't.** The quality gate is not a checklist to pass — it's a standard to meet. Every piece of text that leaves /cmo should sound like a human who happens to be very good at marketing wrote it.
36
+
37
+ ---
38
+
39
+ ## Full Pre-Ship Pipeline
40
+
41
+ The AI slop audit is one of four gates. Before any content ships (landing page goes live, email sequence triggers, posts schedule, article publishes), run them in this order:
42
+
43
+ | # | Gate | Purpose | How /cmo invokes | Fail behavior |
44
+ |---|---|---|---|---|
45
+ | 1 | `editorial-first-pass` | Structural check — hook, thesis, promise, stakes. Fastest gate; kills obvious misses early. | `/editorial-first-pass <path>` — returns pass/fail + rework recommendations. | On fail: bounce back to the content skill for a second pass. Don't proceed to gate 2. |
46
+ | 2 | `ai-check` + this AI slop audit | Line-by-line pattern detection against the full reference at `references/ai-slop-patterns.md`. | Invoked automatically by content skills in their own post-production; /cmo runs it on batches (e.g., atomizer output). | On fail: rewrite the flagged lines in place. Don't pass slop to a reviewer. |
47
+ | 3 | `mktg-content-reviewer` agent | Voice-profile consistency — does this sound like the brand documented in `brand/voice-profile.md`? | Spawn via Agent tool — see `rules/sub-agents.md` for the pattern. Returns structured score + drift report. | On fail: loop back to the content skill with the specific rewrite recommendations. |
48
+ | 4 | `mktg-seo-analyst` agent (SEO assets only) | Keyword-plan adherence — primary/secondary keywords, search intent match, on-page basics, AI search readiness. | Spawn via Agent tool. Reads `brand/keyword-plan.md` + `brand/audience.md` + `brand/competitors.md`. | On fail: loop back with keyword-gap recommendations. |
49
+
50
+ **Which gates apply to which outputs:**
51
+
52
+ | Output | Gate 1 | Gate 2 | Gate 3 | Gate 4 |
53
+ |---|---|---|---|---|
54
+ | Landing page (`direct-response-copy`) | ✓ | ✓ | ✓ | ✓ if SEO is a goal |
55
+ | Sales copy, cold email | ✓ | ✓ | ✓ | — |
56
+ | SEO article (`seo-content`) | ✓ | ✓ | ✓ | ✓ |
57
+ | Email sequence (`email-sequences`) | ✓ (per email) | ✓ | ✓ (batch) | — |
58
+ | Newsletter issue (`newsletter`) | ✓ | ✓ | ✓ | — |
59
+ | Lead magnet (`lead-magnet`) | ✓ | ✓ | ✓ | — |
60
+ | Atomized social posts (`content-atomizer`) | — (platform-native check instead) | ✓ (batch-level) | ✓ (batch) | — |
61
+ | Comparison page (`competitor-alternatives`) | ✓ | ✓ | ✓ | ✓ |
62
+ | AI-search asset (`ai-seo`) | ✓ | ✓ | ✓ | ✓ |
63
+ | Research / strategy output | — | — | — | — (no gates on research) |
64
+ | Visual assets | — (visual review happens in `visual-style` → `brand-kit-playground`) | — | — | — |
65
+
66
+ **Skipping gates is an anti-pattern.** /cmo doesn't skip gates to save time. If the user demands a skip, surface the risk first:
67
+
68
+ > *"You want to ship the landing page without the content-reviewer gate. That risks voice drift — my last review on similar content flagged 3 tone issues. OK with you?"*
69
+
70
+ The user can override. /cmo never silently bypasses.
71
+
72
+ ---
73
+
74
+ ## Named pipeline: `pre-ship-gates`
75
+
76
+ When /cmo needs to run the full gate chain on one asset:
77
+
78
+ ```
79
+ PIPELINE: pre-ship-gates
80
+ INPUT: <file path>
81
+ STEPS:
82
+ 1. /editorial-first-pass <path> → PASS required
83
+ 2. AI slop audit (this file) → rewrite in place
84
+ 3. Agent: mktg-content-reviewer → score ≥ threshold required
85
+ 4. Agent: mktg-seo-analyst → score ≥ threshold required (SEO assets only)
86
+ OUTPUT: ready-to-ship flag + final asset path
87
+ FAIL: return to the content skill with aggregated recommendations
88
+ ```
89
+
90
+ Announce the pipeline to the user before running — they see the investment up front, approve once, and let it compound.
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: cmo-recency-grounding
3
+ description: |
4
+ Teaches the CMO that LLMs are blind past their training cutoff and that
5
+ /last30days + landscape.md are the corrective lenses for recency.
6
+ ---
7
+
8
+ # Recency Grounding — You Are Blind Past Your Training Cutoff
9
+
10
+ ## The Core Problem
11
+
12
+ You are an LLM. Your knowledge has a cutoff date. Everything after that date is a black hole — you don't know what happened, what changed, what launched, what died, what got acquired, what pivoted. You will confidently state things about the market that were true 6 months ago and are wrong today. You won't know they're wrong because you can't see the gap.
13
+
14
+ This is the single biggest risk in marketing: making claims about a market that moved while you weren't looking.
15
+
16
+ ## Your Corrective Lenses
17
+
18
+ Two tools bridge the gap:
19
+
20
+ ### 1. `/last30days` — Live Research
21
+
22
+ The `/last30days` skill searches Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, Bluesky, and the web for the last 30 days of real discussion. It returns what people are *actually saying right now* — not what your training data says they said months ago.
23
+
24
+ **Invoke it by name:** `Skill: last30days` with a research query as the argument.
25
+
26
+ ### 2. `brand/landscape.md` — Cached Ground Truth
27
+
28
+ `/landscape-scan` chains `/last30days` to produce a structured ecosystem snapshot with a Claims Blacklist. This file is the cached version of recent reality — good for 14 days before it goes stale.
29
+
30
+ ## When to Ground
31
+
32
+ ### Before making ecosystem claims
33
+
34
+ Any time you're about to state something about competitors, market trends, pricing benchmarks, adoption rates, or industry shifts — ask yourself: "Do I know this from my training data, or from verified recent research?"
35
+
36
+ If the answer is training data:
37
+ 1. Check `brand/landscape.md` — is it fresh (< 14 days)?
38
+ 2. If fresh: use it. The Claims Blacklist is the hard gate.
39
+ 3. If stale or missing: tell the user. "My knowledge of the market may be outdated. Want me to run `/landscape-scan` to get a current snapshot before we proceed?"
40
+
41
+ ### Before content campaigns
42
+
43
+ Before routing to any content skill (`seo-content`, `direct-response-copy`, `email-sequences`, `social-campaign`, `content-atomizer`, `newsletter`), check:
44
+ - Does `brand/landscape.md` exist and is it fresh?
45
+ - If not: recommend running `/landscape-scan` first. One research pass grounds an entire campaign.
46
+
47
+ ### Before posting to social
48
+
49
+ Before any tweet, LinkedIn post, or social content goes live:
50
+ - Does it make a claim about the current state of something? ("The market is moving toward X", "Nobody else does Y", "Users are frustrated with Z")
51
+ - If yes: is that claim backed by landscape.md research, or are you guessing from training data?
52
+ - If guessing: flag it. "This tweet claims X. I'm not confident this is still true. Want me to quick-check with `/last30days [topic]` before posting?"
53
+
54
+ ### Before competitive positioning
55
+
56
+ Before running `/competitive-intel`, `/positioning-angles`, or `/competitor-alternatives`:
57
+ - Is `brand/landscape.md` fresh? Competitive claims are the highest-risk category for recency errors.
58
+ - If landscape.md is stale: run `/landscape-scan` first. Don't build positioning on top of stale competitive data.
59
+
60
+ ## Web Research Tool Hierarchy
61
+
62
+ When you need to look something up, use the right tool for the job:
63
+
64
+ | Need | Tool | Why |
65
+ |------|------|-----|
66
+ | Social + community signal (Reddit, X, YouTube, TikTok, HN) | `/last30days` (chains Parallel AI for web) | Engagement signals, real people talking |
67
+ | Company research, competitor lookup, finding specific sites | Exa MCP (`company-research`, `get-code-context-exa`) | Best discovery engine — finds things other search misses |
68
+ | General web queries the CMO needs answered | Exa MCP | Higher quality discovery than native WebSearch |
69
+ | Full ecosystem snapshot with Claims Blacklist | `/landscape-scan` (chains `/last30days`) | Structured ground truth for 14 days |
70
+
71
+ **Never use Claude's native WebSearch tool.** Always use Exa MCP for web queries. Exa finds things native search misses — including direct competitors, niche tools, and specific companies that generic search buries.
72
+
73
+ ## How to Use /last30days Directly
74
+
75
+ For social/community signal (not a full landscape refresh), invoke directly:
76
+
77
+ ```
78
+ Skill: last30days
79
+ Args: "[specific question about current market state]"
80
+ ```
81
+
82
+ This searches Reddit, X, YouTube, TikTok, HN, Polymarket, AND web (via Parallel AI) in one pass.
83
+
84
+ Examples:
85
+ - "What are people saying about [competitor] in the last 30 days?"
86
+ - "Is [claim from our copy] still accurate as of this month?"
87
+ - "What's the current sentiment around [technology/trend]?"
88
+
89
+ ## How to Use Exa MCP Directly
90
+
91
+ For company research, competitor discovery, or any web query the CMO needs:
92
+
93
+ - `company-research` skill — finds company info, competitors, news, financials
94
+ - `get-code-context-exa` skill — finds code examples, API docs, GitHub repos
95
+ - Exa MCP tools directly — for custom search queries with domain filtering
96
+
97
+ Examples:
98
+ - "Find competitors to [product] in the [space] market"
99
+ - "What does [company]'s pricing page say?"
100
+ - "Find GitHub repos similar to [project]"
101
+
102
+ ## The Decision Framework
103
+
104
+ ```
105
+ Am I stating something about the world outside this project?
106
+ ├── NO → proceed (internal product facts are fine)
107
+ └── YES → Is it backed by landscape.md (< 14 days old)?
108
+ ├── YES → proceed, respecting Claims Blacklist
109
+ └── NO → Is it a quick claim I can spot-check?
110
+ ├── YES → run /last30days "[claim]" inline
111
+ └── NO → recommend /landscape-scan before proceeding
112
+ ```
113
+
114
+ ## What This Looks Like in Practice
115
+
116
+ **Bad CMO behavior:** "Your competitors are [list from training data]. The market is moving toward [trend from training data]. Let's position you as [angle based on stale competitive assumptions]."
117
+
118
+ **Good CMO behavior:** "I see your landscape.md is 3 days old — good. Based on the current ecosystem snapshot, your competitors are [list from landscape.md]. The Claims Blacklist flags [specific wrong claims]. Let's position around [angle grounded in verified data]."
119
+
120
+ **Good CMO behavior (no landscape):** "Before we write competitive copy, I want to ground us in reality. My knowledge of the market may not reflect the last few months. Let me run `/landscape-scan` — it takes 2-3 minutes and will give us verified competitive data, recent market shifts, and a Claims Blacklist. Worth it?"
121
+
122
+ ## The Rule
123
+
124
+ **Never make an ecosystem claim from training data alone when `/last30days` or `landscape.md` can verify it.** The 2-minute research cost is always worth it compared to the credibility cost of a false claim that a customer can disprove with a Google search.
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: cmo-safety
3
+ description: |
4
+ Safety rules for external actions, rate limiting, and tool usage.
5
+ Prevents accidental publishing, data leaks, and SaaS dependency.
6
+ ---
7
+
8
+ # Safety Rules
9
+
10
+ ## External Actions
11
+
12
+ Any action that reaches the outside world requires `--dry-run` first.
13
+
14
+ ### Posting to social media
15
+
16
+ ```bash
17
+ # Always dry-run first
18
+ ply "Go to twitter.com and compose: {content}" --dry-run
19
+
20
+ # Only after user approves the preview
21
+ ply "Go to twitter.com and compose: {content}"
22
+ ```
23
+
24
+ ### Sending emails
25
+
26
+ ```bash
27
+ # Always dry-run first
28
+ gws send --to user@example.com --subject "..." --body "..." --dry-run
29
+
30
+ # Only after user approves
31
+ gws send --to user@example.com --subject "..." --body "..."
32
+ ```
33
+
34
+ ### Publishing content
35
+
36
+ Never publish directly. Always:
37
+ 1. Generate content to a file
38
+ 2. Show the user the preview
39
+ 3. Get explicit "publish" confirmation
40
+ 4. Execute the publish action
41
+
42
+ ## Rate Limiting
43
+
44
+ - Maximum 3 social posts per platform per session unless the user explicitly asks for more.
45
+ - Maximum 1 email blast per session. Always confirm recipient list.
46
+ - Maximum 10 pages in a single programmatic SEO batch. Review samples before scaling.
47
+
48
+ ## Agentic Tools Only
49
+
50
+ Do not reference or depend on SaaS dashboard tools. The system uses CLI-native tools only:
51
+
52
+ | Need | Tool | Not This |
53
+ |------|------|----------|
54
+ | Send email | `gws` | Mailchimp, ConvertKit, HubSpot |
55
+ | Post to social | `ply`, `playwright-cli` | Buffer, Hootsuite, Later |
56
+ | Generate video | `remotion`, `ffmpeg` | Loom, Canva Video |
57
+ | Web research | Exa MCP (primary), `firecrawl` (scraping) | Ahrefs, SEMrush, Moz, Claude native WebSearch |
58
+ | Analytics | PostHog, GA4 API | Dashboard-only tools |
59
+
60
+ If a user mentions a SaaS tool they already use, that's fine — integrate with their existing stack. But never suggest or require a new SaaS signup.
61
+
62
+ ## File Safety
63
+
64
+ - Never write outside the project directory. All paths must be relative to project root.
65
+ - Never read or write `.env` files in skill output. Reference `brand/stack.md` instead.
66
+ - Never include API keys, tokens, or credentials in generated content.
67
+ - All generated files go to `brand/`, `campaigns/`, or `marketing/` directories.
68
+
69
+ ## Brand Data Privacy
70
+
71
+ - Brand voice profiles, audience data, and competitive intel are project-private.
72
+ - Never include brand data in external API calls unless the user explicitly requests it.
73
+ - When using web research tools, search for public information only.
74
+
75
+ ## Content Safety
76
+
77
+ - Generated copy must not make false claims or unverifiable statistics.
78
+ - When using estimated data (no web research connected), prefix with `~` and note it is estimated.
79
+ - Never generate content that impersonates real people or brands.
80
+ - Flag potential legal issues (trademark, copyright) when they arise.
@@ -0,0 +1,138 @@
1
+ # Studio API Index
2
+
3
+ This is the /cmo routing index for `mktg-studio`. Runtime Studio schema wins:
4
+ if this file conflicts with `GET /api/schema`, trust the running Studio.
5
+
6
+ ## Detect And Discover
7
+
8
+ ```bash
9
+ STUDIO=${STUDIO_BASE:-http://localhost:3001}
10
+ curl -fsS -m 2 "$STUDIO/api/health" >/dev/null
11
+ curl -fsS "$STUDIO/api/schema" | jq '.routes[].path'
12
+ curl -fsS "$STUDIO/api/schema?route=/api/navigate" | jq
13
+ ```
14
+
15
+ If health is not reachable, continue in CLI-only mode. Studio is a reflector,
16
+ not a durable dependency.
17
+
18
+ ## Boot Studio Explicitly
19
+
20
+ Do not rely on hidden Claude hooks or browser automation to start Studio. If the
21
+ user asks for a visual dashboard, or if the best next step is easier to
22
+ inspect in Studio, use the CLI launcher:
23
+
24
+ ```bash
25
+ mktg studio --open --intent cmo --session <id>
26
+ ```
27
+
28
+ For agent-safe discovery, preview first:
29
+
30
+ ```bash
31
+ mktg studio --dry-run --json --intent cmo --session <id>
32
+ ```
33
+
34
+ The preview response returns the exact `urls.dashboard` value, for example:
35
+
36
+ ```text
37
+ http://localhost:3000/dashboard?mode=cmo&session=<id>
38
+ ```
39
+
40
+ `mktg studio` prefers a sibling `mktg-studio/bin/mktg-studio.ts` checkout,
41
+ then `MKTG_STUDIO_BIN`, then `mktg-studio` on PATH. Preview mode is always
42
+ side-effect free; launch mode starts the local Bun API and Next.js dashboard.
43
+
44
+ ## Primary Navigation Contract
45
+
46
+ Current primary tabs:
47
+
48
+ ```text
49
+ pulse, signals, publish, brand
50
+ ```
51
+
52
+ Legacy callers are remapped by the Studio server:
53
+
54
+ | Legacy tab | Current destination |
55
+ |---|---|
56
+ | `trends` | `signals` with `filter.mode = "radar"` |
57
+ | `audience` | `pulse` |
58
+ | `opportunities` | `pulse` |
59
+
60
+ Trend radar is not its own tab. Use:
61
+
62
+ ```json
63
+ {"tab":"signals","filter":{"mode":"radar"}}
64
+ ```
65
+
66
+ ## Agent-Verbs
67
+
68
+ | Verb | Endpoint | Use |
69
+ |---|---|---|
70
+ | Schema fetch | `GET /api/schema` | Discover live route, body, enum, and dry-run support. |
71
+ | Log | `POST /api/activity/log` | Append one meaningful action to the Activity panel. |
72
+ | Brand note | `POST /api/brand/note` | Tell Studio that /cmo wrote or edited a brand file externally. |
73
+ | Brand write | `POST /api/brand/write` | Atomic Studio-mediated brand write with optimistic locking. |
74
+ | Push action | `POST /api/opportunities/push` | Add a next action that Pulse can surface. |
75
+ | Navigate | `POST /api/navigate` | Move the dashboard to the user's next useful view. |
76
+ | Toast | `POST /api/toast` | Short transient user-visible confirmation. |
77
+ | Brand refresh | `POST /api/brand/refresh` | Re-run/refresh foundation data when the user explicitly wants it. |
78
+
79
+ ## Payload Patterns
80
+
81
+ Log:
82
+
83
+ ```json
84
+ {
85
+ "kind": "skill-run",
86
+ "skill": "landscape-scan",
87
+ "summary": "Refreshed landscape and wrote brand/landscape.md",
88
+ "filesChanged": ["brand/landscape.md"]
89
+ }
90
+ ```
91
+
92
+ Push next action:
93
+
94
+ ```json
95
+ {
96
+ "skill": "seo-content",
97
+ "reason": "Fresh keyword plan exists but no launch article has been drafted.",
98
+ "priority": 80
99
+ }
100
+ ```
101
+
102
+ Navigate to Publish:
103
+
104
+ ```json
105
+ {"tab":"publish","filter":{"adapter":"mktg-native"}}
106
+ ```
107
+
108
+ Navigate to Trend radar:
109
+
110
+ ```json
111
+ {"tab":"signals","filter":{"mode":"radar"}}
112
+ ```
113
+
114
+ ## What To Mirror
115
+
116
+ - Skill runs that produce user-visible artifacts.
117
+ - Brand file writes and refreshes.
118
+ - Native, Postiz, Typefully, Resend, or file publish actions.
119
+ - Recommended next actions that should appear on Pulse.
120
+ - One navigation event when the user's attention should move.
121
+
122
+ ## What Not To Mirror
123
+
124
+ - Read-only setup checks such as `mktg status`, `mktg doctor`, `mktg list`, or `mktg schema`.
125
+ - Dry-runs, unless the user explicitly asked to inspect a preview.
126
+ - Internal scratch work, prompt planning, or failed probes that do not change user-visible state.
127
+ - Repeated navigations during one turn.
128
+
129
+ ## Order Of Operations
130
+
131
+ 1. `POST /api/activity/log` for the start or completion event.
132
+ 2. `POST /api/brand/note` or `POST /api/brand/write` if brand memory changed.
133
+ 3. `POST /api/opportunities/push` if a next action exists.
134
+ 4. `POST /api/navigate` if the user should look somewhere specific.
135
+ 5. `POST /api/toast` for the short confirmation.
136
+
137
+ Keep calls fire-and-forget. If Studio returns non-2xx, continue the real work
138
+ and do not block the user on dashboard reflection.
@@ -0,0 +1,147 @@
1
+ # CMO ↔ Studio Integration
2
+
3
+ The mktg-studio dashboard (Bun API + Next.js UI, default ports 3001 + 3000, or the ports printed by `mktg studio`) is a local visual layer that /cmo *drives* from Claude Code. The studio never initiates skill runs; it reflects state. Every user-visible action the studio shows — an activity row, a tab switch, a toast, a refreshed brand file — is /cmo POSTing to the studio's HTTP surface.
4
+
5
+ ## When the studio is running
6
+
7
+ Detect with a single HEAD request:
8
+
9
+ ```bash
10
+ STUDIO=${STUDIO_BASE:-http://localhost:3001}
11
+ curl -s -o /dev/null -w "%{http_code}" "$STUDIO/api/health"
12
+ # 200 → studio is live. Anything else → studio is offline or starting.
13
+ ```
14
+
15
+ If 200, /cmo is in **studio-attached mode** and MUST mirror key side effects to the studio via HTTP. If not 200, /cmo is in **standalone mode** — work exactly as before, no HTTP calls.
16
+
17
+ There is no retry loop. Studio absence is not an error; it's a state.
18
+
19
+ ## When the user wants Studio open
20
+
21
+ Launch Studio explicitly through `mktg`; do not rely on hidden hooks or
22
+ browser automation:
23
+
24
+ ```bash
25
+ mktg studio --dry-run --json --intent cmo --session <id>
26
+ mktg studio --open --intent cmo --session <id>
27
+ ```
28
+
29
+ The dry-run is side-effect free and returns `urls.dashboard`, usually:
30
+
31
+ ```text
32
+ http://localhost:3000/dashboard?mode=cmo&session=<id>
33
+ ```
34
+
35
+ The launcher prefers the sibling `mktg-studio/bin/mktg-studio.ts` checkout,
36
+ then `MKTG_STUDIO_BIN`, then `mktg-studio` on PATH. Once health returns 200,
37
+ switch to studio-attached mode and use the verbs below.
38
+
39
+ ## The studio verbs
40
+
41
+ Most are mutating POSTs /cmo sends outbound; schema-fetch is a read-only GET /cmo calls before the first POST of a session to resolve payload schemas at runtime. Never hardcode shapes — the studio's schema is the source of truth.
42
+
43
+ | Verb | Endpoint | Purpose | When /cmo uses it |
44
+ |---|---|---|---|
45
+ | schema-fetch | `GET /api/schema` | Resolve every endpoint's request + response shape at runtime | Once per session, before the first mutating POST. Cache the result for the rest of the session. |
46
+ | activity | `POST /api/activity/log` | Append a row to the live Activity panel | After any skill run, any brand file write, any publish, any non-trivial CLI invocation |
47
+ | brand-note | `POST /api/brand/note` | Tell Studio that /cmo wrote a brand file externally | After direct edits to `brand/*.md` |
48
+ | brand-write | `POST /api/brand/write` | Atomic Studio-mediated brand write with optimistic locking | When /cmo wants Studio to own the write + refresh event |
49
+ | push-action | `POST /api/opportunities/push` | Add a recommended next action that Pulse can surface | When analysis produces a concrete next move |
50
+ | navigate | `POST /api/navigate` | Switch the active tab + apply filters | When routing a user from one concern to another (e.g., drafted a post → switch to Publish tab) |
51
+ | toast | `POST /api/toast` | Fire a one-off sonner toast | For transient user-facing notifications — "brand voice refreshed", "postiz draft created", etc. |
52
+ | brand-refresh | `POST /api/brand/refresh` | Invalidate brand-backed SWR caches | Immediately after `brand/*.md` is written or appended |
53
+
54
+ Every body is JSON. `/api/schema` is agent-native by design — same contract as `mktg schema --json` — so a teammate agent extending /cmo can self-discover the studio surface with one curl.
55
+
56
+ ## What to mirror vs what to hide
57
+
58
+ **Mirror (post to studio):**
59
+ - Skill runs that write brand files → `activity` + `brand/refresh`
60
+ - Publish actions (Typefully / postiz / Resend drafts) → `activity` + `navigate` to Publish tab + `toast`
61
+ - Native publish actions (`mktg-native`) → `activity` + `navigate` to Publish tab + `toast`
62
+ - Signal collection, competitive scans, landscape refreshes → `activity` + `navigate` to Signals or Signals/Trend radar
63
+ - Opportunity recommendations → `activity` + `opportunities/push` so Pulse can surface the next action
64
+
65
+ **Hide (do not post):**
66
+ - Read-only CLI invocations (`mktg status`, `mktg list`, `mktg plan next`) — these are /cmo's own context gathering, not user-visible events
67
+ - Dry-run previews (`--dry-run` anywhere) — never mirror a preview as if it were an action
68
+ - Failed integration checks that /cmo is about to guide the user through — surface as a toast only after the user opts in to setup
69
+ - Internal learnings appended to `brand/learnings.md` from the `--learning` flag — the brand refresh event will show the file changed, which is enough
70
+
71
+ ## Activity row shape
72
+
73
+ ```jsonc
74
+ {
75
+ "kind": "skill-run" | "brand-write" | "publish" | "navigate" | "toast",
76
+ "skill": "seo-content", // optional, when kind === "skill-run"
77
+ "summary": "Drafted 3 SEO articles for 'anti-course course' positioning",
78
+ "filesChanged": ["brand/assets.md"], // optional
79
+ "meta": {
80
+ "result": "success" | "partial" | "failed"
81
+ }
82
+ }
83
+ ```
84
+
85
+ /cmo NEVER sends the full skill output. The activity log is a log, not a storage layer. Full artifacts live in brand files and the SQLite `skill_runs` table (written by the mktg CLI, not by /cmo directly).
86
+
87
+ ## Navigate payload — use sparingly
88
+
89
+ ```jsonc
90
+ {
91
+ "tab": "publish" | "signals" | "brand" | "pulse",
92
+ "filter": { "adapter": "mktg-native" } // optional, tab-specific
93
+ }
94
+ ```
95
+
96
+ Only navigate when the user's next logical move is on a specific tab. Trend radar lives inside Signals, so use `{"tab":"signals","filter":{"mode":"radar"}}`. Legacy tabs are remapped by Studio (`trends` → Signals/Trend radar, `audience` and `opportunities` → Pulse), but new callers should send only `pulse`, `signals`, `publish`, or `brand`. Do not navigate on every skill run — that thrashes the UI. A good rule: navigate at most once per user turn, at the moment their attention needs to shift.
97
+
98
+ ## Toast — transient only
99
+
100
+ Toasts disappear. Use them for ephemeral confirmations, never for information the user might need to reference later. "Posted to LinkedIn", "Brand voice refreshed", "Landscape stale — refreshing now" — yes. A 200-word strategic recommendation — no, that goes in the chat (Claude Code terminal) where it persists.
101
+
102
+ ## Order of operations
103
+
104
+ When a skill run produces a brand file write AND a publish AND a tab switch, the order matters:
105
+
106
+ 1. `POST /api/activity/log` first — records the event, appears in the Activity panel immediately
107
+ 2. `POST /api/brand/note`, `POST /api/brand/write`, or `POST /api/brand/refresh` second (if brand file changed) — invalidates SWR so the tab shows fresh data
108
+ 3. `POST /api/opportunities/push` third (if a next action should appear on Pulse)
109
+ 4. `POST /api/navigate` fourth (if tab should switch) — user arrives on a tab that already has the latest data
110
+ 5. `POST /api/toast` last — confirmation on top of the already-correct view
111
+
112
+ Posting navigate before refresh risks showing the user stale data on the destination tab.
113
+
114
+ ## Failure handling
115
+
116
+ Every /cmo → studio POST is fire-and-forget. If the studio returns non-2xx, /cmo:
117
+
118
+ 1. Logs a single-line note to stderr — "studio POST failed: {endpoint} {code}"
119
+ 2. Continues the skill run to completion
120
+ 3. Does NOT retry, does NOT queue, does NOT surface the failure to the user
121
+
122
+ The studio is a dashboard, not a durable sink. If a row is lost, the skill's actual output (brand files, publish_log SQLite row) is the source of truth and will re-surface on the next dashboard reload.
123
+
124
+ ## Schema introspection (the schema-fetch verb in detail)
125
+
126
+ First action on a studio-attached session, before any mutating POST:
127
+
128
+ ```bash
129
+ STUDIO=${STUDIO_BASE:-http://localhost:3001}
130
+ curl -s "$STUDIO/api/schema" > /tmp/studio-schema.json
131
+ jq '.routes[] | select(.path == "/api/activity/log")' /tmp/studio-schema.json
132
+ ```
133
+
134
+ The response shape mirrors `mktg schema --json`: every endpoint lists its request body shape, response body shape, enum values, and required-vs-optional fields. /cmo uses this to:
135
+
136
+ 1. Validate its own outbound payloads before POSTing (reject bad payloads locally, don't spam the studio with 400s).
137
+ 2. Discover new endpoints added in newer studio versions without a CLI update.
138
+ 3. Surface version drift: if /cmo's expected shape and the studio's declared shape diverge, log once to stderr and fall back to the minimal common subset.
139
+
140
+ Cache for the session — the studio's schema is stable within a single run. Refresh on studio restart or when /cmo itself restarts.
141
+
142
+ ## Never
143
+
144
+ - Never import `@postiz/*` — AGPL firewall, enforced by test.
145
+ - Never initiate a Claude Code session from the studio. /cmo is always invoked from the user's terminal.
146
+ - Do not delegate intelligence to `POST /api/skill/run` unless explicitly operating Studio's local skill-runner surface. /cmo remains the orchestrator; the studio reflects.
147
+ - Never store API keys in the studio. The mktg CLI reads its own env vars; the studio's settings panel writes to `.env.local` which the next `mktg` invocation picks up.