@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,179 @@
1
+ ---
2
+ name: auto-indexing
3
+ description: Automatically submit published articles to participating search engines (Bing, Yandex, Seznam via IndexNow) for faster indexing. Google is NOT an IndexNow participant — Google indexing requires sitemap submission in Search Console + manual URL inspection there.
4
+ ---
5
+
6
+ # Auto-Indexing Skill
7
+
8
+ Automatically submit published articles to search engines for faster indexing.
9
+
10
+ ## Purpose
11
+
12
+ After validating your site with Bing Webmaster Tools, this skill automates the indexing-ping process for every new article you publish. No manual submission required for IndexNow-participant engines.
13
+
14
+ **CRITICAL — Google coverage gap:** Google never joined IndexNow and deprecated its sitemap ping endpoint (2023). IndexNow submissions do NOT reach Google in any way. For Google you must: (1) submit your sitemap in Google Search Console, and (2) optionally request indexing per-URL via Search Console URL Inspection ("Request indexing").
15
+
16
+ ## When to Use
17
+
18
+ **Invoke this skill**:
19
+ - After publishing a new blog article
20
+ - After updating an existing article significantly
21
+ - When you want to force re-indexing of a page
22
+
23
+ **Trigger phrases**:
24
+ - "submit the article for indexing"
25
+ - "index this article"
26
+ - "notify search engines about the new article"
27
+ - "auto-index the published article"
28
+
29
+ ## What It Does
30
+
31
+ 1. **IndexNow Protocol** (Priority Method)
32
+ - Instantly notifies participating engines: Bing, Yandex, Seznam, Naver (+ all IndexNow participants) — **NOT Google**
33
+ - No API limits, completely free
34
+ - Typically crawled within 24-48 hours by participants
35
+
36
+ 2. **Sitemap Submission** (Google path)
37
+ - Google ignores IndexNow and killed its ping endpoint (`google.com/ping?sitemap=` → 404, deprecated 2023; Bing's → 410)
38
+ - Submit the sitemap once in Google Search Console → Sitemaps; Google then discovers new URLs from it
39
+ - Per-URL acceleration: Search Console → URL Inspection → "Request indexing" (UI only — no API)
40
+
41
+ 3. **Key Management**
42
+ - Auto-generates IndexNow key on first use
43
+ - Saves key to `.indexnow-key.txt`
44
+ - Provides instructions for uploading key file to site
45
+
46
+ ## Prerequisites
47
+
48
+ **One-time setup** (after validating your site):
49
+
50
+ 1. **Verify ownership** in Google Search Console and Bing Webmaster Tools
51
+ 2. **Upload IndexNow key** to your site root (skill will generate and guide you)
52
+
53
+ That's it! After initial setup, indexing is fully automated.
54
+
55
+ ## How to Use
56
+
57
+ ### Basic Usage
58
+
59
+ ```
60
+ Skill: auto-indexing
61
+
62
+ User provides:
63
+ - Article URL: https://www.thegptshop.online/blog/monetize-custom-gpts-2025
64
+ ```
65
+
66
+ ### Advanced Usage
67
+
68
+ ```
69
+ Skill: auto-indexing
70
+
71
+ With options:
72
+ - Article URL: https://example.com/blog/article
73
+ - Sitemap URL: https://example.com/sitemap.xml (optional, auto-detected)
74
+ - Force re-index: true (for updated articles)
75
+ ```
76
+
77
+ ## Integration with Publishing Workflow
78
+
79
+ **Recommended workflow**:
80
+ 1. Publish article with `github-blog-publisher` skill
81
+ 2. Verify article is live
82
+ 3. Invoke `auto-indexing` skill
83
+ 4. Skill notifies all search engines automatically
84
+
85
+ **Optional automation**: Add to github-blog-publisher post-publish hook
86
+
87
+ ## Technical Details
88
+
89
+ **Methods Used**:
90
+ - **IndexNow**: HTTP POST to api.indexnow.org (Bing, Yandex, Seznam + participants — NOT Google)
91
+ - **Sitemap Ping**: DEPRECATED — Google endpoint 404, Bing endpoint 410 (live-verified 2026-09). Do not rely on it.
92
+ - **Google Indexing API**: Limited to JobPosting/BroadcastEvent types only; not applicable to blog content
93
+
94
+ **Timeline**:
95
+ - Submission: Instant (< 5 seconds)
96
+ - Crawling by IndexNow participants: 24-48 hours
97
+ - Google: no fixed timeline — depends on sitemap submission in GSC, crawl budget, and internal links
98
+
99
+ **Cost**: Free (no API limits, no rate limits)
100
+
101
+ ## Outputs
102
+
103
+ **Success**:
104
+ ```
105
+ ✅ IndexNow submission successful
106
+ Notified: Bing, Yandex, Seznam (+ all IndexNow participants)
107
+ ✨ Article submitted for crawling!
108
+ Expected: Crawled by participants within 24-48 hours
109
+ ℹ️ Google NOT notified — submit sitemap in Search Console and/or use URL Inspection → Request indexing
110
+ ```
111
+
112
+ **First-time setup**:
113
+ ```
114
+ 🔑 Generated new IndexNow key: abc123...
115
+ 📝 Key saved to: .indexnow-key.txt
116
+
117
+ ⚠️ IMPORTANT: Upload this key file to your site root:
118
+ https://thegptshop.online/abc123....txt
119
+ Content: abc123...
120
+ ```
121
+
122
+ ## Troubleshooting
123
+
124
+ **Key file not uploaded**:
125
+ - Skill generates key and provides upload instructions
126
+ - Upload to `public/[key].txt` in your Next.js site
127
+ - Redeploy site after uploading key
128
+
129
+ **Submission failed**:
130
+ - Check network connectivity
131
+ - Verify site URL is correct
132
+ - Check Search Console for manual submission as fallback
133
+
134
+ **Article not indexed after 72 hours**:
135
+ - Verify robots.txt allows crawling
136
+ - Check Google Search Console > Coverage report
137
+ - Add internal links to the article
138
+ - Request manual indexing in Search Console
139
+
140
+ ## Examples
141
+
142
+ ### Example 1: Index New Article
143
+ ```
144
+ User: "I just published the Custom GPTs article, can you submit it for indexing?"
145
+ Assistant: "I'll submit your article to search engines for automatic indexing."
146
+ *Invokes auto-indexing skill*
147
+ Result: Article submitted to Bing, Yandex, Seznam via IndexNow (Google requires GSC sitemap submission / URL Inspection)
148
+ ```
149
+
150
+ ### Example 2: After Publishing Workflow
151
+ ```
152
+ User: "Publish this article about AI automation"
153
+ Assistant: *Uses github-blog-publisher skill*
154
+ Assistant: "Article published successfully! Would you like me to submit it for search engine indexing?"
155
+ User: "Yes"
156
+ Assistant: *Invokes auto-indexing skill*
157
+ Result: Crawled by IndexNow participants within 24-48 hours (Google indexing depends on GSC sitemap + crawl)
158
+ ```
159
+
160
+ ### Example 3: Re-index Updated Article
161
+ ```
162
+ User: "I updated the monetization guide, can you re-submit it for indexing?"
163
+ Assistant: *Invokes auto-indexing skill with force flag*
164
+ Result: Search engines notified of updated content
165
+ ```
166
+
167
+ ## Notes
168
+
169
+ - **No rate limits**: Unlike Google Indexing API, IndexNow has no submission limits
170
+ - **Multiple search engines**: One submission notifies all participating search engines
171
+ - **Instant notification**: Submission completes in seconds
172
+ - **Free forever**: No API costs or subscription fees
173
+ - **Works globally, EXCEPT Google**: IndexNow participants cover Bing/Yandex/Seznam/Naver traffic — Google (~90% of global search) is NOT covered and needs Search Console workflows
174
+
175
+ ## Files
176
+
177
+ - `/scripts/auto-indexing.js` - Core indexing logic
178
+ - `.indexnow-key.txt` - Generated IndexNow key (gitignored)
179
+ - Integration with github-blog-publisher skill
@@ -0,0 +1,257 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Automated Search Engine Indexing
5
+ *
6
+ * Automatically submits URLs to search engines after publishing
7
+ *
8
+ * Methods:
9
+ * 1. IndexNow Protocol - Instant notification (Google, Bing, Yandex, Seznam)
10
+ * 2. Google Indexing API - Priority indexing for critical pages
11
+ * 3. Sitemap ping - Standard notification method
12
+ *
13
+ * Usage:
14
+ * node auto-indexing.js --url "https://example.com/blog/article" --sitemap "https://example.com/sitemap.xml"
15
+ */
16
+
17
+ const https = require('https');
18
+ const http = require('http');
19
+ const crypto = require('crypto');
20
+ const fs = require('fs').promises;
21
+ const path = require('path');
22
+
23
+ class AutoIndexing {
24
+ constructor(siteUrl) {
25
+ this.siteUrl = siteUrl;
26
+ this.indexNowKey = null;
27
+ }
28
+
29
+ /**
30
+ * Generate or load IndexNow key
31
+ */
32
+ async getIndexNowKey() {
33
+ if (this.indexNowKey) return this.indexNowKey;
34
+
35
+ const keyPath = path.join(process.cwd(), '.indexnow-key.txt');
36
+
37
+ try {
38
+ // Try to load existing key
39
+ this.indexNowKey = await fs.readFile(keyPath, 'utf-8');
40
+ console.log('✅ Loaded existing IndexNow key');
41
+ } catch (error) {
42
+ // Generate new key
43
+ this.indexNowKey = crypto.randomBytes(32).toString('hex');
44
+ await fs.writeFile(keyPath, this.indexNowKey);
45
+ console.log('🔑 Generated new IndexNow key:', this.indexNowKey);
46
+ console.log(`📝 Key saved to: ${keyPath}`);
47
+ console.log(`\n⚠️ IMPORTANT: Upload this key file to your site root:`);
48
+ console.log(` https://${new URL(this.siteUrl).hostname}/${this.indexNowKey}.txt`);
49
+ console.log(` Content: ${this.indexNowKey}\n`);
50
+ }
51
+
52
+ return this.indexNowKey;
53
+ }
54
+
55
+ /**
56
+ * Submit URL via IndexNow protocol
57
+ * @param {string[]} urls - URLs to submit
58
+ * @returns {Promise<boolean>}
59
+ */
60
+ async submitIndexNow(urls) {
61
+ const key = await this.getIndexNowKey();
62
+ const hostname = new URL(this.siteUrl).hostname;
63
+
64
+ const payload = {
65
+ host: hostname,
66
+ key: key,
67
+ keyLocation: `https://${hostname}/${key}.txt`,
68
+ urlList: urls
69
+ };
70
+
71
+ return new Promise((resolve, reject) => {
72
+ const data = JSON.stringify(payload);
73
+ const options = {
74
+ hostname: 'api.indexnow.org',
75
+ path: '/indexnow',
76
+ method: 'POST',
77
+ headers: {
78
+ 'Content-Type': 'application/json',
79
+ 'Content-Length': data.length
80
+ }
81
+ };
82
+
83
+ console.log('\n📡 Submitting to IndexNow...');
84
+ console.log(`URLs: ${urls.join(', ')}`);
85
+
86
+ const req = https.request(options, (res) => {
87
+ if (res.statusCode === 200 || res.statusCode === 202) {
88
+ console.log('✅ IndexNow submission successful');
89
+ console.log(' Status:', res.statusCode);
90
+ console.log(' Notified: Google, Bing, Yandex, Seznam');
91
+ resolve(true);
92
+ } else {
93
+ console.error('❌ IndexNow submission failed');
94
+ console.error(' Status:', res.statusCode);
95
+ resolve(false);
96
+ }
97
+ });
98
+
99
+ req.on('error', (error) => {
100
+ console.error('❌ IndexNow request error:', error.message);
101
+ resolve(false);
102
+ });
103
+
104
+ req.write(data);
105
+ req.end();
106
+ });
107
+ }
108
+
109
+ /**
110
+ * Ping sitemap to search engines
111
+ * @param {string} sitemapUrl - Full URL to sitemap
112
+ */
113
+ async pingSitemap(sitemapUrl) {
114
+ console.log('\n📍 Pinging sitemap to search engines...');
115
+
116
+ const engines = [
117
+ {
118
+ name: 'Google',
119
+ url: `https://www.google.com/ping?sitemap=${encodeURIComponent(sitemapUrl)}`
120
+ },
121
+ {
122
+ name: 'Bing',
123
+ url: `https://www.bing.com/ping?sitemap=${encodeURIComponent(sitemapUrl)}`
124
+ }
125
+ ];
126
+
127
+ const results = await Promise.allSettled(
128
+ engines.map(engine => this.pingUrl(engine.url, engine.name))
129
+ );
130
+
131
+ const successful = results.filter(r => r.status === 'fulfilled' && r.value).length;
132
+ console.log(`✅ Sitemap pinged successfully to ${successful}/${engines.length} search engines`);
133
+ }
134
+
135
+ /**
136
+ * Ping a URL
137
+ */
138
+ async pingUrl(url, name) {
139
+ return new Promise((resolve) => {
140
+ const client = url.startsWith('https') ? https : http;
141
+
142
+ client.get(url, (res) => {
143
+ if (res.statusCode === 200) {
144
+ console.log(` ✓ ${name}`);
145
+ resolve(true);
146
+ } else {
147
+ console.log(` ✗ ${name} (${res.statusCode})`);
148
+ resolve(false);
149
+ }
150
+ }).on('error', (error) => {
151
+ console.log(` ✗ ${name} (${error.message})`);
152
+ resolve(false);
153
+ });
154
+ });
155
+ }
156
+
157
+ /**
158
+ * Submit URL to Google Indexing API
159
+ * Requires service account credentials
160
+ * @param {string} url - URL to index
161
+ */
162
+ async submitGoogleIndexingAPI(url) {
163
+ // This requires Google Cloud service account setup
164
+ // For now, we'll use IndexNow which is simpler and free
165
+ console.log('\n💡 Google Indexing API requires service account setup');
166
+ console.log(' Using IndexNow instead (instant, free, no limits)');
167
+ return false;
168
+ }
169
+
170
+ /**
171
+ * Complete indexing workflow
172
+ * @param {string} articleUrl - URL of published article
173
+ * @param {string} sitemapUrl - URL of sitemap
174
+ */
175
+ async indexArticle(articleUrl, sitemapUrl) {
176
+ console.log('\n🚀 Starting automated indexing workflow...');
177
+ console.log(`Article: ${articleUrl}`);
178
+ console.log(`Sitemap: ${sitemapUrl}`);
179
+
180
+ const results = {
181
+ indexNow: false,
182
+ sitemapPing: false,
183
+ timestamp: new Date().toISOString()
184
+ };
185
+
186
+ // 1. IndexNow (priority method)
187
+ try {
188
+ results.indexNow = await this.submitIndexNow([articleUrl]);
189
+ } catch (error) {
190
+ console.error('IndexNow error:', error.message);
191
+ }
192
+
193
+ // 2. Sitemap ping (fallback)
194
+ try {
195
+ await this.pingSitemap(sitemapUrl);
196
+ results.sitemapPing = true;
197
+ } catch (error) {
198
+ console.error('Sitemap ping error:', error.message);
199
+ }
200
+
201
+ // Summary
202
+ console.log('\n📊 Indexing Summary:');
203
+ console.log(` IndexNow: ${results.indexNow ? '✅ Success' : '❌ Failed'}`);
204
+ console.log(` Sitemap Ping: ${results.sitemapPing ? '✅ Success' : '❌ Failed'}`);
205
+
206
+ if (results.indexNow || results.sitemapPing) {
207
+ console.log('\n✨ Article submitted for indexing!');
208
+ console.log(' Expected: Indexed within 24-48 hours');
209
+ } else {
210
+ console.log('\n⚠️ All methods failed - manual submission required');
211
+ }
212
+
213
+ return results;
214
+ }
215
+ }
216
+
217
+ // CLI usage
218
+ async function main() {
219
+ const args = process.argv.slice(2);
220
+
221
+ // Parse arguments
222
+ let articleUrl = null;
223
+ let sitemapUrl = null;
224
+
225
+ for (let i = 0; i < args.length; i++) {
226
+ if (args[i] === '--url' && args[i + 1]) {
227
+ articleUrl = args[i + 1];
228
+ }
229
+ if (args[i] === '--sitemap' && args[i + 1]) {
230
+ sitemapUrl = args[i + 1];
231
+ }
232
+ }
233
+
234
+ if (!articleUrl) {
235
+ console.error('❌ Missing --url parameter');
236
+ console.log('\nUsage:');
237
+ console.log(' node auto-indexing.js --url "https://example.com/article" --sitemap "https://example.com/sitemap.xml"');
238
+ process.exit(1);
239
+ }
240
+
241
+ // Extract site URL from article URL
242
+ const siteUrl = new URL(articleUrl).origin;
243
+
244
+ // Default sitemap if not provided
245
+ if (!sitemapUrl) {
246
+ sitemapUrl = `${siteUrl}/sitemap.xml`;
247
+ }
248
+
249
+ const indexer = new AutoIndexing(siteUrl);
250
+ await indexer.indexArticle(articleUrl, sitemapUrl);
251
+ }
252
+
253
+ if (require.main === module) {
254
+ main().catch(console.error);
255
+ }
256
+
257
+ module.exports = { AutoIndexing };
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: auto-skill
3
+ description: "Automatic skill development pipeline. Detects repetitive tasks and user corrections, then creates or improves skills accordingly."
4
+ allowed-tools: []
5
+ ---
6
+
7
+ # /auto-skill — Automatic Skill Development
8
+
9
+ Detects corrections and repetitive patterns, then creates or improves skills with dedup protection and git versioning.
10
+
11
+ ## How It Works
12
+
13
+ Three detection mechanisms feed a queue, and this skill processes it:
14
+
15
+ 1. **Correction detection** — User frustration/correction patterns auto-queue skill improvements
16
+ 2. **Repetition detection** — Same task pattern 2+ times suggests skill extraction
17
+ 3. **Excellence detection** — Exceptional output flagged by user ("this is fucking good," "save this pattern") triggers skill extraction to make it repeatable
18
+ 4. **Skill routing** — High-confidence skill matches auto-load (0.8+), medium confidence suggests (0.6+)
19
+
20
+ ## On Activation
21
+
22
+ 1. Read `memory/skill-queue.md` for pending items
23
+ 2. If queue is empty, report: "No pending skill improvements."
24
+ 3. If queue has items, process each one
25
+
26
+ ## Phase 1: Process Corrections
27
+
28
+ For each correction in the queue:
29
+
30
+ 1. **Dedup check** — Run `findDuplicateSkill()` against all existing skills
31
+ 2. **If match > 0.7** — IMPROVE existing skill:
32
+ - Read the matching SKILL.md
33
+ - Add the correction to Anti-Patterns table
34
+ - Git commit: `skill(<name>): add correction — <summary>`
35
+ 3. **If no match** — Draft new skill:
36
+ - Create entry in queue with `status: pending-approval`
37
+ - Present to user for approval before creating
38
+ - NEVER auto-create without human approval
39
+
40
+ ## Phase 2: Process Repetitions
41
+
42
+ For each repetition (2+ occurrences of same pattern):
43
+
44
+ 1. **Check if existing skill covers it** — Fuzzy match against skill index
45
+ 2. **If covered** — Add to that skill's Anti-Patterns: "Agent improvised instead of using this skill"
46
+ 3. **If not covered** — Draft new skill with:
47
+ - Name derived from the repeated pattern
48
+ - Description capturing what was repeated
49
+ - Status: `pending-approval`
50
+ - Present to user for approval
51
+
52
+ ## Phase 3: Process Excellence (Capture Repeatable Greatness)
53
+
54
+ For each excellence flag (user says "this is great," "save this," "make it repeatable"):
55
+
56
+ 1. **Extract the pattern** — What made it work? (structure, voice, specific techniques, prompt chains)
57
+ 2. **Check existing skill coverage** — Does a skill already produce this quality?
58
+ 3. **If skill exists** — Add the winning pattern as "Golden Path" example in that skill
59
+ 4. **If no skill covers it** — Draft new skill with:
60
+ - Name from the pattern (e.g., "landing-page-architect" from a great landing page session)
61
+ - Description capturing the repeatable method
62
+ - Include the actual working output as reference example
63
+ - Status: `pending-approval`
64
+ - Present to user: "You said [X] was excellent. Here's a skill draft to make it repeatable. Approve?"
65
+
66
+ ## Phase 4: Git Versioning
67
+
68
+ Every skill mutation:
69
+
70
+ 1. Backup current SKILL.md to `skill-history/<name>-<timestamp>.md`
71
+ 2. Apply the improvement
72
+ 3. Git commit with semantic message: `skill(<name>): <verb> — <reason>`
73
+ 4. Append to CHANGELOG.md in skill directory
74
+
75
+ Verbs: `improve`, `fix-trigger`, `add-anti-pattern`, `merge-from(<source>)`, `create`, `add-golden-path`
76
+
77
+ ## Phase 5: Update Skill Index
78
+
79
+ After processing, rebuild `memory/skill-index.json`:
80
+
81
+ ```javascript
82
+ // Regenerate the cached index with updated skills
83
+ node -e "const { buildSkillIndex } = require('./.agents/skills/auto-skill/skill-router.js'); ..."
84
+ ```
85
+
86
+ ## Anti-Patterns
87
+
88
+ | Mistake | Why Wrong | Fix |
89
+ |---------|-----------|-----|
90
+ | Creating duplicate skill | 5 blog skills instead of 1 improved one | Always dedup check first |
91
+ | Auto-creating without approval | User loses trust, low quality | New skills need human approval |
92
+ | Skipping git commit | Can't revert bad improvements | Every mutation gets committed |
93
+ | Ignoring skill-router matches | Agent improvises instead of using skill | Auto-load at 0.8+ confidence |
94
+ | **Improvising instead of using skill** | "I can do this better manually" | **ALWAYS check skills first (1b Skill-First Protocol)** |
95
+
96
+ ## Key Rules
97
+
98
+ - **Auto-USE at 0.8+ confidence** — Don't suggest, just load and execute the skill
99
+ - **Suggest at 0.6-0.8** — Present as option
100
+ - **2 repetitions** = suggest skill creation
101
+ - **Every correction = its own git commit**
102
+ - **New skills require human approval**
103
+ - **Always improve existing before creating new**
104
+ - **Excellence flag = extract pattern within same session** — don't let great work evaporate
105
+
106
+ ## Integration Points
107
+
108
+ - **memory-system plugin** — Correction detection + skill routing hooks
109
+ - **correction-queue.js** — Queue management module
110
+ - **dedup.js** — Dedup + git versioning module
111
+ - **skill-router.js** — Fuzzy matching + auto-load module
112
+
113
+ ## File Structure
114
+
115
+ ```
116
+ .agents/skills/auto-skill/
117
+ ├── SKILL.md ← this file
118
+ ├── skill-router.js ← fuzzy matching + auto-load
119
+ ├── correction-queue.js ← queue management
120
+ └── dedup.js ← dedup + git versioning
121
+ ```
122
+
123
+ ## Queue File Format
124
+
125
+ `memory/skill-queue.md` entries:
126
+
127
+ ```markdown
128
+ ## Correction — 2026-05-09T18:00:00Z
129
+ - **status:** pending
130
+ - **type:** correction
131
+ - **text:** Why aren't you using the hook generation skill for article titles?
132
+ - **context:** Blog publishing pipeline, Step 1
133
+ - **queued:** 2026-05-09T18:00:00Z
134
+
135
+ ## Repetition — 2026-05-09T18:30:00Z
136
+ - **status:** pending-approval
137
+ - **type:** repetition
138
+ - **pattern:** Generating LinkedIn posts from blog content
139
+ - **count:** 2
140
+ - **context:** content-atomizer runs
141
+ - **queued:** 2026-05-09T18:30:00Z
142
+
143
+ ## Excellence — 2026-06-15T14:00:00Z
144
+ - **status:** pending-approval
145
+ - **type:** excellence
146
+ - **text:** "This landing page is fucking good — make it repeatable"
147
+ - **pattern:** Landing page built section-by-section with 8-section architecture, psychology-aligned CTAs, verification gates
148
+ - **reference_output:** /tmp/landing-page-output.md
149
+ - **context:** landing-page-architect run
150
+ - **queued:** 2026-06-15T14:00:00Z
151
+ ```
@@ -0,0 +1,102 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+
4
+ const QUEUE_FILE = 'memory/skill-queue.md';
5
+ const INDEX_FILE = 'memory/skill-index.json';
6
+
7
+ function ensureQueueFile(projectDir) {
8
+ const queuePath = path.join(projectDir, QUEUE_FILE);
9
+ if (!fs.existsSync(queuePath)) {
10
+ const header = `# Skill Queue
11
+ # Auto-managed by auto-skill system. Do not edit manually.
12
+ # Status values: pending, pending-approval, processing, done, rejected
13
+
14
+ `;
15
+ fs.mkdirSync(path.dirname(queuePath), { recursive: true });
16
+ fs.writeFileSync(queuePath, header, 'utf-8');
17
+ }
18
+ return queuePath;
19
+ }
20
+
21
+ export function queueCorrection(projectDir, correctionText, context = '') {
22
+ const queuePath = ensureQueueFile(projectDir);
23
+ const now = new Date().toISOString();
24
+ const entry = `
25
+ ## Correction — ${now}
26
+ - **status:** pending
27
+ - **type:** correction
28
+ - **text:** ${correctionText.replace(/\n/g, ' ').slice(0, 500)}
29
+ - **context:** ${context.replace(/\n/g, ' ').slice(0, 300) || 'none'}
30
+ - **queued:** ${now}
31
+
32
+ `;
33
+ fs.appendFileSync(queuePath, entry, 'utf-8');
34
+ return true;
35
+ }
36
+
37
+ export function queueRepetition(projectDir, pattern, count, context = '') {
38
+ const queuePath = ensureQueueFile(projectDir);
39
+ const now = new Date().toISOString();
40
+ const entry = `
41
+ ## Repetition — ${now}
42
+ - **status:** pending-approval
43
+ - **type:** repetition
44
+ - **pattern:** ${pattern.replace(/\n/g, ' ').slice(0, 500)}
45
+ - **count:** ${count}
46
+ - **context:** ${context.replace(/\n/g, ' ').slice(0, 300) || 'none'}
47
+ - **queued:** ${now}
48
+
49
+ `;
50
+ fs.appendFileSync(queuePath, entry, 'utf-8');
51
+ return true;
52
+ }
53
+
54
+ export function readQueue(projectDir) {
55
+ const queuePath = path.join(projectDir, QUEUE_FILE);
56
+ if (!fs.existsSync(queuePath)) return [];
57
+ const content = fs.readFileSync(queuePath, 'utf-8');
58
+ const entries = [];
59
+ const sections = content.split(/^## /m).filter(Boolean);
60
+ for (const section of sections) {
61
+ if (section.startsWith('#') || section.startsWith('Skill Queue')) continue;
62
+ const lines = section.split('\n');
63
+ const header = lines[0];
64
+ const props = {};
65
+ for (const line of lines.slice(1)) {
66
+ const match = line.match(/^- \*\*(\w+):\*\*\s*(.+)/);
67
+ if (match) props[match[1]] = match[2].trim();
68
+ }
69
+ if (props.status && props.status !== 'done' && props.status !== 'rejected') {
70
+ entries.push({
71
+ header,
72
+ ...props,
73
+ rawSection: section,
74
+ });
75
+ }
76
+ }
77
+ return entries;
78
+ }
79
+
80
+ export function markQueueEntryDone(projectDir, header) {
81
+ const queuePath = path.join(projectDir, QUEUE_FILE);
82
+ if (!fs.existsSync(queuePath)) return false;
83
+ let content = fs.readFileSync(queuePath, 'utf-8');
84
+ const escapedHeader = header.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
85
+ const regex = new RegExp(`(- \\*\\*status:\\*\\*\\s*)(pending|pending-approval|processing)(\\n.*${escapedHeader.slice(0, 30)})`, 's');
86
+ content = content.replace(
87
+ new RegExp(`## ${escapedHeader.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`, 'g'),
88
+ `## ${header}`
89
+ );
90
+ const entryRegex = new RegExp(
91
+ `## ${escapedHeader}[^#]*?- \\*\\*status:\\*\\*\\s*\\w+`,
92
+ 's'
93
+ );
94
+ content = content.replace(
95
+ entryRegex,
96
+ (match) => match.replace(/- \*\*status:\*\*\s*\w+/, `- **status:** done`)
97
+ );
98
+ fs.writeFileSync(queuePath, content, 'utf-8');
99
+ return true;
100
+ }
101
+
102
+ export { QUEUE_FILE, INDEX_FILE };