@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,1158 @@
1
+ # Brand Voice Mode Walkthroughs & Examples
2
+
3
+ > Extracted from SKILL.md for token efficiency.
4
+
5
+ # Mode Details
6
+
7
+ ## Mode 1: Extract
8
+
9
+ ### What to Analyze
10
+
11
+ Request 3-5 pieces of content they consider "most them":
12
+ - Website copy (especially About page, homepage)
13
+ - Emails they've sent
14
+ - Social posts that performed well
15
+ - Newsletter editions
16
+ - Video or podcast transcripts
17
+ - Anything where they felt "this sounds like me"
18
+
19
+ ### What to Look For
20
+
21
+ **1. Tone patterns**
22
+ - Formal ↔ Casual (contractions? slang? sentence fragments?)
23
+ - Serious ↔ Playful (humor? lightness? gravity?)
24
+ - Reserved ↔ Bold (hedging? strong claims? confidence?)
25
+ - Distant ↔ Intimate (we/they vs I/you? personal stories?)
26
+
27
+ **2. Vocabulary patterns**
28
+ - Industry jargon level (heavy, light, translated?)
29
+ - Signature words or phrases they repeat
30
+ - Words they seem to avoid
31
+ - Curse words or edgy language?
32
+ - Formal words vs everyday words
33
+
34
+ **3. Rhythm patterns**
35
+ - Average sentence length
36
+ - Paragraph length
37
+ - Mix of short punchy vs longer flowing
38
+ - Use of fragments
39
+ - List usage
40
+
41
+ **4. Structural patterns**
42
+ - How they open (story? question? statement?)
43
+ - How they transition
44
+ - How they close (CTA style? summary? open loop?)
45
+ - Headers and formatting preferences
46
+
47
+ **5. Personality signals**
48
+ - Self-deprecating or confident?
49
+ - Teacher or peer?
50
+ - Polished or raw?
51
+ - Optimistic or realistic?
52
+ - References and examples they use
53
+
54
+ **6. POV patterns**
55
+ - First person (I) or plural (we)?
56
+ - How they address reader (you? folks? friends?)
57
+ - Direct address or general statements?
58
+
59
+ ### Extract Output
60
+
61
+ After analysis, produce the voice profile (format below). Then proceed to the
62
+ Voice Test Loop.
63
+
64
+ ---
65
+
66
+ ## Mode 2: Build
67
+
68
+ ### Strategic Questions to Ask
69
+
70
+ **Identity:**
71
+ 1. What are 3-5 words that describe your personality?
72
+ 2. What do you stand for? What's your core belief about your industry/topic?
73
+ 3. What's your background? What shaped how you see things?
74
+ 4. What makes you genuinely different from others in your space?
75
+
76
+ **Audience:**
77
+ 5. Who are you talking to? (Be specific)
78
+ 6. What tone resonates with them? (What do they respond to?)
79
+ 7. What would make them trust you? What would turn them off?
80
+
81
+ **Positioning:**
82
+ 8. Are you the expert, the peer, the rebel, the guide, the insider?
83
+ 9. Where do you sit on accessible ↔ exclusive?
84
+ 10. Where do you sit on approachable ↔ authoritative?
85
+
86
+ **Aspiration:**
87
+ 11. Name 2-3 brands or people whose voice you admire. What specifically do you like about how they communicate?
88
+ 12. What do you explicitly NOT want to sound like?
89
+
90
+ **Practical:**
91
+ 13. Any words or phrases that are signature to you?
92
+ 14. Any words or phrases you hate or want to avoid?
93
+ 15. How do you feel about humor? Profanity? Hot takes?
94
+
95
+ ### Build Process
96
+
97
+ From the answers, construct voice profile:
98
+
99
+ 1. **Synthesize personality** → Core traits that should come through
100
+ 2. **Define tone spectrum** → Where they land on key dimensions
101
+ 3. **Set vocabulary rules** → What to use, what to avoid
102
+ 4. **Establish rhythm** → Sentence/paragraph patterns that fit
103
+ 5. **Create examples** → Write sample phrases that embody the voice
104
+ 6. **Define boundaries** → What's off-brand
105
+ 7. **Map platform adaptations** → How voice flexes per channel
106
+
107
+ After building, proceed to the Voice Test Loop.
108
+
109
+ ---
110
+
111
+ ## Mode 3: Auto-Scrape
112
+
113
+ This is the v2 power mode. The user provides a URL, and the skill does the
114
+ research automatically.
115
+
116
+ ### Prerequisites
117
+
118
+ Auto-Scrape requires web search capability. On Claude Code, use web search
119
+ tools to pull content. If web search is not available, fall back gracefully:
120
+
121
+ ```
122
+ Web search is not available in this environment.
123
+ I can still build your voice profile:
124
+
125
+ → Paste your website copy and I will extract it
126
+ → Answer 15 questions and I will build it
127
+
128
+ Which do you prefer?
129
+ ```
130
+
131
+ ### Auto-Scrape Process
132
+
133
+ **Step 1: Gather content**
134
+
135
+ From the provided URL, search for and pull:
136
+
137
+ ```
138
+ ◑ Scraping brand presence...
139
+
140
+ ├── Homepage copy searching...
141
+ ├── About page searching...
142
+ ├── Blog posts (recent 3) searching...
143
+ ├── LinkedIn bio + posts searching...
144
+ ├── Twitter/X bio + tweets searching...
145
+ └── Any other public content searching...
146
+ ```
147
+
148
+ Specifically search for:
149
+ - `{url}` — Homepage content
150
+ - `{url}/about` or `{url}/about-us` — About page
151
+ - `{url}/blog` — Recent blog posts (grab 2-3)
152
+ - `site:{domain} linkedin.com` — LinkedIn profile/company page
153
+ - `site:{domain} twitter.com` OR `site:{domain} x.com` — Twitter/X presence
154
+ - `{brand name} {founder name}` — Any podcast appearances, interviews, guest posts
155
+
156
+ **Step 2: Report what was found**
157
+
158
+ ```
159
+ ✓ Scraping complete
160
+
161
+ Content gathered:
162
+ ├── Homepage ✓ 850 words
163
+ ├── About page ✓ 420 words
164
+ ├── Blog posts ✓ 3 posts (2,100 words total)
165
+ ├── LinkedIn ✓ Bio + 5 recent posts
166
+ ├── Twitter/X ✗ Not found
167
+ └── Total corpus 3,370+ words
168
+
169
+ ──────────────────────────────────────────────
170
+
171
+ Analyzing for voice patterns...
172
+ ```
173
+
174
+ **Step 3: Feed into Extract mode**
175
+
176
+ Take all gathered content and run the full Extract analysis (all 6
177
+ dimensions: tone, vocabulary, rhythm, structure, personality, POV). The user
178
+ does not need to paste anything — the scraping did the work.
179
+
180
+ **Step 4: Supplement with quick questions**
181
+
182
+ After the automated extraction, ask 2-3 targeted questions to fill gaps the
183
+ scrape could not answer:
184
+
185
+ ```
186
+ I have a solid picture from your public content.
187
+ Three quick questions to fill in the gaps:
188
+
189
+ 1. Is there anything about your current voice
190
+ you want to change or evolve?
191
+ 2. Any words or phrases you love or hate that
192
+ might not show up in your public content?
193
+ 3. Who do you admire voice-wise? (a brand,
194
+ creator, or writer)
195
+ ```
196
+
197
+ Merge the answers with the extracted data and produce the final voice profile.
198
+ Then proceed to the Voice Test Loop.
199
+
200
+ ---
201
+
202
+ ## Voice Test Loop
203
+
204
+ After generating the voice profile from ANY mode, run this validation step
205
+ before saving.
206
+
207
+ ### Step 1: Generate 3 Sample Paragraphs
208
+
209
+ Using the voice profile you just created, write three pieces of sample content
210
+ in the brand's voice:
211
+
212
+ ```
213
+ ──────────────────────────────────────────────
214
+
215
+ VOICE TEST — Does this sound like you?
216
+
217
+ ──────────────────────────────────────────────
218
+
219
+ SAMPLE 1: EMAIL OPENING
220
+
221
+ "{A 3-4 sentence email opening paragraph that
222
+ demonstrates the voice. Should feel like a real
223
+ email the brand would send to their list. Include
224
+ the greeting style, sentence rhythm, vocabulary,
225
+ and personality from the profile.}"
226
+
227
+ ──────────────────────────────────────────────
228
+
229
+ SAMPLE 2: SOCIAL POST
230
+
231
+ "{A LinkedIn or Twitter/X post in the brand's
232
+ voice. Match the platform the brand is most
233
+ active on. Demonstrate the social-specific
234
+ adaptations from the platform table.}"
235
+
236
+ ──────────────────────────────────────────────
237
+
238
+ SAMPLE 3: LANDING PAGE HERO
239
+
240
+ "{A landing page hero section — headline +
241
+ subheadline + 1-2 supporting sentences. Show
242
+ the brand's direct-response voice with benefit-
243
+ focused, urgent copy.}"
244
+
245
+ ──────────────────────────────────────────────
246
+
247
+ Does this sound like you?
248
+
249
+ ① Yes, that nails it → Save and finish
250
+ ② Close but needs adjustment → Tell me what
251
+ ③ Not quite right → Show me what is wrong
252
+ ```
253
+
254
+ ### Step 2: Process Feedback
255
+
256
+ **If ① "Yes, that nails it":**
257
+ - Proceed to file output (save the profile)
258
+
259
+ **If ② "Close but needs adjustment":**
260
+ - Ask: "What feels off? Be as specific as you can — is it the tone, the
261
+ vocabulary, the rhythm, or something else?"
262
+ - Take their feedback
263
+ - Adjust the relevant sections of the voice profile
264
+ - Regenerate the 3 samples with the updated profile
265
+ - Present the test again
266
+ - Repeat until they confirm
267
+
268
+ **If ③ "Not quite right":**
269
+ - Ask: "Can you show me an example of something you have written that sounds
270
+ right? Or describe specifically what is wrong — too formal? Too casual? Too
271
+ safe? Too aggressive?"
272
+ - If they provide examples, run a focused Extract analysis on those examples
273
+ - Rebuild the profile sections that were off
274
+ - Regenerate all 3 samples
275
+ - Present the test again
276
+ - Repeat until they confirm
277
+
278
+ ### Step 3: Iteration Limit
279
+
280
+ If the user goes through 3 rounds without confirming, surface this:
281
+
282
+ ```
283
+ We have been through a few rounds. Sometimes
284
+ the best approach is to save what we have and
285
+ refine it over time as you use other skills.
286
+
287
+ ① Save current version (you can always re-run
288
+ /brand-voice to update)
289
+ ② One more round — I think I know what to fix
290
+ ③ Start over with Build mode (answer the 15
291
+ questions instead)
292
+ ```
293
+
294
+ ---
295
+
296
+
297
+ ---
298
+
299
+ # Output Formats
300
+
301
+ ## The Voice Profile (Output Format)
302
+
303
+ This is the canonical format for voice-profile.md. Every field is required.
304
+ The Platform Adaptations table and the structured JSON block are v2 additions.
305
+
306
+ ```markdown
307
+ ## Last Updated
308
+ {YYYY-MM-DD} by /brand-voice
309
+
310
+ # {Brand/Person Name} Voice Profile
311
+
312
+ ## Voice Summary
313
+ {2-3 sentences capturing the essence. What does this voice FEEL like to
314
+ encounter?}
315
+
316
+ ## Core Personality Traits
317
+ - **{Trait 1}:** {What this means in practice}
318
+ - **{Trait 2}:** {What this means in practice}
319
+ - **{Trait 3}:** {What this means in practice}
320
+ - **{Trait 4}:** {What this means in practice}
321
+
322
+ ## Tone Spectrum
323
+
324
+ | Dimension | Position | Notes |
325
+ |-----------|----------|-------|
326
+ | Formal ↔ Casual | {e.g., "Casual, but not sloppy"} | {specifics} |
327
+ | Serious ↔ Playful | {e.g., "Mostly serious, occasional wit"} | {specifics} |
328
+ | Reserved ↔ Bold | {e.g., "Bold, makes strong claims"} | {specifics} |
329
+ | Simple ↔ Sophisticated | {e.g., "Simple words, sophisticated ideas"} | {specifics} |
330
+ | Warm ↔ Direct | {e.g., "Direct but not cold"} | {specifics} |
331
+
332
+ ## Vocabulary
333
+
334
+ **Words/phrases to USE:**
335
+ - {word/phrase} — {why/when}
336
+ - {word/phrase} — {why/when}
337
+ - {signature phrases if any}
338
+
339
+ **Words/phrases to AVOID:**
340
+ - {word/phrase} — {why}
341
+ - {word/phrase} — {why}
342
+ - {AI-sounding words to skip}
343
+
344
+ **Jargon level:** {Heavy / Moderate / Light / Translated}
345
+
346
+ **Profanity:** {Yes / Occasional / Never}
347
+
348
+ ## Rhythm & Structure
349
+
350
+ **Sentences:** {e.g., "Mix of short punchy (3-5 words) and medium (10-15
351
+ words). Rarely long."}
352
+
353
+ **Paragraphs:** {e.g., "Short. 1-3 sentences max. Lots of white space."}
354
+
355
+ **Openings:** {e.g., "Often starts with bold statement or direct challenge.
356
+ Rarely asks questions."}
357
+
358
+ **Formatting:** {e.g., "Uses headers. Bulleted lists. Bold for emphasis.
359
+ Minimal emojis."}
360
+
361
+ ## POV & Address
362
+
363
+ **First person:** {I / We / Mix}
364
+ **Reader address:** {You / Direct name / Folks / Friends / etc.}
365
+ **Relationship stance:** {Teacher / Peer / Guide / Insider / Rebel}
366
+
367
+ ## Platform Adaptations
368
+
369
+ | Platform | Tone Shift | Structure | Length |
370
+ |----------|-----------|-----------|--------|
371
+ | Email | {e.g., "Warmer, more personal"} | {e.g., "Short paragraphs, clear CTA"} | {e.g., "150-300 words"} |
372
+ | LinkedIn | {e.g., "More professional, expertise-forward"} | {e.g., "Single-idea posts, line breaks"} | {e.g., "100-200 words"} |
373
+ | Twitter/X | {e.g., "Punchier, more opinionated"} | {e.g., "One idea, no fluff"} | {e.g., "Under 280 chars"} |
374
+ | Blog/SEO | {e.g., "More thorough, still voiced"} | {e.g., "Headers, lists, longer form"} | {e.g., "1500-2500 words"} |
375
+ | Landing Page | {e.g., "More urgent, benefit-focused"} | {e.g., "Short sentences, CTA-heavy"} | {e.g., "Varies by section"} |
376
+
377
+ ## Example Phrases
378
+
379
+ **On-brand (sounds like us):**
380
+ - "{Example phrase}"
381
+ - "{Example phrase}"
382
+ - "{Example phrase}"
383
+
384
+ **Off-brand (doesn't sound like us):**
385
+ - "{Example phrase}" — {why it's wrong}
386
+ - "{Example phrase}" — {why it's wrong}
387
+ - "{Example phrase}" — {why it's wrong}
388
+
389
+ ## Do's and Don'ts
390
+
391
+ **DO:**
392
+ - {specific guidance}
393
+ - {specific guidance}
394
+ - {specific guidance}
395
+
396
+ **DON'T:**
397
+ - {specific guidance}
398
+ - {specific guidance}
399
+ - {specific guidance}
400
+
401
+ ---
402
+
403
+ <details>
404
+ <summary>Structured Data (JSON)</summary>
405
+
406
+ ```json
407
+ {
408
+ "brand_name": "{name}",
409
+ "last_updated": "{YYYY-MM-DD}",
410
+ "updated_by": "/brand-voice",
411
+ "tone": {
412
+ "summary": "{one-sentence tone summary}",
413
+ "spectrum": [
414
+ {
415
+ "dimension": "Formality",
416
+ "left_pole": "Casual",
417
+ "right_pole": "Formal",
418
+ "position": {1-10},
419
+ "notes": "{context}"
420
+ },
421
+ {
422
+ "dimension": "Energy",
423
+ "left_pole": "Serious",
424
+ "right_pole": "Playful",
425
+ "position": {1-10},
426
+ "notes": "{context}"
427
+ },
428
+ {
429
+ "dimension": "Confidence",
430
+ "left_pole": "Reserved",
431
+ "right_pole": "Bold",
432
+ "position": {1-10},
433
+ "notes": "{context}"
434
+ },
435
+ {
436
+ "dimension": "Complexity",
437
+ "left_pole": "Simple",
438
+ "right_pole": "Sophisticated",
439
+ "position": {1-10},
440
+ "notes": "{context}"
441
+ },
442
+ {
443
+ "dimension": "Warmth",
444
+ "left_pole": "Warm",
445
+ "right_pole": "Direct",
446
+ "position": {1-10},
447
+ "notes": "{context}"
448
+ }
449
+ ]
450
+ },
451
+ "vocabulary": {
452
+ "preferred": [
453
+ { "term": "{word}", "context": "{when to use}" }
454
+ ],
455
+ "avoid": [
456
+ { "term": "{word}", "reason": "{why}", "alternative": "{use instead}" }
457
+ ]
458
+ },
459
+ "personality_traits": [
460
+ "{trait 1}",
461
+ "{trait 2}",
462
+ "{trait 3}",
463
+ "{trait 4}"
464
+ ],
465
+ "examples": {
466
+ "on_brand": [
467
+ { "text": "{example}", "source": "{origin}", "why": "{what makes it on-brand}" }
468
+ ],
469
+ "off_brand": [
470
+ { "text": "{example}", "source": "{origin}", "why": "{what makes it off-brand}" }
471
+ ]
472
+ },
473
+ "platform_adaptations": {
474
+ "email": {
475
+ "tone_shift": "{description}",
476
+ "format_preferences": "{structure notes}",
477
+ "length": "{typical length}",
478
+ "dos": ["{do this}"],
479
+ "donts": ["{avoid this}"]
480
+ },
481
+ "linkedin": {
482
+ "tone_shift": "{description}",
483
+ "format_preferences": "{structure notes}",
484
+ "length": "{typical length}",
485
+ "dos": ["{do this}"],
486
+ "donts": ["{avoid this}"]
487
+ },
488
+ "twitter": {
489
+ "tone_shift": "{description}",
490
+ "format_preferences": "{structure notes}",
491
+ "length": "{typical length}",
492
+ "dos": ["{do this}"],
493
+ "donts": ["{avoid this}"]
494
+ },
495
+ "blog": {
496
+ "tone_shift": "{description}",
497
+ "format_preferences": "{structure notes}",
498
+ "length": "{typical length}",
499
+ "dos": ["{do this}"],
500
+ "donts": ["{avoid this}"]
501
+ },
502
+ "landing_page": {
503
+ "tone_shift": "{description}",
504
+ "format_preferences": "{structure notes}",
505
+ "length": "{typical length}",
506
+ "dos": ["{do this}"],
507
+ "donts": ["{avoid this}"]
508
+ }
509
+ },
510
+ "audience_awareness": {
511
+ "sophistication_level": "{beginner|intermediate|advanced|mixed}",
512
+ "jargon_tolerance": "{none|light|moderate|heavy}",
513
+ "reading_level": "{target level}",
514
+ "notes": "{additional context}"
515
+ },
516
+ "signature_phrases": [
517
+ { "phrase": "{catchphrase}", "usage": "{when to use}" }
518
+ ]
519
+ }
520
+ ```
521
+
522
+ </details>
523
+ ```
524
+
525
+ ---
526
+
527
+ ## Formatted Output Structure
528
+
529
+ When presenting the completed voice profile to the user, follow the output
530
+ format specification from /cmo `rules/output-format.md`. The terminal output
531
+ uses the premium formatting system. The markdown file saved to disk uses
532
+ standard markdown.
533
+
534
+ ### Terminal Output Template
535
+
536
+ ```
537
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
538
+
539
+ BRAND VOICE PROFILE
540
+ Generated {Mon DD, YYYY}
541
+
542
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
543
+
544
+ Mode: {Extract | Build | Auto-Scrape}
545
+ Brand: {name}
546
+
547
+ {If brand context was loaded:}
548
+ Brand context:
549
+ ├── Positioning ✓ loaded
550
+ └── Audience ✓ loaded
551
+
552
+ ──────────────────────────────────────────────
553
+
554
+ VOICE DNA
555
+
556
+ Summary: {2-3 sentence voice summary}
557
+
558
+ Personality:
559
+ ├── {Trait 1}: {explanation}
560
+ ├── {Trait 2}: {explanation}
561
+ ├── {Trait 3}: {explanation}
562
+ └── {Trait 4}: {explanation}
563
+
564
+ ──────────────────────────────────────────────
565
+
566
+ TONE SPECTRUM
567
+
568
+ Formal ↔ Casual: {position}
569
+ Serious ↔ Playful: {position}
570
+ Reserved ↔ Bold: {position}
571
+ Simple ↔ Sophisticated: {position}
572
+ Warm ↔ Direct: {position}
573
+
574
+ ──────────────────────────────────────────────
575
+
576
+ VOCABULARY
577
+
578
+ ┌──────────────────────────────────────────────┐
579
+ │ │
580
+ │ ✓ On-brand │
581
+ │ "{example phrase}" │
582
+ │ │
583
+ │ ✗ Off-brand │
584
+ │ "{example phrase}" │
585
+ │ │
586
+ └──────────────────────────────────────────────┘
587
+
588
+ Words to use Words to avoid
589
+ ├── {word} ├── {word}
590
+ ├── {word} ├── {word}
591
+ └── {word} └── {word}
592
+
593
+ Jargon: {level} Profanity: {level}
594
+
595
+ ──────────────────────────────────────────────
596
+
597
+ RHYTHM
598
+
599
+ Sentences: {pattern}
600
+ Paragraphs: {pattern}
601
+ Openings: {pattern}
602
+ Formatting: {pattern}
603
+
604
+ ──────────────────────────────────────────────
605
+
606
+ POV
607
+
608
+ First person: {I / We / Mix}
609
+ Reader address: {how they address the reader}
610
+ Stance: {Teacher / Peer / Guide / etc.}
611
+
612
+ ──────────────────────────────────────────────
613
+
614
+ PLATFORM ADAPTATIONS
615
+
616
+ Platform Tone Shift Length
617
+ ─────────────────────────────────────────
618
+ Email {shift} {length}
619
+ LinkedIn {shift} {length}
620
+ Twitter/X {shift} {length}
621
+ Blog/SEO {shift} {length}
622
+ Landing Page {shift} {length}
623
+
624
+ ──────────────────────────────────────────────
625
+
626
+ VOICE TEST
627
+
628
+ {Present the 3 sample paragraphs here}
629
+ {Then the feedback prompt}
630
+
631
+ ──────────────────────────────────────────────
632
+
633
+ FILES SAVED
634
+
635
+ ./brand/voice-profile.md ✓
636
+
637
+ WHAT'S NEXT
638
+
639
+ Your voice profile is set. Every content skill
640
+ will reference it from here on.
641
+
642
+ → /positioning-angles Find your market angle (~10 min)
643
+ → /direct-response-copy Write your first landing
644
+ page (~15 min)
645
+ → /start-here See full project status
646
+
647
+ Or tell me what you're working on and
648
+ I will route you.
649
+ ```
650
+
651
+ ---
652
+
653
+
654
+ ---
655
+
656
+ # Examples
657
+
658
+ ## Example: Extracted Voice Profile
659
+
660
+ ### Input analyzed:
661
+ Website copy, 10 tweets, 3 newsletter editions from a SaaS founder
662
+
663
+ ### Output:
664
+
665
+ # Marc Lou Voice Profile
666
+
667
+ ## Last Updated
668
+ 2026-02-16 by /brand-voice
669
+
670
+ ## Voice Summary
671
+ Sounds like a friend who's been in the trenches, figured some things out, and
672
+ is sharing what actually worked — not what should work in theory.
673
+ Self-deprecating but confident. Casual but sharp. Makes you feel like you're
674
+ getting the real story, not the polished version.
675
+
676
+ ## Core Personality Traits
677
+ - **Self-deprecating confidence:** Admits failures freely ("I believed I was
678
+ Mark Zuckerberg") but backs claims with specific results. Not arrogant, but
679
+ clearly knows what works.
680
+ - **Builder energy:** Everything framed around shipping, making, creating.
681
+ Impatient with theory. Values speed and action.
682
+ - **Radical transparency:** Shares real numbers ($45K/month), real failures
683
+ (0 users), real timelines. Nothing hidden.
684
+ - **Accessible expertise:** Knows a lot but explains simply. Never talks
685
+ down. Peer, not guru.
686
+
687
+ ## Tone Spectrum
688
+
689
+ | Dimension | Position | Notes |
690
+ |-----------|----------|-------|
691
+ | Formal ↔ Casual | Very casual | Contractions, fragments, emoji |
692
+ | Serious ↔ Playful | Playful with serious points | Humor to disarm, but real substance |
693
+ | Reserved ↔ Bold | Bold | Strong claims, specific numbers, no hedging |
694
+ | Simple ↔ Sophisticated | Simple | Short words, clear sentences |
695
+ | Warm ↔ Direct | Direct but warm | Friendly but doesn't waste words |
696
+
697
+ ## Vocabulary
698
+
699
+ **Words/phrases to USE:**
700
+ - "Ship" — core action verb
701
+ - "Madman" — intensity descriptor ("shipped like a madman")
702
+ - Specific numbers always ($45K, 16 startups, 2 years)
703
+ - "Hey, it's [name]" — signature opener
704
+
705
+ **Words/phrases to AVOID:**
706
+ - "Comprehensive" / "robust" / corporate speak
707
+ - "I think" / "maybe" / hedging language
708
+ - "Passionate about" / empty descriptors
709
+ - Anything that sounds like a LinkedIn post
710
+
711
+ **Jargon level:** Light — uses "MRR" but explains concepts simply
712
+
713
+ **Profanity:** Occasional, casual (not aggressive)
714
+
715
+ ## Rhythm & Structure
716
+
717
+ **Sentences:** Short. Punchy. Often fragments. Longest sentences are lists.
718
+
719
+ **Paragraphs:** 1-2 sentences. Lots of breathing room.
720
+
721
+ **Openings:** Personal intro ("Hey, it's Marc") or bold claim.
722
+
723
+ **Formatting:** Minimal headers. Emoji as punctuation. Numbers stand out.
724
+
725
+ ## POV & Address
726
+
727
+ **First person:** I (never "we" unless referring to a group)
728
+ **Reader address:** You, direct
729
+ **Relationship stance:** Peer who's slightly ahead. "I was where you are."
730
+
731
+ ## Platform Adaptations
732
+
733
+ | Platform | Tone Shift | Structure | Length |
734
+ |----------|-----------|-----------|--------|
735
+ | Email | Warmest — personal intros, "hey" opener | Short paragraphs, single CTA at end | 150-250 words |
736
+ | LinkedIn | Slightly more structured, still casual | Line breaks between sentences, hook first line | 100-200 words |
737
+ | Twitter/X | Most punchy, strongest claims, most fragments | One idea per tweet, threads for stories | Under 280 chars |
738
+ | Blog/SEO | Same voice, more depth, still short paragraphs | Headers, numbered lists, real examples | 1500-2000 words |
739
+ | Landing Page | Proof-heavy, benefit-first, urgency OK | Short sentences, social proof blocks, clear CTA | Varies by section |
740
+
741
+ ## Example Phrases
742
+
743
+ **On-brand:**
744
+ - "I shipped 16 startups in 2 years. Now I'm happy and earn $45,000 a month."
745
+ - "If you could, you would have already."
746
+ - "I believed I was Mark Zuckerberg, built a startup for 1 year, and got 0 users."
747
+
748
+ **Off-brand:**
749
+ - "Our comprehensive solution helps entrepreneurs optimize their workflow." — Corporate, vague, no personality
750
+ - "I'm passionate about helping founders succeed." — Empty, cliche
751
+ - "It might potentially help some people in certain situations." — Hedge-y, weak
752
+
753
+ ## Do's and Don'ts
754
+
755
+ **DO:**
756
+ - Lead with specific results and real numbers
757
+ - Admit failures and mistakes openly
758
+ - Write like you're texting a smart friend
759
+ - Use emoji sparingly but naturally
760
+ - Keep paragraphs short
761
+
762
+ **DON'T:**
763
+ - Hedge or qualify statements unnecessarily
764
+ - Use corporate or marketing-speak
765
+ - Write long paragraphs
766
+ - Hide behind "we" when you mean "I"
767
+ - Sound like you're trying to impress
768
+
769
+ ---
770
+
771
+ ## Example: Built Voice Profile
772
+
773
+ ### Inputs provided:
774
+ New coaching business. Personality: direct, warm, no-BS. Audience: overwhelmed
775
+ entrepreneurs. Positioning: experienced peer, not guru. Admires: Sahil Bloom's
776
+ clarity, James Clear's simplicity. Hates: hustle culture, fake positivity.
777
+
778
+ ### Output:
779
+
780
+ # [Coach Name] Voice Profile
781
+
782
+ ## Last Updated
783
+ 2026-02-16 by /brand-voice
784
+
785
+ ## Voice Summary
786
+ The supportive friend who's direct enough to tell you what you need to hear,
787
+ not what you want to hear. Warm but efficient. Experienced but not preachy.
788
+ Makes complex things simple without dumbing them down. Anti-hustle,
789
+ pro-sustainable success.
790
+
791
+ ## Core Personality Traits
792
+ - **Warm directness:** Cares about you AND will tell you straight. No toxic
793
+ positivity, no harsh criticism. Honest but kind.
794
+ - **Calm confidence:** Been through it, figured things out. Doesn't need to
795
+ prove anything. Shares from experience, not theory.
796
+ - **Simplifier:** Takes complicated concepts and makes them actionable. Values
797
+ clarity over cleverness.
798
+ - **Anti-hustle:** Success doesn't require suffering. Sustainable beats
799
+ unsustainable. Rest is productive.
800
+
801
+ ## Tone Spectrum
802
+
803
+ | Dimension | Position | Notes |
804
+ |-----------|----------|-------|
805
+ | Formal ↔ Casual | Casual-professional | Warm, approachable, but not sloppy |
806
+ | Serious ↔ Playful | Mostly serious | Occasional lightness, but grounded |
807
+ | Reserved ↔ Bold | Measured bold | Clear opinions, not aggressive |
808
+ | Simple ↔ Sophisticated | Simple | Everyday words, accessible |
809
+ | Warm ↔ Direct | Both | Direct message, warm delivery |
810
+
811
+ ## Vocabulary
812
+
813
+ **Words/phrases to USE:**
814
+ - "Here's the thing" — transition into real talk
815
+ - "What actually works" — contrast to theory/hype
816
+ - "Sustainable" — key value
817
+ - "You don't have to" — permission-giving
818
+ - Specific but not hypey numbers
819
+
820
+ **Words/phrases to AVOID:**
821
+ - "Hustle" / "grind" / "crush it"
822
+ - "10x" / "scale" / growth-bro language
823
+ - "Just" (minimizing: "just do this")
824
+ - "Amazing" / "incredible" / empty superlatives
825
+ - "Rise and grind" / hustle culture phrases
826
+
827
+ **Jargon level:** Very light — explains everything in plain language
828
+
829
+ **Profanity:** Rare, only for emphasis
830
+
831
+ ## Rhythm & Structure
832
+
833
+ **Sentences:** Medium length. Flows conversationally. Short sentences for
834
+ emphasis.
835
+
836
+ **Paragraphs:** 2-4 sentences. Enough room to develop a thought.
837
+
838
+ **Openings:** Often reframes a problem. "Most advice about X tells you to Y.
839
+ But here's what actually works."
840
+
841
+ **Formatting:** Clean. Some bold for emphasis. Occasional bullet points.
842
+ Minimal emoji.
843
+
844
+ ## POV & Address
845
+
846
+ **First person:** I (personal, not hiding behind "we")
847
+ **Reader address:** You, direct and personal
848
+ **Relationship stance:** Experienced peer. Been there, found a path, sharing it.
849
+
850
+ ## Platform Adaptations
851
+
852
+ | Platform | Tone Shift | Structure | Length |
853
+ |----------|-----------|-----------|--------|
854
+ | Email | Warmest — "just between us" feel, more personal stories | Short paragraphs, single clear CTA | 200-350 words |
855
+ | LinkedIn | More expertise-forward, still warm, fewer contractions | Hook in first line, line breaks for readability | 150-250 words |
856
+ | Twitter/X | Most direct, strongest opinions, permission-giving | One reframe per tweet, "you don't have to" energy | Under 280 chars |
857
+ | Blog/SEO | Most thorough, teacher voice, still conversational | Headers, subheads, actionable sections, examples | 1800-2500 words |
858
+ | Landing Page | Benefit-focused, objection-aware, calm urgency | Problem-agitation-solution flow, proof points | Varies by section |
859
+
860
+ ## Example Phrases
861
+
862
+ **On-brand:**
863
+ - "You don't have to burn out to build something meaningful."
864
+ - "Here's the thing about productivity advice: most of it assumes you have
865
+ unlimited energy. You don't."
866
+ - "I tried the hustle approach for 3 years. It worked — until it didn't.
867
+ Here's what I do instead."
868
+
869
+ **Off-brand:**
870
+ - "Ready to 10x your productivity and CRUSH your goals?!" — Hustle culture,
871
+ hype-y
872
+ - "In this comprehensive guide, you'll learn..." — Corporate, distant
873
+ - "Just wake up at 5am!" — Oversimplified, "just" minimizes difficulty
874
+
875
+ ## Do's and Don'ts
876
+
877
+ **DO:**
878
+ - Acknowledge their struggle is real
879
+ - Offer permission to do less/differently
880
+ - Share what you actually do, not what sounds good
881
+ - Keep it simple and actionable
882
+ - Speak as a peer who's further down the same path
883
+
884
+ **DON'T:**
885
+ - Promise unrealistic results
886
+ - Use hustle/grind language
887
+ - Talk down to them
888
+ - Overcomplicate with jargon
889
+ - Sound like a motivational poster
890
+
891
+ ---
892
+
893
+ ## Example: Auto-Scraped Voice Profile
894
+
895
+ ### Input provided:
896
+ URL: `https://sahilbloom.com`
897
+
898
+ ### Auto-Scrape process:
899
+
900
+ ```
901
+ ◑ Scraping brand presence...
902
+
903
+ ├── Homepage copy ✓ 620 words
904
+ ├── About page ✓ 380 words
905
+ ├── Blog posts (3 recent) ✓ 4,200 words
906
+ ├── LinkedIn bio + posts ✓ Bio + 8 posts
907
+ ├── Twitter/X bio + tweets ✓ Bio + 12 tweets
908
+ └── Newsletter samples ✓ 2 editions
909
+
910
+ Total corpus: 7,400+ words
911
+ Proceeding to extraction...
912
+ ```
913
+
914
+ ### Supplementary questions asked:
915
+ 1. "Is there anything about your current voice you want to change?" →
916
+ "No, I like how I sound. Maybe slightly less formal on social."
917
+ 2. "Any words you love or hate?" →
918
+ "Love 'simple' and 'framework.' Hate 'hack' and 'grind.'"
919
+ 3. "Who do you admire voice-wise?" →
920
+ "Morgan Housel for clarity. Tim Ferriss for structure."
921
+
922
+ ### Output:
923
+
924
+ The skill then generates the full voice profile using the same template,
925
+ merging scraped content analysis with the supplementary answers. The voice
926
+ test loop runs with 3 sample paragraphs. After user confirmation, the profile
927
+ is saved to `./brand/voice-profile.md`.
928
+
929
+ ---
930
+
931
+
932
+ ---
933
+
934
+ ## Platform Adaptation Guide
935
+
936
+ This section defines how a brand voice should flex across different channels.
937
+ Use this as the basis for filling in the Platform Adaptations table in every
938
+ voice profile.
939
+
940
+ ### Email
941
+ - **Tone shift:** Warmer, more personal. This is a 1:1 conversation. The
942
+ reader gave you their email address — honor that with intimacy.
943
+ - **Structure:** Short paragraphs (1-3 sentences). One clear CTA. Personal
944
+ greetings when appropriate.
945
+ - **Length:** 150-300 words for regular sends. Up to 500 for story-driven
946
+ sequences.
947
+ - **Adaptations:** More contractions. More "I" and "you." Okay to start
948
+ sentences with "And" or "But." Sign-offs should match personality.
949
+
950
+ ### LinkedIn
951
+ - **Tone shift:** More professional, expertise-forward. Not stiff — but the
952
+ audience expects substance. Lead with insight, not personality.
953
+ - **Structure:** Single-idea posts. Line breaks between every sentence or
954
+ thought (LinkedIn formatting). Hook in the first line (before "see more").
955
+ - **Length:** 100-200 words for regular posts. Up to 300 for deep posts.
956
+ - **Adaptations:** Fewer contractions than email. More "framework" language.
957
+ End with a question or CTA for engagement. No hashtag spam.
958
+
959
+ ### Twitter/X
960
+ - **Tone shift:** Punchiest version of the voice. More opinionated. Shorter.
961
+ Hot takes welcome (if on-brand). Maximum signal, zero filler.
962
+ - **Structure:** One idea per tweet. Threads for longer stories (each tweet
963
+ must stand alone). No fluffy intros.
964
+ - **Length:** Under 280 characters per tweet. Threads: 5-15 tweets.
965
+ - **Adaptations:** Fragments are fine. Single-sentence tweets. Strong
966
+ opening words. Numbers and specifics always.
967
+
968
+ ### Blog/SEO
969
+ - **Tone shift:** Same personality, more depth. The voice is present but
970
+ not performing — it's teaching, sharing, or arguing at length.
971
+ - **Structure:** Headers, subheads, bulleted lists. Longer paragraphs OK
972
+ (3-5 sentences). Examples and proof throughout.
973
+ - **Length:** 1500-2500 words for standard posts. Up to 4000 for pillar
974
+ content.
975
+ - **Adaptations:** Can use more nuance. Okay to be more thorough. Still no
976
+ jargon without explanation. Maintain rhythm even at length.
977
+
978
+ ### Landing Page
979
+ - **Tone shift:** Most urgent, most benefit-focused. The voice is selling,
980
+ not chatting. Direct response energy with brand personality.
981
+ - **Structure:** Short sentences. Benefit-driven headlines. Social proof
982
+ blocks. Clear, repeated CTAs. Above-the-fold hook must land.
983
+ - **Length:** Varies by section. Hero: 20-40 words. Feature sections: 50-100
984
+ words each. Full page: 800-2000 words.
985
+ - **Adaptations:** More power words. Stronger CTAs. Pain points more
986
+ explicit. Proof points prominent. Voice stays but urgency increases.
987
+
988
+ ---
989
+
990
+
991
+ ---
992
+
993
+ ## Error States
994
+
995
+ ### No content provided in Extract mode
996
+
997
+ ```
998
+ ┌──────────────────────────────────────────────┐
999
+ │ │
1000
+ │ ✗ NO CONTENT TO ANALYZE │
1001
+ │ │
1002
+ │ Extract mode needs existing content to │
1003
+ │ find your voice patterns. Paste in 3-5 │
1004
+ │ pieces of content you are proud of. │
1005
+ │ │
1006
+ │ → Paste website copy, emails, or posts │
1007
+ │ → Switch to Build mode (I will ask │
1008
+ │ questions instead) │
1009
+ │ → Give me your URL for Auto-Scrape │
1010
+ │ │
1011
+ └──────────────────────────────────────────────┘
1012
+ ```
1013
+
1014
+ ### Auto-Scrape finds insufficient content
1015
+
1016
+ ```
1017
+ ┌──────────────────────────────────────────────┐
1018
+ │ │
1019
+ │ ✗ INSUFFICIENT CONTENT FOUND │
1020
+ │ │
1021
+ │ I searched your web presence but found │
1022
+ │ less than 500 words of content. That is │
1023
+ │ not enough to reliably extract voice │
1024
+ │ patterns. │
1025
+ │ │
1026
+ │ Content found: │
1027
+ │ ├── Homepage ✓ 120 words │
1028
+ │ ├── About page ✗ not found │
1029
+ │ ├── Blog ✗ not found │
1030
+ │ ├── LinkedIn ✓ bio only │
1031
+ │ └── Twitter/X ✗ not found │
1032
+ │ │
1033
+ │ → Paste additional content manually │
1034
+ │ → Switch to Build mode │
1035
+ │ │
1036
+ └──────────────────────────────────────────────┘
1037
+ ```
1038
+
1039
+ ### Web search not available
1040
+
1041
+ ```
1042
+ ┌──────────────────────────────────────────────┐
1043
+ │ │
1044
+ │ ✗ AUTO-SCRAPE UNAVAILABLE │
1045
+ │ │
1046
+ │ Web search tools are not available in │
1047
+ │ this environment. I cannot auto-scrape │
1048
+ │ your website. │
1049
+ │ │
1050
+ │ → Paste your website copy (Extract mode) │
1051
+ │ → Answer questions (Build mode) │
1052
+ │ │
1053
+ └──────────────────────────────────────────────┘
1054
+ ```
1055
+
1056
+ ---
1057
+
1058
+ ## Complete Invocation Flow
1059
+
1060
+ This is the full decision tree for every /brand-voice invocation:
1061
+
1062
+ ```
1063
+ /brand-voice invoked
1064
+ │
1065
+ ├── Check ./brand/ directory
1066
+ │ ├── Load positioning.md (if exists)
1067
+ │ └── Load audience.md (if exists)
1068
+ │
1069
+ ├── Check ./brand/voice-profile.md
1070
+ │ ├── EXISTS → Update Mode
1071
+ │ │ ├── Show current profile summary
1072
+ │ │ ├── Ask what to change
1073
+ │ │ ├── Process changes
1074
+ │ │ ├── Run Voice Test Loop
1075
+ │ │ ├── Show diff, confirm overwrite
1076
+ │ │ └── Save updated profile
1077
+ │ │
1078
+ │ └── DOES NOT EXIST → Mode Selection
1079
+ │ ├── User has content → Extract Mode
1080
+ │ │ ├── Analyze 3-5 content pieces
1081
+ │ │ ├── Extract across 6 dimensions
1082
+ │ │ ├── Generate voice profile
1083
+ │ │ ├── Run Voice Test Loop
1084
+ │ │ └── Save profile
1085
+ │ │
1086
+ │ ├── User starting fresh → Build Mode
1087
+ │ │ ├── Ask 15 strategic questions
1088
+ │ │ ├── Synthesize answers
1089
+ │ │ ├── Construct voice profile
1090
+ │ │ ├── Run Voice Test Loop
1091
+ │ │ └── Save profile
1092
+ │ │
1093
+ │ └── User provides URL → Auto-Scrape Mode
1094
+ │ ├── Scrape web presence
1095
+ │ ├── Report findings
1096
+ │ ├── Feed into Extract analysis
1097
+ │ ├── Ask 2-3 supplementary questions
1098
+ │ ├── Generate voice profile
1099
+ │ ├── Run Voice Test Loop
1100
+ │ └── Save profile
1101
+ │
1102
+ ├── After save → Feedback Collection
1103
+ │ ├── Present feedback prompt
1104
+ │ └── Log to learnings.md if applicable
1105
+ │
1106
+ └── Present WHAT'S NEXT section
1107
+ ├── → /positioning-angles
1108
+ ├── → /direct-response-copy
1109
+ └── → /start-here
1110
+ ```
1111
+
1112
+ ---
1113
+
1114
+ ## Implementation Notes for the LLM
1115
+
1116
+ When executing this skill, follow these rules precisely:
1117
+
1118
+ 1. **Never skip the iteration check.** Always look for an existing
1119
+ voice-profile.md before starting a new profile.
1120
+
1121
+ 2. **Never skip the voice test loop.** Every profile must be validated
1122
+ with 3 sample paragraphs before saving. The samples must be genuinely
1123
+ written in the extracted/built voice — not generic marketing copy.
1124
+
1125
+ 3. **Show your work.** When loading brand context, say what you loaded.
1126
+ When scraping, show what you found. When analyzing, name the patterns.
1127
+ The user should feel like they are working with a senior strategist,
1128
+ not a black box.
1129
+
1130
+ 4. **Platform adaptations are mandatory.** Every voice profile must include
1131
+ the Platform Adaptations table. This is what makes the profile useful
1132
+ across the entire skill system — not just for one channel.
1133
+
1134
+ 5. **The JSON block is mandatory.** Every saved voice-profile.md must
1135
+ include the structured JSON at the bottom. This enables downstream
1136
+ automation and schema validation.
1137
+
1138
+ 6. **Respect the brand memory protocol.** Read before write. Diff before
1139
+ overwrite. Confirm before save. Append to learnings.md, never overwrite.
1140
+
1141
+ 7. **Auto-Scrape is best-effort.** Not every URL will yield rich content.
1142
+ If scraping finds less than 500 words, fall back gracefully to Extract
1143
+ or Build mode. Never guess at voice patterns from insufficient data.
1144
+
1145
+ 8. **The voice test loop is a conversation.** Do not rush through it. If
1146
+ the user says "close but not quite," take the time to understand what
1147
+ is off. The profile is only as good as the user's confirmation.
1148
+
1149
+ 9. **Fill the platform adaptations table thoughtfully.** Do not copy the
1150
+ template defaults. Each brand will have different platform behaviors.
1151
+ A casual brand might be MORE formal on LinkedIn. A formal brand might
1152
+ be LESS formal on Twitter. Think about each adaptation individually.
1153
+
1154
+ 10. **Write the file path correctly.** The profile saves to
1155
+ `./brand/voice-profile.md` — exactly that path. Both the `brand/`
1156
+ prefix and the `-profile` suffix matter for cross-skill references.
1157
+ Every downstream skill reads from this exact path; any deviation
1158
+ breaks the data flow.