@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,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-rag
|
|
3
|
+
description: >
|
|
4
|
+
Per-business RAG indexes for semantic search over project files (supplier docs, leads, contracts, brand content).
|
|
5
|
+
Use this skill when adding new directories to index, adding new agents, creating new business indexes,
|
|
6
|
+
or troubleshooting project_search / project_index tools. Triggers: "add rag directory", "new rag index",
|
|
7
|
+
"project search", "rag config", "add agent to rag".
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Project RAG System
|
|
11
|
+
|
|
12
|
+
Semantic search over business project files. Agents call `project_search(query)` instead of speculative grep chains across hundreds of files.
|
|
13
|
+
|
|
14
|
+
## Architecture
|
|
15
|
+
|
|
16
|
+
- **Plugin**: `$HOME/.config/opencode/plugins/memory-system/index.ts` (compiled to `dist/index.js`)
|
|
17
|
+
- **Config**: `./config/rag-indexes.json`
|
|
18
|
+
- **Embeddings**: Ollama `nomic-embed-text` (free, local, 768-dim)
|
|
19
|
+
- **Storage**: SQLite + FTS5 per business, at `<business-root>/.rag/memory/memory.sqlite`
|
|
20
|
+
- **Auto-sync**: Every 30 minutes on search calls
|
|
21
|
+
|
|
22
|
+
## Tools
|
|
23
|
+
|
|
24
|
+
- `project_search(query, agent?, maxResults?, sync?)` — semantic search across agent-scoped indexes
|
|
25
|
+
- `project_index(indexName?, agent?)` — sync project files into RAG index
|
|
26
|
+
|
|
27
|
+
## How to Add a New Directory to an Existing Index
|
|
28
|
+
|
|
29
|
+
1. Edit `./config/rag-indexes.json`
|
|
30
|
+
2. Add directory name to the `dirs` array of the target index
|
|
31
|
+
3. Run `project_index(indexName)` or wait for auto-sync (30 min)
|
|
32
|
+
|
|
33
|
+
Example — adding a `partnerships/` dir to nomadixgear:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"indexes": {
|
|
38
|
+
"nomadixgear": {
|
|
39
|
+
"dirs": [
|
|
40
|
+
"business-knowledge",
|
|
41
|
+
"partnerships"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## How to Add a New Agent
|
|
49
|
+
|
|
50
|
+
1. Add agent to `agent_access` in `config/rag-indexes.json` with their allowed indexes
|
|
51
|
+
2. Create a `.rag-agent` file in the agent's workspace directory containing their agent ID (one word)
|
|
52
|
+
|
|
53
|
+
Example — adding a new agent called `scout` with nomadixgear access:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"agent_access": {
|
|
58
|
+
"scout": ["nomadixgear"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Then: `echo "scout" > /path/to/scout/workspace/.rag-agent`
|
|
64
|
+
|
|
65
|
+
For agents that need all indexes: `"scout": { "all": true }`
|
|
66
|
+
|
|
67
|
+
For path filtering (agent only sees specific subdirs of an index):
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"agent_filters": {
|
|
72
|
+
"scout": {
|
|
73
|
+
"newsletter": ["brands/specific-brand"]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## How to Create a New Business Index
|
|
80
|
+
|
|
81
|
+
1. Add entry to `indexes` in `config/rag-indexes.json`:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"indexes": {
|
|
86
|
+
"newbusiness": {
|
|
87
|
+
"root": "/Users/Shared/newbusiness",
|
|
88
|
+
"dirs": ["docs", "clients", "contracts"],
|
|
89
|
+
"root_files": true,
|
|
90
|
+
"extensions": [".md", ".txt", ".csv"],
|
|
91
|
+
"exclude": ["node_modules", ".git", "*.js", "*.ts", "memory/"],
|
|
92
|
+
"max_file_size_kb": 512
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
2. Grant access in `agent_access`
|
|
99
|
+
3. Run `project_index("newbusiness")` to build the index
|
|
100
|
+
|
|
101
|
+
## Agent Access Map
|
|
102
|
+
|
|
103
|
+
| Agent | Access |
|
|
104
|
+
|-------|--------|
|
|
105
|
+
| kestrel, hermes | All indexes |
|
|
106
|
+
| atlas | nomadixgear + newsletter (filtered to brands/nomadixgear.com + brands/enchantents) |
|
|
107
|
+
| skye | nomadixgear only |
|
|
108
|
+
| paco | nomadixgear only |
|
|
109
|
+
| rai | nomadixgear only |
|
|
110
|
+
| harper | newsletter only |
|
|
111
|
+
|
|
112
|
+
## Agent Identity Resolution
|
|
113
|
+
|
|
114
|
+
Agents are identified in this order:
|
|
115
|
+
1. Explicit `agent` parameter in tool call
|
|
116
|
+
2. `.rag-agent` file in workspace directory (walks up max 5 levels)
|
|
117
|
+
3. Workspace path mapping (hardcoded in plugin)
|
|
118
|
+
4. `RAG_AGENT_ID` environment variable
|
|
119
|
+
|
|
120
|
+
## Gotchas
|
|
121
|
+
|
|
122
|
+
- **Chunk size**: Capped at 6000 chars for Ollama's context window. If chunks exceed this, embeddings fail silently and fall back to FTS5-only.
|
|
123
|
+
- **Large files**: `max_file_size_kb: 512` skips files over 512KB. Adjust per index if needed.
|
|
124
|
+
- **No PDF extraction**: Only indexes text files (.md, .txt, .csv). PDFs need external extraction first.
|
|
125
|
+
- **Index path**: The SQLite DB lives at `<root>/.rag/memory/memory.sqlite` (NOT `<root>/.rag/memory.sqlite`).
|
|
126
|
+
- **Duplicate files**: Never index the same files in multiple indexes. Use `agent_access` to share indexes across agents.
|
|
127
|
+
- **Rebuild**: To fully reindex (e.g. after config changes), delete `<root>/.rag/memory/` then run `project_index`.
|
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quality-gate
|
|
3
|
+
description: "ICP-relative content quality gate. Two modes: 1."
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
license: Internal use only
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Quality Gate — ICP-Relative Content Scoring
|
|
9
|
+
|
|
10
|
+
This skill is called by writing skills AFTER they finish a draft. It spawns a fresh subagent to review the content with clean context — no writer bias, no accumulated context pollution.
|
|
11
|
+
|
|
12
|
+
**v2.0 adds tournament mode**: generate multiple copy variants, run them through 5 distinct judge personas, pick the winner, then pass the winner through the standard quality gate.
|
|
13
|
+
|
|
14
|
+
## Architecture
|
|
15
|
+
|
|
16
|
+
### Awareness Gate Integration
|
|
17
|
+
|
|
18
|
+
Quality-gate checks that the content matches the target audience's awareness level. The writing skill MUST pass the awareness level as part of the submission context. If awareness level is not provided, flag it as a quality gap.
|
|
19
|
+
|
|
20
|
+
### Standard Mode
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
[Writing Skill] finishes draft
|
|
24
|
+
→ saves draft to file
|
|
25
|
+
→ spawns subagent with quality-gate prompt
|
|
26
|
+
→ subagent reads evergreen + brand + draft from scratch
|
|
27
|
+
→ subagent scores, returns JSON result
|
|
28
|
+
→ writing skill receives score
|
|
29
|
+
→ PASS: present to Jairo
|
|
30
|
+
→ FAIL: rewrite + re-run (max 3)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Tournament Mode
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
[Writing Skill] generates 3-5 variants
|
|
37
|
+
→ saves all variants to tournament directory
|
|
38
|
+
→ spawns tournament subagent with tournament prompt
|
|
39
|
+
→ subagent reads evergreen + brand + ALL variants from scratch
|
|
40
|
+
→ subagent runs 5 judge personas against all variants
|
|
41
|
+
→ returns ranked results + winner
|
|
42
|
+
→ winner enters standard quality-gate flow
|
|
43
|
+
→ PASS: present to Jairo
|
|
44
|
+
→ FAIL: rewrite winner + re-run quality-gate (max 3)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## How to Call This Skill
|
|
48
|
+
|
|
49
|
+
Writing skills call this by spawning a `build` subagent with the appropriate prompt template below.
|
|
50
|
+
|
|
51
|
+
### Standard Mode
|
|
52
|
+
|
|
53
|
+
Required inputs:
|
|
54
|
+
- **draft_path**: absolute path to the saved draft file
|
|
55
|
+
- **mode**: one of `blog`, `social`, `x`, `copy`, `cold-email`, `hook`, `newsletter`
|
|
56
|
+
- **original_prompt**: the writing prompt that started the task (used to detect funnel stage)
|
|
57
|
+
- **attempt**: current attempt number (1, 1, 2, or 3)
|
|
58
|
+
- **brand_context**: JSON object with ICP, pains, positioning angles, offer, voice (MANDATORY for x/social)
|
|
59
|
+
|
|
60
|
+
### Tournament Mode (DEFAULT for X/social)
|
|
61
|
+
|
|
62
|
+
Required inputs:
|
|
63
|
+
- **tournament_dir**: absolute path to directory containing variant files (named `variant-1.md`, `variant-2.md`, etc.)
|
|
64
|
+
- **variant_count**: number of variants (3-5)
|
|
65
|
+
- **mode**: one of `copy`, `hook`, `cold-email`, `social` (tournament works best for short-form)
|
|
66
|
+
- **original_prompt**: the writing prompt that started the task
|
|
67
|
+
- **attempt**: current attempt number (1, 2, or 3)
|
|
68
|
+
- **brand_context**: JSON object with ICP, pains, positioning angles, offer, voice (MANDATORY)
|
|
69
|
+
|
|
70
|
+
## Subagent Spawn Template
|
|
71
|
+
|
|
72
|
+
Use the `Task` tool to spawn a `build` subagent with this exact prompt:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
You are a quality gate reviewer. Your job is to evaluate whether a piece of written content
|
|
76
|
+
would resonate with the target buyer at the correct funnel stage.
|
|
77
|
+
|
|
78
|
+
## Your Task
|
|
79
|
+
|
|
80
|
+
1. READ THE BRAND CONTEXT BELOW — this is your world. Do not search for files. This IS the truth.
|
|
81
|
+
|
|
82
|
+
BRAND CONTEXT:
|
|
83
|
+
{brand_context_json}
|
|
84
|
+
|
|
85
|
+
2. Read the draft file at: {draft_path}
|
|
86
|
+
|
|
87
|
+
3. Read the original writing prompt below and determine the funnel stage:
|
|
88
|
+
- TOFU (awareness): topic intros, "what is X", problem awareness, trend content
|
|
89
|
+
- MOFU (consideration): comparisons, "why X over Y", deep dives, how-to guides
|
|
90
|
+
- BOFU (decision): pricing, demos, case studies, "ready to buy" content
|
|
91
|
+
|
|
92
|
+
4. Roleplay as the ICP at that funnel stage and score the draft
|
|
93
|
+
|
|
94
|
+
## Original Writing Prompt
|
|
95
|
+
{original_prompt}
|
|
96
|
+
|
|
97
|
+
## Content Mode
|
|
98
|
+
{mode}
|
|
99
|
+
|
|
100
|
+
## Attempt Number
|
|
101
|
+
{attempt}
|
|
102
|
+
|
|
103
|
+
## Scoring Protocol
|
|
104
|
+
|
|
105
|
+
You ARE the target buyer. Score the **entire piece as one unit**. One score per dimension. Do NOT score individual posts/tweets separately and average them. Read the whole thing, form one impression, score that impression. Score HARSHLY. A 7 means mediocre. Most content should score 4-6. Only genuinely exceptional content scores 8+.
|
|
106
|
+
|
|
107
|
+
### Dimensions
|
|
108
|
+
|
|
109
|
+
**Stop-scroll** — "Would I pause my feed/inbox for this?"
|
|
110
|
+
- 10 = I screenshotted this to send to someone. Physically stopped mid-scroll.
|
|
111
|
+
- 8 = genuinely interesting, I read the whole thing
|
|
112
|
+
- 6 = mildly interesting but I've seen this take before
|
|
113
|
+
- 4 = glanced and kept scrolling
|
|
114
|
+
- 2 = actively annoying
|
|
115
|
+
- AUTO-FAIL (score 3): if the hook uses a statistic I've already seen 10 times ("97% of businesses waste...")
|
|
116
|
+
|
|
117
|
+
**Relevance** — "Is this talking to MY specific problem at MY stage?"
|
|
118
|
+
- 10 = this person read my mind, they know exactly what I'm dealing with
|
|
119
|
+
- 8 = clearly understands my world, specific details hit
|
|
120
|
+
- 6 = mostly relevant but some generic moments
|
|
121
|
+
- 4 = vaguely related but not my priority
|
|
122
|
+
- 2 = not for me
|
|
123
|
+
|
|
124
|
+
**Trust** — "Does this person understand my world?"
|
|
125
|
+
- 10 = they've clearly been in my shoes, the details prove it
|
|
126
|
+
- 8 = strong specificity, I believe they know what they're talking about
|
|
127
|
+
- 6 = seems knowledgeable but some generic claims
|
|
128
|
+
- 4 = sounds like they read a whitepaper about my industry
|
|
129
|
+
- 2 = obviously written by someone who's never done this
|
|
130
|
+
|
|
131
|
+
**Next step** — "Does this move me forward or waste my time?"
|
|
132
|
+
- 10 = I know exactly what to do next and I want to do it now
|
|
133
|
+
- 8 = clear, specific, actionable takeaway
|
|
134
|
+
- 6 = useful but vague — "pick one process" without naming which one or how
|
|
135
|
+
- 4 = interesting but no clear action
|
|
136
|
+
- 2 = read it, learned nothing, time wasted
|
|
137
|
+
- AUTO-FAIL (score 3): vague CTA like "start today for free" or "you can act on it"
|
|
138
|
+
|
|
139
|
+
**AI Slop** — "Does this sound like a robot wrote it?"
|
|
140
|
+
- 10 = sounds like a real person talking to me, zero AI tells
|
|
141
|
+
- 8 = human, maybe one slightly off phrase
|
|
142
|
+
- 6 = a few AI tells but mostly readable
|
|
143
|
+
- 4 = noticeable AI patterns
|
|
144
|
+
- 2 = clearly AI-generated
|
|
145
|
+
- AUTO-FAIL (score 3) for ANY of these AI tells:
|
|
146
|
+
- Manufactured aphorisms: "A seat license is a purchase. A workflow is an asset."
|
|
147
|
+
- Manufactured labels: "Anti-consulting playbook"
|
|
148
|
+
- Fake wisdom: "One process. That's the whole story."
|
|
149
|
+
- Corporate wit: "OpenAI spent $150M to reach that conclusion"
|
|
150
|
+
- Generic closes: "You can start today for free"
|
|
151
|
+
- Padded threads: a single-tweet insight stretched to 6 tweets
|
|
152
|
+
- Every tweet the same length/rhythm (AI uniformity)
|
|
153
|
+
|
|
154
|
+
### Weights by Funnel Stage
|
|
155
|
+
|
|
156
|
+
| Dimension | TOFU | MOFU | BOFU |
|
|
157
|
+
|------------|------|------|------|
|
|
158
|
+
| Stop-scroll | 3x | 2x | 1x |
|
|
159
|
+
| Relevance | 2x | 3x | 3x |
|
|
160
|
+
| Trust | 1x | 2x | 3x |
|
|
161
|
+
| Next step | 2x | 3x | 3x |
|
|
162
|
+
| AI Slop | 2x | 2x | 2x |
|
|
163
|
+
|
|
164
|
+
### POSITIONING VALIDATION (MANDATORY for X/social)
|
|
165
|
+
|
|
166
|
+
The draft MUST align with at least ONE positioning angle from brand context. Check:
|
|
167
|
+
- Angle 1: Intelligence Multiplier (AI amplifies, doesn't replace)
|
|
168
|
+
- Angle 2: Order of Operations (stop buying tools, start deploying systems)
|
|
169
|
+
- Angle 3: Automate the Tedious to Inhabit the Miraculous (mission)
|
|
170
|
+
- Angle 4: Pain Pill Positioning (what does this save them from NOW?)
|
|
171
|
+
- Angle 5: Hacker-Farmer Identity (generalist who refuses to be a slave)
|
|
172
|
+
|
|
173
|
+
If NO alignment → Relevance score = 1 (auto-fail).
|
|
174
|
+
|
|
175
|
+
### Pass/Fail Rules
|
|
176
|
+
|
|
177
|
+
- **PASS**: weighted average >= 8.0 AND no single dimension below 6.0 AND ai-slop >= 7 AND no auto-fail triggered
|
|
178
|
+
- **FAIL**: anything else
|
|
179
|
+
|
|
180
|
+
### Hard Fail Rules (score 1 on the triggering dimension)
|
|
181
|
+
|
|
182
|
+
These override all other scores. Any single one = automatic FAIL regardless of weighted average:
|
|
183
|
+
|
|
184
|
+
1. **Thread bloat**: the content is a single tweet stretched to 3+ tweets with padding, tangents, or delayed payoff. If removing any tweet doesn't lose value, FAIL. Score stop-scroll = 1.
|
|
185
|
+
2. **Fake data**: the content cites a statistic or case study that is vague, unverifiable, or feels fabricated. Score trust = 1.
|
|
186
|
+
3. **Link in body**: any link in the thread body (not reply). Score next-step = 1.
|
|
187
|
+
4. **Brand voice kill**: the content uses a banned word, banned pattern, or violates a hard brand rule. Score ai-slop = 1.
|
|
188
|
+
5. **Thread structure failure**: tweets don't build on each other. The reader can read them in any order and it makes the same amount of sense. Score relevance = 1.
|
|
189
|
+
6. **Hook bait-and-switch**: the hook promises something the thread never delivers. Score trust = 1.
|
|
190
|
+
7. **Google spam-policy tripwire (blog/newsletter modes)**: the content reads as made-for-search-engines per `./guidelines.md` — summarizing other sources without added value, unanswerable promises (fake "confirmed" dates), keyword-stuffed link anchors, fake freshness dates, or a page that would look like one of a near-identical batch. Score trust = 1.
|
|
191
|
+
|
|
192
|
+
### Output Format
|
|
193
|
+
|
|
194
|
+
Print ONLY valid JSON, nothing else:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"passed": true/false,
|
|
199
|
+
"attempt": {attempt_number},
|
|
200
|
+
"funnel_stage": "TOFU|MOFU|BOFU",
|
|
201
|
+
"icp_profile": "Brief description of who you roleplayed as",
|
|
202
|
+
"positioning_aligned": true/false,
|
|
203
|
+
"aligned_angles": ["Angle 2"],
|
|
204
|
+
"scores": {
|
|
205
|
+
"stop-scroll": 0-10,
|
|
206
|
+
"relevance": 0-10,
|
|
207
|
+
"trust": 0-10,
|
|
208
|
+
"next-step": 0-10,
|
|
209
|
+
"ai-slop": 0-10
|
|
210
|
+
},
|
|
211
|
+
"weighted_average": 0.0,
|
|
212
|
+
"rewrite_instructions": "If failed: specific, actionable feedback. Name the exact lines/phrases that failed and what to replace them with. If passed: empty string."
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Rewrite Instructions Quality Standard
|
|
217
|
+
|
|
218
|
+
Bad rewrite instructions: "Make the hook more engaging."
|
|
219
|
+
Good rewrite instructions: "Stop-scroll scored 4: the hook 'Are you looking for glamping solutions?' is a generic question. Replace with a scene: '$8.75M MXN from 34 canvas tents — that's what LJS Chichikan reported after year one.' AI slop scored 3: two em dashes on line 4 and line 12, 'testament to' on line 7, rule-of-three pattern in paragraph 3. Strip all."
|
|
220
|
+
|
|
221
|
+
Be specific. Quote the failing text. Suggest concrete replacements.
|
|
222
|
+
|
|
223
|
+
## Important
|
|
224
|
+
- You MUST read the actual draft file. Do not guess its contents.
|
|
225
|
+
- You MUST use the brand context provided. Do not invent an ICP.
|
|
226
|
+
- Score harshly. A 7 means genuinely good, not "acceptable."
|
|
227
|
+
- If the draft is obviously AI-generated, AI slop score should be 3 or below regardless of other dimensions.
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Tournament Subagent Architecture
|
|
231
|
+
|
|
232
|
+
Tournament mode is now the **DEFAULT for X threads** (mode: `x` or `social`). It spawns **5 parallel subagents**, one per judge persona. Each subagent loads its persona from a file, reads the brand context (passed directly — no file walking), reads ALL variants, and scores independently. A final collector step aggregates results and ranks.
|
|
233
|
+
|
|
234
|
+
### Why Parallel Subagents (Mandatory for X)
|
|
235
|
+
|
|
236
|
+
- **True isolation**: Each judge has clean context — no cross-contamination between personas.
|
|
237
|
+
- **No simulation**: A single subagent "pretending" to be 5 people produces correlated scores. Real judges disagree.
|
|
238
|
+
- **Scalable**: Adding a 6th judge = adding a persona file + one more subagent. No prompt changes.
|
|
239
|
+
|
|
240
|
+
### Persona Files
|
|
241
|
+
|
|
242
|
+
Each judge persona is defined in a standalone file at:
|
|
243
|
+
```
|
|
244
|
+
~/.claude/skills/quality-gate/judge-personas/{name}.md
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Available personas:
|
|
248
|
+
| Persona | File | Focus |
|
|
249
|
+
|---------|------|-------|
|
|
250
|
+
| The Skeptic | `skeptic.md` | Trust + AI Slop |
|
|
251
|
+
| The Scanner | `scanner.md` | Stop-scroll |
|
|
252
|
+
| The Buyer | `buyer.md` | Relevance + Next step |
|
|
253
|
+
| The Expert | `expert.md` | Trust + AI Slop |
|
|
254
|
+
| The Outsider | `outsider.md` | Relevance + Next step |
|
|
255
|
+
|
|
256
|
+
### Tournament Flow (DEFAULT for X/social)
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
1. Writing skill generates draft → saves to file
|
|
260
|
+
2. Quality gate ORCHESTRATOR reads evergreen.md + brand assets → extracts brand context
|
|
261
|
+
3. Orchestrator spawns 5 PARALLEL subagents (one per persona):
|
|
262
|
+
- Each receives: persona file + brand context (ICP, pains, positioning, offer, voice) + draft + original prompt
|
|
263
|
+
- Each scores independently using funnel-stage weights
|
|
264
|
+
- Each returns JSON with scores + notes
|
|
265
|
+
4. Orchestrator collects all 5 results
|
|
266
|
+
5. Calculates total score per dimension (sum across all judges)
|
|
267
|
+
6. Ranks, applies winner edits, then runs STANDARD quality-gate on winner
|
|
268
|
+
7. PASS → present to Jairo | FAIL → rewrite (max 3 loops)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Judge Subagent Spawn Template (Updated)
|
|
272
|
+
|
|
273
|
+
Use the `Task` tool to spawn **5 parallel** `build` subagents with this prompt. Each gets a different persona file:
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
You are a tournament judge. Your personality, biases, and scoring calibration are defined in your persona file.
|
|
277
|
+
|
|
278
|
+
## Your Task
|
|
279
|
+
|
|
280
|
+
1. Read your persona file at: {persona_file_path}
|
|
281
|
+
This file defines WHO you are, what you care about, and how you score. Internalize it fully.
|
|
282
|
+
|
|
283
|
+
2. READ THE BRAND CONTEXT BELOW — this is your world. Do not search for files. This IS the truth.
|
|
284
|
+
|
|
285
|
+
BRAND CONTEXT:
|
|
286
|
+
{brand_context_json}
|
|
287
|
+
|
|
288
|
+
3. Read the draft file at: {draft_path}
|
|
289
|
+
|
|
290
|
+
4. Read the original writing prompt and determine the funnel stage:
|
|
291
|
+
- TOFU (awareness): topic intros, "what is X", problem awareness, trend content
|
|
292
|
+
- MOFU (consideration): comparisons, "why X over Y", deep dives, how-to guides
|
|
293
|
+
- BOFU (decision): pricing, demos, case studies, "ready to buy" content
|
|
294
|
+
|
|
295
|
+
5. Score the draft as YOUR persona would, using the 5 standard dimensions.
|
|
296
|
+
|
|
297
|
+
6. Use the funnel-stage weights from the standard scoring protocol.
|
|
298
|
+
|
|
299
|
+
7. Return your scores as JSON.
|
|
300
|
+
|
|
301
|
+
## Original Writing Prompt
|
|
302
|
+
{original_prompt}
|
|
303
|
+
|
|
304
|
+
## Content Mode
|
|
305
|
+
{mode}
|
|
306
|
+
|
|
307
|
+
## Scoring Dimensions
|
|
308
|
+
|
|
309
|
+
Score each dimension 0-10 for the ENTIRE piece as one unit. Do NOT score individual posts/tweets and average. Read the whole thing, score your impression of the complete piece. Use the calibration from your persona file:
|
|
310
|
+
|
|
311
|
+
- **Stop-scroll** — "Would I pause my feed/inbox for this?"
|
|
312
|
+
- **Relevance** — "Is this talking to MY specific problem at MY stage?"
|
|
313
|
+
- **Trust** — "Does this person understand my world?"
|
|
314
|
+
- **Next step** — "Does this move me forward or waste my time?"
|
|
315
|
+
- **AI Slop** — "Does this sound like a robot wrote it?"
|
|
316
|
+
|
|
317
|
+
## Funnel-Stage Weights
|
|
318
|
+
|
|
319
|
+
| Dimension | TOFU | MOFU | BOFU |
|
|
320
|
+
|------------|------|------|------|
|
|
321
|
+
| Stop-scroll | 3x | 2x | 1x |
|
|
322
|
+
| Relevance | 2x | 3x | 3x |
|
|
323
|
+
| Trust | 1x | 2x | 3x |
|
|
324
|
+
| Next step | 2x | 3x | 3x |
|
|
325
|
+
| AI Slop | 2x | 2x | 2x |
|
|
326
|
+
|
|
327
|
+
## POSITIONING VALIDATION (MANDATORY for X/social)
|
|
328
|
+
|
|
329
|
+
The draft MUST align with at least ONE positioning angle from brand context. Check:
|
|
330
|
+
- Angle 1: Intelligence Multiplier (AI amplifies, doesn't replace)
|
|
331
|
+
- Angle 2: Order of Operations (stop buying tools, start deploying systems)
|
|
332
|
+
- Angle 3: Automate the Tedious to Inhabit the Miraculous (mission)
|
|
333
|
+
- Angle 4: Pain Pill Positioning (what does this save them from NOW?)
|
|
334
|
+
- Angle 5: Hacker-Farmer Identity (generalist who refuses to be a slave)
|
|
335
|
+
|
|
336
|
+
If NO alignment → Relevance score = 1 (auto-fail).
|
|
337
|
+
|
|
338
|
+
## Output Format
|
|
339
|
+
|
|
340
|
+
Print ONLY valid JSON, nothing else:
|
|
341
|
+
|
|
342
|
+
```json
|
|
343
|
+
{
|
|
344
|
+
"judge": "{persona_name}",
|
|
345
|
+
"funnel_stage": "TOFU|MOFU|BOFU",
|
|
346
|
+
"positioning_aligned": true/false,
|
|
347
|
+
"aligned_angles": ["Angle 2"],
|
|
348
|
+
"scores": {
|
|
349
|
+
"stop-scroll": 0-10,
|
|
350
|
+
"relevance": 0-10,
|
|
351
|
+
"trust": 0-10,
|
|
352
|
+
"next-step": 0-10,
|
|
353
|
+
"ai-slop": 0-10
|
|
354
|
+
},
|
|
355
|
+
"weighted_avg": 0.0,
|
|
356
|
+
"notes": "Brief note from your persona's perspective",
|
|
357
|
+
"specific_fails": ["Exact quote of failing line", "What to replace with"]
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
## Aggregation Step (Orchestrator Does This)
|
|
362
|
+
|
|
363
|
+
After all 5 judge subagents complete, the orchestrator:
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
For each dimension:
|
|
367
|
+
total_score = sum(judge.scores[dimension] for judge in all_judges)
|
|
368
|
+
|
|
369
|
+
total_weighted_avg = sum(judge.weighted_avg for judge in all_judges) / 5
|
|
370
|
+
|
|
371
|
+
PASS if: total_weighted_avg >= 7.5 AND no dimension average < 5.5
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### Aggregation Output Format
|
|
375
|
+
|
|
376
|
+
The orchestrator produces this JSON:
|
|
377
|
+
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"mode": "tournament",
|
|
381
|
+
"funnel_stage": "TOFU|MOFU|BOFU",
|
|
382
|
+
"icp_profile": "Brief description from brand context",
|
|
383
|
+
"positioning_angles": ["Angle 1", "Angle 2"],
|
|
384
|
+
"dimension_averages": {
|
|
385
|
+
"stop-scroll": 7.2,
|
|
386
|
+
"relevance": 8.0,
|
|
387
|
+
"trust": 7.6,
|
|
388
|
+
"next-step": 7.4,
|
|
389
|
+
"ai-slop": 7.8
|
|
390
|
+
},
|
|
391
|
+
"weighted_average": 7.6,
|
|
392
|
+
"passed": true,
|
|
393
|
+
"judge_disagreements": "Where judges disagreed most and why",
|
|
394
|
+
"winner_strengths": "What the winner does better across judges",
|
|
395
|
+
"winner_weaknesses": "What the winner could improve before standard quality-gate",
|
|
396
|
+
"recommended_edits": "Specific edits to apply"
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
## Writing Skill Integration Pattern
|
|
401
|
+
|
|
402
|
+
### Standard Mode
|
|
403
|
+
|
|
404
|
+
Writing skills should add this as their FINAL STEP:
|
|
405
|
+
|
|
406
|
+
```markdown
|
|
407
|
+
## FINAL STEP: Quality Gate (MANDATORY)
|
|
408
|
+
|
|
409
|
+
1. Save your complete draft to a file (e.g., `content/drafts/{slug}.md`)
|
|
410
|
+
2. Spawn a `build` subagent using the Task tool with the quality-gate prompt template
|
|
411
|
+
3. Pass: draft_path, mode, original_prompt, attempt number
|
|
412
|
+
4. Parse the JSON result from the subagent
|
|
413
|
+
5. If FAIL and attempt < 3:
|
|
414
|
+
- Rewrite the draft addressing the specific rewrite_instructions
|
|
415
|
+
- Save the new draft
|
|
416
|
+
- Spawn another subagent (attempt + 1)
|
|
417
|
+
6. If FAIL and attempt = 3:
|
|
418
|
+
- Present to Jairo with all score reports attached
|
|
419
|
+
- Say: "Couldn't pass quality gate after 3 attempts. Here's what's wrong."
|
|
420
|
+
7. If PASS:
|
|
421
|
+
- Present to Jairo as normal
|
|
422
|
+
8. NEVER present a draft that hasn't passed quality gate (except after 3 failed attempts)
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Tournament Mode
|
|
426
|
+
|
|
427
|
+
Writing skills that support tournament mode add this BEFORE the standard quality-gate:
|
|
428
|
+
|
|
429
|
+
```markdown
|
|
430
|
+
## STEP N: Copywriting Tournament (OPTIONAL — when generating multiple variants)
|
|
431
|
+
|
|
432
|
+
1. Generate 3-5 variants of the content (different hooks, CTAs, angles, or approaches)
|
|
433
|
+
2. Save each variant to a tournament directory:
|
|
434
|
+
- `content/tournaments/{topic}/variant-1.md`
|
|
435
|
+
- `content/tournaments/{topic}/variant-2.md`
|
|
436
|
+
- ... up to variant-{N}.md
|
|
437
|
+
3. Spawn 5 PARALLEL `build` subagents using the Task tool (one per judge persona):
|
|
438
|
+
- Subagent 1: persona_file = judge-personas/skeptic.md
|
|
439
|
+
- Subagent 2: persona_file = judge-personas/scanner.md
|
|
440
|
+
- Subagent 3: persona_file = judge-personas/buyer.md
|
|
441
|
+
- Subagent 4: persona_file = judge-personas/expert.md
|
|
442
|
+
- Subagent 5: persona_file = judge-personas/outsider.md
|
|
443
|
+
- Each gets: tournament_dir, variant_count, mode, original_prompt
|
|
444
|
+
4. Collect all 5 JSON results
|
|
445
|
+
5. Aggregate: sum weighted_avg across judges per variant → rank → pick winner
|
|
446
|
+
6. Apply the recommended_edits from the aggregation to the winner
|
|
447
|
+
7. Save the edited winner as the draft file
|
|
448
|
+
8. Proceed to standard quality-gate with the winner as the draft
|
|
449
|
+
|
|
450
|
+
## FINAL STEP: Quality Gate (MANDATORY — runs on tournament winner)
|
|
451
|
+
[Same as standard mode above]
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### When to Use Tournament Mode
|
|
455
|
+
|
|
456
|
+
Tournament mode is most valuable for:
|
|
457
|
+
- **Landing page copy** — hero sections, CTAs, headlines
|
|
458
|
+
- **Outreach emails** — subject lines + opening lines
|
|
459
|
+
- **Social hooks** — first lines of tweets, LinkedIn posts
|
|
460
|
+
- **Ad copy** — headline + body variants
|
|
461
|
+
- **Product descriptions** — e-commerce copy
|
|
462
|
+
|
|
463
|
+
Tournament mode is NOT useful for:
|
|
464
|
+
- **Long-form blog posts** — too expensive to generate 5 full articles
|
|
465
|
+
- **Technical documentation** — no creative variance needed
|
|
466
|
+
- **Reports/analyses** — accuracy matters more than persuasion
|
|
467
|
+
|
|
468
|
+
## Mode-Specific Notes
|
|
469
|
+
|
|
470
|
+
### blog mode
|
|
471
|
+
- Reads full article. Scores all dimensions equally weighted toward depth.
|
|
472
|
+
- Trust scores higher if specific data/numbers cited.
|
|
473
|
+
- Google compliance: check against `./guidelines.md` (people-first criteria + spam tripwires, derived from Google's official Search Central docs). Original information/research, clear sourcing, and first-hand evidence raise Trust. Any spam-policy tripwire (Hard Fail Rule 7) is an auto-fail.
|
|
474
|
+
|
|
475
|
+
### social / x mode
|
|
476
|
+
- Read the ENTIRE thread/article as ONE piece. Score the complete piece holistically.
|
|
477
|
+
- If format is a thread: score the thread as a single unit. Does the whole thread work? Does it build? Is the payoff delivered? Are there wasted tweets?
|
|
478
|
+
- Stop-scroll: score the opening tweet AND whether the thread earns the read-through.
|
|
479
|
+
- Relevance: does the entire thread speak to the ICP's problem?
|
|
480
|
+
- Trust: does the full piece prove the author knows the world?
|
|
481
|
+
- Next-step: does the reader finish the thread knowing what to do?
|
|
482
|
+
- AI-slop: any AI tell anywhere in the thread = penalty. Uniform rhythm across tweets = penalty. Manufactured aphorisms anywhere = penalty.
|
|
483
|
+
- Format check (MANDATORY): Is this the right format? If the core insight fits in one tweet but the content is a 3+ tweet thread, FAIL. Score stop-scroll = 1.
|
|
484
|
+
- NO averaging individual tweets. One score per dimension for the whole piece.
|
|
485
|
+
|
|
486
|
+
### copy mode
|
|
487
|
+
- Relevance and next-step weighted heaviest — copy must convert.
|
|
488
|
+
- Trust scored on specificity of claims (no "industry-leading" nonsense).
|
|
489
|
+
|
|
490
|
+
### cold-email mode
|
|
491
|
+
- Stop-scroll is the subject line. If subject doesn't land, nothing else matters.
|
|
492
|
+
- Relevance scored on personalization depth (did they research the lead?).
|
|
493
|
+
|
|
494
|
+
### hook mode
|
|
495
|
+
- ONLY scores stop-scroll and ai-slop. Other dimensions irrelevant.
|
|
496
|
+
- A hook has one job: make you stop. Score accordingly.
|
|
497
|
+
|
|
498
|
+
### newsletter mode
|
|
499
|
+
- Trust and next-step weighted heaviest — newsletter readers are already warm.
|
|
500
|
+
- AI slop check is strictest — subscribers notice voice inconsistency immediately.
|
|
501
|
+
|
|
502
|
+
### tournament mode
|
|
503
|
+
- Works with any content type but best for `copy`, `hook`, `cold-email`, `social` modes.
|
|
504
|
+
- **5 parallel subagents** — one per judge persona, each loading its persona from `judge-personas/{name}.md`.
|
|
505
|
+
- To add a new judge: create a persona file in `judge-personas/`, add one more parallel subagent spawn. No prompt changes needed.
|
|
506
|
+
- Tournament judges use the same funnel-stage weights as standard mode.
|
|
507
|
+
- After tournament completes, the winner MUST still pass standard quality-gate. Tournament selects the best variant — standard gate validates it's actually good enough.
|
|
508
|
+
- If the tournament winner fails standard quality-gate, apply the rewrite instructions and re-run standard gate only (do not re-run the full tournament).
|
|
509
|
+
- 5 parallel subagents = ~2-3 minutes wall clock (they run concurrently). Sequential would be ~10 minutes.
|
|
510
|
+
- Judges SHOULD disagree. If all 5 rank variants identically, the personas may need more differentiation in their files.
|
|
511
|
+
- Each judge's persona file contains: identity, psychological profile, biases, scoring focus, scoring calibration rubric, example accept/reject reactions. The subagent reads this file first — it defines who they ARE.
|
|
512
|
+
|
|
513
|
+
## Anti-Patterns
|
|
514
|
+
|
|
515
|
+
- Do NOT call quality-gate before running humanizer. Humanizer runs first, then quality-gate scores the cleaned draft.
|
|
516
|
+
- Do NOT skip quality-gate because "it sounds good." That's exactly the bias this skill prevents.
|
|
517
|
+
- Do NOT modify the scoring thresholds. Current thresholds are calibrated to Jairo's bar: "so good Jai wants to read and share it."
|
|
518
|
+
- Do NOT present scores to Jairo as a marketing tool ("look, it scored 8.2!"). Scores are internal. Jairo sees the draft, not the scorecard.
|
|
519
|
+
- Do NOT pass content that would make Jairo embarrassed to put his name on it. If the draft uses generic stats, manufactured wisdom, padded threads, vague CTAs, or sounds like AI wrote it — FAIL, even if the weighted average looks close.
|