@jairodri/huckleberry-cli 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +347 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Eval Guide
|
|
2
|
+
|
|
3
|
+
How to write eval criteria that actually improve your skills instead of giving you false confidence.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## the golden rule
|
|
8
|
+
|
|
9
|
+
Every eval must be a yes/no question. Not a scale. Not a vibe check. Binary.
|
|
10
|
+
|
|
11
|
+
Why: Scales compound variability. If you have 4 evals scored 1-7, your total score has massive variance across runs. Binary evals give you a reliable signal.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## good evals vs bad evals
|
|
16
|
+
|
|
17
|
+
### Text/copy skills (newsletters, tweets, emails, landing pages)
|
|
18
|
+
|
|
19
|
+
**Bad evals:**
|
|
20
|
+
- "Is the writing good?" (too vague — what's "good"?)
|
|
21
|
+
- "Rate the engagement potential 1-10" (scale = unreliable)
|
|
22
|
+
- "Does it sound like a human?" (subjective, inconsistent scoring)
|
|
23
|
+
|
|
24
|
+
**Good evals:**
|
|
25
|
+
- "Does the output contain zero phrases from this banned list: [game-changer, here's the kicker, the best part, level up]?" (binary, specific)
|
|
26
|
+
- "Does the opening sentence reference a specific time, place, or sensory detail?" (binary, checkable)
|
|
27
|
+
- "Is the output between 150-400 words?" (binary, measurable)
|
|
28
|
+
- "Does it end with a specific CTA that tells the reader exactly what to do next?" (binary, structural)
|
|
29
|
+
|
|
30
|
+
### Visual/design skills (diagrams, images, slides)
|
|
31
|
+
|
|
32
|
+
**Bad evals:**
|
|
33
|
+
- "Does it look professional?" (subjective)
|
|
34
|
+
- "Rate the visual quality 1-5" (scale)
|
|
35
|
+
- "Is the layout good?" (vague)
|
|
36
|
+
|
|
37
|
+
**Good evals:**
|
|
38
|
+
- "Is all text in the image legible with no truncated or overlapping words?" (binary, specific)
|
|
39
|
+
- "Does the color palette use only soft/pastel tones with no neon, bright red, or high-saturation colors?" (binary, checkable)
|
|
40
|
+
- "Is the layout linear — flowing either left-to-right or top-to-bottom with no scattered elements?" (binary, structural)
|
|
41
|
+
- "Is the image free of numbered steps, ordinals, or sequential numbering?" (binary, specific)
|
|
42
|
+
|
|
43
|
+
### Code/technical skills (code generation, configs, scripts)
|
|
44
|
+
|
|
45
|
+
**Bad evals:**
|
|
46
|
+
- "Is the code clean?" (subjective)
|
|
47
|
+
- "Does it follow best practices?" (vague, which best practices?)
|
|
48
|
+
|
|
49
|
+
**Good evals:**
|
|
50
|
+
- "Does the code run without errors?" (binary, testable — actually execute it)
|
|
51
|
+
- "Does the output contain zero TODO or placeholder comments?" (binary, greppable)
|
|
52
|
+
- "Are all function and variable names descriptive (no single-letter names except loop counters)?" (binary, checkable)
|
|
53
|
+
- "Does the code include error handling for all external calls (API, file I/O, network)?" (binary, structural)
|
|
54
|
+
|
|
55
|
+
### Document skills (proposals, reports, decks)
|
|
56
|
+
|
|
57
|
+
**Bad evals:**
|
|
58
|
+
- "Is it comprehensive?" (compared to what?)
|
|
59
|
+
- "Does it address the client's needs?" (too open-ended)
|
|
60
|
+
|
|
61
|
+
**Good evals:**
|
|
62
|
+
- "Does the document contain all required sections: [list them]?" (binary, structural)
|
|
63
|
+
- "Is every claim backed by a specific number, date, or source?" (binary, checkable)
|
|
64
|
+
- "Is the document under [X] pages/words?" (binary, measurable)
|
|
65
|
+
- "Does the executive summary fit in one paragraph of 3 sentences or fewer?" (binary, countable)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## common mistakes
|
|
70
|
+
|
|
71
|
+
### 1. Too many evals
|
|
72
|
+
More than 6 evals and the skill starts gaming them — it optimizes for passing the test instead of producing good output. Like a student who memorizes answers without understanding the material.
|
|
73
|
+
|
|
74
|
+
**Fix:** Pick the 3-6 checks that matter most. If everything passes those, the output is probably good.
|
|
75
|
+
|
|
76
|
+
### 2. Too narrow/rigid
|
|
77
|
+
"Must contain exactly 3 bullet points" or "Must use the word 'because' at least twice" — these create skills that technically pass but produce weird, stilted output.
|
|
78
|
+
|
|
79
|
+
**Fix:** Evals should check for qualities you care about, not arbitrary structural constraints.
|
|
80
|
+
|
|
81
|
+
### 3. Overlapping evals
|
|
82
|
+
If eval 1 is "Is the text grammatically correct?" and eval 4 is "Are there any spelling errors?" — these overlap. A grammar fail often includes spelling. You're double-counting.
|
|
83
|
+
|
|
84
|
+
**Fix:** Each eval should test something distinct.
|
|
85
|
+
|
|
86
|
+
### 4. Unmeasurable by an agent
|
|
87
|
+
"Would a human find this engaging?" — an agent can't reliably answer this. It'll say "yes" almost every time.
|
|
88
|
+
|
|
89
|
+
**Fix:** Translate subjective qualities into observable signals. "Engaging" might mean: "Does the first sentence contain a specific claim, story, or question (not a generic statement)?"
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## writing your evals: the 3-question test
|
|
94
|
+
|
|
95
|
+
Before finalizing an eval, ask:
|
|
96
|
+
|
|
97
|
+
1. **Could two different agents score the same output and agree?** If not, the eval is too subjective. Rewrite it.
|
|
98
|
+
2. **Could a skill game this eval without actually improving?** If yes, the eval is too narrow. Broaden it.
|
|
99
|
+
3. **Does this eval test something the user actually cares about?** If not, drop it. Every eval that doesn't matter dilutes the signal from evals that do.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## template
|
|
104
|
+
|
|
105
|
+
Copy this for each eval:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
EVAL [N]: [Short name]
|
|
109
|
+
Question: [Yes/no question]
|
|
110
|
+
Pass: [What "yes" looks like — one sentence, specific]
|
|
111
|
+
Fail: [What triggers "no" — one sentence, specific]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Example:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
EVAL 1: Text legibility
|
|
118
|
+
Question: Is all text in the output fully legible with no truncated, overlapping, or cut-off words?
|
|
119
|
+
Pass: Every word is complete and readable without squinting or guessing
|
|
120
|
+
Fail: Any word is partially hidden, overlapping another element, or cut off at the edge
|
|
121
|
+
```
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: b2b-cold-outreach
|
|
3
|
+
description: "Build and execute a B2B cold outreach pipeline: scrape qualified leads, research decision makers, identify pain points, craft pain-point-specific..."
|
|
4
|
+
allowed-tools: []
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /b2b-cold-outreach — B2B Cold Outreach Pipeline
|
|
8
|
+
|
|
9
|
+
Build and execute a complete B2B cold outreach pipeline from lead scraping to email sending
|
|
10
|
+
and CRM tracking. This skill orchestrates lead discovery, decision-maker research, pain-point
|
|
11
|
+
identification, email crafting, and delivery — all tailored to the brand's offering and target
|
|
12
|
+
market.
|
|
13
|
+
|
|
14
|
+
For brand memory protocol, see /cmo [rules/brand-memory.md](../cmo/rules/brand-memory.md).
|
|
15
|
+
|
|
16
|
+
## On Activation
|
|
17
|
+
|
|
18
|
+
1. Read `brand/` directory: load `voice-profile.md`, `audience.md`, `positioning.md`, `competitors.md`, `learnings.md` if present.
|
|
19
|
+
2. Show what loaded:
|
|
20
|
+
```
|
|
21
|
+
Brand context loaded:
|
|
22
|
+
├── Voice Profile ✓/✗
|
|
23
|
+
├── Audience ✓/✗
|
|
24
|
+
├── Positioning ✓/✗
|
|
25
|
+
├── Competitors ✓/✗
|
|
26
|
+
└── Learnings ✓/✗
|
|
27
|
+
```
|
|
28
|
+
3. If files missing, note suggestions at the end (e.g., run /brand-voice).
|
|
29
|
+
4. Assess the user's request and determine if this is the right skill.
|
|
30
|
+
5. Verify brand/ directory has creative-kit.md for visual context (optional but recommended).
|
|
31
|
+
|
|
32
|
+
## Phase 0: Gate Check
|
|
33
|
+
|
|
34
|
+
Gate check. Verify this skill is the right one for the request:
|
|
35
|
+
|
|
36
|
+
| Signal | Action |
|
|
37
|
+
|--------|--------|
|
|
38
|
+
| User wants to build a B2B prospecting pipeline for a specific region/vertical | Proceed. |
|
|
39
|
+
| User needs general marketing advice or brand building | Skip. Run `/cmo` or `/brainstorm` first. |
|
|
40
|
+
| User only wants to send emails without research/personalization | Skip. Run `/typefully` or `/email-sequences` for generic blasts. |
|
|
41
|
+
| User has no defined offering or target audience | Suggest running `/brand-voice` and `/audience-research` first. |
|
|
42
|
+
|
|
43
|
+
## Phase 1: Scrape Qualified Leads
|
|
44
|
+
|
|
45
|
+
Scrape Google Maps and other sources for qualified businesses in the target region/vertical:
|
|
46
|
+
|
|
47
|
+
1. Define search terms based on brand positioning and target audience:
|
|
48
|
+
- Use `positioning.md` for vertical (e.g., "glamping structures", "eco-resorts")
|
|
49
|
+
- Use `audience.md` for geographic focus (e.g., "Yucatan", "Quintana Roo")
|
|
50
|
+
- Combine: `"[vertical] hotels [region]"`, `"[vertical] resort [region]"`, `"[vertical] lodge [region]"`
|
|
51
|
+
|
|
52
|
+
2. Execute scraping:
|
|
53
|
+
- If Firecrawl credits available (>0): Use firecrawl to scrape Google Maps results
|
|
54
|
+
- If Firecrawl credits exhausted: Use manual research notes or previously scraped data
|
|
55
|
+
- Extract: business name, website, location, phone, amenities visible from photos
|
|
56
|
+
|
|
57
|
+
3. Filter leads:
|
|
58
|
+
- Remove businesses that already have the competitor's offering (if known)
|
|
59
|
+
- Keep only those with websites (for further research)
|
|
60
|
+
- Tag each lead with: source, business_type, location, website_url
|
|
61
|
+
|
|
62
|
+
4. Save raw leads to: `sources/exports/raw-leads.json`
|
|
63
|
+
|
|
64
|
+
## Phase 2: Enrich and Research Leads
|
|
65
|
+
|
|
66
|
+
Enrich leads with contact information, decision makers, and pain points:
|
|
67
|
+
|
|
68
|
+
1. Email enrichment:
|
|
69
|
+
- For each lead website, try to find:
|
|
70
|
+
- General contact: info@, reservations@, bookings@
|
|
71
|
+
- Decision maker emails: look for director, owner, GM, managing director on team pages
|
|
72
|
+
- LinkedIn profiles of key decision makers
|
|
73
|
+
- Save enriched leads to: `sources/exports/enriched-leads.json`
|
|
74
|
+
|
|
75
|
+
2. Decision-maker research (Playwriter/manual):
|
|
76
|
+
- For top prospects (HOT/WARM tiers), research:
|
|
77
|
+
- Names and titles of owners, GMs, directors
|
|
78
|
+
- Recent news, expansions, renovations
|
|
79
|
+
- Social media activity (LinkedIn, Instagram)
|
|
80
|
+
- Pain points visible from public info (occupancy complaints, expansion desires)
|
|
81
|
+
|
|
82
|
+
3. Pain point identification:
|
|
83
|
+
- For each lead, identify 1-3 specific pain points based on:
|
|
84
|
+
- Website content (what they emphasize/complain about)
|
|
85
|
+
- Reviews (common guest complaints)
|
|
86
|
+
- Visible gaps (missing amenities, expansion potential)
|
|
87
|
+
- Local market trends (new competitors, changing guest preferences)
|
|
88
|
+
- Tag each lead with: `pain_points` array, `intent_signals`, `amenity_gaps`
|
|
89
|
+
|
|
90
|
+
4. Tier leads based on outreach readiness:
|
|
91
|
+
- HOT: Has email + decision maker name + clear pain point + no competitor offering
|
|
92
|
+
- WARM: Has email + some research OR pain point inferred
|
|
93
|
+
- COLD: Missing email or minimal data
|
|
94
|
+
- EXISTING: Already has similar offering (partner/competitor)
|
|
95
|
+
|
|
96
|
+
## Phase 3: Craft Pain-Point-Specific Emails
|
|
97
|
+
|
|
98
|
+
Craft emails that speak directly to each prospect's pain points in their language:
|
|
99
|
+
|
|
100
|
+
1. For each HOT/WARM lead with email:
|
|
101
|
+
- Select primary pain point from research (must be specific and verifiable)
|
|
102
|
+
- Craft subject line UNDER 40 characters that touches THAT specific pain point
|
|
103
|
+
- Never use generic product descriptions in subject
|
|
104
|
+
- Never use em dashes (—) in ANY language (AI slop indicator)
|
|
105
|
+
- Use Mexican Spanish (tú not vos) for Mexico prospects
|
|
106
|
+
- Subject must pass: "If I saw this on my phone, would I open it?"
|
|
107
|
+
|
|
108
|
+
2. **CRITICAL: Verify ALL client data before using it.** Never assume or invent:
|
|
109
|
+
- Every client name, model, quantity, and location used in emails MUST be verified from Zoho Books
|
|
110
|
+
- Use `mcporter call 'zoho-bigin.ZohoBooks_list_invoices'` with `customer_name` filter
|
|
111
|
+
- Use `mcporter call 'zoho-bigin.ZohoBooks_get_invoice'` with `path_variables` for line items
|
|
112
|
+
- Use `mcporter call 'zoho-bigin.ZohoBooks_list_items'` for product catalog
|
|
113
|
+
- The invoice `line_items[].description` contains product model info (name field is often empty)
|
|
114
|
+
- Client info in the email must match WHAT ZOHO BOOKS SAYS - not what you assume
|
|
115
|
+
- **CONSEQUENCE OF LYING**: If you put wrong info about a client (wrong model, wrong units), it destroys Jairo's credibility with the prospect. This is non-negotiable.
|
|
116
|
+
|
|
117
|
+
3. **CRITICAL: Describe the product in the prospect's language.**
|
|
118
|
+
- For Mexico hoteliers: "carpa de glamping de lujo" + specific materials (lona acrílica 300gr, acero galvanizado, hilo Tenara, 5 años garantía)
|
|
119
|
+
- NOT vague corporate language like "estructuras modulares de alta gama" - that means nothing to a hotelier
|
|
120
|
+
- NOT what the product is NOT (no camping, no safari, no domo) - only what it IS
|
|
121
|
+
- Mention specific model names: Hexagome, Octagome, Decagome, Pentagome, Tatun, Dakini
|
|
122
|
+
- The "por qué nosotros" = local Mexican manufacturer, materials premium, modular system, proven in tropical climate (Habitas, LJS Chichikan, Destino Mío)
|
|
123
|
+
|
|
124
|
+
4. Key constraints from Jairo's rules:
|
|
125
|
+
- Subject lines under 40 chars, mobile-first
|
|
126
|
+
- Subject MUST touch specific pain point, not generic product info
|
|
127
|
+
- NEVER use em dashes (—) in ANY language
|
|
128
|
+
- NEVER use voseo (venís, tenés, sabés). Use Mexican Spanish.
|
|
129
|
+
- NEVER describe what product is NOT — only what it IS
|
|
130
|
+
- "Why us" = local Mexico manufacturer, modular village system, proven in tropical climate
|
|
131
|
+
- Must reach decision makers (owner/GM/director), NOT info@/reservations@
|
|
132
|
+
- Body must sound human-typed, not marketing copy
|
|
133
|
+
- Hook must be specific (numbers, competitor names), not generic
|
|
134
|
+
- **STOP writing full emails until subject lines are approved first**
|
|
135
|
+
|
|
136
|
+
4. Subject line approval gate - CRITICAL WORKFLOW:
|
|
137
|
+
- **Write ONLY subject lines first** - 3-4 options per prospect, under 40 chars, pain-point-specific
|
|
138
|
+
- **Present subject lines for user approval** - do NOT write a single body line until approved
|
|
139
|
+
- **Rationale**: If the subject doesn't make them open, nothing else matters. Writing the body first is wasted work.
|
|
140
|
+
- After approval: write body, present for approval again
|
|
141
|
+
- Only after body approval: send + push to CRM
|
|
142
|
+
|
|
143
|
+
5. Save email drafts to: `outreach/drafts/` as individual files or sequence
|
|
144
|
+
|
|
145
|
+
## Phase 3.5: Social Proof — Use Cached Evergreen Data First
|
|
146
|
+
|
|
147
|
+
**Before writing any client claim in an email, use this order of sources:**
|
|
148
|
+
|
|
149
|
+
1. **Check cached social proof first (`brand-assets/social-proof.md` or evergreen social proof section)**
|
|
150
|
+
- The evergreen already stores verified social proof (client names, verified relationships, testimonial claims)
|
|
151
|
+
- This data was verified from Zoho Books at the time it was written — no need to re-verify every run
|
|
152
|
+
- Load it once, use it across all emails in this batch
|
|
153
|
+
|
|
154
|
+
2. **Only hit Zoho Books for NEW verification needs** — situations where:
|
|
155
|
+
- A new client name is being used that isn't in the evergreen yet
|
|
156
|
+
- You need specific model/quantity info that the evergreen doesn't have
|
|
157
|
+
- The evergreen social proof is stale (more than 30 days since last update)
|
|
158
|
+
|
|
159
|
+
3. **If Zoho Books access is needed:**
|
|
160
|
+
```
|
|
161
|
+
mcporter call 'zoho-bigin.ZohoBooks_list_invoices' \
|
|
162
|
+
--config /path/to/mcporter.json \
|
|
163
|
+
'query_params={"organization_id":"2738724","per_page":"200","customer_name":"Client Name"}'
|
|
164
|
+
```
|
|
165
|
+
Invoice line items: `name` is often empty — read `description` instead.
|
|
166
|
+
|
|
167
|
+
4. **After Zoho Books verification, update the evergreen's social proof section** so the next run doesn't need to re-verify.
|
|
168
|
+
|
|
169
|
+
5. **NEVER** put a client claim in an email that isn't supported by either the evergreen or Zoho Books.
|
|
170
|
+
- Wrong: "Instalamos Hexagome y Pentagome con Habitas" (if Zoho shows replacement panels)
|
|
171
|
+
- Right: "Trabajamos con Habitas" (general, verified relationship)
|
|
172
|
+
- Right: "Destino Mío nos compró terraza para Hexagome en Tulum este año" (specific, verified from INV-1092 line items)
|
|
173
|
+
|
|
174
|
+
## Phase 4: Send Emails and Track in CRM
|
|
175
|
+
|
|
176
|
+
Send approved emails and track engagement:
|
|
177
|
+
|
|
178
|
+
1. SMTP Setup:
|
|
179
|
+
- Use credentials from `.env`: SKYE_SMTP_HOST, SKYE_SMTP_PORT, SKYE_SMTP_USER, SKYE_SMTP_PASS
|
|
180
|
+
- Verify connection before sending
|
|
181
|
+
- From: skye@enchantents.com (or brand equivalent)
|
|
182
|
+
- Rate limit: 5 seconds between sends
|
|
183
|
+
|
|
184
|
+
2. Sending Process:
|
|
185
|
+
- For each approved email draft:
|
|
186
|
+
- Parse subject and body
|
|
187
|
+
- Send via SMTP (nodemailer or equivalent)
|
|
188
|
+
- Log result to: `outreach/sent/tracking.csv` with columns:
|
|
189
|
+
timestamp, lead_email, business_name, template, sequence_step, smtp_status, lang
|
|
190
|
+
|
|
191
|
+
3. CRM Integration (Bigin/Zoho):
|
|
192
|
+
- Only send leads with verified emails to CRM
|
|
193
|
+
- For each sent lead:
|
|
194
|
+
- Create Contact in Bigin with: First_Name, Last_Name, Email, Phone, Company, Description, Source
|
|
195
|
+
- Create Deal linked to Contact with: Deal_Name, Stage (Primer contacto), Pipeline, Description
|
|
196
|
+
- Track sync in: `sources/exports/bigin-sync.json` to avoid duplicates
|
|
197
|
+
- Use mcporter for Zoho access: `npx mcporter@latest call 'zoho-bigin.ZohoBooks_list_invoices' --config ./config/mcporter.json`
|
|
198
|
+
|
|
199
|
+
## Phase 5: Review and Optimize
|
|
200
|
+
|
|
201
|
+
Review results and suggest next steps:
|
|
202
|
+
|
|
203
|
+
1. Check sent emails tracking for:
|
|
204
|
+
- Delivery rates, opens (if tracking enabled)
|
|
205
|
+
- Replies and engagement
|
|
206
|
+
- Patterns in what subject lines/worked
|
|
207
|
+
|
|
208
|
+
2. Update learnings.md with:
|
|
209
|
+
- What subject lines got opens/replies
|
|
210
|
+
- Which pain points resonated
|
|
211
|
+
- Which decision makers responded
|
|
212
|
+
- Any changes to ideal customer profile
|
|
213
|
+
|
|
214
|
+
3. Suggest next actions:
|
|
215
|
+
- Run skill again with refined search terms
|
|
216
|
+
- Create follow-up sequence for non-responders
|
|
217
|
+
- Route interested leads to sales nurture
|
|
218
|
+
- Run /deepen-plan if strategy needs validation
|
|
219
|
+
|
|
220
|
+
## Worked Example
|
|
221
|
+
|
|
222
|
+
**User request:** 'Build a B2B cold outreach pipeline for Enchantents glamping structures targeting hotels in Yucatan and Quintana Roo, Mexico'
|
|
223
|
+
|
|
224
|
+
**Execution:**
|
|
225
|
+
1. **Gate Check**: Confirmed - user wants B2B pipeline for specific region/vertical
|
|
226
|
+
2. **On Activation**: Loads brand/ files (finds evergreen.md showing two segments: A=resort developers, B=smaller operators)
|
|
227
|
+
3. **Phase 1 - Scrape**:
|
|
228
|
+
- Search terms: "glamping hotels Yucatan", "eco resorts Quintana Roo", "sustainable lodge Riviera Maya"
|
|
229
|
+
- Scrapes 28 qualified prospects from Google Maps
|
|
230
|
+
- Saves to sources/exports/raw-leads.json
|
|
231
|
+
4. **Phase 2 - Enrich**:
|
|
232
|
+
- Finds emails for 19 prospects
|
|
233
|
+
- Researches decision makers via Playwriter/LinkedIn:
|
|
234
|
+
- Lourdes Vila (Cabañas Tulum) - Commercial Director
|
|
235
|
+
- Alejandra Abella (Namron Hospitality) - Managing Director
|
|
236
|
+
- Roth (AZULIK) - Founder
|
|
237
|
+
- Daniel Aguayo (Ahau Collection) - Owner
|
|
238
|
+
- LUV Tulum team - Ownership group
|
|
239
|
+
- Colibri Boutique Hotels - Manages La Zebra
|
|
240
|
+
- Identifies pain points:
|
|
241
|
+
- Namron: Only 22 suites at La Valise, wants to expand without new construction
|
|
242
|
+
- Cabañas Tulum: Wants extra occupancy without construction disruption
|
|
243
|
+
- AZULIK: Expanding to new territories but wants zero concrete impact
|
|
244
|
+
- Ahau: Has unused jungle land generating $0
|
|
245
|
+
- LUV: 5 acres with 3 cenotes but zero installations
|
|
246
|
+
- Colibri: 20 years in Tulum but has undeveloped land
|
|
247
|
+
- Tiers 6 as HOT (decision maker + email + clear gap)
|
|
248
|
+
5. **Phase 3 - Craft Emails**:
|
|
249
|
+
- Writes 6 subject lines focused on SPECIFIC pain points:
|
|
250
|
+
- Alejandra: "La Valise solo tiene 22 suites" (22 suites = specific, verifiable)
|
|
251
|
+
- Lourdes: "Ocupación extra en 3 semanas" (specific timeframe)
|
|
252
|
+
- Roth: "Roth, zero concreto" (matches their brand language)
|
|
253
|
+
- Daniel: "Ahau tiene tierra desperdiciada" (specific asset)
|
|
254
|
+
- LUV: "5 acres vacíos generando $0" (specific dollar amount)
|
|
255
|
+
- Colibri: "Colibri tiene terreno sin monetizar" (speaks to their asset mindset)
|
|
256
|
+
- Waits for subject line approval (per Jairo's rule) ✓
|
|
257
|
+
- After approval, writes first draft of bodies but makes MISTAKES:
|
|
258
|
+
- ❌ Uses "estructuras modulares de alta gama" (vague, means nothing)
|
|
259
|
+
- ❌ Says "Hexagome y Pentagome con Habitas" **(UNVERIFIED - invented, not in Zoho Books)**
|
|
260
|
+
- ❌ Says "40+ unidades en LJS Chichikan" **(UNVERIFIED - assumed quantity)**
|
|
261
|
+
- Jairo catches these mistakes and corrects:
|
|
262
|
+
- ✅ Describe product as: "carpa de glamping de lujo" + materials (lona acrílica 300gr, acero galvanizado, hilo Tenara, 5 años garantía)
|
|
263
|
+
- ✅ Verify ALL claims in Zoho Books before writing:
|
|
264
|
+
- Habitas invoices show replacement panels for Bacalar structures - say "trabajamos con Habitas en Bacalar" (general)
|
|
265
|
+
- LJS Chichikan has 14 invoices with Decagome + Tatun - say "14 facturas con LJS Chichikan" (verified)
|
|
266
|
+
- Destino Mío bought Hexagome terrace kit in 2026 - say "Destino Mío nos compró terraza para Hexagome en Tulum este año" (specific, verified)
|
|
267
|
+
- ✅ Product models = specific: Hexagome, Octagome, Decagome, Pentagome, Tatun, Dakini (from products.md / Zoho Books items)
|
|
268
|
+
- Learns: never write data you haven't verified from Zoho Books
|
|
269
|
+
- Learns: describe product in prospect's language, not corporate-speak
|
|
270
|
+
- Corrects all 6 emails with verified data before presenting for approval
|
|
271
|
+
6. **Phase 4 - Send and Track**:
|
|
272
|
+
- Sends 6 emails via SMTP from skye@enchantents.com
|
|
273
|
+
- Pushes 6 leads to Bigin CRM as Contacts + Deals in "Proceso de venta" → "Primer contacto"
|
|
274
|
+
- Logs all to tracking.csv and bigin-sync.json
|
|
275
|
+
7. **Phase 5 - Review**:
|
|
276
|
+
- Suggests waiting 3-4 days for replies
|
|
277
|
+
- Recommends creating 3-touch follow-up sequence
|
|
278
|
+
- Notes to update learnings.md with which subject lines performed best
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
## Chain Offers
|
|
282
|
+
|
|
283
|
+
- `/deepen-plan` — if you need to validate positioning or messaging with deeper research
|
|
284
|
+
- `/email-sequences` — to create automated follow-up sequences for non-responders
|
|
285
|
+
- `/typefully` — to schedule LinkedIn outreach for prospects without emails
|
|
286
|
+
- `/page-cro` — if you create a landing page for these prospects to visit
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
## Anti-Patterns
|
|
290
|
+
|
|
291
|
+
| Anti-pattern | Instead |
|
|
292
|
+
|-------------|---------|
|
|
293
|
+
| Using generic subject lines like "Glamping opportunity for [Business]" | Subject lines must touch SPECIFIC, verifiable pain point (e.g., "La Valise solo tiene 22 suites") |
|
|
294
|
+
| Sending to info@/reservations@ without targeting decision maker | Must reach actual decision makers (owner/GM/director) - Jairo called this lazy |
|
|
295
|
+
| Describing what product is NOT ("no son carpas safari") | Only describe what it IS (carpa de glamping de lujo, lona acrílica 300gr, acero galvanizado, 5 años garantía) |
|
|
296
|
+
| Using em dashes (—) in any language | No em dashes in ANY language. Use a period, comma, or colon instead. Applies to English copy too. |
|
|
297
|
+
| Writing full emails before subject line approval | STOP - if they don't open, nothing else matters. Get subjects approved first. |
|
|
298
|
+
| **Inventing client data (models, quantities, locations)** | **ALWAYS verify from Zoho Books via mcporter first. "Trabajamos con Habitas" is OK. "Instalamos Hexagome y Pentagome con Habitas" is a LIE unless Zoho Books confirms it.** |
|
|
299
|
+
| Using vague product descriptions like "estructuras modulares de alta gama" | Say what the product IS: "carpa de glamping de lujo con lona acrílica 300gr, acero galvanizado, hilo Tenara" |
|
|
300
|
+
| Using generic proof like "we're the best" | Use specific local proof: "Trabajamos con Habitas en Bacalar, Destino Mío en Tulum, LJS Chichikan en Valladolid (14 facturas)" |
|
|
301
|
+
| Forgetting to track in CRM | Every sent email must create a Contact + Deal in Bigin for traceability |
|
|
302
|
+
| Sending blasts without personalization | Each email must reference the specific pain point discovered in research |
|
|
303
|
+
| Using English for Mexico prospects | Match prospect's language - use Mexican Spanish for Mexico businesses |
|
|
304
|
+
| Making product description the hero | Product is the solution to THEIR pain point - lead with THEIR problem |
|
|
305
|
+
| **Trying to find data via raw web search instead of Zoho Books** | Client data lives in Zoho Books, accessed via mcporter. Don't guess, don't web search - use the CRM. |
|
|
306
|
+
| **Writing what you think is true instead of what Zoho Books says** | If Zoho Books shows "replacement panels" not "Hexagome units", then say "replacement panels" or keep it general. Never upgrade the truth. |
|
|
307
|
+
| **Over-describing social proof** | Keep it general when you don't have specifics. "Trabajamos con Habitas" is enough. You don't need to say models or quantities if you're not sure. |
|
|
308
|
+
| **Hitting Zoho Books on every run for cached data** | Use the evergreen's social proof section first. It was verified when written. Only hit Zoho Books for NEW verification needs not in the evergreen. Update evergreen after verifying new data. |
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
## YAGNI Principles
|
|
312
|
+
|
|
313
|
+
- Don't add LinkedIn automation unless user explicitly asks for multi-channel
|
|
314
|
+
- Don't create complex email sequences (>3 touches) until first sequence validated
|
|
315
|
+
- Don't build custom tracking beyond SMTP logs + CRM until volume justifies it
|
|
316
|
+
- Don't create separate skills for each vertical - this skill is brand-agnostic
|
|
317
|
+
- Don't over-engineer the CRM sync - simple JSON file is fine for <100 leads/month
|
|
318
|
+
- Don't add email open tracking unless SMTP service supports it reliably
|
|
319
|
+
- Don't create HTML-rich emails - plain text sounds more human (Jairo's preference)
|
|
320
|
+
- Don't send more than 20-30 emails/day per sender to avoid spam flags
|
|
321
|
+
- Don't research beyond what's publicly available (no paid databases unless budgeted)
|
|
322
|
+
- Don't try to close in first email - goal is to start conversation, not sell
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: birdclaw
|
|
3
|
+
description: Use for X/Twitter archive search, mentions triage, likes/bookmarks sync, and reply workflows. Local SQLite-backed Twitter workspace.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Birdclaw
|
|
7
|
+
|
|
8
|
+
Local-first Twitter workspace — archive import, live sync, mentions triage, reply flows. Uses `bird` CLI for live transport (no `xurl` needed).
|
|
9
|
+
|
|
10
|
+
## Setup
|
|
11
|
+
|
|
12
|
+
- Repo: `~/Projects/birdclaw`
|
|
13
|
+
- DB: `~/.birdclaw/birdclaw.sqlite`
|
|
14
|
+
- Config: `~/.birdclaw/config.json` (bird transport via authed wrapper)
|
|
15
|
+
- Auth wrapper: `~/.local/bin/bird-authed` (loads `~/.config/bird/auth.env`)
|
|
16
|
+
|
|
17
|
+
All CLI commands run from `~/Projects/birdclaw`:
|
|
18
|
+
```bash
|
|
19
|
+
cd ~/Projects/birdclaw && pnpm cli <command>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Health Check
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cd ~/Projects/birdclaw && pnpm cli db stats --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Key Commands
|
|
29
|
+
|
|
30
|
+
### Mentions (for agents)
|
|
31
|
+
```bash
|
|
32
|
+
# All recent mentions
|
|
33
|
+
cd ~/Projects/birdclaw && pnpm cli mentions export --mode bird --limit 20 --json
|
|
34
|
+
|
|
35
|
+
# Unreplied only (triage queue)
|
|
36
|
+
cd ~/Projects/birdclaw && pnpm cli mentions export --unreplied --mode bird --limit 10 --json
|
|
37
|
+
|
|
38
|
+
# Filtered mentions
|
|
39
|
+
cd ~/Projects/birdclaw && pnpm cli mentions export "agent" --mode bird --limit 10 --json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Sync Likes & Bookmarks
|
|
43
|
+
```bash
|
|
44
|
+
cd ~/Projects/birdclaw && pnpm cli sync likes --mode bird --limit 20 --json
|
|
45
|
+
cd ~/Projects/birdclaw && pnpm cli sync bookmarks --mode bird --limit 20 --json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Search (requires archived/imported data)
|
|
49
|
+
```bash
|
|
50
|
+
cd ~/Projects/birdclaw && pnpm cli --json search tweets "query" --limit 20
|
|
51
|
+
cd ~/Projects/birdclaw && pnpm cli --json search tweets --since 2025-01-01 --until 2026-01-01 --originals-only --hide-low-quality --limit 20000
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### DMs
|
|
55
|
+
```bash
|
|
56
|
+
cd ~/Projects/birdclaw && pnpm cli dms --help
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Compose (tweet/reply)
|
|
60
|
+
```bash
|
|
61
|
+
cd ~/Projects/birdclaw && pnpm cli compose --help
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Picking the Right Approach
|
|
65
|
+
|
|
66
|
+
- **Mentions triage for agents** → `mentions export --unreplied --mode bird`
|
|
67
|
+
- **Single tweet lookup** → `search tweets "query"`
|
|
68
|
+
- **Year vibe summary** → `search tweets --since YYYY-01-01 --until (YYYY+1)-01-01 --originals-only --hide-low-quality --limit 20000`
|
|
69
|
+
- **Multi-year arc** → Run per year, do NOT shortcut with top-N like_count
|
|
70
|
+
|
|
71
|
+
## Filters
|
|
72
|
+
|
|
73
|
+
- `--originals-only` — excludes replies, keeps authored posts only
|
|
74
|
+
- `--hide-low-quality` — removes noise (pure RTs, tiny posts, low-signal link captions)
|
|
75
|
+
- "low-like" = `like_count < 50`
|
|
76
|
+
|
|
77
|
+
## Notes
|
|
78
|
+
|
|
79
|
+
- Live reads use `bird` via `~/.local/bin/bird-authed` wrapper
|
|
80
|
+
- No Twitter archive imported yet — search only works on live-synced data (likes, bookmarks, mentions)
|
|
81
|
+
- To import archive: place Twitter zip in Downloads, then `pnpm cli import`
|
|
82
|
+
- WIP status — expect some rough edges
|