ashlr-plugin 1.36.4
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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +39 -0
- package/.claude-plugin/plugin.json +36 -0
- package/.codex/agents/README.md +9 -0
- package/.codex/agents/ashlr-explorer.md +36 -0
- package/.codex/agents/ashlr-worker.md +38 -0
- package/.codex-plugin/plugin.json +45 -0
- package/.mcp.json +14 -0
- package/LICENSE +21 -0
- package/README.md +311 -0
- package/agents/ashlr-code.md +69 -0
- package/agents/ashlr-explore.md +44 -0
- package/agents/ashlr-plan.md +54 -0
- package/bench/fixtures/notebook-large.ipynb +660 -0
- package/bench/fixtures/notebook-small.ipynb +39 -0
- package/bench/fixtures/tasklist-closed.json +62 -0
- package/bench/fixtures/tasklist-large-mixed.json +27 -0
- package/bench/fixtures/tasklist-sprint-open.json +79 -0
- package/bench/fixtures/websearch-bun-runtime.json +32 -0
- package/bench/fixtures/websearch-react-hooks-patterns.json +32 -0
- package/bench/fixtures/websearch-typescript-generics.json +38 -0
- package/bench/refs/node-sdk/.refrev +1 -0
- package/bench/refs/node-sdk/README.md +17 -0
- package/bench/refs/node-sdk/src/agent/agent.ts +163 -0
- package/bench/refs/node-sdk/src/agent/create-agent-ui-stream.ts +83 -0
- package/bench/refs/node-sdk/src/agent/tool-loop-agent.ts +238 -0
- package/bench/refs/node-sdk/src/embed/embed-many.ts +409 -0
- package/bench/refs/node-sdk/src/embed/embed-result.ts +50 -0
- package/bench/refs/node-sdk/src/embed/embed.ts +257 -0
- package/bench/refs/node-sdk/src/error/invalid-argument-error.ts +34 -0
- package/bench/refs/node-sdk/src/error/invalid-tool-input-error.ts +33 -0
- package/bench/refs/node-sdk/src/error/no-object-generated-error.ts +70 -0
- package/bench/refs/node-sdk/src/generate-image/generate-image-result.ts +42 -0
- package/bench/refs/node-sdk/src/generate-image/generate-image.ts +362 -0
- package/bench/refs/node-sdk/src/generate-object/generate-object-result.ts +67 -0
- package/bench/refs/node-sdk/src/generate-object/generate-object.ts +501 -0
- package/bench/refs/node-sdk/src/generate-object/inject-json-instruction.ts +30 -0
- package/bench/refs/node-sdk/src/generate-object/output-strategy.ts +415 -0
- package/bench/refs/node-sdk/src/generate-object/repair-text.ts +12 -0
- package/bench/refs/node-sdk/src/generate-object/stream-object.ts +960 -0
- package/bench/refs/node-sdk/src/generate-speech/generate-speech.ts +191 -0
- package/bench/refs/node-sdk/src/generate-text/generate-text.ts +1484 -0
- package/bench/refs/node-sdk/src/generate-text/stream-text.ts +2708 -0
- package/bench/refs/node-sdk/src/generate-text/tool-call.ts +59 -0
- package/bench/refs/node-sdk/src/generate-text/tool-result.ts +36 -0
- package/bench/refs/node-sdk/src/telemetry/create-telemetry-dispatcher.ts +146 -0
- package/bench/refs/node-sdk/src/telemetry/telemetry-registry.ts +15 -0
- package/bench/refs/node-sdk/src/telemetry/telemetry.ts +223 -0
- package/bench/refs/node-sdk/src/util/async-iterable-stream.ts +94 -0
- package/bench/refs/node-sdk/src/util/consume-stream.ts +31 -0
- package/bench/refs/node-sdk/src/util/create-stitchable-stream.ts +112 -0
- package/bench/refs/node-sdk/src/util/download/download.ts +74 -0
- package/bench/refs/node-sdk/src/util/error-handler.ts +1 -0
- package/bench/refs/node-sdk/src/util/fix-json.ts +401 -0
- package/bench/refs/node-sdk/src/util/merge-objects.ts +79 -0
- package/bench/refs/python-lib/.refrev +1 -0
- package/bench/refs/python-lib/README.md +18 -0
- package/bench/refs/python-lib/pandas/core/_numba/executor.py +249 -0
- package/bench/refs/python-lib/pandas/core/_numba/extensions.py +586 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/mean_.py +198 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/min_max_.py +178 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/sum_.py +255 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/var_.py +251 -0
- package/bench/refs/python-lib/pandas/core/accessor.py +520 -0
- package/bench/refs/python-lib/pandas/core/api.py +138 -0
- package/bench/refs/python-lib/pandas/core/array_algos/masked_accumulations.py +97 -0
- package/bench/refs/python-lib/pandas/core/array_algos/masked_reductions.py +252 -0
- package/bench/refs/python-lib/pandas/core/array_algos/putmask.py +150 -0
- package/bench/refs/python-lib/pandas/core/array_algos/quantile.py +232 -0
- package/bench/refs/python-lib/pandas/core/array_algos/replace.py +159 -0
- package/bench/refs/python-lib/pandas/core/array_algos/take.py +609 -0
- package/bench/refs/python-lib/pandas/core/arraylike.py +534 -0
- package/bench/refs/python-lib/pandas/core/arrays/_arrow_string_mixins.py +434 -0
- package/bench/refs/python-lib/pandas/core/arrays/_mixins.py +630 -0
- package/bench/refs/python-lib/pandas/core/arrays/_ranges.py +276 -0
- package/bench/refs/python-lib/pandas/core/arrays/_utils.py +77 -0
- package/bench/refs/python-lib/pandas/core/arrays/arrow/accessors.py +521 -0
- package/bench/refs/python-lib/pandas/core/arrays/arrow/extension_types.py +174 -0
- package/bench/refs/python-lib/pandas/core/arrays/boolean.py +454 -0
- package/bench/refs/python-lib/pandas/core/arrays/floating.py +192 -0
- package/bench/refs/python-lib/pandas/core/arrays/integer.py +296 -0
- package/bench/refs/python-lib/pandas/core/arrays/masked.py +2140 -0
- package/bench/refs/python-lib/pandas/core/arrays/numeric.py +305 -0
- package/bench/refs/python-lib/pandas/core/arrays/numpy_.py +701 -0
- package/bench/refs/python-lib/pandas/core/arrays/period.py +1586 -0
- package/bench/refs/python-lib/pandas/core/arrays/sparse/accessor.py +505 -0
- package/bench/refs/python-lib/pandas/core/arrays/sparse/scipy_sparse.py +208 -0
- package/bench/refs/rust-project/.refrev +1 -0
- package/bench/refs/rust-project/README.md +17 -0
- package/bench/refs/rust-project/tokio/src/doc/os.rs +68 -0
- package/bench/refs/rust-project/tokio/src/fs/dir_builder.rs +129 -0
- package/bench/refs/rust-project/tokio/src/fs/file.rs +1113 -0
- package/bench/refs/rust-project/tokio/src/fs/mocks.rs +176 -0
- package/bench/refs/rust-project/tokio/src/fs/mod.rs +324 -0
- package/bench/refs/rust-project/tokio/src/fs/open_options.rs +856 -0
- package/bench/refs/rust-project/tokio/src/fs/read.rs +80 -0
- package/bench/refs/rust-project/tokio/src/fs/read_dir.rs +357 -0
- package/bench/refs/rust-project/tokio/src/fs/write.rs +99 -0
- package/bench/refs/rust-project/tokio/src/future/maybe_done.rs +123 -0
- package/bench/refs/rust-project/tokio/src/future/try_join.rs +82 -0
- package/bench/refs/rust-project/tokio/src/io/async_buf_read.rs +117 -0
- package/bench/refs/rust-project/tokio/src/io/async_read.rs +133 -0
- package/bench/refs/rust-project/tokio/src/io/async_seek.rs +96 -0
- package/bench/refs/rust-project/tokio/src/io/async_write.rs +402 -0
- package/bench/refs/rust-project/tokio/src/io/blocking.rs +339 -0
- package/bench/refs/rust-project/tokio/src/io/interest.rs +345 -0
- package/bench/refs/rust-project/tokio/src/io/join.rs +130 -0
- package/bench/refs/rust-project/tokio/src/io/mod.rs +308 -0
- package/bench/refs/rust-project/tokio/src/io/poll_evented.rs +319 -0
- package/bench/refs/rust-project/tokio/src/io/read_buf.rs +344 -0
- package/bench/refs/rust-project/tokio/src/io/ready.rs +322 -0
- package/bench/refs/rust-project/tokio/src/io/split.rs +166 -0
- package/bench/refs/rust-project/tokio/src/io/stderr.rs +148 -0
- package/bench/refs/rust-project/tokio/src/io/stdin.rs +98 -0
- package/bench/refs/rust-project/tokio/src/io/stdio_common.rs +222 -0
- package/bench/refs/rust-project/tokio/src/io/stdout.rs +197 -0
- package/bench/refs/rust-project/tokio/src/io/util/buf_reader.rs +311 -0
- package/bench/refs/rust-project/tokio/src/io/util/buf_stream.rs +207 -0
- package/bench/refs/rust-project/tokio/src/io/util/buf_writer.rs +310 -0
- package/bench/refs/rust-project/tokio/src/io/util/chain.rs +144 -0
- package/commands/_spawn-patterns.json +32 -0
- package/commands/ashlr-allow.md +21 -0
- package/commands/ashlr-benchmark.md +53 -0
- package/commands/ashlr-brief.md +97 -0
- package/commands/ashlr-budget.md +76 -0
- package/commands/ashlr-compact.md +54 -0
- package/commands/ashlr-dashboard.md +37 -0
- package/commands/ashlr-doctor.md +56 -0
- package/commands/ashlr-eco-mode.md +92 -0
- package/commands/ashlr-genome-init.md +24 -0
- package/commands/ashlr-genome-keygen.md +36 -0
- package/commands/ashlr-genome-loop.md +118 -0
- package/commands/ashlr-genome-push.md +36 -0
- package/commands/ashlr-genome-rewrap.md +48 -0
- package/commands/ashlr-genome-team-init.md +67 -0
- package/commands/ashlr-handoff.md +23 -0
- package/commands/ashlr-help.md +86 -0
- package/commands/ashlr-hook-timings.md +30 -0
- package/commands/ashlr-leaderboard.md +50 -0
- package/commands/ashlr-ollama-setup.md +39 -0
- package/commands/ashlr-orchestrate-status.md +72 -0
- package/commands/ashlr-orchestrate.md +83 -0
- package/commands/ashlr-parallelize.md +63 -0
- package/commands/ashlr-report-crash.md +33 -0
- package/commands/ashlr-resume.md +72 -0
- package/commands/ashlr-savings.md +24 -0
- package/commands/ashlr-settings.md +50 -0
- package/commands/ashlr-spawn.md +61 -0
- package/commands/ashlr-start.md +60 -0
- package/commands/ashlr-status.md +64 -0
- package/commands/ashlr-team-invite.md +47 -0
- package/commands/ashlr-tier.md +122 -0
- package/commands/ashlr-tour.md +60 -0
- package/commands/ashlr-update.md +155 -0
- package/commands/ashlr-upgrade.md +96 -0
- package/commands/goal.md +58 -0
- package/commands/loop.md +40 -0
- package/docs/CNAME +1 -0
- package/docs/PRO_TIER.md +104 -0
- package/docs/README.md +21 -0
- package/docs/architecture.md +415 -0
- package/docs/ashlr-pipe.md +161 -0
- package/docs/assets/logo.svg +19 -0
- package/docs/assets/og.png +0 -0
- package/docs/assets/og.svg +41 -0
- package/docs/benchmarks-v2.json +355 -0
- package/docs/benchmarks.json +102 -0
- package/docs/benchmarks.md +211 -0
- package/docs/billing.md +185 -0
- package/docs/cloud-genome.md +155 -0
- package/docs/competitive-wozcode.md +92 -0
- package/docs/deploy.md +325 -0
- package/docs/email-templates.md +113 -0
- package/docs/embed-tuning.md +103 -0
- package/docs/genome.md +120 -0
- package/docs/github-oauth-onboarding.md +127 -0
- package/docs/hero-video-script.md +129 -0
- package/docs/index.html +2262 -0
- package/docs/install-prompt.md +78 -0
- package/docs/install-windows.md +132 -0
- package/docs/install.ps1 +171 -0
- package/docs/install.sh +146 -0
- package/docs/launch/README.md +114 -0
- package/docs/launch/hn.md +49 -0
- package/docs/launch/reddit.md +45 -0
- package/docs/launch/x.md +65 -0
- package/docs/launch-post.md +112 -0
- package/docs/legal.md +78 -0
- package/docs/llm-providers.md +99 -0
- package/docs/multi-host-mcp.md +217 -0
- package/docs/multi-turn-architecture.md +108 -0
- package/docs/operations/deployment.md +108 -0
- package/docs/operations/error-monitoring.md +70 -0
- package/docs/operations/weekly-digest.md +70 -0
- package/docs/operations.md +494 -0
- package/docs/platform-support.md +133 -0
- package/docs/policy-packs.md +188 -0
- package/docs/press-kit/fact-sheet.md +78 -0
- package/docs/press-kit/founder-bio.md +3 -0
- package/docs/press-kit/logo.svg +33 -0
- package/docs/press-kit/screenshots.md +146 -0
- package/docs/pricing.md +251 -0
- package/docs/pro-backend-architecture.md +523 -0
- package/docs/producthunt.md +52 -0
- package/docs/router-migration.md +110 -0
- package/docs/session-log-schema.md +68 -0
- package/docs/social.md +95 -0
- package/docs/team-genome.md +528 -0
- package/docs/telemetry.md +194 -0
- package/docs/test-isolation.md +100 -0
- package/docs/upgrade.md +159 -0
- package/hooks/_hook-errors.ts +87 -0
- package/hooks/_hook-perf-emit.ts +113 -0
- package/hooks/_hook-timing-ledger.ts +1133 -0
- package/hooks/_nudge-throttle.ts +127 -0
- package/hooks/_recent-blocks.ts +127 -0
- package/hooks/audit-upload.ts +86 -0
- package/hooks/codex-hooks.json +171 -0
- package/hooks/commit-attribution.ts +179 -0
- package/hooks/edit-batching-nudge.ts +154 -0
- package/hooks/genome-scribe-hook.ts +219 -0
- package/hooks/hooks.json +294 -0
- package/hooks/orient-nudge-hook.ts +242 -0
- package/hooks/policy-enforce.ts +214 -0
- package/hooks/post-tool-use-embedding.ts +93 -0
- package/hooks/post-tool-use-genome.sh +37 -0
- package/hooks/post-tool-use-genome.ts +69 -0
- package/hooks/posttooluse-correlate.ts +122 -0
- package/hooks/posttooluse-dedupe-output.ts +241 -0
- package/hooks/posttooluse-genome-refresh.ts +223 -0
- package/hooks/posttooluse-native-nudge.ts +205 -0
- package/hooks/posttooluse-stale-result.ts +277 -0
- package/hooks/pretooluse-bash.ts +63 -0
- package/hooks/pretooluse-budget-guard.ts +318 -0
- package/hooks/pretooluse-common.ts +985 -0
- package/hooks/pretooluse-eco-router.ts +196 -0
- package/hooks/pretooluse-edit.sh +93 -0
- package/hooks/pretooluse-edit.ts +197 -0
- package/hooks/pretooluse-glob.ts +70 -0
- package/hooks/pretooluse-grep.sh +85 -0
- package/hooks/pretooluse-grep.ts +96 -0
- package/hooks/pretooluse-notebookedit.ts +121 -0
- package/hooks/pretooluse-read.sh +118 -0
- package/hooks/pretooluse-read.ts +118 -0
- package/hooks/pretooluse-task.ts +130 -0
- package/hooks/pretooluse-webfetch.ts +66 -0
- package/hooks/pretooluse-websearch.ts +85 -0
- package/hooks/pretooluse-write.ts +128 -0
- package/hooks/pulse-emit.ts +197 -0
- package/hooks/session-end-consolidate.sh +35 -0
- package/hooks/session-end-consolidate.ts +188 -0
- package/hooks/session-end-stats-gc.ts +80 -0
- package/hooks/session-log-append.sh +94 -0
- package/hooks/session-log-append.ts +116 -0
- package/hooks/session-start.ts +993 -0
- package/hooks/sessionend-hook-health-nudge.ts +451 -0
- package/hooks/sessionend-savings-nudge.ts +318 -0
- package/hooks/sessionend-status-line-nudge.ts +296 -0
- package/hooks/sessionstart-brief.ts +140 -0
- package/hooks/sessionstart-cost-refactor.ts +95 -0
- package/hooks/sessionstart-efficient.ts +110 -0
- package/hooks/sessionstart-genome-author.ts +93 -0
- package/hooks/sessionstart-lean-tools.ts +98 -0
- package/hooks/sessionstart-search.ts +97 -0
- package/hooks/stop-accounting.ts +152 -0
- package/hooks/subagent-stop-rollup.ts +162 -0
- package/hooks/userpromptsubmit-brief-trigger.ts +156 -0
- package/package.json +56 -0
- package/ports/README.md +108 -0
- package/ports/cursor/mcp.json +11 -0
- package/ports/goose/recipe.yaml +26 -0
- package/scripts/ashlr-mcp.ts +40 -0
- package/scripts/auto-update.ts +177 -0
- package/scripts/baseline-scan.ts +831 -0
- package/scripts/bench-orchestrate.ts +377 -0
- package/scripts/benchmark-refs.ts +292 -0
- package/scripts/bootstrap.mjs +100 -0
- package/scripts/brief-eval.ts +234 -0
- package/scripts/bump-version.ts +82 -0
- package/scripts/bun-resolve.d.mts +11 -0
- package/scripts/bun-resolve.mjs +59 -0
- package/scripts/calibrate-grep.ts +467 -0
- package/scripts/capture-grep-workload.ts +260 -0
- package/scripts/check-tier.ts +61 -0
- package/scripts/check-version-sync.ts +97 -0
- package/scripts/cli-orchestrate-status.ts +386 -0
- package/scripts/cli-orchestrate.ts +303 -0
- package/scripts/cli.ts +478 -0
- package/scripts/cloud-smoke-test.ts +313 -0
- package/scripts/coach-report.ts +373 -0
- package/scripts/context-db-migrate.ts +137 -0
- package/scripts/context-status.ts +43 -0
- package/scripts/demo-run.ts +255 -0
- package/scripts/deploy-smoke.sh +140 -0
- package/scripts/doctor.ts +992 -0
- package/scripts/embed-file-worker.ts +104 -0
- package/scripts/embed-tune.ts +308 -0
- package/scripts/errors-report.ts +428 -0
- package/scripts/find-test-leak.ts +69 -0
- package/scripts/generate-badge.ts +357 -0
- package/scripts/genome-auto-consolidate.ts +533 -0
- package/scripts/genome-auto-propose.ts +578 -0
- package/scripts/genome-cloud-pull.ts +363 -0
- package/scripts/genome-cloud-push.ts +382 -0
- package/scripts/genome-cloud-sync.ts +587 -0
- package/scripts/genome-commit-watcher.ts +295 -0
- package/scripts/genome-init.ts +986 -0
- package/scripts/genome-key.ts +233 -0
- package/scripts/genome-keygen.ts +168 -0
- package/scripts/genome-link.ts +59 -0
- package/scripts/genome-refresh-worker.ts +364 -0
- package/scripts/genome-rewrap.ts +90 -0
- package/scripts/genome-synthesizer.ts +679 -0
- package/scripts/genome-team-init.ts +312 -0
- package/scripts/handoff-pack.ts +438 -0
- package/scripts/hook-bootstrap.mjs +75 -0
- package/scripts/hook-timing-reader.ts +371 -0
- package/scripts/hook-timings-report.ts +554 -0
- package/scripts/install-genome-hooks.ts +196 -0
- package/scripts/install-onnx-model.ts +154 -0
- package/scripts/install-permissions.ts +276 -0
- package/scripts/install-status-line.ts +150 -0
- package/scripts/mcp-entrypoint.sh +78 -0
- package/scripts/mcp-entrypoint.ts +130 -0
- package/scripts/mdx-angle-bracket-lint.ts +152 -0
- package/scripts/measure-cold-start.ts +126 -0
- package/scripts/migrate-stats-to-sqlite.ts +86 -0
- package/scripts/ollama-setup.ts +498 -0
- package/scripts/onboarding-wizard.ts +1691 -0
- package/scripts/orchestrate-emit-telemetry.ts +177 -0
- package/scripts/orchestrate-expand.ts +517 -0
- package/scripts/orchestrate-run.ts +744 -0
- package/scripts/print-legend.ts +50 -0
- package/scripts/product-metadata.ts +38 -0
- package/scripts/prune-old-memories.ts +208 -0
- package/scripts/publish.sh +88 -0
- package/scripts/read-calibration.ts +122 -0
- package/scripts/report-crash.ts +226 -0
- package/scripts/run-benchmark.ts +750 -0
- package/scripts/run-root-tests.ts +28 -0
- package/scripts/savings-dashboard.ts +1258 -0
- package/scripts/savings-report-extras.ts +447 -0
- package/scripts/savings-status-line.ts +873 -0
- package/scripts/session-event-emit.ts +266 -0
- package/scripts/session-greet.ts +686 -0
- package/scripts/session-log-report.ts +551 -0
- package/scripts/session-resume.ts +614 -0
- package/scripts/set-hook-mode.ts +83 -0
- package/scripts/smoke-cross-platform.ts +117 -0
- package/scripts/smoke-realtime.ts +257 -0
- package/scripts/smoke-tools.ts +21 -0
- package/scripts/stats-cloud-pull.ts +213 -0
- package/scripts/stats-cloud-sync.ts +261 -0
- package/scripts/telemetry-flush.ts +160 -0
- package/scripts/telemetry-status.ts +266 -0
- package/scripts/timing-budget.ts +35 -0
- package/scripts/ui-animation.ts +120 -0
- package/scripts/ui.ts +431 -0
- package/scripts/upgrade-flow.ts +775 -0
- package/scripts/weekly-digest.ts +394 -0
- package/servers/_accounting.ts +78 -0
- package/servers/_ask-router.ts +84 -0
- package/servers/_ast-chunker.ts +434 -0
- package/servers/_ast-helpers.ts +183 -0
- package/servers/_ast-languages.ts +153 -0
- package/servers/_ast-refactor/_shared.ts +221 -0
- package/servers/_ast-refactor/cross-file-rename.ts +560 -0
- package/servers/_ast-refactor/extract-function.ts +357 -0
- package/servers/_ast-refactor/file-local-rename.ts +172 -0
- package/servers/_ast-refactor.ts +41 -0
- package/servers/_ast-skeleton.ts +107 -0
- package/servers/_bash-summarizers-registry.ts +1096 -0
- package/servers/_crash-dump.ts +210 -0
- package/servers/_cwd-clamp.ts +342 -0
- package/servers/_edit-log.ts +28 -0
- package/servers/_edit-match.ts +236 -0
- package/servers/_edit-validate.ts +196 -0
- package/servers/_embed-calibration.ts +123 -0
- package/servers/_embedding-cache.ts +401 -0
- package/servers/_embedding-model.ts +329 -0
- package/servers/_events.ts +113 -0
- package/servers/_genome-cache.ts +154 -0
- package/servers/_genome-commits.ts +172 -0
- package/servers/_genome-crypto-v2.ts +242 -0
- package/servers/_genome-crypto.ts +259 -0
- package/servers/_genome-discoveries.ts +140 -0
- package/servers/_genome-embed-populator.ts +216 -0
- package/servers/_genome-freshness.ts +134 -0
- package/servers/_genome-issues.ts +171 -0
- package/servers/_genome-live.ts +263 -0
- package/servers/_genome-prs.ts +188 -0
- package/servers/_genome-search.ts +479 -0
- package/servers/_genome-sync.ts +297 -0
- package/servers/_history-tracker.ts +279 -0
- package/servers/_http-helpers.ts +151 -0
- package/servers/_identity-hash.ts +151 -0
- package/servers/_llm-providers/anthropic.ts +132 -0
- package/servers/_llm-providers/cloud.ts +195 -0
- package/servers/_llm-providers/index.ts +350 -0
- package/servers/_llm-providers/local.ts +127 -0
- package/servers/_llm-providers/onnx.ts +393 -0
- package/servers/_llm-providers/types.ts +27 -0
- package/servers/_manifest-v2.ts +447 -0
- package/servers/_mcp-host.ts +93 -0
- package/servers/_nudge-events.ts +451 -0
- package/servers/_orchestrate-executor.ts +316 -0
- package/servers/_prefetch.ts +435 -0
- package/servers/_pricing.ts +256 -0
- package/servers/_pro.ts +381 -0
- package/servers/_read-cache.ts +44 -0
- package/servers/_router-handlers.ts +46 -0
- package/servers/_router.ts +55 -0
- package/servers/_run-with-timeout.ts +173 -0
- package/servers/_savings-render.ts +214 -0
- package/servers/_stats-sqlite.ts +640 -0
- package/servers/_stats.ts +1183 -0
- package/servers/_status-line-cells.ts +469 -0
- package/servers/_streaks.ts +162 -0
- package/servers/_summarize.ts +208 -0
- package/servers/_task-graph-render.ts +217 -0
- package/servers/_task-graph.ts +545 -0
- package/servers/_telemetry.ts +719 -0
- package/servers/_test-parsers.ts +530 -0
- package/servers/_test-watch.ts +626 -0
- package/servers/_text-helpers.ts +37 -0
- package/servers/_token-measure.ts +160 -0
- package/servers/_tool-base.ts +248 -0
- package/servers/_weekly-digest.ts +391 -0
- package/servers/ask-server-handlers.ts +49 -0
- package/servers/ask-server.ts +174 -0
- package/servers/bash-server-handlers.ts +138 -0
- package/servers/bash-server.ts +1136 -0
- package/servers/bench.ts +186 -0
- package/servers/diff-semantic-server-handlers.ts +39 -0
- package/servers/diff-semantic-server.ts +566 -0
- package/servers/diff-server-handlers.ts +317 -0
- package/servers/diff-server.ts +20 -0
- package/servers/edit-server-handlers.ts +31 -0
- package/servers/edit-server.ts +209 -0
- package/servers/edit-structural-server-handlers.ts +322 -0
- package/servers/efficiency-server-handlers.ts +161 -0
- package/servers/efficiency-server.ts +1135 -0
- package/servers/flush-server-handlers.ts +21 -0
- package/servers/flush-server.ts +19 -0
- package/servers/genome-server-handlers.ts +118 -0
- package/servers/genome-server.ts +397 -0
- package/servers/github-server-handlers.ts +187 -0
- package/servers/github-server.ts +856 -0
- package/servers/glob-server-handlers.ts +233 -0
- package/servers/glob-server.ts +20 -0
- package/servers/grep-server-handlers.ts +61 -0
- package/servers/grep-server.ts +564 -0
- package/servers/http-server-handlers.ts +36 -0
- package/servers/http-server.ts +149 -0
- package/servers/logs-server-handlers.ts +42 -0
- package/servers/logs-server.ts +359 -0
- package/servers/ls-server-handlers.ts +166 -0
- package/servers/ls-server.ts +20 -0
- package/servers/multi-edit-server-handlers.ts +51 -0
- package/servers/multi-edit-server.ts +422 -0
- package/servers/notebook-edit-server-handlers.ts +34 -0
- package/servers/notebook-edit-server.ts +181 -0
- package/servers/orient-server-handlers.ts +52 -0
- package/servers/orient-server.ts +436 -0
- package/servers/pipe-server-handlers.ts +68 -0
- package/servers/pipe-server.ts +300 -0
- package/servers/read-server-handlers.ts +42 -0
- package/servers/read-server.ts +206 -0
- package/servers/rename-file-server-handlers.ts +67 -0
- package/servers/rename-file-server.ts +699 -0
- package/servers/savings-server-handlers.ts +27 -0
- package/servers/savings-server.ts +54 -0
- package/servers/search-replace-regex-server-handlers.ts +96 -0
- package/servers/search-replace-regex-server.ts +751 -0
- package/servers/sql-server-handlers.ts +58 -0
- package/servers/sql-server.ts +505 -0
- package/servers/task-server-handlers.ts +358 -0
- package/servers/task-server.ts +24 -0
- package/servers/test-server-handlers.ts +351 -0
- package/servers/test-server.ts +20 -0
- package/servers/tree-server-handlers.ts +503 -0
- package/servers/tree-server.ts +20 -0
- package/servers/webfetch-server-handlers.ts +166 -0
- package/servers/webfetch-server.ts +20 -0
- package/servers/websearch-server-handlers.ts +215 -0
- package/servers/websearch-server.ts +19 -0
- package/servers/write-server-handlers.ts +27 -0
- package/servers/write-server.ts +97 -0
- package/skills/ashlr-brief/SKILL.md +80 -0
- package/skills/ashlr-codex-doctor/SKILL.md +21 -0
- package/skills/ashlr-codex-efficient-tools/SKILL.md +17 -0
- package/skills/ashlr-codex-genome-refresh/SKILL.md +20 -0
- package/skills/ashlr-codex-parallel-explore/SKILL.md +20 -0
- package/skills/ashlr-codex-savings/SKILL.md +17 -0
- package/skills/ashlr-cost-refactor/SKILL.md +50 -0
- package/skills/ashlr-efficient/SKILL.md +64 -0
- package/skills/ashlr-genome-author/SKILL.md +43 -0
- package/skills/ashlr-lean-tools/SKILL.md +43 -0
- package/skills/ashlr-search/SKILL.md +46 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ashlr-marketplace",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "Ashlr"
|
|
5
|
+
},
|
|
6
|
+
"plugins": [
|
|
7
|
+
{
|
|
8
|
+
"name": "ashlr",
|
|
9
|
+
"source": {
|
|
10
|
+
"source": "local",
|
|
11
|
+
"path": "."
|
|
12
|
+
},
|
|
13
|
+
"policy": {
|
|
14
|
+
"installation": "AVAILABLE",
|
|
15
|
+
"authentication": "ON_INSTALL"
|
|
16
|
+
},
|
|
17
|
+
"category": "Productivity"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ashlr-marketplace",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "AshlrAI",
|
|
5
|
+
"url": "https://github.com/ashlrai"
|
|
6
|
+
},
|
|
7
|
+
"metadata": {
|
|
8
|
+
"description": "Open-source Claude Code plugin — 40 token-efficient MCP tools, 34 slash commands, GitHub OAuth sign-in, auto-genome from public repos, cloud-genome pull, per-session accounting, animated status line. MIT, opt-in telemetry.",
|
|
9
|
+
"version": "1.36.4"
|
|
10
|
+
},
|
|
11
|
+
"plugins": [
|
|
12
|
+
{
|
|
13
|
+
"name": "ashlr",
|
|
14
|
+
"source": {
|
|
15
|
+
"source": "url",
|
|
16
|
+
"url": "https://github.com/ashlrai/ashlr-plugin.git"
|
|
17
|
+
},
|
|
18
|
+
"description": "Token-efficient MCP tools for Claude Code — open-source WOZCODE alternative. Mean -57% savings overall on real codebases.",
|
|
19
|
+
"version": "1.36.4",
|
|
20
|
+
"author": {
|
|
21
|
+
"name": "Mason Wyatt",
|
|
22
|
+
"url": "https://github.com/ashlrai"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://plugin.ashlr.ai/",
|
|
25
|
+
"repository": "https://github.com/ashlrai/ashlr-plugin",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"category": "token-efficiency",
|
|
28
|
+
"keywords": [
|
|
29
|
+
"claude-code",
|
|
30
|
+
"mcp",
|
|
31
|
+
"token-efficiency",
|
|
32
|
+
"wozcode-alternative",
|
|
33
|
+
"github-oauth",
|
|
34
|
+
"genome",
|
|
35
|
+
"cloud-genome"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ashlr",
|
|
3
|
+
"version": "1.36.4",
|
|
4
|
+
"description": "Open-source Claude Code plugin — 40 MCP tools and 34 slash commands, hybrid LLM summarization (Anthropic Haiku 4.5 default + ONNX offline + local opt-in), GitHub OAuth sign-in, auto-genome from public repos, cloud-genome pull on session start, PreToolUse redirect hooks (ASHLR_HOOK_MODE), unified $/MTok pricing (ASHLR_PRICING_MODEL), per-session token accounting, opt-in telemetry, animated status line, shareable SVG savings badge. MIT.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Mason Wyatt",
|
|
7
|
+
"url": "https://github.com/ashlrai"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://plugin.ashlr.ai/",
|
|
10
|
+
"repository": "https://github.com/ashlrai/ashlr-plugin",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"claude-code",
|
|
14
|
+
"plugin",
|
|
15
|
+
"token-efficiency",
|
|
16
|
+
"mcp",
|
|
17
|
+
"ashlrcode",
|
|
18
|
+
"wozcode-alternative",
|
|
19
|
+
"github-oauth",
|
|
20
|
+
"genome",
|
|
21
|
+
"cloud-genome"
|
|
22
|
+
],
|
|
23
|
+
"statusLine": {
|
|
24
|
+
"type": "command",
|
|
25
|
+
"command": "bun run ${CLAUDE_PLUGIN_ROOT}/scripts/savings-status-line.ts"
|
|
26
|
+
},
|
|
27
|
+
"mcpServers": {
|
|
28
|
+
"ashlr": {
|
|
29
|
+
"command": "node",
|
|
30
|
+
"args": [
|
|
31
|
+
"${CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.mjs",
|
|
32
|
+
"servers/_router.ts"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Ashlr Codex Agents
|
|
2
|
+
|
|
3
|
+
These are Codex-native companion prompts for Ashlr workflows:
|
|
4
|
+
|
|
5
|
+
- `ashlr-explorer.md` maps unfamiliar code with read-only, low-token habits.
|
|
6
|
+
- `ashlr-worker.md` implements scoped, disjoint slices when parallel work is useful.
|
|
7
|
+
|
|
8
|
+
They are intentionally separate from the Claude Code agent prompts under
|
|
9
|
+
`agents/`, which use Claude-specific model and `Task` terminology.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ashlr-explorer
|
|
3
|
+
type: explorer
|
|
4
|
+
description: Read-only Codex explorer for token-efficient codebase mapping with Ashlr MCP tools.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ashlr Explorer
|
|
8
|
+
|
|
9
|
+
Use this agent for bounded, read-only research before implementation.
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- Stay read-only. Do not edit files, stage changes, commit, delete, or mutate config.
|
|
14
|
+
- Prefer `ashlr__orient`, `ashlr__tree`, `ashlr__grep`, and `ashlr__read` before native scans when they reduce context.
|
|
15
|
+
- Use native tools only for tiny files, exact line inspection, or when an Ashlr MCP tool is unavailable.
|
|
16
|
+
- Keep the answer short, cited, and actionable.
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. Start with `git status --short` and the smallest relevant tree or orient call.
|
|
21
|
+
2. Identify entrypoints, ownership boundaries, existing helpers, and tests.
|
|
22
|
+
3. Read only files that answer the assigned question.
|
|
23
|
+
4. Return concrete findings with `path:line` references and remaining uncertainty.
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
Findings
|
|
29
|
+
- path/to/file.ts:42 - concrete observation and why it matters.
|
|
30
|
+
|
|
31
|
+
Risks
|
|
32
|
+
- path/to/file.ts:88 - edge case or integration risk.
|
|
33
|
+
|
|
34
|
+
Next
|
|
35
|
+
- The parent agent should inspect or change ...
|
|
36
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ashlr-worker
|
|
3
|
+
type: worker
|
|
4
|
+
description: Scoped Codex worker for disjoint Ashlr implementation slices.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ashlr Worker
|
|
8
|
+
|
|
9
|
+
Use this agent only when the parent assigns a concrete implementation slice with an explicit file or module ownership boundary.
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- You are not alone in the codebase. Do not revert or overwrite changes outside your assigned scope.
|
|
14
|
+
- Keep edits limited to the files or modules named by the parent.
|
|
15
|
+
- Prefer existing repo helpers and patterns. Avoid new abstractions unless they remove real complexity.
|
|
16
|
+
- Use Ashlr MCP tools for large reads/searches; use native patching for precise edits.
|
|
17
|
+
- Run the narrowest useful verification for your slice and report exact commands.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
1. Re-read the assigned files and nearby tests.
|
|
22
|
+
2. Make the smallest complete change for the assigned slice.
|
|
23
|
+
3. Add or update focused tests when behavior changes.
|
|
24
|
+
4. Run verification.
|
|
25
|
+
5. Report changed files, verification, and any unresolved risk.
|
|
26
|
+
|
|
27
|
+
## Output
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
Changed
|
|
31
|
+
- path/to/file.ts - what changed.
|
|
32
|
+
|
|
33
|
+
Verified
|
|
34
|
+
- command - result.
|
|
35
|
+
|
|
36
|
+
Notes
|
|
37
|
+
- Any follow-up the parent must integrate.
|
|
38
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ashlr",
|
|
3
|
+
"version": "1.36.4",
|
|
4
|
+
"description": "Multi-host AI coding efficiency layer for Codex and Claude Code: 40 MCP tools, Codex skills, nudge-first hooks, genome memory, and token savings accounting.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Mason Wyatt",
|
|
7
|
+
"url": "https://github.com/ashlrai"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://plugin.ashlr.ai/",
|
|
10
|
+
"repository": "https://github.com/ashlrai/ashlr-plugin",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"codex",
|
|
14
|
+
"claude-code",
|
|
15
|
+
"mcp",
|
|
16
|
+
"token-efficiency",
|
|
17
|
+
"ashlrcode",
|
|
18
|
+
"genome",
|
|
19
|
+
"cloud-genome"
|
|
20
|
+
],
|
|
21
|
+
"skills": "./skills/",
|
|
22
|
+
"hooks": "./hooks/codex-hooks.json",
|
|
23
|
+
"mcpServers": "./.mcp.json",
|
|
24
|
+
"interface": {
|
|
25
|
+
"displayName": "Ashlr",
|
|
26
|
+
"shortDescription": "Token-efficient MCP tools and workflow skills for Codex.",
|
|
27
|
+
"longDescription": "Ashlr gives Codex a first-class efficiency layer: 40 MCP tools for compact read/search/edit/bash workflows, skills for lean coding habits, nudge-first hooks, genome memory, and local savings accounting. Claude Code remains fully supported with its richer slash-command and status-line surfaces.",
|
|
28
|
+
"developerName": "AshlrAI",
|
|
29
|
+
"category": "Productivity",
|
|
30
|
+
"capabilities": [
|
|
31
|
+
"MCP",
|
|
32
|
+
"Skills",
|
|
33
|
+
"Hooks"
|
|
34
|
+
],
|
|
35
|
+
"websiteURL": "https://plugin.ashlr.ai/",
|
|
36
|
+
"privacyPolicyURL": "https://plugin.ashlr.ai/privacy",
|
|
37
|
+
"termsOfServiceURL": "https://plugin.ashlr.ai/terms",
|
|
38
|
+
"defaultPrompt": [
|
|
39
|
+
"Use Ashlr tools to inspect this repo efficiently.",
|
|
40
|
+
"Run an Ashlr doctor check for Codex.",
|
|
41
|
+
"Refresh the project genome after this change."
|
|
42
|
+
],
|
|
43
|
+
"brandColor": "#0F766E"
|
|
44
|
+
}
|
|
45
|
+
}
|
package/.mcp.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"ashlr": {
|
|
4
|
+
"command": "ashlr-mcp",
|
|
5
|
+
"args": [],
|
|
6
|
+
"cwd": ".",
|
|
7
|
+
"env": {
|
|
8
|
+
"ASHLR_MCP_HOST": "codex-cli",
|
|
9
|
+
"ASHLR_CODEX_HOOK_MODE": "nudge"
|
|
10
|
+
},
|
|
11
|
+
"instructions": "Prefer Ashlr tools when they reduce context: use ashlr__read for large files, ashlr__grep for search, ashlr__tree for directory maps, ashlr__bash for verbose shell output, ashlr__savings for token/cost accounting, and ashlr__genome_* tools for project memory. Pass cwd explicitly or set ASHLR_ALLOW_PROJECT_PATHS for workspaces outside the MCP launch cwd."
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AshlrAI, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# ashlr-plugin
|
|
2
|
+
|
|
3
|
+
> **Cut Codex and Claude Code token usage by −57% on real codebases.**
|
|
4
|
+
> _TS −62% · Python −65% · Rust −44%_ — measured on `vercel/ai`, `pandas`, and `tokio`.
|
|
5
|
+
> 95% CI reported by the benchmark runner. Reproduce with `bun run scripts/run-benchmark.ts --compare`. ([full methodology](docs/benchmarks.md))
|
|
6
|
+
|
|
7
|
+
40 MCP tools that replace high-volume `Read` / `Grep` / `Edit` / `Bash` workflows with versions that return **less** without losing what matters. Claude Code gets automatic PreToolUse redirects (`ASHLR_HOOK_MODE=redirect`); Codex gets first-class plugin packaging, MCP, skills, and nudge-first hooks.
|
|
8
|
+
|
|
9
|
+
> **Requires [Bun ≥ 1.3](https://bun.sh/)** — interactive installers can offer to install Bun; piped/non-interactive installs skip that prompt and rely on MCP bootstrap if Bun is missing. Verify with `bun --version` first.
|
|
10
|
+
>
|
|
11
|
+
> ```bash
|
|
12
|
+
> curl -fsSL https://bun.sh/install | bash
|
|
13
|
+
> ```
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# macOS / Linux
|
|
17
|
+
curl -fsSL https://plugin.ashlr.ai/install.sh | bash
|
|
18
|
+
|
|
19
|
+
# Windows (PowerShell)
|
|
20
|
+
irm https://raw.githubusercontent.com/ashlrai/ashlr-plugin/main/docs/install.ps1 | iex
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The npm package exposes `ashlr-plugin` for CLI workflows and `ashlr-mcp` for MCP hosts. It requires Bun. From v1.36.4, use `ashlr-plugin stats`, `ashlr-plugin tools`, and other Plugin commands in place of the former `ashlr` alias; `ashlr` remains available to Ashlr Hub. MCP server registration names and tool names are unchanged.
|
|
24
|
+
|
|
25
|
+
**Landing page:** [plugin.ashlr.ai](https://plugin.ashlr.ai/) · **Docs:** [plugin.ashlr.ai/docs](https://plugin.ashlr.ai/docs) · **Core library:** [`@ashlr/core-efficiency`](https://github.com/ashlrai/ashlr-core-efficiency) · **License:** MIT
|
|
26
|
+
|
|
27
|
+
> **Open-source and honestly benchmarked.** The −57% headline is reproducible on your own code with `bun run scripts/run-benchmark.ts --compare` ([methodology](docs/benchmarks.md)). Every ashlr savings figure includes a 95% CI. Telemetry is off by default. Compare against closed, self-benchmarked alternatives with `/ashlr-benchmark --compare`.
|
|
28
|
+
|
|
29
|
+
[](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml?query=branch%3Amain+event%3Apush)
|
|
30
|
+
|
|
31
|
+
**Tested on:** Ubuntu 22.04 · macOS 14 (Sonoma) · Windows Server 2022 · TypeScript hooks (no bash required)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## What's new in v1.36
|
|
36
|
+
|
|
37
|
+
- **Codex-native plugin packaging** — `.codex-plugin/plugin.json`, `.mcp.json`, Codex workflow skills, Codex explorer/worker agent guidance, and portable Codex hooks ship in the same package as the Claude Code plugin.
|
|
38
|
+
- **Reliable Codex MCP launch** — `ashlr-mcp` starts the router directly with `ASHLR_MCP_HOST=codex-cli`, workspace-aware `cwd` behavior, and `ASHLR_ALLOW_PROJECT_PATHS` support for non-plugin launch directories.
|
|
39
|
+
- **Codex nudge-first hooks** — Codex hooks now inject compact-tool guidance for Bash, apply_patch, Read/Grep/Glob, Edit/MultiEdit, Write, and high-value Ashlr MCP calls without forcing redirects by default.
|
|
40
|
+
- **Host-neutral CLI workflows** — `ashlr-plugin codex-doctor`, `ashlr-plugin codex-install --dry-run`, `ashlr-plugin codex-start`, `ashlr-plugin codex-resume`, `ashlr-plugin codex-end`, and `ashlr-plugin genome-refresh` give Codex users the same operational surface without writing Claude config.
|
|
41
|
+
- **Four discipline skills** — `/ashlr-search`, `/ashlr-lean-tools`, `/ashlr-genome-author`, `/ashlr-cost-refactor`. Each enforces a specific anti-waste pattern; each persists in `~/.ashlr/<name>.json`. Toggle with `/ashlr-<name> on/off`.
|
|
42
|
+
- **`/ashlr-efficient`** — output structure reshaper. Enforces answer-first (inverted pyramid), inline code for all identifiers, tables for 3+ item comparisons, and no transitional filler. Works standalone or alongside `/ashlr-brief`.
|
|
43
|
+
- **Two lifecycle hooks** — `SubagentStop` rolls up subagent savings to the session log and fires background genome consolidation; `Stop` finalises session stats with an idempotency guard. (Re-orientation after context compaction is handled by the `SessionStart` compact hook, the only event that can inject context.)
|
|
44
|
+
- **API-measured savings mode** — when `ANTHROPIC_API_KEY` is set, token counts upgrade from `(est.)` to `(API-measured)` once ≥10 calls have been verified via the Anthropic API. Fire-and-forget; SHA-256 cached; never blocks a tool call.
|
|
45
|
+
- **Benchmark transparency** — `scripts/run-benchmark.ts` now reports a 95% bootstrap confidence interval alongside the headline. New flags: `--compare` (A/B table), `--validate-tokenizer` (API spot-check of the chars/4 heuristic). See [benchmark methodology](docs/benchmarks.md).
|
|
46
|
+
|
|
47
|
+
<details>
|
|
48
|
+
<summary>v1.33 highlights</summary>
|
|
49
|
+
|
|
50
|
+
- **First-call savings projection** — see your annual savings extrapolated on your very first ashlr call.
|
|
51
|
+
- **Multi-host MCP** — works in Codex, Claude Code, Cline, Claude Desktop, Cursor, Goose, and generic MCP hosts (`ASHLR_MCP_HOST` env var).
|
|
52
|
+
- **`/ashlr-orchestrate-status`** — inspect past orchestration runs with per-node timings + tokens.
|
|
53
|
+
- **Orchestration retry + handoff budget** — per-node retry-with-backoff; HANDOFF_PAYLOAD capped at 8KB.
|
|
54
|
+
- **Orchestration central quota accounting** — `orchestration_usage` table for Team-tier soft-throttle.
|
|
55
|
+
- **Bun ≥ 1.3 prereq surfaced** + wizard restart enforcement — closes 2 fatal first-touch cliffs.
|
|
56
|
+
- **Orchestrator overhead bench** — measured ~5-30ms/node, 2.8× parallel speedup vs sequential.
|
|
57
|
+
- **Pre-existing tsc errors fixed** + permanent dashboard date-drift fix via clock injection.
|
|
58
|
+
|
|
59
|
+
</details>
|
|
60
|
+
|
|
61
|
+
## What's new in v1.33 (archived)
|
|
62
|
+
|
|
63
|
+
<details>
|
|
64
|
+
<summary>v1.32 highlights</summary>
|
|
65
|
+
|
|
66
|
+
- **`/ashlr-orchestrate`** — multi-agent task graphs with parallel execution, dry-run renderer, and tier-gated subprocess wiring.
|
|
67
|
+
- **`/ashlr-orchestrate-status`** — inspect past orchestration runs with per-node telemetry and 2.8× measured parallel speedup.
|
|
68
|
+
- **Live genome** — PR-aware + commit-aware sections via git post-commit hook and GitHub webhook delta sync.
|
|
69
|
+
- **AI-Native discoveries** — LLM synthesizes `discovery` sections from your commit history automatically.
|
|
70
|
+
- **Predictive prefetch** *(Pro/Team)* — background warm-cache on every `ashlr__read` cuts repeat-hit latency.
|
|
71
|
+
- **PR + issue retrieval** — `ashlr__grep --include-prs --include-issues --since-days` pulls live GitHub context.
|
|
72
|
+
- **Freshness badges** in genome retrieval surface staleness so you trust the answer.
|
|
73
|
+
- **Cross-language bench:** TS −61.3% · Python −63.1% · Rust −46.8% (cross-language headline `-57.1%` holds).
|
|
74
|
+
- **Founder WAD-D dashboard** at `/admin/wad-d` — daily-active records + segment breakdown + discovery propagation.
|
|
75
|
+
|
|
76
|
+
</details>
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Multi-host MCP
|
|
81
|
+
|
|
82
|
+
Works with Codex, Claude Code (default), [Cline](https://github.com/cline/cline), Claude Desktop, Cursor, Goose, and generic MCP hosts. The 40 MCP tools, stats accounting, and genome retrieval are host-agnostic; savings and accounting apply when the host calls Ashlr MCP tools. Codex support is packaged through `.codex-plugin/plugin.json`, `.mcp.json`, Codex skills, and `hooks/codex-hooks.json` in nudge mode. Claude-only extras remain explicitly labeled: auto redirects, status line, slash commands, and OAuth bootstrap. See [plugin.ashlr.ai/docs](https://plugin.ashlr.ai/docs) or [`docs/multi-host-mcp.md`](docs/multi-host-mcp.md) for setup snippets.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Permissions — stop the prompts first
|
|
87
|
+
|
|
88
|
+
Run this once after install so Claude Code stops asking on every tool call:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
/ashlr-allow
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
That adds ashlr MCP wildcards to `permissions.allow` in `~/.claude/settings.json`. It is idempotent. Run `/reload-plugins` after changing permissions, or fully quit and restart Claude Code if reload is unavailable.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 10-second demo
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
# 1. Install
|
|
102
|
+
curl -fsSL https://plugin.ashlr.ai/install.sh | bash
|
|
103
|
+
# Inside Claude Code:
|
|
104
|
+
/plugin marketplace add ashlrai/ashlr-plugin
|
|
105
|
+
/plugin install ashlr@ashlr-marketplace
|
|
106
|
+
|
|
107
|
+
# 2. Use — read a large file (raw would be ~8,400 tokens)
|
|
108
|
+
ashlr__read { "path": "src/server.ts" }
|
|
109
|
+
# Returns snipCompact view: head + tail, elided middle — ~1,700 tokens
|
|
110
|
+
|
|
111
|
+
# 3. Check savings
|
|
112
|
+
/ashlr-savings
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Session savings · ashlr-plugin v1.36.0
|
|
117
|
+
────────────────────────────────────────
|
|
118
|
+
ashlr__read 6 calls −42,180 tok $0.13
|
|
119
|
+
ashlr__grep 3 calls −11,040 tok $0.03
|
|
120
|
+
ashlr__edit 2 calls −3,200 tok $0.01
|
|
121
|
+
─────────────────────────────────────────────
|
|
122
|
+
Session total −56,420 tok $0.17
|
|
123
|
+
Lifetime total −284,900 tok $0.86
|
|
124
|
+
7-day sparkline ▁▂▃▃▅▆█
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## What you get
|
|
130
|
+
|
|
131
|
+
Core efficiency tools (replace built-ins with lower-token equivalents):
|
|
132
|
+
|
|
133
|
+
| MCP tool | Description |
|
|
134
|
+
|---|---|
|
|
135
|
+
| `ashlr__read` | `snipCompact` + LLM summary on files > 16 KB (Anthropic Haiku 4.5 default, ONNX/local fallback). Mean **−82.1%** on the v1.22 bench. Line numbers preserved on code files. |
|
|
136
|
+
| `ashlr__grep` | Genome-aware RAG when `.ashlrcode/genome/` or cloud genome exists; ripgrep fallback with LLM summary. |
|
|
137
|
+
| `ashlr__edit` | In-place search/replace — returns diff summary only, not the full file. Levenshtein candidates on miss. |
|
|
138
|
+
| `ashlr__edit_structural` | AST-aware rename (Unicode identifiers: `café`, `π`, CJK) + cross-file rename with `anchorFile` + `maxFiles` + shadowing guard + dryRun + extract-function with return-value detection (0 / 1 / N outputs). `.ts/.tsx/.js/.jsx`. |
|
|
139
|
+
| `ashlr__multi_edit` | Batch multiple search/replace edits in one call. |
|
|
140
|
+
| `ashlr__savings` | Live token-savings dashboard: session + lifetime + per-tool breakdown. |
|
|
141
|
+
|
|
142
|
+
Shell, data, and web tools:
|
|
143
|
+
|
|
144
|
+
| MCP tool | Description |
|
|
145
|
+
|---|---|
|
|
146
|
+
| `ashlr__bash` | Shell with auto-compression + pluggable summarizer registry (`servers/_bash-summarizers-registry.ts`) covering `git log`/`git diff`/`git show`, `ls`, `ps`, `npm ls`, unified test-runner output, `tsc`, and npm/bun/yarn/pnpm installs. Long-running commands survive timeouts via process-group SIGKILL. |
|
|
147
|
+
| `ashlr__bash_start` / `_tail` / `_stop` / `_list` | Long-running background command control plane. |
|
|
148
|
+
| `ashlr__sql` | SQLite + Postgres one-shot. `explain` and `schema` modes. LLM summary on 100+ row results. |
|
|
149
|
+
| `ashlr__http` | HTTP fetch with readable-extract (HTML), array-elide (JSON), and private-host safety. |
|
|
150
|
+
| `ashlr__webfetch` | Fetch + extract web pages with token budget. LLM summarization kicks in at 4 KB (web content is denser than code), 100 KB hard cap. |
|
|
151
|
+
| `ashlr__logs` | Tail with level filter + dedupe + LLM summary. |
|
|
152
|
+
| `ashlr__diff` | Adaptive git diff (stat/summary/full) with LLM summary on big diffs. |
|
|
153
|
+
| `ashlr__diff_semantic` | Semantic diff with meaning-aware change grouping. |
|
|
154
|
+
| `ashlr__test` | Structured test-runner output parser — bun/vitest/jest/pytest/go test. Compresses runner noise into one failure block per failure. |
|
|
155
|
+
|
|
156
|
+
Codebase navigation:
|
|
157
|
+
|
|
158
|
+
| MCP tool | Description |
|
|
159
|
+
|---|---|
|
|
160
|
+
| `ashlr__tree` | gitignore-aware directory tree with per-dir truncation + size/LOC modes. |
|
|
161
|
+
| `ashlr__glob` | gitignore-aware file glob with size/LOC metadata. |
|
|
162
|
+
| `ashlr__ls` | Directory listing with size metadata. |
|
|
163
|
+
| `ashlr__orient` | Codebase orientation: entry points, key files, dependency graph. |
|
|
164
|
+
|
|
165
|
+
Genome + GitHub:
|
|
166
|
+
|
|
167
|
+
| MCP tool | Description |
|
|
168
|
+
|---|---|
|
|
169
|
+
| `ashlr__genome_propose` / `_consolidate` / `_status` | Active genome scribe loop — keeps `.ashlrcode/genome/` current as you code. |
|
|
170
|
+
| `ashlr__issue` / `ashlr__pr` | GitHub issue and PR read ops. |
|
|
171
|
+
| `ashlr__issue_create` / `ashlr__issue_close` | GitHub issue write ops. Self-approval guard + `ASHLR_REQUIRE_GH_CONFIRM=1` opt-in confirmation. |
|
|
172
|
+
| `ashlr__pr_comment` / `ashlr__pr_approve` | GitHub PR write ops. `pr:"current"` resolves via `gh pr view`. No destructive ops (no merge/close/delete). |
|
|
173
|
+
| `ashlr__ask` | Ask a question, get a structured answer with citations. |
|
|
174
|
+
|
|
175
|
+
See [docs/architecture.md](./docs/architecture.md) for the full tool registry and router layout.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Pro cloud
|
|
180
|
+
|
|
181
|
+
ashlr Pro connects to a hosted backend at `https://api.ashlr.ai`, unlocking
|
|
182
|
+
features that require server-side state:
|
|
183
|
+
|
|
184
|
+
| Feature | What it does |
|
|
185
|
+
|---|---|
|
|
186
|
+
| **Cross-machine stats** | Aggregate token savings across all your machines. `GET /v1/stats/aggregate` returns `machine_count` + combined lifetime totals. |
|
|
187
|
+
| **Hosted summarizer** | `POST https://api.ashlr.ai/llm/summarize` — cloud inference via xAI Grok 4.3. Falls back to local summarization or snipCompact when unavailable. |
|
|
188
|
+
| **Team genome** | Encrypted genome sync across teammates. DEKs wrapped with X25519 — only key-holders can decrypt (`/ashlr-genome-team-init`). |
|
|
189
|
+
|
|
190
|
+
**Privacy:** telemetry is off by default and explicit opt-in only (`ASHLR_TELEMETRY=on`). The `sessionId`
|
|
191
|
+
is an opaque 16-char hex value per session — never your user identity — and
|
|
192
|
+
is stored server-side as a SHA-256 hash. File paths and content are never
|
|
193
|
+
sent. See [plugin.ashlr.ai/docs](https://plugin.ashlr.ai/docs) for the full privacy
|
|
194
|
+
contract (internal: [`docs/telemetry.md`](./docs/telemetry.md)).
|
|
195
|
+
|
|
196
|
+
**Production URL:** `https://api.ashlr.ai`
|
|
197
|
+
|
|
198
|
+
The `/ashlr-doctor` command includes a **cloud** check that pings
|
|
199
|
+
`/healthz` with a 3-second timeout and reports latency. Set
|
|
200
|
+
`ASHLR_API_URL_DISABLE=1` to suppress it in offline environments.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Status-line
|
|
205
|
+
|
|
206
|
+
The status bar shows live session savings with a 7-day Braille sparkline:
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
┌─────────────────────────────────────────────┐
|
|
210
|
+
│ ashlr −0 tok $0.00 ▁▁▁▁▁▁▁ idle │
|
|
211
|
+
└─────────────────────────────────────────────┘
|
|
212
|
+
|
|
213
|
+
┌─────────────────────────────────────────────┐
|
|
214
|
+
│ ashlr −12,480 tok $0.04 ▁▂▃▄▅▆█ ██ │
|
|
215
|
+
└─────────────────────────────────────────────┘
|
|
216
|
+
|
|
217
|
+
┌─────────────────────────────────────────────┐
|
|
218
|
+
│ ashlr −48,200 tok $0.14 ▁▃▅▆██ ▓▓▓ !! │
|
|
219
|
+
└─────────────────────────────────────────────┘
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
`!!` appears when context pressure is high. Install:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
bun run ~/.claude/plugins/cache/ashlr-marketplace/ashlr/<version>/scripts/install-status-line.ts
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Install
|
|
231
|
+
|
|
232
|
+
**Prerequisites:** **[Bun ≥ 1.3](https://bun.sh)** and at least one supported host: Codex CLI, Claude Code, Cursor, Goose, or another MCP-capable client. Interactive installers can offer to install Bun; piped/non-interactive installs skip that prompt and rely on MCP bootstrap if Bun is missing. Verify with `bun --version` first, or install: `curl -fsSL https://bun.sh/install | bash`. No account, no API key.
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Claude Code one-liner
|
|
236
|
+
curl -fsSL https://plugin.ashlr.ai/install.sh | bash
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
For Codex:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
git clone https://github.com/ashlrai/ashlr-plugin
|
|
243
|
+
cd ashlr-plugin && bun install
|
|
244
|
+
codex plugin marketplace add ashlrai/ashlr-plugin
|
|
245
|
+
codex plugin add ashlr@ashlr-marketplace
|
|
246
|
+
bun run scripts/cli.ts codex-doctor --json
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
For Claude Code:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
/plugin marketplace add ashlrai/ashlr-plugin
|
|
253
|
+
/plugin install ashlr@ashlr-marketplace
|
|
254
|
+
/reload-plugins
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Verify with `/ashlr-status`. If `/reload-plugins` is unavailable or `/ashlr-status` does not see the plugin, fully quit and restart Claude Code.
|
|
258
|
+
|
|
259
|
+
**Manual install:**
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
git clone https://github.com/ashlrai/ashlr-plugin \
|
|
263
|
+
~/.claude/plugins/cache/ashlr-marketplace/ashlr
|
|
264
|
+
cd ~/.claude/plugins/cache/ashlr-marketplace/ashlr && bun install
|
|
265
|
+
# Then inside Claude Code:
|
|
266
|
+
# /plugin marketplace add ashlrai/ashlr-plugin
|
|
267
|
+
# /plugin install ashlr@ashlr-marketplace
|
|
268
|
+
# /reload-plugins
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Commands
|
|
274
|
+
|
|
275
|
+
| Command | Description |
|
|
276
|
+
|---|---|
|
|
277
|
+
| `/ashlr-help` | List every ashlr slash command grouped by purpose (Onboarding / Token meter / Genome / Upgrade / Diagnostics) |
|
|
278
|
+
| `/ashlr-allow` | Auto-approve every ashlr MCP tool — covers canonical `mcp__plugin_ashlr_ashlr__ashlr__*` names, run once after install |
|
|
279
|
+
| `/ashlr-status` | Plugin health + MCP server reachability + genome detection |
|
|
280
|
+
| `/ashlr-savings` | Live dashboard: session + lifetime + per-tool + 7-day sparkline |
|
|
281
|
+
| `/ashlr-doctor` | 11-check diagnostic — deps, MCP reachability, hooks, settings |
|
|
282
|
+
| `/ashlr-tour` | 60-second guided walkthrough on your current project |
|
|
283
|
+
| `/ashlr-benchmark` | Token-savings benchmark against your current project |
|
|
284
|
+
| `/ashlr-genome-init` | Initialize `.ashlrcode/genome/` for the −84% grep path |
|
|
285
|
+
| `/ashlr-ollama-setup` | Diagnose Ollama for `--summarize`; pull recommended 3B model |
|
|
286
|
+
| `/ashlr-settings` | View or change plugin toggles |
|
|
287
|
+
| `/ashlr-update` | `git pull` + `bun install` + report what changed |
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Free vs Pro
|
|
292
|
+
|
|
293
|
+
The free tier is the product — 40 MCP tools, 34 slash commands, the full genome scribe loop, and every benchmark included. No account required.
|
|
294
|
+
|
|
295
|
+
Pro ($12/mo, 7-day trial) adds cloud infrastructure for developers who need it: cross-machine stats sync, hosted embedding retrieval, cloud LLM summarizer (no local Ollama required), and a live auto-updating savings badge. Team ($24/user/mo, min 3) adds shared encrypted team genome, org savings dashboard, policy packs, and SSO.
|
|
296
|
+
|
|
297
|
+
Run `/ashlr-upgrade` to upgrade, or see [plugin.ashlr.ai/docs/pro/pricing](https://plugin.ashlr.ai/docs/pro/pricing) for the full comparison.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Architecture
|
|
302
|
+
|
|
303
|
+
See [plugin.ashlr.ai/docs/contributing/architecture](https://plugin.ashlr.ai/docs/contributing/architecture) for how the tools, hooks, and genome scribe loop fit together. Internal notes: [`docs/architecture.md`](./docs/architecture.md).
|
|
304
|
+
|
|
305
|
+
## Changelog
|
|
306
|
+
|
|
307
|
+
See [CHANGELOG.md](./CHANGELOG.md) for version history.
|
|
308
|
+
|
|
309
|
+
## License
|
|
310
|
+
|
|
311
|
+
MIT — [LICENSE](./LICENSE).
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ashlr:code
|
|
3
|
+
description: Main AshlrCode agent — token-efficient coding, editing, search. Delegates aggressively to ashlr:explore and ashlr:plan when appropriate.
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are **ashlr:code**, the main agent of the ashlr-plugin token-efficiency layer.
|
|
8
|
+
|
|
9
|
+
## Your tools: prefer these over the built-ins
|
|
10
|
+
|
|
11
|
+
You have three MCP tools that replace Claude Code's defaults with lower-token alternatives. Use them by default:
|
|
12
|
+
|
|
13
|
+
| When you would use | Call instead |
|
|
14
|
+
|--------------------|--------------|
|
|
15
|
+
| `Read` on a file > 2KB | `ashlr__read` |
|
|
16
|
+
| `Grep` in a repo with `.ashlrcode/genome/` | `ashlr__grep` |
|
|
17
|
+
| `Grep` in a repo without a genome | `ashlr__grep` (falls back to ripgrep + truncation) |
|
|
18
|
+
| `Edit` with > 200 chars of before/after | `ashlr__edit` |
|
|
19
|
+
|
|
20
|
+
The built-in tools remain available for edge cases (binary files, non-genome `.txt` searches, etc.).
|
|
21
|
+
|
|
22
|
+
## Delegation — this is the point of the plugin
|
|
23
|
+
|
|
24
|
+
You have two sub-agents. Spawn them via the `Task` tool with the matching `subagent_type`. **Delegation is how this plugin actually saves tokens** — every delegated call runs on haiku, which is ~1/10 the cost of sonnet.
|
|
25
|
+
|
|
26
|
+
### Delegate to `ashlr:explore` when:
|
|
27
|
+
|
|
28
|
+
- The user asks "how does X work?" / "where is Y?" / "why is this here?"
|
|
29
|
+
- You need to understand code you haven't seen yet — any unfamiliar file over ~200 LOC
|
|
30
|
+
- You're about to make changes and don't yet have a mental model of the surrounding system
|
|
31
|
+
- You've opened 3+ files just to orient yourself
|
|
32
|
+
|
|
33
|
+
**Concrete signal: if you catch yourself calling `ashlr__read` or `Grep` more than 3 times in a row to understand code before making a change, stop and delegate to `ashlr:explore` instead.**
|
|
34
|
+
|
|
35
|
+
### Delegate to `ashlr:plan` when:
|
|
36
|
+
|
|
37
|
+
- The task touches 3+ files
|
|
38
|
+
- The task requires architectural judgment (new modules, refactors, interface design)
|
|
39
|
+
- The user asked "how should we..." / "what's the best way to..."
|
|
40
|
+
- You're about to start a multi-step implementation and don't have a clear sequence
|
|
41
|
+
|
|
42
|
+
**Concrete signal: before any code change that needs more than a single Edit/Write call, ask yourself: "would a quick plan help here?" If yes, delegate to `ashlr:plan` first.**
|
|
43
|
+
|
|
44
|
+
### Handle yourself:
|
|
45
|
+
|
|
46
|
+
- Actual code edits (sonnet is worth it for correctness)
|
|
47
|
+
- Running tests / lint / typecheck after changes
|
|
48
|
+
- Git operations (status, diff, commit — but NEVER destructive without explicit user confirmation)
|
|
49
|
+
- Responding to the user's final message
|
|
50
|
+
|
|
51
|
+
## Savings rhythm
|
|
52
|
+
|
|
53
|
+
Every ~10 tool calls, or at the end of a meaningful unit of work, call `ashlr__savings` once and include the output in your next message to the user. They're paying for nothing if they can't see what's saved.
|
|
54
|
+
|
|
55
|
+
## Style
|
|
56
|
+
|
|
57
|
+
- Terse. No trailing summaries — the diff and the savings output are the summary.
|
|
58
|
+
- `file:line` references when pointing at code, not quoted blocks.
|
|
59
|
+
- If you hit an obstacle, state it plainly. Do not loop on failing calls — diagnose instead.
|
|
60
|
+
|
|
61
|
+
## Destructive operations — always confirm
|
|
62
|
+
|
|
63
|
+
Before any of the following, pause and ask the user:
|
|
64
|
+
|
|
65
|
+
- `rm -rf`, bulk file deletion
|
|
66
|
+
- `git reset --hard`, `git push --force`, branch deletion
|
|
67
|
+
- Dropping tables, deleting data
|
|
68
|
+
- Modifying CI/deploy config
|
|
69
|
+
- Installing/removing system packages
|