agentleFS
pinguypinguy/Skills/skills/minimum-sufficient-change/SKILL.md

minimum-sufficient-change

Skill0 starsChanged 56 days agoApache-2.0View on GitHub

Minimise over-solving during implementation, repair, integration, automation, and local systems work. Use when an agent could add machinery, rewrite a subsystem, introduce dependencies, retrain a model, or otherwise solve more than the observed failure requires.

The file

Show its rules and text

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈15

    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:

    Do not confuse sophistication with fitness.

    line 14
  2. Distinctive:

    Use the five rules to decide what sufficient means.

    line 18
  3. Distinctive:

    Hold Your Ground: Do not let parsimony become timidity.

    line 36
  4. Distinctive:

    When the rules and an apparently smaller implementation conflict, the rules govern the objective and constraints.

    line 41
  5. Distinctive:

    Treat configured behaviour as unproven until exercised.

    line 56
  6. Distinctive:

    Ask what single missing connection, constraint, routing rule, context item, or local correction could explain the failure.

    line 59
  7. Distinctive:

    Prefer a narrow change with a short causal chain.

    line 60
  8. Distinctive:

    Keep user work and unrelated dirty state intact.

    line 76
  9. Distinctive:

    Avoid boot-critical, destructive, external, or difficult-to-reverse changes without the authority and recovery proof they require.

    line 77
  10. Distinctive:

    Check the intended outcome, important regressions, latency or resource overhead where relevant, and rollback viability.

    line 83
  11. Distinctive:

    When escalating, move one level at a time and retain the same acceptance test.

    line 93
  12. Distinctive:

    Stop once the acceptance check passes through the real path with acceptable overhead and no material regression.

    line 96
  13. Distinctive:

    Do not continue because a more elegant, general, fashionable, or intellectually interesting solution exists.

    line 97
  14. Distinctive:

    before/after or equivalent canary.

    line 128
  15. Distinctive:

    If the acceptance test fails, say so plainly and identify which evidence justifies the next escalation.

    line 134

≈ “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

Minimum sufficient change

Apply Maximum Parsimony and Minimum Description Length to engineering work.

Core rule

Use the smallest plausible intervention that fixes the observed failure, prove it through the real end-to-end path, escalate only when evidence falsifies the simpler approach, and stop when it works.

Do not confuse sophistication with fitness. Existing capability plus missing routing, context, constraints, or glue is usually cheaper to repair than replacing the capability.

Five-rule gate

Use the five rules to decide what sufficient means. Parsimony chooses the least machinery that can meet the objective; it does not shrink the objective, discard affected people, or excuse a weak response.

  1. Holistic Context — know the terrain. Inspect the whole live path, surrounding constraints, affected people, dependencies and failure modes before declaring a local fix sufficient. A tiny answer to the wrong problem is not parsimonious.
  2. Egalitarianism. Apply the same evidential standard regardless of the status, familiarity or authorship of a tool or proposal. Include burdens on users and bystanders; do not make the agent's convenience the sole cost function.
  3. Beneficence. Optimise for useful improvement. Choose the smallest change that actually helps and leaves the system better, not merely the change that is easiest to describe or cheapest for the operator.
  4. Don't Be a Fucking Cunt. Preserve trust, data, privacy, consent, recoverability and protected working foundations. Never call a shortcut “minimal” when it shifts hidden risk or clean-up onto someone else.
  5. Hold Your Ground. Do not let parsimony become timidity. Reject a smaller fix when evidence shows that it conceals harm, preserves a dangerous failure or cannot meet the real requirement. Escalate firmly when reality requires it, then stop at the first sufficient level.

When the rules and an apparently smaller implementation conflict, the rules govern the objective and constraints; MDL governs the implementation within them.

Working loop

  1. State the actual failure.
    • Describe the observed bad output or behaviour.
    • Separate it from guesses about the cause.
    • Name the user-visible acceptance check.
  2. Inspect the live path.
    • Resolve the real files, services, configuration, versions, data flow, and entry point.
    • Find where the failure is introduced.
    • Reuse existing logs, examples, corrections, and known-good components.
    • Treat configured behaviour as unproven until exercised.
  3. Form the smallest plausible hypothesis.
    • Ask what single missing connection, constraint, routing rule, context item, or local correction could explain the failure.
    • Prefer a narrow change with a short causal chain.
    • State what result would falsify the hypothesis.
  4. Choose the least machinery that can work. Prefer, in order:

    • using the existing tool correctly;
    • supplying missing local context or parameters;
    • adding a small routing, validation, correction, or adapter layer;
    • changing configuration;
    • adding a bounded script or dependency;
    • replacing, retraining, or redesigning a subsystem.

    Skip directly to a larger intervention only when direct evidence rules out the cheaper levels.

  5. Preserve the working foundation.
    • Back up or capture a rollback for material changes.
    • Keep user work and unrelated dirty state intact.
    • Avoid boot-critical, destructive, external, or difficult-to-reverse changes without the authority and recovery proof they require.
    • Make the change narrow enough that its effect is attributable.
  6. Test the real path end to end.
    • Exercise the entry point the user actually uses, not only an isolated helper.
    • Compare before and after on the same representative case.
    • Check the intended outcome, important regressions, latency or resource overhead where relevant, and rollback viability.
    • Record commands, outputs, changed files, and concrete examples.
  7. Escalate only on evidence. Escalation is justified when:

    • the simpler hypothesis was directly falsified;
    • repeated real cases show the narrow fix cannot cover the important failure class;
    • the workaround creates unacceptable fragility, latency, maintenance, or ambiguity;
    • the existing component lacks a required capability rather than merely lacking context or plumbing.

    When escalating, move one level at a time and retain the same acceptance test.

  8. Stop when sufficient.
    • Stop once the acceptance check passes through the real path with acceptable overhead and no material regression.
    • Do not continue because a more elegant, general, fashionable, or intellectually interesting solution exists.
    • Record remaining imperfections honestly; do not turn them into compulsory scope.

Anti-patterns

Reject these unless evidence specifically requires them:

  • rewriting a subsystem before locating the fault;
  • teaching or reimplementing capabilities the existing tool already has;
  • adding an LLM where a deterministic rule is sufficient;
  • building a framework for one bounded operation;
  • retraining before trying vocabulary, context, routing, or correction layers;
  • benchmarking synthetic cases while ignoring the user's real failures;
  • polishing internal architecture after the user-visible path already meets the target;
  • claiming improvement from configuration alone without an end-to-end canary;
  • expanding scope because nearby problems are interesting.

Scaling the method

For a trivial, reversible job, compress the loop to:

observe → smallest fix → real-path check → stop

For a material or fragile system, make the same loop more explicit with backups, baseline measurements, falsifiers, rollback, and receipts. Parsimony reduces unnecessary machinery; it never waives safety.

Completion receipt

Report only what helps verify the result:

  • observed failure and likely cause;
  • smallest change made and why it was sufficient;
  • before/after or equivalent canary;
  • overhead and regressions checked;
  • files or state changed;
  • rollback location when material;
  • what remains imperfect.

If the acceptance test fails, say so plainly and identify which evidence justifies the next escalation.

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.