@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,44 @@
|
|
|
1
|
+
# References
|
|
2
|
+
Technical documentation for claw-compactor internals.
|
|
3
|
+
|
|
4
|
+
## Files
|
|
5
|
+
- **compression-techniques.md** — Deep dive into all 5 compression techniques
|
|
6
|
+
- **benchmarks.md** — Real-world performance measurements
|
|
7
|
+
- **architecture.md** — System architecture and module relationships
|
|
8
|
+
- **testing.md** — Test strategy and coverage goals
|
|
9
|
+
- **compression-prompts.md** — LLM prompt templates for observation compression
|
|
10
|
+
|
|
11
|
+
## Key Design Decisions
|
|
12
|
+
|
|
13
|
+
### Dictionary Encoding
|
|
14
|
+
The codebook uses `$XX` codes (uppercase alpha) to avoid conflicts with:
|
|
15
|
+
- Shell variables (`$lower_case`)
|
|
16
|
+
- Markdown formatting (`**bold**`)
|
|
17
|
+
- Natural text (`$100`, `$USD`)
|
|
18
|
+
|
|
19
|
+
Code length starts at 3 chars (`$AA`) and grows to 4 (`$AAA`) after 676 entries.
|
|
20
|
+
|
|
21
|
+
### Workspace Path Shorthand
|
|
22
|
+
`$WS` replaces the full workspace path. This is the single highest-value substitution for most workspaces since the path appears in every file reference.
|
|
23
|
+
|
|
24
|
+
Example codebook:
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"$A1": "example_user",
|
|
28
|
+
"$A2": "10.0.1",
|
|
29
|
+
"$A3": "workspace"
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Before:** `ssh deploy@10.0.1.2` / `ssh admin@10.0.1.3`
|
|
34
|
+
**After:** `ssh deploy@$A2.2` / `ssh admin@$A2.3`
|
|
35
|
+
|
|
36
|
+
### Token Estimation
|
|
37
|
+
Two backends:
|
|
38
|
+
1. **tiktoken** (preferred) — exact cl100k_base encoding, same as Claude models
|
|
39
|
+
2. **Heuristic fallback** — CJK-aware chars÷4 approximation, ~90% accurate
|
|
40
|
+
|
|
41
|
+
### Workspace paths
|
|
42
|
+
- `/home/user/workspace` → `$WS`
|
|
43
|
+
|
|
44
|
+
All path compression is fully reversible via `decompress_paths()`.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
## System Overview
|
|
4
|
+
claw-compactor is a modular compression pipeline with a single entry point (`mem_compress.py`) that routes to specialized compressors, all sharing a common library layer.
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
┌──────────────────────┐
|
|
8
|
+
│ mem_compress.py │
|
|
9
|
+
│ 553 lines │
|
|
10
|
+
│ │
|
|
11
|
+
│ • CLI argument parsing │
|
|
12
|
+
│ • Command routing │
|
|
13
|
+
│ • Pipeline orchestrator│
|
|
14
|
+
│ • Progress reporting │
|
|
15
|
+
└──────────┬─────────────┘
|
|
16
|
+
│
|
|
17
|
+
┌──────────┬───────────┬───┴────┬──────────┬──────────┬─────────┐
|
|
18
|
+
▼ ▼ ▼ ▼ ▼ ▼ ▼
|
|
19
|
+
┌─────────┐ ┌────────┐ ┌────────┐ ┌──────┐ ┌────────┐ ┌───────┐ ┌──────┐
|
|
20
|
+
│compress │ │dict_ │ │observ- │ │dedup │ │generate│ │audit │ │estim-│
|
|
21
|
+
│_memory │ │compress│ │ation_ │ │_mem │ │_summary│ │_memory│ │ate_ │
|
|
22
|
+
│ │ │ │ │compres-│ │ │ │_tiers │ │ │ │tokens│
|
|
23
|
+
│ 230 LOC │ │ 170 LOC│ │sor │ │147LOC│ │ 292 LOC│ │216LOC │ │131LOC│
|
|
24
|
+
│ │ │ │ │ 346 LOC│ │ │ │ │ │ │ │ │
|
|
25
|
+
└────┬────┘ └───┬────┘ └───┬────┘ └──┬───┘ └───┬────┘ └──┬────┘ └──┬───┘
|
|
26
|
+
│ │ │ │ │ │ │
|
|
27
|
+
└──────────┴───────────┴────┬────┴─────────┴─────────┴─────────┘
|
|
28
|
+
▼
|
|
29
|
+
┌─────────────────┐
|
|
30
|
+
│ lib/ │
|
|
31
|
+
│ tokens.py 68 │ Token estimation engine
|
|
32
|
+
│ markdown.py 312 │ MD parsing & manipulation
|
|
33
|
+
│ dedup.py 119 │ Shingle-hash dedup
|
|
34
|
+
│ dictionary.py273│ Codebook compression
|
|
35
|
+
│ rle.py 165 │ Run-length encoding
|
|
36
|
+
│ tokenizer_ │
|
|
37
|
+
│ optimizer 188 │ Format optimization
|
|
38
|
+
│ config.py 81 │ JSON config loading
|
|
39
|
+
│ exceptions 24 │ Custom exception types
|
|
40
|
+
└─────────────────┘
|
|
41
|
+
Total: 3,602 LOC
|
|
42
|
+
|
|
43
|
+
## Data Flow: Full Pipeline
|
|
44
|
+
┌──────────────────────┐ ┌──────────────────────┐
|
|
45
|
+
│ memory/*.md │ │ .openclaw/agents/*/sessions/ │
|
|
46
|
+
│ MEMORY.md │ │ *.jsonl │
|
|
47
|
+
│ TOOLS.md, etc. │ │ (raw transcripts) │
|
|
48
|
+
└──────────┬───────────┘ └──────────┬────────────┘
|
|
49
|
+
▼ ▼
|
|
50
|
+
│ 1. estimate_tokens │ │ 2. observation_ │
|
|
51
|
+
│ Baseline count │ │ compressor │
|
|
52
|
+
│ (read-only) │ │ JSONL → XML → MD │
|
|
53
|
+
└──────────┬───────────┘ │ 97% compression │
|
|
54
|
+
│ └──────────┬────────────┘
|
|
55
|
+
▼ │
|
|
56
|
+
┌──────────────────────┐ │
|
|
57
|
+
│ 3. compress_memory │ │
|
|
58
|
+
│ Rule engine: │ ▼
|
|
59
|
+
│ • dedup lines │ ┌──────────────────────┐
|
|
60
|
+
│ • strip redundancy │ │ memory/observations/ │
|
|
61
|
+
│ • merge sections │ │ (compressed output) │
|
|
62
|
+
└──────────┬───────────┘ └────────────────────────┘
|
|
63
|
+
│ 4. dictionary_ │
|
|
64
|
+
│ compress │
|
|
65
|
+
│ Build codebook → │
|
|
66
|
+
│ Apply $XX codes │
|
|
67
|
+
└──────────┬───────────┘
|
|
68
|
+
│ 5. dedup_memory │ │ memory/.codebook.json│
|
|
69
|
+
│ Cross-file scan │ │ (codebook artifact) │
|
|
70
|
+
│ Shingle hashing │ └────────────────────────┘
|
|
71
|
+
│ 6. generate_ │────▶│ memory/MEMORY-L0.md │
|
|
72
|
+
│ summary_tiers │ │ memory/MEMORY-L1.md │
|
|
73
|
+
│ L0/L1/L2 budgets │ │ (tier summaries) │
|
|
74
|
+
└──────────────────────┘ └────────────────────────┘
|
|
75
|
+
|
|
76
|
+
## Module Responsibilities
|
|
77
|
+
|
|
78
|
+
### Entry Point
|
|
79
|
+
**`mem_compress.py`** (553 LOC)
|
|
80
|
+
The unified CLI. Parses arguments, routes to the appropriate command handler, and orchestrates the full pipeline. Handles progress reporting, JSON output mode, and error formatting.
|
|
81
|
+
|
|
82
|
+
### Compressor Modules
|
|
83
|
+
**`compress_memory.py`** (230 LOC)
|
|
84
|
+
Two-phase memory compression. Phase 1: deterministic rule engine (dedup lines, strip markdown filler, merge similar sections). Phase 2: optional LLM prompt generation for semantic compression. Operates on `.md` files in the workspace.
|
|
85
|
+
|
|
86
|
+
**`dictionary_compress.py`** (170 LOC)
|
|
87
|
+
CLI wrapper around `lib/dictionary.py`. Scans workspace markdown files, builds/loads codebook, applies/reverses compression. Manages the `.codebook.json` artifact.
|
|
88
|
+
|
|
89
|
+
**`observation_compressor.py`** (346 LOC)
|
|
90
|
+
Parses OpenClaw `.jsonl` session transcripts, extracts tool call interactions, classifies them by type (feature, bugfix, decision, etc.), and generates structured observation summaries. The single biggest source of savings (~97%). Tracks processed sessions in `.observed-sessions.json`.
|
|
91
|
+
|
|
92
|
+
**`dedup_memory.py`** (147 LOC)
|
|
93
|
+
Cross-file near-duplicate detection. Uses shingle hashing (n-gram fingerprinting) with Jaccard similarity. Reports duplicates or optionally auto-merges them.
|
|
94
|
+
|
|
95
|
+
**`generate_summary_tiers.py`** (292 LOC)
|
|
96
|
+
Creates L0/L1/L2 summaries from MEMORY.md. Classifies sections by priority (decision > action > config > log > archive), then fills each tier within its token budget, highest-priority sections first.
|
|
97
|
+
|
|
98
|
+
**`estimate_tokens.py`** (131 LOC)
|
|
99
|
+
Token counting and compression potential scoring. Scans all markdown files, reports per-file and total token usage. Identifies files with high compression potential.
|
|
100
|
+
|
|
101
|
+
**`audit_memory.py`** (216 LOC)
|
|
102
|
+
Health checker. Reports staleness (files not updated recently), bloat (high token/info ratio), and compression opportunities. Suggests specific actions.
|
|
103
|
+
|
|
104
|
+
**`compressed_context.py`** (280 LOC)
|
|
105
|
+
Compressed Context Protocol. Three compression levels (ultra/medium/light) for context passing between models. Generates decompression instructions for the receiving model's system prompt.
|
|
106
|
+
|
|
107
|
+
### Library Layer
|
|
108
|
+
**`lib/tokens.py`** (68 LOC)
|
|
109
|
+
Token estimation. Uses tiktoken's `cl100k_base` encoding when available, falls back to a CJK-aware heuristic (Chinese characters count as 1.5 tokens, others as chars÷4). Single function: `estimate_tokens(text) → int`.
|
|
110
|
+
|
|
111
|
+
**`lib/markdown.py`** (312 LOC)
|
|
112
|
+
Markdown parsing utilities. Section extraction by header level, section merging, content normalization, Chinese punctuation handling, header classification by priority keywords.
|
|
113
|
+
|
|
114
|
+
**`lib/dedup.py`** (119 LOC)
|
|
115
|
+
Shingle-hash deduplication engine. Generates n-gram (shingle) sets from text, computes Jaccard similarity between shingle sets, and groups entries by approximate length to reduce comparison space. O(n×k) instead of O(n²).
|
|
116
|
+
|
|
117
|
+
**`lib/dictionary.py`** (273 LOC)
|
|
118
|
+
The codebook engine. Scans text for n-gram frequencies (1-4 words), scores candidates by `freq × (len(phrase) - len(code)) - codebook_overhead`, builds a codebook of `$XX` codes, and provides `compress_text`/`decompress_text` as perfect inverses.
|
|
119
|
+
|
|
120
|
+
**`lib/rle.py`** (165 LOC)
|
|
121
|
+
Run-length encoding for structured patterns. Path compression (`$WS` shorthand), IP prefix extraction (`$IP` codes), and enumeration detection. All with roundtrip decompression.
|
|
122
|
+
|
|
123
|
+
**`lib/tokenizer_optimizer.py`** (188 LOC)
|
|
124
|
+
Encoding-aware format transformations. Converts markdown tables to key:value notation (60-70% savings), normalizes Chinese fullwidth punctuation, strips bold/italic/backtick markers, minimizes whitespace and indentation, compacts bullet lists.
|
|
125
|
+
|
|
126
|
+
**`lib/config.py`** (81 LOC)
|
|
127
|
+
Configuration loader. Reads `claw-compactor-config.json` from workspace root, merges with sensible defaults. All settings optional.
|
|
128
|
+
|
|
129
|
+
**`lib/exceptions.py`** (24 LOC)
|
|
130
|
+
Custom exception hierarchy: `MemCompressError` (base), `FileNotFoundError_`, etc.
|
|
131
|
+
|
|
132
|
+
## Layer 0: cacheRetention (Before Compression)
|
|
133
|
+
Before any compression runs, **prompt caching** (`cacheRetention: "long"`) provides a 90% discount on cached prompt tokens with a 1-hour TTL. This is orthogonal to compression — it reduces cost on whatever tokens remain.
|
|
134
|
+
|
|
135
|
+
Cost reduction stack:
|
|
136
|
+
Layer 0: cacheRetention: "long" → 90% cost discount on cached tokens
|
|
137
|
+
Layer 1: observe (transcripts) → ~97% token reduction
|
|
138
|
+
Layer 2: compress (rule engine) → 4-8% token reduction
|
|
139
|
+
Layer 3: dict (codebook) → 4-5% token reduction
|
|
140
|
+
Layer 4: optimize (tokenizer) → 1-3% token reduction
|
|
141
|
+
|
|
142
|
+
Layers 1-4 reduce token count. Layer 0 reduces cost-per-token. They multiply.
|
|
143
|
+
|
|
144
|
+
## Heartbeat Integration Flow
|
|
145
|
+
┌─────────────────────────┐
|
|
146
|
+
│ Heartbeat fires │
|
|
147
|
+
│ (every ~30 min) │
|
|
148
|
+
└────────────┬────────────┘
|
|
149
|
+
│ Read HEARTBEAT.md │
|
|
150
|
+
│ → memory maintenance? │
|
|
151
|
+
│ yes
|
|
152
|
+
│ Run: benchmark │
|
|
153
|
+
│ (non-destructive) │
|
|
154
|
+
┌────┴────┐
|
|
155
|
+
│ >5% ? │
|
|
156
|
+
└────┬────┘
|
|
157
|
+
yes │ │ no
|
|
158
|
+
┌──────────────┐│
|
|
159
|
+
│ Run: full ││
|
|
160
|
+
│ pipeline ││
|
|
161
|
+
└──────────────┘│
|
|
162
|
+
│◀──┘
|
|
163
|
+
│ New transcripts? │
|
|
164
|
+
│ (unprocessed JSONL) │
|
|
165
|
+
┌──────────────┐ HEARTBEAT_OK
|
|
166
|
+
│ Run: observe │
|
|
167
|
+
└──────────────┘
|
|
168
|
+
|
|
169
|
+
**Trigger logic:** The agent checks `HEARTBEAT.md` for a memory maintenance entry. If present, it runs `benchmark` first (cheap read-only). Only if savings exceed 5% does it commit to the full pipeline. New unprocessed transcripts always trigger `observe` regardless of benchmark results.
|
|
170
|
+
|
|
171
|
+
## Design Decisions
|
|
172
|
+
|
|
173
|
+
### Why shingle hashing for deduplication?
|
|
174
|
+
Naive pairwise comparison is O(n²) — unacceptable for workspaces with hundreds of sections. Shingle hashing (n-gram fingerprinting) gives us:
|
|
175
|
+
- O(n × k) complexity where k is the number of shingles per entry
|
|
176
|
+
- 3-word shingles with MD5 fingerprints provide good collision resistance
|
|
177
|
+
- Jaccard similarity on shingle sets is a well-studied near-duplicate metric
|
|
178
|
+
- Bucketing by approximate length further reduces comparisons
|
|
179
|
+
|
|
180
|
+
### Why tiktoken with heuristic fallback?
|
|
181
|
+
tiktoken gives exact token counts but requires compilation (Rust dependency). Many environments don't have it installed. The fallback heuristic (chars÷4, CJK-aware) is ~90% accurate — good enough for compression decisions. No hard dependency means the skill works out of the box everywhere.
|
|
182
|
+
|
|
183
|
+
### Why `$XX` codes instead of longer variable names?
|
|
184
|
+
Two-character codes minimize per-occurrence overhead. The codebook scoring function accounts for this: a phrase is only worth encoding if `freq × (len(phrase) - len(code)) > codebook_overhead`. Short codes win because the overhead term (the codebook entry itself) is amortized across many occurrences.
|
|
185
|
+
|
|
186
|
+
### Why section-level priority scoring for tiers?
|
|
187
|
+
Not all memory content is equal. A decision about architecture is worth more context tokens than a log of which files were edited. Priority classification (decision > action > config > log > archive) ensures L0 summaries contain the most important information, even at ~200 tokens.
|
|
188
|
+
|
|
189
|
+
### Why non-destructive by default?
|
|
190
|
+
Agents make mistakes. Every write operation is opt-in: `--dry-run` shows stats, `dedup` reports without modifying, `benchmark` never writes. This is critical for trust — users need to verify before committing to changes.
|
|
191
|
+
|
|
192
|
+
### Why XML format for observations (inspired by claude-mem)?
|
|
193
|
+
Structured XML (`<observation>`, `<type>`, `<title>`, `<facts>`) is:
|
|
194
|
+
1. Unambiguous to parse (unlike free-form markdown)
|
|
195
|
+
2. Token-efficient (tags are reusable tokens in cl100k_base)
|
|
196
|
+
3. Compatible with claude-mem's proven format
|
|
197
|
+
4. Easy to classify and search programmatically
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Performance Benchmarks
|
|
2
|
+
|
|
3
|
+
## Methodology
|
|
4
|
+
All benchmarks run on a production workspace with:
|
|
5
|
+
- 30 days of active daily use
|
|
6
|
+
- 15 memory files (MEMORY.md, TOOLS.md, AGENTS.md, SOUL.md, daily notes)
|
|
7
|
+
- 173 session transcripts (.jsonl files)
|
|
8
|
+
- Python 3.12, tiktoken installed
|
|
9
|
+
|
|
10
|
+
Token counts use tiktoken `cl100k_base` encoding (same as Claude models). All measurements are deterministic — same input produces same output every run.
|
|
11
|
+
|
|
12
|
+
## Memory File Compression
|
|
13
|
+
Workspace: all `.md` files in root + `memory/`
|
|
14
|
+
|
|
15
|
+
| Rule Engine | 11,855 | 11,398 | 457 | 3.9% |
|
|
16
|
+
| Dictionary Encoding | 11,398 | 10,891 | 507 | 4.4% |
|
|
17
|
+
| Tokenizer Optimization | 10,891 | 10,766 | 125 | 1.1% |
|
|
18
|
+
| RLE Patterns | 10,766 | 10,710 | 56 | 0.5% |
|
|
19
|
+
| **Total** | **11,855** | **10,710** | **1,145** | **9.7%** |
|
|
20
|
+
|
|
21
|
+
### Per-File Breakdown
|
|
22
|
+
| TOOLS.md | 3,421 | 2,985 | 12.7% | High repetition (IPs, paths) |
|
|
23
|
+
| MEMORY.md | 4,102 | 3,810 | 7.1% | Mixed content |
|
|
24
|
+
| AGENTS.md | 2,156 | 2,044 | 5.2% | Mostly prose, less compressible |
|
|
25
|
+
| memory/2024-01-15.md | 892 | 831 | 6.8% | Daily notes |
|
|
26
|
+
| memory/2024-01-14.md | 734 | 690 | 6.0% | Daily notes |
|
|
27
|
+
| SOUL.md | 550 | 540 | 1.8% | Short, unique content |
|
|
28
|
+
|
|
29
|
+
**Observation:** Files with repetitive structured data (TOOLS.md) compress best. Short, unique prose (SOUL.md) compresses least.
|
|
30
|
+
|
|
31
|
+
## Session Transcript Compression
|
|
32
|
+
173 session transcripts:
|
|
33
|
+
|
|
34
|
+
- Total transcripts: 173 files
|
|
35
|
+
- Total raw size: ~4.5M tokens
|
|
36
|
+
- After observation compression: ~135K tokens
|
|
37
|
+
- Compression ratio: **97%**
|
|
38
|
+
- Average per session (before): ~26,000 tokens
|
|
39
|
+
|
|
40
|
+
### By Session Type
|
|
41
|
+
Long coding session (>100 tool calls), Avg Raw=52,000, Avg Compressed=1,200, Ratio=97.7%
|
|
42
|
+
Config/setup session, Avg Raw=18,000, Avg Compressed=520, Ratio=97.1%
|
|
43
|
+
Research/browsing session, Avg Raw=31,000, Avg Compressed=890, Ratio=97.1%
|
|
44
|
+
Short task (<10 tool calls), Avg Raw=4,200, Avg Compressed=280, Ratio=93.3%
|
|
45
|
+
|
|
46
|
+
## Tiered Summary Savings
|
|
47
|
+
MEMORY.md (4,102 tokens) → tiered summaries:
|
|
48
|
+
|
|
49
|
+
L0 (Ultra-compact), Token Budget=200, Actual=187, Savings vs Full=95.4%
|
|
50
|
+
L1 (Normal), Token Budget=500, Actual=478, Savings vs Full=88.4%
|
|
51
|
+
L2 (Full), Token Budget=—, Actual=4,102, Savings vs Full=0%
|
|
52
|
+
|
|
53
|
+
**Impact on sub-agents:** A sub-agent loading L0 instead of full MEMORY.md saves 3,915 tokens per spawn. At 20 sub-agent spawns/day, that's 78,300 tokens/day saved.
|
|
54
|
+
|
|
55
|
+
## Independent Technique Contribution
|
|
56
|
+
Each technique measured independently (not cumulative):
|
|
57
|
+
|
|
58
|
+
Rule engine alone, Savings on Memory Files=3.9%, Notes=Dedup + strip + merge
|
|
59
|
+
Dictionary alone, Savings on Memory Files=4.8%, Notes=Before rule engine (slightly higher)
|
|
60
|
+
Tokenizer optimize alone, Savings on Memory Files=1.4%, Notes=Tables → key:value biggest win
|
|
61
|
+
RLE alone, Savings on Memory Files=0.7%, Notes=Path-dependent
|
|
62
|
+
Combined, Savings on Memory Files=9.7%, Notes=Less than sum (some overlap)
|
|
63
|
+
|
|
64
|
+
## Token Cost Savings Estimate
|
|
65
|
+
Based on Anthropic's Claude pricing (as of 2024):
|
|
66
|
+
|
|
67
|
+
| Claude Sonnet 4 | $3/M tokens | 15M tokens | $45.00 | $22.50 | **$22.50** |
|
|
68
|
+
| Claude Opus 4 | $15/M tokens | 15M tokens | $225.00 | $112.50 | **$112.50** |
|
|
69
|
+
| Claude Haiku 3.5 | $0.25/M tokens | 15M tokens | $3.75 | $1.88 | **$1.88** |
|
|
70
|
+
|
|
71
|
+
*Estimate for active daily use: 50 sessions × 10 context loads each × 30K avg tokens per load.
|
|
72
|
+
|
|
73
|
+
### Breakdown by Source
|
|
74
|
+
| Session transcripts | 4.5M | 97% | 4.365M | $13.10 |
|
|
75
|
+
| Memory file loads | 8.5M* | 10% | 850K | $2.55 |
|
|
76
|
+
| Sub-agent context | 2M* | 88% (L0) | 1.76M | $5.28 |
|
|
77
|
+
| **Total** | **15M** | **46.5%** | **6.975M** | **$20.93** |
|
|
78
|
+
|
|
79
|
+
*Estimated from session frequency × tokens per load.
|
|
80
|
+
|
|
81
|
+
## Execution Performance
|
|
82
|
+
Benchmark runtime (Apple Silicon, 64GB RAM):
|
|
83
|
+
|
|
84
|
+
`estimate`, Time=0.3s, Notes=Token counting only
|
|
85
|
+
`compress` (rule engine), Time=0.8s, Notes=15 files
|
|
86
|
+
`dict` (build + compress), Time=1.2s, Notes=N-gram scanning
|
|
87
|
+
`dedup`, Time=0.5s, Notes=Shingle computation
|
|
88
|
+
`observe` (1 session), Time=0.1s, Notes=Rule-based extraction
|
|
89
|
+
`observe` (173 sessions), Time=8.2s, Notes=Batch processing
|
|
90
|
+
`tiers`, Time=0.4s, Notes=Summary generation
|
|
91
|
+
`full` (complete pipeline), Time=11.5s, Notes=All steps
|
|
92
|
+
`benchmark` (dry-run), Time=2.1s, Notes=Read-only analysis
|
|
93
|
+
|
|
94
|
+
All operations are I/O-bound, not CPU-bound. The bottleneck is reading/writing markdown files.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Compression Prompts
|
|
2
|
+
LLM prompts used by claw-compactor, adapted from claude-mem's observation compression approach.
|
|
3
|
+
|
|
4
|
+
## Design Rationale
|
|
5
|
+
Claude-mem captures tool observations as structured XML (`<observation>` → type, title, facts, narrative, concepts). Our prompts adapt this principle for flat markdown memory files — extracting and preserving the same categories of information while aggressively removing filler.
|
|
6
|
+
|
|
7
|
+
Key insight from claude-mem: **facts and decisions are the most token-efficient form of memory**. Narratives add context but cost 5-10× more tokens. Our compression targets facts first.
|
|
8
|
+
|
|
9
|
+
## Compression Prompt (used by compress_memory.py)
|
|
10
|
+
```
|
|
11
|
+
You are a memory compression specialist. Compress the following memory
|
|
12
|
+
content while preserving ALL factual information, decisions, and action items.
|
|
13
|
+
|
|
14
|
+
Rules:
|
|
15
|
+
- Remove filler words, redundant explanations, and verbose formatting
|
|
16
|
+
- Merge related items into concise bullet points
|
|
17
|
+
- Preserve dates, names, numbers, and technical details exactly
|
|
18
|
+
- Keep section structure but tighten headers
|
|
19
|
+
- Target: reduce to ~{target_pct}% of original size
|
|
20
|
+
- Output valid markdown
|
|
21
|
+
|
|
22
|
+
Content to compress:
|
|
23
|
+
---
|
|
24
|
+
{content}
|
|
25
|
+
|
|
26
|
+
Compressed version:
|
|
27
|
+
|
|
28
|
+
### Why this prompt works
|
|
29
|
+
- "ALL factual information" prevents lossy compression of key data
|
|
30
|
+
- "dates, names, numbers, technical details exactly" preserves identifiers (IPs, IDs, versions)
|
|
31
|
+
- "section structure" maintains navigability
|
|
32
|
+
- Explicit target percentage gives the model a concrete goal
|
|
33
|
+
|
|
34
|
+
## Tier Summary Prompts
|
|
35
|
+
Not currently LLM-generated — tiers use algorithmic section selection based on priority scores and token budgets. This is more deterministic and reproducible than LLM-based summarization.
|
|
36
|
+
|
|
37
|
+
If LLM-based tier generation is desired, use compress_memory.py's prompt with modified targets:
|
|
38
|
+
- Level 0: target_pct=5 with additional instruction "key-value pairs only"
|
|
39
|
+
- Level 1: target_pct=15 with additional instruction "organized sections"
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Compression Techniques
|
|
2
|
+
claw-compactor applies 5 independent compression techniques in a layered pipeline. Each targets a different source of token waste and can run independently.
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 1. Rule-Based Compression
|
|
7
|
+
**Module:** `compress_memory.py` + `lib/markdown.py`
|
|
8
|
+
**Typical savings:** 4-8% on memory files
|
|
9
|
+
**Lossless:** Yes
|
|
10
|
+
|
|
11
|
+
The rule engine applies deterministic transformations that remove redundancy without losing any information.
|
|
12
|
+
|
|
13
|
+
### Rules Applied
|
|
14
|
+
Exact dedup, Description=Remove duplicate lines within a section, Typical Impact=1-3%
|
|
15
|
+
Near-dedup merge, Description=Merge sections with >60% Jaccard similarity, Typical Impact=1-2%
|
|
16
|
+
Whitespace strip, Description=Collapse excessive blank lines, trailing spaces, Typical Impact=0.5-1%
|
|
17
|
+
Empty section removal, Description=Remove headers with no body content, Typical Impact=0.5%
|
|
18
|
+
Markdown filler, Description=Strip unnecessary bold/italic/backtick markers, Typical Impact=0.5-1%
|
|
19
|
+
Chinese punctuation, Description=Fullwidth `,.!` → halfwidth `,.!` (saves 1 token each), Typical Impact=0-1%
|
|
20
|
+
|
|
21
|
+
### Before / After
|
|
22
|
+
**Before:**
|
|
23
|
+
```markdown
|
|
24
|
+
|
|
25
|
+
## Remote Machines
|
|
26
|
+
|
|
27
|
+
### Production Server
|
|
28
|
+
- IP: 10.0.2.1, Internal: 10.0.1.2, User: deploy
|
|
29
|
+
|
|
30
|
+
- Internal IP: 10.0.2.1, IP: 10.0.1.2, SSH user: deploy
|
|
31
|
+
- SSH: `ssh -i ~/.ssh/server_key.pem deploy@10.0.2.1`
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**After:**
|
|
37
|
+
|
|
38
|
+
The duplicate "Production Server" section was merged (near-dedup), and the empty "Notes" section was removed.
|
|
39
|
+
|
|
40
|
+
## 2. Dictionary Encoding
|
|
41
|
+
**Module:** `dictionary_compress.py` + `lib/dictionary.py`
|
|
42
|
+
**Typical savings:** 4-5% on memory files
|
|
43
|
+
**Lossless:** Yes (perfect roundtrip)
|
|
44
|
+
|
|
45
|
+
### How It Works
|
|
46
|
+
1. **Scan** — Analyze all workspace markdown files for n-gram frequencies (1-4 words)
|
|
47
|
+
2. **Score** — For each candidate phrase: `score = freq × (len(phrase) - len(code)) - codebook_overhead`
|
|
48
|
+
3. **Build** — Select top-scoring phrases, assign `$A1`, `$A2`, ... codes
|
|
49
|
+
4. **Compress** — Replace all occurrences of phrases with their codes
|
|
50
|
+
5. **Store** — Save codebook to `memory/.codebook.json`
|
|
51
|
+
|
|
52
|
+
### Codebook Format
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"version": 1,
|
|
56
|
+
"entries": {
|
|
57
|
+
"$A1": "example_user",
|
|
58
|
+
"$A2": "10.0.1",
|
|
59
|
+
"$A3": "workspace",
|
|
60
|
+
"$A4": "server_key.pem",
|
|
61
|
+
"$A5": "my-secret-token-2024"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
**Before (TOOLS.md excerpt):**
|
|
65
|
+
- user: example_user
|
|
66
|
+
- SSH: ssh -i ~/.ssh/server_key.pem deploy@10.0.1.2
|
|
67
|
+
- IP: 10.0.1.1, Token: my-secret-token-2024, Workspace: /home/user/workspace
|
|
68
|
+
|
|
69
|
+
- user: $A1
|
|
70
|
+
- SSH: ssh -i ~/.ssh/$A4 deploy@$A2.2
|
|
71
|
+
- IP: $A2.1, Token: $A5, Workspace: /home/$A1/$A3
|
|
72
|
+
|
|
73
|
+
### Roundtrip Guarantee
|
|
74
|
+
`decompress_text(compress_text(text, codebook), codebook) == text` — always. The compression and decompression functions are perfect inverses. This is verified by 50+ roundtrip tests covering edge cases (overlapping phrases, adjacent codes, Unicode, empty input).
|
|
75
|
+
|
|
76
|
+
### Collision Avoidance
|
|
77
|
+
Codes use the `$` prefix followed by uppercase alphanumeric characters. The codebook builder checks that no code is a substring of another code and that no code appears naturally in the source text.
|
|
78
|
+
|
|
79
|
+
## 3. Session Observation Compression
|
|
80
|
+
**Module:** `observation_compressor.py`
|
|
81
|
+
**Typical savings:** ~97% on session transcripts
|
|
82
|
+
**Lossless:** No (facts preserved, verbosity removed)
|
|
83
|
+
|
|
84
|
+
This is the single largest source of savings. Raw session transcripts contain verbose tool output — file contents, command results, API responses — most of which is never needed again.
|
|
85
|
+
|
|
86
|
+
### Pipeline
|
|
87
|
+
.jsonl transcript (26,000 tokens)
|
|
88
|
+
│
|
|
89
|
+
▼
|
|
90
|
+
Parse messages → extract tool calls
|
|
91
|
+
Classify interactions → [feature|bugfix|decision|discovery|config|...]
|
|
92
|
+
Rule-based extraction → key facts, errors, decisions
|
|
93
|
+
Generate LLM prompt (optional) → structured XML
|
|
94
|
+
Format as markdown observation (~780 tokens)
|
|
95
|
+
|
|
96
|
+
### Observation XML Format
|
|
97
|
+
```xml
|
|
98
|
+
<observations>
|
|
99
|
+
<observation>
|
|
100
|
+
<type>config</type>
|
|
101
|
+
<title>Network configured for multi-node setup</title>
|
|
102
|
+
<facts>
|
|
103
|
+
- Gateway: 10.0.1.1, Remote node: 10.0.1.2, Worker: 10.0.1.3
|
|
104
|
+
</facts>
|
|
105
|
+
<narrative>Set up mesh network connecting 3 nodes</narrative>
|
|
106
|
+
</observation>
|
|
107
|
+
</observations>
|
|
108
|
+
|
|
109
|
+
**Before (raw session, 847 lines):**
|
|
110
|
+
{"role":"assistant","content":"Let me check the network..."}
|
|
111
|
+
{"role":"tool","name":"exec","content":"network status\n200 OK...\n"}
|
|
112
|
+
{"role":"assistant","content":"Good, the network is active. Let me check peers..."}
|
|
113
|
+
... (800+ more lines of tool output)
|
|
114
|
+
|
|
115
|
+
**After (observation, 12 lines):**
|
|
116
|
+
|
|
117
|
+
## 1. [config] Multi-Node Network Setup
|
|
118
|
+
**Facts:**
|
|
119
|
+
- Gateway: 10.0.1.1, Remote node: 10.0.1.2, All peers connected
|
|
120
|
+
|
|
121
|
+
**Result:** 3-node mesh network operational
|
|
122
|
+
|
|
123
|
+
## 4. RLE Pattern Compression
|
|
124
|
+
**Module:** `lib/rle.py`
|
|
125
|
+
**Typical savings:** 1-2%
|
|
126
|
+
**Lossless:** Yes (roundtrip supported)
|
|
127
|
+
|
|
128
|
+
Targets three categories of structured repetitive data:
|
|
129
|
+
|
|
130
|
+
### Path Compression
|
|
131
|
+
Long workspace paths are replaced with `$WS`:
|
|
132
|
+
|
|
133
|
+
Before: /home/user/workspace/skills/claw-compactor/scripts/lib/tokens.py
|
|
134
|
+
After: $WS/skills/claw-compactor/scripts/lib/tokens.py
|
|
135
|
+
|
|
136
|
+
Decompression: `decompress_paths(text, "/home/user/workspace")`
|
|
137
|
+
|
|
138
|
+
### IP Family Compression
|
|
139
|
+
When multiple IPs share a common prefix (≥2 occurrences), the prefix is extracted:
|
|
140
|
+
|
|
141
|
+
Before:
|
|
142
|
+
- 10.0.1.1
|
|
143
|
+
|
|
144
|
+
After:
|
|
145
|
+
$IP1=10.0.1.
|
|
146
|
+
- $IP1.1
|
|
147
|
+
|
|
148
|
+
### Enumeration Compaction
|
|
149
|
+
Detects comma-separated uppercase lists and compacts them:
|
|
150
|
+
|
|
151
|
+
Before: The supported types are FEATURE, BUGFIX, DECISION, DISCOVERY, CONFIG, DEPLOYMENT, DATA, INVESTIGATION
|
|
152
|
+
After: Types: [FEATURE,BUGFIX,DECISION,DISCOVERY,CONFIG,DEPLOYMENT,DATA,INVESTIGATION]
|
|
153
|
+
|
|
154
|
+
## 5. Compressed Context Protocol (CCP)
|
|
155
|
+
**Module:** `compressed_context.py`
|
|
156
|
+
**Typical savings:** 20-60% depending on level
|
|
157
|
+
**Lossless:** No (designed for model consumption)
|
|
158
|
+
|
|
159
|
+
CCP is designed for a specific use case: compress context on a cheap model, then feed it to an expensive model. The receiving model gets decompression instructions in its system prompt.
|
|
160
|
+
|
|
161
|
+
### Three Levels
|
|
162
|
+
|
|
163
|
+
#### Ultra (40-60% compression)
|
|
164
|
+
Aggressive abbreviation + filler removal. The output looks telegraphic:
|
|
165
|
+
|
|
166
|
+
John has approximately 15 years of experience in software development,
|
|
167
|
+
with a focus on infrastructure and cloud architecture. He is the
|
|
168
|
+
Chief Executive Officer of TechCorp, based in San Francisco.
|
|
169
|
+
|
|
170
|
+
John ~15y exp software dev, focus infra+cloud arch. CEO: TechCorp, loc:SF
|
|
171
|
+
|
|
172
|
+
Decompression instruction:
|
|
173
|
+
"Compressed notation: key:val=attribute, loc:X=location,
|
|
174
|
+
Ny+=N+ years, slash-separated=alternatives. Expand naturally."
|
|
175
|
+
|
|
176
|
+
#### Medium (20-35% compression)
|
|
177
|
+
Moderate abbreviation with key:value notation:
|
|
178
|
+
|
|
179
|
+
The application server runs on port 8080 with a maximum of 256
|
|
180
|
+
concurrent connections. The database connection pool is configured
|
|
181
|
+
with 20 minimum and 50 maximum connections.
|
|
182
|
+
|
|
183
|
+
App server: port 8080, max 256 concurrent conns.
|
|
184
|
+
DB pool: min 20, max 50 conns.
|
|
185
|
+
|
|
186
|
+
#### Light (10-20% compression)
|
|
187
|
+
Light condensation only — remains fully human-readable:
|
|
188
|
+
|
|
189
|
+
We decided to use PostgreSQL instead of MySQL for the new project
|
|
190
|
+
because it has better support for JSON columns and more advanced
|
|
191
|
+
indexing capabilities that we need for our search functionality.
|
|
192
|
+
|
|
193
|
+
Decision: PostgreSQL over MySQL — better JSON column support
|
|
194
|
+
and advanced indexing for search needs.
|
|
195
|
+
|
|
196
|
+
### Decompression Instructions
|
|
197
|
+
Each level generates a decompression instruction block to prepend to the receiving model's system prompt:
|
|
198
|
+
|
|
199
|
+
Ultra: "Compressed notation: key:val=attribute, loc:X=location, ..."
|
|
200
|
+
Medium: "Text uses abbreviated notation: key:value pairs, condensed lists, ..."
|
|
201
|
+
Light: "Text is lightly condensed. Read normally."
|
|
202
|
+
|
|
203
|
+
## Technique Comparison
|
|
204
|
+
| Rule engine | 4-8% | | Zero | Memory files |
|
|
205
|
+
| Dictionary | 4-5% | | Zero | Repetitive workspaces |
|
|
206
|
+
| Observation | ~97% | * | Zero or 1 LLM call | Session transcripts |
|
|
207
|
+
| RLE | 1-2% | | Zero | Path-heavy, IP-heavy docs |
|
|
208
|
+
| CCP | 20-60% | | Zero | Cross-model context passing |
|
|
209
|
+
|
|
210
|
+
*Observation compression preserves all facts and decisions; only verbose tool output is removed.
|
|
211
|
+
|
|
212
|
+
## Pipeline Interaction
|
|
213
|
+
The techniques are designed to compose:
|
|
214
|
+
|
|
215
|
+
1. **Rule engine first** — removes obvious waste before dictionary scoring
|
|
216
|
+
2. **Dictionary second** — works on cleaner text, better phrase detection
|
|
217
|
+
3. **RLE alongside dictionary** — different targets, no interference
|
|
218
|
+
4. **Observation runs independently** — operates on transcripts, not memory files
|
|
219
|
+
5. **CCP runs last or standalone** — can compress already-compressed output further
|