@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,1158 @@
|
|
|
1
|
+
# Brand Voice Mode Walkthroughs & Examples
|
|
2
|
+
|
|
3
|
+
> Extracted from SKILL.md for token efficiency.
|
|
4
|
+
|
|
5
|
+
# Mode Details
|
|
6
|
+
|
|
7
|
+
## Mode 1: Extract
|
|
8
|
+
|
|
9
|
+
### What to Analyze
|
|
10
|
+
|
|
11
|
+
Request 3-5 pieces of content they consider "most them":
|
|
12
|
+
- Website copy (especially About page, homepage)
|
|
13
|
+
- Emails they've sent
|
|
14
|
+
- Social posts that performed well
|
|
15
|
+
- Newsletter editions
|
|
16
|
+
- Video or podcast transcripts
|
|
17
|
+
- Anything where they felt "this sounds like me"
|
|
18
|
+
|
|
19
|
+
### What to Look For
|
|
20
|
+
|
|
21
|
+
**1. Tone patterns**
|
|
22
|
+
- Formal ↔ Casual (contractions? slang? sentence fragments?)
|
|
23
|
+
- Serious ↔ Playful (humor? lightness? gravity?)
|
|
24
|
+
- Reserved ↔ Bold (hedging? strong claims? confidence?)
|
|
25
|
+
- Distant ↔ Intimate (we/they vs I/you? personal stories?)
|
|
26
|
+
|
|
27
|
+
**2. Vocabulary patterns**
|
|
28
|
+
- Industry jargon level (heavy, light, translated?)
|
|
29
|
+
- Signature words or phrases they repeat
|
|
30
|
+
- Words they seem to avoid
|
|
31
|
+
- Curse words or edgy language?
|
|
32
|
+
- Formal words vs everyday words
|
|
33
|
+
|
|
34
|
+
**3. Rhythm patterns**
|
|
35
|
+
- Average sentence length
|
|
36
|
+
- Paragraph length
|
|
37
|
+
- Mix of short punchy vs longer flowing
|
|
38
|
+
- Use of fragments
|
|
39
|
+
- List usage
|
|
40
|
+
|
|
41
|
+
**4. Structural patterns**
|
|
42
|
+
- How they open (story? question? statement?)
|
|
43
|
+
- How they transition
|
|
44
|
+
- How they close (CTA style? summary? open loop?)
|
|
45
|
+
- Headers and formatting preferences
|
|
46
|
+
|
|
47
|
+
**5. Personality signals**
|
|
48
|
+
- Self-deprecating or confident?
|
|
49
|
+
- Teacher or peer?
|
|
50
|
+
- Polished or raw?
|
|
51
|
+
- Optimistic or realistic?
|
|
52
|
+
- References and examples they use
|
|
53
|
+
|
|
54
|
+
**6. POV patterns**
|
|
55
|
+
- First person (I) or plural (we)?
|
|
56
|
+
- How they address reader (you? folks? friends?)
|
|
57
|
+
- Direct address or general statements?
|
|
58
|
+
|
|
59
|
+
### Extract Output
|
|
60
|
+
|
|
61
|
+
After analysis, produce the voice profile (format below). Then proceed to the
|
|
62
|
+
Voice Test Loop.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Mode 2: Build
|
|
67
|
+
|
|
68
|
+
### Strategic Questions to Ask
|
|
69
|
+
|
|
70
|
+
**Identity:**
|
|
71
|
+
1. What are 3-5 words that describe your personality?
|
|
72
|
+
2. What do you stand for? What's your core belief about your industry/topic?
|
|
73
|
+
3. What's your background? What shaped how you see things?
|
|
74
|
+
4. What makes you genuinely different from others in your space?
|
|
75
|
+
|
|
76
|
+
**Audience:**
|
|
77
|
+
5. Who are you talking to? (Be specific)
|
|
78
|
+
6. What tone resonates with them? (What do they respond to?)
|
|
79
|
+
7. What would make them trust you? What would turn them off?
|
|
80
|
+
|
|
81
|
+
**Positioning:**
|
|
82
|
+
8. Are you the expert, the peer, the rebel, the guide, the insider?
|
|
83
|
+
9. Where do you sit on accessible ↔ exclusive?
|
|
84
|
+
10. Where do you sit on approachable ↔ authoritative?
|
|
85
|
+
|
|
86
|
+
**Aspiration:**
|
|
87
|
+
11. Name 2-3 brands or people whose voice you admire. What specifically do you like about how they communicate?
|
|
88
|
+
12. What do you explicitly NOT want to sound like?
|
|
89
|
+
|
|
90
|
+
**Practical:**
|
|
91
|
+
13. Any words or phrases that are signature to you?
|
|
92
|
+
14. Any words or phrases you hate or want to avoid?
|
|
93
|
+
15. How do you feel about humor? Profanity? Hot takes?
|
|
94
|
+
|
|
95
|
+
### Build Process
|
|
96
|
+
|
|
97
|
+
From the answers, construct voice profile:
|
|
98
|
+
|
|
99
|
+
1. **Synthesize personality** → Core traits that should come through
|
|
100
|
+
2. **Define tone spectrum** → Where they land on key dimensions
|
|
101
|
+
3. **Set vocabulary rules** → What to use, what to avoid
|
|
102
|
+
4. **Establish rhythm** → Sentence/paragraph patterns that fit
|
|
103
|
+
5. **Create examples** → Write sample phrases that embody the voice
|
|
104
|
+
6. **Define boundaries** → What's off-brand
|
|
105
|
+
7. **Map platform adaptations** → How voice flexes per channel
|
|
106
|
+
|
|
107
|
+
After building, proceed to the Voice Test Loop.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Mode 3: Auto-Scrape
|
|
112
|
+
|
|
113
|
+
This is the v2 power mode. The user provides a URL, and the skill does the
|
|
114
|
+
research automatically.
|
|
115
|
+
|
|
116
|
+
### Prerequisites
|
|
117
|
+
|
|
118
|
+
Auto-Scrape requires web search capability. On Claude Code, use web search
|
|
119
|
+
tools to pull content. If web search is not available, fall back gracefully:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Web search is not available in this environment.
|
|
123
|
+
I can still build your voice profile:
|
|
124
|
+
|
|
125
|
+
→ Paste your website copy and I will extract it
|
|
126
|
+
→ Answer 15 questions and I will build it
|
|
127
|
+
|
|
128
|
+
Which do you prefer?
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Auto-Scrape Process
|
|
132
|
+
|
|
133
|
+
**Step 1: Gather content**
|
|
134
|
+
|
|
135
|
+
From the provided URL, search for and pull:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
◑ Scraping brand presence...
|
|
139
|
+
|
|
140
|
+
├── Homepage copy searching...
|
|
141
|
+
├── About page searching...
|
|
142
|
+
├── Blog posts (recent 3) searching...
|
|
143
|
+
├── LinkedIn bio + posts searching...
|
|
144
|
+
├── Twitter/X bio + tweets searching...
|
|
145
|
+
└── Any other public content searching...
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Specifically search for:
|
|
149
|
+
- `{url}` — Homepage content
|
|
150
|
+
- `{url}/about` or `{url}/about-us` — About page
|
|
151
|
+
- `{url}/blog` — Recent blog posts (grab 2-3)
|
|
152
|
+
- `site:{domain} linkedin.com` — LinkedIn profile/company page
|
|
153
|
+
- `site:{domain} twitter.com` OR `site:{domain} x.com` — Twitter/X presence
|
|
154
|
+
- `{brand name} {founder name}` — Any podcast appearances, interviews, guest posts
|
|
155
|
+
|
|
156
|
+
**Step 2: Report what was found**
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
✓ Scraping complete
|
|
160
|
+
|
|
161
|
+
Content gathered:
|
|
162
|
+
├── Homepage ✓ 850 words
|
|
163
|
+
├── About page ✓ 420 words
|
|
164
|
+
├── Blog posts ✓ 3 posts (2,100 words total)
|
|
165
|
+
├── LinkedIn ✓ Bio + 5 recent posts
|
|
166
|
+
├── Twitter/X ✗ Not found
|
|
167
|
+
└── Total corpus 3,370+ words
|
|
168
|
+
|
|
169
|
+
──────────────────────────────────────────────
|
|
170
|
+
|
|
171
|
+
Analyzing for voice patterns...
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Step 3: Feed into Extract mode**
|
|
175
|
+
|
|
176
|
+
Take all gathered content and run the full Extract analysis (all 6
|
|
177
|
+
dimensions: tone, vocabulary, rhythm, structure, personality, POV). The user
|
|
178
|
+
does not need to paste anything — the scraping did the work.
|
|
179
|
+
|
|
180
|
+
**Step 4: Supplement with quick questions**
|
|
181
|
+
|
|
182
|
+
After the automated extraction, ask 2-3 targeted questions to fill gaps the
|
|
183
|
+
scrape could not answer:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
I have a solid picture from your public content.
|
|
187
|
+
Three quick questions to fill in the gaps:
|
|
188
|
+
|
|
189
|
+
1. Is there anything about your current voice
|
|
190
|
+
you want to change or evolve?
|
|
191
|
+
2. Any words or phrases you love or hate that
|
|
192
|
+
might not show up in your public content?
|
|
193
|
+
3. Who do you admire voice-wise? (a brand,
|
|
194
|
+
creator, or writer)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Merge the answers with the extracted data and produce the final voice profile.
|
|
198
|
+
Then proceed to the Voice Test Loop.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Voice Test Loop
|
|
203
|
+
|
|
204
|
+
After generating the voice profile from ANY mode, run this validation step
|
|
205
|
+
before saving.
|
|
206
|
+
|
|
207
|
+
### Step 1: Generate 3 Sample Paragraphs
|
|
208
|
+
|
|
209
|
+
Using the voice profile you just created, write three pieces of sample content
|
|
210
|
+
in the brand's voice:
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
──────────────────────────────────────────────
|
|
214
|
+
|
|
215
|
+
VOICE TEST — Does this sound like you?
|
|
216
|
+
|
|
217
|
+
──────────────────────────────────────────────
|
|
218
|
+
|
|
219
|
+
SAMPLE 1: EMAIL OPENING
|
|
220
|
+
|
|
221
|
+
"{A 3-4 sentence email opening paragraph that
|
|
222
|
+
demonstrates the voice. Should feel like a real
|
|
223
|
+
email the brand would send to their list. Include
|
|
224
|
+
the greeting style, sentence rhythm, vocabulary,
|
|
225
|
+
and personality from the profile.}"
|
|
226
|
+
|
|
227
|
+
──────────────────────────────────────────────
|
|
228
|
+
|
|
229
|
+
SAMPLE 2: SOCIAL POST
|
|
230
|
+
|
|
231
|
+
"{A LinkedIn or Twitter/X post in the brand's
|
|
232
|
+
voice. Match the platform the brand is most
|
|
233
|
+
active on. Demonstrate the social-specific
|
|
234
|
+
adaptations from the platform table.}"
|
|
235
|
+
|
|
236
|
+
──────────────────────────────────────────────
|
|
237
|
+
|
|
238
|
+
SAMPLE 3: LANDING PAGE HERO
|
|
239
|
+
|
|
240
|
+
"{A landing page hero section — headline +
|
|
241
|
+
subheadline + 1-2 supporting sentences. Show
|
|
242
|
+
the brand's direct-response voice with benefit-
|
|
243
|
+
focused, urgent copy.}"
|
|
244
|
+
|
|
245
|
+
──────────────────────────────────────────────
|
|
246
|
+
|
|
247
|
+
Does this sound like you?
|
|
248
|
+
|
|
249
|
+
① Yes, that nails it → Save and finish
|
|
250
|
+
② Close but needs adjustment → Tell me what
|
|
251
|
+
③ Not quite right → Show me what is wrong
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Step 2: Process Feedback
|
|
255
|
+
|
|
256
|
+
**If ① "Yes, that nails it":**
|
|
257
|
+
- Proceed to file output (save the profile)
|
|
258
|
+
|
|
259
|
+
**If ② "Close but needs adjustment":**
|
|
260
|
+
- Ask: "What feels off? Be as specific as you can — is it the tone, the
|
|
261
|
+
vocabulary, the rhythm, or something else?"
|
|
262
|
+
- Take their feedback
|
|
263
|
+
- Adjust the relevant sections of the voice profile
|
|
264
|
+
- Regenerate the 3 samples with the updated profile
|
|
265
|
+
- Present the test again
|
|
266
|
+
- Repeat until they confirm
|
|
267
|
+
|
|
268
|
+
**If ③ "Not quite right":**
|
|
269
|
+
- Ask: "Can you show me an example of something you have written that sounds
|
|
270
|
+
right? Or describe specifically what is wrong — too formal? Too casual? Too
|
|
271
|
+
safe? Too aggressive?"
|
|
272
|
+
- If they provide examples, run a focused Extract analysis on those examples
|
|
273
|
+
- Rebuild the profile sections that were off
|
|
274
|
+
- Regenerate all 3 samples
|
|
275
|
+
- Present the test again
|
|
276
|
+
- Repeat until they confirm
|
|
277
|
+
|
|
278
|
+
### Step 3: Iteration Limit
|
|
279
|
+
|
|
280
|
+
If the user goes through 3 rounds without confirming, surface this:
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
We have been through a few rounds. Sometimes
|
|
284
|
+
the best approach is to save what we have and
|
|
285
|
+
refine it over time as you use other skills.
|
|
286
|
+
|
|
287
|
+
① Save current version (you can always re-run
|
|
288
|
+
/brand-voice to update)
|
|
289
|
+
② One more round — I think I know what to fix
|
|
290
|
+
③ Start over with Build mode (answer the 15
|
|
291
|
+
questions instead)
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
# Output Formats
|
|
300
|
+
|
|
301
|
+
## The Voice Profile (Output Format)
|
|
302
|
+
|
|
303
|
+
This is the canonical format for voice-profile.md. Every field is required.
|
|
304
|
+
The Platform Adaptations table and the structured JSON block are v2 additions.
|
|
305
|
+
|
|
306
|
+
```markdown
|
|
307
|
+
## Last Updated
|
|
308
|
+
{YYYY-MM-DD} by /brand-voice
|
|
309
|
+
|
|
310
|
+
# {Brand/Person Name} Voice Profile
|
|
311
|
+
|
|
312
|
+
## Voice Summary
|
|
313
|
+
{2-3 sentences capturing the essence. What does this voice FEEL like to
|
|
314
|
+
encounter?}
|
|
315
|
+
|
|
316
|
+
## Core Personality Traits
|
|
317
|
+
- **{Trait 1}:** {What this means in practice}
|
|
318
|
+
- **{Trait 2}:** {What this means in practice}
|
|
319
|
+
- **{Trait 3}:** {What this means in practice}
|
|
320
|
+
- **{Trait 4}:** {What this means in practice}
|
|
321
|
+
|
|
322
|
+
## Tone Spectrum
|
|
323
|
+
|
|
324
|
+
| Dimension | Position | Notes |
|
|
325
|
+
|-----------|----------|-------|
|
|
326
|
+
| Formal ↔ Casual | {e.g., "Casual, but not sloppy"} | {specifics} |
|
|
327
|
+
| Serious ↔ Playful | {e.g., "Mostly serious, occasional wit"} | {specifics} |
|
|
328
|
+
| Reserved ↔ Bold | {e.g., "Bold, makes strong claims"} | {specifics} |
|
|
329
|
+
| Simple ↔ Sophisticated | {e.g., "Simple words, sophisticated ideas"} | {specifics} |
|
|
330
|
+
| Warm ↔ Direct | {e.g., "Direct but not cold"} | {specifics} |
|
|
331
|
+
|
|
332
|
+
## Vocabulary
|
|
333
|
+
|
|
334
|
+
**Words/phrases to USE:**
|
|
335
|
+
- {word/phrase} — {why/when}
|
|
336
|
+
- {word/phrase} — {why/when}
|
|
337
|
+
- {signature phrases if any}
|
|
338
|
+
|
|
339
|
+
**Words/phrases to AVOID:**
|
|
340
|
+
- {word/phrase} — {why}
|
|
341
|
+
- {word/phrase} — {why}
|
|
342
|
+
- {AI-sounding words to skip}
|
|
343
|
+
|
|
344
|
+
**Jargon level:** {Heavy / Moderate / Light / Translated}
|
|
345
|
+
|
|
346
|
+
**Profanity:** {Yes / Occasional / Never}
|
|
347
|
+
|
|
348
|
+
## Rhythm & Structure
|
|
349
|
+
|
|
350
|
+
**Sentences:** {e.g., "Mix of short punchy (3-5 words) and medium (10-15
|
|
351
|
+
words). Rarely long."}
|
|
352
|
+
|
|
353
|
+
**Paragraphs:** {e.g., "Short. 1-3 sentences max. Lots of white space."}
|
|
354
|
+
|
|
355
|
+
**Openings:** {e.g., "Often starts with bold statement or direct challenge.
|
|
356
|
+
Rarely asks questions."}
|
|
357
|
+
|
|
358
|
+
**Formatting:** {e.g., "Uses headers. Bulleted lists. Bold for emphasis.
|
|
359
|
+
Minimal emojis."}
|
|
360
|
+
|
|
361
|
+
## POV & Address
|
|
362
|
+
|
|
363
|
+
**First person:** {I / We / Mix}
|
|
364
|
+
**Reader address:** {You / Direct name / Folks / Friends / etc.}
|
|
365
|
+
**Relationship stance:** {Teacher / Peer / Guide / Insider / Rebel}
|
|
366
|
+
|
|
367
|
+
## Platform Adaptations
|
|
368
|
+
|
|
369
|
+
| Platform | Tone Shift | Structure | Length |
|
|
370
|
+
|----------|-----------|-----------|--------|
|
|
371
|
+
| Email | {e.g., "Warmer, more personal"} | {e.g., "Short paragraphs, clear CTA"} | {e.g., "150-300 words"} |
|
|
372
|
+
| LinkedIn | {e.g., "More professional, expertise-forward"} | {e.g., "Single-idea posts, line breaks"} | {e.g., "100-200 words"} |
|
|
373
|
+
| Twitter/X | {e.g., "Punchier, more opinionated"} | {e.g., "One idea, no fluff"} | {e.g., "Under 280 chars"} |
|
|
374
|
+
| Blog/SEO | {e.g., "More thorough, still voiced"} | {e.g., "Headers, lists, longer form"} | {e.g., "1500-2500 words"} |
|
|
375
|
+
| Landing Page | {e.g., "More urgent, benefit-focused"} | {e.g., "Short sentences, CTA-heavy"} | {e.g., "Varies by section"} |
|
|
376
|
+
|
|
377
|
+
## Example Phrases
|
|
378
|
+
|
|
379
|
+
**On-brand (sounds like us):**
|
|
380
|
+
- "{Example phrase}"
|
|
381
|
+
- "{Example phrase}"
|
|
382
|
+
- "{Example phrase}"
|
|
383
|
+
|
|
384
|
+
**Off-brand (doesn't sound like us):**
|
|
385
|
+
- "{Example phrase}" — {why it's wrong}
|
|
386
|
+
- "{Example phrase}" — {why it's wrong}
|
|
387
|
+
- "{Example phrase}" — {why it's wrong}
|
|
388
|
+
|
|
389
|
+
## Do's and Don'ts
|
|
390
|
+
|
|
391
|
+
**DO:**
|
|
392
|
+
- {specific guidance}
|
|
393
|
+
- {specific guidance}
|
|
394
|
+
- {specific guidance}
|
|
395
|
+
|
|
396
|
+
**DON'T:**
|
|
397
|
+
- {specific guidance}
|
|
398
|
+
- {specific guidance}
|
|
399
|
+
- {specific guidance}
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
<details>
|
|
404
|
+
<summary>Structured Data (JSON)</summary>
|
|
405
|
+
|
|
406
|
+
```json
|
|
407
|
+
{
|
|
408
|
+
"brand_name": "{name}",
|
|
409
|
+
"last_updated": "{YYYY-MM-DD}",
|
|
410
|
+
"updated_by": "/brand-voice",
|
|
411
|
+
"tone": {
|
|
412
|
+
"summary": "{one-sentence tone summary}",
|
|
413
|
+
"spectrum": [
|
|
414
|
+
{
|
|
415
|
+
"dimension": "Formality",
|
|
416
|
+
"left_pole": "Casual",
|
|
417
|
+
"right_pole": "Formal",
|
|
418
|
+
"position": {1-10},
|
|
419
|
+
"notes": "{context}"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"dimension": "Energy",
|
|
423
|
+
"left_pole": "Serious",
|
|
424
|
+
"right_pole": "Playful",
|
|
425
|
+
"position": {1-10},
|
|
426
|
+
"notes": "{context}"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"dimension": "Confidence",
|
|
430
|
+
"left_pole": "Reserved",
|
|
431
|
+
"right_pole": "Bold",
|
|
432
|
+
"position": {1-10},
|
|
433
|
+
"notes": "{context}"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"dimension": "Complexity",
|
|
437
|
+
"left_pole": "Simple",
|
|
438
|
+
"right_pole": "Sophisticated",
|
|
439
|
+
"position": {1-10},
|
|
440
|
+
"notes": "{context}"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"dimension": "Warmth",
|
|
444
|
+
"left_pole": "Warm",
|
|
445
|
+
"right_pole": "Direct",
|
|
446
|
+
"position": {1-10},
|
|
447
|
+
"notes": "{context}"
|
|
448
|
+
}
|
|
449
|
+
]
|
|
450
|
+
},
|
|
451
|
+
"vocabulary": {
|
|
452
|
+
"preferred": [
|
|
453
|
+
{ "term": "{word}", "context": "{when to use}" }
|
|
454
|
+
],
|
|
455
|
+
"avoid": [
|
|
456
|
+
{ "term": "{word}", "reason": "{why}", "alternative": "{use instead}" }
|
|
457
|
+
]
|
|
458
|
+
},
|
|
459
|
+
"personality_traits": [
|
|
460
|
+
"{trait 1}",
|
|
461
|
+
"{trait 2}",
|
|
462
|
+
"{trait 3}",
|
|
463
|
+
"{trait 4}"
|
|
464
|
+
],
|
|
465
|
+
"examples": {
|
|
466
|
+
"on_brand": [
|
|
467
|
+
{ "text": "{example}", "source": "{origin}", "why": "{what makes it on-brand}" }
|
|
468
|
+
],
|
|
469
|
+
"off_brand": [
|
|
470
|
+
{ "text": "{example}", "source": "{origin}", "why": "{what makes it off-brand}" }
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
"platform_adaptations": {
|
|
474
|
+
"email": {
|
|
475
|
+
"tone_shift": "{description}",
|
|
476
|
+
"format_preferences": "{structure notes}",
|
|
477
|
+
"length": "{typical length}",
|
|
478
|
+
"dos": ["{do this}"],
|
|
479
|
+
"donts": ["{avoid this}"]
|
|
480
|
+
},
|
|
481
|
+
"linkedin": {
|
|
482
|
+
"tone_shift": "{description}",
|
|
483
|
+
"format_preferences": "{structure notes}",
|
|
484
|
+
"length": "{typical length}",
|
|
485
|
+
"dos": ["{do this}"],
|
|
486
|
+
"donts": ["{avoid this}"]
|
|
487
|
+
},
|
|
488
|
+
"twitter": {
|
|
489
|
+
"tone_shift": "{description}",
|
|
490
|
+
"format_preferences": "{structure notes}",
|
|
491
|
+
"length": "{typical length}",
|
|
492
|
+
"dos": ["{do this}"],
|
|
493
|
+
"donts": ["{avoid this}"]
|
|
494
|
+
},
|
|
495
|
+
"blog": {
|
|
496
|
+
"tone_shift": "{description}",
|
|
497
|
+
"format_preferences": "{structure notes}",
|
|
498
|
+
"length": "{typical length}",
|
|
499
|
+
"dos": ["{do this}"],
|
|
500
|
+
"donts": ["{avoid this}"]
|
|
501
|
+
},
|
|
502
|
+
"landing_page": {
|
|
503
|
+
"tone_shift": "{description}",
|
|
504
|
+
"format_preferences": "{structure notes}",
|
|
505
|
+
"length": "{typical length}",
|
|
506
|
+
"dos": ["{do this}"],
|
|
507
|
+
"donts": ["{avoid this}"]
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
"audience_awareness": {
|
|
511
|
+
"sophistication_level": "{beginner|intermediate|advanced|mixed}",
|
|
512
|
+
"jargon_tolerance": "{none|light|moderate|heavy}",
|
|
513
|
+
"reading_level": "{target level}",
|
|
514
|
+
"notes": "{additional context}"
|
|
515
|
+
},
|
|
516
|
+
"signature_phrases": [
|
|
517
|
+
{ "phrase": "{catchphrase}", "usage": "{when to use}" }
|
|
518
|
+
]
|
|
519
|
+
}
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
</details>
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## Formatted Output Structure
|
|
528
|
+
|
|
529
|
+
When presenting the completed voice profile to the user, follow the output
|
|
530
|
+
format specification from /cmo `rules/output-format.md`. The terminal output
|
|
531
|
+
uses the premium formatting system. The markdown file saved to disk uses
|
|
532
|
+
standard markdown.
|
|
533
|
+
|
|
534
|
+
### Terminal Output Template
|
|
535
|
+
|
|
536
|
+
```
|
|
537
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
538
|
+
|
|
539
|
+
BRAND VOICE PROFILE
|
|
540
|
+
Generated {Mon DD, YYYY}
|
|
541
|
+
|
|
542
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
543
|
+
|
|
544
|
+
Mode: {Extract | Build | Auto-Scrape}
|
|
545
|
+
Brand: {name}
|
|
546
|
+
|
|
547
|
+
{If brand context was loaded:}
|
|
548
|
+
Brand context:
|
|
549
|
+
├── Positioning ✓ loaded
|
|
550
|
+
└── Audience ✓ loaded
|
|
551
|
+
|
|
552
|
+
──────────────────────────────────────────────
|
|
553
|
+
|
|
554
|
+
VOICE DNA
|
|
555
|
+
|
|
556
|
+
Summary: {2-3 sentence voice summary}
|
|
557
|
+
|
|
558
|
+
Personality:
|
|
559
|
+
├── {Trait 1}: {explanation}
|
|
560
|
+
├── {Trait 2}: {explanation}
|
|
561
|
+
├── {Trait 3}: {explanation}
|
|
562
|
+
└── {Trait 4}: {explanation}
|
|
563
|
+
|
|
564
|
+
──────────────────────────────────────────────
|
|
565
|
+
|
|
566
|
+
TONE SPECTRUM
|
|
567
|
+
|
|
568
|
+
Formal ↔ Casual: {position}
|
|
569
|
+
Serious ↔ Playful: {position}
|
|
570
|
+
Reserved ↔ Bold: {position}
|
|
571
|
+
Simple ↔ Sophisticated: {position}
|
|
572
|
+
Warm ↔ Direct: {position}
|
|
573
|
+
|
|
574
|
+
──────────────────────────────────────────────
|
|
575
|
+
|
|
576
|
+
VOCABULARY
|
|
577
|
+
|
|
578
|
+
┌──────────────────────────────────────────────┐
|
|
579
|
+
│ │
|
|
580
|
+
│ ✓ On-brand │
|
|
581
|
+
│ "{example phrase}" │
|
|
582
|
+
│ │
|
|
583
|
+
│ ✗ Off-brand │
|
|
584
|
+
│ "{example phrase}" │
|
|
585
|
+
│ │
|
|
586
|
+
└──────────────────────────────────────────────┘
|
|
587
|
+
|
|
588
|
+
Words to use Words to avoid
|
|
589
|
+
├── {word} ├── {word}
|
|
590
|
+
├── {word} ├── {word}
|
|
591
|
+
└── {word} └── {word}
|
|
592
|
+
|
|
593
|
+
Jargon: {level} Profanity: {level}
|
|
594
|
+
|
|
595
|
+
──────────────────────────────────────────────
|
|
596
|
+
|
|
597
|
+
RHYTHM
|
|
598
|
+
|
|
599
|
+
Sentences: {pattern}
|
|
600
|
+
Paragraphs: {pattern}
|
|
601
|
+
Openings: {pattern}
|
|
602
|
+
Formatting: {pattern}
|
|
603
|
+
|
|
604
|
+
──────────────────────────────────────────────
|
|
605
|
+
|
|
606
|
+
POV
|
|
607
|
+
|
|
608
|
+
First person: {I / We / Mix}
|
|
609
|
+
Reader address: {how they address the reader}
|
|
610
|
+
Stance: {Teacher / Peer / Guide / etc.}
|
|
611
|
+
|
|
612
|
+
──────────────────────────────────────────────
|
|
613
|
+
|
|
614
|
+
PLATFORM ADAPTATIONS
|
|
615
|
+
|
|
616
|
+
Platform Tone Shift Length
|
|
617
|
+
─────────────────────────────────────────
|
|
618
|
+
Email {shift} {length}
|
|
619
|
+
LinkedIn {shift} {length}
|
|
620
|
+
Twitter/X {shift} {length}
|
|
621
|
+
Blog/SEO {shift} {length}
|
|
622
|
+
Landing Page {shift} {length}
|
|
623
|
+
|
|
624
|
+
──────────────────────────────────────────────
|
|
625
|
+
|
|
626
|
+
VOICE TEST
|
|
627
|
+
|
|
628
|
+
{Present the 3 sample paragraphs here}
|
|
629
|
+
{Then the feedback prompt}
|
|
630
|
+
|
|
631
|
+
──────────────────────────────────────────────
|
|
632
|
+
|
|
633
|
+
FILES SAVED
|
|
634
|
+
|
|
635
|
+
./brand/voice-profile.md ✓
|
|
636
|
+
|
|
637
|
+
WHAT'S NEXT
|
|
638
|
+
|
|
639
|
+
Your voice profile is set. Every content skill
|
|
640
|
+
will reference it from here on.
|
|
641
|
+
|
|
642
|
+
→ /positioning-angles Find your market angle (~10 min)
|
|
643
|
+
→ /direct-response-copy Write your first landing
|
|
644
|
+
page (~15 min)
|
|
645
|
+
→ /start-here See full project status
|
|
646
|
+
|
|
647
|
+
Or tell me what you're working on and
|
|
648
|
+
I will route you.
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
---
|
|
655
|
+
|
|
656
|
+
# Examples
|
|
657
|
+
|
|
658
|
+
## Example: Extracted Voice Profile
|
|
659
|
+
|
|
660
|
+
### Input analyzed:
|
|
661
|
+
Website copy, 10 tweets, 3 newsletter editions from a SaaS founder
|
|
662
|
+
|
|
663
|
+
### Output:
|
|
664
|
+
|
|
665
|
+
# Marc Lou Voice Profile
|
|
666
|
+
|
|
667
|
+
## Last Updated
|
|
668
|
+
2026-02-16 by /brand-voice
|
|
669
|
+
|
|
670
|
+
## Voice Summary
|
|
671
|
+
Sounds like a friend who's been in the trenches, figured some things out, and
|
|
672
|
+
is sharing what actually worked — not what should work in theory.
|
|
673
|
+
Self-deprecating but confident. Casual but sharp. Makes you feel like you're
|
|
674
|
+
getting the real story, not the polished version.
|
|
675
|
+
|
|
676
|
+
## Core Personality Traits
|
|
677
|
+
- **Self-deprecating confidence:** Admits failures freely ("I believed I was
|
|
678
|
+
Mark Zuckerberg") but backs claims with specific results. Not arrogant, but
|
|
679
|
+
clearly knows what works.
|
|
680
|
+
- **Builder energy:** Everything framed around shipping, making, creating.
|
|
681
|
+
Impatient with theory. Values speed and action.
|
|
682
|
+
- **Radical transparency:** Shares real numbers ($45K/month), real failures
|
|
683
|
+
(0 users), real timelines. Nothing hidden.
|
|
684
|
+
- **Accessible expertise:** Knows a lot but explains simply. Never talks
|
|
685
|
+
down. Peer, not guru.
|
|
686
|
+
|
|
687
|
+
## Tone Spectrum
|
|
688
|
+
|
|
689
|
+
| Dimension | Position | Notes |
|
|
690
|
+
|-----------|----------|-------|
|
|
691
|
+
| Formal ↔ Casual | Very casual | Contractions, fragments, emoji |
|
|
692
|
+
| Serious ↔ Playful | Playful with serious points | Humor to disarm, but real substance |
|
|
693
|
+
| Reserved ↔ Bold | Bold | Strong claims, specific numbers, no hedging |
|
|
694
|
+
| Simple ↔ Sophisticated | Simple | Short words, clear sentences |
|
|
695
|
+
| Warm ↔ Direct | Direct but warm | Friendly but doesn't waste words |
|
|
696
|
+
|
|
697
|
+
## Vocabulary
|
|
698
|
+
|
|
699
|
+
**Words/phrases to USE:**
|
|
700
|
+
- "Ship" — core action verb
|
|
701
|
+
- "Madman" — intensity descriptor ("shipped like a madman")
|
|
702
|
+
- Specific numbers always ($45K, 16 startups, 2 years)
|
|
703
|
+
- "Hey, it's [name]" — signature opener
|
|
704
|
+
|
|
705
|
+
**Words/phrases to AVOID:**
|
|
706
|
+
- "Comprehensive" / "robust" / corporate speak
|
|
707
|
+
- "I think" / "maybe" / hedging language
|
|
708
|
+
- "Passionate about" / empty descriptors
|
|
709
|
+
- Anything that sounds like a LinkedIn post
|
|
710
|
+
|
|
711
|
+
**Jargon level:** Light — uses "MRR" but explains concepts simply
|
|
712
|
+
|
|
713
|
+
**Profanity:** Occasional, casual (not aggressive)
|
|
714
|
+
|
|
715
|
+
## Rhythm & Structure
|
|
716
|
+
|
|
717
|
+
**Sentences:** Short. Punchy. Often fragments. Longest sentences are lists.
|
|
718
|
+
|
|
719
|
+
**Paragraphs:** 1-2 sentences. Lots of breathing room.
|
|
720
|
+
|
|
721
|
+
**Openings:** Personal intro ("Hey, it's Marc") or bold claim.
|
|
722
|
+
|
|
723
|
+
**Formatting:** Minimal headers. Emoji as punctuation. Numbers stand out.
|
|
724
|
+
|
|
725
|
+
## POV & Address
|
|
726
|
+
|
|
727
|
+
**First person:** I (never "we" unless referring to a group)
|
|
728
|
+
**Reader address:** You, direct
|
|
729
|
+
**Relationship stance:** Peer who's slightly ahead. "I was where you are."
|
|
730
|
+
|
|
731
|
+
## Platform Adaptations
|
|
732
|
+
|
|
733
|
+
| Platform | Tone Shift | Structure | Length |
|
|
734
|
+
|----------|-----------|-----------|--------|
|
|
735
|
+
| Email | Warmest — personal intros, "hey" opener | Short paragraphs, single CTA at end | 150-250 words |
|
|
736
|
+
| LinkedIn | Slightly more structured, still casual | Line breaks between sentences, hook first line | 100-200 words |
|
|
737
|
+
| Twitter/X | Most punchy, strongest claims, most fragments | One idea per tweet, threads for stories | Under 280 chars |
|
|
738
|
+
| Blog/SEO | Same voice, more depth, still short paragraphs | Headers, numbered lists, real examples | 1500-2000 words |
|
|
739
|
+
| Landing Page | Proof-heavy, benefit-first, urgency OK | Short sentences, social proof blocks, clear CTA | Varies by section |
|
|
740
|
+
|
|
741
|
+
## Example Phrases
|
|
742
|
+
|
|
743
|
+
**On-brand:**
|
|
744
|
+
- "I shipped 16 startups in 2 years. Now I'm happy and earn $45,000 a month."
|
|
745
|
+
- "If you could, you would have already."
|
|
746
|
+
- "I believed I was Mark Zuckerberg, built a startup for 1 year, and got 0 users."
|
|
747
|
+
|
|
748
|
+
**Off-brand:**
|
|
749
|
+
- "Our comprehensive solution helps entrepreneurs optimize their workflow." — Corporate, vague, no personality
|
|
750
|
+
- "I'm passionate about helping founders succeed." — Empty, cliche
|
|
751
|
+
- "It might potentially help some people in certain situations." — Hedge-y, weak
|
|
752
|
+
|
|
753
|
+
## Do's and Don'ts
|
|
754
|
+
|
|
755
|
+
**DO:**
|
|
756
|
+
- Lead with specific results and real numbers
|
|
757
|
+
- Admit failures and mistakes openly
|
|
758
|
+
- Write like you're texting a smart friend
|
|
759
|
+
- Use emoji sparingly but naturally
|
|
760
|
+
- Keep paragraphs short
|
|
761
|
+
|
|
762
|
+
**DON'T:**
|
|
763
|
+
- Hedge or qualify statements unnecessarily
|
|
764
|
+
- Use corporate or marketing-speak
|
|
765
|
+
- Write long paragraphs
|
|
766
|
+
- Hide behind "we" when you mean "I"
|
|
767
|
+
- Sound like you're trying to impress
|
|
768
|
+
|
|
769
|
+
---
|
|
770
|
+
|
|
771
|
+
## Example: Built Voice Profile
|
|
772
|
+
|
|
773
|
+
### Inputs provided:
|
|
774
|
+
New coaching business. Personality: direct, warm, no-BS. Audience: overwhelmed
|
|
775
|
+
entrepreneurs. Positioning: experienced peer, not guru. Admires: Sahil Bloom's
|
|
776
|
+
clarity, James Clear's simplicity. Hates: hustle culture, fake positivity.
|
|
777
|
+
|
|
778
|
+
### Output:
|
|
779
|
+
|
|
780
|
+
# [Coach Name] Voice Profile
|
|
781
|
+
|
|
782
|
+
## Last Updated
|
|
783
|
+
2026-02-16 by /brand-voice
|
|
784
|
+
|
|
785
|
+
## Voice Summary
|
|
786
|
+
The supportive friend who's direct enough to tell you what you need to hear,
|
|
787
|
+
not what you want to hear. Warm but efficient. Experienced but not preachy.
|
|
788
|
+
Makes complex things simple without dumbing them down. Anti-hustle,
|
|
789
|
+
pro-sustainable success.
|
|
790
|
+
|
|
791
|
+
## Core Personality Traits
|
|
792
|
+
- **Warm directness:** Cares about you AND will tell you straight. No toxic
|
|
793
|
+
positivity, no harsh criticism. Honest but kind.
|
|
794
|
+
- **Calm confidence:** Been through it, figured things out. Doesn't need to
|
|
795
|
+
prove anything. Shares from experience, not theory.
|
|
796
|
+
- **Simplifier:** Takes complicated concepts and makes them actionable. Values
|
|
797
|
+
clarity over cleverness.
|
|
798
|
+
- **Anti-hustle:** Success doesn't require suffering. Sustainable beats
|
|
799
|
+
unsustainable. Rest is productive.
|
|
800
|
+
|
|
801
|
+
## Tone Spectrum
|
|
802
|
+
|
|
803
|
+
| Dimension | Position | Notes |
|
|
804
|
+
|-----------|----------|-------|
|
|
805
|
+
| Formal ↔ Casual | Casual-professional | Warm, approachable, but not sloppy |
|
|
806
|
+
| Serious ↔ Playful | Mostly serious | Occasional lightness, but grounded |
|
|
807
|
+
| Reserved ↔ Bold | Measured bold | Clear opinions, not aggressive |
|
|
808
|
+
| Simple ↔ Sophisticated | Simple | Everyday words, accessible |
|
|
809
|
+
| Warm ↔ Direct | Both | Direct message, warm delivery |
|
|
810
|
+
|
|
811
|
+
## Vocabulary
|
|
812
|
+
|
|
813
|
+
**Words/phrases to USE:**
|
|
814
|
+
- "Here's the thing" — transition into real talk
|
|
815
|
+
- "What actually works" — contrast to theory/hype
|
|
816
|
+
- "Sustainable" — key value
|
|
817
|
+
- "You don't have to" — permission-giving
|
|
818
|
+
- Specific but not hypey numbers
|
|
819
|
+
|
|
820
|
+
**Words/phrases to AVOID:**
|
|
821
|
+
- "Hustle" / "grind" / "crush it"
|
|
822
|
+
- "10x" / "scale" / growth-bro language
|
|
823
|
+
- "Just" (minimizing: "just do this")
|
|
824
|
+
- "Amazing" / "incredible" / empty superlatives
|
|
825
|
+
- "Rise and grind" / hustle culture phrases
|
|
826
|
+
|
|
827
|
+
**Jargon level:** Very light — explains everything in plain language
|
|
828
|
+
|
|
829
|
+
**Profanity:** Rare, only for emphasis
|
|
830
|
+
|
|
831
|
+
## Rhythm & Structure
|
|
832
|
+
|
|
833
|
+
**Sentences:** Medium length. Flows conversationally. Short sentences for
|
|
834
|
+
emphasis.
|
|
835
|
+
|
|
836
|
+
**Paragraphs:** 2-4 sentences. Enough room to develop a thought.
|
|
837
|
+
|
|
838
|
+
**Openings:** Often reframes a problem. "Most advice about X tells you to Y.
|
|
839
|
+
But here's what actually works."
|
|
840
|
+
|
|
841
|
+
**Formatting:** Clean. Some bold for emphasis. Occasional bullet points.
|
|
842
|
+
Minimal emoji.
|
|
843
|
+
|
|
844
|
+
## POV & Address
|
|
845
|
+
|
|
846
|
+
**First person:** I (personal, not hiding behind "we")
|
|
847
|
+
**Reader address:** You, direct and personal
|
|
848
|
+
**Relationship stance:** Experienced peer. Been there, found a path, sharing it.
|
|
849
|
+
|
|
850
|
+
## Platform Adaptations
|
|
851
|
+
|
|
852
|
+
| Platform | Tone Shift | Structure | Length |
|
|
853
|
+
|----------|-----------|-----------|--------|
|
|
854
|
+
| Email | Warmest — "just between us" feel, more personal stories | Short paragraphs, single clear CTA | 200-350 words |
|
|
855
|
+
| LinkedIn | More expertise-forward, still warm, fewer contractions | Hook in first line, line breaks for readability | 150-250 words |
|
|
856
|
+
| Twitter/X | Most direct, strongest opinions, permission-giving | One reframe per tweet, "you don't have to" energy | Under 280 chars |
|
|
857
|
+
| Blog/SEO | Most thorough, teacher voice, still conversational | Headers, subheads, actionable sections, examples | 1800-2500 words |
|
|
858
|
+
| Landing Page | Benefit-focused, objection-aware, calm urgency | Problem-agitation-solution flow, proof points | Varies by section |
|
|
859
|
+
|
|
860
|
+
## Example Phrases
|
|
861
|
+
|
|
862
|
+
**On-brand:**
|
|
863
|
+
- "You don't have to burn out to build something meaningful."
|
|
864
|
+
- "Here's the thing about productivity advice: most of it assumes you have
|
|
865
|
+
unlimited energy. You don't."
|
|
866
|
+
- "I tried the hustle approach for 3 years. It worked — until it didn't.
|
|
867
|
+
Here's what I do instead."
|
|
868
|
+
|
|
869
|
+
**Off-brand:**
|
|
870
|
+
- "Ready to 10x your productivity and CRUSH your goals?!" — Hustle culture,
|
|
871
|
+
hype-y
|
|
872
|
+
- "In this comprehensive guide, you'll learn..." — Corporate, distant
|
|
873
|
+
- "Just wake up at 5am!" — Oversimplified, "just" minimizes difficulty
|
|
874
|
+
|
|
875
|
+
## Do's and Don'ts
|
|
876
|
+
|
|
877
|
+
**DO:**
|
|
878
|
+
- Acknowledge their struggle is real
|
|
879
|
+
- Offer permission to do less/differently
|
|
880
|
+
- Share what you actually do, not what sounds good
|
|
881
|
+
- Keep it simple and actionable
|
|
882
|
+
- Speak as a peer who's further down the same path
|
|
883
|
+
|
|
884
|
+
**DON'T:**
|
|
885
|
+
- Promise unrealistic results
|
|
886
|
+
- Use hustle/grind language
|
|
887
|
+
- Talk down to them
|
|
888
|
+
- Overcomplicate with jargon
|
|
889
|
+
- Sound like a motivational poster
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
## Example: Auto-Scraped Voice Profile
|
|
894
|
+
|
|
895
|
+
### Input provided:
|
|
896
|
+
URL: `https://sahilbloom.com`
|
|
897
|
+
|
|
898
|
+
### Auto-Scrape process:
|
|
899
|
+
|
|
900
|
+
```
|
|
901
|
+
◑ Scraping brand presence...
|
|
902
|
+
|
|
903
|
+
├── Homepage copy ✓ 620 words
|
|
904
|
+
├── About page ✓ 380 words
|
|
905
|
+
├── Blog posts (3 recent) ✓ 4,200 words
|
|
906
|
+
├── LinkedIn bio + posts ✓ Bio + 8 posts
|
|
907
|
+
├── Twitter/X bio + tweets ✓ Bio + 12 tweets
|
|
908
|
+
└── Newsletter samples ✓ 2 editions
|
|
909
|
+
|
|
910
|
+
Total corpus: 7,400+ words
|
|
911
|
+
Proceeding to extraction...
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
### Supplementary questions asked:
|
|
915
|
+
1. "Is there anything about your current voice you want to change?" →
|
|
916
|
+
"No, I like how I sound. Maybe slightly less formal on social."
|
|
917
|
+
2. "Any words you love or hate?" →
|
|
918
|
+
"Love 'simple' and 'framework.' Hate 'hack' and 'grind.'"
|
|
919
|
+
3. "Who do you admire voice-wise?" →
|
|
920
|
+
"Morgan Housel for clarity. Tim Ferriss for structure."
|
|
921
|
+
|
|
922
|
+
### Output:
|
|
923
|
+
|
|
924
|
+
The skill then generates the full voice profile using the same template,
|
|
925
|
+
merging scraped content analysis with the supplementary answers. The voice
|
|
926
|
+
test loop runs with 3 sample paragraphs. After user confirmation, the profile
|
|
927
|
+
is saved to `./brand/voice-profile.md`.
|
|
928
|
+
|
|
929
|
+
---
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
934
|
+
## Platform Adaptation Guide
|
|
935
|
+
|
|
936
|
+
This section defines how a brand voice should flex across different channels.
|
|
937
|
+
Use this as the basis for filling in the Platform Adaptations table in every
|
|
938
|
+
voice profile.
|
|
939
|
+
|
|
940
|
+
### Email
|
|
941
|
+
- **Tone shift:** Warmer, more personal. This is a 1:1 conversation. The
|
|
942
|
+
reader gave you their email address — honor that with intimacy.
|
|
943
|
+
- **Structure:** Short paragraphs (1-3 sentences). One clear CTA. Personal
|
|
944
|
+
greetings when appropriate.
|
|
945
|
+
- **Length:** 150-300 words for regular sends. Up to 500 for story-driven
|
|
946
|
+
sequences.
|
|
947
|
+
- **Adaptations:** More contractions. More "I" and "you." Okay to start
|
|
948
|
+
sentences with "And" or "But." Sign-offs should match personality.
|
|
949
|
+
|
|
950
|
+
### LinkedIn
|
|
951
|
+
- **Tone shift:** More professional, expertise-forward. Not stiff — but the
|
|
952
|
+
audience expects substance. Lead with insight, not personality.
|
|
953
|
+
- **Structure:** Single-idea posts. Line breaks between every sentence or
|
|
954
|
+
thought (LinkedIn formatting). Hook in the first line (before "see more").
|
|
955
|
+
- **Length:** 100-200 words for regular posts. Up to 300 for deep posts.
|
|
956
|
+
- **Adaptations:** Fewer contractions than email. More "framework" language.
|
|
957
|
+
End with a question or CTA for engagement. No hashtag spam.
|
|
958
|
+
|
|
959
|
+
### Twitter/X
|
|
960
|
+
- **Tone shift:** Punchiest version of the voice. More opinionated. Shorter.
|
|
961
|
+
Hot takes welcome (if on-brand). Maximum signal, zero filler.
|
|
962
|
+
- **Structure:** One idea per tweet. Threads for longer stories (each tweet
|
|
963
|
+
must stand alone). No fluffy intros.
|
|
964
|
+
- **Length:** Under 280 characters per tweet. Threads: 5-15 tweets.
|
|
965
|
+
- **Adaptations:** Fragments are fine. Single-sentence tweets. Strong
|
|
966
|
+
opening words. Numbers and specifics always.
|
|
967
|
+
|
|
968
|
+
### Blog/SEO
|
|
969
|
+
- **Tone shift:** Same personality, more depth. The voice is present but
|
|
970
|
+
not performing — it's teaching, sharing, or arguing at length.
|
|
971
|
+
- **Structure:** Headers, subheads, bulleted lists. Longer paragraphs OK
|
|
972
|
+
(3-5 sentences). Examples and proof throughout.
|
|
973
|
+
- **Length:** 1500-2500 words for standard posts. Up to 4000 for pillar
|
|
974
|
+
content.
|
|
975
|
+
- **Adaptations:** Can use more nuance. Okay to be more thorough. Still no
|
|
976
|
+
jargon without explanation. Maintain rhythm even at length.
|
|
977
|
+
|
|
978
|
+
### Landing Page
|
|
979
|
+
- **Tone shift:** Most urgent, most benefit-focused. The voice is selling,
|
|
980
|
+
not chatting. Direct response energy with brand personality.
|
|
981
|
+
- **Structure:** Short sentences. Benefit-driven headlines. Social proof
|
|
982
|
+
blocks. Clear, repeated CTAs. Above-the-fold hook must land.
|
|
983
|
+
- **Length:** Varies by section. Hero: 20-40 words. Feature sections: 50-100
|
|
984
|
+
words each. Full page: 800-2000 words.
|
|
985
|
+
- **Adaptations:** More power words. Stronger CTAs. Pain points more
|
|
986
|
+
explicit. Proof points prominent. Voice stays but urgency increases.
|
|
987
|
+
|
|
988
|
+
---
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
---
|
|
992
|
+
|
|
993
|
+
## Error States
|
|
994
|
+
|
|
995
|
+
### No content provided in Extract mode
|
|
996
|
+
|
|
997
|
+
```
|
|
998
|
+
┌──────────────────────────────────────────────┐
|
|
999
|
+
│ │
|
|
1000
|
+
│ ✗ NO CONTENT TO ANALYZE │
|
|
1001
|
+
│ │
|
|
1002
|
+
│ Extract mode needs existing content to │
|
|
1003
|
+
│ find your voice patterns. Paste in 3-5 │
|
|
1004
|
+
│ pieces of content you are proud of. │
|
|
1005
|
+
│ │
|
|
1006
|
+
│ → Paste website copy, emails, or posts │
|
|
1007
|
+
│ → Switch to Build mode (I will ask │
|
|
1008
|
+
│ questions instead) │
|
|
1009
|
+
│ → Give me your URL for Auto-Scrape │
|
|
1010
|
+
│ │
|
|
1011
|
+
└──────────────────────────────────────────────┘
|
|
1012
|
+
```
|
|
1013
|
+
|
|
1014
|
+
### Auto-Scrape finds insufficient content
|
|
1015
|
+
|
|
1016
|
+
```
|
|
1017
|
+
┌──────────────────────────────────────────────┐
|
|
1018
|
+
│ │
|
|
1019
|
+
│ ✗ INSUFFICIENT CONTENT FOUND │
|
|
1020
|
+
│ │
|
|
1021
|
+
│ I searched your web presence but found │
|
|
1022
|
+
│ less than 500 words of content. That is │
|
|
1023
|
+
│ not enough to reliably extract voice │
|
|
1024
|
+
│ patterns. │
|
|
1025
|
+
│ │
|
|
1026
|
+
│ Content found: │
|
|
1027
|
+
│ ├── Homepage ✓ 120 words │
|
|
1028
|
+
│ ├── About page ✗ not found │
|
|
1029
|
+
│ ├── Blog ✗ not found │
|
|
1030
|
+
│ ├── LinkedIn ✓ bio only │
|
|
1031
|
+
│ └── Twitter/X ✗ not found │
|
|
1032
|
+
│ │
|
|
1033
|
+
│ → Paste additional content manually │
|
|
1034
|
+
│ → Switch to Build mode │
|
|
1035
|
+
│ │
|
|
1036
|
+
└──────────────────────────────────────────────┘
|
|
1037
|
+
```
|
|
1038
|
+
|
|
1039
|
+
### Web search not available
|
|
1040
|
+
|
|
1041
|
+
```
|
|
1042
|
+
┌──────────────────────────────────────────────┐
|
|
1043
|
+
│ │
|
|
1044
|
+
│ ✗ AUTO-SCRAPE UNAVAILABLE │
|
|
1045
|
+
│ │
|
|
1046
|
+
│ Web search tools are not available in │
|
|
1047
|
+
│ this environment. I cannot auto-scrape │
|
|
1048
|
+
│ your website. │
|
|
1049
|
+
│ │
|
|
1050
|
+
│ → Paste your website copy (Extract mode) │
|
|
1051
|
+
│ → Answer questions (Build mode) │
|
|
1052
|
+
│ │
|
|
1053
|
+
└──────────────────────────────────────────────┘
|
|
1054
|
+
```
|
|
1055
|
+
|
|
1056
|
+
---
|
|
1057
|
+
|
|
1058
|
+
## Complete Invocation Flow
|
|
1059
|
+
|
|
1060
|
+
This is the full decision tree for every /brand-voice invocation:
|
|
1061
|
+
|
|
1062
|
+
```
|
|
1063
|
+
/brand-voice invoked
|
|
1064
|
+
│
|
|
1065
|
+
├── Check ./brand/ directory
|
|
1066
|
+
│ ├── Load positioning.md (if exists)
|
|
1067
|
+
│ └── Load audience.md (if exists)
|
|
1068
|
+
│
|
|
1069
|
+
├── Check ./brand/voice-profile.md
|
|
1070
|
+
│ ├── EXISTS → Update Mode
|
|
1071
|
+
│ │ ├── Show current profile summary
|
|
1072
|
+
│ │ ├── Ask what to change
|
|
1073
|
+
│ │ ├── Process changes
|
|
1074
|
+
│ │ ├── Run Voice Test Loop
|
|
1075
|
+
│ │ ├── Show diff, confirm overwrite
|
|
1076
|
+
│ │ └── Save updated profile
|
|
1077
|
+
│ │
|
|
1078
|
+
│ └── DOES NOT EXIST → Mode Selection
|
|
1079
|
+
│ ├── User has content → Extract Mode
|
|
1080
|
+
│ │ ├── Analyze 3-5 content pieces
|
|
1081
|
+
│ │ ├── Extract across 6 dimensions
|
|
1082
|
+
│ │ ├── Generate voice profile
|
|
1083
|
+
│ │ ├── Run Voice Test Loop
|
|
1084
|
+
│ │ └── Save profile
|
|
1085
|
+
│ │
|
|
1086
|
+
│ ├── User starting fresh → Build Mode
|
|
1087
|
+
│ │ ├── Ask 15 strategic questions
|
|
1088
|
+
│ │ ├── Synthesize answers
|
|
1089
|
+
│ │ ├── Construct voice profile
|
|
1090
|
+
│ │ ├── Run Voice Test Loop
|
|
1091
|
+
│ │ └── Save profile
|
|
1092
|
+
│ │
|
|
1093
|
+
│ └── User provides URL → Auto-Scrape Mode
|
|
1094
|
+
│ ├── Scrape web presence
|
|
1095
|
+
│ ├── Report findings
|
|
1096
|
+
│ ├── Feed into Extract analysis
|
|
1097
|
+
│ ├── Ask 2-3 supplementary questions
|
|
1098
|
+
│ ├── Generate voice profile
|
|
1099
|
+
│ ├── Run Voice Test Loop
|
|
1100
|
+
│ └── Save profile
|
|
1101
|
+
│
|
|
1102
|
+
├── After save → Feedback Collection
|
|
1103
|
+
│ ├── Present feedback prompt
|
|
1104
|
+
│ └── Log to learnings.md if applicable
|
|
1105
|
+
│
|
|
1106
|
+
└── Present WHAT'S NEXT section
|
|
1107
|
+
├── → /positioning-angles
|
|
1108
|
+
├── → /direct-response-copy
|
|
1109
|
+
└── → /start-here
|
|
1110
|
+
```
|
|
1111
|
+
|
|
1112
|
+
---
|
|
1113
|
+
|
|
1114
|
+
## Implementation Notes for the LLM
|
|
1115
|
+
|
|
1116
|
+
When executing this skill, follow these rules precisely:
|
|
1117
|
+
|
|
1118
|
+
1. **Never skip the iteration check.** Always look for an existing
|
|
1119
|
+
voice-profile.md before starting a new profile.
|
|
1120
|
+
|
|
1121
|
+
2. **Never skip the voice test loop.** Every profile must be validated
|
|
1122
|
+
with 3 sample paragraphs before saving. The samples must be genuinely
|
|
1123
|
+
written in the extracted/built voice — not generic marketing copy.
|
|
1124
|
+
|
|
1125
|
+
3. **Show your work.** When loading brand context, say what you loaded.
|
|
1126
|
+
When scraping, show what you found. When analyzing, name the patterns.
|
|
1127
|
+
The user should feel like they are working with a senior strategist,
|
|
1128
|
+
not a black box.
|
|
1129
|
+
|
|
1130
|
+
4. **Platform adaptations are mandatory.** Every voice profile must include
|
|
1131
|
+
the Platform Adaptations table. This is what makes the profile useful
|
|
1132
|
+
across the entire skill system — not just for one channel.
|
|
1133
|
+
|
|
1134
|
+
5. **The JSON block is mandatory.** Every saved voice-profile.md must
|
|
1135
|
+
include the structured JSON at the bottom. This enables downstream
|
|
1136
|
+
automation and schema validation.
|
|
1137
|
+
|
|
1138
|
+
6. **Respect the brand memory protocol.** Read before write. Diff before
|
|
1139
|
+
overwrite. Confirm before save. Append to learnings.md, never overwrite.
|
|
1140
|
+
|
|
1141
|
+
7. **Auto-Scrape is best-effort.** Not every URL will yield rich content.
|
|
1142
|
+
If scraping finds less than 500 words, fall back gracefully to Extract
|
|
1143
|
+
or Build mode. Never guess at voice patterns from insufficient data.
|
|
1144
|
+
|
|
1145
|
+
8. **The voice test loop is a conversation.** Do not rush through it. If
|
|
1146
|
+
the user says "close but not quite," take the time to understand what
|
|
1147
|
+
is off. The profile is only as good as the user's confirmation.
|
|
1148
|
+
|
|
1149
|
+
9. **Fill the platform adaptations table thoughtfully.** Do not copy the
|
|
1150
|
+
template defaults. Each brand will have different platform behaviors.
|
|
1151
|
+
A casual brand might be MORE formal on LinkedIn. A formal brand might
|
|
1152
|
+
be LESS formal on Twitter. Think about each adaptation individually.
|
|
1153
|
+
|
|
1154
|
+
10. **Write the file path correctly.** The profile saves to
|
|
1155
|
+
`./brand/voice-profile.md` — exactly that path. Both the `brand/`
|
|
1156
|
+
prefix and the `-profile` suffix matter for cross-skill references.
|
|
1157
|
+
Every downstream skill reads from this exact path; any deviation
|
|
1158
|
+
breaks the data flow.
|