Quick start · Website · How it works · AGENTS.md · llms.txt · Skills · Discussions · All projects
Mechanical code edits without a model: deterministic, free, offline.
Agent Booster is an agent employee, a packaged specialist agent with its own skills, memory and tests. It owns one job: tools / CLIs. Its persona is Booster. Coding agents use it through its skills, its MCP server and its command line. A scheduled job runs its evals and proposes fixes. A person makes every change.
Agent Booster is part of an agent-native play for agent-native systems that can eventually be recursively self-improving and evolving, operated by agent employees.
Agent Booster (agent-booster) does the mechanical part of code editing without a model: it strips
console calls, turns var and let into const, sorts imports, wraps async functions in
try/catch, adds debug logging and adds "use strict". It is for coding agents and the people who run
them. Route the boring edits here for free, and keep the model for edits that need reasoning.
Claude Code: the plugin brings the skills, sub-agents, hooks and MCP server.
/plugin marketplace add naman10parikh/agent-booster
/plugin install agent-booster@agent-booster
Its MCP server, Codex, Cursor, Gemini CLI, one skill and the command line
Its MCP server, in any MCP client:
claude mcp add --transport stdio agent-booster -- npx -y -p github:naman10parikh/agent-booster agent-booster-mcp
codex mcp add agent-booster -- npx -y -p github:naman10parikh/agent-booster agent-booster-mcpCursor (.cursor/mcp.json), Gemini CLI (.gemini/settings.json) and most other clients take the same command as JSON:
{
"mcpServers": {
"agent-booster": {
"command": "npx",
"args": [
"-y",
"-p",
"github:naman10parikh/agent-booster",
"agent-booster-mcp"
]
}
}
}Gemini CLI: the extension brings the context and the MCP server.
gemini extensions install https://github.com/naman10parikh/agent-boosterOne skill (3 in all, in skills/), in any agent that reads Agent Skills:
gemini skills install https://github.com/naman10parikh/agent-booster --path skills/route-the-boring-path
git clone --depth 1 https://github.com/naman10parikh/agent-booster /tmp/agent-booster && cp -r /tmp/agent-booster/skills/route-the-boring-path ~/.claude/skills/The command line:
npx -y -p github:naman10parikh/agent-booster agent-booster --helpCodex, Cursor, OpenCode, GitHub Copilot and other agents read AGENTS.md; Claude Code reads CLAUDE.md and Gemini CLI reads GEMINI.md, which import it. llms.txt maps every surface for agents that read first.
It needs Node.js 18 or later. Run it straight from GitHub (the npm name agent-booster belongs to a
different project):
npx -y -p github:naman10parikh/agent-booster agent-booster listPipe code through a transform, or ask for a result an agent can parse:
echo 'var x = 5;' | agent-booster var-to-const --stdin
# const x = 5;
printf "console.log('hi');\nconst y = 2;\n" | agent-booster remove-console --stdin --json
# {"code":"const y = 2;\n","changes":1,"description":"Removed console statements"}Preview a whole folder before you write anything:
agent-booster remove-console src --dry-run
# src/math.js: 1 would change (Removed console statements)
# src/name.js: 1 would change (Removed console statements)
# [DRY RUN] 2 changes across 2 files
agent-booster var-to-const src --dry-run
# src/name.js: 1 would change (var/let → const)var-to-const left src/math.js alone because its total is updated with +=. Drop --dry-run
to write the changes. Let the router find the mechanical edits in one file, limited to the transforms
you want:
agent-booster route src/app.js --dry-run --only=remove-console,format-importsA coding agent's model budget is its scarcest resource, and many real edits are mechanical: formatting, dead-code removal, small syntax migrations. Sending those to a model is slow, costs money and is not deterministic (the model may change things you did not ask for). A deterministic transform is:
- Free: nothing to pay per run, no API key.
- Fast: no network round trip.
- Reproducible: the same input gives the same output, every time.
- Reviewable: a fixed regex you can read, not a black box.
The intended pattern: an orchestrating agent classifies an edit, sends the mechanical part to
agent-booster, and keeps the model for edits that need reasoning. agent-booster route does that
for one file: it finds which transforms apply, runs them, and names the edits that need a model.
Run against a file or a folder (not --stdin), it walks .ts .tsx .js .jsx .mjs .cjs files, skips
node_modules, dist and dotfiles, and reports a change count per file. It is inspired by Ruflo's
Agent Booster module, written in pure TypeScript and regex: no WASM, no native bindings, no network.
Each transform is defined once, in src/transforms.ts. The CLI, the MCP server, the router and the sandbox runner all use that file.
| Transform | What it does |
|---|---|
var-to-const |
Convert var/let to const where the binding is never reassigned. |
remove-console |
Strip console.log/warn/error/debug/info/... statements. |
add-logging |
Inject console.debug("[module] fn() called") at function entry points. |
add-error-handling |
Wrap async functions lacking try/catch in a try/catch that re-throws. |
format-imports |
Sort and group imports into node builtins, external, relative. |
add-strict |
Prepend a "use strict"; directive. |
Safety note: these are heuristic, regex-based transforms, not full AST rewrites. They are conservative on purpose:
var-to-constskips any binding that is reassigned, including through+=or++. Still review the diff: use--dry-runfirst, and run on code under version control.
Roadmap (not implemented yet): add-types (add basic TypeScript type annotations) and
async-await (convert .then() chains to async/await). Both need the TypeScript compiler API
rather than regex, which is the next milestone. Pull requests welcome.
agent-booster <transform> <file-or-dir> # transform a file or recurse a folder
agent-booster <transform> --stdin # read code from stdin, write the result to stdout
agent-booster <transform> --stdin --json # machine-readable result (for agents)
agent-booster <transform> <path> --dry-run # preview changes without writing
agent-booster route <file> [--only=t1,t2] # run the mechanical edits, name the ones needing a model
agent-booster memory-search "<query>" # BM25 search over Booster's own knowledge
agent-booster sandbox-run <transform> <file> # run a transform inside an E2B microVM (needs E2B_API_KEY)
agent-booster log [N] # the last N runs from logs/runs.jsonl
agent-booster list # list the transforms
agent-booster --help
agent-booster --versionThe MCP server (agent-booster-mcp) exposes the six transforms as tools that each take
{ "code": "..." }; they are listed in AGENTS.md.
An early but working tool (v1.0.0): 6 transforms, 7 end-to-end tests and 16 golden evals (including a check that the CLI and the MCP server agree), a CLI verified end to end, and a daily improvement loop. It is honest about its limits: regex heuristics, not a full codemod engine, and two roadmap transforms not built yet. It does exactly what is documented here and nothing more.
pnpm install # also builds dist/
pnpm build # tsc to dist/
pnpm test # vitest, runs the compiled CLI end to end
pnpm eval # the golden evals
pnpm dev # tsc --watchEvery project in this fleet is graded on the same 11 harness components and on self-improvement. Each mark is backed by a file you can open.
| Component | Grade | Where |
|---|---|---|
| Identity | ✅ | identity/SOUL.md:8 (name Booster, tagline), :25 (boundaries); identity/BRAND.md:1 |
| Memory | ✅ | memory/MEMORY.md:1; src/memory-search.ts:132 (BM25, agent-booster memory-search); memory/LEARNINGS.md |
| Skills | ✅ | skills/route-the-boring-path/SKILL.md:1 (+2 more in skills/) |
| Tools/CLIs | ✅ | package.json:12-15 (agent-booster, agent-booster-mcp) |
| Hooks | ✅ | .claude/settings.json:4,24; hooks/hooks.json:4; hooks/suggest-transforms.cjs:1 |
| Sub-agents | ✅ | .claude/agents/transform-reviewer.md:1; .claude/agents/edit-router.md:1 |
| MCPs | ✅ | src/mcp-server.ts:43 (6 tools); .mcp.json:3 |
| Dispatch | ✅ | src/route.ts:90 (routeCode); .github/workflows/improve.yml:9 (daily) |
| Evals | ✅ | eval/golden.test.ts:55 (16 cases); .github/workflows/ci.yml:32-35 |
| Observability | ✅ | src/run-log.ts:50 (logs/runs.jsonl on every run; agent-booster log) |
| Sandbox/Infra | ✅ | src/sandbox-run.ts:69 (E2B Sandbox.create at :84) |
| Self-improvement | ✅ | dsip.json:1 (L2); scripts/improve.mjs:1 |
✅ real and tested · 🟡 partial, with the reason in the row · ❌ absent
It carries its own evals and a self-improvement contract, dsip.json, which says what it may change and how a change is judged. A scheduled job runs its evals and proposes fixes. A person makes every change. Lessons it learns are kept as rules in its memory files.
One of the projects by Naman Parikh. Each owns one part of an agent's harness, or of the product around an agent, and all of them follow one standard.
| Related project | What it owns |
|---|---|
| AgentDial | Identity |
| WikiMem | Memory |
| Skillsmith | Skills |
| Hooksmith | Hooks |
| AgentCast | Sub-agents |
| Plugsmith | Plugins |
| Armory | MCPs and the component registry |
| AgentGrid | Dispatch |
| AgentSwarm | Dispatch |
| AgentBench | Evals |
| AgentMoney | Observability |
| Sandforge | Sandbox / Infra |
| Claude Harness | The whole harness, as a template |
Questions and ideas go to Discussions; bugs go to issues. Follow the work on X and LinkedIn.
Read CONTRIBUTING.md. AI-assisted pull requests are welcome. Report a vulnerability privately, as SECURITY.md explains.
If it is useful to you, a star helps other people find it.
MIT © Naman Parikh. See LICENSE.