@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,459 @@
|
|
|
1
|
+
# ️ Claw Compactor
|
|
2
|
+
[](https://github.com/aeromomo/claw-compactor)
|
|
3
|
+
[](https://github.com/aeromomo/claw-compactor)
|
|
4
|
+
[](https://python.org)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://openclaw.ai)
|
|
7
|
+
[](https://github.com/aeromomo/claw-compactor/releases)
|
|
8
|
+
|
|
9
|
+
> **Cut your AI agent's token spend by 50–97%.**
|
|
10
|
+
> One command compresses your entire workspace — memory files, session transcripts,
|
|
11
|
+
> sub-agent context — using 6 layered techniques, from deterministic rule-engines
|
|
12
|
+
> to a real-time LLM-driven memory system called **Engram**.
|
|
13
|
+
|
|
14
|
+
*"Cut your tokens. Keep your facts."*
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Why Claw Compactor?
|
|
19
|
+
Running long-lived AI agents is expensive. Context windows fill up. Memory files bloat. Session transcripts grow to megabytes. Claw Compactor solves all three:
|
|
20
|
+
|
|
21
|
+
- **5 deterministic layers** — zero LLM cost, instant, fully reversible
|
|
22
|
+
- **Layer 6: Engram** — the real magic: a live, LLM-powered memory engine that observes conversations as they happen and compresses them into structured, priority-annotated knowledge
|
|
23
|
+
- **~97% savings** on raw session transcripts
|
|
24
|
+
- **One command** (`full`) to run everything
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
```bash
|
|
28
|
+
|
|
29
|
+
# 1. Clone
|
|
30
|
+
git clone https://github.com/aeromomo/claw-compactor.git
|
|
31
|
+
cd claw-compactor
|
|
32
|
+
|
|
33
|
+
# 2. Dry-run benchmark (non-destructive, no side effects)
|
|
34
|
+
python3 scripts/mem_compress.py /path/to/workspace benchmark
|
|
35
|
+
|
|
36
|
+
# 3. Compress everything
|
|
37
|
+
python3 scripts/mem_compress.py /path/to/workspace full
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Requirements:** Python 3.9+. No mandatory dependencies.
|
|
41
|
+
Optional: `pip install tiktoken` for exact token counts (falls back to CJK-aware heuristic).
|
|
42
|
+
|
|
43
|
+
For Engram (Layer 6): configure `engram.yaml` (or set `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` env vars).
|
|
44
|
+
|
|
45
|
+
## ️ Architecture
|
|
46
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
47
|
+
│ mem_compress.py │
|
|
48
|
+
│ (unified CLI entry point / dispatcher) │
|
|
49
|
+
└───┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬───────┘
|
|
50
|
+
│ │ │ │ │ │ │ │ │
|
|
51
|
+
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
|
|
52
|
+
estimate compress dict dedup observe tiers audit optimize engram
|
|
53
|
+
└──────┴──────┴──────┴──────┴──────┴──────┴──────┘ │
|
|
54
|
+
│ │
|
|
55
|
+
▼ ▼
|
|
56
|
+
┌────────────────────────┐ ┌─────────────────────────┐
|
|
57
|
+
│ scripts/lib/ │ │ ENGRAM ENGINE │
|
|
58
|
+
│ │ │ (Layer 6, real-time) │
|
|
59
|
+
│ tokens.py │ │ │
|
|
60
|
+
│ ↳ tiktoken fallback │ │ engram.py │
|
|
61
|
+
│ markdown.py │ │ ↳ EngramEngine │
|
|
62
|
+
│ ↳ section parsing │ │ ↳ Observer Agent │
|
|
63
|
+
│ dedup.py │ │ ↳ Reflector Agent │
|
|
64
|
+
│ ↳ shingle hashing │ │ │
|
|
65
|
+
│ dictionary.py │ │ engram_storage.py │
|
|
66
|
+
│ ↳ $XX codebook │ │ ↳ atomic file I/O │
|
|
67
|
+
│ rle.py │ │ ↳ JSONL pending log │
|
|
68
|
+
│ ↳ path/IP/enum │ │ │
|
|
69
|
+
│ tokenizer_optimizer │ │ engram_prompts.py │
|
|
70
|
+
│ ↳ format fixes │ │ ↳ Observer prompt │
|
|
71
|
+
│ config.py │ │ ↳ Reflector prompt │
|
|
72
|
+
│ exceptions.py │ └─────────────────────────┘
|
|
73
|
+
└────────────────────────┘
|
|
74
|
+
|
|
75
|
+
Engram Memory Layout (per thread / 每个会话线程):
|
|
76
|
+
memory/engram/{thread_id}/
|
|
77
|
+
├── pending.jsonl ← raw messages buffer (auto-cleared after observe)
|
|
78
|
+
├── observations.md ← Observer output, append-only structured log
|
|
79
|
+
├── reflections.md ← Reflector output, compressed long-term memory
|
|
80
|
+
└── meta.json ← timestamps, token counts
|
|
81
|
+
|
|
82
|
+
## Compression Layers
|
|
83
|
+
| 1 | **Rule Engine** | Dedup lines, strip markdown filler, merge sections | 4–8% | Lossless |
|
|
84
|
+
| 2 | **Dictionary Encoding** | Auto-learned codebook, `$XX` substitution | 4–5% | Lossless |
|
|
85
|
+
| 3 | **Observation Compression** | Session JSONL → structured summaries | ~97% | Lossy* |
|
|
86
|
+
| 4 | **RLE Patterns** | Path shorthand (`$WS`), IP prefix, enum compaction | 1–2% | Lossless |
|
|
87
|
+
| 5 | **Compressed Context Protocol** | ultra/medium/light abbreviation | 20–60% | Lossy* |
|
|
88
|
+
| 6 | **Engram** | LLM-driven real-time Observational Memory | 3–6× | LLM required† |
|
|
89
|
+
|
|
90
|
+
\*Lossy techniques preserve all facts and decisions; only verbose formatting is removed.
|
|
91
|
+
†Layer 6 requires `ANTHROPIC_API_KEY` or `OPENAI_API_KEY`.
|
|
92
|
+
|
|
93
|
+
## Engram — Layer 6: Observational Memory
|
|
94
|
+
> Engram is the flagship feature of Claw Compactor. While the first 5 layers
|
|
95
|
+
> batch-process static files, **Engram works live** — it watches conversations
|
|
96
|
+
> as they unfold and continuously compresses them into a structured,
|
|
97
|
+
> priority-annotated knowledge base.
|
|
98
|
+
|
|
99
|
+
### How It Works
|
|
100
|
+
Incoming Messages
|
|
101
|
+
│
|
|
102
|
+
▼
|
|
103
|
+
┌─────────────┐ threshold exceeded
|
|
104
|
+
│ pending │ ──────────────────────► ┌─────────────────┐
|
|
105
|
+
│ queue │ (30K tokens) │ Observer LLM │
|
|
106
|
+
│ (JSONL) │ │ Agent │
|
|
107
|
+
└─────────────┘ │ │
|
|
108
|
+
│ Raw messages │
|
|
109
|
+
│ → structured │
|
|
110
|
+
│ observation │
|
|
111
|
+
│ log 🟡🟢 │
|
|
112
|
+
└────────┬────────┘
|
|
113
|
+
append to observations.md
|
|
114
|
+
clear pending queue
|
|
115
|
+
observation_tokens > 40K?
|
|
116
|
+
▼ yes
|
|
117
|
+
┌─────────────────┐
|
|
118
|
+
│ Reflector LLM │
|
|
119
|
+
│ Agent │
|
|
120
|
+
│ All observations│
|
|
121
|
+
│ → compressed │
|
|
122
|
+
│ long-term │
|
|
123
|
+
│ reflection │
|
|
124
|
+
overwrite reflections.md
|
|
125
|
+
|
|
126
|
+
### Auto-Trigger Mechanism
|
|
127
|
+
Auto-triggering happens **every time `add_message()` is called**:
|
|
128
|
+
|
|
129
|
+
1. **Observer** fires when `pending.jsonl` exceeds `OM_OBSERVER_THRESHOLD` (default: 30,000 tokens)
|
|
130
|
+
2. **Reflector** fires when `observations.md` exceeds `OM_REFLECTOR_THRESHOLD` (default: 40,000 tokens)
|
|
131
|
+
|
|
132
|
+
Both thresholds can be tuned per-session — set lower for faster compression, higher to batch more context.
|
|
133
|
+
|
|
134
|
+
### Daemon Mode
|
|
135
|
+
For real-time streaming integration, run Engram as a daemon that reads JSONL from stdin:
|
|
136
|
+
|
|
137
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
138
|
+
|
|
139
|
+
# Start daemon — pipe messages in real-time
|
|
140
|
+
python3 scripts/engram_cli.py /workspace daemon --thread live-session
|
|
141
|
+
|
|
142
|
+
# In another process, pipe messages:
|
|
143
|
+
echo '{"role":"user","content":"Building OpenCompress today"}' | \
|
|
144
|
+
|
|
145
|
+
# Control commands (also via stdin):
|
|
146
|
+
echo '{"__cmd":"observe"}' # force observe now
|
|
147
|
+
echo '{"__cmd":"reflect"}' # force reflect now
|
|
148
|
+
echo '{"__cmd":"status"}' # print thread status
|
|
149
|
+
echo '{"__cmd":"quit"}' # exit daemon
|
|
150
|
+
|
|
151
|
+
### Observation Format
|
|
152
|
+
Observations use a priority-annotated, bilingual (EN/中文) format:
|
|
153
|
+
|
|
154
|
+
Date: 2026-03-05
|
|
155
|
+
- 12:10 User building OpenCompress; deadline within one week / 用户在构建 OpenCompress,deadline 一周内
|
|
156
|
+
- 12:10 Using ModernBERT-large for inference / 使用 ModernBERT-large 做推理
|
|
157
|
+
- 🟡 12:12 Discussed training data annotation strategy / 讨论了训练数据标注策略
|
|
158
|
+
- 🟢 12:15 Mentioned benchmark results are promising / 提到 benchmark 结果不错
|
|
159
|
+
- 🟡 12:30 Switched to deployment pipeline discussion on M3 Ultra
|
|
160
|
+
- 🟢 12:45 User prefers concise, structured replies
|
|
161
|
+
|
|
162
|
+
**Priority legend (优先级):**
|
|
163
|
+
- **Critical** — user goals, hard deadlines, blockers, key decisions (never dropped)
|
|
164
|
+
- 🟡 **Important** — technical details, ongoing work, significant context
|
|
165
|
+
- 🟢 **Useful** — background info, mentions, soft context (pruned after 7 days if unreferenced)
|
|
166
|
+
|
|
167
|
+
# Check all thread statuses
|
|
168
|
+
python3 scripts/engram_cli.py /workspace status
|
|
169
|
+
|
|
170
|
+
# Add a message (auto-triggers observe/reflect at threshold)
|
|
171
|
+
python3 -c "
|
|
172
|
+
from scripts.lib.engram import EngramEngine
|
|
173
|
+
eng = EngramEngine('/path/to/workspace')
|
|
174
|
+
eng.add_message('my-thread', role='user', content='Building OpenCompress today')
|
|
175
|
+
ctx = eng.build_system_context('my-thread')
|
|
176
|
+
print(ctx)
|
|
177
|
+
"
|
|
178
|
+
|
|
179
|
+
# Force observe for a thread
|
|
180
|
+
python3 scripts/engram_cli.py /workspace observe --thread my-thread
|
|
181
|
+
|
|
182
|
+
# Force reflect
|
|
183
|
+
python3 scripts/engram_cli.py /workspace reflect --thread my-thread
|
|
184
|
+
|
|
185
|
+
# Import conversation from JSONL file
|
|
186
|
+
python3 scripts/engram_cli.py /workspace ingest \
|
|
187
|
+
--thread my-thread --input conversation.jsonl
|
|
188
|
+
|
|
189
|
+
# Print injectable system context
|
|
190
|
+
python3 scripts/engram_cli.py /workspace context --thread my-thread
|
|
191
|
+
|
|
192
|
+
# Via unified entry point (mem_compress.py)
|
|
193
|
+
python3 scripts/mem_compress.py /workspace engram status
|
|
194
|
+
python3 scripts/mem_compress.py /workspace engram observe --thread my-thread
|
|
195
|
+
|
|
196
|
+
### Engram Auto-Mode (Multi-Channel, Concurrent)
|
|
197
|
+
The recommended way to run Engram in production is via the **auto-mode scripts**, which
|
|
198
|
+
automatically detect all active threads, process them concurrently, and apply observe/reflect
|
|
199
|
+
based on threshold triggers.
|
|
200
|
+
|
|
201
|
+
# Single run — auto-detects all threads in workspace
|
|
202
|
+
python3 scripts/engram_auto.py --workspace ~/.openclaw/workspace
|
|
203
|
+
|
|
204
|
+
# Via shell wrapper (same, with logging)
|
|
205
|
+
bash scripts/engram-auto.sh
|
|
206
|
+
|
|
207
|
+
# CLI equivalents
|
|
208
|
+
python3 scripts/engram_cli.py <workspace> auto --config engram.yaml
|
|
209
|
+
python3 scripts/engram_cli.py <workspace> status --thread openclaw-main
|
|
210
|
+
python3 scripts/engram_cli.py <workspace> observe --thread openclaw-main
|
|
211
|
+
python3 scripts/engram_cli.py <workspace> reflect --thread openclaw-main
|
|
212
|
+
|
|
213
|
+
**Auto-detected thread sources:**
|
|
214
|
+
- Discord channels: `#general`, `#open-compress`, `#aimm`, and others
|
|
215
|
+
- OpenClaw internals: `cron`, `subagent`, `openclaw-main`
|
|
216
|
+
- Any JSONL session files found in `sessions.scan_dir`
|
|
217
|
+
|
|
218
|
+
**Concurrency:** Uses `ThreadPoolExecutor` with 4 workers (configurable via `concurrency.max_workers`
|
|
219
|
+
in `engram.yaml`) for parallel thread processing.
|
|
220
|
+
|
|
221
|
+
**Retry mechanism:** All LLM HTTP calls use automatic exponential-backoff retry:
|
|
222
|
+
- Retries on: `429`, `500`, `502`, `503`, `504`
|
|
223
|
+
- Delays: `2s → 4s → 8s` (max 3 attempts)
|
|
224
|
+
- No retry on: `400`, `401`, `403` (configuration errors — fail fast)
|
|
225
|
+
|
|
226
|
+
### Engram Configuration (`engram.yaml`)
|
|
227
|
+
The preferred way to configure Engram is via `engram.yaml` in the project root:
|
|
228
|
+
|
|
229
|
+
```yaml
|
|
230
|
+
llm:
|
|
231
|
+
provider: openai-compatible # "anthropic" or "openai-compatible"
|
|
232
|
+
base_url: http://localhost:8403 # endpoint for openai-compatible provider
|
|
233
|
+
api_key_env: OPENAI_API_KEY # env var holding the API key
|
|
234
|
+
model: claude-code/sonnet # model identifier
|
|
235
|
+
max_tokens: 4096 # max output tokens per LLM call
|
|
236
|
+
|
|
237
|
+
threads:
|
|
238
|
+
default:
|
|
239
|
+
observer_threshold: 30000 # pending-message tokens before Observer fires
|
|
240
|
+
reflector_threshold: 40000 # observation tokens before Reflector fires
|
|
241
|
+
|
|
242
|
+
# Optional per-thread overrides:
|
|
243
|
+
# discord-general:
|
|
244
|
+
# observer_threshold: 20000
|
|
245
|
+
|
|
246
|
+
sessions:
|
|
247
|
+
scan_dir: ~/.openclaw/agents/main/sessions # where to find session JSONL files
|
|
248
|
+
max_age_hours: 48 # ignore sessions older than this
|
|
249
|
+
|
|
250
|
+
storage:
|
|
251
|
+
base_dir: ~/.openclaw/workspace/memory/engram # Engram memory root
|
|
252
|
+
|
|
253
|
+
concurrency:
|
|
254
|
+
max_workers: 4 # parallel thread workers
|
|
255
|
+
|
|
256
|
+
logging:
|
|
257
|
+
level: INFO
|
|
258
|
+
|
|
259
|
+
**Environment variables (alternative to `engram.yaml`):**
|
|
260
|
+
ANTHROPIC_API_KEY=sk-ant-... # Preferred LLM provider (Anthropic)
|
|
261
|
+
OPENAI_API_KEY=sk-... # OpenAI-compatible API key
|
|
262
|
+
OPENAI_BASE_URL=https://... # Custom endpoint (local LLM, etc.)
|
|
263
|
+
OM_OBSERVER_THRESHOLD=30000 # Tokens before auto-observe (default: 30000)
|
|
264
|
+
OM_REFLECTOR_THRESHOLD=40000 # Tokens before auto-reflect (default: 40000)
|
|
265
|
+
OM_MODEL=claude-opus-4-5 # Override LLM model
|
|
266
|
+
|
|
267
|
+
### Threshold Tuning Guide
|
|
268
|
+
Thresholds control how often Observer/Reflector fire. Lower = more frequent (fresher memory,
|
|
269
|
+
higher LLM cost). Higher = less frequent (lower cost, slightly stale context).
|
|
270
|
+
|
|
271
|
+
**Real-world channel token production (measured):**
|
|
272
|
+
|
|
273
|
+
#aimm, Daily Tokens=~149K, Observer @30K=~5×/day, Observer @10K=~15×/day
|
|
274
|
+
openclaw-main, Daily Tokens=~138K, Observer @30K=~4.5×/day, Observer @10K=~14×/day
|
|
275
|
+
#open-compress, Daily Tokens=~68K, Observer @30K=~2.3×/day, Observer @10K=~7×/day
|
|
276
|
+
#general, Daily Tokens=~62K, Observer @30K=~2×/day, Observer @10K=~6×/day
|
|
277
|
+
subagent, Daily Tokens=~43K, Observer @30K=~1.4×/day, Observer @10K=~4×/day
|
|
278
|
+
cron, Daily Tokens=~9K, Observer @30K=~0.3×/day, Observer @10K=~1×/day
|
|
279
|
+
**Total**, Daily Tokens=**~470K/day**, Observer @30K=**~16×/day**, Observer @10K=**~47×/day**
|
|
280
|
+
|
|
281
|
+
**LLM cost at different thresholds** (each Observer call ≈ 2K output tokens, Sonnet):
|
|
282
|
+
|
|
283
|
+
30K (default), Observer Calls/Day=~16, Est. Output Tokens/Day=~32K
|
|
284
|
+
10K, Observer Calls/Day=~47, Est. Output Tokens/Day=~94K
|
|
285
|
+
|
|
286
|
+
**Recommendation:** Start at `observer_threshold: 30000`. Tune down if context feels stale;
|
|
287
|
+
tune up to reduce LLM spend. Reflector threshold can stay at `40000` (fires less often).
|
|
288
|
+
|
|
289
|
+
**Python API:**
|
|
290
|
+
```python
|
|
291
|
+
|
|
292
|
+
engine = EngramEngine(
|
|
293
|
+
workspace_path="/path/to/workspace",
|
|
294
|
+
observer_threshold=30_000, # tune lower for fresher context
|
|
295
|
+
reflector_threshold=40_000,
|
|
296
|
+
anthropic_api_key="sk-ant-...", # or set env var
|
|
297
|
+
model="claude-opus-4-5", # optional model override
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
# Add messages — auto-triggers observe/reflect as needed
|
|
301
|
+
status = engine.add_message("thread-1", role="user", content="Hello!")
|
|
302
|
+
|
|
303
|
+
# Build injectable context string for system prompt
|
|
304
|
+
ctx_str = engine.build_system_context("thread-1")
|
|
305
|
+
|
|
306
|
+
### Engram vs. `observe` (Layer 3)
|
|
307
|
+
Input source, `observe` (Layer 3)=OpenClaw session `.jsonl` files, Engram (Layer 6)=Any messages via Python API
|
|
308
|
+
Trigger, `observe` (Layer 3)=Manual / cron, Engram (Layer 6)=Auto on `add_message()`
|
|
309
|
+
LLM required, `observe` (Layer 3)=No (rule-based), Engram (Layer 6)=Yes (Anthropic / OpenAI)
|
|
310
|
+
Output format, `observe` (Layer 3)=Plain observation MD, Engram (Layer 6)=Structured 🟡🟢 priority log
|
|
311
|
+
Storage location, `observe` (Layer 3)=`memory/observations/`, Engram (Layer 6)=`memory/engram/{thread}/`
|
|
312
|
+
Reflector stage, `observe` (Layer 3)=No, Engram (Layer 6)=Yes (long-term compression)
|
|
313
|
+
Daemon mode, `observe` (Layer 3)=No, Engram (Layer 6)=Yes (stdin JSONL streaming)
|
|
314
|
+
|
|
315
|
+
## All Commands
|
|
316
|
+
python3 scripts/mem_compress.py <workspace> <command> [options]
|
|
317
|
+
|
|
318
|
+
`full`, Description=Complete pipeline (all steps in order), Typical Savings=50%+ combined
|
|
319
|
+
`benchmark`, Description=Dry-run performance report (non-destructive), Typical Savings=—
|
|
320
|
+
`compress`, Description=Rule-based compression (Layer 1), Typical Savings=4–8%
|
|
321
|
+
`dict`, Description=Dictionary encoding with auto-codebook (Layer 2), Typical Savings=4–5%
|
|
322
|
+
`observe`, Description=Session transcript → observations (Layer 3), Typical Savings=~97%
|
|
323
|
+
`tiers`, Description=Generate L0/L1/L2 summaries, Typical Savings=88–95% on sub-agent loads
|
|
324
|
+
`dedup`, Description=Cross-file duplicate detection, Typical Savings=varies
|
|
325
|
+
`estimate`, Description=Token count report, Typical Savings=—
|
|
326
|
+
`audit`, Description=Workspace health check, Typical Savings=—
|
|
327
|
+
`optimize`, Description=Tokenizer-level format fixes (Layer 5), Typical Savings=1–3%
|
|
328
|
+
`engram`, Description=LLM Observational Memory (Layer 6), Typical Savings=3–6× compression
|
|
329
|
+
|
|
330
|
+
**Global options:**
|
|
331
|
+
- `--json` — Machine-readable JSON output
|
|
332
|
+
- `--dry-run` — Preview changes without writing
|
|
333
|
+
- `--since YYYY-MM-DD` — Filter sessions by date
|
|
334
|
+
- `--auto-merge` — Auto-merge duplicates (dedup)
|
|
335
|
+
|
|
336
|
+
## Benchmarks
|
|
337
|
+
Real-world compression results on OpenClaw agent workspaces:
|
|
338
|
+
|
|
339
|
+
Session transcripts (JSONL), Technique=`observe` (Layer 3), Savings=**~97%**
|
|
340
|
+
Verbose / new workspace, Technique=`full` pipeline, Savings=**50–70%**
|
|
341
|
+
Regular maintenance, Technique=`full` pipeline, Savings=**10–20%**
|
|
342
|
+
Already-optimized workspace, Technique=`full` pipeline, Savings=**3–12%**
|
|
343
|
+
Long-running agent memory, Technique=Engram (Layer 6), Savings=**3–6×**
|
|
344
|
+
|
|
345
|
+
**Combined effect:** 50% token reduction + prompt caching (90% cost discount) = **~95% effective cost reduction** on repeated context.
|
|
346
|
+
|
|
347
|
+
### Engram vs. Other Strategies (Benchmark)
|
|
348
|
+
Averaged across 5 conversation samples (DevOps, trading, ML, mixed-long, sysadmin):
|
|
349
|
+
|
|
350
|
+
| **Engram (L6)** | 0.125 | **87.5%** | 0.038 | 0.414 | ~35s | 2 |
|
|
351
|
+
| RandomDrop | 0.785 | 21.5% | 0.852 | 0.911 | ~0ms | 0 |
|
|
352
|
+
| RuleCompressor (L1–5) | 0.910 | 9.0% | 0.923 | 0.958 | ~6ms | 0 |
|
|
353
|
+
| NoCompression | 1.000 | 0% | 1.000 | 1.000 | ~0ms | 0 |
|
|
354
|
+
|
|
355
|
+
**Key insights:**
|
|
356
|
+
- **Engram ROUGE-L is low** because it *semantically restructures* rather than copying verbatim — it preserves intent, not wording
|
|
357
|
+
- **RuleCompressor (L1–5)** is best for instant prompt compression (zero latency, zero LLM cost)
|
|
358
|
+
- **Engram** is best for long-term memory compression (87.5% space savings, meaning you keep 8× more history in the same token budget)
|
|
359
|
+
- Full per-sample results → [`benchmark/RESULTS.md`](benchmark/RESULTS.md)
|
|
360
|
+
|
|
361
|
+
## OpenClaw Integration
|
|
362
|
+
Claw Compactor ships as an installable OpenClaw skill. When installed, the agent runs compression automatically:
|
|
363
|
+
|
|
364
|
+
### Auto Mode (every session start)
|
|
365
|
+
python3 scripts/mem_compress.py <workspace> auto
|
|
366
|
+
|
|
367
|
+
This: compresses all workspace files, tracks token counts between runs, and reports savings at session start.
|
|
368
|
+
|
|
369
|
+
### Heartbeat / Cron Automation
|
|
370
|
+
```markdown
|
|
371
|
+
|
|
372
|
+
## Memory Maintenance (weekly)
|
|
373
|
+
- Run: python3 skills/claw-compactor/scripts/mem_compress.py <workspace> benchmark
|
|
374
|
+
- If savings > 5%: run full pipeline
|
|
375
|
+
- If pending transcripts: run observe
|
|
376
|
+
|
|
377
|
+
Cron example (weekly, Sunday 3am):
|
|
378
|
+
0 3 * * 0 cd /path/to/skills/claw-compactor && \
|
|
379
|
+
|
|
380
|
+
### cacheRetention — Complementary Optimization
|
|
381
|
+
Enable **prompt caching** for a 90% discount on cached tokens:
|
|
382
|
+
|
|
383
|
+
```json
|
|
384
|
+
{
|
|
385
|
+
"agents": {
|
|
386
|
+
"defaults": {
|
|
387
|
+
"models": {
|
|
388
|
+
"anthropic/claude-opus-4-6": {
|
|
389
|
+
"params": { "cacheRetention": "long" }
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
> Compression reduces token **count**; caching reduces cost **per token**.
|
|
393
|
+
> Together: 50% compression × 90% cache discount = **95% effective cost reduction**.
|
|
394
|
+
|
|
395
|
+
## ️ Configuration
|
|
396
|
+
Optional `claw-compactor-config.json` in workspace root:
|
|
397
|
+
|
|
398
|
+
"chars_per_token": 4,
|
|
399
|
+
"level0_max_tokens": 200,
|
|
400
|
+
"level1_max_tokens": 500,
|
|
401
|
+
"dedup_similarity_threshold": 0.6,
|
|
402
|
+
"dedup_shingle_size": 3
|
|
403
|
+
|
|
404
|
+
All fields optional — sensible defaults apply when absent.
|
|
405
|
+
|
|
406
|
+
## Output Artifacts
|
|
407
|
+
- `memory/.codebook.json`: Dictionary codebook (must travel with memory files)
|
|
408
|
+
- `memory/.observed-sessions.json`: Tracks which transcripts have been processed
|
|
409
|
+
- `memory/observations/`: Layer 3 compressed session summaries
|
|
410
|
+
- `memory/engram/{thread}/observations.md`: Engram: Observer output (append-only)
|
|
411
|
+
- `memory/engram/{thread}/reflections.md`: Engram: Reflector output (latest)
|
|
412
|
+
- `memory/engram/{thread}/pending.jsonl`: Engram: unobserved message buffer
|
|
413
|
+
- `memory/MEMORY-L0.md`: Level 0 summary (~200 tokens)
|
|
414
|
+
|
|
415
|
+
## FAQ
|
|
416
|
+
**Q: Will compression lose my data?**
|
|
417
|
+
A: Rule engine, dictionary, RLE, and tokenizer optimization are fully lossless. Observation compression (Layer 3) and Engram (Layer 6) are lossy but preserve all facts and decisions — only verbose formatting is removed.
|
|
418
|
+
|
|
419
|
+
**Q: How does dictionary decompression work?**
|
|
420
|
+
A: `decompress_text(text, codebook)` expands all `$XX` codes back. The codebook JSON must be present (`memory/.codebook.json`).
|
|
421
|
+
|
|
422
|
+
**Q: Can I run individual steps?**
|
|
423
|
+
A: Yes — every command is independent: `compress`, `dict`, `observe`, `tiers`, `dedup`, `optimize`, `engram`.
|
|
424
|
+
|
|
425
|
+
**Q: What if tiktoken isn't installed?**
|
|
426
|
+
A: Falls back to a CJK-aware heuristic (`chars ÷ 4`). Results are ~90% accurate.
|
|
427
|
+
|
|
428
|
+
**Q: Does it handle Chinese/Japanese/Unicode?**
|
|
429
|
+
A: Yes. Full CJK support including character-aware token estimation and Chinese punctuation normalization.
|
|
430
|
+
|
|
431
|
+
**Q: How does Engram differ from just running `observe`?**
|
|
432
|
+
A: `observe` (Layer 3) is a batch processor for static JSONL files. Engram is a live engine: it works on any messages, triggers automatically, adds a Reflector stage for long-term distillation, and outputs structured priority logs.
|
|
433
|
+
|
|
434
|
+
**Q: Can I use Engram with a local LLM?**
|
|
435
|
+
A: Yes — set `OPENAI_BASE_URL` to your local OpenAI-compatible endpoint (e.g., LM Studio, Ollama).
|
|
436
|
+
|
|
437
|
+
## Troubleshooting
|
|
438
|
+
- `FileNotFoundError` on workspace: Ensure path points to workspace root (contains `memory/` or `MEMORY.md`)
|
|
439
|
+
- Dictionary decompression fails: Check `memory/.codebook.json` exists and is valid JSON
|
|
440
|
+
- Zero savings on `benchmark`: Workspace is already optimized
|
|
441
|
+
- `observe` finds no transcripts: Check `sessions/` directory for `.jsonl` files
|
|
442
|
+
- Token count seems wrong: Install tiktoken: `pip3 install tiktoken`
|
|
443
|
+
- Engram: "no API key configured": Set `ANTHROPIC_API_KEY` or `OPENAI_API_KEY`
|
|
444
|
+
- Engram Observer returns None: No pending messages for that thread yet
|
|
445
|
+
|
|
446
|
+
## Contributing
|
|
447
|
+
Contributions welcome! Please:
|
|
448
|
+
1. Fork the repository
|
|
449
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
450
|
+
3. Ensure tests pass: `python3 -m pytest tests/ -v`
|
|
451
|
+
4. Commit with a clear message
|
|
452
|
+
5. Open a Pull Request
|
|
453
|
+
|
|
454
|
+
## Credits
|
|
455
|
+
- Inspired by [claude-mem](https://github.com/thedotmack/claude-mem) by thedotmack
|
|
456
|
+
- Built by Bot777 for [OpenClaw](https://openclaw.ai)
|
|
457
|
+
|
|
458
|
+
## License
|
|
459
|
+
MIT — see [LICENSE](LICENSE) for details.
|