Writing code is dead. Understanding it is not.
“The job is no longer typing code; it is maintaining enough understanding to trust what was typed.”
When you aren't vibe coding and need to make sure your code changes are right, use Scalpel to surgically plan your changes.
- Creating
.planfiles for individual files keeps your mental model of the codebase intact. - Small plans for individual files make changes easier to understand than a large Markdown or HTML document.
- A standards review step ensures each
.planmeets your conventions at the file level. - Small, focused plan files make MR reviews of your plans easy to digest.
You can have AI create the .plan files or write them manually.
- Run
/scalpel:plan <the change you want to make>to create.planfiles. - Review the created
.planfiles. - If you're happy with the plans, run
/scalpel:implement.
- Create a
.planfile next to each source file you want to change. For example,src/app/auth.plantargetssrc/app/auth.pywhen you specify that path in thefilefield. Use plain language and include a code example if you want. - Create
.planfiles for all the other files that need to change. - Run
/scalpel:plan <description of what you're trying to achieve>to evaluate your plans. Scalpel will add any missing plans. - Review the findings and any added plans.
- If you're happy with the plans, run
/scalpel:implementto apply the code changes. Scalpel will follow the plans exactly.
- Planning is much easier to comprehend. You see exactly what the change will be.
- If you manually create
.planfiles and miss a required change,/scalpel:planwill identify the gap and add the missing plan. - Plans aren't giant markdown files or sprawling contexts. Each plan is small and focused on a single file so it's easy to review.
- MR reviews of plan files are easy because each plan is a small, focused unit.
- You find that plan mode produces a wall of text that is hard to review and understand.
- You want to plan a change before asking the LLM to implement it.
- You want to personally maintain a level of understanding of your codebase as it changes rapidly, even though you're not typing it out anymore.
- You want to easily review plans in an MR before implementation.
Two slash commands drive the workflow:
| Command | What it does |
|---|---|
/scalpel:plan |
Evaluate plans and create missing ones |
/scalpel:implement |
Apply plan files to source files |
For each file that needs to change, create a .plan file next to it:
You can write plans in plain language; Scalpel will normalize them automatically when you run /scalpel:plan.
Minimal:
Add a login functionWith full structure:
---
file: src/app/auth.py
type: modify
---
## Summary
Add GitHub OAuth login so users can authenticate without a password.
## Content
/```python
def login_with_github(code: str) -> User:
token = exchange_code(code)
profile = fetch_github_profile(token)
return User.from_github(profile)
/```
## Key Details
- `exchange_code` is already implemented in `oauth.py` — reuse it, don't rewrite.
- Returns a `User` object; raises `AuthError` on failure.
## Acceptance Criteria
- [ ] A valid OAuth code returns a populated `User` object.
- [ ] An invalid code raises `AuthError`.The file field names the target. The type field is optional; if omitted, it defaults to modify. If the target file does not exist, Scalpel will create it.
/scalpel:plan <optional description of your objective or sub-task>
Scalpel reads all .plan files, checks them against your project standards (AGENTS.md / CLAUDE.md), flags anything misaligned or missing, and creates any missing plan files needed to meet your objective.
Iterate on your .plan files until the evaluation is clean.
/scalpel:implement
Scalpel applies every .plan file to its target, one at a time, following the plan exactly. If a plan conflicts with a project standard or another plan, it stops and surfaces the conflict before continuing. It will not resolve conflicts on its own.
/plugin marketplace add Banyango/scalpel
/plugin install scalpel@scalpel-devSkills are available as /scalpel:plan and /scalpel:implement.
Add to your .cursor/plugins.json:
{
"plugins": [
"git+https://github.com/Banyango/scalpel.git"
]
}Add to your Codex plugin configuration:
{
"plugins": [
"git+https://github.com/Banyango/scalpel.git"
]
}Add to your opencode.json:
{
"plugin": [
"scalpel@git+https://github.com/Banyango/scalpel.git"
]
}See .opencode/INSTALL.md for full OpenCode setup instructions.
Load GEMINI.md from this repo into your project root, or import it from your existing GEMINI.md.
npx skills add Banyango/scalpelScalpel respects your project's documented conventions. During /scalpel:plan and /scalpel:implement, it reads:
AGENTS.mdCLAUDE.mddocs/ARCHITECTURE.md(or anydocs/arch*)
It only enforces what is explicitly written in those files. It will not invent patterns or apply external conventions.
---
file: path/to/target/file.py # required — the file to modify
type: add | modify | move | delete
---
## Summary
Why this change is being made.
## Content
/```language
// The code to be added or changed.
/```
## Key Details
- Non-obvious constraints, invariants, or decisions the implementer needs to know.
- Edge cases to handle.
## Acceptance Criteria
- [ ] Observable outcome that confirms the change is correct.MIT.