{"id":48877724,"url":"https://github.com/ashlrai/ashlr-plugin","last_synced_at":"2026-04-26T07:03:46.324Z","repository":{"id":351461077,"uuid":"1211085901","full_name":"ashlrai/ashlr-plugin","owner":"ashlrai","description":"Open-source Claude Code plugin — token-efficient Read/Grep/Edit via @ashlr/core-efficiency. MIT.","archived":false,"fork":false,"pushed_at":"2026-04-16T00:39:02.000Z","size":995,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T01:13:04.470Z","etag":null,"topics":["anthropic","ashlrcode","bun","claude","claude-code","claude-code-plugin","mcp","mcp-server","token-efficiency","typescript"],"latest_commit_sha":null,"homepage":"https://plugin.ashlr.ai/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ashlrai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-15T03:49:59.000Z","updated_at":"2026-04-16T00:39:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ashlrai/ashlr-plugin","commit_stats":null,"previous_names":["masonwyatt23/ashlr-plugin","ashlrai/ashlr-plugin"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/ashlrai/ashlr-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashlrai%2Fashlr-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashlrai%2Fashlr-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashlrai%2Fashlr-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashlrai%2Fashlr-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ashlrai","download_url":"https://codeload.github.com/ashlrai/ashlr-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashlrai%2Fashlr-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31954736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","ashlrcode","bun","claude","claude-code","claude-code-plugin","mcp","mcp-server","token-efficiency","typescript"],"created_at":"2026-04-16T01:07:06.356Z","updated_at":"2026-04-26T07:03:46.318Z","avatar_url":"https://github.com/ashlrai.png","language":"TypeScript","readme":"# ashlr-plugin\n\nCut Claude Code token usage by **−57% overall on real codebases** (TS −62%, Python −65%, Rust −44%) — measured on representative samples of vercel/ai, pandas, and tokio. 40 MCP tools that return less without losing what matters. As of v1.22, hybrid LLM summarization (Anthropic Haiku 4.5 default → ONNX offline → local LM Studio opt-in) means real summarization for everyone, not just users running their own LLM. PreToolUse hooks default to true redirect (`ASHLR_HOOK_MODE=redirect`), so native `Read` / `Grep` / `Edit` / `Write` / `MultiEdit` / `NotebookEdit` / `WebSearch` / `Task*` inside your project route to ashlr equivalents instead of just nudging. See [docs/benchmarks.md](docs/benchmarks.md) for methodology.\n\n**Supported on Windows, macOS, and Linux.** All hooks are TypeScript — no bash required. See [docs/install-windows.md](docs/install-windows.md) for Windows setup.\n\n```bash\n# macOS / Linux\ncurl -fsSL plugin.ashlr.ai/install.sh | bash\n\n# Windows (PowerShell)\nirm https://raw.githubusercontent.com/ashlrai/ashlr-plugin/main/docs/install.ps1 | iex\n```\n\n**Landing page:** [plugin.ashlr.ai](https://plugin.ashlr.ai/) · **Core library:** [`@ashlr/core-efficiency`](https://github.com/ashlrai/ashlr-core-efficiency) · **License:** MIT\n\n[![CI — Linux](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml/badge.svg?label=Linux)](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml)\n[![CI — macOS](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml/badge.svg?label=macOS)](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml)\n[![CI — Windows](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml/badge.svg?label=Windows)](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml)\n\n**Tested on:** Ubuntu 22.04 · macOS 14 (Sonoma) · Windows Server 2022\n\n---\n\n## Permissions — stop the prompts first\n\nRun this once after install so Claude Code stops asking on every tool call:\n\n```\n/ashlr-allow\n```\n\nThat adds one wildcard per MCP server to `permissions.allow` in `~/.claude/settings.json`. Idempotent, restartless.\n\n---\n\n## 10-second demo\n\n```\n# 1. Install\ncurl -fsSL plugin.ashlr.ai/install.sh | bash\n# Inside Claude Code:\n/plugin marketplace add ashlrai/ashlr-plugin\n/plugin install ashlr@ashlr-marketplace\n\n# 2. Use — read a large file (raw would be ~8,400 tokens)\nashlr__read  { \"path\": \"src/server.ts\" }\n# Returns snipCompact view: head + tail, elided middle — ~1,700 tokens\n\n# 3. Check savings\n/ashlr-savings\n```\n\n```\nSession savings  ·  ashlr-plugin v0.9.3\n────────────────────────────────────────\n  ashlr__read      6 calls    −42,180 tok   $0.13\n  ashlr__grep      3 calls    −11,040 tok   $0.03\n  ashlr__edit      2 calls     −3,200 tok   $0.01\n  ─────────────────────────────────────────────\n  Session total               −56,420 tok   $0.17\n  Lifetime total             −284,900 tok   $0.86\n  7-day sparkline   ▁▂▃▃▅▆█\n```\n\n---\n\n## What you get\n\nCore efficiency tools (replace built-ins with lower-token equivalents):\n\n| MCP tool | Description |\n|---|---|\n| `ashlr__read` | `snipCompact` + LLM summary on files \u003e 16 KB (Anthropic Haiku 4.5 default, ONNX/local fallback). Mean **−82.1%** on the v1.22 bench. Line numbers preserved on code files. |\n| `ashlr__grep` | Genome-aware RAG when `.ashlrcode/genome/` or cloud genome exists; ripgrep fallback with LLM summary. |\n| `ashlr__edit` | In-place search/replace — returns diff summary only, not the full file. Levenshtein candidates on miss. |\n| `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`. |\n| `ashlr__multi_edit` | Batch multiple search/replace edits in one call. |\n| `ashlr__savings` | Live token-savings dashboard: session + lifetime + per-tool breakdown. |\n\nShell, data, and web tools:\n\n| MCP tool | Description |\n|---|---|\n| `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. |\n| `ashlr__bash_start` / `_tail` / `_stop` / `_list` | Long-running background command control plane. |\n| `ashlr__sql` | SQLite + Postgres one-shot. `explain` and `schema` modes. LLM summary on 100+ row results. |\n| `ashlr__http` | HTTP fetch with readable-extract (HTML), array-elide (JSON), and private-host safety. |\n| `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. |\n| `ashlr__logs` | Tail with level filter + dedupe + LLM summary. |\n| `ashlr__diff` | Adaptive git diff (stat/summary/full) with LLM summary on big diffs. |\n| `ashlr__diff_semantic` | Semantic diff with meaning-aware change grouping. |\n| `ashlr__test` | Structured test-runner output parser — bun/vitest/jest/pytest/go test. Compresses runner noise into one failure block per failure. |\n\nCodebase navigation:\n\n| MCP tool | Description |\n|---|---|\n| `ashlr__tree` | gitignore-aware directory tree with per-dir truncation + size/LOC modes. |\n| `ashlr__glob` | gitignore-aware file glob with size/LOC metadata. |\n| `ashlr__ls` | Directory listing with size metadata. |\n| `ashlr__orient` | Codebase orientation: entry points, key files, dependency graph. |\n\nGenome + GitHub:\n\n| MCP tool | Description |\n|---|---|\n| `ashlr__genome_propose` / `_consolidate` / `_status` | Active genome scribe loop — keeps `.ashlrcode/genome/` current as you code. |\n| `ashlr__issue` / `ashlr__pr` | GitHub issue and PR read ops. |\n| `ashlr__issue_create` / `ashlr__issue_close` | GitHub issue write ops. Self-approval guard + `ASHLR_REQUIRE_GH_CONFIRM=1` opt-in confirmation. |\n| `ashlr__pr_comment` / `ashlr__pr_approve` | GitHub PR write ops. `pr:\"current\"` resolves via `gh pr view`. No destructive ops (no merge/close/delete). |\n| `ashlr__ask` | Ask a question, get a structured answer with citations. |\n\nSee [docs/architecture.md](./docs/architecture.md) for the full tool registry and router layout.\n\n---\n\n## Status-line\n\nThe status bar shows live session savings with a 7-day Braille sparkline:\n\n```\n┌─────────────────────────────────────────────┐\n│  ashlr  −0 tok  $0.00  ▁▁▁▁▁▁▁  idle       │\n└─────────────────────────────────────────────┘\n\n┌─────────────────────────────────────────────┐\n│  ashlr  −12,480 tok  $0.04  ▁▂▃▄▅▆█  ██    │\n└─────────────────────────────────────────────┘\n\n┌─────────────────────────────────────────────┐\n│  ashlr  −48,200 tok  $0.14  ▁▃▅▆██  ▓▓▓ !! │\n└─────────────────────────────────────────────┘\n```\n\n`!!` appears when context pressure is high. Install:\n\n```bash\nbun run ~/.claude/plugins/cache/ashlr-marketplace/ashlr/\u003cversion\u003e/scripts/install-status-line.ts\n```\n\n---\n\n## Install\n\n**Prerequisites:** Claude Code. [bun](https://bun.sh) ≥ 1.3 is auto-installed on first MCP server spawn — opt out with `ASHLR_NO_AUTO_INSTALL=1`. No account, no API key.\n\n```bash\n# One-liner\ncurl -fsSL plugin.ashlr.ai/install.sh | bash\n```\n\nThen inside Claude Code:\n\n```\n/plugin marketplace add ashlrai/ashlr-plugin\n/plugin install ashlr@ashlr-marketplace\n```\n\nRestart Claude Code. Verify with `/ashlr-status`.\n\n**Manual install:**\n\n```bash\ngit clone https://github.com/ashlrai/ashlr-plugin \\\n  ~/.claude/plugins/cache/ashlr-marketplace/ashlr\ncd ~/.claude/plugins/cache/ashlr-marketplace/ashlr \u0026\u0026 bun install\n# /plugin marketplace add ashlrai/ashlr-plugin\n# /plugin install ashlr@ashlr-marketplace\n```\n\n---\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `/ashlr-help` | List every ashlr slash command grouped by purpose (Onboarding / Token meter / Genome / Upgrade / Diagnostics) |\n| `/ashlr-allow` | Auto-approve every ashlr MCP tool — covers canonical `mcp__plugin_ashlr_ashlr__ashlr__*` names, run once after install |\n| `/ashlr-status` | Plugin health + MCP server reachability + genome detection |\n| `/ashlr-savings` | Live dashboard: session + lifetime + per-tool + 7-day sparkline |\n| `/ashlr-doctor` | 11-check diagnostic — deps, MCP reachability, hooks, settings |\n| `/ashlr-tour` | 60-second guided walkthrough on your current project |\n| `/ashlr-benchmark` | Token-savings benchmark against your current project |\n| `/ashlr-genome-init` | Initialize `.ashlrcode/genome/` for the −84% grep path |\n| `/ashlr-ollama-setup` | Diagnose Ollama for `--summarize`; pull recommended 3B model |\n| `/ashlr-settings` | View or change plugin toggles |\n| `/ashlr-update` | `git pull` + `bun install` + report what changed |\n\n---\n\n## Free vs Pro\n\nThe free tier is the product — 40 MCP tools, 30 skills, the full genome scribe loop, and every benchmark included. No account required.\n\nPro ($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.\n\nRun `/ashlr-upgrade` to upgrade, or see [docs/pricing.md](docs/pricing.md) for the full comparison.\n\n---\n\n## Architecture\n\nSee [docs/architecture.md](./docs/architecture.md) for how the tools, hooks, and genome scribe loop fit together.\n\n## Changelog\n\nSee [CHANGELOG.md](./CHANGELOG.md) for version history.\n\n## License\n\nMIT — [LICENSE](./LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashlrai%2Fashlr-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashlrai%2Fashlr-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashlrai%2Fashlr-plugin/lists"}