by OnlyTerp
Fewer back-and-forth AI turns. Local MCP context pack + test-gated multi-file ship with automatic rollback.
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
# Add to your Claude Code skills
git clone https://github.com/OnlyTerp/turnpackGuides for using ai agents skills like turnpack.
See how turnpack compares with popular alternatives.
Try the demo · See an example · Set it up · The three tools · What it saves · Safety · FAQ
AI coding agents work in round trips: the model asks for something, waits, reads the result, and asks again. Each trip is a full model turn, a wait for the first token and then the tokens themselves. Today's apps already run independent reads side by side, so the trips that are left are the ones that depend on each other. A search has to come back before the agent knows which files to open. An edit has to land before the tests can run. And when the tests fail at the end, your repo is left half-edited while the agent spends more turns backing out.
Turnpack is a small local MCP server that gives the agent three tools to fold those trips together:
| Tool | One call does | So that |
|---|---|---|
pack |
A regex search with the code around each hit, several files (whole, by line range, or just one function), glob listings and git status | The agent gets its context in one turn. Replies are size-capped, and .env and key files are redacted. |
ship |
Edits across any number of files, then your test command | Either everything passes and stays, or every file is restored byte-for-byte and the agent gets the failing output. None of the four apps we checked does this on its own. |
batch |
A short read-only script over the repo | "Which of these 40 files export X?" costs one turn and a ten-line answer instead of 40 reads. |
It runs entirely on your machine: no API keys, no account, no telemetry, no network calls, and zero runtime dependencies. It works with Claude Code and Claude Desktop, Codex CLI and the ChatGPT desktop app, OMP, Grok Build, Cursor, Gemini CLI, OpenCode and anything else that speaks MCP over stdio.
npx turnpack demo
This builds a throwaway repo in your temp folder, runs all three tools against it, and deletes it. Nothing in your own projects or AI app config is touched.
The recording is generated from the real output of those two commands (scripts/render-assets.py), so it cannot drift from what the tool does. doctor is run on a temporary home directory in which init has just set up five apps, which is why it lists them.
Want to run it straight from this repository instead of npm? npx github:OnlyTerp/turnpack demo
A rename that misses a call site is the classic way an agent breaks a build. Here is that mistake going through ship. The agent renames a function but forgets the file that imports it:
{
"edits": [
{
"path": "src/tax.js",
"search": "export function calculateTax(amount)",
"replace": "export function computeTax(amount)"
}
],
"verify": "npm test"
}
FAILED_AND_ROLLED_BACK: verify "npm test" failed (exit code 1).
Restored 1 file(s) to byte-exact pre-edit snapshots. The workspace is unchanged; fix the edit and ship again.
Changed by this call and tested together: src/tax.js (line 3).
The failing output does not mention any file this call changed. It names src/invoice.js:1, a file this call did not change: often a caller or a test the change has not reached yet.
$ npm test
> test
> node test/invoice.test.js
file:///home/you/shop/src/invoice.js:1
import { calculateTax } from "./tax.js";
^^^^^^^^^^^^
SyntaxError: The requested module './tax.js' does not provide an export named 'calculateTax'
The repo is exactly as it was, and the reply names the file the edit missed. It ships again with both files:
{
"edits": [
{
"path": "src/tax.js",
"search": "export function calculateTax(amount)",
"replace": "export function computeTax(amount)"
},
{
"path": "src/invoice.js",
"search": "calculateTax",
"replace": "computeTax",
"replace_all": true
}
],
"verify": "npm test"
}
SHIPPED_AND_VERIFIED in 283ms: 2 file(s) changed: src/tax.js (line 3), src/invoice.js (lines 1, 4).
$ npm test (passed)
> test
> node test/invoice.test.js
ok - invoice total includes tax
Two turns, and at no point was the working tree broken. Both replies are real output, with Node's internal stack frames cut from the first and the project path shortened.
{
"query": "calculateTax",
"files": ["src/tax.js", { "path": "src/invoice.js", "symbol": "invoiceTotal" }, ".env"],
"git_status": true
}
## GIT STATUS
## master
## SEARCH "calculateTax" (3 hits, engine=rg)
src/invoice.js:1: import { calculateTax } from "./tax.js";
src/invoice.js:4: return Number((subtotal + calculateTax(subtotal)).toFixed(2));
src/tax.js:3: export function calculateTax(amount) {
## FILES (3)
### FILE: src/tax.js (L1-6/6)
1 | export const TAX_RATE = 0.08;
2 |
3 | export function calculateTax(amount) {
4 | return Number((amount * TAX_RATE).toFixed(2));
5 | }
6 |
### SYMBOL: src/invoice.js :: function invoiceTotal (L3-5/6)
3 | export function invoiceTotal(subtotal) {
4 | return Number((subtotal + calculateTax(subtotal)).toFixed(2));
5 | }
### FILE: .env
[REDACTED SECRET FILE: .env — pass allow_secrets: true if intentional]
You need Node.js 22 or newer. Then:
npx turnpack init
npx turnpack doctor
init finds the AI apps you have installed, shows you exactly what it would change, and asks before writing. By default that is Claude Code, Claude Desktop, Codex (the CLI and the ChatGPT desktop app share one config), OMP and Grok Build.
PATH a desktop app happens to be given. If you ran init through npx, the server's files are first copied to ~/.turnpack/versions/<version>, because the npx cache gets cleaned. Prefer a portable entry? init --npx writes npx -y turnpack@<version> serve instead, pinned to the version.turnpack is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by OnlyTerp. Fewer back-and-forth AI turns. Local MCP context pack + test-gated multi-file ship with automatic rollback. It has 50 GitHub stars.
turnpack's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/OnlyTerp/turnpack" and add it to your Claude Code skills directory (see the Installation section above).
turnpack is primarily written in TypeScript. It is open-source under OnlyTerp on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh turnpack against similar tools.
No comments yet. Be the first to share your thoughts!