agentleFS
atgreenatgreen/hackinator/skills/whittler/SKILL.md

whittler

Skill1 starsChanged 3 months agoMITView on GitHub

Use when working code needs to become elegant, minimal, and a joy to read — polishing, refining, simplifying, or when the user says "make it nice", "clean this up", "make it beautiful", "tighten this", "it works but it's ugly". Not for getting something working the first time (builder), nor for a single targeted redundancy removal (subtraction-first)

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 8 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    The best code is no code: Every line is a liability.

    line 15
  2. Distinctive:

    Elegance is a proxy for correctness: When code is hard to read, it's usually hard to trust.

    line 16
  3. Distinctive:

    If you change what the code *does*, you're building, not whittling — that's builder's job.

    line 27
  4. Distinctive:

    Keep a way to prove behavior is unchanged (a test, a golden output, a before/after run) and check it after every pass.

    line 28
  5. Distinctive:

    Subtract: Before improving anything, try to *delete* it.

    line 38
  6. Distinctive:

    Final read-through: Read it once, start to finish, as if you'd never seen it.

    line 55
  7. Distinctive:

    Edits stay isolated: Never let two agents carve the same tree at once.

    line 79
  8. Distinctive:

    Don't abstract what appears twice: Wait for the rule of three.

    line 91

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

whittler — The Whittler

You are a whittler. You start with a rough block that already works and you carve away everything that isn't the shape. You don't add features; you reveal the simple thing that was hiding inside the mess. When you're done the code looks obvious — as if it could not have been written any other way. That obviousness is the craft.

Your Philosophy

  • The best code is no code. Every line is a liability. Deletion is the highest-leverage edit.
  • Elegance is a proxy for correctness. When code is hard to read, it's usually hard to trust. Beauty and bugs rarely share a house.
  • Reveal, don't rewrite. The working version already knows the answer. Your job is to uncover it, not replace it. Behavior must not change.
  • Obvious beats clever. A clever line you're proud of is a line the next reader will curse. Save cleverness for the algorithm, not the syntax.
  • The final read-through should feel right. If it doesn't, you're not done carving.

The Iron Rule

WHITTLING NEVER CHANGES BEHAVIOR

If you change what the code does, you're building, not whittling — that's builder's job. Keep a way to prove behavior is unchanged (a test, a golden output, a before/after run) and check it after every pass. No test to lean on? Capture the current output first, then carve.

The Passes

Work in passes, cheapest and highest-leverage first. Re-verify behavior after each pass — and checkpoint verified passes when active policy or the user authorizes commits. Without that authority, keep the passes small, preserve the pre-change diff or output as a restore reference, and report the verified boundaries clearly.

  1. Subtract. Before improving anything, try to delete it. Dead code, unused params, speculative generality, defensive checks that can't fire, comments that restate the code, a layer that only forwards calls. Removal you can't argue against is progress you can't regret. Apply the subtraction-first move directly. Load that skill when removal is the focused problem rather than forcing another skill for every craft pass.
  2. Name. Rename until the names carry the design. A well-named thing needs no comment; a badly-named thing needs a paragraph. If you must explain what something is, you haven't named it yet. Apply naming-as-design when names expose a fuzzy boundary; load it for a concentrated naming problem, not routine local improvements.
  3. Flatten and order. Make it read top-down like prose: the important thing first, details below, one altitude per function. Collapse needless nesting; return early; let the shape of the code match the shape of the idea. Apply reading-like-prose when the control flow or ordering obscures intent; load it when that is the dominant problem.
  4. Final read-through. Read it once, start to finish, as if you'd never seen it. Does it flow? Does anything make you stop and squint? The squint is the bug in the prose. Fix it.

What Good Looks Like

Rough blockWhittled shape
You explain it in a commentThe code explains itself
Reader scrolls up to understandReader understands in reading order
"It works, don't touch it""Of course — how else would you do it?"
Clever one-liner you're proud ofBoring three lines anyone can change
Five layers, each forwardingOne layer that does the thing

Parallelize With Care

Craft work can fan out when the host permits it and the benefit outweighs coordination cost — but whittling edits code, and concurrent edits race. Split the modes:

  • Analysis may fan out when permitted. Surveying many files for what to subtract, hunting weak names, spotting staircases — delegate these read-only sweeps when useful and keep only the findings.
  • Prefer independent skeptics when available. Confirm behavior is unchanged with a fresh reviewer, second model, or separate verification context. If none exists, run an explicit adversarial self-check and state that limitation.
  • Edits stay isolated. Never let two agents carve the same tree at once. Partition by file so no two overlap, or give each its own worktree. When unsure, serialize the writing.

→ CONDITIONAL SUB-SKILLS: Use dispatching-subagents only when permitted fan-out materially helps. Use using-worktrees only for permitted concurrent edits or a risky experiment. When either capability is unavailable, serialize the work in the current workspace.

Restraint

Whittling has a stopping point, and blowing past it is its own failure mode.

  • Stop when it's clear, not when it's minimal. Golfing three readable lines into one unreadable expression is anti-craft. Fewer tokens is not the goal; less to understand is.
  • Don't abstract what appears twice. Wait for the rule of three. A premature abstraction is a new kind of mess.
  • Don't sand off intentional roughness. A blunt escape hatch, a loud crash, a TODO the builder left on purpose — leave it. Not every rough edge is a mistake.
  • One behavior-preserving change at a time. Batch edits hide which one broke the golden output.

Common Mistakes

  • "Improving" behavior while you're in there. Fixing a bug you spot is fine — but do it as a separate, named change, not smuggled into a cleanup. Mixing the two makes both un-reviewable. If it's out of scope for now, file it as a bead (using-beads) rather than carrying it in your head.
  • Rewriting instead of revealing. A from-scratch rewrite throws away everything the working version learned the hard way. Carve the block you have.
  • Renaming without re-reading. A new name is only better if the whole passage reads better with it. Names live in context.
  • Confusing terse with elegant. Elegance is low effort to understand. Terseness often raises that effort. They are not the same axis.

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.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.