@jairodri/huckleberry-cli 1.0.2 → 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 +347 -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,148 @@
|
|
|
1
|
+
# Content Structure Templates
|
|
2
|
+
|
|
3
|
+
Outline templates by content type. Choose based on search intent and keyword.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Pillar Guide Structure (5,000-8,000 words)
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
1. Hook Intro (150-250 words)
|
|
11
|
+
- Answer the title question immediately
|
|
12
|
+
- Why this matters NOW
|
|
13
|
+
- Who this is for (and who it's not for)
|
|
14
|
+
|
|
15
|
+
2. Quick Answer Section (200-300 words)
|
|
16
|
+
- Direct answer for Featured Snippet
|
|
17
|
+
- TL;DR for skimmers
|
|
18
|
+
|
|
19
|
+
3. Core Sections (3-5 major sections)
|
|
20
|
+
- Each 800-1,500 words
|
|
21
|
+
- Each answers a major sub-question
|
|
22
|
+
- H2 headers with keyword variations
|
|
23
|
+
- PAA questions as H2s where appropriate
|
|
24
|
+
|
|
25
|
+
4. Implementation / How to Apply (300-500 words)
|
|
26
|
+
- Specific actionable steps
|
|
27
|
+
- Decision framework if applicable
|
|
28
|
+
|
|
29
|
+
5. FAQ Section (5-10 questions)
|
|
30
|
+
- From PAA research
|
|
31
|
+
- Schema-ready format (used for JSON-LD)
|
|
32
|
+
|
|
33
|
+
6. Conclusion with CTA (150-200 words)
|
|
34
|
+
- Summarize key takeaway
|
|
35
|
+
- Clear next action
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## How-To Tutorial Structure (2,000-3,000 words)
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
1. What You'll Achieve (150-200 words)
|
|
44
|
+
- End result shown first
|
|
45
|
+
- Time estimate
|
|
46
|
+
- Prerequisites
|
|
47
|
+
|
|
48
|
+
2. Why This Method (200-300 words)
|
|
49
|
+
- Context and alternatives
|
|
50
|
+
- Why this approach works
|
|
51
|
+
|
|
52
|
+
3. Step-by-Step Instructions (1,200-2,000 words)
|
|
53
|
+
- Numbered steps
|
|
54
|
+
- One action per step
|
|
55
|
+
- Troubleshooting inline
|
|
56
|
+
|
|
57
|
+
4. Variations / Advanced Tips (300-400 words)
|
|
58
|
+
|
|
59
|
+
5. Common Mistakes (200-300 words)
|
|
60
|
+
|
|
61
|
+
6. FAQ (3-5 questions from PAA)
|
|
62
|
+
|
|
63
|
+
7. Next Steps with CTA (100-150 words)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Comparison Structure (2,500-4,000 words)
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
1. Quick Verdict (200-300 words)
|
|
72
|
+
- Bottom line recommendation
|
|
73
|
+
- "Choose X if... Choose Y if..."
|
|
74
|
+
|
|
75
|
+
2. Comparison Table
|
|
76
|
+
- 8-12 key differentiators
|
|
77
|
+
- Pricing, best for, key features
|
|
78
|
+
|
|
79
|
+
3. Deep Dive: Option A (800-1,000 words)
|
|
80
|
+
- What it is
|
|
81
|
+
- Key features
|
|
82
|
+
- Pros/cons
|
|
83
|
+
- Best for
|
|
84
|
+
- Real example
|
|
85
|
+
|
|
86
|
+
4. Deep Dive: Option B (800-1,000 words)
|
|
87
|
+
- Same structure
|
|
88
|
+
|
|
89
|
+
5. Head-to-Head Comparison (300-500 words)
|
|
90
|
+
- Specific scenarios
|
|
91
|
+
- When to pick each
|
|
92
|
+
|
|
93
|
+
6. FAQ (3-5 questions from PAA)
|
|
94
|
+
|
|
95
|
+
7. Final Recommendation with CTA
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Listicle Structure (2,000-3,000 words)
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
1. Intro with Context (150-200 words)
|
|
104
|
+
- Why this list matters
|
|
105
|
+
- How items were selected
|
|
106
|
+
|
|
107
|
+
2. Quick Summary Table/List
|
|
108
|
+
- All items at a glance
|
|
109
|
+
- For skimmers
|
|
110
|
+
|
|
111
|
+
3. Individual Items (150-300 words each)
|
|
112
|
+
- What it is
|
|
113
|
+
- Why it's included
|
|
114
|
+
- Best for / Use case
|
|
115
|
+
- Limitations (honesty builds trust)
|
|
116
|
+
|
|
117
|
+
4. How to Choose (200-300 words)
|
|
118
|
+
- Decision framework
|
|
119
|
+
|
|
120
|
+
5. FAQ (3-5 questions from PAA)
|
|
121
|
+
|
|
122
|
+
6. Conclusion with CTA
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Writing Rules (All Types)
|
|
128
|
+
|
|
129
|
+
### The First Paragraph Rule
|
|
130
|
+
Answer the search query in the first 2-3 sentences. Do not make them scroll.
|
|
131
|
+
|
|
132
|
+
### The "So What?" Chain
|
|
133
|
+
For every point, ask "so what?" until you hit something the reader cares about.
|
|
134
|
+
Write from the bottom of the chain, not the top.
|
|
135
|
+
|
|
136
|
+
### Specificity Over Generality
|
|
137
|
+
- Weak: "This tool saves time."
|
|
138
|
+
- Strong: "This tool cut our email outreach from 4 hours to 15 minutes per day."
|
|
139
|
+
|
|
140
|
+
### Show Your Work
|
|
141
|
+
- "After testing 23 AI writing tools over 6 months, three stood out..."
|
|
142
|
+
- "We analyzed 147 high-ranking articles in this space. The pattern was clear..."
|
|
143
|
+
|
|
144
|
+
### Positioning-Informed Angle
|
|
145
|
+
If positioning.md is loaded, use it to shape perspective:
|
|
146
|
+
- "The Anti-Agency" angle: write from someone who's seen the model fail
|
|
147
|
+
- "Practitioner, Not Theorist" angle: lead with implementation stories
|
|
148
|
+
- "Data-First" angle: lead every section with numbers and evidence
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# E-E-A-T Content Examples
|
|
2
|
+
|
|
3
|
+
Best-in-class examples of human-written content that demonstrates Experience,
|
|
4
|
+
Expertise, Authoritativeness, and Trust. Study these patterns.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## What Makes Content "Human"
|
|
9
|
+
|
|
10
|
+
1. **A specific person with a specific viewpoint** -- not a committee
|
|
11
|
+
2. **Real experience showing through** -- stories, mistakes, specific numbers
|
|
12
|
+
3. **Opinions defended with reasoning** -- not hedged, not "some say X, others say Y"
|
|
13
|
+
4. **Unique insight or data** -- something you can't find by aggregating other sources
|
|
14
|
+
5. **Voice that could only be this person** -- recognizable even without a byline
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Example 1: Paul Graham
|
|
19
|
+
|
|
20
|
+
**Source:** paulgraham.com essays
|
|
21
|
+
|
|
22
|
+
**Why it works:** Unmistakable point of view backed by decades of startup experience.
|
|
23
|
+
|
|
24
|
+
**What to adapt:**
|
|
25
|
+
- Direct statements ("all you need to do is")
|
|
26
|
+
- Acknowledging the real world ("in practice")
|
|
27
|
+
- Contrarian reframing ("already too conservative")
|
|
28
|
+
- Building an argument step by step
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Example 2: Wait But Why (Tim Urban)
|
|
33
|
+
|
|
34
|
+
**Source:** waitbutwhy.com
|
|
35
|
+
|
|
36
|
+
**Why it works:** Deep research made accessible through personality.
|
|
37
|
+
|
|
38
|
+
**What to adapt:**
|
|
39
|
+
- Specific sourcing ("I have a friend who's a physicist")
|
|
40
|
+
- Extending analogies to reveal insight
|
|
41
|
+
- Admitting "we have no idea" when true
|
|
42
|
+
- Making complex ideas visceral
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Example 3: Stratechery (Ben Thompson)
|
|
47
|
+
|
|
48
|
+
**Source:** stratechery.com
|
|
49
|
+
|
|
50
|
+
**Why it works:** Daily analysis with a consistent analytical framework (Aggregation Theory).
|
|
51
|
+
|
|
52
|
+
**What to adapt:**
|
|
53
|
+
- Original frameworks with clear definitions
|
|
54
|
+
- Building from principles to applications
|
|
55
|
+
- Historical context that illuminates current events
|
|
56
|
+
- Confidence in analysis (not hedged to death)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Example 4: James Clear
|
|
61
|
+
|
|
62
|
+
**Source:** jamesclear.com articles
|
|
63
|
+
|
|
64
|
+
**Why it works:** Research backing AND personal application.
|
|
65
|
+
|
|
66
|
+
**What to adapt:**
|
|
67
|
+
- Specific research citations with details (248 people, 66 days)
|
|
68
|
+
- Debunking common misconceptions with evidence
|
|
69
|
+
- Storytelling structure (setup, surprise, reframe)
|
|
70
|
+
- Making research findings immediately relevant
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Example 5: Backlinko (Brian Dean)
|
|
75
|
+
|
|
76
|
+
**Source:** backlinko.com
|
|
77
|
+
|
|
78
|
+
**Why it works:** Every tactic backed by data from his own experiments.
|
|
79
|
+
|
|
80
|
+
**What to adapt:**
|
|
81
|
+
- Specific results with numbers (110%, 14 days)
|
|
82
|
+
- Personal narrative arc (struggled, discovered, succeeded)
|
|
83
|
+
- "I'll show you exactly how" -- and then actually does
|
|
84
|
+
- Setting up the transformation story
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Example 6: Lenny's Newsletter (Lenny Rachitsky)
|
|
89
|
+
|
|
90
|
+
**Source:** lennysnewsletter.com
|
|
91
|
+
|
|
92
|
+
**Why it works:** Primary research from interviewing practitioners.
|
|
93
|
+
|
|
94
|
+
**What to adapt:**
|
|
95
|
+
- Primary research methodology stated explicitly (50 leaders, specific companies)
|
|
96
|
+
- Honest results even when they contradict expectations
|
|
97
|
+
- Named sources with real quotes
|
|
98
|
+
- Going deeper when initial answer is unsatisfying
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Example 7: Derek Sivers
|
|
103
|
+
|
|
104
|
+
**Source:** sive.rs
|
|
105
|
+
|
|
106
|
+
**Why it works:** Short, punchy essays with unconventional positions defended by experience.
|
|
107
|
+
|
|
108
|
+
**What to adapt:**
|
|
109
|
+
- Strong position stated immediately
|
|
110
|
+
- Simple framework that's memorable
|
|
111
|
+
- No hedging
|
|
112
|
+
- Personal application implied throughout
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Example 8: Matt Levine (Finance)
|
|
117
|
+
|
|
118
|
+
**Source:** Bloomberg Money Stuff newsletter
|
|
119
|
+
|
|
120
|
+
**Why it works:** Complex financial concepts with humor and clarity.
|
|
121
|
+
|
|
122
|
+
**What to adapt:**
|
|
123
|
+
- Complex topics explained through everyday analogies
|
|
124
|
+
- Willingness to state conclusions clearly
|
|
125
|
+
- Dry humor that doesn't undermine substance
|
|
126
|
+
- Building arguments by showing what's missing
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Example 9: J. Kenji Lopez-Alt (Food Science)
|
|
131
|
+
|
|
132
|
+
**Source:** Serious Eats, The Food Lab
|
|
133
|
+
|
|
134
|
+
**Why it works:** Scientific methodology applied to cooking. Tests dozens of variations.
|
|
135
|
+
|
|
136
|
+
**What to adapt:**
|
|
137
|
+
- Specific numbers from actual tests (50 steaks, 30 seconds, 30% faster)
|
|
138
|
+
- Challenging conventional wisdom with evidence
|
|
139
|
+
- Methodology transparency
|
|
140
|
+
- Practical conclusions from scientific approach
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Example 10: Julia Evans (Technical/Programming)
|
|
145
|
+
|
|
146
|
+
**Source:** jvns.ca, Wizard Zines
|
|
147
|
+
|
|
148
|
+
**Why it works:** Complex systems topics made approachable without dumbing down.
|
|
149
|
+
|
|
150
|
+
**What to adapt:**
|
|
151
|
+
- Starting from genuine curiosity
|
|
152
|
+
- Admitting uncertainty
|
|
153
|
+
- Specific scope ("spent a week")
|
|
154
|
+
- Inviting engagement
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Example 11: Dr. Peter Attia (Medicine)
|
|
159
|
+
|
|
160
|
+
**Source:** The Drive podcast, peterattiamd.com
|
|
161
|
+
|
|
162
|
+
**Why it works:** Practitioner depth. Actually reads the papers, explains the statistics.
|
|
163
|
+
|
|
164
|
+
**What to adapt:**
|
|
165
|
+
- Actually reading the primary sources
|
|
166
|
+
- Distinguishing relative vs absolute risk
|
|
167
|
+
- Teaching methodology, not just conclusions
|
|
168
|
+
- Nuanced positions
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Example 12: Morgan Housel (Behavioral Finance)
|
|
173
|
+
|
|
174
|
+
**Source:** "The Psychology of Money"
|
|
175
|
+
|
|
176
|
+
**Why it works:** Money and decision-making through psychology and history.
|
|
177
|
+
|
|
178
|
+
**What to adapt:**
|
|
179
|
+
- Specific contrasting stories
|
|
180
|
+
- Simple conclusions from complex data
|
|
181
|
+
- Redefining success
|
|
182
|
+
- No jargon despite financial topic
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Example 13: Dan Luu (Engineering)
|
|
187
|
+
|
|
188
|
+
**Source:** danluu.com
|
|
189
|
+
|
|
190
|
+
**Why it works:** Deep technical analyses backed by actual measurement.
|
|
191
|
+
|
|
192
|
+
**What to adapt:**
|
|
193
|
+
- Measurement over assumption
|
|
194
|
+
- Historical comparison that reveals regression
|
|
195
|
+
- Specific numbers that can be verified
|
|
196
|
+
- Clear conclusion that challenges consensus
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## The Pattern Across All Examples
|
|
201
|
+
|
|
202
|
+
1. **First-Person Experience** -- "I found" not "studies show"
|
|
203
|
+
2. **Specific Numbers** -- "248 people" not "many"
|
|
204
|
+
3. **Named Sources** -- real people, real companies, real quotes
|
|
205
|
+
4. **Contrarian Angles** -- challenging convention with evidence
|
|
206
|
+
5. **Admitted Limitations** -- "this won't work for everyone"
|
|
207
|
+
6. **Clear Voice** -- identifiable without a byline
|
|
208
|
+
7. **Original Insight** -- can't be found by aggregating other sources
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## How to Apply
|
|
213
|
+
|
|
214
|
+
When writing SEO content, ask:
|
|
215
|
+
|
|
216
|
+
1. What's my specific experience with this topic?
|
|
217
|
+
2. What numbers can I cite from actual work?
|
|
218
|
+
3. What's my actual opinion here?
|
|
219
|
+
4. What would I tell a smart friend who asked about this?
|
|
220
|
+
5. What can only I say about this?
|
|
221
|
+
|
|
222
|
+
If you can't answer these, you're writing AI-style content even if AI didn't write it.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Quick Reference by Vertical
|
|
227
|
+
|
|
228
|
+
| Vertical | Examples | Key Patterns |
|
|
229
|
+
|----------|----------|--------------|
|
|
230
|
+
| Marketing/Business | Paul Graham, Derek Sivers, Backlinko, Lenny | Conviction, methodology, primary research |
|
|
231
|
+
| Finance | Matt Levine, Morgan Housel | Complex to accessible, stories over jargon |
|
|
232
|
+
| Tech/Engineering | Julia Evans, Dan Luu | Measurement, curiosity, admitting failures |
|
|
233
|
+
| Healthcare | Dr. Peter Attia | Primary sources, nuance, human stakes |
|
|
234
|
+
| Food/Consumer | J. Kenji Lopez-Alt | Scientific method, myth-busting with data |
|
|
235
|
+
| Deep Explainers | Wait But Why, Stratechery | Research depth, original frameworks |
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# On-Page SEO Reference
|
|
2
|
+
|
|
3
|
+
Technical on-page optimization guidelines for content that ranks. Apply these to every piece of SEO content before publishing.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Title Tags
|
|
8
|
+
|
|
9
|
+
The single most important on-page ranking factor. Get this right first.
|
|
10
|
+
|
|
11
|
+
### Format
|
|
12
|
+
```
|
|
13
|
+
Primary Keyword — Modifier | Brand Name
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Rules
|
|
17
|
+
- **Length:** 50-60 characters (Google truncates at ~60)
|
|
18
|
+
- **Keyword placement:** Primary keyword within the first 3-5 words
|
|
19
|
+
- **Uniqueness:** Every page must have a distinct title tag
|
|
20
|
+
- **No keyword stuffing:** Use the keyword once, naturally
|
|
21
|
+
- **Power modifiers** that boost CTR: "Best," "Guide," "2026," "How to," "Free," "Review"
|
|
22
|
+
- **Separator:** Use em dash (—), pipe (|), or colon (:) between segments
|
|
23
|
+
|
|
24
|
+
### Examples
|
|
25
|
+
| Good | Why |
|
|
26
|
+
|---|---|
|
|
27
|
+
| `How to Launch a SaaS Product — Complete 2026 Guide` | Keyword first, modifier, current year |
|
|
28
|
+
| `Best Email Marketing Tools for Startups | YourBrand` | Keyword early, audience qualifier, brand |
|
|
29
|
+
| `Product Hunt Launch Strategy: Step-by-Step Playbook` | Keyword first, format signal |
|
|
30
|
+
|
|
31
|
+
| Bad | Why |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `YourBrand — The Best Platform for Everything` | Brand first wastes prime keyword space |
|
|
34
|
+
| `How to Launch a Product, SaaS Launch, Launch Guide` | Keyword stuffing |
|
|
35
|
+
| `Guide` | Too vague, no keyword, no brand |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Meta Descriptions
|
|
40
|
+
|
|
41
|
+
Not a ranking factor directly, but controls click-through rate from search results.
|
|
42
|
+
|
|
43
|
+
### Format
|
|
44
|
+
```
|
|
45
|
+
{What the page delivers} + {proof/qualifier} + {CTA}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Rules
|
|
49
|
+
- **Length:** 150-160 characters (Google truncates at ~160)
|
|
50
|
+
- **Include primary keyword:** Google bolds matching terms in SERPs
|
|
51
|
+
- **Include a CTA:** "Learn how," "Get the checklist," "See examples"
|
|
52
|
+
- **Unique per page:** Never duplicate across pages
|
|
53
|
+
- **Match search intent:** If query is informational, promise information. If transactional, promise a solution.
|
|
54
|
+
- **Use active voice:** "Learn how to..." not "This article discusses..."
|
|
55
|
+
- **Include numbers when possible:** "7 steps," "in 30 days," "47% increase"
|
|
56
|
+
|
|
57
|
+
### Template
|
|
58
|
+
```
|
|
59
|
+
Learn {what they'll learn} with {proof element}. {Specific benefit}. {CTA with action verb}.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Example
|
|
63
|
+
```
|
|
64
|
+
Learn how to plan a SaaS launch with our 5-phase framework used by 200+ founders.
|
|
65
|
+
Get the checklist, timeline, and channel strategy. Start planning today.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Heading Hierarchy (H1-H6)
|
|
71
|
+
|
|
72
|
+
Headings signal content structure to both users and search engines.
|
|
73
|
+
|
|
74
|
+
### Rules
|
|
75
|
+
|
|
76
|
+
**H1 — Page Title (exactly one per page)**
|
|
77
|
+
- Include primary keyword naturally
|
|
78
|
+
- Should closely match or expand on the title tag
|
|
79
|
+
- Never duplicate the title tag word-for-word (add context)
|
|
80
|
+
|
|
81
|
+
**H2 — Major Sections (3-8 per article)**
|
|
82
|
+
- Each H2 should target a secondary keyword or answer a PAA question
|
|
83
|
+
- Use question format when matching PAA: "How do I plan a product launch?"
|
|
84
|
+
- Think of H2s as standalone mini-topics — each should make sense in a table of contents
|
|
85
|
+
|
|
86
|
+
**H3 — Subsections within H2s (2-5 per H2)**
|
|
87
|
+
- Support the parent H2 topic
|
|
88
|
+
- Use for step breakdowns, subcategories, or related points
|
|
89
|
+
- Can include long-tail keyword variations
|
|
90
|
+
|
|
91
|
+
**H4-H6 — Deep nesting (use sparingly)**
|
|
92
|
+
- Only when content genuinely requires multi-level hierarchy
|
|
93
|
+
- Most SEO content should not go deeper than H3
|
|
94
|
+
|
|
95
|
+
### Keyword Distribution Across Headings
|
|
96
|
+
| Level | Keyword Strategy |
|
|
97
|
+
|---|---|
|
|
98
|
+
| H1 | Primary keyword, exact or close match |
|
|
99
|
+
| H2 | Secondary keywords, PAA questions, topic variations |
|
|
100
|
+
| H3 | Long-tail variations, related terms, specific subtopics |
|
|
101
|
+
| H4+ | No keyword targeting needed — use for readability only |
|
|
102
|
+
|
|
103
|
+
### Anti-Patterns
|
|
104
|
+
- Multiple H1 tags on a single page
|
|
105
|
+
- Skipping levels (H1 → H3 without H2)
|
|
106
|
+
- Using headings for visual styling instead of structure
|
|
107
|
+
- Keyword-stuffing every heading with the same term
|
|
108
|
+
- Generic headings: "Introduction," "Conclusion," "Overview"
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## URL Structure
|
|
113
|
+
|
|
114
|
+
Clean URLs improve crawlability, shareability, and click-through rates.
|
|
115
|
+
|
|
116
|
+
### Rules
|
|
117
|
+
- **Keep it short:** 3-5 words in the slug, max 60 characters total path
|
|
118
|
+
- **Include primary keyword:** `/launch-strategy-saas/` not `/post-12847/`
|
|
119
|
+
- **Use hyphens:** `/launch-strategy/` not `/launch_strategy/` or `/launchstrategy/`
|
|
120
|
+
- **Lowercase only:** `/seo-guide/` not `/SEO-Guide/`
|
|
121
|
+
- **No stop words:** `/saas-launch-strategy/` not `/how-to-create-a-saas-launch-strategy/`
|
|
122
|
+
- **No dates in slugs** (unless time-sensitive content like news)
|
|
123
|
+
- **No parameters in indexed pages:** `/pricing/` not `/page?id=pricing`
|
|
124
|
+
- **Flat structure preferred:** `/blog/launch-strategy/` not `/blog/2026/03/13/marketing/launch-strategy/`
|
|
125
|
+
|
|
126
|
+
### URL Hierarchy for Content Hubs
|
|
127
|
+
```
|
|
128
|
+
/blog/ ← Blog index
|
|
129
|
+
/blog/launch-strategy/ ← Pillar page
|
|
130
|
+
/blog/product-hunt-launch/ ← Supporting article
|
|
131
|
+
/blog/beta-launch-checklist/ ← Supporting article
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Internal Linking
|
|
137
|
+
|
|
138
|
+
Internal links distribute page authority, help crawlers discover content, and keep users engaged.
|
|
139
|
+
|
|
140
|
+
### Rules
|
|
141
|
+
- **Minimum 3-5 internal links per article** (to other relevant pages)
|
|
142
|
+
- **Link from high-authority pages** to pages you want to rank
|
|
143
|
+
- **Use descriptive anchor text:** "product launch checklist" not "click here" or "read more"
|
|
144
|
+
- **Link contextually:** Place links within the flow of content, not in disconnected lists
|
|
145
|
+
- **Link deep:** Point to specific articles, not just your homepage or blog index
|
|
146
|
+
- **Reciprocal linking:** If Page A links to Page B, Page B should link back (when relevant)
|
|
147
|
+
|
|
148
|
+
### Hub & Spoke Model
|
|
149
|
+
```
|
|
150
|
+
┌─── Supporting Article A
|
|
151
|
+
│
|
|
152
|
+
Pillar ──┼─── Supporting Article B
|
|
153
|
+
Page │
|
|
154
|
+
├─── Supporting Article C
|
|
155
|
+
│
|
|
156
|
+
└─── Supporting Article D
|
|
157
|
+
|
|
158
|
+
Each spoke links back to the pillar.
|
|
159
|
+
The pillar links out to each spoke.
|
|
160
|
+
Spokes link to each other where relevant.
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Anchor Text Rules
|
|
164
|
+
| Type | Example | When to Use |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
| Exact match | "launch checklist" | Sparingly — 1-2 per article max |
|
|
167
|
+
| Partial match | "our complete launch checklist" | Primary approach — natural and keyword-rich |
|
|
168
|
+
| Branded | "see the mktg launch guide" | When referencing your own product/tool |
|
|
169
|
+
| Generic | "click here," "read more" | Never for SEO — avoid entirely |
|
|
170
|
+
| Natural phrase | "we covered this in our guide to launching" | Best for readability and SEO balance |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Image Optimization
|
|
175
|
+
|
|
176
|
+
Images impact page speed, accessibility, and can rank in Google Image Search.
|
|
177
|
+
|
|
178
|
+
### Alt Text
|
|
179
|
+
- **Describe the image content** in 5-15 words
|
|
180
|
+
- **Include keyword** when the image genuinely relates to it
|
|
181
|
+
- **Don't keyword-stuff:** "screenshot of launch checklist template" not "launch checklist launch plan launch strategy"
|
|
182
|
+
- **Empty alt for decorative images:** `alt=""` for dividers, backgrounds, icons
|
|
183
|
+
- **Be specific:** "bar chart showing 47% increase in signups after launch" not "chart"
|
|
184
|
+
|
|
185
|
+
### File Naming
|
|
186
|
+
- Descriptive, hyphenated: `saas-launch-timeline.png` not `IMG_3847.png`
|
|
187
|
+
- Include keyword when natural: `product-hunt-listing-example.webp`
|
|
188
|
+
- No spaces, no underscores, no uppercase
|
|
189
|
+
|
|
190
|
+
### Compression & Format
|
|
191
|
+
| Format | Use For | Target Size |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| WebP | Photos and complex images (primary format) | Under 100KB |
|
|
194
|
+
| AVIF | Next-gen alternative to WebP (growing support) | Under 80KB |
|
|
195
|
+
| PNG | Screenshots, images needing transparency | Under 200KB |
|
|
196
|
+
| SVG | Icons, logos, simple illustrations | Under 20KB |
|
|
197
|
+
| JPEG | Legacy fallback for photos | Under 150KB |
|
|
198
|
+
|
|
199
|
+
### Responsive Images
|
|
200
|
+
- Serve multiple sizes with `srcset` for different screen widths
|
|
201
|
+
- Use `loading="lazy"` for images below the fold
|
|
202
|
+
- Set explicit `width` and `height` attributes to prevent layout shift
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Schema Markup (JSON-LD)
|
|
207
|
+
|
|
208
|
+
Structured data helps Google understand content type and can trigger rich results.
|
|
209
|
+
|
|
210
|
+
### When to Use Each Type
|
|
211
|
+
|
|
212
|
+
| Schema Type | Content Type | Rich Result |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| `Article` | Blog posts, guides, news | Headline + date in search |
|
|
215
|
+
| `FAQPage` | Pages with FAQ sections | Expandable Q&A in SERPs |
|
|
216
|
+
| `HowTo` | Step-by-step tutorials | Step listing with images |
|
|
217
|
+
| `Product` | Product pages, reviews | Price, availability, rating |
|
|
218
|
+
| `BreadcrumbList` | All pages with navigation | Breadcrumb trail in SERPs |
|
|
219
|
+
| `LocalBusiness` | Location-based businesses | Knowledge panel, map |
|
|
220
|
+
| `VideoObject` | Pages with embedded video | Video thumbnail in search |
|
|
221
|
+
|
|
222
|
+
### Implementation Rules
|
|
223
|
+
- Use JSON-LD format (Google's preferred method)
|
|
224
|
+
- Place in `<head>` or at end of `<body>`
|
|
225
|
+
- Validate with Google's Rich Results Test before publishing
|
|
226
|
+
- One `Article` schema per page minimum
|
|
227
|
+
- Add `FAQPage` whenever you have 3+ questions answered on the page
|
|
228
|
+
- Keep schema data consistent with visible page content (no hidden content)
|
|
229
|
+
|
|
230
|
+
### Reference
|
|
231
|
+
See `schema-templates.md` in this directory for copy-paste JSON-LD templates.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Core Web Vitals for Content
|
|
236
|
+
|
|
237
|
+
Page experience signals affect rankings. Content creators can influence these.
|
|
238
|
+
|
|
239
|
+
### LCP (Largest Contentful Paint) — Target: Under 2.5s
|
|
240
|
+
- **Hero images:** Preload with `<link rel="preload">`, serve in WebP, compress aggressively
|
|
241
|
+
- **Web fonts:** Use `font-display: swap`, preload critical fonts, limit to 2 families
|
|
242
|
+
- **Above-the-fold content:** Minimize render-blocking CSS and JS
|
|
243
|
+
- **Server response:** Use CDN, enable compression (gzip/brotli)
|
|
244
|
+
|
|
245
|
+
### CLS (Cumulative Layout Shift) — Target: Under 0.1
|
|
246
|
+
- **Always set image dimensions:** `width` and `height` attributes on every `<img>`
|
|
247
|
+
- **Reserve space for ads/embeds:** Use fixed-height containers
|
|
248
|
+
- **No injected content above the fold** after page load (banners, consent modals)
|
|
249
|
+
- **Web fonts:** Use `font-display: optional` or size-matched fallbacks
|
|
250
|
+
|
|
251
|
+
### INP (Interaction to Next Paint) — Target: Under 200ms
|
|
252
|
+
- **Minimize JavaScript** on content pages — most blog posts don't need heavy JS
|
|
253
|
+
- **Defer non-critical scripts:** analytics, chat widgets, social embeds
|
|
254
|
+
- **Lazy load below-fold elements:** images, videos, embedded content
|
|
255
|
+
|
|
256
|
+
### Content-Specific Performance Tips
|
|
257
|
+
- Inline critical CSS for above-the-fold content
|
|
258
|
+
- Use system fonts or variable fonts to reduce font file weight
|
|
259
|
+
- Compress all images before upload — don't rely on CMS auto-compression
|
|
260
|
+
- Limit embedded third-party scripts (each one adds latency and CLS risk)
|
|
261
|
+
- Test with Lighthouse on a throttled connection, not your fast office WiFi
|