@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,469 @@
1
+ ---
2
+ name: narrative-research-article
3
+ description: |
4
+ Write Medium-style narrative articles that read like a human wrote them.
5
+ Uses NotebookLM for deep research intelligence, applies a thesis-driven
6
+ 7-section narrative architecture (cinematic cold open, bridge, escalation,
7
+ circular close), and chains to the humanizer skill to strip AI cadence.
8
+ Use when: writing a longform narrative article, Medium-style essay,
9
+ research-driven storytelling piece, or any article where the WRITING
10
+ matters as much as the information. Triggers on "narrative article",
11
+ "medium style article", "research essay", "longform piece", "write like
12
+ this article", or when you need to produce article-quality writing from
13
+ NLM research rather than SEO content blocks.
14
+ depends-on:
15
+ - nlm-cli
16
+ - humanizer
17
+ ---
18
+
19
+ # Narrative Research Article
20
+
21
+ Writes longform articles with narrative depth using NLM-sourced intelligence and a thesis-driven 7-section architecture. Every paragraph serves one job: prove the thesis.
22
+
23
+ **Origin:** Extracted from structural analysis of Ricky Lanusse's "The Future of Energy is Buried Under the Sea" (The New Climate, Medium, July 2026). See `references/lanusse-patterns.md` for the full pattern extraction.
24
+
25
+ ---
26
+
27
+ ## Awareness Gate (MANDATORY)
28
+
29
+ Before any copy work, determine the target audience's awareness level:
30
+
31
+ 1. **Can you determine awareness level from the prompt/context?**
32
+ - For SEO: keyword intent maps to awareness level
33
+ - Informational ("how to fix X") → Problem-aware
34
+ - Comparative ("X vs Y") → Solution-aware
35
+ - Branded ("your product") → Product-aware
36
+ - Transactional ("buy X") → Most-aware
37
+ - For social: content topic + audience → awareness level
38
+ - For email: subscriber stage → awareness level
39
+
40
+ 2. **If YES** → Proceed with awareness-matched strategy
41
+ - Load `references/awareness-level-guide.md`
42
+ - Select copy framework based on awareness level
43
+
44
+ 3. **If NO** → ASK THE USER before proceeding:
45
+ "What awareness level is your target audience at?"
46
+ - Unaware — doesn't know they have a problem
47
+ - Problem-aware — knows the problem, doesn't know solutions exist
48
+ - Solution-aware — knows solutions exist, doesn't know your product
49
+ - Product-aware — knows your product, not convinced it's right
50
+ - Most-aware — ready to buy, just needs the offer
51
+
52
+ ---
53
+
54
+ ## The Problem This Solves
55
+
56
+ Most AI-generated articles are structured information dumps. They have H2 headers, bullet lists, and a conclusion that says "In conclusion, X is important." They read like SEO content blocks, not writing.
57
+
58
+ This skill produces articles that read like a skilled human wrote them. The structure is invisible. The voice is direct. The data is embedded in narrative, not listed. Every section escalates a single argument toward a resonant close.
59
+
60
+ The difference: SEO articles deliver information. Narrative articles deliver an experience that happens to be informative.
61
+
62
+ ---
63
+
64
+ ## Prerequisites
65
+
66
+ Before starting, gather:
67
+ - **Topic** (the subject area)
68
+ - **Thesis** (the big idea you are proving) or let the skill discover one from research
69
+ - **Business name** (optional, for brand context loading)
70
+ - **Reference article URL** (optional, to extract voice patterns from a writer you want to emulate)
71
+
72
+ ---
73
+
74
+ ## Phase -1: Thesis Formation (MANDATORY: Before Any Research)
75
+
76
+ A narrative article without a thesis is a wandering information dump. The 7-section architecture only works when every section serves a single argument.
77
+
78
+ ### Mode A: Thesis Provided
79
+
80
+ If the user provides both topic and thesis, lock it in and proceed to Phase 0.
81
+
82
+ Validate the thesis against these criteria:
83
+ - **Single arguable claim**: not "X is important" but "X does Y because Z"
84
+ - **Has tension**: there is a paradox, contradiction, or counterintuitive truth at its core
85
+ - **Expressible as a turnaround**: "The future of energy is not buried under the sea. It is buried in our willingness to trust each other."
86
+
87
+ If the thesis is vague ("AI is transforming healthcare"), sharpen it:
88
+ - Ask: what is the counterintuitive version? What does everyone get wrong about this?
89
+ - Ask: what is the concrete proof? What single example makes this undeniable?
90
+ - Ask: what is the deeper layer? (Lanusse: cables to infrastructure to trust)
91
+
92
+ ### Mode B: Thesis Discovery via NLM
93
+
94
+ If the user provides only a topic, use NLM to surface candidate theses:
95
+
96
+ ```bash
97
+ nlm notebook create "Thesis Research: [TOPIC]"
98
+ nlm source add <notebook_id> --url "https://en.wikipedia.org/wiki/[TOPIC]"
99
+ nlm research start <notebook_id> --query "[TOPIC]" --depth deep --no-wait
100
+ nlm research wait --import-all
101
+
102
+ nlm notebook query <notebook_id> "What are the biggest unresolved tensions, paradoxes, or counterintuitive truths about [TOPIC]? Focus on disagreements between experts, surprising data points that contradict common assumptions, and hidden infrastructure or invisible systems that make everything work but nobody talks about. List 5 specific tensions with brief explanations."
103
+ ```
104
+
105
+ From the NLM response, extract 3 candidate theses and present them to the user. Each candidate needs:
106
+ - The thesis statement (one sentence)
107
+ - Evidence: key data points from NLM
108
+ - Tension: the paradox at its core
109
+
110
+ User picks one. Lock it in. Proceed to Phase 0.
111
+
112
+ ### Thesis Contract
113
+
114
+ Once locked, the thesis drives every subsequent decision:
115
+ - Every NLM query is framed to find thesis-serving evidence
116
+ - Every section in the 7-section architecture proves a facet of the thesis
117
+ - The cold open scene embodies the thesis in miniature
118
+ - The circular close restates the thesis through the opening metaphor, now weighted with everything in between
119
+
120
+ Write the thesis at the top of your working file. Refer back to it before writing each section.
121
+
122
+ ---
123
+
124
+ ## Phase 0: NLM Source Population
125
+
126
+ **Goal:** Build a NotebookLM notebook with 30+ high-quality sources on the topic.
127
+
128
+ ### Step 0.1: Create or Locate the Notebook
129
+
130
+ ```bash
131
+ # Check if a notebook already exists for this topic
132
+ nlm notebook list 2>&1 | python3 -c "
133
+ import json, sys
134
+ data = json.load(sys.stdin)
135
+ for nb in data:
136
+ if 'TOPIC'.lower() in nb.get('title', '').lower():
137
+ print(f'{nb[\"id\"]} | {nb[\"source_count\"]} sources | {nb[\"title\"]}')
138
+ "
139
+
140
+ # If no match, create one
141
+ nlm notebook create "Narrative: [TOPIC]"
142
+ ```
143
+
144
+ ### Step 0.2: Add Sources (Target 30+)
145
+
146
+ Sources should be thesis-serving. For each source, ask: does this help prove the thesis?
147
+
148
+ **YouTube videos (10-15):**
149
+ ```bash
150
+ yt-dlp "ytsearch15:[TOPIC]" --get-id --flat-playlist --skip-download > /tmp/yt-ids.txt
151
+
152
+ while IFS= read -r id; do
153
+ [ -z "$id" ] && continue
154
+ nlm source add <notebook_id> --url "https://youtube.com/watch?v=$id"
155
+ echo "Added: $id"
156
+ done < /tmp/yt-ids.txt
157
+ ```
158
+
159
+ **Web articles and primary sources (10-15):**
160
+ ```bash
161
+ nlm source add <notebook_id> --url "https://example.com/article"
162
+ nlm source add <notebook_id> --file "research.pdf"
163
+ ```
164
+
165
+ **Deep research (10+ more):**
166
+ ```bash
167
+ nlm research start <notebook_id> --query "[TOPIC] [THESIS-RELEVANT ANGLE]" --depth deep --no-wait
168
+ ```
169
+
170
+ Wait for indexing (30-60 seconds after adding, longer for research mode):
171
+ ```bash
172
+ nlm source list --json 2>&1 | python3 -c "
173
+ import json, sys
174
+ data = json.load(sys.stdin)
175
+ ready = [s for s in data if s.get('status') == 'READY']
176
+ print(f'{len(ready)}/{len(data)} sources ready')
177
+ "
178
+ ```
179
+
180
+ ### Step 0.3: Self-Curation (Optional)
181
+
182
+ ```bash
183
+ nlm notebook query <notebook_id> "Review all sources for relevance to this thesis: [THESIS]. List any off-topic or redundant sources by title."
184
+ ```
185
+
186
+ Delete flagged sources. Final count should be 30+.
187
+
188
+ ---
189
+
190
+ ## Phase 1: Intelligence Extraction
191
+
192
+ **Goal:** Query NLM to extract thesis-serving intelligence. Each query targets a specific narrative element.
193
+
194
+ Run these 6 queries. Save each response as JSON. These become the raw material for the 7-section architecture.
195
+
196
+ ### Query 1: Named Concepts (for the Technical Layer)
197
+
198
+ ```bash
199
+ nlm notebook query <notebook_id> "What are the key named concepts, mechanisms, or frameworks in [TOPIC] that a general reader could visualize? For each, explain it in one sentence using a concrete analogy or physical metaphor. I need concepts like 'the duck curve' or 'Moore's law': named ideas with visual shapes."
200
+ ```
201
+
202
+ ### Query 2: Specific Data Points (for the Data Layer)
203
+
204
+ ```bash
205
+ nlm notebook query <notebook_id> "List every specific number, statistic, date, and quantitative claim about [TOPIC] from the sources. For each: the raw number, its source (institution name), the year, and what it means in plain language. Format: NUMBER | SOURCE | YEAR | MEANING."
206
+ ```
207
+
208
+ ### Query 3: Cost-Benefit Comparisons (for the Data Layer)
209
+
210
+ ```bash
211
+ nlm notebook query <notebook_id> "What are the strongest cost-benefit or cost-of-inaction comparisons in [TOPIC]? I need asymmetric pairs where the cost of doing something is dwarfed by the cost of not doing it. Include specific dollar figures or scale comparisons."
212
+ ```
213
+
214
+ ### Query 4: Historical Precedents (for the Cold Open)
215
+
216
+ ```bash
217
+ nlm notebook query <notebook_id> "What historical events, eras, or precedents relate to [TOPIC] that would make a vivid opening scene? I need specific moments with sensory details: what did it look, sound, feel like to be there? Think Roman roads, Apollo missions, transatlantic cables: moments where infrastructure or invisible systems changed everything."
218
+ ```
219
+
220
+ ### Query 5: Human Conflict and Politics (for the Geopolitical Layer)
221
+
222
+ ```bash
223
+ nlm notebook query <notebook_id> "Who benefits from the current state of [TOPIC]? Who is threatened? What are the political conflicts, power struggles, or geopolitical tensions? Include named countries, companies, or individuals and what they stand to gain or lose."
224
+ ```
225
+
226
+ ### Query 6: The Deeper Truth (for the Elevation and Close)
227
+
228
+ ```bash
229
+ nlm notebook query <notebook_id> "What is the deepest truth about [TOPIC] that most people miss? If you had to state the thesis of this entire field in one sentence, what would it be? What paradox lies at the heart of [TOPIC] that nobody talks about?"
230
+ ```
231
+
232
+ ### Intelligence Map
233
+
234
+ | Query Output | Narrative Element | Section It Serves |
235
+ |---|---|---|
236
+ | Named concepts | Mechanisms with visual shapes | Section 4: Technical Layer |
237
+ | Data points | Numbers with named sources | Section 5: Data Layer |
238
+ | Cost-benefit pairs | Asymmetric comparisons | Section 5: Data Layer |
239
+ | Historical precedents | Vivid scenes | Section 1: Cold Open + Section 7: Close |
240
+ | Human conflict | Stakes and power dynamics | Section 6: Geopolitical Layer |
241
+ | Deeper truth | Thesis synthesis | Section 6: Elevation + Section 7: Close |
242
+
243
+ ---
244
+
245
+ ## Phase 2: Article Generation (7-Section Architecture)
246
+
247
+ **Goal:** Write the article using the thesis-driven structure.
248
+
249
+ Read `references/lanusse-patterns.md` before writing. It contains the full pattern extraction with examples.
250
+
251
+ ### Voice Rules (Apply Throughout: Non-Negotiable)
252
+
253
+ 1. **Two-sentence rhythm.** Most paragraphs: sentence 1 sets context, sentence 2 delivers the turn. Vary with one-sentence "hammer" paragraphs for emphasis.
254
+
255
+ 2. **No hedging.** "The math is not close." Not "the math seems to suggest." Commit to your claims.
256
+
257
+ 3. **Concrete before abstract.** Every principle gets grounded in a tangible detail first. Never state a rule without showing the thing it applies to.
258
+
259
+ 4. **Named sources only.** Never write "studies show" or "experts say." Always: institution name + year + number. "The California ISO documented this in 2013."
260
+
261
+ 5. **Standalone hammer sentences.** Use 3-5 word standalone paragraphs for emphasis: "Nobody cares." "The cable is the thing." "The math is not close."
262
+
263
+ 6. **No section headers in the body.** Sections are separated by horizontal rules (`---`). No "## The Problem" or "## Key Findings." The content carries the structure. The reader should never feel they are reading a list.
264
+
265
+ 7. **Emotional micro-bursts.** In analytical sections, insert brief human beats. Not sentimentality. A moment of connection that prevents whitepaper feel. "It is heavy in the way that makes you think of your 6-year-old back home."
266
+
267
+ 8. **Recurring motifs.** Pick 1-2 key phrases that echo across sections. "The thing." "The road." "The cable." These build cumulative emphasis.
268
+
269
+ 9. **One rhetorical question maximum.** Use it at the 70% mark as a section pivot. Never as opener or closer.
270
+
271
+ 10. **No bullet lists in the article body.** This is prose, not a briefing. If you need to enumerate, use flowing sentences with semicolons and commas.
272
+
273
+ ### The 7 Sections
274
+
275
+ Write each section in order. After completing each, verify it serves the thesis.
276
+
277
+ #### Section 1: Cinematic Cold Open (100-150 words)
278
+
279
+ Drop the reader INTO a scene. No thesis, no definition, no context. Sensory details: what does it look, sound, feel, smell like?
280
+
281
+ **Source material:** Historical precedents from Query 4.
282
+
283
+ **Rules:**
284
+ - Use second person ("you") to place the reader inside the scene
285
+ - Include at least 3 sensory details (sound, touch, smell, weight, temperature)
286
+ - End on a detail that creates tension or curiosity
287
+ - Do NOT explain what this has to do with the topic yet
288
+
289
+ #### Section 2: The Bridge (1 paragraph)
290
+
291
+ Pivot from the scene to the topic. One paragraph. State the thesis explicitly as a paradox or lesson.
292
+
293
+ **Formula:** "This is the [paradox/lesson/truth] at the heart of [TOPIC]: [THESIS]."
294
+
295
+ **Rules:**
296
+ - Exactly one paragraph
297
+ - The transition should feel inevitable, not forced
298
+ - State the thesis directly
299
+
300
+ #### Section 3: The Concrete Example (200-400 words)
301
+
302
+ Name the specific thing the article is about. What is it? Where is it? What does it do?
303
+
304
+ **Rules:**
305
+ - Start with the most basic description possible
306
+ - Build from "it does not look like much" to "it represents something extraordinary"
307
+ - Include at least one "the thing you cannot see" detail (invisible infrastructure)
308
+ - End with a standalone declarative that names the core insight
309
+
310
+ #### Section 4: The Technical Layer (300-500 words)
311
+
312
+ Explain the underlying mechanism. Use a named concept. Make it visual.
313
+
314
+ **Source material:** Named concepts from Query 1.
315
+
316
+ **Rules:**
317
+ - Introduce the named concept with its common name
318
+ - Explain WHY it is named that (the visual shape, the counterintuitive result)
319
+ - Use the Specificity Stack: raw number, comparison, emotional grounding
320
+ - End with: "The only thing that does not work is the [politics/economics/human nature]."
321
+
322
+ #### Section 5: The Data Layer (300-500 words)
323
+
324
+ Numbers with named sources. Cost-benefit comparisons. Let asymmetry speak.
325
+
326
+ **Source material:** Data from Query 2 + cost-benefit from Query 3.
327
+
328
+ **Rules:**
329
+ - Every number gets the Specificity Stack: NUMBER, COMPARISON, GROUNDING
330
+ - Pair every cost with the cost of inaction
331
+ - Follow the asymmetry with a one-sentence hammer
332
+ - Include geographic or scale comparisons
333
+ - Name every institution and date
334
+
335
+ #### Section 6: The Geopolitical / Human Layer (300-500 words)
336
+
337
+ Who benefits? Who is threatened? What is the conflict? Then zoom out to the deeper truth.
338
+
339
+ **Source material:** Conflict from Query 5 + deeper truth from Query 6.
340
+
341
+ **Rules:**
342
+ - Name specific countries, companies, or individuals
343
+ - Describe the power dynamics, not just the facts
344
+ - Include at least one threat or vulnerability (sabotage, fragility, conflict)
345
+ - Transition from geopolitics to the deeper theme
346
+ - State the thesis's deepest layer here
347
+ - Use the rhetorical question pivot if you have not already
348
+
349
+ #### Section 7: The Circular Close (150-250 words)
350
+
351
+ Return to the opening metaphor. But now it carries the weight of everything explained.
352
+
353
+ **Source material:** Deeper truth from Query 6, restated through the opening scene.
354
+
355
+ **Rules:**
356
+ - Echo the opening imagery explicitly
357
+ - Restate the thesis through the metaphor, not directly
358
+ - The metaphor should feel ENRICHED by everything in between
359
+ - End with 2-3 standalone hammer sentences
360
+ - Final line should be the motif phrase, now carrying full meaning
361
+
362
+ ### Section Assembly
363
+
364
+ After writing all 7 sections:
365
+ 1. Join them with `---` dividers between sections
366
+ 2. Read the full article start to finish
367
+ 3. Check the circular frame: does the close genuinely echo the open?
368
+ 4. Check the motif: does the recurring phrase appear at least 3 times across sections?
369
+ 5. Verify thesis service: can you point to how each section proves the thesis?
370
+ 6. Check for AI cadence: any uniform paragraph lengths? Any "furthermore" or "moreover"? Fix them.
371
+
372
+ ---
373
+
374
+ ## Phase 3: Humanizer Pass (MANDATORY: Final Step)
375
+
376
+ Load the `humanizer` skill and pass the complete draft through it. This is non-negotiable. The 7-section architecture produces structural patterns that can still read as AI-generated if the sentence-level cadence is off.
377
+
378
+ ### How to Chain
379
+
380
+ 1. Save the draft to a file: `/tmp/nra-draft-[slug].md`
381
+ 2. Load the humanizer skill: use the `skill` tool with name `humanizer`
382
+ 3. Pass the draft text to the humanizer process
383
+ 4. The humanizer will identify AI tells, rewrite preserving all information and structure, vary sentence rhythm, and remove hedging and filler
384
+ 5. Review the humanized output against the voice rules above
385
+
386
+ ### Voice Calibration
387
+
388
+ If a reference article URL was provided, use it as the voice calibration sample for the humanizer. The humanizer will match sentence length patterns, word choice level, and paragraph habits from the reference. This ensures the output sounds like the writer you are emulating.
389
+
390
+ ### Post-Humanizer Checklist
391
+
392
+ After humanizing, verify:
393
+ - No em dashes remain (replace with periods, commas, colons, or parentheses)
394
+ - No AI vocabulary: "delve," "crucial," "tapestry," "vibrant," "underscore," "landscape" (abstract)
395
+ - No "studies show" or "experts say" (all sources named)
396
+ - Sentence lengths vary (short punchy plus longer flowing)
397
+ - The 7-section structure is intact (humanizer should not collapse sections)
398
+ - The thesis is still clearly argued
399
+ - The circular frame still works
400
+ - No bullet lists appeared (humanizer should not add them)
401
+
402
+ If the humanizer broke the structure or weakened the thesis, re-run Phase 2 for the affected sections and humanize again.
403
+
404
+ ---
405
+
406
+ ## Output
407
+
408
+ Save the final article as:
409
+ - Markdown: `/tmp/nra-final-[slug].md`
410
+ - If brand context loaded: also save to `businesses/[BUSINESS]/content/drafts/[slug].md`
411
+
412
+ Present to the user with: word count, thesis (restated), sources used count, whether humanizer pass completed.
413
+
414
+ ---
415
+
416
+ ## Brand Context Loading (Optional)
417
+
418
+ If a business name is provided, load brand context before Phase 2:
419
+
420
+ Use the `load-business-context` MCP tool with the business name, or read the business `evergreen.md` directly.
421
+
422
+ Extract from brand files:
423
+ - **Brand voice descriptors**: tone, vocabulary level, formality
424
+ - **ICP**: who is the reader (affects cold open scene choice and technical depth)
425
+ - **CTA path**: where the article points (if applicable)
426
+ - **Content rules**: DO/DON'T lists from evergreen.md
427
+
428
+ Apply brand voice to the Phase 2 writing. The narrative architecture stays the same. Only the voice and ICP targeting change.
429
+
430
+ If no brand is provided, write in the default Lanusse voice: direct, declarative, unsentimental, no hedging.
431
+
432
+ ---
433
+
434
+ ## Reference Article Analysis (Optional)
435
+
436
+ If the user provides a reference article URL to emulate its style:
437
+
438
+ 1. Fetch the article using `webfetch` or `ctx_fetch_and_index`
439
+ 2. Extract structural patterns using the same analysis framework in `references/lanusse-patterns.md`
440
+ 3. Use the extracted patterns INSTEAD of the default Lanusse patterns for Phase 2
441
+ 4. Use the article text as the voice calibration sample for Phase 3
442
+
443
+ This allows emulating any writer's style, not just Lanusse's.
444
+
445
+ ---
446
+
447
+ ## Troubleshooting
448
+
449
+ **NLM query returns generic answers:** Make the query more specific. Instead of "What are the key concepts?", ask "What named mechanisms can a general reader visualize? Give me analogies with physical shapes."
450
+
451
+ **Cold open does not connect to the topic:** The connection does not need to be obvious in the cold open. The Bridge paragraph (Section 2) makes the connection explicit. Trust the reader to hold the tension.
452
+
453
+ **Article reads like an essay, not a narrative:** You are probably explaining instead of showing. Rewrite key paragraphs as scenes. Use sensory details. Replace "the system was complex" with a concrete moment that demonstrates complexity.
454
+
455
+ **Humanizer flattened the voice:** The humanizer removed personality along with AI tells. Re-run Phase 2 for affected sections, then humanize with a voice calibration sample provided.
456
+
457
+ **Sections feel disconnected:** Check the motif. Pick a recurring phrase and thread it through all 7 sections. Also verify each section's last sentence creates tension that pulls into the next section.
458
+
459
+ **Thesis got lost in the middle sections:** Before writing Sections 3-5, write the thesis at the top of your working file. After each section, ask: "How did this section prove the thesis?" If it did not, cut or rewrite.
460
+
461
+ ---
462
+
463
+ ## Related Skills
464
+
465
+ - `nlm-cli`: NLM CLI for source population and querying
466
+ - `humanizer`: Post-generation AI-tell removal (chained in Phase 3)
467
+ - `deep-serp-article`: Alternative for SEO-focused pillar articles (more structured, less narrative)
468
+ - `article-generator`: Router skill for general article generation
469
+ - `seo-content`: Alternative for keyword-driven SEO articles
@@ -0,0 +1,166 @@
1
+ # Lanusse Writing Patterns
2
+
3
+ Structural patterns extracted from "The Future of Energy is Buried Under the Sea" by Ricky Lanusse (The New Climate, Medium, July 2026). ~2,800 words, 12 min read.
4
+
5
+ Load this reference before writing articles with the `narrative-research-article` skill.
6
+
7
+ ---
8
+
9
+ ## 1. Structure and Architecture
10
+
11
+ ### The Cinematic Cold Open
12
+
13
+ The article opens NOT with the thesis, NOT with a definition, but inside a **scene**. The reader is dropped into the boots of a Roman legionnaire mid-march. Sensory details (the leather sandal, the iron studs, the clacking) create immediacy before any argument is made.
14
+
15
+ **Rule:** Start in a specific, vivid moment. No throat-clearing. No "In today's world of..." The reader should feel *placed*, not *informed*, on line one.
16
+
17
+ **Example:**
18
+ > Your left sandal is already cutting into your heel. The leather is new, and the little iron studs on the bottom bite the road and clack with every step, like they're trying to wake the whole empire up.
19
+
20
+ ### The Bridge Paragraph
21
+
22
+ After the cold open scene, a single paragraph pivots from the metaphor to the actual subject. This is NOT a transition section. It is a single paragraph that explicitly states the connection.
23
+
24
+ **Rule:** After your cold open scene, write ONE paragraph that says: "This is the paradox/lesson at the heart of [topic]." Then state the thesis. The bridge is the hinge between imagination and argument.
25
+
26
+ ### Section-by-Section Escalation
27
+
28
+ The article follows a 7-section architecture, each with a distinct function:
29
+
30
+ | # | Section Function | Content Type |
31
+ |---|---|---|
32
+ | 1 | Cold Open | Scene (Roman soldier) |
33
+ | 2 | Concrete Example | Baltic Cable: the "what" |
34
+ | 3 | Technical Explanation | The Duck Curve: the "why" |
35
+ | 4 | Data and Numbers | EU interconnection targets: the "how big" |
36
+ | 5 | Geopolitical Layer | NordLink, Nord Stream sabotage: the "who" |
37
+ | 6 | Thematic Elevation | Trust as scarcest resource: the "so what" |
38
+ | 7 | Circular Close | Returns to Roman roads metaphor |
39
+
40
+ **Rule:** Each section does ONE job. Do not mix explanation with data with geopolitics in the same section. The reader should always know which *mode* they are in.
41
+
42
+ ### The Section Divider
43
+
44
+ Sections are separated by `---` (horizontal rules). No numbered headers, no "Section 1: The Problem." The divider is invisible architecture.
45
+
46
+ **Rule:** Use horizontal rules or whitespace breaks between major sections. Never number sections or use "First... Second... Finally." Let the content carry the structure.
47
+
48
+ ---
49
+
50
+ ## 2. Voice and Style
51
+
52
+ ### The Second-Person Immersion
53
+
54
+ Uses "you" and "your" in the cold open to place the reader inside the scene. Then shifts to third person for the analytical sections. The voice is direct, declarative, and unsentimental.
55
+
56
+ **Voice markers:**
57
+ - Short, punchy sentences: "Nobody cares." (3 words, standalone paragraph)
58
+ - Colloquial but precise: "the not-so-heroic stuff"
59
+ - No hedging: "The math isn't close." Not "the math seems to suggest"
60
+ - Period as a weapon: "The cable is the thing." Finality, authority
61
+
62
+ ### The Two-Sentence Rhythm
63
+
64
+ Most paragraphs follow a **setup-punchline** cadence. The first sentence sets context. The second sentence delivers the insight or turn. Occasionally a one-sentence paragraph appears as a "hammer" for emphasis.
65
+
66
+ **Example:**
67
+ > This is a legion on the move. And Rome didn't build an empire by pausing the march so everyone could get comfy shoes.
68
+
69
+ **Example (hammer):**
70
+ > Nobody cares. (standalone)
71
+
72
+ ### Concrete Before Abstract
73
+
74
+ Every abstract claim is preceded by a specific, tangible detail. The author never states a principle without first grounding it in something the reader can see, touch, or imagine.
75
+
76
+ **Abstract to Concrete mappings:**
77
+ - "Infrastructure moves civilization forward" becomes "a 250-kilometer submarine power line beneath the waves"
78
+ - "Renewable intermittency is a problem" becomes "the duck curve because the net demand chart looks like a duck"
79
+ - "Geopolitics complicates cables" becomes "Russia has been known to run military exercises near undersea cables"
80
+
81
+ ---
82
+
83
+ ## 3. Research and Data Patterns
84
+
85
+ ### The Specificity Stack
86
+
87
+ Data is always paired with interpretation. Numbers never stand alone. The formula is: **Number + What it means + Why it matters**.
88
+
89
+ **Example (three layers):**
90
+ 1. Raw number: "14 gigawatts of interconnection capacity"
91
+ 2. Comparison: "roughly equivalent to the output of 14 nuclear power plants"
92
+ 3. Grounding: "That's 14 nuclear plants' worth of electricity moving through cables you can't see, across ocean floors you'll never visit, governed by treaties you probably haven't read"
93
+
94
+ ### Named Sources and Dates
95
+
96
+ Every data point traces to a named institution and a specific year:
97
+ - "California Independent System Operator since 2013"
98
+ - "European Commission estimates approximately 58 billion euros by 2030"
99
+ - "International Energy Agency estimates 180-200 billion euros annually by 2050"
100
+ - "Nord Stream pipelines were sabotaged in 2022"
101
+
102
+ **Rule:** Never say "studies show" or "experts say." Name the institution, give the date, provide the number. Specificity equals credibility.
103
+
104
+ ### The Cost-Benefit Frame
105
+
106
+ When presenting data, the author almost always presents both sides of a cost/benefit comparison, then lets the asymmetry speak for itself.
107
+
108
+ **Example:**
109
+ > "58 billion euros to build the cables" vs. "180-200 billion euros annually to NOT build them"
110
+
111
+ Followed by: "The math isn't close." One sentence. No elaboration needed.
112
+
113
+ ---
114
+
115
+ ## 4. Narrative Devices
116
+
117
+ ### The Circular Frame
118
+
119
+ The article begins and ends with the same metaphor (Roman roads/legionnaires). The closing paragraphs explicitly echo the opening imagery, creating a sense of completeness. But the return is not repetition. It is *elevation*. The metaphor has been enriched by everything in between.
120
+
121
+ **Opening:**
122
+ > Everything that does take up space: the gear, the food, the water. That's what wins wars.
123
+
124
+ **Closing:**
125
+ > The Roman soldier didn't win because he carried everything himself. He won because the empire had supply lines. Roads. Cables. Connections.
126
+
127
+ ### The One-Word Echo
128
+
129
+ Key words and phrases recur across sections like musical motifs: "the thing," "the road," "the cable." These echoes build cumulative emphasis without explicit restatement.
130
+
131
+ **Recurring motif progression:**
132
+ - "Glorious speeches don't fill stomachs. **Swords win battles, not slogans.**"
133
+ - "**The cable is the thing.**"
134
+ - "**The road is the thing.**"
135
+
136
+ ### The Rhetorical Question (Used Sparingly)
137
+
138
+ Only one rhetorical question appears: "So why isn't it happening faster?" It appears at the 70% mark as a pivot from exposition to analysis. The restraint makes it effective.
139
+
140
+ **Rule:** Use rhetorical questions only once per article, and only as a section pivot. Never as an opener or closer.
141
+
142
+ ### The Emotional Micro-Burst
143
+
144
+ Within analytical sections, brief emotional beats appear. Not sentimentality. A moment of human connection that prevents the piece from feeling like a whitepaper.
145
+
146
+ **Examples:**
147
+ - "It's heavy in the way that makes you think of your 6-year-old back home"
148
+ - "a declaration of mutual dependence: we will keep the lights on for you, and you will keep the lights on for us"
149
+ - "trust, in the energy world, is the scarcest resource of all"
150
+
151
+ ---
152
+
153
+ ## 5. Formula Summary
154
+
155
+ | Element | Pattern | Rule |
156
+ |---|---|---|
157
+ | Opening | Cinematic cold open scene | Drop reader INTO a moment. No throat-clearing. |
158
+ | Bridge | Single pivot paragraph | "This is the paradox at the heart of [X]:" then thesis |
159
+ | Body sections | 7 sections, each with ONE job | Scene, Example, Technical, Data, Geopolitics, Theme, Close |
160
+ | Data | Specificity Stack | Never a bare number. Always interpret. |
161
+ | Voice | Two-sentence rhythm + hammer paragraphs | Setup-punchline. Standalone sentences for emphasis. |
162
+ | Tone | Direct, unsentimental, no hedging | "The math isn't close" not "the math seems to suggest" |
163
+ | Research | Named institutions + dates | Never "studies show." Always name + year + number. |
164
+ | Motif | Recurring one-word echoes | "the thing," "the road," "the cable" as musical motifs |
165
+ | Closing | Circular frame (echo opening) | Return to opening metaphor, elevated by everything between |
166
+ | Dividers | Horizontal rules, no section numbers | Invisible architecture. Content carries structure. |