@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.
- package/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +349 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
# Google Tag Manager Implementation Reference
|
|
2
|
+
|
|
3
|
+
Detailed guide for implementing tracking via Google Tag Manager.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
- Container Structure (tags, triggers, variables)
|
|
7
|
+
- Naming Conventions
|
|
8
|
+
- Data Layer Patterns
|
|
9
|
+
- Common Tag Configurations (GA4 configuration tag, GA4 event tag, Facebook pixel)
|
|
10
|
+
- Preview and Debug
|
|
11
|
+
- Workspaces and Versioning
|
|
12
|
+
- Consent Management
|
|
13
|
+
- Advanced Patterns (tag sequencing, exception handling, custom JavaScript variables)
|
|
14
|
+
|
|
15
|
+
## Container Structure
|
|
16
|
+
|
|
17
|
+
### Tags
|
|
18
|
+
|
|
19
|
+
Tags are code snippets that execute when triggered.
|
|
20
|
+
|
|
21
|
+
**Common tag types:**
|
|
22
|
+
- GA4 Configuration (base setup)
|
|
23
|
+
- GA4 Event (custom events)
|
|
24
|
+
- Google Ads Conversion
|
|
25
|
+
- Facebook Pixel
|
|
26
|
+
- LinkedIn Insight Tag
|
|
27
|
+
- Custom HTML (for other pixels)
|
|
28
|
+
|
|
29
|
+
### Triggers
|
|
30
|
+
|
|
31
|
+
Triggers define when tags fire.
|
|
32
|
+
|
|
33
|
+
**Built-in triggers:**
|
|
34
|
+
- Page View: All Pages, DOM Ready, Window Loaded
|
|
35
|
+
- Click: All Elements, Just Links
|
|
36
|
+
- Form Submission
|
|
37
|
+
- Scroll Depth
|
|
38
|
+
- Timer
|
|
39
|
+
- Element Visibility
|
|
40
|
+
|
|
41
|
+
**Custom triggers:**
|
|
42
|
+
- Custom Event (from dataLayer)
|
|
43
|
+
- Trigger Groups (multiple conditions)
|
|
44
|
+
|
|
45
|
+
### Variables
|
|
46
|
+
|
|
47
|
+
Variables capture dynamic values.
|
|
48
|
+
|
|
49
|
+
**Built-in (enable as needed):**
|
|
50
|
+
- Click Text, Click URL, Click ID, Click Classes
|
|
51
|
+
- Page Path, Page URL, Page Hostname
|
|
52
|
+
- Referrer
|
|
53
|
+
- Form Element, Form ID
|
|
54
|
+
|
|
55
|
+
**User-defined:**
|
|
56
|
+
- Data Layer variables
|
|
57
|
+
- JavaScript variables
|
|
58
|
+
- Lookup tables
|
|
59
|
+
- RegEx tables
|
|
60
|
+
- Constants
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Naming Conventions
|
|
65
|
+
|
|
66
|
+
### Recommended Format
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
[Type] - [Description] - [Detail]
|
|
70
|
+
|
|
71
|
+
Tags:
|
|
72
|
+
GA4 - Event - Signup Completed
|
|
73
|
+
GA4 - Config - Base Configuration
|
|
74
|
+
FB - Pixel - Page View
|
|
75
|
+
HTML - LiveChat Widget
|
|
76
|
+
|
|
77
|
+
Triggers:
|
|
78
|
+
Click - CTA Button
|
|
79
|
+
Submit - Contact Form
|
|
80
|
+
View - Pricing Page
|
|
81
|
+
Custom - signup_completed
|
|
82
|
+
|
|
83
|
+
Variables:
|
|
84
|
+
DL - user_id
|
|
85
|
+
JS - Current Timestamp
|
|
86
|
+
LT - Campaign Source Map
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Data Layer Patterns
|
|
92
|
+
|
|
93
|
+
### Basic Structure
|
|
94
|
+
|
|
95
|
+
```javascript
|
|
96
|
+
// Initialize (in <head> before GTM)
|
|
97
|
+
window.dataLayer = window.dataLayer || [];
|
|
98
|
+
|
|
99
|
+
// Push event
|
|
100
|
+
dataLayer.push({
|
|
101
|
+
'event': 'event_name',
|
|
102
|
+
'property1': 'value1',
|
|
103
|
+
'property2': 'value2'
|
|
104
|
+
});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Page Load Data
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
// Set on page load (before GTM container)
|
|
111
|
+
window.dataLayer = window.dataLayer || [];
|
|
112
|
+
dataLayer.push({
|
|
113
|
+
'pageType': 'product',
|
|
114
|
+
'contentGroup': 'products',
|
|
115
|
+
'user': {
|
|
116
|
+
'loggedIn': true,
|
|
117
|
+
'userId': '12345',
|
|
118
|
+
'userType': 'premium'
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Form Submission
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
document.querySelector('#contact-form').addEventListener('submit', function() {
|
|
127
|
+
dataLayer.push({
|
|
128
|
+
'event': 'form_submitted',
|
|
129
|
+
'formName': 'contact',
|
|
130
|
+
'formLocation': 'footer'
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Button Click
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
document.querySelector('.cta-button').addEventListener('click', function() {
|
|
139
|
+
dataLayer.push({
|
|
140
|
+
'event': 'cta_clicked',
|
|
141
|
+
'ctaText': this.innerText,
|
|
142
|
+
'ctaLocation': 'hero'
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### E-commerce Events
|
|
148
|
+
|
|
149
|
+
```javascript
|
|
150
|
+
// Product view
|
|
151
|
+
dataLayer.push({ ecommerce: null }); // Clear previous
|
|
152
|
+
dataLayer.push({
|
|
153
|
+
'event': 'view_item',
|
|
154
|
+
'ecommerce': {
|
|
155
|
+
'items': [{
|
|
156
|
+
'item_id': 'SKU123',
|
|
157
|
+
'item_name': 'Product Name',
|
|
158
|
+
'price': 99.99,
|
|
159
|
+
'item_category': 'Category',
|
|
160
|
+
'quantity': 1
|
|
161
|
+
}]
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Add to cart
|
|
166
|
+
dataLayer.push({ ecommerce: null });
|
|
167
|
+
dataLayer.push({
|
|
168
|
+
'event': 'add_to_cart',
|
|
169
|
+
'ecommerce': {
|
|
170
|
+
'items': [{
|
|
171
|
+
'item_id': 'SKU123',
|
|
172
|
+
'item_name': 'Product Name',
|
|
173
|
+
'price': 99.99,
|
|
174
|
+
'quantity': 1
|
|
175
|
+
}]
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Purchase
|
|
180
|
+
dataLayer.push({ ecommerce: null });
|
|
181
|
+
dataLayer.push({
|
|
182
|
+
'event': 'purchase',
|
|
183
|
+
'ecommerce': {
|
|
184
|
+
'transaction_id': 'T12345',
|
|
185
|
+
'value': 99.99,
|
|
186
|
+
'currency': 'USD',
|
|
187
|
+
'tax': 5.00,
|
|
188
|
+
'shipping': 10.00,
|
|
189
|
+
'items': [{
|
|
190
|
+
'item_id': 'SKU123',
|
|
191
|
+
'item_name': 'Product Name',
|
|
192
|
+
'price': 99.99,
|
|
193
|
+
'quantity': 1
|
|
194
|
+
}]
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Common Tag Configurations
|
|
202
|
+
|
|
203
|
+
### GA4 Configuration Tag
|
|
204
|
+
|
|
205
|
+
**Tag Type:** Google Analytics: GA4 Configuration
|
|
206
|
+
|
|
207
|
+
**Settings:**
|
|
208
|
+
- Measurement ID: G-XXXXXXXX
|
|
209
|
+
- Send page view: Checked (for pageviews)
|
|
210
|
+
- User Properties: Add any user-level dimensions
|
|
211
|
+
|
|
212
|
+
**Trigger:** All Pages
|
|
213
|
+
|
|
214
|
+
### GA4 Event Tag
|
|
215
|
+
|
|
216
|
+
**Tag Type:** Google Analytics: GA4 Event
|
|
217
|
+
|
|
218
|
+
**Settings:**
|
|
219
|
+
- Configuration Tag: Select your config tag
|
|
220
|
+
- Event Name: {{DL - event_name}} or hardcode
|
|
221
|
+
- Event Parameters: Add parameters from dataLayer
|
|
222
|
+
|
|
223
|
+
**Trigger:** Custom Event with event name match
|
|
224
|
+
|
|
225
|
+
### Facebook Pixel - Base
|
|
226
|
+
|
|
227
|
+
**Tag Type:** Custom HTML
|
|
228
|
+
|
|
229
|
+
```html
|
|
230
|
+
<script>
|
|
231
|
+
!function(f,b,e,v,n,t,s)
|
|
232
|
+
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
|
233
|
+
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
|
234
|
+
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
|
235
|
+
n.queue=[];t=b.createElement(e);t.async=!0;
|
|
236
|
+
t.src=v;s=b.getElementsByTagName(e)[0];
|
|
237
|
+
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
|
238
|
+
'https://connect.facebook.net/en_US/fbevents.js');
|
|
239
|
+
fbq('init', 'YOUR_PIXEL_ID');
|
|
240
|
+
fbq('track', 'PageView');
|
|
241
|
+
</script>
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Trigger:** All Pages
|
|
245
|
+
|
|
246
|
+
### Facebook Pixel - Event
|
|
247
|
+
|
|
248
|
+
**Tag Type:** Custom HTML
|
|
249
|
+
|
|
250
|
+
```html
|
|
251
|
+
<script>
|
|
252
|
+
fbq('track', 'Lead', {
|
|
253
|
+
content_name: '{{DL - form_name}}'
|
|
254
|
+
});
|
|
255
|
+
</script>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Trigger:** Custom Event - form_submitted
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Preview and Debug
|
|
263
|
+
|
|
264
|
+
### Preview Mode
|
|
265
|
+
|
|
266
|
+
1. Click "Preview" in GTM
|
|
267
|
+
2. Enter site URL
|
|
268
|
+
3. GTM debug panel opens at bottom
|
|
269
|
+
|
|
270
|
+
**What to check:**
|
|
271
|
+
- Tags fired on this event
|
|
272
|
+
- Tags not fired (and why)
|
|
273
|
+
- Variables and their values
|
|
274
|
+
- Data layer contents
|
|
275
|
+
|
|
276
|
+
### Debug Tips
|
|
277
|
+
|
|
278
|
+
**Tag not firing:**
|
|
279
|
+
- Check trigger conditions
|
|
280
|
+
- Verify data layer push
|
|
281
|
+
- Check tag sequencing
|
|
282
|
+
|
|
283
|
+
**Wrong variable value:**
|
|
284
|
+
- Check data layer structure
|
|
285
|
+
- Verify variable path (nested objects)
|
|
286
|
+
- Check timing (data may not exist yet)
|
|
287
|
+
|
|
288
|
+
**Multiple firings:**
|
|
289
|
+
- Check trigger uniqueness
|
|
290
|
+
- Look for duplicate tags
|
|
291
|
+
- Check tag firing options
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Workspaces and Versioning
|
|
296
|
+
|
|
297
|
+
### Workspaces
|
|
298
|
+
|
|
299
|
+
Use workspaces for team collaboration:
|
|
300
|
+
- Default workspace for production
|
|
301
|
+
- Separate workspaces for large changes
|
|
302
|
+
- Merge when ready
|
|
303
|
+
|
|
304
|
+
### Version Management
|
|
305
|
+
|
|
306
|
+
**Best practices:**
|
|
307
|
+
- Name every version descriptively
|
|
308
|
+
- Add notes explaining changes
|
|
309
|
+
- Review changes before publish
|
|
310
|
+
- Keep production version noted
|
|
311
|
+
|
|
312
|
+
**Version notes example:**
|
|
313
|
+
```
|
|
314
|
+
v15: Added purchase conversion tracking
|
|
315
|
+
- New tag: GA4 - Event - Purchase
|
|
316
|
+
- New trigger: Custom Event - purchase
|
|
317
|
+
- New variables: DL - transaction_id, DL - value
|
|
318
|
+
- Tested: Chrome, Safari, Mobile
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## Consent Management
|
|
324
|
+
|
|
325
|
+
### Consent Mode Integration
|
|
326
|
+
|
|
327
|
+
```javascript
|
|
328
|
+
// Default state (before consent)
|
|
329
|
+
gtag('consent', 'default', {
|
|
330
|
+
'analytics_storage': 'denied',
|
|
331
|
+
'ad_storage': 'denied'
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
// Update on consent
|
|
335
|
+
function grantConsent() {
|
|
336
|
+
gtag('consent', 'update', {
|
|
337
|
+
'analytics_storage': 'granted',
|
|
338
|
+
'ad_storage': 'granted'
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### GTM Consent Overview
|
|
344
|
+
|
|
345
|
+
1. Enable Consent Overview in Admin
|
|
346
|
+
2. Configure consent for each tag
|
|
347
|
+
3. Tags respect consent state automatically
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Advanced Patterns
|
|
352
|
+
|
|
353
|
+
### Tag Sequencing
|
|
354
|
+
|
|
355
|
+
**Setup tags to fire in order:**
|
|
356
|
+
Tag Configuration > Advanced Settings > Tag Sequencing
|
|
357
|
+
|
|
358
|
+
**Use cases:**
|
|
359
|
+
- Config tag before event tags
|
|
360
|
+
- Pixel initialization before tracking
|
|
361
|
+
- Cleanup after conversion
|
|
362
|
+
|
|
363
|
+
### Exception Handling
|
|
364
|
+
|
|
365
|
+
**Trigger exceptions** - Prevent tag from firing:
|
|
366
|
+
- Exclude certain pages
|
|
367
|
+
- Exclude internal traffic
|
|
368
|
+
- Exclude during testing
|
|
369
|
+
|
|
370
|
+
### Custom JavaScript Variables
|
|
371
|
+
|
|
372
|
+
```javascript
|
|
373
|
+
// Get URL parameter
|
|
374
|
+
function() {
|
|
375
|
+
var params = new URLSearchParams(window.location.search);
|
|
376
|
+
return params.get('campaign') || '(not set)';
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// Get cookie value
|
|
380
|
+
function() {
|
|
381
|
+
var match = document.cookie.match('(^|;) ?user_id=([^;]*)(;|$)');
|
|
382
|
+
return match ? match[2] : null;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// Get data from page
|
|
386
|
+
function() {
|
|
387
|
+
var el = document.querySelector('.product-price');
|
|
388
|
+
return el ? parseFloat(el.textContent.replace('$', '')) : 0;
|
|
389
|
+
}
|
|
390
|
+
```
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: article-generator
|
|
3
|
+
description: >
|
|
4
|
+
Multi-format article generator router. Delegates to the right sub-skill based on
|
|
5
|
+
available inputs: YouTube→NLM research, NLM mindmap hub & spoke, or keyword-driven SEO.
|
|
6
|
+
All sub-skills read brand intelligence from evergreen brand-assets.
|
|
7
|
+
Use when: generating articles, blog posts, hub & spoke content, NLM to article,
|
|
8
|
+
YouTube research for articles, SEO article, content generation for any brand.
|
|
9
|
+
depends-on:
|
|
10
|
+
- hook-generator
|
|
11
|
+
- sharp-thesis-validator
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Article Generator
|
|
15
|
+
|
|
16
|
+
Routes to the right sub-skill based on what you have. Three paths, one brand intelligence source.
|
|
17
|
+
|
|
18
|
+
## Phase 0: Awareness Gate (MANDATORY)
|
|
19
|
+
|
|
20
|
+
Before any copy work, determine the target audience's awareness level:
|
|
21
|
+
|
|
22
|
+
1. **Can you determine awareness level from the prompt/context?**
|
|
23
|
+
- For SEO: keyword intent maps to awareness level
|
|
24
|
+
- Informational ("how to fix X") → Problem-aware
|
|
25
|
+
- Comparative ("X vs Y") → Solution-aware
|
|
26
|
+
- Branded ("your product") → Product-aware
|
|
27
|
+
- Transactional ("buy X") → Most-aware
|
|
28
|
+
- For social: content topic + audience → awareness level
|
|
29
|
+
- For email: subscriber stage → awareness level
|
|
30
|
+
|
|
31
|
+
2. **If YES** → Proceed with awareness-matched strategy
|
|
32
|
+
- Load `references/awareness-level-guide.md`
|
|
33
|
+
- Select copy framework based on awareness level
|
|
34
|
+
|
|
35
|
+
3. **If NO** → ASK THE USER before proceeding:
|
|
36
|
+
"What awareness level is your target audience at?"
|
|
37
|
+
- Unaware — doesn't know they have a problem
|
|
38
|
+
- Problem-aware — knows the problem, doesn't know solutions exist
|
|
39
|
+
- Solution-aware — knows solutions exist, doesn't know your product
|
|
40
|
+
- Product-aware — knows your product, not convinced it's right
|
|
41
|
+
- Most-aware — ready to buy, just needs the offer
|
|
42
|
+
|
|
43
|
+
## Phase 1: Sharp-Thesis Validation (MANDATORY — Applied Before Writing)
|
|
44
|
+
|
|
45
|
+
Before proceeding to any mode, validate the topic/title using the Sharp-Thesis (Cerebras) Test:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
sharp-thesis-validator --mode long-form --brand {brand} "{topic/title}"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**On PASS:** Proceed to Mode Router.
|
|
52
|
+
**On FAIL:** STOP and return reframing suggestions to Jairo. Do not proceed to research or writing.
|
|
53
|
+
|
|
54
|
+
### Validation Requirements:
|
|
55
|
+
- **Single arguable claim** (not "X is important" but "X does Y because Z")
|
|
56
|
+
- **Concrete number** (dollar figure, percentage, timeframe, count)
|
|
57
|
+
- **Urgency** (time-bound trigger, not evergreen)
|
|
58
|
+
- **Title expressibility** (≤80 chars for magazine-cover style)
|
|
59
|
+
|
|
60
|
+
### Brand Context Loading:
|
|
61
|
+
- Loads brand-assets from evergreen path: `businesses/nomadixgear-sa/{brand}/brand-assets/`
|
|
62
|
+
- Reads: `thesis-config.md`, `icp-profiles.md`, `business-profile.md`, `competitive-analysis.md`
|
|
63
|
+
- Enriches reframe suggestions with brand-specific numbers and positioning
|
|
64
|
+
|
|
65
|
+
### Mode Router
|
|
66
|
+
|
|
67
|
+
Three modes. Pick based on what you have:
|
|
68
|
+
|
|
69
|
+
### Mode A: Keyword → SEO Article
|
|
70
|
+
**When:** You only have a keyword or topic (no NLM notebook).
|
|
71
|
+
**Action:** Delegate to `seo-content` skill. Keyword→article with brand intelligence, no NLM needed.
|
|
72
|
+
|
|
73
|
+
### Mode B: NLM Mindmap → Hub & Spoke Articles
|
|
74
|
+
**When:** You have an existing NLM mindmap/notebook with nodes.
|
|
75
|
+
**Action:** Delegate to `nlm-hub-spoke` skill. Generates hub pages first, then spoke articles per hub. Each article gets a human version + AEO counterpart.
|
|
76
|
+
|
|
77
|
+
### Mode C: YouTube → NotebookLM → Hub & Spoke
|
|
78
|
+
**When:** You have a YouTube video or channel to research first, no existing NLM notebook.
|
|
79
|
+
**Action:** Delegate to `youtube-notebooklm-research` skill for research phase. After NLM notebook + mindmap is created, continue with Mode B (`nlm-hub-spoke`) for writing phase.
|
|
80
|
+
|
|
81
|
+
**Sub-skills and their jobs:**
|
|
82
|
+
- `seo-content` — Keyword → SEO article (Mode A, writing phase without NLM)
|
|
83
|
+
- `nlm-hub-spoke` — NLM mindmap → hub & spoke articles (Mode B, writing phase with NLM)
|
|
84
|
+
- `youtube-notebooklm-research` — YouTube → NLM notebook + mindmap (Mode C, research phase)
|
|
85
|
+
|
|
86
|
+
**When delegating, pass along:**
|
|
87
|
+
- Brand name
|
|
88
|
+
- Evergreen brand-assets path
|
|
89
|
+
- landscape.md path (if exists at `{brand-assets}/landscape.md`)
|
|
90
|
+
- first-party-data.md path (if exists at `{brand-assets}/first-party-data.md`)
|
|
91
|
+
- Topic/keyword
|
|
92
|
+
- Any enrichment files relevant to the topic
|
|
93
|
+
|
|
94
|
+
**Path contract:** The sub-skill (seo-content for Mode A) MUST use the passed landscape.md path directly (step 1 resolve → step 8 read), not re-resolve from its own convention. If no landscape.md path is passed, check at resolved brand dir.
|
|
95
|
+
|
|
96
|
+
### Brand Naming & Claims Rules (MANDATORY — Applied Before Writing)
|
|
97
|
+
|
|
98
|
+
Every article MUST comply with the brand's naming conventions and claims blacklist. Load these from the brand's `competitive-reference.md` (if it exists) or `landscape.md`:
|
|
99
|
+
|
|
100
|
+
**Product naming:**
|
|
101
|
+
- Use the brand's product names as they appear in `products.md` (e.g., "Gome Clan," not "portable shelter model")
|
|
102
|
+
- Match ICP search language in SEO titles/h2s (e.g., "luxury camping tent," "glamping tent")
|
|
103
|
+
- Never use banned terms (e.g., "dome" for NomadixGear — always "glamping tent")
|
|
104
|
+
|
|
105
|
+
**Claims blacklist (hard gate):**
|
|
106
|
+
- Load `landscape.md` or `competitive-reference.md` and read the claims blacklist section
|
|
107
|
+
- Any claim in the blacklist MUST NOT appear in the article
|
|
108
|
+
- This includes taglines (e.g., "World's Most Advanced Portable Shelter" is blacklisted for some brands)
|
|
109
|
+
- Only use claims from the "Verified Safe Claims" section
|
|
110
|
+
|
|
111
|
+
**Product data accuracy:**
|
|
112
|
+
- Read `products.md` for specifications — never make up or estimate dimensions/prices
|
|
113
|
+
- When specs are behind a login wall (e.g., "Login to see price"), use Zoho Books pricing data if available
|
|
114
|
+
- Material tiers (e.g., Semi-Permanent vs Permanent) must be accurately distinguished
|
|
115
|
+
|
|
116
|
+
**Cron scheduling:** When creating scheduled tasks (`kimaki send`) for article generation, use `--agent plan`. The plan agent handles research and outline phases better. After approval, switch to build agent for execution.
|
|
117
|
+
|
|
118
|
+
## Downstream Pipeline
|
|
119
|
+
|
|
120
|
+
After any sub-skill produces a draft article, chain into:
|
|
121
|
+
1. **seo-content (Phase N3)** — Generate hooks/titles (MANDATORY — never skip). seo-content now includes hook-generator subagent integration for SEO title scoring.
|
|
122
|
+
2. **blog-publish-pipeline** — WordPress publishing with human + AEO pairs
|
|
123
|
+
|
|
124
|
+
**Hook-generator integration:** The seo-content sub-skill handles hook generation internally. If running article-generator outside the seo-content pipeline, spawn a hook-generator subagent directly for article titles:
|
|
125
|
+
```
|
|
126
|
+
Load the hook-generator skill and execute the full Phase 1-6 pipeline with this context.
|
|
127
|
+
Context:
|
|
128
|
+
- WHO: <ICP from brand assets>
|
|
129
|
+
- WHAT/WHY: <article's core thesis>
|
|
130
|
+
- Knife: <primary misconception or pain>
|
|
131
|
+
- Platform: medium
|
|
132
|
+
- Brand: <brand name>
|
|
133
|
+
- Target Score: 85
|
|
134
|
+
Return ONLY this JSON array: [{"hook":"...","score":<0-100>,"pattern":"...","formula":"..."}]
|
|
135
|
+
```
|
|
136
|
+
If subagent fails, use keyword + benefit formula for titles.
|
|
137
|
+
|
|
138
|
+
**Flow:** sub-skill output → seo-content Phase N3 → blog-publish-pipeline
|
|
139
|
+
|
|
140
|
+
## Brand Intelligence
|
|
141
|
+
|
|
142
|
+
All sub-skills share the same brand intelligence source:
|
|
143
|
+
|
|
144
|
+
**Primary (evergreen):** `businesses/nomadixgear-sa/{brand}/brand-assets/`
|
|
145
|
+
**Fallback (newsletter):** `brands/{brand}/content/00-assets/`
|
|
146
|
+
|
|
147
|
+
**Core files (all sub-skills load these):**
|
|
148
|
+
| File | Purpose |
|
|
149
|
+
|------|---------|
|
|
150
|
+
| `voice-guide.md` | Brand voice, tone, writing style |
|
|
151
|
+
| `business-profile.md` | Business model, ICP, market position |
|
|
152
|
+
| `icp-profiles.md` | Ideal customer profiles, pain points |
|
|
153
|
+
| `products.md` | Full product catalog |
|
|
154
|
+
| `brand-overrides.md` | Material rules, banned terms, positioning constraints (if exists, fallback: claims blacklist in `landscape.md` or `competitive-reference.md`) |
|
|
155
|
+
|
|
156
|
+
**Funnel grounding (if `funnel_id` provided):**
|
|
157
|
+
Read `funnels/{funnel_id}-*.md` from the brand's `funnels/` directory before writing.
|
|
158
|
+
Every output article MUST include: `funnel_id`, `buyer_stage`, `cta`, `icp_segment`.
|
|
159
|
+
If the article's CTA doesn't match the funnel's conversion step, STOP and fix it.
|
|
160
|
+
When no funnel_id is provided, proceed without funnel constraints.
|
|
161
|
+
|
|
162
|
+
**Selective enrichment (topic-matched, 2-3KB each):**
|
|
163
|
+
| If topic matches | Load this file |
|
|
164
|
+
|------------------|----------------|
|
|
165
|
+
| pricing, cost, budget | `official-pricing.md` |
|
|
166
|
+
| vs, compare, alternative, competitor | `competitive-analysis.md` |
|
|
167
|
+
| specs, dimensions, materials | `technical-specifications.md` |
|
|
168
|
+
| materials, fabric, durability | `knowledge-base.txt` |
|
|
169
|
+
|
|
170
|
+
NEVER load entire enrichment files. Extract only the relevant section.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## STEP N: Copywriting Tournament (RECOMMENDED for headlines + CTAs)
|
|
175
|
+
|
|
176
|
+
Generate 3-5 variants of the key headlines + CTAs, then run them through 5 parallel judge personas to find the winner:
|
|
177
|
+
|
|
178
|
+
1. Generate 3-5 variants (different angles, formulas, or approaches)
|
|
179
|
+
2. Save each to: `content/tournaments/{slug}/variant-1.md` through `variant-N.md`
|
|
180
|
+
3. Spawn 5 PARALLEL `build` subagents (one per judge persona):
|
|
181
|
+
- `~/.claude/skills/quality-gate/judge-personas/skeptic.md`
|
|
182
|
+
- `~/.claude/skills/quality-gate/judge-personas/scanner.md`
|
|
183
|
+
- `~/.claude/skills/quality-gate/judge-personas/buyer.md`
|
|
184
|
+
- `~/.claude/skills/quality-gate/judge-personas/expert.md`
|
|
185
|
+
- `~/.claude/skills/quality-gate/judge-personas/outsider.md`
|
|
186
|
+
- Each gets: tournament_dir, variant_count, mode=`copy`, original_prompt
|
|
187
|
+
4. Collect all 5 JSON results, aggregate: sum weighted_avg per variant across judges
|
|
188
|
+
5. Pick winner, apply recommended_edits, save as draft
|
|
189
|
+
6. Winner enters standard quality-gate below
|
|
190
|
+
|
|
191
|
+
**When to use:** For the article headline and CTA sections
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## FINAL STEP: Quality Gate (MANDATORY — DO NOT SKIP)
|
|
196
|
+
|
|
197
|
+
Before presenting ANY draft to Jairo, run the quality gate:
|
|
198
|
+
|
|
199
|
+
1. Save your complete draft to a file (e.g., `content/drafts/{slug}.md` or a temp file)
|
|
200
|
+
2. Spawn a `build` subagent using the Task tool with the quality-gate prompt from `Skill: quality-gate`
|
|
201
|
+
3. Pass these inputs to the subagent:
|
|
202
|
+
- **draft_path**: absolute path to the saved draft
|
|
203
|
+
- **mode**: `blog`
|
|
204
|
+
- **original_prompt**: the writing prompt that started this task
|
|
205
|
+
- **attempt**: current attempt number (start at 1)
|
|
206
|
+
4. Parse the JSON result from the subagent
|
|
207
|
+
5. If FAIL and attempt < 3:
|
|
208
|
+
- Rewrite the draft addressing the specific `rewrite_instructions` from the quality gate
|
|
209
|
+
- Save the new draft (overwrite or new file)
|
|
210
|
+
- Spawn another subagent with attempt + 1
|
|
211
|
+
6. If FAIL and attempt = 3:
|
|
212
|
+
- Present to Jairo with all score reports attached
|
|
213
|
+
- Say: "Couldn't pass quality gate after 3 attempts. Here's what's wrong and what I tried to fix."
|
|
214
|
+
7. If PASS:
|
|
215
|
+
- Present to Jairo as normal (do NOT show scores — they're internal)
|
|
216
|
+
8. NEVER present a draft that hasn't passed quality gate (except after 3 failed attempts)
|