@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,331 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo-machine
|
|
3
|
+
description: "Build an organic-traffic operating system for any site or app: a multi-phase, resumable engine that ships programmatic landing pages..."
|
|
4
|
+
category: seo
|
|
5
|
+
tier: nice-to-have
|
|
6
|
+
reads:
|
|
7
|
+
- brand/keyword-plan.md
|
|
8
|
+
- brand/positioning.md
|
|
9
|
+
- brand/competitors.md
|
|
10
|
+
- brand/audience.md
|
|
11
|
+
- brand/stack.md
|
|
12
|
+
writes:
|
|
13
|
+
- docs/seo-machine.md
|
|
14
|
+
- .seo/brand.md
|
|
15
|
+
- .seo/link-inventory.md
|
|
16
|
+
- .seo/config.json
|
|
17
|
+
triggers:
|
|
18
|
+
- seo machine
|
|
19
|
+
- build organic traffic
|
|
20
|
+
- rank in google
|
|
21
|
+
- alternatives pages
|
|
22
|
+
- comparison pages
|
|
23
|
+
- programmatic seo playbook
|
|
24
|
+
- we need traffic
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# SEO Machine
|
|
28
|
+
|
|
29
|
+
End-to-end engine for building organic search traffic. Ships dozens of programmatic landing pages — alternatives, comparisons, use-cases, playbooks — backed by real keyword research, with a persistent roadmap the user resumes across sessions.
|
|
30
|
+
|
|
31
|
+
Conversion-first (alternatives + comparisons before blogs). Publish-early (a thin page indexed today beats a perfect page indexed in three weeks). Stack-native (writes into the user's framework — Next.js, Astro, Rails+Inertia, or a portable markdown fallback).
|
|
32
|
+
|
|
33
|
+
## Two modes, auto-detected
|
|
34
|
+
|
|
35
|
+
| Mode | When | What it produces |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| **Initialize** | `docs/seo-machine.md` does not exist | Stack detection → brand context → keyword research → tech audit → roadmap + link inventory |
|
|
38
|
+
| **Resume** | `docs/seo-machine.md` exists | Reads the tracker, picks the next pending phase (or one the user names), executes end-to-end through the quality gates |
|
|
39
|
+
|
|
40
|
+
Detection rule on every invocation: check `docs/seo-machine.md` at repo root (or the path recorded in `.seo/config.json`). No file → Initialize. File exists → Resume. The user does not need to remember which mode they're in.
|
|
41
|
+
|
|
42
|
+
## Publishing Order (the load-bearing decision rule)
|
|
43
|
+
|
|
44
|
+
The roadmap orders patterns by **conversion intent first, traffic intent second**. This is the single most important decision the skill makes — it's why the alternatives + comparison pages ship before the playbooks + blog posts.
|
|
45
|
+
|
|
46
|
+
| Order | Pattern | Why | Cost |
|
|
47
|
+
|---|---|---|---|
|
|
48
|
+
| 1 | `/alternatives/[competitor]` (Pattern A) | Highest conversion intent — the reader is already in market | ~4 hours per page |
|
|
49
|
+
| 2 | `/compare/[a]-vs-[b]` (Pattern D) | Be the third option in any two-vendor comparison | ~3 hours per page |
|
|
50
|
+
| 3 | `/for/[use-case]` and `/for/[audience]` (Pattern B/C) | JTBD without competitor name in query — high TP/volume ratio | ~4-5 hours per page |
|
|
51
|
+
| 4 | `/playbooks/[topic]` (Pattern E) | Authority + AI-citation surface area + inbound link draw | ~2-3 days per page |
|
|
52
|
+
| 5 | `/blog/...` (out of scope here) | Lowest conversion intent; defer until ~10 indexed pages exist | — |
|
|
53
|
+
|
|
54
|
+
**Why this order matters:** alternatives pages convert 5–20× blog posts at 1/10 the search volume. Shipping one alternatives page is worth ten generic blog posts on the same topic. The roadmap should reflect this — Phase 0 (tech audit) → Phases 1–N (alternatives, then comparisons, then use-cases) → late phases (playbooks) → never (blogs, unless explicitly requested by the user).
|
|
55
|
+
|
|
56
|
+
Striking-distance boosts (pages already ranking pos 5–20 in GSC) jump the queue when they exist — fastest wins per hour of work.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## On Activation
|
|
61
|
+
|
|
62
|
+
1. Load brand context where present: `brand/keyword-plan.md`, `positioning.md`, `competitors.md`, `audience.md`, `stack.md`. Missing files are fine.
|
|
63
|
+
2. Surface what loaded:
|
|
64
|
+
```
|
|
65
|
+
Brand context loaded:
|
|
66
|
+
├── Keyword Plan ✓/✗ (seeds the roadmap; ✗ → generate during Initialize)
|
|
67
|
+
├── Positioning ✓/✗ (drives /compare and /alternatives angles)
|
|
68
|
+
├── Competitors ✓/✗ (target list for /alternatives pages)
|
|
69
|
+
├── Audience ✓/✗ (intent buckets for /for/<persona> pages)
|
|
70
|
+
└── Stack ✓/✗ (selects references/stacks/<framework>.md)
|
|
71
|
+
```
|
|
72
|
+
3. Progressive enhancement: with zero brand files the skill still works — it derives signal from the repo (`CLAUDE.md`, `README.md`, `package.json`, design tokens, existing marketing pages) during Initialize Step 2. With full brand context it skips re-discovery and goes straight to research + roadmap.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Hard prerequisites
|
|
77
|
+
|
|
78
|
+
| # | Check | Failure mode |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| 1 | `git rev-parse --is-inside-work-tree` succeeds | Stop. Tell the user this skill writes a persistent roadmap; initialize git or run from a repo. |
|
|
81
|
+
| 2 | A stack is detectable — one of `package.json`, `Gemfile`, `composer.json`, `requirements.txt`, `astro.config.*`, `next.config.*`, `nuxt.config.*`, `gatsby-config.*`, `_config.yml`, `config.toml`, `pyproject.toml` | Ask the user what stack they're on before continuing. |
|
|
82
|
+
| 3 | Research backend resolved (see below) | Never refuse to run — fall through to manual mode. |
|
|
83
|
+
|
|
84
|
+
**Research backend resolution order** (record the choice in `.seo/config.json` under `research_backend`):
|
|
85
|
+
|
|
86
|
+
1. **Exa-stack** (mktg-native, default). Probe `mcp__exa__web_search_advanced_exa` with a minimal query. On success, use the full Exa research stack — Exa MCP + Firecrawl (SERP scrape) + `gh` (OSS competitor signal) + `/last30days` skill (Reddit/X/HN aggregation) + `mktg-x` (auth-walled Twitter) + the mktg-native `company-research` / `people-research` skills. The 7 Exa-native recipes in `references/exa-recipes.md` replace the Ahrefs cookbook entirely; the cross-API compound recipes in `references/api-stack-recipes.md` add capabilities Ahrefs alone can't do (pain-point clustering, OSS competitor teardown, outreach prospect discovery, newcomer surveillance).
|
|
87
|
+
2. **Manual mode** — Exa-stack unavailable. Follow `references/manual-research.md` (free Google + Search Console + paste-from-UI fallback).
|
|
88
|
+
|
|
89
|
+
> **Ahrefs as a footnote:** if `mcp__ahrefs__subscription-info-limits-and-usage` returns data AND the user wants numeric volume/KD/TP precision, layer Ahrefs on top of the Exa-stack rather than replacing it. The "Ahrefs appendix" at the bottom of `references/exa-recipes.md` documents which Ahrefs queries upgrade each Exa-native recipe with precise numbers. Ahrefs MCP is intentionally NOT in mktg's chained-in ecosystem table — it's a paid escalation, not a default dependency.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Initialize mode
|
|
94
|
+
|
|
95
|
+
Goal: end the run with a written `docs/seo-machine.md` containing keyword research, a phase tracker grouped by pattern, and technical-audit findings — plus `.seo/brand.md` and `.seo/link-inventory.md`.
|
|
96
|
+
|
|
97
|
+
### Step 1 — Detect stack + frontend convention
|
|
98
|
+
|
|
99
|
+
Read `references/stacks/detection.md`. Identify framework family, routing convention (file-based vs controller-based), component language, and existing marketing pages (`git ls-files | grep -iE 'marketing|landing|pages/(home|about|pricing)'`). Resolve ambiguity with `AskUserQuestion`. Persist to `.seo/config.json`.
|
|
100
|
+
|
|
101
|
+
### Step 2 — Detect brand + product context
|
|
102
|
+
|
|
103
|
+
Read every signal first, propose `.seo/brand.md`, then ask only about gaps. Signals: `CLAUDE.md`, `README.md`, `package.json` / `Gemfile.lock`, `tailwind.config.*` or design-token CSS, `app/views/marketing/*` or `pages/index.*`, `pricing` page.
|
|
104
|
+
|
|
105
|
+
If `brand/voice-profile.md` and `brand/positioning.md` already exist (mktg-native project), read them and skip 80% of the questions — those files already say who the buyer is and what the brand sounds like.
|
|
106
|
+
|
|
107
|
+
Otherwise use a single `AskUserQuestion` (3–4 questions max) to fill gaps. Required to know:
|
|
108
|
+
|
|
109
|
+
- **Product one-liner** (≤20 words)
|
|
110
|
+
- **Primary persona** (e.g. "B2B SaaS founder", "indie agency owner")
|
|
111
|
+
- **3–7 direct competitors** by name
|
|
112
|
+
- **Brand voice tags** (e.g. "honest, technical, no-jargon")
|
|
113
|
+
- **Free tier?** (drives the "is [brand] free" keyword strategy)
|
|
114
|
+
- **Anti-positioning** — what the product does NOT do (used in honest comparison sections)
|
|
115
|
+
|
|
116
|
+
Write to `.seo/brand.md` using `assets/brand-template.md` as the skeleton.
|
|
117
|
+
|
|
118
|
+
### Step 3 — Keyword research (Exa-native stack)
|
|
119
|
+
|
|
120
|
+
Follow `references/exa-recipes.md` — 7 Exa-native recipes that replace the Ahrefs cookbook:
|
|
121
|
+
|
|
122
|
+
| Recipe | Purpose | Primary API |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| A. Domain baseline | DR estimate from indexed-page count + brand mentions + GitHub stars (OSS) | Exa `company_research_exa` + `web_search_advanced_exa` + `gh` |
|
|
125
|
+
| B. Competitor reverse-lookup | What competitors rank for | Exa `web_search_advanced_exa` `site:<competitor>` + AI summary |
|
|
126
|
+
| C. Use-case sweep | `/for/` and `/playbooks/` topic discovery | Exa `deep_search_exa` + Firecrawl autocomplete + `/last30days` |
|
|
127
|
+
| D. Comparison volume | Validate demand for `/compare/[a]-vs-[b]` before writing | Exa `web_search_advanced_exa` + Firecrawl SERP scrape |
|
|
128
|
+
| E. SERP saturation | Replaces Ahrefs KD with SERP-composition-derived signal | Exa search + per-result `company_research_exa` |
|
|
129
|
+
| F. Backlink prospecting | Referring-domain proxy via Exa | Exa search + DR proxy (see `off-page-seo` skill) |
|
|
130
|
+
| G. Content gap | Their indexed keywords − ours, ranked by DR-cap fit | Recipes B + own-site Exa lookup |
|
|
131
|
+
|
|
132
|
+
Then pull cross-API compound recipes from `references/api-stack-recipes.md` for moves Ahrefs alone can't do — pain-point cluster discovery (`/last30days` + `mktg-x` + Exa deep search), OSS competitor teardown (`gh` + DeepWiki + Exa), outreach prospect discovery (Exa Websets + people-research), newcomer surveillance (Exa Websets cron).
|
|
133
|
+
|
|
134
|
+
When Exa is unavailable, fall back to `references/manual-research.md` (paste-from-UI workflow). When the user has paid Ahrefs, layer it on top per the appendix in `exa-recipes.md` — don't replace.
|
|
135
|
+
|
|
136
|
+
Cache the raw output to `.seo/keyword-research.json`. Curate the decision-ready summary into the **Keyword Research Appendix** section of `docs/seo-machine.md`.
|
|
137
|
+
|
|
138
|
+
### Step 4 — Technical foundations audit
|
|
139
|
+
|
|
140
|
+
Run `scripts/tech_audit.py` (sitemap, robots, meta-tag uniqueness, schema). Whatever it finds becomes **Phase 0** in the roadmap. Day-0 crawl shapes Google's understanding of the site for months — retroactive fixes are harder.
|
|
141
|
+
|
|
142
|
+
### Step 5 — Generate the roadmap
|
|
143
|
+
|
|
144
|
+
Fill `assets/roadmap-template.md` with:
|
|
145
|
+
|
|
146
|
+
- **Site facts** (domain, DR, stack, brand colors, fonts) from steps 1–2
|
|
147
|
+
- **Reference data** — paths to controllers / page files this skill will edit
|
|
148
|
+
- **Keyword Research Appendix** — curated, grouped by pattern
|
|
149
|
+
- **Phase Status Tracker** — auto-populated:
|
|
150
|
+
- Phase 0: technical foundations fixes
|
|
151
|
+
- Phase 1+: one row per page candidate
|
|
152
|
+
- Group by pattern. Within a pattern, order by `traffic_potential` desc → `volume` desc → `KD` asc
|
|
153
|
+
- Striking-distance boosts near the front (fastest wins on existing sites)
|
|
154
|
+
- Off-page checklist (directories + outreach) tail-end, one phase per category
|
|
155
|
+
|
|
156
|
+
Write to the configured path (default `docs/seo-machine.md`). Print the path back and recommend a human review pass before Phase 0.
|
|
157
|
+
|
|
158
|
+
### Step 6 — Generate `.seo/link-inventory.md`
|
|
159
|
+
|
|
160
|
+
Every phase reads this file to pick internal links. Use `assets/link-inventory-template.md`. Pre-populate from existing routes (features, tools, pricing, blog posts). Each phase appends to it as new pages ship.
|
|
161
|
+
|
|
162
|
+
### Step 7 — Hand off
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
✓ Initialize complete
|
|
166
|
+
|
|
167
|
+
Roadmap: docs/seo-machine.md
|
|
168
|
+
Brand context: .seo/brand.md
|
|
169
|
+
Keyword cache: .seo/keyword-research.json
|
|
170
|
+
Link inventory: .seo/link-inventory.md
|
|
171
|
+
Config: .seo/config.json
|
|
172
|
+
|
|
173
|
+
Next: review docs/seo-machine.md, then run me again to execute Phase 0.
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Do not auto-execute Phase 0. Pattern priorities and competitor lists are decisions worth a human pass.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Resume mode
|
|
181
|
+
|
|
182
|
+
Goal: pick the next phase from the tracker, execute end-to-end with quality gates, hand back so the user can commit/PR.
|
|
183
|
+
|
|
184
|
+
### Step 1 — Read state
|
|
185
|
+
|
|
186
|
+
Load `docs/seo-machine.md`, `.seo/brand.md`, `.seo/link-inventory.md`, `.seo/config.json`. Find the **Phase Status Tracker**, identify the next `pending` phase with the lowest number, print it back along with the two phases that follow.
|
|
187
|
+
|
|
188
|
+
### Step 2 — Confirm scope
|
|
189
|
+
|
|
190
|
+
Single `AskUserQuestion`:
|
|
191
|
+
- "Continue with Phase N: [title]?"
|
|
192
|
+
- Options: "Yes, start Phase N" / "Pick a different phase" / "Re-audit (refresh research)" / "Just show the tracker"
|
|
193
|
+
|
|
194
|
+
"Different" → list pending phases. "Re-audit" → loop back into Initialize steps 3–5. "Show" → print tracker and stop.
|
|
195
|
+
|
|
196
|
+
### Step 3 — Execute
|
|
197
|
+
|
|
198
|
+
Pattern → reference mapping:
|
|
199
|
+
|
|
200
|
+
| Phase type | Reference |
|
|
201
|
+
|---|---|
|
|
202
|
+
| Phase 0 — technical foundations | `references/technical-audit.md` |
|
|
203
|
+
| Pattern A — `/alternatives/[competitor]` | `references/patterns/alternatives.md` |
|
|
204
|
+
| Pattern B/C — `/for/[use-case]` or `/for/[audience]` | `references/patterns/use-case.md` |
|
|
205
|
+
| Pattern D — `/compare/[a]-vs-[b]` | `references/patterns/compare.md` |
|
|
206
|
+
| Pattern E — `/playbooks/[topic]` long-form | `references/patterns/playbooks.md` |
|
|
207
|
+
| Striking-distance boost | `references/striking-distance.md` |
|
|
208
|
+
| Off-page checklist phase | `references/off-page.md` |
|
|
209
|
+
| Internal-link spine audit | `references/quality-bars.md` (link-audit section) |
|
|
210
|
+
|
|
211
|
+
For page-generating phases, the flow is always:
|
|
212
|
+
|
|
213
|
+
1. **Re-research** — current competitor pricing, feature changes. Don't trust 60-day-old cached data on commercial-intent terms.
|
|
214
|
+
2. **Generate the page payload** — output format follows the stack (`references/stacks/<framework>.md`) or `references/stacks/markdown-fallback.md`.
|
|
215
|
+
3. **Verify** against the quality bar (word count, internal links, schema, honesty section on alts). Run `scripts/word_count.py` and `scripts/link_audit.py`. If a check fails, fix it — don't ship under-spec work.
|
|
216
|
+
4. **Update `.seo/link-inventory.md`** with the new page.
|
|
217
|
+
5. **Update the tracker row** in `docs/seo-machine.md` — status `completed`, PR ref or commit SHA. Same edit batch as the page work so reviewers see both in one diff.
|
|
218
|
+
|
|
219
|
+
### Step 4 — Hand off (do NOT auto-commit)
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
✓ Phase N complete: [title]
|
|
223
|
+
|
|
224
|
+
Files changed:
|
|
225
|
+
app/controllers/marketing_controller.rb (added entry)
|
|
226
|
+
app/frontend/pages/Alternatives/Show.tsx (no change — uses existing layout)
|
|
227
|
+
docs/seo-machine.md (tracker updated)
|
|
228
|
+
.seo/link-inventory.md (new page registered)
|
|
229
|
+
|
|
230
|
+
Quality gates:
|
|
231
|
+
✓ Word count: 712 / 600 min
|
|
232
|
+
✓ Internal links: 2 alts, 1 feature, 1 tool
|
|
233
|
+
✓ FAQ JSON-LD attached
|
|
234
|
+
✓ Honesty section present (3 rows)
|
|
235
|
+
|
|
236
|
+
Suggested commit: "SEO Phase N: ship /alternatives/[slug]"
|
|
237
|
+
|
|
238
|
+
Next phase pending: Phase N+1 — [title]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Open a PR only if the user has expressed they want that cadence. Otherwise let them drive git.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Interactive principles
|
|
246
|
+
|
|
247
|
+
| Rule | Why |
|
|
248
|
+
|---|---|
|
|
249
|
+
| Ask before you guess on positioning calls | The user's gut on which competitor or use-case to ship next often beats the data |
|
|
250
|
+
| Show the numbers, not the conclusion | "vol 400, KD 12, TP 1,800" builds more trust than "the data is good" |
|
|
251
|
+
| Be honest about what won't work | KD 80 at DR 8 = doomed. Say so, offer the closest winnable alternative |
|
|
252
|
+
| One-sentence theory max per phase | The user doesn't need a recap of SEO theory every run |
|
|
253
|
+
| Surface tradeoffs, not opinions | "5 thin alternatives or 2 deep ones first?" — state the tradeoff, ask |
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Adjacent skills (route here vs there)
|
|
258
|
+
|
|
259
|
+
| Skill | When | When NOT |
|
|
260
|
+
|---|---|---|
|
|
261
|
+
| `seo-audit` | One-off diagnostic on an existing site | Forward execution — use this skill |
|
|
262
|
+
| `seo-content` | Writing a single rankable article | A whole sprint — use this skill |
|
|
263
|
+
| `competitor-alternatives` | One `/alternatives/<x>` page, ad-hoc | Pattern A as part of a sprint — use this skill |
|
|
264
|
+
| `keyword-research` | Producing `brand/keyword-plan.md` | This skill consumes that artifact — chain them |
|
|
265
|
+
| `ai-seo` | LLM-citation optimization for a few pages | Run after this skill ships ~10 indexed pages |
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Anti-patterns
|
|
270
|
+
|
|
271
|
+
| Don't | Why |
|
|
272
|
+
|---|---|
|
|
273
|
+
| Target head terms when DR is low | "Social media management tool" at DR 8 is wasted work. KD ≤ DR+10 while DR is low. |
|
|
274
|
+
| Ship pages with no inbound internal links | A new page nobody links to is an island. ≥2 inbound links from existing pages, same phase. |
|
|
275
|
+
| Ship `/alternatives` pages without an "honesty" section | Three honest tradeoffs (where the competitor wins) is non-negotiable. Brand signal AND Google quality signal. |
|
|
276
|
+
| Skip schema markup | FAQPage JSON-LD captures snippets. Article for playbooks. SoftwareApplication for homepage + use-case. Quality gate fails without them. |
|
|
277
|
+
| Auto-commit | Always show diff summary; let the user commit (local conventions, hooks, branch naming). |
|
|
278
|
+
| Restart Initialize when partial state exists | If `.seo/config.json` exists without the roadmap, prompt before wiping — they may have aborted mid-run. |
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## File map
|
|
283
|
+
|
|
284
|
+
| File | Purpose |
|
|
285
|
+
|---|---|
|
|
286
|
+
| `references/methodology.md` | Why-this-works theory + lessons from real phases |
|
|
287
|
+
| `references/exa-recipes.md` | 7 Exa-native research recipes (replaces the old Ahrefs cookbook). Ahrefs appendix at the bottom for paid-precision escalation. |
|
|
288
|
+
| `references/api-stack-recipes.md` | Cross-API compound recipes — pain-point mining, OSS competitor teardown, outreach prospect discovery, newcomer surveillance. Uses Exa + Firecrawl + gh + mktg-x + DeepWiki + last30days. |
|
|
289
|
+
| `references/manual-research.md` | L0 fallback when no MCP available |
|
|
290
|
+
| `references/patterns/alternatives.md` | Pattern A spec, data shape, quality bar, example |
|
|
291
|
+
| `references/patterns/use-case.md` | Pattern B+C spec |
|
|
292
|
+
| `references/patterns/compare.md` | Pattern D spec |
|
|
293
|
+
| `references/patterns/playbooks.md` | Pattern E spec (2,500-word bar) |
|
|
294
|
+
| `references/stacks/detection.md` | Stack-detection signal table |
|
|
295
|
+
| `references/stacks/rails-inertia.md` | Rails + Inertia adapter (reference implementation) |
|
|
296
|
+
| `references/stacks/nextjs.md` | Next.js App Router adapter |
|
|
297
|
+
| `references/stacks/astro.md` | Astro content-collection adapter |
|
|
298
|
+
| `references/stacks/markdown-fallback.md` | Universal markdown output format |
|
|
299
|
+
| `references/technical-audit.md` | Phase 0 recipes (sitemap, robots, meta, schema) |
|
|
300
|
+
| `references/striking-distance.md` | GSC pos 5–20 audit + boost recipe |
|
|
301
|
+
| `references/off-page.md` | Backlink checklist + Ahrefs referring-domains research |
|
|
302
|
+
| `references/quality-bars.md` | Verification spec per pattern |
|
|
303
|
+
| `scripts/word_count.py` | Strip markup → word count |
|
|
304
|
+
| `scripts/link_audit.py` | Verify internal-link minimums per page |
|
|
305
|
+
| `scripts/tech_audit.py` | Sitemap.xml + robots.txt + meta-tag scanner |
|
|
306
|
+
| `assets/roadmap-template.md` | `docs/seo-machine.md` skeleton |
|
|
307
|
+
| `assets/brand-template.md` | `.seo/brand.md` skeleton |
|
|
308
|
+
| `assets/link-inventory-template.md` | `.seo/link-inventory.md` skeleton |
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Outputs
|
|
313
|
+
|
|
314
|
+
The skill writes to **project paths**, not `brand/`. This is why `writes:` in `skills-manifest.json` is `[]` — the manifest declares only `brand/*.md` writes, and seo-machine's outputs live in the user's repo, not in brand memory.
|
|
315
|
+
|
|
316
|
+
| Output | Mode | Purpose |
|
|
317
|
+
|---|---|---|
|
|
318
|
+
| `docs/seo-machine.md` | Initialize (write), Resume (update phase row) | Persistent sprint roadmap — Phase Status Tracker + Reference Data + Keyword Research Appendix. Single source of truth across sessions. |
|
|
319
|
+
| `.seo/brand.md` | Initialize | Product context derived from repo + user answers (one-liner, persona, competitors, voice tags, anti-positioning). |
|
|
320
|
+
| `.seo/link-inventory.md` | Initialize (create), Resume (append per phase) | Every internal-link target the skill can use. Each phase appends new pages. |
|
|
321
|
+
| `.seo/keyword-research.json` | Initialize | Cached raw output from Ahrefs / Exa / manual research. Read by every phase, refreshed every 30 days. |
|
|
322
|
+
| `.seo/config.json` | Initialize | Stack info, research backend choice, project IDs. Persists machine-readable state. |
|
|
323
|
+
| Phase-specific page files | Resume (per phase) | Stack-native page files (e.g. `app/controllers/marketing_controller.rb` + `app/frontend/pages/Alternatives/Show.tsx` for Rails+Inertia; `app/[pattern]/[slug]/page.tsx` for Next.js App Router; etc.). Paths follow `references/stacks/<framework>.md`. |
|
|
324
|
+
|
|
325
|
+
This follows the **Long-Arc Sprint Persistence Pattern** documented in `AGENTS.md` — `docs/seo-machine.md` is the canonical doc that survives session interruption.
|
|
326
|
+
|
|
327
|
+
## /cmo integration
|
|
328
|
+
|
|
329
|
+
`/cmo` routes here under **Playbook #9 — SEO Authority Build, Path B (programmatic sprint)**. On a cold project /cmo first spawns `mktg-brand-researcher`, `mktg-audience-researcher`, `mktg-competitive-scanner` in parallel (foundation), runs `keyword-research` to populate `brand/keyword-plan.md`, then hands off here. After every phase, /cmo spawns `mktg-content-reviewer` + `mktg-seo-analyst` in one message to score the page batch before the user commits.
|
|
330
|
+
|
|
331
|
+
See `skills/cmo/rules/playbooks.md` and `skills/cmo/rules/sub-agents.md` for the full handoff contract.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# {{PRODUCT_NAME}} — Brand Context for SEO
|
|
2
|
+
|
|
3
|
+
> Read every time. This file is read by every phase of the SEO machine run.
|
|
4
|
+
|
|
5
|
+
## Product
|
|
6
|
+
|
|
7
|
+
- **Name:** {{PRODUCT_NAME}}
|
|
8
|
+
- **One-liner (≤20 words):** {{ONE_LINER}}
|
|
9
|
+
- **What we do:** {{LONG_DESCRIPTION}}
|
|
10
|
+
- **Pricing structure:** {{PRICING_SUMMARY}}
|
|
11
|
+
- **Free tier?** {{FREE_TIER_YN}} — {{FREE_TIER_DETAILS}}
|
|
12
|
+
|
|
13
|
+
## Audience
|
|
14
|
+
|
|
15
|
+
- **Primary persona:** {{PERSONA_PRIMARY}}
|
|
16
|
+
- **Secondary personas:** {{PERSONA_SECONDARY}}
|
|
17
|
+
- **Industries we target:** {{INDUSTRIES}}
|
|
18
|
+
- **Company size we target:** {{COMPANY_SIZE}}
|
|
19
|
+
- **Jobs to be done (top 3):**
|
|
20
|
+
1. {{JTBD_1}}
|
|
21
|
+
2. {{JTBD_2}}
|
|
22
|
+
3. {{JTBD_3}}
|
|
23
|
+
|
|
24
|
+
## Competitors
|
|
25
|
+
|
|
26
|
+
(Used to populate `/alternatives/*` and `/compare/*` patterns. Order by perceived market share / brand recognition.)
|
|
27
|
+
|
|
28
|
+
| Brand | Slug | URL | Tier (head / mid / niche) | Notes |
|
|
29
|
+
|---|---|---|---|---|
|
|
30
|
+
{{COMPETITORS_TABLE}}
|
|
31
|
+
|
|
32
|
+
## Brand voice
|
|
33
|
+
|
|
34
|
+
- **Voice tags:** {{VOICE_TAGS}} e.g. "honest, technical, no-jargon, dry-witty, founder-led"
|
|
35
|
+
- **Person/perspective:** {{PERSPECTIVE}} e.g. "we" (team), "I" (founder-led), "you-focused"
|
|
36
|
+
- **Forbidden words/phrases:** {{FORBIDDEN}} e.g. "seamlessly," "revolutionary," "synergy"
|
|
37
|
+
- **Reference brands for tone:** {{TONE_REFERENCES}} e.g. "Linear's docs, Buttondown's homepage"
|
|
38
|
+
|
|
39
|
+
## Anti-positioning (where we don't compete)
|
|
40
|
+
|
|
41
|
+
(Used for honesty sections on `/alternatives/*` pages. List ≥5 things you intentionally don't do.)
|
|
42
|
+
|
|
43
|
+
1. {{ANTI_POS_1}}
|
|
44
|
+
2. {{ANTI_POS_2}}
|
|
45
|
+
3. {{ANTI_POS_3}}
|
|
46
|
+
4. {{ANTI_POS_4}}
|
|
47
|
+
5. {{ANTI_POS_5}}
|
|
48
|
+
|
|
49
|
+
## Concrete differentiators
|
|
50
|
+
|
|
51
|
+
(Things you DO that competitors don't, used in `/alternatives/*` switch-reasons.)
|
|
52
|
+
|
|
53
|
+
1. {{DIFF_1}}
|
|
54
|
+
2. {{DIFF_2}}
|
|
55
|
+
3. {{DIFF_3}}
|
|
56
|
+
4. {{DIFF_4}}
|
|
57
|
+
|
|
58
|
+
## Visual brand
|
|
59
|
+
|
|
60
|
+
- **Accent color (primary):** {{ACCENT_PRIMARY}}
|
|
61
|
+
- **Accent color (secondary):** {{ACCENT_SECONDARY}}
|
|
62
|
+
- **Ink color:** {{INK_COLOR}}
|
|
63
|
+
- **Surface color:** {{SURFACE_COLOR}}
|
|
64
|
+
- **Hero font family:** {{FONT_HERO}}
|
|
65
|
+
- **Body font family:** {{FONT_BODY}}
|
|
66
|
+
- **Icon set:** {{ICON_SET}}
|
|
67
|
+
|
|
68
|
+
## Links to existing surfaces
|
|
69
|
+
|
|
70
|
+
- Homepage: {{HOMEPAGE_URL}}
|
|
71
|
+
- Pricing: {{PRICING_URL}}
|
|
72
|
+
- Existing blog/content: {{BLOG_URL}}
|
|
73
|
+
- Existing features list: {{FEATURES_URL}}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# {{PRODUCT_NAME}} — Internal Link Inventory
|
|
2
|
+
|
|
3
|
+
> Pre-populated list of every URL the SEO machine run can link to. Each pattern phase MUST pick links from this inventory and MUST update this file when it ships a new page.
|
|
4
|
+
|
|
5
|
+
## Existing pages (link targets)
|
|
6
|
+
|
|
7
|
+
### Homepage + core marketing
|
|
8
|
+
|
|
9
|
+
| Slug | URL | Title (anchor-text candidate) | Used by patterns |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| `/` | {{HOMEPAGE_URL}} | {{HOMEPAGE_TITLE}} | All |
|
|
12
|
+
| `/pricing` | {{PRICING_URL}} | Pricing | D (compare), E (playbooks) |
|
|
13
|
+
| `/about` | {{ABOUT_URL}} | About | (occasional) |
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
| Slug | URL | Title | Linked by |
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
{{FEATURES_INVENTORY}}
|
|
20
|
+
|
|
21
|
+
### Tools (free utilities)
|
|
22
|
+
|
|
23
|
+
| Slug | URL | Title | Linked by |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
{{TOOLS_INVENTORY}}
|
|
26
|
+
|
|
27
|
+
### Blog posts
|
|
28
|
+
|
|
29
|
+
| Slug | URL | Title | Topic | Linked by |
|
|
30
|
+
|---|---|---|---|---|
|
|
31
|
+
{{BLOG_INVENTORY}}
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## SEO-sprint-generated pages (linked OUT to siblings + IN from elsewhere)
|
|
36
|
+
|
|
37
|
+
### `/alternatives/[slug]`
|
|
38
|
+
|
|
39
|
+
| Slug | Ships in phase | URL | Inbound links from | Outbound links to |
|
|
40
|
+
|---|---|---|---|---|
|
|
41
|
+
{{ALTERNATIVES_TABLE}}
|
|
42
|
+
|
|
43
|
+
### `/for/[slug]`
|
|
44
|
+
|
|
45
|
+
| Slug | Ships in phase | URL | Inbound links from | Outbound links to |
|
|
46
|
+
|---|---|---|---|---|
|
|
47
|
+
{{FOR_TABLE}}
|
|
48
|
+
|
|
49
|
+
### `/compare/[slug]`
|
|
50
|
+
|
|
51
|
+
| Slug | Ships in phase | URL | Inbound links from | Outbound links to |
|
|
52
|
+
|---|---|---|---|---|
|
|
53
|
+
{{COMPARE_TABLE}}
|
|
54
|
+
|
|
55
|
+
### `/playbooks/[slug]`
|
|
56
|
+
|
|
57
|
+
| Slug | Ships in phase | URL | Inbound links from | Outbound links to |
|
|
58
|
+
|---|---|---|---|---|
|
|
59
|
+
{{PLAYBOOKS_TABLE}}
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Anchor-text variations (avoid repetition)
|
|
64
|
+
|
|
65
|
+
When linking to the same destination from multiple pages, vary the anchor text. Repeating "click here" or the page's exact title harms diversity signals.
|
|
66
|
+
|
|
67
|
+
Example acceptable variations for `/features/twitter-monitoring`:
|
|
68
|
+
- "monitor Twitter mentions"
|
|
69
|
+
- "real-time Twitter monitoring"
|
|
70
|
+
- "Twitter mention tracking"
|
|
71
|
+
- "our Twitter monitoring tool"
|
|
72
|
+
- "ReplySocial's Twitter watch feature"
|
|
73
|
+
|
|
74
|
+
When you ship a new page, append 4-5 anchor variations to this section so future phases can rotate them.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# {{PRODUCT_NAME}} SEO Machine — Roadmap
|
|
2
|
+
|
|
3
|
+
> **Canonical document.** This file is the single source of truth for the multi-phase SEO machine run. Every worktree/agent picking up SEO work on this project reads this file first.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## How to use this document
|
|
8
|
+
|
|
9
|
+
**Fresh agent or new worktree?** Do this:
|
|
10
|
+
|
|
11
|
+
1. Read this entire `docs/seo-machine.md` file.
|
|
12
|
+
2. Read the **Reference Data**, **Conventions**, and **Keyword Research Appendix** sections ONCE — they're shared facts every phase depends on. Don't re-research.
|
|
13
|
+
3. Find the next pending phase in the **Phase Status Tracker**.
|
|
14
|
+
4. Read the phase section. It is fully self-contained.
|
|
15
|
+
5. Execute. Verify against the per-phase verification gate.
|
|
16
|
+
6. **In the same commit as the work,** flip the tracker row to `completed` and append the PR number after it merges.
|
|
17
|
+
7. Open the PR. Stop. Hand off.
|
|
18
|
+
|
|
19
|
+
**Don't modify** Reference Data, Conventions, Keyword Appendix, or Phases without explicit user instruction — they are stable contracts.
|
|
20
|
+
|
|
21
|
+
**You may freshly query Ahrefs** if you need data not pre-baked into your phase (current pricing, recent SERP shifts). Ahrefs project_id is in `.seo/config.json`.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Phase Status Tracker
|
|
26
|
+
|
|
27
|
+
| # | Phase | Pattern | Status | PR |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
| 0 | Technical foundations | Setup | pending | – |
|
|
30
|
+
{{TRACKER_ROWS}}
|
|
31
|
+
|
|
32
|
+
**Conventions:**
|
|
33
|
+
- `pending` → `in_progress` (when worktree starts) → `completed` (in same commit as PR)
|
|
34
|
+
- PR column: `branch \`name\` (PR TBD)` then update to `#NNN` after `gh pr create`
|
|
35
|
+
- If a phase is abandoned, status = `skipped` with one-line reason
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Reference Data (read once per agent)
|
|
40
|
+
|
|
41
|
+
### 1. Site facts
|
|
42
|
+
|
|
43
|
+
- **Domain:** {{DOMAIN}}
|
|
44
|
+
- **Ahrefs project_id:** {{AHREFS_PROJECT_ID}} (from `.seo/config.json`)
|
|
45
|
+
- **Domain Rating:** {{DR}} (as of {{DR_DATE}}) — caps KD targets at ≤{{DR_CAP}} while DR is still climbing
|
|
46
|
+
- **Stack:** {{STACK}}
|
|
47
|
+
- **Brand accent color:** {{ACCENT}}
|
|
48
|
+
- **Hero font / body font:** {{FONTS}}
|
|
49
|
+
- **Marketing pages root:** {{MARKETING_ROOT}}
|
|
50
|
+
|
|
51
|
+
### 2. Existing programmatic surface (DO NOT DUPLICATE)
|
|
52
|
+
|
|
53
|
+
{{EXISTING_PROGRAMMATIC_TABLE}}
|
|
54
|
+
|
|
55
|
+
### 3. Critical files
|
|
56
|
+
|
|
57
|
+
| File | What lives there |
|
|
58
|
+
|---|---|
|
|
59
|
+
{{CRITICAL_FILES_TABLE}}
|
|
60
|
+
|
|
61
|
+
### 4. Data shapes
|
|
62
|
+
|
|
63
|
+
See `~/.claude/skills/seo-machine/references/patterns/<pattern>.md` for full TypeScript interface per pattern. Stack-specific serialization in `references/stacks/<stack>.md`.
|
|
64
|
+
|
|
65
|
+
### 5. Conventions
|
|
66
|
+
|
|
67
|
+
**URL slugs:** lowercase, hyphenated, never underscored.
|
|
68
|
+
|
|
69
|
+
**Honesty section is non-negotiable** on every `/alternatives/[brand]` page. 3-4 honest tradeoffs admitting where the competitor wins. Brand signal + Google quality signal.
|
|
70
|
+
|
|
71
|
+
**Plural-form capture (Pattern A):** Every alt page's first H2 must read "Best [Brand] alternatives in {{YEAR}}". Plural keyword is 2-3× volume of singular.
|
|
72
|
+
|
|
73
|
+
**Internal-link minimums per page:**
|
|
74
|
+
- `/alternatives/*` → ≥2 sibling alts + ≥1 feature + ≥1 tool
|
|
75
|
+
- `/for/*` → ≥2 features + ≥2 tools + ≥1 sibling `/for/`
|
|
76
|
+
- `/compare/*` → both alts + ≥1 `/for/` + `/pricing`
|
|
77
|
+
- `/playbooks/*` → ≥3 features + ≥2 tools + ≥2 `/for/` + ≥1 alt
|
|
78
|
+
- Every page reachable from ≥2 other pages
|
|
79
|
+
|
|
80
|
+
**Word counts:**
|
|
81
|
+
- `/alternatives/*`: ≥600 words
|
|
82
|
+
- `/for/*`: ≥800
|
|
83
|
+
- `/compare/*`: ≥700
|
|
84
|
+
- `/playbooks/*`: ≥2,500
|
|
85
|
+
|
|
86
|
+
**Schema:** `BreadcrumbList` (auto), `FAQPage` (where FAQ section), `SoftwareApplication`/`Article` (page-type-dependent).
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Keyword Research Appendix
|
|
91
|
+
|
|
92
|
+
All numbers from Ahrefs (or manual sources). Re-query if a phase is executed >90 days from now.
|
|
93
|
+
|
|
94
|
+
### A.1 — `/alternatives/[brand]` candidates
|
|
95
|
+
|
|
96
|
+
{{ALTERNATIVES_RESEARCH_TABLE}}
|
|
97
|
+
|
|
98
|
+
### A.2 — `/for/[use-case]` candidates
|
|
99
|
+
|
|
100
|
+
{{USE_CASE_RESEARCH_TABLE}}
|
|
101
|
+
|
|
102
|
+
### A.3 — `/for/[audience]` candidates
|
|
103
|
+
|
|
104
|
+
{{AUDIENCE_RESEARCH_TABLE}}
|
|
105
|
+
|
|
106
|
+
### A.4 — `/compare/[a-vs-b]` candidates
|
|
107
|
+
|
|
108
|
+
{{COMPARE_RESEARCH_TABLE}}
|
|
109
|
+
|
|
110
|
+
### A.5 — `/playbooks/[topic]` candidates
|
|
111
|
+
|
|
112
|
+
{{PLAYBOOK_RESEARCH_TABLE}}
|
|
113
|
+
|
|
114
|
+
### A.6 — Striking-distance (positions 5-20 in GSC)
|
|
115
|
+
|
|
116
|
+
{{STRIKING_DISTANCE_TABLE}}
|
|
117
|
+
|
|
118
|
+
### A.7 — Already-saturated head terms (avoid)
|
|
119
|
+
|
|
120
|
+
{{SATURATED_TABLE}}
|
|
121
|
+
|
|
122
|
+
### A.8 — Out of scope (intentionally excluded)
|
|
123
|
+
|
|
124
|
+
{{OUT_OF_SCOPE}}
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Phases
|
|
129
|
+
|
|
130
|
+
> Each phase is a single deployable PR. Pre-bake everything needed; re-query Ahrefs only for fresh competitor pricing/features at execution time. Mark `in_progress` when you start, `completed` (with PR link) when merged.
|
|
131
|
+
|
|
132
|
+
### Phase 0 — Technical foundations
|
|
133
|
+
|
|
134
|
+
**Why:** the day-0 crawl shapes how Google understands the site for months. Fix these before shipping any content.
|
|
135
|
+
|
|
136
|
+
**Scope:** see `~/.claude/skills/seo-machine/references/technical-audit.md` for the full audit recipe. Common Phase 0 tasks:
|
|
137
|
+
|
|
138
|
+
1. Generate/verify sitemap.xml
|
|
139
|
+
2. Verify robots.txt allows crawling and references sitemap
|
|
140
|
+
3. Add unique title + description to existing pages
|
|
141
|
+
4. Build schema helper for the stack (`SoftwareApplication`, `FAQPage`, `BreadcrumbList`, `Article` factories)
|
|
142
|
+
5. Submit sitemap to Google Search Console + Bing Webmaster Tools
|
|
143
|
+
|
|
144
|
+
**Files modified:** auto-populate from audit findings.
|
|
145
|
+
|
|
146
|
+
**Verification:**
|
|
147
|
+
- [ ] `python ~/.claude/skills/seo-machine/scripts/tech_audit.py --domain {{DOMAIN}}` returns 0 critical findings
|
|
148
|
+
- [ ] Sitemap submitted in GSC (manual check)
|
|
149
|
+
|
|
150
|
+
{{ADDITIONAL_PHASES}}
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Off-page checklist
|
|
155
|
+
|
|
156
|
+
See `~/.claude/skills/seo-machine/references/off-page.md` for full strategy. Track submission status here:
|
|
157
|
+
|
|
158
|
+
### Directory submissions (starter stack)
|
|
159
|
+
|
|
160
|
+
- [ ] Product Hunt — scheduled launch
|
|
161
|
+
- [ ] G2 — submitted product page
|
|
162
|
+
- [ ] Capterra
|
|
163
|
+
- [ ] SaaSHub
|
|
164
|
+
- [ ] AlternativeTo — list as alternative to: {{COMPETITORS}}
|
|
165
|
+
- [ ] Indie Hackers
|
|
166
|
+
- [ ] Crunchbase
|
|
167
|
+
|
|
168
|
+
### Listicle outreach targets
|
|
169
|
+
|
|
170
|
+
See `.seo/backlink-targets.json` for the Ahrefs-researched target list.
|
|
171
|
+
|
|
172
|
+
### Founder link trades
|
|
173
|
+
|
|
174
|
+
(populate as opportunities surface)
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Glossary
|
|
179
|
+
|
|
180
|
+
- **DR** — Ahrefs Domain Rating, 0-100 score of backlink authority
|
|
181
|
+
- **KD** — Ahrefs Keyword Difficulty, 0-100 score of ranking difficulty for a keyword
|
|
182
|
+
- **TP** — Traffic Potential, Ahrefs' estimate of total clicks the top-ranking page captures across all related keywords
|
|
183
|
+
- **Striking distance** — pages currently ranking position 5-20 in GSC, one push from page 1
|
|
184
|
+
- **Pattern A/B/C/D/E** — the five page patterns this skill bundles (alternatives, use-case, audience, compare, playbook)
|