agentleFS
DevelopersGlobalDevelopersGlobal/ai-agent-skills/skills/surgical-changes/SKILL.md

surgical-changes

Skill216 starsChanged 6 months agoMITView on GitHub

Enforces minimal code modifications — touch only what you must. Prevents drive-by refactoring, comment deletions, and style changes unrelated to the task.

We split this skill into the rules it gives an agent

10 rules. 0 are common, 9 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every changed line is a line the reviewer must inspect, a line that could introduce a regression, and a line that will appear in the git …

    line 11
  2. Distinctive:

    When your diff is larger than you expected

    line 20
  3. Distinctive:

    When reviewing your own generated changes before presenting them

    line 21
  4. Distinctive:

    Read the task carefully. Write down exactly which files and functions need to change.

    line 27
  5. Distinctive:

    If you notice something wrong outside the boundary:

    line 41
  6. Very specific:

    If your changes made imports/variables/functions unused: remove only those created by YOUR changes.

    line 44
  7. Distinctive:

    Verify: No line changed that wasn't part of the defined scope.

    line 46
  8. Distinctive:

    Read through your diff line by line.

    line 50
  9. Distinctive:

    If you can't answer → revert it

    line 52
  10. Distinctive:

    Verify: Every changed line has a clear reason directly tied to the task.

    line 55

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Overview

Every changed line is a line the reviewer must inspect, a line that could introduce a regression, and a line that will appear in the git blame forever. Unnecessary changes are costly.

AI agents often "improve" adjacent code, reformat files, rename variables for consistency, or delete "dead" code — all without being asked. This creates noisy diffs, unexpected behavior changes, and broken trust.

This skill enforces a hard rule: every changed line must trace directly to the user's request.

When to Use

  • Any time you are modifying existing code (not creating new files)
  • When your diff is larger than you expected
  • When reviewing your own generated changes before presenting them

Process

Step 1: Establish the Change Boundary

  1. Read the task carefully. Write down exactly which files and functions need to change.
  2. Draw a mental boundary: "Everything outside this boundary is out of scope."
  3. List what you will NOT change, even if you'd do it differently:
    • Adjacent functions
    • Variable naming conventions
    • Comment style
    • Import order
    • Formatting/whitespace (unless fixing a specific bug)

Verify: You can name the specific functions/lines that need to change.

Step 2: Make Only the Required Changes

  1. Make the changes — and only the changes — within the defined boundary.
  2. If you notice something wrong outside the boundary:
    • Mention it in a comment — don't fix it silently
    • Example: "Note: I noticed fetchUser has no error handling, but I'm leaving that for a separate PR."
  3. If your changes made imports/variables/functions unused: remove only those created by YOUR changes. Leave pre-existing dead code alone (unless asked).

Verify: No line changed that wasn't part of the defined scope.

Step 3: Review Your Own Diff

  1. Read through your diff line by line.
  2. For each changed line, ask: "Why did I change this?"
    • If you can't answer → revert it
  3. Flag any changes that are purely cosmetic and ask: "Should I include this?"

Verify: Every changed line has a clear reason directly tied to the task.

Step 4: Document Scope Decisions

  1. In your PR/commit message, explicitly note what you chose NOT to change and why:
    • "Did not refactor the adjacent parseDate function — out of scope for this fix."

Common Rationalizations (and Rebuttals)

ExcuseRebuttal
"I improved it while I was there"That's a separate PR. Drive-by improvements hide bugs and inflate diffs.
"The old comment was wrong"Fix comments related to your change. Leave others for a documentation PR.
"I made the code more consistent"Consistency PRs should be standalone. Don't bundle them.
"It's just whitespace"Whitespace changes cause merge conflicts and obscure real diffs in blame.
"The dead code is obviously wrong"File an issue. Don't delete pre-existing code without explicit approval.

Red Flags

  • Your diff is 3× larger than the feature size suggests
  • You changed files that aren't related to the task
  • You reformatted a file "while you were there"
  • You renamed variables for consistency
  • You deleted comments or code you didn't fully understand
  • Your PR description says "and also fixed a few other things"

Verification

  • Every changed line traces to the task description
  • No cosmetic-only changes bundled in (or explicitly approved)
  • Pre-existing dead code left untouched (or flagged, not deleted)
  • Changes to adjacent unrelated code: zero
  • Diff size is proportional to task size

References

  • simplicity-first skill
  • code-review skill
  • Karpathy: "They still sometimes change/remove comments and code they don't sufficiently understand as side effects, even if orthogonal to the task."

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.