@jairodri/huckleberry-cli 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +349 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: social-campaign
|
|
3
|
+
description: >
|
|
4
|
+
End-to-end social content campaign pipeline. Takes a marketing goal and produces
|
|
5
|
+
scheduled, on-brand social posts with visuals across postiz-supported platforms,
|
|
6
|
+
while keeping Typefully for X/thread specialist flows and fallback coverage.
|
|
7
|
+
Chains: CMO strategy, content writing with voice calibration, AI slop audit,
|
|
8
|
+
selective Paper MCP visual design, and routed scheduling via postiz or Typefully.
|
|
9
|
+
Each phase has a
|
|
10
|
+
human gate. Use this skill whenever someone wants to plan and execute a batch of
|
|
11
|
+
social posts — not just one-off tweets. Triggers include: "social campaign",
|
|
12
|
+
"schedule posts", "pre-launch content", "content calendar", "social content pipeline",
|
|
13
|
+
"build up content", "I need social media content for my launch", "help me build
|
|
14
|
+
social presence", "plan a week of posts", "batch social content", "social media
|
|
15
|
+
strategy", or any request involving multiple scheduled posts with optional visuals.
|
|
16
|
+
allowed-tools:
|
|
17
|
+
- Bash(mktg status *)
|
|
18
|
+
- Bash(*/typefully.js *)
|
|
19
|
+
depends-on:
|
|
20
|
+
- hook-generator
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# /social-campaign — Social Content Campaign Pipeline
|
|
24
|
+
|
|
25
|
+
Orchestrator that chains 5 phases into a complete social content campaign:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
STRATEGY → WRITE → REVIEW → DESIGN → SCHEDULE
|
|
29
|
+
(plan) (draft) (audit) (visuals) (postiz/typefully)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Awareness Gate (MANDATORY):** Before Phase 1 (Strategy), determine the target audience's awareness level. See `references/awareness-level-guide.md`. If unclear, ask the user before proceeding.
|
|
33
|
+
|
|
34
|
+
Each phase is an independent block. This orchestrator is one recipe that combines them. Produces N scheduled posts with selective visuals from a single marketing goal.
|
|
35
|
+
|
|
36
|
+
## When to Use
|
|
37
|
+
|
|
38
|
+
- Pre-launch content build-up (1-2 week runway)
|
|
39
|
+
- Ongoing content calendar creation
|
|
40
|
+
- Campaign bursts around announcements
|
|
41
|
+
- Any time you need multiple scheduled posts with visuals
|
|
42
|
+
|
|
43
|
+
## Architecture
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Phase 1: STRATEGY — Plan content calendar with themes, timing, platform mix
|
|
47
|
+
Phase 2: WRITE — Draft posts calibrated to real voice (not brand doc voice)
|
|
48
|
+
Phase 3: REVIEW — AI slop audit + voice calibration against published posts
|
|
49
|
+
Phase 4: DESIGN — Selective visual creation in Paper MCP (not every post)
|
|
50
|
+
Phase 5: SCHEDULE — Route each post to postiz first, with Typefully as the X/thread specialist and fallback
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Workflow
|
|
54
|
+
|
|
55
|
+
### Phase 0: Load Context
|
|
56
|
+
|
|
57
|
+
1. Run `mktg status --json` to check brand health
|
|
58
|
+
2. Read brand files in parallel:
|
|
59
|
+
- `brand/voice-profile.md` (tone, vocabulary, do's/don'ts)
|
|
60
|
+
- `brand/positioning.md` (angles, headlines)
|
|
61
|
+
3. Read `brand/landscape.md` if it exists — check the Claims Blacklist before making ecosystem or competitive claims. If stale (>14 days) or missing, warn that market claims may be outdated.
|
|
62
|
+
4. Check social distribution readiness: `mktg doctor --json --fields checks.postiz.configured,checks.typefully.configured`
|
|
63
|
+
5. If Typefully is configured, load Typefully config: check default social set, list available accounts
|
|
64
|
+
6. If Typefully is configured, check queue schedule:
|
|
65
|
+
- `typefully.js queue:get --start-date <today> --end-date <+N days>`
|
|
66
|
+
- `typefully.js queue:schedule:get` (what days/times are slots)
|
|
67
|
+
7. Read recent published posts:
|
|
68
|
+
- Prefer Typefully history when available: `typefully.js drafts:list --status published --sort -created_at`
|
|
69
|
+
- Otherwise use the project's recent post corpus or approved drafts for voice calibration
|
|
70
|
+
|
|
71
|
+
**If brand files are missing:** The skill still works. Ask the user for: (1) brand voice in 2-3 adjectives, (2) target platforms, (3) content themes. Proceed with these as lightweight context. Brand files enhance, never gate.
|
|
72
|
+
|
|
73
|
+
**If Typefully queue is empty (no available slots):** Offer the user two options: (1) create drafts without scheduling (user schedules manually in Typefully UI), or (2) use specific datetime scheduling with `--schedule "ISO_datetime"`. This only applies to posts routed to Typefully.
|
|
74
|
+
|
|
75
|
+
**Present context summary:**
|
|
76
|
+
```
|
|
77
|
+
Brand: loaded (voice, positioning) | OR: missing — using lightweight context
|
|
78
|
+
Postiz: configured for multi-provider social distribution | OR: missing — Typefully/file/browser fallbacks only
|
|
79
|
+
Typefully: connected for X/threads specialist routing and fallback | OR: missing
|
|
80
|
+
Queue: {N} empty Typefully slots over next {days} days ({schedule})
|
|
81
|
+
Last post: "{preview}" ({date})
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Phase 1: STRATEGY
|
|
85
|
+
|
|
86
|
+
Plan the content calendar. This is strategic thinking, not template filling.
|
|
87
|
+
|
|
88
|
+
**Inputs needed (use AskUserQuestion if not provided):**
|
|
89
|
+
- What's the marketing goal? (launch, awareness, engagement, authority)
|
|
90
|
+
- What's the timeline? (1 week, 2 weeks, ongoing)
|
|
91
|
+
- Any specific themes or angles to hit?
|
|
92
|
+
|
|
93
|
+
**Planning process:**
|
|
94
|
+
1. Analyze the goal, timeline, and available queue slots
|
|
95
|
+
2. Plan N posts distributed across the timeline
|
|
96
|
+
3. For each post, decide:
|
|
97
|
+
- **Day and time slot** (from queue schedule)
|
|
98
|
+
- **Platform mix** (X only, LinkedIn only, or both)
|
|
99
|
+
- **Theme** (problem awareness, value education, social proof, product tease, announcement)
|
|
100
|
+
- **Content type** (observation, hot take, how-to, builder update, announcement)
|
|
101
|
+
4. Consider pacing: build gradually, don't front-load announcements
|
|
102
|
+
5. Consider variety: alternate themes, don't repeat the same structure
|
|
103
|
+
|
|
104
|
+
**Present the calendar for approval:**
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
| # | Date | Platform | Theme | Hook Direction |
|
|
108
|
+
|---|------|----------|-------|----------------|
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Gate:** User must approve calendar before Phase 2.
|
|
112
|
+
|
|
113
|
+
### Phase 2: WRITE
|
|
114
|
+
|
|
115
|
+
Draft all posts, calibrated to the user's ACTUAL voice (not just the brand doc).
|
|
116
|
+
|
|
117
|
+
**Critical: Voice Calibration**
|
|
118
|
+
|
|
119
|
+
Before writing, read 5-8 recent published posts from Typefully:
|
|
120
|
+
|
|
121
|
+
**Agent-Reach for Content Ideation** (skill: `agent-reach`):
|
|
122
|
+
Gather fresh content angles from social platforms before writing:
|
|
123
|
+
- X/Twitter trends: `twitter search "topic" -n 20` or `bird search "topic"`
|
|
124
|
+
- Reddit discussions: `opencli reddit search "topic" -f yaml`
|
|
125
|
+
- Bilibili (Chinese tech): `bili search "topic" --type video -n 10`
|
|
126
|
+
- V2EX: `curl https://www.v2ex.com/api/topics/hot.json`
|
|
127
|
+
- XiaoYuZhou podcasts: `~/.agent-reach/tools/xiaoyuzhou/transcribe.sh "URL"`
|
|
128
|
+
- Exa semantic search: `mcporter call 'exa.web_search_exa(query: "topic", numResults: 5)'`
|
|
129
|
+
|
|
130
|
+
Run `agent-reach doctor --json` to check available platforms.
|
|
131
|
+
|
|
132
|
+
Before writing, read 5-8 recent published posts from Typefully:
|
|
133
|
+
```bash
|
|
134
|
+
typefully.js drafts:list --status published --sort -created_at
|
|
135
|
+
typefully.js drafts:get <id> # for full text of top posts
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Analyze the real voice patterns:
|
|
139
|
+
- Sentence length and structure
|
|
140
|
+
- Use of fragments vs complete sentences
|
|
141
|
+
- Technical specificity level
|
|
142
|
+
- How they open posts (fact-first? question? observation?)
|
|
143
|
+
- How they close (link? command? statement?)
|
|
144
|
+
- Personality markers (dry humor? directness? code inline?)
|
|
145
|
+
|
|
146
|
+
**Hook Generation (via hook-generator subagent)**
|
|
147
|
+
|
|
148
|
+
For each post requiring a strong opening, spawn a subagent per platform:
|
|
149
|
+
```markdown
|
|
150
|
+
Load the hook-generator skill and execute the full Phase 1-6 pipeline with this context:
|
|
151
|
+
- WHO: [Target audience from brand/positioning.md]
|
|
152
|
+
- WHAT/WHY: [Post theme + core insight from Phase 1]
|
|
153
|
+
- Knife: [Pain point the post addresses]
|
|
154
|
+
- Platform: [X / LinkedIn / Threads / Bluesky / Instagram / TikTok]
|
|
155
|
+
- Brand: [User's real voice patterns from calibration step]
|
|
156
|
+
- Target Score: 80
|
|
157
|
+
Return ONLY this JSON array: [{"hook":"...","score":<0-100>,"pattern":"...","formula":"..."}]
|
|
158
|
+
```
|
|
159
|
+
Filter: Discard hooks that don't match the user's calibrated voice patterns (e.g., if they never use questions, discard question hooks)
|
|
160
|
+
Fallback: If subagent fails, write hooks manually using the user's actual opening patterns from calibration
|
|
161
|
+
|
|
162
|
+
**Write each post matching these patterns, NOT generic brand voice.**
|
|
163
|
+
|
|
164
|
+
For each post:
|
|
165
|
+
1. Write the full text (using selected hook or manual)
|
|
166
|
+
2. Determine platform (X, LinkedIn, or both)
|
|
167
|
+
3. If cross-platform with same content, use one draft with `--platform x,linkedin`
|
|
168
|
+
4. If cross-platform with different content, plan as single draft with platform-specific text
|
|
169
|
+
|
|
170
|
+
**Present all posts for approval as a numbered list with the full text.**
|
|
171
|
+
|
|
172
|
+
**Gate:** User must approve posts before Phase 3.
|
|
173
|
+
|
|
174
|
+
### Phase 3: REVIEW
|
|
175
|
+
|
|
176
|
+
Two-part quality audit. This is the most important phase for authenticity.
|
|
177
|
+
|
|
178
|
+
#### 3a: AI Slop Audit
|
|
179
|
+
|
|
180
|
+
Audit every post for these AI tells. **Read each post manually, in sequence, looking at the batch as a whole** (not just individual posts). This cannot be done with regex.
|
|
181
|
+
|
|
182
|
+
**Structural patterns to catch:**
|
|
183
|
+
- Sentences that all follow the same rhythm (subject-verb-explanation, repeat)
|
|
184
|
+
- Every post opening with a question or every post opening with a bold claim — variety is key
|
|
185
|
+
- Numbered lists where every item has the same sentence structure
|
|
186
|
+
- "Sandwich" pattern: statement, elaboration, restatement in every post
|
|
187
|
+
|
|
188
|
+
**Transition filler to remove:**
|
|
189
|
+
- "Here's the thing:", "Let me be clear:", "The reality is:", "At the end of the day"
|
|
190
|
+
- "In today's [landscape/world/environment]", "When it comes to"
|
|
191
|
+
- "It's worth noting that", "Interestingly enough", "Not gonna lie"
|
|
192
|
+
|
|
193
|
+
**Vocabulary tells to flag:**
|
|
194
|
+
- "Leverage", "unlock", "game-changer", "deep dive", "robust", "streamline"
|
|
195
|
+
- "Landscape", "navigate", "elevate", "empower", "cutting-edge"
|
|
196
|
+
- Overuse of "incredibly", "absolutely", "fundamentally"
|
|
197
|
+
|
|
198
|
+
**Batch-level monotony checks:**
|
|
199
|
+
- Do 3+ posts start the same way? Fix it.
|
|
200
|
+
- Do all posts use the same CTA? Vary them.
|
|
201
|
+
- Is the emotional range flat? Mix insight, humor, urgency, curiosity.
|
|
202
|
+
- Could you shuffle the posts and not notice? Each needs a distinct angle.
|
|
203
|
+
|
|
204
|
+
If /cmo is installed, also reference `~/.claude/skills/cmo/references/ai-slop-patterns.md` for the full pattern library.
|
|
205
|
+
|
|
206
|
+
#### 3b: Voice Calibration Check
|
|
207
|
+
|
|
208
|
+
Compare each post against the published posts from Phase 2's calibration:
|
|
209
|
+
- Does this sound like the same person wrote it?
|
|
210
|
+
- Would this blend in with their real timeline?
|
|
211
|
+
- Is the technical specificity level right?
|
|
212
|
+
- Are the sentence rhythms natural?
|
|
213
|
+
|
|
214
|
+
**Fix anything that fails either audit. Present the final versions.**
|
|
215
|
+
|
|
216
|
+
**Gate:** User approves final post text.
|
|
217
|
+
|
|
218
|
+
### Phase 4: DESIGN
|
|
219
|
+
|
|
220
|
+
Selective visual creation. NOT every post gets an image — text-only posts feel more authentic for personal observations and hot takes.
|
|
221
|
+
|
|
222
|
+
For the full decision framework (which posts get images), image types, Paper MCP steps, and design system specs, see `references/paper-mcp-workflow.md`.
|
|
223
|
+
|
|
224
|
+
**Quick decision rule:** Comparisons, processes, data, and announcements get images. Personal takes, vents, and builder updates stay text-only.
|
|
225
|
+
|
|
226
|
+
**Present image plan for approval:**
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
| Post # | Image? | What It Shows |
|
|
230
|
+
|--------|--------|---------------|
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Gate:** User approves image plan. User exports PNGs from Paper after design.
|
|
234
|
+
|
|
235
|
+
### Phase 5: SCHEDULE
|
|
236
|
+
|
|
237
|
+
<!-- BEGIN POSTIZ EXTENSION (mktg v0.2+) -->
|
|
238
|
+
|
|
239
|
+
**Step 0 — Pick the scheduling backend per post.**
|
|
240
|
+
|
|
241
|
+
Before scheduling anything, detect which backends are available. This check runs once per Phase 5 entry and caches for the phase:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
mktg doctor --json --fields checks.typefully.configured,checks.postiz.configured
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Resolve the routing per post using the table below. `platform` is already tagged per post by Phase 2 and appears verbatim in the post file's YAML frontmatter.
|
|
248
|
+
|
|
249
|
+
| Platform tagged on the post | Both configured | Typefully only | Postiz only | Neither |
|
|
250
|
+
|---|---|---|---|---|
|
|
251
|
+
| `x` / Twitter (single or thread) | **Typefully** (threads are canonical here) | Typefully | Postiz (no thread support, flag it) | Skip with fix: "Set TYPEFULLY_API_KEY or POSTIZ_API_KEY" |
|
|
252
|
+
| `linkedin`, `threads`, `bluesky`, `mastodon` | **Postiz** (richer provider catalog) | Typefully | Postiz | Skip with fix |
|
|
253
|
+
| `reddit`, `instagram`, `tiktok`, `youtube`, `pinterest`, `discord`, `slack` | **Postiz** | Can't publish — write file only, instruct user to copy-paste | Postiz | Skip with fix |
|
|
254
|
+
|
|
255
|
+
**Invariant:** any post with `type: thread` stays on Typefully regardless of postiz availability. Thread UX is Typefully's canonical path; do not degrade it.
|
|
256
|
+
|
|
257
|
+
**Progressive enhancement:** if `checks.postiz.configured === false`, Phase 5 behaves exactly as the Typefully-only path below — zero behavior change for users without postiz. If both are missing, fall back to writing files into `marketing/campaigns/{campaign-name}/posts/` and surface a "copy these to the platform UI" summary.
|
|
258
|
+
|
|
259
|
+
**Fallback behavior under failure (during the phase):**
|
|
260
|
+
- Postiz unreachable / 5xx: retry once with exponential backoff (1s, 2s). On second failure for a Typefully-covered platform (linkedin/threads/bluesky/mastodon), fall back to Typefully. On second failure for a postiz-only platform (reddit/instagram/tiktok/youtube/pinterest/discord/slack), fail the post with `fix: "postiz unreachable — check mktg catalog info postiz --fields configured,resolved_base"`.
|
|
261
|
+
- Postiz 401: halt the entire phase. Bad key means the whole batch will fail; don't waste rate-limit quota.
|
|
262
|
+
- Postiz 429: parse `Retry-After` from the adapter's error envelope; surface to the user. Resume after the cooldown or save the batch for later.
|
|
263
|
+
- Typefully failure: unchanged from pre-extension behavior — fail loudly per the existing flow below.
|
|
264
|
+
|
|
265
|
+
<!-- END POSTIZ EXTENSION -->
|
|
266
|
+
|
|
267
|
+
### Case A — Typefully path (X and threads, plus Typefully-covered platforms when postiz is absent)
|
|
268
|
+
|
|
269
|
+
Upload media and schedule all posts via Typefully.
|
|
270
|
+
|
|
271
|
+
**For posts WITH images:**
|
|
272
|
+
1. Find exported PNGs (ask user for location if needed)
|
|
273
|
+
2. Upload each: `typefully.js media:upload <file_path>`
|
|
274
|
+
3. Create or update draft with media: `typefully.js drafts:create --platform x,linkedin --text "..." --media <media_id> --schedule <ISO_datetime>`
|
|
275
|
+
|
|
276
|
+
**For text-only posts:**
|
|
277
|
+
1. Create draft: `typefully.js drafts:create --platform x,linkedin --text "..." --schedule <ISO_datetime>`
|
|
278
|
+
|
|
279
|
+
**For updating existing drafts (if created earlier):**
|
|
280
|
+
1. Upload media: `typefully.js media:upload <file>`
|
|
281
|
+
2. Update draft with text AND media: `typefully.js drafts:update <draft_id> --text "..." --media <media_id> --use-default`
|
|
282
|
+
(Note: `--text` is required even when only adding media)
|
|
283
|
+
|
|
284
|
+
**Scheduling options:**
|
|
285
|
+
- Specific time: `--schedule "2025-01-21T09:00:00Z"`
|
|
286
|
+
- Next queue slot: `--schedule next-free-slot`
|
|
287
|
+
- Publish now: `--schedule now`
|
|
288
|
+
|
|
289
|
+
**After scheduling all posts:**
|
|
290
|
+
1. Verify: `typefully.js drafts:list --status scheduled --sort scheduled_date`
|
|
291
|
+
2. Confirm each draft has correct platform, text, and media
|
|
292
|
+
3. Present final summary table
|
|
293
|
+
|
|
294
|
+
**Gate:** User reviews scheduled posts in Typefully UI.
|
|
295
|
+
|
|
296
|
+
### Case B — Postiz path (non-Twitter platforms when postiz is configured)
|
|
297
|
+
|
|
298
|
+
For each post whose routed backend is postiz (per Step 0 table), build a `publish.json` entry and invoke the adapter. You do NOT call the postiz API directly — always go through `mktg publish --adapter postiz`.
|
|
299
|
+
|
|
300
|
+
**For text-only posts (v1 is draft-only; scheduling lands in v2):**
|
|
301
|
+
1. Build `publish.json` with one item per post:
|
|
302
|
+
```json
|
|
303
|
+
{
|
|
304
|
+
"name": "{campaign-name}",
|
|
305
|
+
"items": [{
|
|
306
|
+
"type": "social",
|
|
307
|
+
"adapter": "postiz",
|
|
308
|
+
"content": "<post text>",
|
|
309
|
+
"metadata": { "providers": ["<postiz-identifier>"] }
|
|
310
|
+
}]
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
`providers` must be exact postiz `identifier` strings (`linkedin`, `linkedin-page`, `bluesky`, `reddit`, etc.) — resolve friendly names via `/postiz` skill's Step 2b alias logic, not inline here.
|
|
314
|
+
|
|
315
|
+
2. Dry-run: `mktg publish --adapter postiz --dry-run --input '<json>' --json`. Verify the adapter validates the providers against connected integrations.
|
|
316
|
+
3. Confirm: `mktg publish --adapter postiz --confirm --input '<json>' --json`. The adapter writes sent-markers to `.mktg/publish/{campaign-name}-postiz.json` on success.
|
|
317
|
+
4. Update the post file frontmatter: `status: scheduled`, `draft_id: <id>`.
|
|
318
|
+
|
|
319
|
+
**For posts WITH images (v2 — skip in v1):**
|
|
320
|
+
postiz v1 is draft-only; images hardcode to `[]`. If a post has `has_image: true`, either (a) wait for v2, or (b) downgrade to Typefully if the platform allows (X/LinkedIn). Do NOT populate `metadata.mediaPaths` in v1 — the adapter ignores it.
|
|
321
|
+
|
|
322
|
+
**After scheduling all posts (mixed Typefully + postiz):**
|
|
323
|
+
1. Verify Typefully side: `typefully.js drafts:list --status scheduled --sort scheduled_date`.
|
|
324
|
+
2. Verify postiz side: the adapter's response envelope already reports per-provider status in `results[]`. Capture draft IDs to the post file frontmatter.
|
|
325
|
+
3. Present the unified final summary table.
|
|
326
|
+
|
|
327
|
+
**Gate:** User reviews scheduled posts in each platform's UI (Typefully for X, postiz dashboard for everything else).
|
|
328
|
+
|
|
329
|
+
## Human-in-the-Loop Gates
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
[Phase 1] → User approves content calendar
|
|
333
|
+
[Phase 2] → User approves post drafts
|
|
334
|
+
[Phase 3] → User approves after AI slop + voice audit
|
|
335
|
+
[Phase 4] → User approves image plan, exports PNGs from Paper
|
|
336
|
+
[Phase 5] → User verifies in Typefully UI
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
Each gate is an AskUserQuestion. The user can go back to any phase.
|
|
340
|
+
|
|
341
|
+
## Output
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
marketing/campaigns/{campaign-name}/
|
|
345
|
+
calendar.md # Content calendar with themes + timing
|
|
346
|
+
posts/
|
|
347
|
+
post-01.md # Each post with text, platform, schedule
|
|
348
|
+
post-02.md
|
|
349
|
+
...
|
|
350
|
+
images/
|
|
351
|
+
post-03-comparison.png # Exported from Paper
|
|
352
|
+
post-06-flow.png
|
|
353
|
+
...
|
|
354
|
+
campaign-log.md # What was scheduled, draft IDs, media IDs
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Post File Format
|
|
358
|
+
|
|
359
|
+
Each `post-XX.md` file uses this structure:
|
|
360
|
+
|
|
361
|
+
```yaml
|
|
362
|
+
---
|
|
363
|
+
post_number: 1
|
|
364
|
+
platform: x,linkedin
|
|
365
|
+
type: single | thread | carousel
|
|
366
|
+
scheduled_date: "2026-03-25T09:00:00Z"
|
|
367
|
+
draft_id: "" # Populated after Typefully draft creation
|
|
368
|
+
media_id: "" # Populated after media upload
|
|
369
|
+
has_image: false
|
|
370
|
+
status: draft | approved | scheduled | published
|
|
371
|
+
---
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
```
|
|
375
|
+
[Post text goes here]
|
|
376
|
+
|
|
377
|
+
[For threads, separate tweets with ---]
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
## Integration Requirements
|
|
381
|
+
|
|
382
|
+
| Integration | Required? | Check |
|
|
383
|
+
|-------------|-----------|-------|
|
|
384
|
+
| Typefully API key | Yes | `typefully.js config:show` |
|
|
385
|
+
| Paper MCP | Only if images needed | `mcp__paper__get_basic_info()` |
|
|
386
|
+
| Brand files | Recommended | `mktg status --json` |
|
|
387
|
+
|
|
388
|
+
If Typefully is not configured, guide setup before Phase 5.
|
|
389
|
+
If Paper MCP is not available, skip Phase 4 (text-only campaign).
|
|
390
|
+
|
|
391
|
+
## Reusable Blocks
|
|
392
|
+
|
|
393
|
+
| Block | Standalone Use |
|
|
394
|
+
|-------|---------------|
|
|
395
|
+
| Phase 1 (Strategy) | Content calendar for any channel |
|
|
396
|
+
| Phase 2 (Write) | Draft posts for manual publishing |
|
|
397
|
+
| Phase 3 (Review) | Audit any written content for AI slop |
|
|
398
|
+
| Phase 4 (Design) | Create visuals for any social content |
|
|
399
|
+
| Phase 5 (Schedule) | Schedule any drafts via Typefully |
|
|
400
|
+
|
|
401
|
+
## Anti-Patterns
|
|
402
|
+
|
|
403
|
+
| Anti-Pattern | Why It Fails | Instead |
|
|
404
|
+
|-------------|-------------|---------|
|
|
405
|
+
| Image on every post | Looks like a content calendar, not a person | Be selective; text-only posts feel authentic |
|
|
406
|
+
| Same card template with different text | Spam in the feed | Each image must have a unique visual concept |
|
|
407
|
+
| Writing from brand doc alone | Sounds like marketing copy, not the person | Calibrate against their actual published posts |
|
|
408
|
+
| Scheduling all at once without review | AI slop gets through | Manual line-by-line audit is non-negotiable |
|
|
409
|
+
| Front-loading announcements | Audience isn't warmed up | Build: awareness → value → tease → announce |
|
|
410
|
+
|
|
411
|
+
## Principles
|
|
412
|
+
|
|
413
|
+
- **Voice over brand** — Match the person's real voice, not the documented brand voice
|
|
414
|
+
- **Selective visuals** — Every image must earn its place; text-only is a valid choice
|
|
415
|
+
- **Batch coherence** — Posts should vary in structure; no two adjacent posts should use the same pattern
|
|
416
|
+
- **AI slop is non-negotiable** — Manual audit every time, no shortcuts
|
|
417
|
+
- **Skills never call skills** — This SKILL.md teaches the agent the sequence; the agent loads each skill
|
|
418
|
+
- **Filesystem is the bus** — Campaign state persists as files, not in conversation
|
|
419
|
+
- **Human gates at every phase** — No runaway agent chains
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Paper MCP Workflow for Social Cards
|
|
2
|
+
|
|
3
|
+
Reference for Phase 4 (DESIGN) of the social campaign pipeline.
|
|
4
|
+
|
|
5
|
+
## When to Create Visuals
|
|
6
|
+
|
|
7
|
+
Not every post gets an image. Use this decision framework:
|
|
8
|
+
|
|
9
|
+
| Post Type | Image? | Why |
|
|
10
|
+
|-----------|--------|-----|
|
|
11
|
+
| Personal observation / hot take | No | Text-only feels more authentic, like a real person thinking |
|
|
12
|
+
| Problem statement / vent | No | Raw text hits harder |
|
|
13
|
+
| Comparison or contrast | Yes | Visual makes the gap/difference tangible |
|
|
14
|
+
| Process or workflow | Yes | Flow diagram is shareable/saveable |
|
|
15
|
+
| Data or metrics | Yes | Numbers as visual anchors |
|
|
16
|
+
| Terminal/code reference | Yes | Terminal mockup shows developer credibility |
|
|
17
|
+
| Product announcement | Yes | Hero card with feature list |
|
|
18
|
+
| Builder update | No | Personal voice, no corporate graphic |
|
|
19
|
+
|
|
20
|
+
The image must add something the text cannot say alone. Never just repeat the tweet text as a graphic.
|
|
21
|
+
|
|
22
|
+
## Image Types
|
|
23
|
+
|
|
24
|
+
| Type | When | Example |
|
|
25
|
+
|------|------|---------|
|
|
26
|
+
| Split comparison | Contrasting two things | "Runs" vs "Works well" with criteria |
|
|
27
|
+
| Terminal mockup | Code/CLI reference | macOS terminal with real commands |
|
|
28
|
+
| Timeline/gap visual | Before/after or evolution | Runtimes (polished) vs Tooling (bare) |
|
|
29
|
+
| Flow diagram | Process or steps | Numbered step cards with arrows |
|
|
30
|
+
| Comparison table | Feature matrix | Two columns with checkmarks vs dashes |
|
|
31
|
+
| Hero announcement | Launch or milestone | Product name, feature list, CTA |
|
|
32
|
+
|
|
33
|
+
## Paper MCP Steps
|
|
34
|
+
|
|
35
|
+
1. `mcp__paper__get_basic_info()` — Check workspace
|
|
36
|
+
2. `mcp__paper__get_font_family_info()` — Verify brand fonts
|
|
37
|
+
3. Create artboards (1200x675 for X+LinkedIn compatibility)
|
|
38
|
+
4. Build designs incrementally (header, content, footer per artboard)
|
|
39
|
+
5. Screenshot and review each design
|
|
40
|
+
6. `mcp__paper__finish_working_on_nodes()` when done
|
|
41
|
+
|
|
42
|
+
## Design System for Social Cards
|
|
43
|
+
|
|
44
|
+
- **Background:** Use project's dark marketing color
|
|
45
|
+
- **Accent:** Use project's primary brand color
|
|
46
|
+
- **Fonts:** Project's brand fonts (display, body, mono)
|
|
47
|
+
- **Layout:** header (logo + domain), content (the visual), footer (accent line + product tag)
|
|
48
|
+
- **Styling:** All inline styles, display: flex, no grid/margins/tables
|