Repository navigation
Releases: HarzerHeribert/claude-modpack
Release list
claude-modpack 0.6.1
A guided installer, the site told as stories, Trail-Code measured the way people install it, and a fix for slow language servers.
- modpack 0.6.1: the release number the self-update compares against.
- lsp-plus 0.4.2: a language server never holds a tool's result. lsp-plus answers Claude's grep for a code symbol, and after an edit names what it touches, by asking the language server. On PocketBase a cold gopls was still loading the module: one grep waited past Claude Code's 120 s, was moved to the background, and the run's last message answered that notice instead of the question (score 0). Every language-server question after a grep or an edit now gets 8 s; past that the tool's result goes back without the answer. Tested with a server that never answers.
- Lab notes 3, rewritten (A 10,000-star code graph on our bench): Trail-Code measured the way a person installs it. Beside the pack +12.8% fresh; alone against plain Claude Code −1.8% [−5.9, +2.7] (64 runs a side, two batches); against the pack 0.6.0 +19.0% [+13.1, +25.1]; its own best case, the
trail ask --sourcebundle in front of the prompt, +3.2% [−7.3, +15.0] (Sonnet, 8 runs). How Claude used it (its MCP tools never, its command line as a second grep), where its published numbers come from and why they do not carry over to an install, and what we do not claim. The graveyard has its grave. - PocketBase, Trail-Code's own 15 tasks: its ten questions word for word and its five merged pull requests from their base commits, one run per task as Trail-Code ran them, Opus, gopls in both arms. The pack 0.6.0 against plain Claude Code: $9.98 → $7.88 in total (−21.0%), the average task −18.1% [−26.7, −8.3]; all five pull requests touched the maintainers' files. The runs and the tasks ship in
benchmarks/(results-pb.jsonl,pb_repo.py). - A guided installer:
install.shinstalls the marketplace and the pack with Claude Code's own plugin commands, then sets it up: guided (Claude Code starts in your project with/modpack:setup), quick (the questions in the terminal) or later. Every command that changes something is shown before it runs, nothing is installed on your system without a question, and route only after its consent text.--dry-runshows it all and changes nothing. - The site, rewritten as stories: the pack and each mod told as the moment it changes, what happens without it and with it, what we measured, and where it does not help. Numbers in words, exact with their ranges on request, each still checked against its source when the site is built.
- README: Trail-Code as measured now; PocketBase beside the other repositories; the quality answer recounted over 2,184 graded runs.
Install in Claude Code: /plugin install modpack --marketplace HarzerHeribert/claude-modpack, then /modpack:setup.
Or from your terminal, guided through both steps: bash <(curl -fsSL https://raw.githubusercontent.com/HarzerHeribert/claude-modpack/main/install.sh)
Installed packs update themselves within a day, or now with /modpack:update. The site: https://harzerheribert.github.io/claude-modpack/
claude-modpack 0.6.0
Hand-offs that cost Claude two steps, checked by the tool itself; route handing feature and test work over before Claude reads the code; and seek, a new mod that has Claude look around in few, lean steps.
- seek 0.3.3 (new, on): every request re-reads the whole conversation, and whatever Claude reads stays in it, re-read by every later request until a compaction (a median of 143 later requests in the author's interactive sessions). So beside your prompt seek adds your setting to look around in few, lean steps: the searches and reads Claude can already name in one command, definitions or line ranges instead of whole files, nothing read again that the session already holds. From the first prompt of a session, and again after a compaction or another 150k tokens. Against the pack in the same batch: −11.9% [−17.2, −5.9] fresh on click (20 runs each way), −16.4% [−21.8, −10.5] on TypeScript (24 each, 72 of 72 full marks), −10.2% [−17.6, −2.2] in a long session that had to find the code, −15.9% [−22.5, −8.6] in one that had read it all (24 each). The map of where a search's hits sit (
map) was measured too and stays off: nothing certain saved. Nothing leaves your machine./seek:setupchecks it. - delegate 0.4.3: a verified hand-off. The worker ends its report with a VERIFY block (the command that runs only its new tests, and what it left open). delegate runs that command beside the check, counts both outputs (no test selected is no pass), and its result starts with one line: Verified, with what passed, or Not verified, with each reason. On Verified, Claude reports without running anything again: one step after a hand-off instead of two or three. A read hand-off ends with a PLACES block instead (
path:line symbolper place); delegate checks each place in the code and puts Verified or Not verified first. Read hand-offs measured +5% against Claude doing the lookup itself, so this is a safety net for the answer, not a saving: lookups still belong with Claude. The worker now starts in the session's project directory and is told the project's root (before, a worker could find another checkout of the same project on the disk and answer from it), and the diff runs git from the repository's top, so new files outside the session's folder are in it. A worker's report arriving a second time inside a running turn now rides along as one line, without the yellow "Prompt dropped by a hook" row. - route 0.3.1: TypeSafe's Jev as a second classifier (
classifier: autotakes it when its key is set): as accurate as ScaleDown on 50 test prompts and 4 to 5 times faster (0.25 s), and certain on a long feature spec ScaleDown scored under the threshold. The order now hands the work over before Claude reads the code (direct, on): followed 24 of 24 times, where Claude allowed to look around first kept the work 5 times in 16. Only the first 8,000 characters of a prompt are sent. On TypeScript, against the pack in the same batch, all correct: a feature 51% cheaper and 42% faster, Claude's own requests 11 → 2; writing tests 36% cheaper. - cells 0.4.3, seek 0.3.3: subagents get the settings too. A subagent Claude starts has a system prompt of its own and never sees your prompts, so cells' chaining guidance and seek's setting never reached one. Now each adds one line to a subagent's task, in your name, under "The person's settings for this work:" (
subagents, on; not forks, teammates or delegate's workers). With every task handed to one general-purpose subagent, 5 tasks × 4 runs per arm, Opus: −17.6% [−21.0, −14.0] per run, edit tasks −21.8%, explanations −7.8%; the subagent's requests 10.0 → 6.9, its Bash calls chained 88% → 99%. The lines reached 20 of 20 subagents with the option on, none with it off. - modpack 0.6.0: installs seek; an update from an earlier release installs it as a mod new in the release.
- Setup, step by step:
/modpack:setupchecks the machine, asks every choice in one message, sets the mods up in order (route last, and only with your consent), and ends with a table of what is on and why; every mod has its own/<mod>:setupthat ends with a check proving it works in your project (statusline 0.2.1, smart-compact 0.1.2, eta 0.2.2, lsp-plus 0.4.1, cells 0.4.3 carry theirs, seek its own); SETUP.md is the same by hand. - Benchmarks: what a run leaves behind. A bench run ends after its task, so what it added to the context was never read again; in a real session every later request re-reads it.
carry.pyprices that beside each run's cost (the tokens a run added × 140 later requests × the cache-read price). Counted this way, seek's earlier versions, which attached the lines around a search's hits, cost more than they saved (+6.3% fresh) and were retired; seek 0.3.1's setting saves more (−18% fresh, −23% on TypeScript). - The site, rebuilt (harzerheribert.github.io/claude-modpack): the ideas, each with a simulator built from the mods' own rules; every measured claim (127) with its interval, runs, date and raw files, filterable and plotted; the graveyard of what did not ship; a glossary. Every number is quoted from the README, this changelog, the lab notes or the benchmarks, and the build fails when a quote no longer matches its source. The lab notes moved to notes.html, each page at its old address.
- Corrected: worker costs were undercounted. A worker's transcript records its output as each response began, and the bench priced runs from the transcripts, so every number with a hand-off in it was too good. Recomputed from Claude Code's own totals (CORRECTION-1016.md has each claim, old and new): the order after an approved plan (0.3.0) −22% on a feature and −26% on tests, not −27% and −33%; route 0.1 (0.5.0) −14% over the pack and −34% on features and tests, not −17% and −40%; the TypeScript feature −51%, not −57%; a feature in a long session −35%, not −37%. Every saving is still a saving, smaller; only Sonnet at low effort on the feature (−15%) is no longer clear of zero, and on cost Haiku now builds the features a little cheaper than Sonnet. The pack-against-plain numbers had no workers and stand.
- README: eight mods; seek; bigger jobs in a fresh session −8% (was −9%, now 12 runs each way); writing tests gains nothing from the pack alone (−2%), and everything from route. The pack-against-plain numbers were measured without seek.
- Lab notes 10, Two requests: where Claude's requests around a hand-off went, the structured report that removed them, and whether Claude now hands off on its own.
- Lab notes 11, What looking around leaves behind: what exploration costs in a long session, the requests and what they leave in the context; why seek's first versions lost money once that counted; an order in the middle of Claude's search that was not followed, and the same kind of order with the prompt that was. The graveyard has two new graves.
Install: /plugin install modpack --marketplace HarzerHeribert/claude-modpack, then /modpack:setup. Installed packs update themselves within a day, or now with /modpack:update.
The site: https://harzerheribert.github.io/claude-modpack/
claude-modpack 0.5.0
route, the first mod that decides when Claude hands work off; language servers for five more languages; and the lab notes, nine write-ups of what we tried and why most of it did not ship.
- route 0.1.0 (new, off until you turn it on): a fast classifier (ScaleDown) reads each prompt, and only feature or test work gets delegate's order to hand it to the cheaper worker. On click's eight jobs every routing decision was right (8 of 8 orders, none of 24 wrong ones): −17% over the pack, −40% on features and tests, all 32 results correct. Turned on, each prompt's text goes to ScaleDown, a US service, and it needs a ScaleDown key.
- lsp-plus 0.4.0: Go, Kotlin and Ruby in the grep answer, shell scripts (bash-language-server) and Terraform (terraform-ls, whose grep answer takes an address such as
var.region), andblast, off: after an edit changes a function's parameters, its callers. - modpack 0.5.0: installs route, and an update now installs a mod that is new in the release.
- The numbers, measured again: plain against the pack on a second day, pooled with the first (200 runs, all correct). A long session −33% (−26% one day, −40% the next); quick questions in a fresh session about even (+2%), where 0.4.0 said +5%. The same direction on a TypeScript library (−7.6%) and on 30 SWE-bench Verified bug reports (23% fewer steps). How a plugin installed on the lab machine nearly made the second day's baseline a copy of the pack: lab notes 8.
/plugin install modpack --marketplace HarzerHeribert/claude-modpack
Already on 0.4.0? The pack updates itself within a day, or run /modpack:update now. route arrives off: /mods route on, with a ScaleDown key in its settings.
claude-modpack 0.4.0
A guard against other plugins' hooks that hang, /mods from the keyboard, and rows above the prompt that always end.
- modpack 0.4.0, the hook guard: a permission or notification hook of another plugin that runs over 10 seconds no longer freezes Claude Code. The pack stops waiting for it and Claude Code goes on (with a permission question, it asks you itself). You're told once which plugin it was. We found it with Warp's plugin, whose permission hook hangs outside the Warp terminal. The guard covers only these two kinds of hook, where skipping is safe; a hook that guards tool calls is never touched.
hookGuard: offturns it off, for a hook that waits for you on purpose. Checked live, including the freeze that started it: a delegate worker that needs your permission, behind a hook that hangs on purpose. Without the guard, no question appeared for more than a minute. With it, the question came after 10 s, in default and in auto mode, and the worker finished once approved. - modpack 0.4.0,
/modsfrom the keyboard:/mods statusline off,/mods statusline on, or/mods statuslineto switch. The pane's buttons only respond to a mouse click. - eta 0.2.1: a background command run by a delegate worker no longer leaves a row that never ends. A row that measures progress and gets no output for 20 minutes ends as "no update for 20 min".
- delegate 0.2.1: the line Claude Code shows when delegate drops a second copy of a worker's report now says what happened, instead of reading like an error.
- README: real recordings of each feature, and the measured numbers animated.
/plugin install modpack --marketplace HarzerHeribert/claude-modpack
Already on 0.3.0? The pack updates itself within a day, or run /modpack:update now.
claude-modpack 0.3.0
Workers that start from an approved plan, mods you can see and switch, a pack that updates itself, and a README that shows what you get.
- delegate 0.2.0: approve a plan of 20 lines or more and Claude hands it to a worker. Told so by the mod, Opus did it 8 of 8 times: feature work 27% cheaper, tests 33%, every run correct. The kind of work picks the worker: Haiku at low effort for read and mechanical work, Sonnet at medium for build work. The card is drawn like a cell, and each running worker is a row above the prompt. When the desktop app's auto mode refuses a worker, Claude is told why and does the task itself. A background worker's report now arrives when the worker ends, in the desktop app too, which sends no notice for it. A hand-off orphaned by a reload or restart ends instead of running on.
- modpack 0.3.0:
/modsshows the pack's mods and turns each on or off, live; every mod has anenabledsetting. The pack checks for a new release once a day and installs it in the background (updates: notifyoroff;/modpack:updateupdates now). - statusline 0.2.0, smart-compact 0.1.1: in the desktop app only what needs you, and nothing while the cache is ready. The terminal is unchanged.
- eta 0.2.0: rows for jobs that write a status rather than a count, such as delegate's workers; a row with no news for 20 minutes ends.
- cells 0.4.1: a cell after a reload sets up again when the first setup stopped halfway. lsp-plus 0.3.1: the
enabledswitch. - Measured (
benchmarks/delegate-bench/SUITE.md), the pack as it ships against plain Claude Code, 116 runs, all correct: in a session already holding 216k tokens the average task −26% [−31%, −21%], 3.5 model requests instead of 5.4; fresh −5% [−10%, −0.5%], multi-step work −11%. On tasks of one to five requests the pack costs about 5% more [+1%, +10%]: its tools and guidance ride along in every request.
/plugin install modpack --marketplace HarzerHeribert/claude-modpack
Then run /lsp-plus:setup in the repository you work in. Already installed? /plugin marketplace update claude-modpack, then update the plugins; from 0.3.0 on the pack does this itself. Every claim links to the runs behind it in benchmarks/: 730 graded runs, all correct, every one graded again for this release.
claude-modpack 0.2.0
cells leaves macOS, a mod that cannot run fully says so and offers the fix, and the savings are traced to the mod that earns them.
- cells 0.4.0 runs off macOS: on Linux in bubblewrap, and anywhere on Node 25 or later, whose permission model closes the network (signals stay open there, and the cell's report says so). Where nothing closes the network to its runner it does not run: you see why and the fix, Claude offers it once, and
/cells:setupdoes it with you. On macOS the Seatbelt profile now refuses every signal but the runner's own: before, a cell that got out of itsvmcould have signalled Claude Code itself. - lsp-plus 0.3.0:
/lsp-plus:setup, the first thing to run after installing: it finds the repository's languages, checks which LSP plugins and servers are missing, asks once, installs them, and confirms each after a restart. A language the repository has five or more files of, whose server does not answer, is named at session start, and Claude offers the setup once. The warm-up now asks about the smallest tracked file of each kind: it asked about the first (click'sdocs/conf.py), and Claude Code put that file's diagnostics into every session, 4.5% on small tasks. - eta 0.1.2: a log a running background command writes, tracked under a name of its own, stays one row with that command. On phone and VS Code, where there is no band, the tool's reply stays readable.
- Measured (
benchmarks/delegate-bench/SUITE.md): which mod earns the savings, each taken out of the pack (156 runs, all correct). The pack against plain Claude Code: −11% [−17%, −5%] on the average task, −18% on multi-step work, even on small tasks. cells earns it; lsp-plus answers better without saving on the whole.
/plugin install modpack --marketplace HarzerHeribert/claude-modpack
Then run /lsp-plus:setup in the repository you work in. Already installed? /plugin marketplace update claude-modpack, then update the plugins. Every claim links to the runs behind it in benchmarks/: 485 graded runs, all correct.
claude-modpack 0.1.1
The pack goes quiet where it has no proof, answers instead of advising, and runs in the background.
- lsp-plus 0.2.0: a grep for a code symbol comes back with the language server's exact answer attached (who calls it, each caller named as it is nested, or its references), so Claude needs no further step: 25% fewer requests on a rename, cost even on a trace, never dearer. Language servers start at session start for the languages in the repository, so the first answer is whole. The old note asking Claude to use the LSP tool is off by default: in 45 benchmark notes it was never followed.
- cells 0.3.0:
run_cell({ code, background: true })returns at once and the report arrives as a message; ctrl+enter on a running cell moves it to the background, Esc stops it after the call that is running.sh(command, { background: true })starts Claude Code's own background task. The card says "background" or "stopped" instead of hanging on "running". - eta 0.1.1: its tool call reads as one line; the band above the prompt carries the progress.
- Measured (
benchmarks/delegate-bench/SUITE.md): on tasks of one to five requests the pack now costs the same as plain Claude Code (−4% to +2%); the README's charts compare warm runs and the long session with the pack loaded from its start. Opus hands off only when told to: 0 times in 28 runs with "Delegate where you see fit" in the prompt. Unused claude.ai connectors cost 34% on fresh small tasks: worth turning off in Claude Code.
/plugin install modpack --marketplace HarzerHeribert/claude-modpack
Already installed? /plugin marketplace update claude-modpack, then update the plugins. Every claim links to the runs behind it in benchmarks/: 329 graded runs, all correct.
claude-modpack 0.1.0
The first public release: the modpack plugin and the six Claude Code mods it installs, each measured on real tasks before it shipped.
/plugin install modpack --marketplace HarzerHeribert/claude-modpack
The mods
- statusline: one line under the prompt with the model and its effort, how full the context is, the plan's 5-hour and 7-day use with their resets, and what other mods put on it.
- smart-compact: keeps an idle session's prompt cache warm, or compacts it just before it expires, whichever is cheaper; says on the line whether the next prompt is ready or cold.
- delegate: a
hand_offtool that gives a self-contained task to a Haiku or Sonnet worker, with the diff, a check it runs itself and the cost as evidence. - lsp-plus: references that name the docs using a symbol, a warning when an edit leaves the docs behind,
/refsfor stale names and dead links, Markdown and SQL language servers. - cells: a
run_celltool for several edits and their check in one step through the real Edit tool, and the language server's references, definitions and renames. - eta: long-running and background jobs with a percentage and an estimated finish time above the prompt.
Measured
On Claude Opus 5.5 in the click repository, graded by hidden tests and fixed rules; every one of the 219 runs was correct.
- The pack against plain Claude Code (70 runs): 5.2 model requests per task instead of 7.2; 7% cheaper in a fresh session, 15% cheaper in a session already holding 227k tokens. A one-request lookup costs a few cents more.
- delegate (120 runs): handing off a feature or tests cost 27–37% less, fresh and in a 233k-token session. Lookups, traces, explanations and small edits cost more handed off, so it is for you to ask for; Opus never hands off by itself.
- Sonnet 5.5 alone (14 runs, no mods): as correct as Opus on these tasks, 65% cheaper and 44% faster. The tasks are easy enough that every setup scored 100%, so they can't show where Sonnet falls short.
The write-ups, every graded run and the harness are in benchmarks/. Built and tested on Claude Code 2.1.296. MIT licensed.