@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,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: summarize
|
|
3
|
+
description: "Summarize any block of text using the `summarize` CLI (chained-in from steipete/summarize — npm package `@steipete/summarize`)."
|
|
4
|
+
argument-hint: "[text-file-path OR stdin OR pasted text]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Bash(summarize *)
|
|
7
|
+
- Bash(npx @steipete/summarize *)
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /summarize — text → TL;DR via steipete/summarize
|
|
11
|
+
|
|
12
|
+
You are summarizing arbitrary text using the `summarize` CLI from github.com/steipete/summarize (npm: `@steipete/summarize`). This skill is a **chain-in wrapper** — mktg does not fork or vendor the tool; it orchestrates it when the user has it installed.
|
|
13
|
+
|
|
14
|
+
## On Activation
|
|
15
|
+
|
|
16
|
+
1. **Preflight:** Run `summarize --version` via the Bash tool.
|
|
17
|
+
- If the command is not found, print the short install hint below and stop. Offer to walk the user through [rules/install.md](rules/install.md) if they want the long version.
|
|
18
|
+
```
|
|
19
|
+
summarize CLI not installed. Quickest path:
|
|
20
|
+
npm i -g @steipete/summarize (requires Node 22+)
|
|
21
|
+
brew install summarize (macOS)
|
|
22
|
+
Then rerun. Full install guide: skills/summarize/rules/install.md
|
|
23
|
+
```
|
|
24
|
+
- If it prints a version, continue.
|
|
25
|
+
2. **Read `brand/voice-profile.md` if it exists.** At L1+ you should quietly align the TL;DR's *voice* to the brand (tone, energy, diction). At L0 (no brand memory), just produce a neutral summary — do not invent voice.
|
|
26
|
+
3. **Resolve the input.** Accept any of:
|
|
27
|
+
- A **file path**: pass it directly to summarize (e.g. `summarize /tmp/article.md --length short --plain`)
|
|
28
|
+
- **Stdin / pasted text**: pipe through `-` (e.g. `cat /tmp/article.md | summarize - --length short --plain`)
|
|
29
|
+
- **Inline argument text**: write to a scratch file in `.summarize/` first, then pass the path — do not shell-interpolate large blobs of text
|
|
30
|
+
4. **Short-circuit check.** If the input is clearly under ~500 words (or under ~3,000 characters), do **not** run summarize. Return the content as-is and tell the user it was already short enough. Running summarize on tiny inputs wastes latency and the upstream CLI itself returns short content as-is by default unless `--force-summary` is set.
|
|
31
|
+
5. **Run summarize.** Prefer structured output for agent consumption:
|
|
32
|
+
```bash
|
|
33
|
+
summarize <input> --length <preset> --plain --json
|
|
34
|
+
```
|
|
35
|
+
- `--length short|medium|long|xl|xxl` — pick one based on the caller's ask (default: `medium`)
|
|
36
|
+
- `--plain` — raw output, no ANSI/OSC markdown rendering (agents want plain text)
|
|
37
|
+
- `--json` — machine-readable envelope with the summary, metrics, and prompt (only when the caller needs metadata; omit for simple TL;DRs)
|
|
38
|
+
- `--no-color` — belt-and-suspenders if you're capturing stdout
|
|
39
|
+
- `--timeout 2m` — keep the default unless you know the input is huge
|
|
40
|
+
6. **Capture and return structured output.** The skill's contract with callers:
|
|
41
|
+
```
|
|
42
|
+
{
|
|
43
|
+
"summary": "<the condensed text>",
|
|
44
|
+
"input_chars": <int>,
|
|
45
|
+
"output_chars": <int>,
|
|
46
|
+
"compression_ratio": <float>,
|
|
47
|
+
"length_preset": "<short|medium|long|xl|xxl>",
|
|
48
|
+
"source": "<path or 'stdin'>"
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
7. **Never dump huge outputs into context.** Write long outputs to `.summarize/<slug>.md` and return a path + head. Agents should treat the scratch dir like firecrawl's `.firecrawl/` — gitignored, isolated, cleaned on demand.
|
|
52
|
+
|
|
53
|
+
## How summarize works
|
|
54
|
+
|
|
55
|
+
`@steipete/summarize` is a Node-22+ CLI that takes a URL, file, or stdin and returns a condensed version rendered as streaming Markdown (or raw JSON when `--json` is set). Under the hood it routes text through an LLM backend — by default `auto` picks the best available provider (cloud key, local endpoint, or a chained coding CLI like Claude/Codex/Gemini/OpenCode). When only offline coding CLIs are available, it falls back to them automatically.
|
|
56
|
+
|
|
57
|
+
For Pillar 3 (this skill) mktg uses only the **text → summary** surface of the tool. The upstream CLI can also fetch URLs, transcribe YouTube videos, extract PDFs, and run OCR on video slides — but **those jobs belong to other pillars in mktg**:
|
|
58
|
+
|
|
59
|
+
- URL fetching → `firecrawl` skill
|
|
60
|
+
- YouTube / podcast / TikTok / audio transcription → `mktg-transcribe`
|
|
61
|
+
- X/Twitter reading → `mktg-x`
|
|
62
|
+
|
|
63
|
+
summarize's role inside mktg is narrower: **take text that another pillar already extracted, return a shorter version**. Keeping the role small keeps the chain-in surface predictable and prevents overlap with mktg's first-class capabilities.
|
|
64
|
+
|
|
65
|
+
Upstream repo: https://github.com/steipete/summarize
|
|
66
|
+
NPM package: `@steipete/summarize`
|
|
67
|
+
Author: Peter Steinberger (@steipete)
|
|
68
|
+
License: see upstream (chain-in, not vendored)
|
|
69
|
+
|
|
70
|
+
## Usage patterns
|
|
71
|
+
|
|
72
|
+
### Pattern A — summarize a local article/markdown file
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
summarize /path/to/article.md --length short --plain
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Use when a source-digestion workflow has scraped a long blog post via firecrawl and the source extractor wants a TL;DR to attach to the grounding memo alongside the full extract.
|
|
79
|
+
|
|
80
|
+
### Pattern B — summarize stdin (pasted text, piped output)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cat /tmp/transcript.txt | summarize - --length medium --plain
|
|
84
|
+
pbpaste | summarize - --length short --plain
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Use for ad-hoc "the user pasted a giant blob, condense it" requests. Remember: stdin has a 50MB cap upstream, and whitespace-only input is rejected.
|
|
88
|
+
|
|
89
|
+
### Pattern C — chain-in from mktg-transcribe
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
mktg transcribe "https://youtu.be/<id>" --json \
|
|
93
|
+
| jq -r .data.transcript \
|
|
94
|
+
| summarize - --length medium --plain \
|
|
95
|
+
> .summarize/youtube-<id>-tldr.md
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
This is the `mktg-transcribe --summarize` flow. Transcribe pipes the transcript text, summarize compresses it, the result is a one-page TL;DR attached to the grounding memo.
|
|
99
|
+
|
|
100
|
+
### Pattern D — JSON envelope for agent consumption
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
summarize /tmp/long-article.md --length short --plain --json \
|
|
104
|
+
> .summarize/article-summary.json
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
When a source-digestion workflow needs the summary plus metrics (input char count, model used, latency) for telemetry or caching, prefer `--json`. Parse `.summary`, `.metrics`, and `.prompt` fields downstream.
|
|
108
|
+
|
|
109
|
+
### Pattern E — preset selection cheat sheet
|
|
110
|
+
|
|
111
|
+
| Caller intent | `--length` | Why |
|
|
112
|
+
|---|---|---|
|
|
113
|
+
| "one-sentence gist" | `short` | ~900 char target, fast |
|
|
114
|
+
| "executive summary" | `medium` | ~1,800 char target, default |
|
|
115
|
+
| "detailed digest" | `long` | ~4,200 char target |
|
|
116
|
+
| "thorough condensation" | `xl` | ~9,000 char target |
|
|
117
|
+
| "near-full summary" | `xxl` | ~17,000 char target |
|
|
118
|
+
| "I need exactly N chars" | numeric (`--length 2500`) | character target, >= 50 |
|
|
119
|
+
|
|
120
|
+
## Chain-in role in the mktg multimedia digestion system
|
|
121
|
+
|
|
122
|
+
This skill is Pillar 3 of the four-pillar digestion system (see `docs/plans/2026-04-11-002-feat-mktg-multimedia-digestion-plan.md`). Its job is **text compression**, not source ingestion.
|
|
123
|
+
|
|
124
|
+
**Who calls summarize:**
|
|
125
|
+
|
|
126
|
+
- **`mktg-transcribe`** — optionally pipes its transcript output through summarize when `--summarize` is passed. This is how video source digestion produces both a full transcript and a TL;DR in a single agent hop.
|
|
127
|
+
- **Source extractors** — when a firecrawl-scraped article is long and the grounding memo would overflow, the source extractor summarizes the extract and attaches both.
|
|
128
|
+
- **Any skill producing long-form text** — `seo-content`, `newsletter`, `direct-response-copy` outputs can be summarized for preview cards, hooks, or social atomization.
|
|
129
|
+
|
|
130
|
+
**Who does NOT call summarize:**
|
|
131
|
+
|
|
132
|
+
- Anything dealing with structured data (JSON/CSV/code) — summarize is tuned for prose, not data schemas.
|
|
133
|
+
- Skills that need the full content preserved (brand memory, legal-critical docs, verbatim quotes).
|
|
134
|
+
- Short-input skills where the LLM round-trip isn't worth the latency.
|
|
135
|
+
|
|
136
|
+
**Default posture:** summarize is an *enhancement*, not a gate. If it's missing, the calling skill still ships the full content — just without a TL;DR. Progressive enhancement applies here the same way brand memory does.
|
|
137
|
+
|
|
138
|
+
## Anti-Patterns
|
|
139
|
+
|
|
140
|
+
1. **Running summarize on structured data.** JSON, CSV, code, SQL — don't. **Why:** the tool is tuned for prose. Structured data loses its schema semantics through an LLM condenser and the output is unreliable. If the user wants "the gist of this JSON", explain what the data represents in natural language yourself; don't route it through summarize.
|
|
141
|
+
|
|
142
|
+
2. **Summarizing already-short text.** If input is under ~500 words (~3,000 chars), skip the call entirely. **Why:** adds latency and cost with no value. Upstream summarize itself returns short content as-is by default. Be honest with the user: "this is already a short read, no TL;DR needed."
|
|
143
|
+
|
|
144
|
+
3. **Mandating summarization for every long text.** Never default-summarize a skill's output. Offer it as an option. **Why:** many skills want the full content — brand extraction, legal copy, launch memos. Silently truncating them via summarize corrupts the downstream pipeline. Let the caller explicitly ask for a TL;DR.
|
|
145
|
+
|
|
146
|
+
4. **Forgetting attribution.** summarize is a third-party tool maintained by @steipete. **Why:** mktg ships as a curation layer. When we chain in external tools we credit them so maintainers get recognition and users can upstream issues correctly. Every reference to summarize in generated content must link back to https://github.com/steipete/summarize.
|
|
147
|
+
|
|
148
|
+
5. **Dumping huge `--json` outputs directly into agent context.** Write to `.summarize/<slug>.json` and return head/tail slices. **Why:** a single summarize `--json` call can easily exceed 10KB of metrics + prompt + summary. Pouring that into an agent's context burns tokens and masks the actual TL;DR. Treat it like firecrawl output: file-based isolation, incremental reads.
|
|
149
|
+
|
|
150
|
+
6. **Using summarize as a URL fetcher even though it technically can.** Upstream summarize accepts URLs, YouTube, podcasts, and PDFs directly. **Why:** mktg reserves ingestion for its own pillars (firecrawl, mktg-transcribe, mktg-x) so the digestion matrix has exactly one owner per source type. Letting summarize also fetch URLs creates two sources of truth for "who scraped this blog" and breaks source-type routing. Scope this skill to text-in → text-out.
|
|
151
|
+
|
|
152
|
+
7. **Skipping the install preflight.** Always run `summarize --version` first. **Why:** the tool is an *optional* chain-in. Silent failures ("the summary never came back") are worse than a clear "not installed, here's how to install" message. `mktg doctor` will also flag it, but the skill itself should fail fast.
|
|
153
|
+
|
|
154
|
+
## References
|
|
155
|
+
|
|
156
|
+
- [rules/install.md](rules/install.md) — how to install `@steipete/summarize`, verify the binary, and handle install failures on macOS/Linux/WSL.
|
|
157
|
+
- [rules/usage.md](rules/usage.md) — idiomatic usage patterns, flag combinations, output shapes, and when to prefer summarize over direct LLM summarization.
|
|
158
|
+
|
|
159
|
+
## Attribution
|
|
160
|
+
|
|
161
|
+
**Source:** https://github.com/steipete/summarize
|
|
162
|
+
**NPM package:** `@steipete/summarize`
|
|
163
|
+
**Homepage:** https://summarize.sh
|
|
164
|
+
**Author:** Peter Steinberger ([@steipete](https://github.com/steipete))
|
|
165
|
+
**Type:** CLI tool (Node 22+)
|
|
166
|
+
**License:** see upstream (`repos/steipete/summarize` — "Other" per GitHub; check upstream LICENSE file)
|
|
167
|
+
**Relationship to mktg:** chained-in (upstream-only — mktg does not fork or vendor the code; users install `@steipete/summarize` separately and mktg orchestrates it)
|
|
168
|
+
**Date wrapped:** 2026-04-11
|
|
169
|
+
**Wrapped by:** mktg source-digestion workflows, Pillar 3 of the multimedia digestion plan
|
|
170
|
+
**Plan reference:** `docs/plans/2026-04-11-002-feat-mktg-multimedia-digestion-plan.md`
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: summarize-cli-installation
|
|
3
|
+
description: |
|
|
4
|
+
Install the `summarize` CLI (chained-in from steipete/summarize) and verify it is ready for mktg to orchestrate.
|
|
5
|
+
Package: https://www.npmjs.com/package/@steipete/summarize
|
|
6
|
+
Source: https://github.com/steipete/summarize
|
|
7
|
+
Homepage: https://summarize.sh
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# summarize CLI Installation
|
|
11
|
+
|
|
12
|
+
`summarize` is a **chained-in** CLI — mktg does not vendor or fork it. The user installs it once from upstream and mktg orchestrates it. This mirrors how the `firecrawl` skill works.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
- **Node.js 22+** is required. Check with `node --version`. If missing, install via:
|
|
17
|
+
- macOS: `brew install node@22`
|
|
18
|
+
- Linux/WSL: use [nvm](https://github.com/nvm-sh/nvm) → `nvm install 22 && nvm use 22`
|
|
19
|
+
- Windows: https://nodejs.org/en/download
|
|
20
|
+
- **A working shell and `PATH`** that picks up global npm or Homebrew binaries.
|
|
21
|
+
|
|
22
|
+
## Quick install (recommended)
|
|
23
|
+
|
|
24
|
+
Pick ONE of the three paths below.
|
|
25
|
+
|
|
26
|
+
### Option 1 — npm global (cross-platform, easiest)
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm i -g @steipete/summarize
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Option 2 — Homebrew (macOS / Linuxbrew)
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
brew install summarize
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Homebrew ships `summarize` from `homebrew/core`.
|
|
39
|
+
|
|
40
|
+
### Option 3 — npx (no install, every invocation re-downloads)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx -y @steipete/summarize "<input>"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Use this only for one-off trials. For anything mktg routes through, prefer Option 1 or 2 so the binary stays resident.
|
|
47
|
+
|
|
48
|
+
## Verify
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
summarize --version
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Expected: a version string like `1.x.x` on stdout, exit code 0. If you see `command not found`, skip to "If installation fails" below.
|
|
55
|
+
|
|
56
|
+
Additional readiness check:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
summarize --help | head -20
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Should print the help banner with `Usage: summarize <input> [flags]`.
|
|
63
|
+
|
|
64
|
+
## Optional local dependencies (NOT required for mktg's Pillar 3 role)
|
|
65
|
+
|
|
66
|
+
Upstream `summarize` can also transcribe audio, extract slides, and fetch URLs. mktg **does not use those features** — Pillar 1 (`mktg-transcribe`), Pillar 4 (`firecrawl`), and Pillar 2 (`mktg-x`) own ingestion. You can skip all of these and still have a fully working mktg chain-in:
|
|
67
|
+
|
|
68
|
+
- `ffmpeg` — only needed for upstream's `--slides` mode (not used by mktg)
|
|
69
|
+
- `yt-dlp` — only needed for upstream's YouTube slide extraction (not used by mktg)
|
|
70
|
+
- `tesseract` — only needed for upstream's `--slides-ocr` (not used by mktg)
|
|
71
|
+
|
|
72
|
+
If you also want to use upstream `summarize` directly for URL/YouTube/PDF work outside mktg, install `ffmpeg` + `yt-dlp` via Homebrew. For mktg purposes, they are not dependencies.
|
|
73
|
+
|
|
74
|
+
## Optional model provider credentials
|
|
75
|
+
|
|
76
|
+
`summarize` routes text through an LLM. It auto-selects the best available provider from what you've configured. For mktg's needs, you can use **any** of:
|
|
77
|
+
|
|
78
|
+
- **Coding CLI providers** (zero API key, uses your existing login):
|
|
79
|
+
- `claude` — Claude Code CLI, authenticated via `claude auth`
|
|
80
|
+
- `codex` — Codex CLI, authenticated via `codex login`
|
|
81
|
+
- `gemini` — Gemini CLI
|
|
82
|
+
- `opencode` — OpenCode runtime
|
|
83
|
+
- **API keys** (if you prefer cloud models):
|
|
84
|
+
- `OPENAI_API_KEY`
|
|
85
|
+
- `ANTHROPIC_API_KEY`
|
|
86
|
+
- `GOOGLE_API_KEY` / `GEMINI_API_KEY`
|
|
87
|
+
- `GROQ_API_KEY`
|
|
88
|
+
- `OPENROUTER_API_KEY` (free tier: `summarize refresh-free`)
|
|
89
|
+
|
|
90
|
+
**mktg recommendation:** if you already have Claude Code installed (which you almost certainly do if you're reading this), let `summarize` fall back to `--cli claude`. Zero new keys, zero new bills, zero new auth flows. Set it once:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
summarize /tmp/test.txt --cli claude --plain
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
If the run succeeds, you're done — `--model auto` will prefer `claude` automatically in the future.
|
|
97
|
+
|
|
98
|
+
## If installation fails
|
|
99
|
+
|
|
100
|
+
### `command not found: summarize`
|
|
101
|
+
|
|
102
|
+
1. Check your npm global bin path is on `PATH`:
|
|
103
|
+
```bash
|
|
104
|
+
npm bin -g
|
|
105
|
+
echo $PATH
|
|
106
|
+
```
|
|
107
|
+
If the global bin dir is missing, add it to `~/.zshrc` / `~/.bashrc`.
|
|
108
|
+
2. Try npx as a sanity check:
|
|
109
|
+
```bash
|
|
110
|
+
npx -y @steipete/summarize --version
|
|
111
|
+
```
|
|
112
|
+
If that works but `summarize` alone doesn't, the binary never got symlinked — reinstall with `npm i -g --force @steipete/summarize`.
|
|
113
|
+
3. On Homebrew: run `brew doctor` and `brew link summarize`.
|
|
114
|
+
|
|
115
|
+
### `node: not found` or Node version errors
|
|
116
|
+
|
|
117
|
+
The package requires **Node 22+**. Upgrade:
|
|
118
|
+
- `brew install node@22 && brew link --overwrite node@22`
|
|
119
|
+
- `nvm install 22 && nvm alias default 22`
|
|
120
|
+
|
|
121
|
+
### `EACCES` permission errors on global install
|
|
122
|
+
|
|
123
|
+
Do NOT use `sudo`. Instead, fix npm's global prefix:
|
|
124
|
+
```bash
|
|
125
|
+
mkdir -p ~/.npm-global
|
|
126
|
+
npm config set prefix ~/.npm-global
|
|
127
|
+
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
|
|
128
|
+
source ~/.zshrc
|
|
129
|
+
npm i -g @steipete/summarize
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### "No model provider available"
|
|
133
|
+
|
|
134
|
+
If `summarize --version` works but running it fails with "no provider", configure one — see "Optional model provider credentials" above. The fastest path is `--cli claude` if Claude Code is installed.
|
|
135
|
+
|
|
136
|
+
### Windows / WSL notes
|
|
137
|
+
|
|
138
|
+
- WSL2 on Ubuntu: install Node 22 via `nvm`, then `npm i -g @steipete/summarize`. Homebrew on Linuxbrew works too.
|
|
139
|
+
- Native Windows PowerShell: use `npm i -g @steipete/summarize`. Make sure `%APPDATA%\npm` is on your PATH.
|
|
140
|
+
|
|
141
|
+
## Verify from mktg
|
|
142
|
+
|
|
143
|
+
After install, run `mktg doctor` — the summarize chain-in check turns green when the doctor entry is present. Until then, verify manually:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
summarize --version && echo "OK: summarize is chained in"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Upgrade path
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
npm update -g @steipete/summarize
|
|
153
|
+
# or
|
|
154
|
+
brew upgrade summarize
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Upstream releases are frequent; upgrade every few weeks to pick up new provider and model support. mktg tracks a review interval of 180 days on the skill manifest — treat that as the *minimum* cadence for re-reading this file, not the upper bound.
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: summarize-cli-usage
|
|
3
|
+
description: |
|
|
4
|
+
Idiomatic usage patterns, flag combinations, and output shapes for the `summarize` CLI when orchestrated from mktg.
|
|
5
|
+
Package: https://www.npmjs.com/package/@steipete/summarize
|
|
6
|
+
Source: https://github.com/steipete/summarize
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# summarize CLI Usage Patterns
|
|
10
|
+
|
|
11
|
+
How mktg skills and orchestrators should drive `summarize` in practice. Read [install.md](install.md) first if the binary is not present.
|
|
12
|
+
|
|
13
|
+
## Input shapes
|
|
14
|
+
|
|
15
|
+
`summarize` accepts three input modes. Use them in this order of preference for mktg work:
|
|
16
|
+
|
|
17
|
+
### 1. File path (preferred)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
summarize /path/to/input.md --length short --plain
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- Cleanest for agents. No quoting hell, no size limits beyond the LLM provider's own.
|
|
24
|
+
- Writes output to stdout. Redirect with `>` or `-o` patterns.
|
|
25
|
+
- Works with `.md`, `.txt`, `.json`, `.yaml`, `.xml`, plus `.pdf` if you want the upstream provider routing — but for mktg's Pillar 3 role, stick to plain text/markdown.
|
|
26
|
+
|
|
27
|
+
### 2. Stdin via `-`
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cat /tmp/article.md | summarize - --length medium --plain
|
|
31
|
+
pbpaste | summarize - --length short --plain
|
|
32
|
+
mktg transcribe "<url>" --json | jq -r '.data.transcript' | summarize - --plain
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- Use for piped chains (most common in mktg: `mktg-transcribe` → `summarize`).
|
|
36
|
+
- **50MB cap** upstream. Huge transcripts should be written to a file first, then use mode 1.
|
|
37
|
+
- Whitespace-only stdin is rejected with an error — don't pipe blank input.
|
|
38
|
+
- The literal `-` argument is how you tell summarize to read stdin. Forget it and you'll get "missing input".
|
|
39
|
+
|
|
40
|
+
### 3. URL / direct media (AVOID in mktg)
|
|
41
|
+
|
|
42
|
+
Upstream summarize accepts URLs, YouTube, podcasts, and PDFs directly. **Do not use this mode in mktg skills.** Pillar 1 (`mktg-transcribe`), Pillar 4 (`firecrawl`), and Pillar 2 (`mktg-x`) own ingestion. Let them extract, then hand the raw text to summarize.
|
|
43
|
+
|
|
44
|
+
## Output shapes
|
|
45
|
+
|
|
46
|
+
### Plain text (default for Pillar 3 chains)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
summarize input.md --length short --plain --no-color
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- `--plain` strips ANSI/OSC markdown rendering. Agents want the raw text.
|
|
53
|
+
- `--no-color` is belt-and-suspenders — some TTYs sneak color back in.
|
|
54
|
+
- Output goes to stdout. Redirect or capture as needed.
|
|
55
|
+
|
|
56
|
+
### JSON envelope (for agent consumption with metadata)
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
summarize input.md --length short --plain --json > .summarize/out.json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Produces a machine-readable envelope. Parse it with `jq`:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
jq -r '.summary' .summarize/out.json # the actual condensed text
|
|
66
|
+
jq '.metrics' .summarize/out.json # model used, tokens, latency
|
|
67
|
+
jq -r '.prompt' .summarize/out.json # the prompt sent to the LLM
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
- **Always write JSON output to `.summarize/`**, never into stdout-to-context. A single run can exceed 10KB of envelope noise.
|
|
71
|
+
- `.summarize/` should be in `.gitignore`. Treat it the same way firecrawl treats `.firecrawl/`.
|
|
72
|
+
|
|
73
|
+
### Extract-only (skip summarization, get the raw extract)
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
summarize "<url>" --extract --format md
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Not used by mktg — this is the upstream URL fetching path, which belongs to firecrawl in our system. Documented here for completeness.
|
|
80
|
+
|
|
81
|
+
## Length presets
|
|
82
|
+
|
|
83
|
+
`--length` is a **guideline**, not a hard cap. Upstream picks a character target:
|
|
84
|
+
|
|
85
|
+
| Preset | Target chars | When to use |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| `short` (or `s`) | ~900 (600–1,200) | Preview cards, hooks, one-sentence-gist requests |
|
|
88
|
+
| `medium` (or `m`) | ~1,800 (1,200–2,500) | **Default.** Exec summaries, TL;DR at the top of a memo |
|
|
89
|
+
| `long` (or `l`) | ~4,200 (2,500–6,000) | Detailed digests, newsletter intros, podcast rundowns |
|
|
90
|
+
| `xl` | ~9,000 (6,000–14,000) | Thorough condensations, long-form pre-reads |
|
|
91
|
+
| `xxl` | ~17,000 (14,000–22,000) | Near-full summaries (rare — if you want this, you probably want the full text) |
|
|
92
|
+
| Numeric (`--length 2500`) | Exact char target | When you have a specific UI slot to fill. Minimum 50. |
|
|
93
|
+
|
|
94
|
+
**Hard cap:** if you truly need the output to never exceed N tokens, add `--max-output-tokens <count>` (minimum 16). Prefer `--length` unless you need a provider-enforced ceiling.
|
|
95
|
+
|
|
96
|
+
**Short-input behavior:** when the extracted content is shorter than the requested length, upstream returns the content as-is without calling the LLM. Override with `--force-summary` if you need the LLM to run regardless (rare). mktg's On Activation check catches this *before* the subprocess call anyway — aim to not waste the round-trip.
|
|
97
|
+
|
|
98
|
+
## Model selection
|
|
99
|
+
|
|
100
|
+
mktg defaults to `--model auto` (which upstream picks automatically — you don't need to pass it). Auto ordering:
|
|
101
|
+
|
|
102
|
+
1. If `--cli <provider>` is explicit, use that.
|
|
103
|
+
2. If `cli.enabled` is set in `~/.summarize/config.json`, use those CLI providers in order.
|
|
104
|
+
3. If API keys are set for cloud providers, use them.
|
|
105
|
+
4. Fallback: try coding CLI providers (`claude`, `gemini`, `codex`, `agent`, `openclaw`, `opencode`) in order.
|
|
106
|
+
|
|
107
|
+
**Recommended default for mktg:**
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
summarize <input> --cli claude --plain --length short
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`--cli claude` routes to Claude Code (which the user almost certainly already has authenticated if they're using mktg). Zero new credentials, zero new rate limits.
|
|
114
|
+
|
|
115
|
+
To force a specific model:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
summarize input.md --model anthropic/claude-sonnet-4-5 --plain
|
|
119
|
+
summarize input.md --model openai/gpt-5-mini --plain
|
|
120
|
+
summarize input.md --model google/gemini-3-flash --plain
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Model IDs follow `<provider>/<model>`. Full list in upstream README. Don't hard-code a specific model in skills — let `--model auto` + `--cli claude` do the right thing.
|
|
124
|
+
|
|
125
|
+
## Timeouts and retries
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
summarize input.md --timeout 2m --retries 1
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
- `--timeout` accepts `30s`, `2m`, `5000ms`. Default is `2m`.
|
|
132
|
+
- `--retries` sets LLM retry attempts on timeout. Default is `1`.
|
|
133
|
+
- For agent loops, bump to `--timeout 5m --retries 2` if inputs are large (>20K chars).
|
|
134
|
+
|
|
135
|
+
## Verbose / diagnostics
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
summarize input.md --plain --verbose
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- `--verbose` writes debug/diagnostics to **stderr**. Never parse stderr as the summary.
|
|
142
|
+
- Useful when debugging "why did this pick model X" or "why did it fail silently".
|
|
143
|
+
- `--metrics detailed` prints extra metrics. Default is `on`.
|
|
144
|
+
|
|
145
|
+
## When to prefer summarize vs direct LLM summarization
|
|
146
|
+
|
|
147
|
+
**Prefer summarize (chain-in) when:**
|
|
148
|
+
- You want consistent output shape across agent loops (same CLI, same flags, same provider selection).
|
|
149
|
+
- You want free provider fallback via `--cli claude` / `--cli codex` / `--cli gemini`.
|
|
150
|
+
- You're in a pipeline (`mktg-transcribe | summarize | ...`) where a dedicated subprocess is cleaner than an inline LLM call.
|
|
151
|
+
- You want metrics/telemetry for summarization specifically (input chars, output chars, model, latency).
|
|
152
|
+
|
|
153
|
+
**Prefer direct LLM summarization (no chain-in) when:**
|
|
154
|
+
- The calling skill already has an LLM round-trip in flight and the summary is a byproduct.
|
|
155
|
+
- The input is short enough that the subprocess overhead outweighs the LLM call cost.
|
|
156
|
+
- The user doesn't have `summarize` installed and you're at L0 progressive-enhancement degradation — write the summary inline.
|
|
157
|
+
|
|
158
|
+
**Never use summarize when:**
|
|
159
|
+
- The content is structured data (JSON/CSV/code). Explain it natively instead.
|
|
160
|
+
- The input is already short (<500 words, <3000 chars). Return as-is.
|
|
161
|
+
- The caller explicitly wants the full content preserved (brand memory, legal, verbatim quotes).
|
|
162
|
+
|
|
163
|
+
## Common pitfalls
|
|
164
|
+
|
|
165
|
+
1. **Forgetting `--plain`.** Without it, output is streamed ANSI/OSC markdown with cursor codes. Looks pretty in a TTY, breaks in agent loops. Always pass `--plain` for programmatic consumption.
|
|
166
|
+
2. **Forgetting the `-` for stdin.** `cat foo | summarize` fails. You need `cat foo | summarize -`.
|
|
167
|
+
3. **Piping huge blobs directly into shell args.** Never `summarize "$(cat bigfile)"`. Always use mode 1 (file path) or mode 2 (stdin `-`). Shell argv has limits and escaping is a nightmare.
|
|
168
|
+
4. **Reading long summaries into agent context.** Use `.summarize/` file output + `head`/`grep` like firecrawl does.
|
|
169
|
+
5. **Assuming `--json` gives you just the summary.** The envelope includes metrics, prompt, and diagnostics. Use `jq -r '.summary'` to pluck the condensed text.
|
|
170
|
+
6. **Using upstream's URL/YouTube/PDF modes inside mktg.** Ingestion belongs to other pillars. Keep this skill scoped to text-in → text-out.
|
|
171
|
+
7. **Chaining `--force-summary` by default.** Only use it when you have a specific reason to force the LLM call over short content. Default off.
|
|
172
|
+
8. **Not handling exit codes.** If `summarize` fails (timeout, provider error, no content), it exits non-zero. Agents should check `$?` or equivalent and degrade gracefully — the caller's original content is still valid without a TL;DR.
|
|
173
|
+
|
|
174
|
+
## Parallelization
|
|
175
|
+
|
|
176
|
+
Independent summarization calls can run in parallel:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
summarize article-1.md --plain --length short > .summarize/1.md &
|
|
180
|
+
summarize article-2.md --plain --length short > .summarize/2.md &
|
|
181
|
+
summarize article-3.md --plain --length short > .summarize/3.md &
|
|
182
|
+
wait
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Watch out for provider rate limits — if you're using the same API key across 10 parallel calls, you'll hit 429s. Coding CLI providers (`--cli claude` etc.) are serialized locally so parallelism there is capped by your local CLI runtime.
|
|
186
|
+
|
|
187
|
+
## Cheat sheet
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Default mktg invocation
|
|
191
|
+
summarize input.md --plain --length short
|
|
192
|
+
|
|
193
|
+
# With claude fallback (zero new auth)
|
|
194
|
+
summarize input.md --cli claude --plain --length short
|
|
195
|
+
|
|
196
|
+
# Stdin from a pipe
|
|
197
|
+
cat input.md | summarize - --plain --length medium
|
|
198
|
+
|
|
199
|
+
# JSON envelope for telemetry
|
|
200
|
+
summarize input.md --plain --length short --json > .summarize/out.json
|
|
201
|
+
|
|
202
|
+
# Long-form digest
|
|
203
|
+
summarize input.md --plain --length long
|
|
204
|
+
|
|
205
|
+
# Hard token cap for UI slots
|
|
206
|
+
summarize input.md --plain --length 1200 --max-output-tokens 400
|
|
207
|
+
```
|