@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,327 @@
|
|
|
1
|
+
# CMO Orchestration Playbooks
|
|
2
|
+
|
|
3
|
+
Named end-to-end recipes. When the builder asks for something big, pick the right playbook, announce the plan, run the chain, hand back at the defined stop.
|
|
4
|
+
|
|
5
|
+
**How to use:**
|
|
6
|
+
- If the builder's request matches a named trigger phrase, start the playbook.
|
|
7
|
+
- Announce the plan before step 1: *"Here's what I'll run: step 1 → step 2 → step 3. Ready?"*
|
|
8
|
+
- Pause between phases when a **Gate** is marked — the user approves the artifact before the next step.
|
|
9
|
+
- Every playbook ends with a **Stop** condition. Don't run past it.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Full Product Launch
|
|
14
|
+
|
|
15
|
+
**Trigger:** *"launch my product"*, *"zero to launch"*, *"plan and run my launch"*, *"new startup, what do I do"*.
|
|
16
|
+
|
|
17
|
+
**Use when:** fresh project, founder wants end-to-end. Allow 2-4 hours of compounding work.
|
|
18
|
+
|
|
19
|
+
**Steps:**
|
|
20
|
+
|
|
21
|
+
| # | Skill | Artifact produced | Gate? |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| 0 | `brainstorm` (skip if direction is clear) | direction summary | — |
|
|
24
|
+
| 1 | `brand-voice` | `brand/voice-profile.md` | ✓ |
|
|
25
|
+
| 2 | `audience-research` + `competitive-intel` (parallel via agents) | `brand/audience.md`, `brand/competitors.md` | ✓ |
|
|
26
|
+
| 3 | `landscape-scan` | `brand/landscape.md` (with Claims Blacklist) | ✓ |
|
|
27
|
+
| 4 | `positioning-angles` | `brand/positioning.md` | ✓ |
|
|
28
|
+
| 5 | `visual-style` → `brand-kit-playground` | `brand/creative-kit.md` + HTML preview | ✓ (visual approval) |
|
|
29
|
+
| 5b | (optional) `higgsfield-soul-id` if founder wants their face in launch creative | `brand/assets.md` reference_id | — |
|
|
30
|
+
| 6 | `keyword-research` | `brand/keyword-plan.md` | — |
|
|
31
|
+
| 7 | `seo-content` ×2-3 articles (cornerstone content) | `marketing/content/*.md` | ✓ (per article) |
|
|
32
|
+
| 8 | `content-atomizer` on each article | `marketing/social/<slug>/*.md` | — |
|
|
33
|
+
| 9 | `launch-strategy` | `marketing/launch/plan.md` | ✓ |
|
|
34
|
+
| 10 | `startup-launcher` (brief + 56-platform tracker) | `marketing/launch/product-brief.md`, `launch-tracker.md` | ✓ |
|
|
35
|
+
| 11 | Schedule social: `typefully` for X/threads, `postiz` for everything else | drafts in platform UIs | — |
|
|
36
|
+
| 12 | Log the campaign: `mktg brand append-learning` | `brand/learnings.md` | — |
|
|
37
|
+
|
|
38
|
+
**Stop:** launch day executed, drafts scheduled, learnings captured. Hand back with "next moves" list (monitor competitors, run conversion audits, plan next content batch).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 2. Content Engine
|
|
43
|
+
|
|
44
|
+
**Trigger:** *"I need a content system"*, *"publish weekly"*, *"keep the content flowing"*, *"content calendar setup"*.
|
|
45
|
+
|
|
46
|
+
**Use when:** brand foundation exists; user wants repeatable weekly output.
|
|
47
|
+
|
|
48
|
+
**Steps:**
|
|
49
|
+
|
|
50
|
+
| # | Skill | Artifact | Notes |
|
|
51
|
+
|---|---|---|---|
|
|
52
|
+
| 1 | `keyword-research` | `brand/keyword-plan.md` (fresh) | Refresh if older than 90 days. |
|
|
53
|
+
| 2 | `seo-content` (one cornerstone piece) | `marketing/content/<slug>.md` | User picks the topic from keyword-plan. |
|
|
54
|
+
| 3 | `content-atomizer` | `marketing/social/<slug>/{linkedin,twitter,reddit,...}-posts.md` | Platform-native, per-channel. |
|
|
55
|
+
| 4 | Distribution: `postiz` (LinkedIn/Reddit/Bluesky/Mastodon/Threads/IG/TikTok) + `typefully` (X) | drafts scheduled | Phase 5 of `social-campaign` picks the backend per post. |
|
|
56
|
+
|
|
57
|
+
**Stop:** one week's worth of content scheduled. Recommend scheduling a recurring run (`/loop` or weekly reminder).
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 3. Founder Voice Rebrand
|
|
62
|
+
|
|
63
|
+
**Trigger:** *"make this sound like me"*, *"extract my voice"*, *"my voice is all over the place"*, *"the brand voice doesn't match how I actually write"*.
|
|
64
|
+
|
|
65
|
+
**Use when:** founder has a real writing voice (podcast, essays, tweets) that the current `voice-profile.md` doesn't capture.
|
|
66
|
+
|
|
67
|
+
**Steps:**
|
|
68
|
+
|
|
69
|
+
| # | Skill | Artifact | Notes |
|
|
70
|
+
|---|---|---|---|
|
|
71
|
+
| 1 | `voice-extraction` | structured voice pattern analysis | Spawns 10 parallel sub-agents, reverse-engineers patterns from real content. |
|
|
72
|
+
| 2 | `brand-voice` (Extract mode) using extraction output | new `brand/voice-profile.md` | Overwrites the generic voice with the founder-calibrated one. |
|
|
73
|
+
| 3 | **Mass regen trigger** — if there's existing copy in `marketing/`, flag for rewrite: run `direct-response-copy --mode edit` on each landing page, `seo-content --mode edit` on each article, `content-atomizer` re-runs on source content | updated files | Per plan:rules/brand-file-map.md, voice changes cascade to every downstream copy skill. |
|
|
74
|
+
|
|
75
|
+
**Stop:** new `voice-profile.md` written + downstream rewrite plan surfaced. Don't auto-regenerate; the user decides which assets are worth rewriting.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 4. Conversion Audit
|
|
80
|
+
|
|
81
|
+
**Trigger:** *"audit my landing page"*, *"traffic isn't converting"*, *"why is my signup flow leaking"*, *"fix my CRO"*.
|
|
82
|
+
|
|
83
|
+
**Steps:**
|
|
84
|
+
|
|
85
|
+
| # | Skill | When |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| 1 | `page-cro` | Audits hero, CTA, social proof, objections on one URL. Produces a scored report + prioritized fix list. |
|
|
88
|
+
| 2 | `conversion-flow-cro` | Only if problem spans a multi-step flow (signup → onboarding → paywall). |
|
|
89
|
+
| 3 | If copy is the issue → `direct-response-copy --mode edit` | Surgical rewrite of the flagged copy. |
|
|
90
|
+
| 4 | Capture what you learned → `mktg brand append-learning` | Feeds future routing. |
|
|
91
|
+
|
|
92
|
+
**Stop:** ranked fix list delivered; rewrite executed if copy was the blocker.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 5. Retention Recovery
|
|
97
|
+
|
|
98
|
+
**Trigger:** *"people keep canceling"*, *"my churn is bad"*, *"reduce cancellations"*, *"win back lapsed users"*.
|
|
99
|
+
|
|
100
|
+
**Steps:**
|
|
101
|
+
|
|
102
|
+
| # | Skill | Artifact |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| 1 | `churn-prevention` | Cancel flow UX plan, dunning email sequence, win-back 90-day calendar. |
|
|
105
|
+
| 2 | `email-sequences` (build the dunning + win-back flows from step 1's plan) | Full email sequences with subjects + timing. |
|
|
106
|
+
| 3 | `send-email` (to wire the flow into Resend, if building inbound) | Transactional wiring. |
|
|
107
|
+
|
|
108
|
+
**Stop:** dunning + win-back flows drafted, wire-up instructions given. User approves before any live sends.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 6. Visual Identity
|
|
113
|
+
|
|
114
|
+
**Trigger:** *"design my brand"*, *"I need a visual look"*, *"how should my brand look"*, *"set up image generation"*.
|
|
115
|
+
|
|
116
|
+
**Steps:**
|
|
117
|
+
|
|
118
|
+
| # | Skill | Artifact |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| 1 | `visual-style` | `brand/creative-kit.md` with palette, typography, image aesthetic. |
|
|
121
|
+
| 2 | `brand-kit-playground` (immediately after) | Interactive HTML preview — tweakable palette/type/logo, social card + OG image. |
|
|
122
|
+
| 3 | `creative` (when producing ad/social assets) | Multi-mode creative briefs per asset. |
|
|
123
|
+
| 4 | Product imagery: `higgsfield-product-photoshoot` (10 modes: studio, lifestyle, Pinterest, hero banner, ad pack, virtual try-on, etc.) when Higgsfield is configured; otherwise `image-gen` (Gemini, free tier). | Brand-grade product visuals or Gemini-generated single images. |
|
|
124
|
+
| 5 | One-off images without a product: `image-gen` | Gemini-generated image via creative-kit style anchors. |
|
|
125
|
+
|
|
126
|
+
**Stop:** visual approval via `brand-kit-playground`. User copies refined tokens back, then unblocked for any future image work.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 7. Video Content
|
|
131
|
+
|
|
132
|
+
**Trigger:** *"make a video"*, *"TikTok content"*, *"product demo video"*, *"turn slides into video"*.
|
|
133
|
+
|
|
134
|
+
**Steps (branching):**
|
|
135
|
+
|
|
136
|
+
| Ask shape | Skill chain |
|
|
137
|
+
|---|---|
|
|
138
|
+
| "Product demo / walkthrough" | `marketing-demo` → `video-content` (ffmpeg or Remotion) |
|
|
139
|
+
| "TikTok slideshow / social video" | `slideshow-script` → `paper-marketing` → `video-content` → (optional) `tiktok-slideshow` orchestrator bundles all three |
|
|
140
|
+
| "AI video / branded ad / Marketing Studio / UGC ad with avatar" | `higgsfield-generate` (Seedance, Kling, Veo, or Marketing Studio mode for branded video with avatars + product) when Higgsfield is configured. No fallback for AI video. |
|
|
141
|
+
| "Pitch deck / HTML slides" | `frontend-slides` (terminal path — not a video pipeline) |
|
|
142
|
+
| "App Store screenshots" | `app-store-screenshots` (Next.js generator, NOT video) |
|
|
143
|
+
|
|
144
|
+
**Distribution:** any resulting video → `postiz` for TikTok/IG/YouTube/Threads; `typefully` for X.
|
|
145
|
+
|
|
146
|
+
**Stop:** video file exported + scheduled. Log to `brand/assets.md`.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 8. Email Infrastructure
|
|
151
|
+
|
|
152
|
+
**Trigger:** *"set up my email system"*, *"I need inbound email for an agent"*, *"wire up Resend"*.
|
|
153
|
+
|
|
154
|
+
**Steps:**
|
|
155
|
+
|
|
156
|
+
| # | Skill | Artifact |
|
|
157
|
+
|---|---|---|
|
|
158
|
+
| 1 | `agent-email-inbox` (if building agent-triggered email) | secure inbox config, webhook tunneling plan, prompt-injection defenses. |
|
|
159
|
+
| 2 | `resend-inbound` (for receiving emails via Resend) | inbound domain setup + `email.received` webhook wiring. |
|
|
160
|
+
| 3 | `email-sequences` (for automated flows: welcome, nurture, launch, win-back) | full sequences with timing and A/B plan. |
|
|
161
|
+
| 4 | `send-email` (for one-off transactional sends) | Resend API calls for specific messages. |
|
|
162
|
+
|
|
163
|
+
**Stop:** infrastructure validated (test send + receive round-trip). Log credentials env vars (via `brand/stack.md`).
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 9. SEO Authority Build
|
|
168
|
+
|
|
169
|
+
Two paths. Pick by the user's horizon. If unclear, ask once with `AskUserQuestion`.
|
|
170
|
+
|
|
171
|
+
**Path A triggers:** *"rank higher on Google"*, *"improve SEO"*, *"I want to show up in AI search"*, *"compete for [topic]"*, *"write me an SEO article"* — short-horizon, one-shot, no roadmap.
|
|
172
|
+
|
|
173
|
+
**Path B triggers:** *"SEO machine"*, *"build organic traffic"*, *"programmatic SEO"*, *"alternatives pages"*, *"comparison pages"*, *"/for/ pages"*, *"we need traffic"*, *"build an SEO engine"* — multi-phase, ship dozens of pages, persistent roadmap.
|
|
174
|
+
|
|
175
|
+
### Path A — Short-horizon authority push
|
|
176
|
+
|
|
177
|
+
**Steps:**
|
|
178
|
+
|
|
179
|
+
| # | Skill | Artifact |
|
|
180
|
+
|---|---|---|
|
|
181
|
+
| 1 | `keyword-research` | `brand/keyword-plan.md` with primary, secondary, long-tail terms + search intent notes. |
|
|
182
|
+
| 2 | `seo-content` (ongoing) | `marketing/content/*.md` — rankable, anti-AI-slop articles with schema. |
|
|
183
|
+
| 3 | `ai-seo` | Entity optimization, structured data, citation-worthy formatting for ChatGPT/Perplexity/Claude/Gemini/AI Overviews. |
|
|
184
|
+
| 4 | `competitor-alternatives` | `marketing/alternatives/<competitor>-vs-us.md` — high-intent comparison pages. |
|
|
185
|
+
| 5 | `seo-audit` (periodically) | Site architecture + schema markup audit. |
|
|
186
|
+
|
|
187
|
+
**Stop:** one cornerstone + one AI-SEO piece + one alternatives page shipped. Schedule re-runs quarterly.
|
|
188
|
+
|
|
189
|
+
### Path B — Programmatic SEO machine (long arc)
|
|
190
|
+
|
|
191
|
+
When the user wants an *operating system* for organic growth — not one article. Ships dozens of programmatic pages across alternatives, comparisons, use-cases, and playbooks, with a persistent phase tracker (`docs/seo-machine.md`) the user resumes across sessions.
|
|
192
|
+
|
|
193
|
+
**Steps:**
|
|
194
|
+
|
|
195
|
+
| # | Skill / Agent | Artifact |
|
|
196
|
+
|---|---|---|
|
|
197
|
+
| 1 | Foundation prerequisites (if missing) | Spawn `mktg-competitive-scanner` + `mktg-audience-researcher` in parallel → `brand/competitors.md`, `brand/audience.md`. Run `keyword-research` → `brand/keyword-plan.md`. |
|
|
198
|
+
| 2 | `seo-machine` (Initialize) | `docs/seo-machine.md` roadmap + `.seo/brand.md` + `.seo/link-inventory.md` + `.seo/config.json`. Stack auto-detected. |
|
|
199
|
+
| 3 | `seo-machine` (Resume — per phase) | Generates the phase's pages (e.g. 12 `/alternatives/<competitor>` pages, or 8 `/for/<persona>` use-case pages) directly into the user's framework (Next.js / Astro / Rails+Inertia / markdown fallback). |
|
|
200
|
+
| 4 | Per-phase quality gate — `mktg-content-reviewer` (voice) + `mktg-seo-analyst` (keyword adherence) | Scored, not rewritten. Spawn both in one message after each phase. |
|
|
201
|
+
| 5 | Off-page checklist + technical audit | Chain into `off-page-seo` skill → spawns `mktg-backlink-prospector` agent to research competitor referring-domains → writes `.seo/backlink-targets.json`. Plus `scripts/link_audit.py` + `scripts/tech_audit.py` run locally; findings appended to `docs/seo-machine.md`. |
|
|
202
|
+
| 6 | `seo-audit` (periodic, post-sprint) | Site-architecture review once pages are live. |
|
|
203
|
+
|
|
204
|
+
**Resume protocol:** every subsequent /cmo session checks for `docs/seo-machine.md` — if it exists, seo-machine runs in Resume mode and picks the next pending phase. The user does not need to remember where they left off.
|
|
205
|
+
|
|
206
|
+
**Stop (per phase):** all pages in the phase shipped, off-page checklist appended, quality gates passed. Then hand back: "Phase N complete — Y pages shipped. Phase N+1 is [pattern]. Run /cmo again when ready."
|
|
207
|
+
|
|
208
|
+
**Picking the path:**
|
|
209
|
+
|
|
210
|
+
| Signal | Path |
|
|
211
|
+
|---|---|
|
|
212
|
+
| "one article", "this week", "blog post" | A |
|
|
213
|
+
| "machine", "system", "sprint", "dozens of pages", "programmatic", "operating system for SEO" | B |
|
|
214
|
+
| User has 0 brand files | Run Path B Step 1 foundation first regardless |
|
|
215
|
+
| User already has `docs/seo-machine.md` | Path B Resume — no question needed |
|
|
216
|
+
|
|
217
|
+
**Cost asymmetry — sequence quick wins before long builds:**
|
|
218
|
+
|
|
219
|
+
| Pattern | Build cost per page | Conversion intent | Sequence order |
|
|
220
|
+
|---|---|---|---|
|
|
221
|
+
| `/alternatives/[competitor]` | ~4 hours | Highest | First |
|
|
222
|
+
| `/compare/[a]-vs-[b]` | ~3 hours | High | Second |
|
|
223
|
+
| `/for/[use-case]` / `/for/[audience]` | ~4-5 hours | Medium-High | Third |
|
|
224
|
+
| Long-form playbook (Pattern E) | ~2-3 days | Medium (AI-citation surface) | Late phases |
|
|
225
|
+
|
|
226
|
+
When the user asks "what should I do this week?", default to ~4-hour alternatives pages over multi-day playbooks unless they explicitly want the AI-citation play. A user who ships 5 alternatives pages in a week beats one who ships half a playbook.
|
|
227
|
+
|
|
228
|
+
### Path B sub-playbooks (cadence + situational)
|
|
229
|
+
|
|
230
|
+
Beyond the linear sprint, /cmo runs these named sub-playbooks when the situation matches:
|
|
231
|
+
|
|
232
|
+
| Sub-playbook | When | Chain |
|
|
233
|
+
|---|---|---|
|
|
234
|
+
| **B.1 Weekly SEO Maintenance Loop** | Recurring weekly cadence (use `/loop 7d` or schedule) | `seo-machine` striking-distance phase + `mktg compete scan` + reconcile new keyword opportunities into `brand/keyword-plan.md`. Output: weekly diff (pages to refresh, keywords to claim, competitor SERP movement). |
|
|
235
|
+
| **B.2 Post-Launch SEO Ignition** | Immediately after `launch-strategy` completes | Day 1: `seo-machine` Initialize + Phase 0 (tech audit). Day 7: `seo-machine` Pattern A sprint (alternatives). Day 14: `seo-machine` Pattern D sprint (comparisons) + first striking-distance pass. Couples launch momentum to indexing momentum. |
|
|
236
|
+
| **B.3 AI Overview Chase** | User wants Perplexity/ChatGPT/AI Overview citations | `ai-seo` for entity hardening + structured data → `seo-machine` Pattern E (playbook long-form, the AI-citation surface) → `competitor-alternatives` for honest "X vs Y" pages (AI engines preferentially cite honest comparisons over self-serving ones) → striking-distance refresh on already-cited weak rankers. |
|
|
237
|
+
| **B.4 /for/ Persona Discovery Pipeline** | User has audience.md but no /for/ pages yet | `audience-research` (refresh if stale) → `keyword-research` for persona-keyed vocabulary → `seo-machine` Pattern B/C generation → `page-cro` review on the first 3 shipped. Ships persona-targeted landing pages from end to end. |
|
|
238
|
+
| **B.5 Seasonal Sprint Replanner** | Triggered when `landscape.md` is refreshed (new competitors, market shift, category re-frame) | Re-rank pending phases in `docs/seo-machine.md` to chase the new landscape instead of continuing the stale plan. /cmo's learning-loop addition: stale roadmaps cost time, refreshing is cheap. |
|
|
239
|
+
|
|
240
|
+
Each sub-playbook returns to the main Path B Resume loop afterward — they're situational overlays, not replacements.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 10. Newsletter Launch
|
|
245
|
+
|
|
246
|
+
**Trigger:** *"start a newsletter"*, *"set up weekly email"*, *"I want subscribers"*.
|
|
247
|
+
|
|
248
|
+
**Steps:**
|
|
249
|
+
|
|
250
|
+
| # | Skill | Artifact |
|
|
251
|
+
|---|---|---|
|
|
252
|
+
| 1 | `audience-research` (refresh if stale) | `brand/audience.md` — who reads this newsletter. |
|
|
253
|
+
| 2 | `newsletter` | Newsletter strategy, template, cadence, growth playbook. |
|
|
254
|
+
| 3 | `lead-magnet` | Free resource that captures emails (ebook, template, toolkit). |
|
|
255
|
+
| 4 | `email-sequences` (welcome + nurture) | Automated onboarding for new subscribers. |
|
|
256
|
+
| 5 | Distribution: landing page via `direct-response-copy`; sign-up capture via `send-email` + `resend-inbound` for double opt-in. | Full signup funnel. |
|
|
257
|
+
|
|
258
|
+
**Stop:** newsletter #1 drafted, lead magnet live, welcome sequence scheduled. Hand back with growth tactics to run weekly.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 11. Studio Launch
|
|
263
|
+
|
|
264
|
+
**When:** The user wants to see their marketing operation on a dashboard rather than (or in addition to) in the terminal.
|
|
265
|
+
|
|
266
|
+
**Goal:** `mktg init` → `mktg studio --open --intent cmo --session <id>` → tabs lit by live data within 60 seconds.
|
|
267
|
+
|
|
268
|
+
| Phase | Skill / command | Why |
|
|
269
|
+
|---|---|---|
|
|
270
|
+
| 0 | `mktg studio --dry-run --json --intent cmo --session <id>` | Preview. Resolves sibling `mktg-studio/bin/mktg-studio.ts`, `MKTG_STUDIO_BIN`, or PATH, confirms ports + exact CMO dashboard URL, and never spawns. |
|
|
271
|
+
| 1 | `mktg studio --open --intent cmo --session <id>` | Spawn server (port 3001) + dashboard (port 3000). Studio opens at `http://localhost:3000/dashboard?mode=cmo&session=<id>`. |
|
|
272
|
+
| 2 | Foundation research (if first run) | Spawn `mktg-brand-researcher`, `mktg-audience-researcher`, `mktg-competitive-scanner` in parallel per the standard first-run protocol. Each agent writes a brand file. |
|
|
273
|
+
| 3 | `POST /api/brand/refresh` after each agent | Tabs light up one by one as each brand file lands. User watches the dashboard populate in real time. |
|
|
274
|
+
| 4 | `POST /api/navigate {tab: "pulse"}` | Bring the user to Pulse for the "do this next" card once foundation is complete. |
|
|
275
|
+
| 5 | `POST /api/toast "Marketing brain ready"` | Confirmation. User now has a live dashboard + a populated brand. |
|
|
276
|
+
|
|
277
|
+
**Stop:** Dashboard rendering the current primary surfaces (Pulse, Signals, Publish, Brand, Settings) with real data, Activity panel streaming /cmo events, Pulse has a prioritized next-action card. Hand back with: "Open `http://localhost:3000` — your marketing department is live. Want me to run the first recommended action?"
|
|
278
|
+
|
|
279
|
+
See `rules/studio-integration.md` for the full POST contract.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 12. Agent Team Coordination
|
|
284
|
+
|
|
285
|
+
**When:** A multi-agent workflow needs to spawn several sub-agents in parallel and synthesize their outputs — most often on first run (3 research agents) or a content batch (content-reviewer + seo-analyst on the same draft).
|
|
286
|
+
|
|
287
|
+
**Goal:** Parallelism without crossed wires, clean handoff from sub-agents back to /cmo, compounding written to `brand/learnings.md`.
|
|
288
|
+
|
|
289
|
+
| Phase | Action | Why |
|
|
290
|
+
|---|---|---|
|
|
291
|
+
| 0 | Plan the split | Identify which sub-agents run in parallel vs sequentially. Research agents (3) are parallel; review agents (content-reviewer, seo-analyst) run after content lands. |
|
|
292
|
+
| 1 | Spawn in ONE message | Use the Agent tool with N parallel `type: "tool_use"` blocks in a single message. Sequential spawns serialize — that defeats the purpose. |
|
|
293
|
+
| 2 | Wait on all | Do not proceed until every spawned agent returns. Partial results produce incoherent positioning. |
|
|
294
|
+
| 3 | Synthesize | /cmo reads each agent's output, resolves contradictions explicitly (not silently), writes the unified view. |
|
|
295
|
+
| 4 | `POST /api/activity/log` per agent | The Activity panel shows N rows — one per sub-agent — so the user can see the parallel work. |
|
|
296
|
+
| 5 | Record cross-agent learnings | If an agent surfaced an insight the others missed, append to `brand/learnings.md` with a `--learning` flag so future runs start ahead. |
|
|
297
|
+
|
|
298
|
+
**Sub-agent roster (current):**
|
|
299
|
+
- `mktg-brand-researcher` → `brand/voice-profile.md`
|
|
300
|
+
- `mktg-audience-researcher` → `brand/audience.md`
|
|
301
|
+
- `mktg-competitive-scanner` → `brand/competitors.md`
|
|
302
|
+
- `mktg-content-reviewer` → scores content draft, writes nothing
|
|
303
|
+
- `mktg-seo-analyst` → scores SEO content, writes nothing
|
|
304
|
+
|
|
305
|
+
**Stop:** All spawned agents returned, /cmo has synthesized the output into a single coherent action or artifact, learnings appended. See `rules/sub-agents.md` for the per-agent spawn contract.
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Playbook selection — quick reference
|
|
310
|
+
|
|
311
|
+
| Builder says… | Playbook |
|
|
312
|
+
|---|---|
|
|
313
|
+
| "launch", "zero to one", "ship my startup" | **Full Product Launch** |
|
|
314
|
+
| "content system", "publish weekly", "keep content flowing" | **Content Engine** |
|
|
315
|
+
| "my voice is off", "make it sound like me" | **Founder Voice Rebrand** |
|
|
316
|
+
| "audit my page", "improve conversion", "fix my funnel" | **Conversion Audit** |
|
|
317
|
+
| "reduce churn", "win back users" | **Retention Recovery** |
|
|
318
|
+
| "brand visuals", "design my look" | **Visual Identity** |
|
|
319
|
+
| "make a video", "TikTok" | **Video Content** |
|
|
320
|
+
| "email system", "inbound email", "Resend setup" | **Email Infrastructure** |
|
|
321
|
+
| "rank on Google", "AI search", "compete for [topic]", "one article" | **SEO Authority Build — Path A** |
|
|
322
|
+
| "SEO machine", "build organic traffic", "programmatic SEO", "alternatives pages", "we need traffic" | **SEO Authority Build — Path B (seo-machine)** |
|
|
323
|
+
| "start a newsletter", "subscribers" | **Newsletter Launch** |
|
|
324
|
+
| "show me the dashboard", "launch the studio", "visual mode" | **Studio Launch** |
|
|
325
|
+
| "spawn the research team", "parallel research", "do this across agents" | **Agent Team Coordination** |
|
|
326
|
+
|
|
327
|
+
**Never run a playbook silently.** Announce the plan, confirm, run, surface the artifact at each Gate, stop at the Stop condition.
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Progressive Enhancement Ladder
|
|
2
|
+
|
|
3
|
+
/cmo's capability depends on how populated `brand/` is. Brand memory enhances; it never gates. But be honest about what's possible at each rung — running SEO content at L0 produces generic slop; running it at L4 produces converting, grounded content.
|
|
4
|
+
|
|
5
|
+
**Always check the ladder first.** Run `mktg status --json --fields brand.populated,brand.missing,brand.stale` to know where you stand. Announce the level to the builder: *"You're at L2 — I can route to X, Y, Z. A and B need another brand file first. Want me to run it now?"*
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## L0 — Zero context (`mktg init` just ran; all `brand/*.md` templates)
|
|
10
|
+
|
|
11
|
+
**What's populated:** nothing real. Templates only.
|
|
12
|
+
|
|
13
|
+
**What /cmo can route to cleanly:**
|
|
14
|
+
|
|
15
|
+
| Skill | Reason |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `brainstorm` | No brand needed — it's the explorer. |
|
|
18
|
+
| `brand-voice` | Foundation skill. Its job IS to populate voice-profile.md. |
|
|
19
|
+
| `voice-extraction` | Standalone — reverse-engineers voice from external content. |
|
|
20
|
+
| `audience-research` | Foundation. Populates audience.md. |
|
|
21
|
+
| `competitive-intel` | Foundation. Populates competitors.md. |
|
|
22
|
+
| `landscape-scan` | Foundation. Populates landscape.md. |
|
|
23
|
+
| `positioning-angles` | Needs voice + audience; queue it once those land. |
|
|
24
|
+
| `mktg-x` | Utility — reads external X content. |
|
|
25
|
+
| `firecrawl` | Utility — scrapes external content. |
|
|
26
|
+
| `summarize` | Utility — compresses pasted text. |
|
|
27
|
+
| `create-skill` | Meta — adds new skills to the playbook. |
|
|
28
|
+
|
|
29
|
+
**What /cmo cannot do well:**
|
|
30
|
+
- Write converting copy (no voice, no audience, no positioning).
|
|
31
|
+
- Route to any distribution (no content to distribute).
|
|
32
|
+
- Run any playbook except **Full Product Launch** from scratch.
|
|
33
|
+
|
|
34
|
+
**Response quality:** *"I can help, but first let me build the foundation. Here's the 4-agent parallel research I'll kick off: brand-voice, audience-research, competitive-intel, landscape-scan. This gives us voice + audience + competitive context + market grounding. It's a 10-minute investment that makes everything else 10× better."*
|
|
35
|
+
|
|
36
|
+
**Playbooks unlocked:** **Full Product Launch** (starts here by design).
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## L1 — Voice only (`brand/voice-profile.md` real)
|
|
41
|
+
|
|
42
|
+
**What's populated:** voice-profile.md with real patterns.
|
|
43
|
+
|
|
44
|
+
**What /cmo adds from L0:**
|
|
45
|
+
|
|
46
|
+
| Skill | Reason |
|
|
47
|
+
|---|---|
|
|
48
|
+
| `direct-response-copy` | Can write copy in-voice now. Still generic targeting. |
|
|
49
|
+
| `seo-content` | Same — voiced but audience/keyword-agnostic. |
|
|
50
|
+
| `content-atomizer` | Can rewrite content in-voice across platforms. |
|
|
51
|
+
| `creative` | Can generate copy variants in-voice. |
|
|
52
|
+
| `newsletter` | Can draft in-voice. Topic selection is still guesswork. |
|
|
53
|
+
| `lead-magnet` | Draft only — audience targeting is missing. |
|
|
54
|
+
|
|
55
|
+
**What's still gated:**
|
|
56
|
+
- `positioning-angles` (needs audience too)
|
|
57
|
+
- `page-cro` / `conversion-flow-cro` (needs positioning for "why us" framing)
|
|
58
|
+
- `launch-strategy` / `startup-launcher` (needs positioning)
|
|
59
|
+
- `competitor-alternatives` (needs competitors.md)
|
|
60
|
+
|
|
61
|
+
**Response quality:** *"Voice is locked in. Copy will sound like you. But I'm writing blind on who we're talking to — let me run /audience-research (5 min) so the next draft converts."*
|
|
62
|
+
|
|
63
|
+
**Playbooks unlocked:** partial — Founder Voice Rebrand can finalize step 2; Content Engine can draft if user specifies topic manually.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## L2 — Voice + audience (`audience.md` real)
|
|
68
|
+
|
|
69
|
+
**What /cmo adds:**
|
|
70
|
+
|
|
71
|
+
| Skill | Reason |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `positioning-angles` | Has both required inputs. Can run. |
|
|
74
|
+
| `pricing-strategy` | Has audience context for willingness-to-pay. |
|
|
75
|
+
| `email-sequences` | Audience-targeted flows now possible. |
|
|
76
|
+
| `lead-magnet` (full) | Targeted resource. |
|
|
77
|
+
| `social-campaign` (without landscape grounding) | Can plan calendar; still no market-claim enforcement. |
|
|
78
|
+
| `keyword-research` | Better with audience context. |
|
|
79
|
+
|
|
80
|
+
**What's still gated:**
|
|
81
|
+
- Any skill that needs competitive context (`competitor-alternatives`, full `launch-strategy`).
|
|
82
|
+
- Claims-grounded content (no `landscape.md` + Claims Blacklist yet).
|
|
83
|
+
|
|
84
|
+
**Response quality:** *"Voice + audience are in. I can target now. But I don't know who you're competing against — let me run /competitive-intel (parallel to your next ask, 5 min) so I don't accidentally position us against ourselves."*
|
|
85
|
+
|
|
86
|
+
**Playbooks unlocked:** Newsletter Launch, Conversion Audit (if the page exists), Visual Identity.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## L3 — Voice + audience + competitors + landscape + positioning
|
|
91
|
+
|
|
92
|
+
**What's populated:** 5 of 10 brand files — the full research foundation.
|
|
93
|
+
|
|
94
|
+
**What /cmo adds:**
|
|
95
|
+
|
|
96
|
+
| Skill | Reason |
|
|
97
|
+
|---|---|
|
|
98
|
+
| `launch-strategy` | All required inputs. |
|
|
99
|
+
| `startup-launcher` | Full brief auto-fills from brand/. |
|
|
100
|
+
| `competitor-alternatives` | Has competitors + positioning. |
|
|
101
|
+
| `free-tool-strategy` | Has audience + positioning for distribution plan. |
|
|
102
|
+
| `seo-audit` | Has content context. |
|
|
103
|
+
| `landscape-scan` refresh becomes meaningful | baseline exists to diff against. |
|
|
104
|
+
|
|
105
|
+
**What's still gated (minor):**
|
|
106
|
+
- Visual skills work but without `creative-kit.md` produce generic styling.
|
|
107
|
+
- `keyword-plan.md` may or may not be run yet — SEO Authority Build needs it.
|
|
108
|
+
|
|
109
|
+
**Response quality:** *"Foundation is complete. Claims Blacklist is active (from landscape.md) — I'll enforce it on every piece of copy. Ready to run any playbook."*
|
|
110
|
+
|
|
111
|
+
**Playbooks unlocked:** all except those requiring visual identity (Visual Identity, Video Content) or SEO-specific (SEO Authority Build requires keyword-plan first).
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## L4 — All 10 brand files current within freshness windows
|
|
116
|
+
|
|
117
|
+
**What's populated:** `voice-profile.md`, `positioning.md`, `audience.md`, `competitors.md`, `landscape.md`, `keyword-plan.md`, `creative-kit.md`, `stack.md`, `assets.md` (append-only), `learnings.md` (append-only) — all real, none stale.
|
|
118
|
+
|
|
119
|
+
**What /cmo adds from L3:**
|
|
120
|
+
|
|
121
|
+
| Skill | Reason |
|
|
122
|
+
|---|---|
|
|
123
|
+
| `image-gen` | Has `creative-kit.md` style anchors. |
|
|
124
|
+
| `visual-style` → `brand-kit-playground` | Full loop. |
|
|
125
|
+
| `paper-marketing` | Has the design system to spawn designer agents. |
|
|
126
|
+
| `slideshow-script` + `video-content` + `tiktok-slideshow` | Full video pipeline. |
|
|
127
|
+
| `ai-seo` | Has keyword-plan + positioning for entity optimization. |
|
|
128
|
+
| `frontend-slides` | Brand-consistent pitch decks. |
|
|
129
|
+
| `app-store-screenshots` | Brand visuals in place. |
|
|
130
|
+
| `email-sequences` with full stack awareness | Knows which ESP (`stack.md`) + audience segments. |
|
|
131
|
+
| `typefully` + `postiz` routing | Full per-platform calibration. |
|
|
132
|
+
| `mktg compete scan` | Landscape baseline to diff competitor changes against. |
|
|
133
|
+
| `mktg plan next` | Has enough state to pick the single highest-priority task. |
|
|
134
|
+
|
|
135
|
+
**Response quality:** *"You're at L4 — full CMO mode. I'll route with confidence. If it's a named playbook, I'll run it. If it's an ad-hoc ask, I'll pick the 1-2 best skills and execute."*
|
|
136
|
+
|
|
137
|
+
**Playbooks unlocked:** all 10. Can compound work across multiple playbooks in one session.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Level detection at activation
|
|
142
|
+
|
|
143
|
+
Run at On Activation (see main SKILL.md):
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
mktg status --json --fields brand.populated,brand.missing,brand.stale
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Map the result:
|
|
150
|
+
|
|
151
|
+
| State | Level |
|
|
152
|
+
|---|---|
|
|
153
|
+
| `brand.populated.length === 0` OR all files are templates | L0 |
|
|
154
|
+
| only `voice-profile.md` real | L1 |
|
|
155
|
+
| `voice-profile.md` + `audience.md` real | L2 |
|
|
156
|
+
| + `competitors.md` + `landscape.md` (fresh ≤ 14 days) + `positioning.md` | L3 |
|
|
157
|
+
| All 10 files populated AND within freshness (30d profiles, 90d config, append-only never stale) | L4 |
|
|
158
|
+
|
|
159
|
+
**When landscape.md is stale (>14 days):** downgrade to "L3 but not L4 for content routing" — warn the user before running any copy skill.
|
|
160
|
+
|
|
161
|
+
**When any profile file (voice/positioning/audience/competitors/landscape) is stale (>30 days):** downgrade one level. Offer to refresh before routing.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## What "route with confidence" means
|
|
166
|
+
|
|
167
|
+
At L3/L4, /cmo doesn't ask "what do you want to do" — it suggests. At L0-L2, /cmo explicitly names the missing input before running anything that needs it. The ladder is a contract: the builder knows what they'll get back at each level, and /cmo is honest about the quality ceiling.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Ecosystem readiness — the orthogonal axis (E0–E4)
|
|
172
|
+
|
|
173
|
+
Brand completeness (L0–L4 above) governs *content quality*. Ecosystem completeness (E0–E4 below) governs *what surfaces the builder can touch*. The two axes are independent — a project can be L4/E0 (brand-rich, CLI-only) or L1/E3 (brand-light, studio+native publish wired). /cmo routes across both.
|
|
174
|
+
|
|
175
|
+
Detect ecosystem level at activation with a single `mktg doctor --json` — it returns studio reachability, integration status, and sibling presence.
|
|
176
|
+
|
|
177
|
+
### E0 — CLI only
|
|
178
|
+
|
|
179
|
+
**State:** `mktg` installed, `brand/` may or may not exist, no studio, no native providers, no postiz, no other integrations.
|
|
180
|
+
|
|
181
|
+
**Surfaces /cmo can drive:** the mktg CLI itself + Claude Code terminal. Full read-and-write on `brand/`. All content skills work locally.
|
|
182
|
+
|
|
183
|
+
**What /cmo cannot:** show a dashboard, post to social, trigger live signal collection.
|
|
184
|
+
|
|
185
|
+
**Response:** *"You're CLI-only right now. I can write and save everything locally. Want me to help set up Studio or native publish providers when you're ready?"*
|
|
186
|
+
|
|
187
|
+
### E1 — CLI + brand bootstrapped
|
|
188
|
+
|
|
189
|
+
**State:** E0 + `brand/` has real files (L1 or higher on the brand axis).
|
|
190
|
+
|
|
191
|
+
**What this unlocks:** every content skill now has at least voice grounding. Nothing new on the ecosystem axis — this rung exists to acknowledge that a CLI-only project CAN still produce meaningful output if the brand axis is funded.
|
|
192
|
+
|
|
193
|
+
**Response:** *"Brand is in. I can write in-voice without any studio or postiz. Content goes to files in `brand/assets.md` or wherever you route it."*
|
|
194
|
+
|
|
195
|
+
### E2 — Studio attached
|
|
196
|
+
|
|
197
|
+
**State:** E1 + `mktg studio` running, `GET $STUDIO/api/health` returns 200 (`STUDIO` is the API base printed by the launcher, default `http://localhost:3001`).
|
|
198
|
+
|
|
199
|
+
**What /cmo adds:** the five studio verbs from `rules/studio-integration.md` — activity, navigate, toast, brand-refresh, schema-fetch. Every skill run now mirrors to the Activity panel. Brand file writes trigger SWR invalidation. Tab switches are programmatic.
|
|
200
|
+
|
|
201
|
+
**What's still gated:** external network posting requires Postiz, Typefully, or a browser profile. Native publish can still store the local queue/history.
|
|
202
|
+
|
|
203
|
+
**Response:** *"Studio is live. You'll see every skill run land on the Activity panel. Open `http://localhost:3000` to watch — I'll surface toasts when something interesting ships."*
|
|
204
|
+
|
|
205
|
+
### E3 — Studio + native publish connected
|
|
206
|
+
|
|
207
|
+
**State:** E2 + at least one native provider exists from `mktg publish --adapter mktg-native --list-integrations --json`.
|
|
208
|
+
|
|
209
|
+
**What /cmo adds:** local queue/history for the initial native rollout: X, TikTok, Instagram, Reddit, and LinkedIn. Campaign orchestration can now write platform-native posts into the workspace backend and show them in Studio.
|
|
210
|
+
|
|
211
|
+
**What's still gated:** actual external network posting still requires Postiz, Typefully, or browser automation. Cross-sibling workflows require E4.
|
|
212
|
+
|
|
213
|
+
**Response:** *"Native publish is wired — I can queue X, TikTok, Instagram, Reddit, and LinkedIn content into this workspace. If you want it pushed to the real networks, I'll route through Postiz, Typefully, or browser automation and tell you exactly which path is active."*
|
|
214
|
+
|
|
215
|
+
### E4 — Full ecosystem
|
|
216
|
+
|
|
217
|
+
**State:** E3 + a multi-repo marketing workspace. marketing-cli (the CLI), mktg-studio (the dashboard), and the marketing site each have their own `brand/` and their own git history.
|
|
218
|
+
|
|
219
|
+
**What /cmo adds:** cross-sibling awareness per `rules/monorepo.md`. Can reason about mktg-site content strategy vs mktg-studio positioning vs marketing-cli docs, knowing each is a distinct brand but shares an overarching ecosystem identity. Can route audit work across siblings (F-chain tasks), can coordinate launch copy (C-chain) that references all four surfaces coherently.
|
|
220
|
+
|
|
221
|
+
**What's still gated:** nothing on the ecosystem axis. At E4, /cmo operates the full marketing department.
|
|
222
|
+
|
|
223
|
+
**Response:** *"Full ecosystem is live — CLI, studio, and site. If I need to cross-reference, I'll use `--cwd` explicitly and announce the sibling. Your launch copy can reference any of them; I'll keep voices distinct."*
|
|
224
|
+
|
|
225
|
+
### Two-axis routing in practice
|
|
226
|
+
|
|
227
|
+
A project at L4/E0 — full brand, no studio/postiz — gets polished copy shipped to files. Perfectly fine for a pre-launch stealth product.
|
|
228
|
+
|
|
229
|
+
A project at L1/E3 — thin brand, full ecosystem — gets distribution-ready posts with voice-grounding but weak targeting. /cmo should recommend investing in the brand axis before scaling distribution, because E3 amplifies L1's weaknesses.
|
|
230
|
+
|
|
231
|
+
The sweet spot for production use is L3+/E2+ — enough brand grounding for claims-aware copy, enough ecosystem for the builder to see and distribute what /cmo produces.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Publish Index
|
|
2
|
+
|
|
3
|
+
This is the /cmo routing index for distribution. Runtime schema wins:
|
|
4
|
+
if this file conflicts with `mktg schema publish --json` or
|
|
5
|
+
`mktg publish --list-adapters --json`, trust the live CLI output.
|
|
6
|
+
|
|
7
|
+
## Current Adapters
|
|
8
|
+
|
|
9
|
+
Refresh before a publishing session:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
mktg publish --list-adapters --json
|
|
13
|
+
mktg publish --adapter mktg-native --list-integrations --json
|
|
14
|
+
mktg publish --adapter postiz --list-integrations --json
|
|
15
|
+
mktg publish --adapter postiz --diagnose --json
|
|
16
|
+
mktg catalog info postiz --json --fields configured,missing_envs,resolved_base
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
| Adapter | Role | Credentials | Reality |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| `mktg-native` | Local agent-first publish backend | None | Stores workspace account, providers, queue, history under `.mktg/native-publish/`. This is the current native Studio backend. |
|
|
22
|
+
| `postiz` | External social provider catalog | `POSTIZ_API_KEY`, `POSTIZ_API_BASE` | Creates Postiz drafts through the REST API. Hosted or self-hosted; Docker roots like `http://localhost:4007` are retried through `/api`. |
|
|
23
|
+
| `typefully` | X/threads specialist and fallback | `TYPEFULLY_API_KEY` | Creates Typefully drafts. Best for threads and X-specific workflows. |
|
|
24
|
+
| `resend` | Email send path | `RESEND_API_KEY` | Transactional/email distribution. |
|
|
25
|
+
| `file` | Always-on local export | None | Writes publish artifacts to disk for manual or later posting. |
|
|
26
|
+
|
|
27
|
+
## Native Backend
|
|
28
|
+
|
|
29
|
+
Initial native provider rollout is deliberately small:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
x, tiktok, instagram, reddit, linkedin
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Native backend commands:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
mktg publish --native-account --json
|
|
39
|
+
mktg publish --native-upsert-provider --input '{"identifier":"linkedin","name":"Acme LinkedIn","profile":"acme"}' --json
|
|
40
|
+
mktg publish --adapter mktg-native --list-integrations --json
|
|
41
|
+
mktg publish --native-list-posts --json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Native publish manifest shape:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"name": "campaign-name",
|
|
49
|
+
"items": [
|
|
50
|
+
{
|
|
51
|
+
"type": "social",
|
|
52
|
+
"adapter": "mktg-native",
|
|
53
|
+
"content": "Post copy",
|
|
54
|
+
"metadata": {
|
|
55
|
+
"providers": ["linkedin"],
|
|
56
|
+
"postType": "schedule",
|
|
57
|
+
"date": "2026-04-24T10:00:00.000Z"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Important: `mktg-native` is local-first. It records drafts, scheduled
|
|
65
|
+
items, published-local state, and queue history. It does not magically own
|
|
66
|
+
third-party OAuth yet; use Postiz or browser automation when real external
|
|
67
|
+
network posting is required.
|
|
68
|
+
|
|
69
|
+
## Platform Routing
|
|
70
|
+
|
|
71
|
+
| Platform | Default route | Fallback route | Notes |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| X | `mktg-native` for local queue; `typefully` for real threads | Postiz if connected, then file | X thread UX remains Typefully-specialist. |
|
|
74
|
+
| TikTok | `mktg-native` for local queue | Postiz if connected, then browser profile, then file | Browser path is account/session dependent. |
|
|
75
|
+
| Instagram | `mktg-native` for local queue | Postiz if connected, then browser profile, then file | Browser path is account/session dependent. |
|
|
76
|
+
| Reddit | `mktg-native` for local queue | Postiz if connected, then browser profile, then file | Respect subreddit rules and manual review. |
|
|
77
|
+
| LinkedIn | `mktg-native` for local queue | Postiz or Typefully if connected, then file | Personal vs company page must be explicit. |
|
|
78
|
+
|
|
79
|
+
## Safe Publish Sequence
|
|
80
|
+
|
|
81
|
+
1. Generate platform-native copy first. Do not dump one generic post everywhere.
|
|
82
|
+
2. Run `mktg publish --list-adapters --json`.
|
|
83
|
+
3. If using native, ensure providers exist with `--adapter mktg-native --list-integrations`.
|
|
84
|
+
4. If using Postiz, run `mktg publish --adapter postiz --diagnose --json` before live drafting.
|
|
85
|
+
5. Run a dry-run publish first:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
mktg publish --adapter mktg-native --dry-run --input '<manifest-json>' --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
6. Only after user approval, execute:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
mktg publish --adapter mktg-native --confirm --input '<manifest-json>' --json
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
7. Mirror meaningful publishes to Studio with `/api/activity/log`,
|
|
98
|
+
`/api/navigate {"tab":"publish"}`, and an honest toast.
|
|
99
|
+
|
|
100
|
+
## Failure Policy
|
|
101
|
+
|
|
102
|
+
- If native target resolution fails, add or correct the provider first.
|
|
103
|
+
- If Postiz is unconfigured, surface `missing_envs` from `mktg catalog info postiz`.
|
|
104
|
+
- If Postiz self-hosting fails, run `mktg publish --adapter postiz --diagnose --json` and check whether the base should be the Docker app root (`http://localhost:4007`) or backend path (`http://localhost:4007/api`).
|
|
105
|
+
- If a live provider is down, do not pretend the content posted. Save to native or file and tell the user the external posting step is still pending.
|
|
106
|
+
- If rate-limited, persist the remaining work and give a concrete resume path.
|