@jairodri/huckleberry-cli 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +347 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Sub-Agent Orchestration
|
|
2
|
+
|
|
3
|
+
/cmo spawns specialized sub-agents for parallel research and post-production review. Agents never call agents — /cmo is the only orchestrator. This file documents when and how to invoke each of the 5 agents in `agents-manifest.json`.
|
|
4
|
+
|
|
5
|
+
**Canonical rule:** research agents spawn on first-run foundation building (3 in parallel). Review agents spawn on-demand after content lands.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## The 5 Agents
|
|
10
|
+
|
|
11
|
+
### Research agents (parallel, spawned on FIRST RUN or on-demand)
|
|
12
|
+
|
|
13
|
+
| Agent | Writes | Reads | Skill methodology it follows |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `mktg-brand-researcher` | `brand/voice-profile.md` | project README, website, existing content | `brand-voice` SKILL.md |
|
|
16
|
+
| `mktg-audience-researcher` | `brand/audience.md` | project context, market space | `audience-research` SKILL.md |
|
|
17
|
+
| `mktg-competitive-scanner` | `brand/competitors.md` | project context, known competitors | `competitive-intel` SKILL.md |
|
|
18
|
+
| `mktg-backlink-prospector` | `.seo/backlink-targets.json` (project path, not brand/) | `brand/competitors.md`, `positioning.md`, `audience.md` | `off-page-seo` SKILL.md |
|
|
19
|
+
|
|
20
|
+
### Review agents (on-demand, post-content)
|
|
21
|
+
|
|
22
|
+
| Agent | Purpose | Invoke after | Scores (doesn't write) |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| `mktg-content-reviewer` | Voice-profile consistency gate | any content draft (DRC, SEO, email, social, newsletter, lead-magnet) | Reads `brand/voice-profile.md` |
|
|
25
|
+
| `mktg-seo-analyst` | Keyword-plan adherence gate | any SEO asset (seo-content, landing page, competitor-alternatives, ai-seo output, every page batch from a `seo-machine` phase) | Reads `brand/keyword-plan.md` |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## First-Run Spawn Protocol (the 3 research agents in parallel)
|
|
30
|
+
|
|
31
|
+
On `/cmo` FIRST RUN — brand files are templates, no real data — spawn **all three research agents in a single message** (one message with 3 Agent tool calls) for maximum parallelism. Foundation research is the biggest time sink; parallelizing saves 10+ minutes.
|
|
32
|
+
|
|
33
|
+
**Message pattern:**
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
<Agent tool call 1>
|
|
37
|
+
subagent_type: mktg-brand-researcher
|
|
38
|
+
description: Extract brand voice
|
|
39
|
+
prompt: [project name] + [URL if provided] + [what the project does]
|
|
40
|
+
+ "Write brand/voice-profile.md. Follow the brand-voice SKILL
|
|
41
|
+
methodology. Do not ask questions — research, analyze, write."
|
|
42
|
+
|
|
43
|
+
<Agent tool call 2>
|
|
44
|
+
subagent_type: mktg-audience-researcher
|
|
45
|
+
description: Build audience profile
|
|
46
|
+
prompt: [project name] + [market space] + [problem it solves]
|
|
47
|
+
+ "Write brand/audience.md. Follow the audience-research SKILL
|
|
48
|
+
methodology. Spawn sub-searches via Exa as needed."
|
|
49
|
+
|
|
50
|
+
<Agent tool call 3>
|
|
51
|
+
subagent_type: mktg-competitive-scanner
|
|
52
|
+
description: Scan competitors
|
|
53
|
+
prompt: [project name] + [market space] + [known competitors if any]
|
|
54
|
+
+ "Write brand/competitors.md. Follow the competitive-intel SKILL
|
|
55
|
+
methodology. Use Exa for live market research."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Critical**: send all 3 tool calls in ONE message. Sequential spawns waste 2-3× the wall-clock time.
|
|
59
|
+
|
|
60
|
+
**What /cmo does while they run:**
|
|
61
|
+
- Tell the user: *"Three research agents are running in parallel — brand-voice, audience, competitors. ETA 5-10 minutes. I'll stitch the outputs when they land."*
|
|
62
|
+
- Don't start other skills. Wait for all 3.
|
|
63
|
+
- When they all return, read the 3 brand files, share what you learned, route to `positioning-angles` (which needs all 3 inputs).
|
|
64
|
+
|
|
65
|
+
**Fallback (no agents installed):** if `mktg doctor` shows agents missing, load the 3 foundation skills sequentially instead — `brand-voice`, then `audience-research`, then `competitive-intel`. Slower but identical artifact shape.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## On-Demand Research Invocation
|
|
70
|
+
|
|
71
|
+
### `mktg-backlink-prospector` — parallel backlink target research
|
|
72
|
+
|
|
73
|
+
**When /cmo invokes it:**
|
|
74
|
+
- The user invokes `off-page-seo` skill AND `brand/competitors.md` has 3+ competitors → spawn the prospector to fan-out research per competitor in parallel.
|
|
75
|
+
- `seo-machine` reaches an off-page phase in its roadmap → spawn alongside the phase execution.
|
|
76
|
+
- The user asks "where should I get linked from?", "find backlink targets", or "outreach prospects".
|
|
77
|
+
|
|
78
|
+
**Spawn pattern:**
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
<Agent tool call>
|
|
82
|
+
subagent_type: mktg-backlink-prospector
|
|
83
|
+
description: Backlink target research
|
|
84
|
+
prompt: [list of top 3-7 competitor names from brand/competitors.md]
|
|
85
|
+
+ "Read brand/competitors.md + positioning.md + audience.md.
|
|
86
|
+
Run Recipe F from off-page-seo SKILL.md per competitor.
|
|
87
|
+
Classify referring domains into directories / listicles / guest-posts.
|
|
88
|
+
Write to .seo/backlink-targets.json. Return a structured summary."
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**What /cmo does with the result:**
|
|
92
|
+
- Read the structured summary (top 3 priority targets, total counts per bucket).
|
|
93
|
+
- Surface to the user; ask whether to chain into `direct-response-copy` (cold-email mode) for the first batch of outreach.
|
|
94
|
+
- Don't auto-write outreach emails — that's a separate user decision.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## On-Demand Review Invocation
|
|
99
|
+
|
|
100
|
+
### `mktg-content-reviewer` — voice consistency gate
|
|
101
|
+
|
|
102
|
+
**When /cmo invokes it:**
|
|
103
|
+
- After `direct-response-copy` produces landing page, sales copy, cold email.
|
|
104
|
+
- After `seo-content` produces an article.
|
|
105
|
+
- After `email-sequences` drafts a sequence (review the full flow together).
|
|
106
|
+
- After `content-atomizer` produces multi-platform posts (one review pass over the batch).
|
|
107
|
+
- After `newsletter` drafts an issue.
|
|
108
|
+
- After `social-campaign` Phase 3 (this agent IS the voice gate of that phase).
|
|
109
|
+
- After **each phase** of a `seo-machine` run — review the page batch as one set (consistent hero structure, voice, CTA across the N pages).
|
|
110
|
+
|
|
111
|
+
**Spawn pattern:**
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
<Agent tool call>
|
|
115
|
+
subagent_type: mktg-content-reviewer
|
|
116
|
+
description: Voice consistency review
|
|
117
|
+
prompt: [file paths to review] + "Read brand/voice-profile.md. Score this
|
|
118
|
+
content against the voice profile. Return structured feedback —
|
|
119
|
+
what matches the voice, what drifts, specific rewrite recommendations.
|
|
120
|
+
Do not rewrite; report only."
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**What /cmo does with the result:**
|
|
124
|
+
- If score ≥ threshold (PASS) → present to user for approval, move on.
|
|
125
|
+
- If score < threshold (FAIL) → go back to the content skill with the specific rewrite recommendations. Don't ship drifted content.
|
|
126
|
+
|
|
127
|
+
### `mktg-seo-analyst` — keyword adherence gate
|
|
128
|
+
|
|
129
|
+
**When /cmo invokes it:**
|
|
130
|
+
- After `seo-content` produces an article.
|
|
131
|
+
- After `competitor-alternatives` produces a comparison page.
|
|
132
|
+
- After `ai-seo` produces an AI-search-optimized asset.
|
|
133
|
+
- After `direct-response-copy` produces a landing page (if SEO is a goal).
|
|
134
|
+
- After **each phase** of a `seo-machine` run — score the whole page batch (alternatives, compare, use-case, or playbook set) before merging the phase commit. Spawn alongside `mktg-content-reviewer` in one message.
|
|
135
|
+
|
|
136
|
+
**Spawn pattern:**
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
<Agent tool call>
|
|
140
|
+
subagent_type: mktg-seo-analyst
|
|
141
|
+
description: Keyword adherence audit
|
|
142
|
+
prompt: [file path] + "Read brand/keyword-plan.md + brand/audience.md +
|
|
143
|
+
brand/competitors.md. Audit this asset for: primary keyword density,
|
|
144
|
+
secondary keyword coverage, search intent match, on-page SEO basics
|
|
145
|
+
(title, meta, heading hierarchy), AI search readiness. Return
|
|
146
|
+
structured scores and specific recommendations."
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**What /cmo does with the result:**
|
|
150
|
+
- Surface the score to the user.
|
|
151
|
+
- If specific improvements are worth making → loop back to the content skill with the recommendations.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Never-Call-Other-Agents Invariant
|
|
156
|
+
|
|
157
|
+
Each of the 5 agents is **isolated** — they never spawn other agents. If a research agent needs content-reviewer's output, that's a signal the workflow is wrong. CMO is the coordinator; the agents are specialists.
|
|
158
|
+
|
|
159
|
+
**Anti-pattern to watch:** agents trying to chain work. If `mktg-brand-researcher` asks for audience data mid-run, reject — audience research is a separate agent, run in parallel, merged by CMO afterwards.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Reference
|
|
164
|
+
|
|
165
|
+
- `AGENTS.md` at repo root — the drop-in agent contract.
|
|
166
|
+
- `agents-manifest.json` — agent registry with `category`, `file`, `reads`, `writes`, `references_skill`, `tier`.
|
|
167
|
+
- Each agent's `.md` file under `agents/research/` or `agents/review/` in the mktg repo; installed to `~/.claude/agents/` by `mktg init`.
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cold-email
|
|
3
|
+
description: Write B2B cold emails and follow-up sequences that get replies.
|
|
4
|
+
depends-on:
|
|
5
|
+
- hook-generator
|
|
6
|
+
metadata:
|
|
7
|
+
version: 1.2.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Cold Email Writing
|
|
11
|
+
|
|
12
|
+
You are an expert cold email writer. Your goal is to write emails that sound like they came from a sharp, thoughtful human — not a sales machine following a template.
|
|
13
|
+
|
|
14
|
+
## Before Writing
|
|
15
|
+
|
|
16
|
+
**Check for brand-specific assets in businesses/{business}/brand/ first:**
|
|
17
|
+
If `businesses/{business}/brand/` exists (or `businesses/{business}/brand/` in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
|
18
|
+
|
|
19
|
+
Understand the situation (ask if not provided):
|
|
20
|
+
|
|
21
|
+
1. **Who are you writing to?** — Role, company, why them specifically
|
|
22
|
+
2. **Awareness level:** What does the prospect already know? Problem-aware or Solution-aware? (See `references/awareness-level-guide.md`)
|
|
23
|
+
3. **What do you want?** — The outcome (meeting, reply, intro, demo)
|
|
24
|
+
4. **What's the value?** — The specific problem you solve for people like them
|
|
25
|
+
5. **What's your proof?** — A result, case study, or credibility signal
|
|
26
|
+
6. **Any research signals?** — Funding, hiring, LinkedIn posts, company news, tech stack changes
|
|
27
|
+
|
|
28
|
+
Work with whatever the user gives you. If they have a strong signal and a clear value prop, that's enough to write. Don't block on missing inputs — use what you have and note what would make it stronger.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Writing Principles
|
|
33
|
+
|
|
34
|
+
### Write like a peer, not a vendor
|
|
35
|
+
|
|
36
|
+
The email should read like it came from someone who understands their world — not someone trying to sell them something. Use contractions. Read it aloud. If it sounds like marketing copy, rewrite it.
|
|
37
|
+
|
|
38
|
+
### Every sentence must earn its place
|
|
39
|
+
|
|
40
|
+
Cold email is ruthlessly short. If a sentence doesn't move the reader toward replying, cut it. The best cold emails feel like they could have been shorter, not longer.
|
|
41
|
+
|
|
42
|
+
### Personalization must connect to the problem
|
|
43
|
+
|
|
44
|
+
If you remove the personalized opening and the email still makes sense, the personalization isn't working. The observation should naturally lead into why you're reaching out.
|
|
45
|
+
|
|
46
|
+
See [personalization.md](references/personalization.md) for the 4-level system and research signals.
|
|
47
|
+
|
|
48
|
+
### Lead with their world, not yours
|
|
49
|
+
|
|
50
|
+
The reader should see their own situation reflected back. "You/your" should dominate over "I/we." Don't open with who you are or what your company does.
|
|
51
|
+
|
|
52
|
+
### One ask, low friction
|
|
53
|
+
|
|
54
|
+
Interest-based CTAs ("Worth exploring?" / "Would this be useful?") beat meeting requests. One CTA per email. Make it easy to say yes with a one-line reply.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Voice & Tone
|
|
59
|
+
|
|
60
|
+
**The target voice:** A smart colleague who noticed something relevant and is sharing it. Conversational but not sloppy. Confident but not pushy.
|
|
61
|
+
|
|
62
|
+
**Calibrate to the audience:**
|
|
63
|
+
|
|
64
|
+
- C-suite: ultra-brief, peer-level, understated
|
|
65
|
+
- Mid-level: more specific value, slightly more detail
|
|
66
|
+
- Technical: precise, no fluff, respect their intelligence
|
|
67
|
+
|
|
68
|
+
**What it should NOT sound like:**
|
|
69
|
+
|
|
70
|
+
- A template with fields swapped in
|
|
71
|
+
- A pitch deck compressed into paragraph form
|
|
72
|
+
- A LinkedIn DM from someone you've never met
|
|
73
|
+
- An AI-generated email (avoid the telltale patterns: "I hope this email finds you well," "I came across your profile," "leverage," "synergy," "best-in-class")
|
|
74
|
+
|
|
75
|
+
### The Evergreen Feedback Loop
|
|
76
|
+
|
|
77
|
+
For high-reply campaigns, David Yu recommends maintaining a persistent "Evergreen Mistake Log" at `businesses/{business}/evergreen.mdcold-email/evergreen-mistakes.md`.
|
|
78
|
+
|
|
79
|
+
**Before writing, check this log for:**
|
|
80
|
+
- Banned phrases (AI jargon, corporate hype)
|
|
81
|
+
- Specific patterns that lead to 0 replies for this specific brand
|
|
82
|
+
- Proven hooks that have worked in the past
|
|
83
|
+
|
|
84
|
+
If the log exists, incorporate its "negative constraints" into your prompt logic to ensure continuous improvement.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Structure
|
|
89
|
+
|
|
90
|
+
There's no single right structure. Choose a framework that fits the situation, or write freeform if the email flows naturally without one.
|
|
91
|
+
|
|
92
|
+
**Common shapes that work:**
|
|
93
|
+
|
|
94
|
+
- **Observation → Problem → Proof → Ask** — You noticed X, which usually means Y challenge. We helped Z with that. Interested?
|
|
95
|
+
- **Question → Value → Ask** — Struggling with X? We do Y. Company Z saw [result]. Worth a look?
|
|
96
|
+
- **Trigger → Insight → Ask** — Congrats on X. That usually creates Y challenge. We've helped similar companies with that. Curious?
|
|
97
|
+
- **Story → Bridge → Ask** — [Similar company] had [problem]. They [solved it this way]. Relevant to you?
|
|
98
|
+
|
|
99
|
+
For the full catalog of frameworks with examples, see [frameworks.md](references/frameworks.md).
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Subject Lines
|
|
104
|
+
|
|
105
|
+
Short, boring, internal-looking. The subject line's only job is to get the email opened — not to sell.
|
|
106
|
+
|
|
107
|
+
- 2-4 words, lowercase, no punctuation tricks
|
|
108
|
+
- Should look like it came from a colleague ("reply rates," "hiring ops," "Q2 forecast")
|
|
109
|
+
- No product pitches, no urgency, no emojis, no prospect's first name
|
|
110
|
+
|
|
111
|
+
**Hook-generator integration:** Spawn a hook-generator subagent for subject line candidates:
|
|
112
|
+
```
|
|
113
|
+
Load the hook-generator skill and execute the full Phase 1-6 pipeline with this context.
|
|
114
|
+
Context:
|
|
115
|
+
- WHO: <prospect role/industry>
|
|
116
|
+
- WHAT/WHY: <value prop for this prospect>
|
|
117
|
+
- Knife: <prospect's pain point>
|
|
118
|
+
- Platform: email
|
|
119
|
+
- Brand: <your brand>
|
|
120
|
+
- Target Score: 85
|
|
121
|
+
Return ONLY this JSON array: [{"hook":"...","score":<0-100>,"pattern":"...","formula":"..."}]
|
|
122
|
+
```
|
|
123
|
+
Select top-scored hooks that fit the "short, boring, internal-looking" cold email style. Discard any that sound promotional. If subagent fails, fall back to manual subject line writing per rules above.
|
|
124
|
+
|
|
125
|
+
See [subject-lines.md](references/subject-lines.md) for the full data.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Follow-Up Sequences
|
|
130
|
+
|
|
131
|
+
Each follow-up should add something new — a different angle, fresh proof, a useful resource. "Just checking in" gives the reader no reason to respond.
|
|
132
|
+
|
|
133
|
+
- 3-5 total emails, increasing gaps between them
|
|
134
|
+
- Each email should stand alone (they may not have read the previous ones)
|
|
135
|
+
- The breakup email is your last touch — honor it
|
|
136
|
+
|
|
137
|
+
See [follow-up-sequences.md](references/follow-up-sequences.md) for cadence, angle rotation, and breakup email templates.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Quality Check
|
|
142
|
+
|
|
143
|
+
Before presenting, gut-check:
|
|
144
|
+
|
|
145
|
+
- Does it sound like a human wrote it? (Read it aloud)
|
|
146
|
+
- Would YOU reply to this if you received it?
|
|
147
|
+
- Does every sentence serve the reader, not the sender?
|
|
148
|
+
- Is the personalization connected to the problem?
|
|
149
|
+
- Is there one clear, low-friction ask?
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## What to Avoid
|
|
154
|
+
|
|
155
|
+
- Opening with "I hope this email finds you well" or "My name is X and I work at Y"
|
|
156
|
+
- Jargon: "synergy," "leverage," "circle back," "best-in-class," "leading provider"
|
|
157
|
+
- Feature dumps — one proof point beats ten features
|
|
158
|
+
- HTML, images, or multiple links
|
|
159
|
+
- Fake "Re:" or "Fwd:" subject lines
|
|
160
|
+
- Identical templates with only {{FirstName}} swapped
|
|
161
|
+
- Asking for 30-minute calls in first touch
|
|
162
|
+
- "Just checking in" follow-ups
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Data & Benchmarks
|
|
167
|
+
|
|
168
|
+
The references contain performance data if you need to make informed choices:
|
|
169
|
+
|
|
170
|
+
- [benchmarks.md](references/benchmarks.md) — Reply rates, conversion funnels, expert methods, common mistakes
|
|
171
|
+
- [personalization.md](references/personalization.md) — 4-level personalization system, research signals
|
|
172
|
+
- [subject-lines.md](references/subject-lines.md) — Subject line data and optimization
|
|
173
|
+
- [follow-up-sequences.md](references/follow-up-sequences.md) — Cadence, angles, breakup emails
|
|
174
|
+
- [frameworks.md](references/frameworks.md) — All copywriting frameworks with examples
|
|
175
|
+
|
|
176
|
+
Use this data to inform your writing — not as a checklist to satisfy.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Related Skills
|
|
181
|
+
|
|
182
|
+
- **copywriting**: For landing pages and web copy
|
|
183
|
+
- **email-sequence**: For lifecycle/nurture email sequences (not cold outreach)
|
|
184
|
+
- **social-content**: For LinkedIn and social posts
|
|
185
|
+
- **product-marketing-context**: For establishing foundational positioning
|
|
186
|
+
- **revops**: For lead scoring, routing, and pipeline management
|
|
187
|
+
- **quality-gate**: For scoring drafts (standard + tournament mode with 5 parallel judges)
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## STEP N: Cold Email Tournament (RECOMMENDED for subject lines & opening lines)
|
|
192
|
+
|
|
193
|
+
For cold emails, the subject line and first 2 lines determine everything. Run a tournament:
|
|
194
|
+
|
|
195
|
+
1. Generate 3-5 variants of the email (different subject lines + opening angles)
|
|
196
|
+
2. Save each variant to a tournament directory:
|
|
197
|
+
- `content/tournaments/{slug}/variant-1.md`
|
|
198
|
+
- `content/tournaments/{slug}/variant-2.md`
|
|
199
|
+
- ... up to variant-{N}.md
|
|
200
|
+
3. Spawn 5 PARALLEL `build` subagents using the Task tool (one per judge persona):
|
|
201
|
+
- Each gets the judge subagent prompt from `Skill: quality-gate` tournament section
|
|
202
|
+
- persona_file paths:
|
|
203
|
+
- `~/.claude/skills/quality-gate/judge-personas/skeptic.md`
|
|
204
|
+
- `~/.claude/skills/quality-gate/judge-personas/scanner.md`
|
|
205
|
+
- `~/.claude/skills/quality-gate/judge-personas/buyer.md`
|
|
206
|
+
- `~/.claude/skills/quality-gate/judge-personas/expert.md`
|
|
207
|
+
- `~/.claude/skills/quality-gate/judge-personas/outsider.md`
|
|
208
|
+
- Each gets: tournament_dir, variant_count, mode=`cold-email`, original_prompt
|
|
209
|
+
4. Collect all 5 JSON results
|
|
210
|
+
5. Aggregate: sum weighted_avg across judges per variant → rank → pick winner
|
|
211
|
+
6. Apply recommended_edits from aggregation to the winner
|
|
212
|
+
7. Save the edited winner as the draft file
|
|
213
|
+
8. Proceed to standard quality-gate below with the winner
|
|
214
|
+
|
|
215
|
+
**When to tournament:** Every cold email benefits — the Scanner judge will ruthlessly filter anything that doesn't stop the scroll, and the Skeptic will catch salesy language. Skip only for follow-ups in an existing sequence.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## FINAL STEP: Quality Gate (MANDATORY — DO NOT SKIP)
|
|
220
|
+
|
|
221
|
+
Before presenting ANY draft to Jairo, run the quality gate:
|
|
222
|
+
|
|
223
|
+
1. Save your complete draft to a file (e.g., `content/drafts/{slug}.md` or a temp file)
|
|
224
|
+
2. Spawn a `build` subagent using the Task tool with the quality-gate prompt from `Skill: quality-gate`
|
|
225
|
+
3. Pass these inputs to the subagent:
|
|
226
|
+
- **draft_path**: absolute path to the saved draft
|
|
227
|
+
- **mode**: `cold-email`
|
|
228
|
+
- **original_prompt**: the writing prompt that started this task
|
|
229
|
+
- **attempt**: current attempt number (start at 1)
|
|
230
|
+
4. Parse the JSON result from the subagent
|
|
231
|
+
5. If FAIL and attempt < 3:
|
|
232
|
+
- Rewrite the draft addressing the specific `rewrite_instructions` from the quality gate
|
|
233
|
+
- Save the new draft (overwrite or new file)
|
|
234
|
+
- Spawn another subagent with attempt + 1
|
|
235
|
+
6. If FAIL and attempt = 3:
|
|
236
|
+
- Present to Jairo with all score reports attached
|
|
237
|
+
- Say: "Couldn't pass quality gate after 3 attempts. Here's what's wrong and what I tried to fix."
|
|
238
|
+
7. If PASS:
|
|
239
|
+
- Present to Jairo as normal (do NOT show scores — they're internal)
|
|
240
|
+
8. NEVER present a draft that hasn't passed quality gate (except after 3 failed attempts)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "cold-email",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Write a cold email to VP of Marketing at mid-size B2B SaaS companies. We sell a content analytics platform that shows which blog posts actually drive pipeline. Our main proof point: customers see 3x increase in content-attributed revenue within 90 days.",
|
|
7
|
+
"expected_output": "Should check for product-marketing-context.md first. Should write like a peer, not a vendor. Should use one of the structure frameworks (observation→problem→proof→ask or similar). Subject line should be 2-4 words, lowercase, internal-looking. Every sentence should earn its place. Personalization should connect to the prospect's problem, not just their name. Should use the 3x revenue proof point as social proof, not a feature claim. CTA should be low-friction (not 'book a demo'). Should provide 2-3 variations. Should include a quality check against the guidelines.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
"Checks for product-marketing-context.md",
|
|
10
|
+
"Writes like a peer, not a vendor",
|
|
11
|
+
"Uses a structure framework from the skill",
|
|
12
|
+
"Subject line is short, lowercase, internal-looking",
|
|
13
|
+
"Every sentence earns its place (concise)",
|
|
14
|
+
"Personalization connects to prospect's problem",
|
|
15
|
+
"Uses proof point as social proof",
|
|
16
|
+
"CTA is low-friction",
|
|
17
|
+
"Provides 2-3 variations"
|
|
18
|
+
],
|
|
19
|
+
"files": []
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": 2,
|
|
23
|
+
"prompt": "Help me write a cold email to CTOs at enterprise companies. I sell cybersecurity training. My current email has a 2% open rate and 0% reply rate.",
|
|
24
|
+
"expected_output": "Should diagnose the current email's likely problems based on 2% open rate (subject line issue) and 0% reply rate (body/relevance issue). Should apply voice calibration for CTO audience (respect their time, technical credibility, executive-level language). Should provide a completely new email following structure frameworks. Subject line should be 2-4 words, look internal. Should adapt tone for enterprise CTOs — more formal than startup audience but still peer-like. Should provide the email plus analysis of why each element works.",
|
|
25
|
+
"assertions": [
|
|
26
|
+
"Diagnoses problems from the performance data",
|
|
27
|
+
"Identifies subject line as likely open rate issue",
|
|
28
|
+
"Applies voice calibration for CTO audience",
|
|
29
|
+
"Subject line is short, lowercase, internal-looking",
|
|
30
|
+
"Adapts tone for enterprise audience",
|
|
31
|
+
"Uses structure framework from the skill",
|
|
32
|
+
"Explains why each element works"
|
|
33
|
+
],
|
|
34
|
+
"files": []
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": 3,
|
|
38
|
+
"prompt": "write me a follow-up sequence. prospect didn't reply to my first email about our HR software. how many should I send and how far apart?",
|
|
39
|
+
"expected_output": "Should trigger on casual phrasing. Should apply the follow-up sequence guidance: 3-5 follow-ups recommended. Each follow-up should add something new (new angle, new proof point, new value) — not just 'bumping' or 'checking in.' Should provide timing recommendations between emails. Should provide actual follow-up email copy for each touch, with different angles. Should include a breakup email at the end. Should note that each follow-up should be shorter than the previous.",
|
|
40
|
+
"assertions": [
|
|
41
|
+
"Triggers on casual phrasing",
|
|
42
|
+
"Recommends 3-5 follow-up emails",
|
|
43
|
+
"Each follow-up adds something new",
|
|
44
|
+
"Does not use 'just bumping' or 'checking in' language",
|
|
45
|
+
"Provides timing between emails",
|
|
46
|
+
"Provides actual copy for each follow-up",
|
|
47
|
+
"Includes a breakup email",
|
|
48
|
+
"Follow-ups get progressively shorter"
|
|
49
|
+
],
|
|
50
|
+
"files": []
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": 4,
|
|
54
|
+
"prompt": "Review this cold email and tell me what's wrong: 'Dear Sir/Madam, I hope this email finds you well. I wanted to reach out to introduce our innovative cloud-based platform that leverages AI to streamline your business operations. We have helped over 500 companies transform their workflows. I would love to schedule a 30-minute call to discuss how we can help your organization. Best regards, John'",
|
|
55
|
+
"expected_output": "Should apply the quality check framework. Should identify multiple problems: 'Dear Sir/Madam' (no personalization), 'I hope this email finds you well' (filler), 'innovative cloud-based platform' (jargon/buzzwords), 'leverages AI to streamline' (vague vendor language), 'transform their workflows' (means nothing), '30-minute call' (too much ask for cold email), entire email is about the sender not the prospect. Should rewrite following the principles: peer tone, observation→problem→proof→ask structure, every sentence earns its place, personalization connected to their problem, low-friction CTA.",
|
|
56
|
+
"assertions": [
|
|
57
|
+
"Identifies lack of personalization",
|
|
58
|
+
"Identifies filler phrases",
|
|
59
|
+
"Identifies jargon and buzzwords",
|
|
60
|
+
"Identifies vendor language vs peer language",
|
|
61
|
+
"Identifies CTA as too high-friction",
|
|
62
|
+
"Notes email is sender-focused not prospect-focused",
|
|
63
|
+
"Provides a rewritten version",
|
|
64
|
+
"Rewrite follows cold email principles"
|
|
65
|
+
],
|
|
66
|
+
"files": []
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": 5,
|
|
70
|
+
"prompt": "What are the best subject lines for cold emails? I want to maximize open rates.",
|
|
71
|
+
"expected_output": "Should apply the subject line guidelines: short (2-4 words), lowercase or sentence case, internal-looking (should look like it came from a colleague, not a vendor). Should provide examples following these principles. Should explain why these work (bypass promotional filters, trigger curiosity, don't look like marketing). Should warn against common bad subject lines (ALL CAPS, emojis, clickbait, long subjects). Should note that subject line gets them to open but body gets them to reply.",
|
|
72
|
+
"assertions": [
|
|
73
|
+
"Applies subject line guidelines (2-4 words, lowercase, internal-looking)",
|
|
74
|
+
"Provides specific examples",
|
|
75
|
+
"Explains why the format works",
|
|
76
|
+
"Warns against common bad subject line patterns",
|
|
77
|
+
"Notes distinction between open rate and reply rate"
|
|
78
|
+
],
|
|
79
|
+
"files": []
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": 6,
|
|
83
|
+
"prompt": "Can you help me set up an automated email drip campaign for leads who download our whitepaper?",
|
|
84
|
+
"expected_output": "Should recognize this is a lifecycle/nurture email sequence, not cold outreach. Should defer to or cross-reference the email-sequence skill, which handles drip campaigns, lead nurture sequences, and lifecycle emails. Cold email is specifically for unsolicited outbound outreach to prospects who haven't opted in. Should make this distinction clear.",
|
|
85
|
+
"assertions": [
|
|
86
|
+
"Recognizes this as lifecycle/nurture email, not cold outreach",
|
|
87
|
+
"References or defers to email-sequence skill",
|
|
88
|
+
"Explains the distinction between cold email and lifecycle email",
|
|
89
|
+
"Does not attempt to design a nurture sequence using cold email patterns"
|
|
90
|
+
],
|
|
91
|
+
"files": []
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Benchmarks, Data & Expert Methods
|
|
2
|
+
|
|
3
|
+
## Core Performance Metrics (2024–2025)
|
|
4
|
+
|
|
5
|
+
| Metric | Average | Good | Excellent | Source |
|
|
6
|
+
| -------------------------- | ------- | ------ | --------- | ------------------------ |
|
|
7
|
+
| Open rate | 27.7% | 40–45% | 50%+ | Belkins, Snov.io |
|
|
8
|
+
| Reply rate | 4–5.8% | 5–10% | 10–15% | Belkins, Reachoutly |
|
|
9
|
+
| Reply rate (best-in-class) | — | — | 15–25%+ | Digital Bloom, Instantly |
|
|
10
|
+
| Positive reply % | ~48% | 55–60% | 62–65% | Digital Bloom |
|
|
11
|
+
| Meeting booking rate | 0.5–1% | 1–2% | 2.3%+ | Reachoutly |
|
|
12
|
+
| Bounce rate | 7.5% | <4% | <2% | Belkins |
|
|
13
|
+
|
|
14
|
+
## Realistic Funnel Model
|
|
15
|
+
|
|
16
|
+
500 emails → 100 opens (20%) → 25 replies (5%) → 8 positive replies (30%) → 4 meetings (50%) → 1 client (25% close). ~**0.2% end-to-end conversion** for average performers.
|
|
17
|
+
|
|
18
|
+
## Performance Levers (ranked by impact)
|
|
19
|
+
|
|
20
|
+
1. **Hook type** — Timeline hooks outperform problem hooks by 3.4x in meetings
|
|
21
|
+
2. **Personalization depth** — Up to 250% more replies
|
|
22
|
+
3. **Brevity** — 25–75 words optimal, 83% more replies under 75 words
|
|
23
|
+
4. **Targeting precision** — ≤50 contacts per campaign = 2.76x higher reply rates
|
|
24
|
+
5. **Follow-up strategy** — First follow-up adds 49% more replies
|
|
25
|
+
6. **Reading level** — 3rd–5th grade = 67% more replies
|
|
26
|
+
7. **Send timing** — Thursday peaks at 6.87% reply rate
|
|
27
|
+
|
|
28
|
+
## Declining Effectiveness Trend
|
|
29
|
+
|
|
30
|
+
Reply rates dropped from 7–8% (2020–2022) to 4–5.8% (2024–2025), ~15% YoY decline. Drivers: inbox saturation (10+ cold emails/week, 20% say none relevant), stricter anti-spam (Google's threshold: 0.1% complaints), AI email flood (more volume, less quality signal). Writing craft matters more, not less — gap between average and excellent is widening.
|
|
31
|
+
|
|
32
|
+
## Response Rates by Seniority
|
|
33
|
+
|
|
34
|
+
- **Entry-level:** Highest engagement at 8% reply, 50% open
|
|
35
|
+
- **C-level:** 23% more likely to respond than non-C-suite when they engage (6.4% vs 5.2%)
|
|
36
|
+
- **CTOs/VP Tech:** 7.68% reply
|
|
37
|
+
- **CEOs/Founders:** 7.63% reply
|
|
38
|
+
- **Heads of Sales:** 6.60% (most targeted role, highest saturation)
|
|
39
|
+
|
|
40
|
+
## Industry Variation
|
|
41
|
+
|
|
42
|
+
**Highest responding:** Nonprofits (16.5%+), legal (10%), EdTech (7.8%), chemical (7.3%), manufacturing (6.1%).
|
|
43
|
+
**Lowest responding:** SaaS (3.5%), financial services (3.4%), IT services (3.5%).
|
|
44
|
+
|
|
45
|
+
## Top 15 Mistakes (ranked by impact)
|
|
46
|
+
|
|
47
|
+
1. **Too long** — 70% of emails above 10th-grade level. Under 75 words = 83% more replies
|
|
48
|
+
2. **Too self-focused** — "We are a leading..." signals sales pitch. Count I/We sentences
|
|
49
|
+
3. **No clear value prop** — 71% of decision-makers ignore irrelevant emails
|
|
50
|
+
4. **Generic templates** — {{FirstName}} isn't personalization. Recipients detect instantly
|
|
51
|
+
5. **Feature dumping** — "Great reps lead with problems" (Lavender). One proof point beats ten features
|
|
52
|
+
6. **False personalization** — "Loved your post!" without specifics is transparent
|
|
53
|
+
7. **Asking too much too soon** — 30-min call in first email = "proposing on first date"
|
|
54
|
+
8. **Pushy language** — "Act Now" stacking increases spam flagging by 67%
|
|
55
|
+
9. **No CTA** — Without a clear next step, momentum dies
|
|
56
|
+
10. **"Just checking in" follow-ups** — "I never heard back" = 12% drop in bookings
|
|
57
|
+
11. **Wrong tone for audience** — Founder ≠ RevOps lead ≠ sales leader
|
|
58
|
+
12. **Jargon/buzzwords** — "Leverage synergistic platform" → "We help you book more meetings"
|
|
59
|
+
13. **Unsubstantiated claims** — "300% more leads" without proof triggers skepticism
|
|
60
|
+
14. **Too many contacts per company** — 1–2 people = 7.8% reply; 10+ = 3.8%
|
|
61
|
+
15. **Fake urgency** — Fake "Re:" / "Fwd:" / countdown timers destroy trust
|
|
62
|
+
|
|
63
|
+
## Cultural Calibration
|
|
64
|
+
|
|
65
|
+
| Factor | US | UK | Germany/DACH | Scandinavia |
|
|
66
|
+
| ------------ | --------------- | ------------------------ | -------------------- | ----------------------- |
|
|
67
|
+
| Tone | Direct, casual | Polite, professional | Precise, data-driven | Fact-based, egalitarian |
|
|
68
|
+
| Length | Shorter, blunt | Longer, insight-led | Detail-oriented | Concise but substantive |
|
|
69
|
+
| Social proof | Outcome numbers | Research-led credibility | Technical precision | Shared values |
|
|
70
|
+
|
|
71
|
+
North America: 4.1% response. Europe: 3.1%. Asia-Pacific: 2.8%. Shorter, more direct sequences work better in US. UK needs more insight/personality. GDPR affects European tone.
|
|
72
|
+
|
|
73
|
+
## Expert Quick Reference
|
|
74
|
+
|
|
75
|
+
| Expert | Core Method | Best For |
|
|
76
|
+
| -------------- | --------------------------------------------------------------- | ----------------------------------------------- |
|
|
77
|
+
| Alex Berman | 3C's: Compliment → Case Study → CTA | High-ticket B2B services, agencies |
|
|
78
|
+
| Josh Braun | "Poke the Bear" — neutral questions exposing invisible problems | Empathy-driven consultative selling |
|
|
79
|
+
| Kyle Coleman | Systematic research + AI personalization at scale | Bridging mass outreach and deep personalization |
|
|
80
|
+
| Becc Holland | Psychographic personalization, Premise Buckets | Combining personalization with relevance |
|
|
81
|
+
| Will Allred | Data-driven coaching, Mouse Trap, Vanilla Ice Cream | Any context; universal frameworks |
|
|
82
|
+
| Justin Michael | 1–3 sentence hyper-brevity, quote their own words | High-velocity SDR teams at scale |
|
|
83
|
+
| Sam Nelson | Agoge Sequence — Triple on Day 1 (email + LinkedIn + call) | Multi-channel, tiered personalization |
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Follow-Up Sequences
|
|
2
|
+
|
|
3
|
+
55% of replies come from follow-ups, not the initial email. Yet 48% of salespeople never follow up even once.
|
|
4
|
+
|
|
5
|
+
## How Many: 3–5 Total Emails
|
|
6
|
+
|
|
7
|
+
- Highest single-email reply rate: **8.4%** (Belkins).
|
|
8
|
+
- 4–7 email campaigns achieve **27% reply rates** vs 9% for 1–3 emails (Woodpecker, 20M emails).
|
|
9
|
+
- By 4th follow-up, response rates drop **55%** and spam complaints **triple**.
|
|
10
|
+
- Resolution: longer sequences catch different timing windows. Cap at 4 follow-ups (5 total emails). Each must add genuinely new value.
|
|
11
|
+
|
|
12
|
+
## Optimal Cadence
|
|
13
|
+
|
|
14
|
+
Increase the gap between each touch:
|
|
15
|
+
|
|
16
|
+
| Touch | Day | Notes |
|
|
17
|
+
| ------------- | ----- | ---------------------------------------------- |
|
|
18
|
+
| Initial email | 0 | Maximum personalization investment |
|
|
19
|
+
| Follow-up 1 | 3 | Waiting 3 days increases response by up to 31% |
|
|
20
|
+
| Follow-up 2 | 7–8 | Different angle |
|
|
21
|
+
| Follow-up 3 | 14 | New value piece |
|
|
22
|
+
| Follow-up 4 | 21–28 | Breakup email |
|
|
23
|
+
|
|
24
|
+
**Best days:** Tuesday–Thursday (Thursday peaks at 6.87% reply rate).
|
|
25
|
+
**Best times:** 9–11 AM or 1–3 PM in prospect's local time.
|
|
26
|
+
**Avoid:** Monday mornings (inbox overload), Friday afternoons (checked out).
|
|
27
|
+
|
|
28
|
+
## Angle Rotation
|
|
29
|
+
|
|
30
|
+
Each follow-up must stand alone while building toward the goal. Never just "bump this up."
|
|
31
|
+
|
|
32
|
+
| Email | Angle | Purpose |
|
|
33
|
+
| ----------- | ---------------------------------------------------------- | -------------------------- |
|
|
34
|
+
| Initial | Personalized hook + core value prop + soft CTA | Introduce problem/solution |
|
|
35
|
+
| Follow-up 1 | Different angle, new value piece (stat, insight, resource) | Show additional benefit |
|
|
36
|
+
| Follow-up 2 | Social proof / case study from similar company | Build credibility |
|
|
37
|
+
| Follow-up 3 | New insight, industry trend, or relevant resource | Demonstrate expertise |
|
|
38
|
+
| Follow-up 4 | Breakup — acknowledge silence, leave door open | Trigger loss aversion |
|
|
39
|
+
|
|
40
|
+
Add only **one new value proposition per email** (SalesBread). This naturally forces different angles.
|
|
41
|
+
|
|
42
|
+
## The Breakup Email
|
|
43
|
+
|
|
44
|
+
Leverages loss aversion — removing pressure while creating scarcity through withdrawal. Close.com reports **10–15% response rates** from breakup emails with cold prospects.
|
|
45
|
+
|
|
46
|
+
**Structure:**
|
|
47
|
+
|
|
48
|
+
1. Acknowledge you've reached out multiple times
|
|
49
|
+
2. Validate their potential lack of interest
|
|
50
|
+
3. State this is your final email for now
|
|
51
|
+
4. Leave the door open
|
|
52
|
+
|
|
53
|
+
**Example:**
|
|
54
|
+
|
|
55
|
+
> I haven't heard back, so I'll assume now isn't the right time. Before I close the loop: [1-sentence insight or resource]. If that changes things, feel free to reply. Otherwise, no hard feelings — good luck with [their goal].
|
|
56
|
+
|
|
57
|
+
**1-2-3 Format** (reduces friction to near zero):
|
|
58
|
+
|
|
59
|
+
> Since I haven't heard back, I'll keep it simple. Reply with a number:
|
|
60
|
+
>
|
|
61
|
+
> 1 — Interested, let's talk
|
|
62
|
+
> 2 — Not now, check back in 3 months
|
|
63
|
+
> 3 — Not interested, please stop
|
|
64
|
+
|
|
65
|
+
**Critical rule:** If you send a breakup email, honor it. Do not contact the prospect again.
|
|
66
|
+
|
|
67
|
+
## Phrases That Kill Response Rates
|
|
68
|
+
|
|
69
|
+
- "I never heard back" → **12% drop** in meeting booking rate (Gong)
|
|
70
|
+
- "Just checking in" → Zero value, signals laziness
|
|
71
|
+
- "Bumping this to the top of your inbox" → Presumptuous
|
|
72
|
+
- "Did you see my last email?" → Guilt-tripping
|
|
73
|
+
- "Following up on my previous message" → Generic, adds nothing
|
|
74
|
+
|
|
75
|
+
## CTA Adjustment by Seniority
|
|
76
|
+
|
|
77
|
+
**Executives/founders:** Ultra-low-effort, curiosity-driven. "Curious?" or "Worth 2 min?"
|
|
78
|
+
|
|
79
|
+
**Mid-level managers:** More specific value. "Want me to walk through how [Company] saved 15 hours/week?"
|
|
80
|
+
|
|
81
|
+
Higher in the org chart = less friction you can ask for.
|