PluginBench
Skill
Pass
Audit score 90

principle-laziness-protocol

cursor/plugins

Bias toward deletion and minimal changes—apply when refactoring, evaluating diffs, or tempted by abstractions.

What is principle-laziness-protocol?

A protocol for keeping code simple and maintainable by preferring deletion, flat hierarchies, and the smallest change that solves the problem. Use it when refactoring, reviewing diffs, or considering new abstractions, layers, or signal threading.

  • Prefer deletion over addition when refactoring or improving code
  • Maintain flat call hierarchies—avoid deep chains and unnecessary layers
  • Consolidate repeated decisions into a single source of truth
  • Make the smallest diff that solves the problem, favoring fewer lines over boilerplate
  • Question whether new signals need threading through types, schemas, or pipelines
  • Remove small leaks and pass-throughs before they compound into coordination costs

How to install principle-laziness-protocol

npx skills add https://github.com/cursor/plugins --skill principle-laziness-protocol
Claude Code
Cursor
Windsurf
Cline

How to use principle-laziness-protocol

  1. 1.When asked to refactor or improve code, first look for what can be removed rather than added
  2. 2.Check call hierarchies—if tracing a question requires more than 3 files or layers, consider flattening
  3. 3.Identify repeated decisions and consolidate them behind a single source of truth
  4. 4.Make the smallest change that solves the problem; resist adding elegant boilerplate
  5. 5.Before threading a new signal through types or pipelines, look for a more direct path
  6. 6.Scan for small pass-throughs and representation leaks and remove them early

Use cases

Good for
  • Reviewing a refactoring proposal to decide whether to add a new abstraction layer
  • Evaluating a diff to identify opportunities for simplification or deletion
  • Deciding whether to thread a new parameter through multiple function signatures
  • Assessing whether a helper function or utility is worth the indirection cost
  • Identifying representation leaks or duplicated logic that should be consolidated
Who it's for
  • Software engineers refactoring existing code
  • Code reviewers evaluating diff size and complexity
  • Architects deciding on abstraction boundaries
  • Teams maintaining large codebases with coordination costs

principle-laziness-protocol FAQ

When should I apply the Laziness Protocol?

Apply it when refactoring, evaluating diff size, reviewing abstractions, or tempted to add layers or signal threading. It's a decision-making filter, not a rule to follow blindly.

Does 'laziness' mean writing sloppy code?

No. It means achieving results with the least code and complexity—favoring clarity and maintainability over unnecessary abstraction or boilerplate.

How do I know if a call hierarchy is too deep?

If answering a question requires tracing through more than 3 files or layers, it's likely too deep. Flatten it so the logic is easier to follow.

What's a 'small leak' and why does it matter?

A small leak is a tiny pass-through, representation leak, or duplicated choice. Left unchecked, these compound into permanent coordination costs across the codebase.

Should I always prefer deletion over adding a helper function?

Not always—but question whether the helper is worth the indirection. If a human developer would find the code exhausting to maintain, it's a bad solution.

Full instructions (SKILL.md)

Source of truth, from cursor/plugins.


name: principle-laziness-protocol description: "Apply when refactoring, evaluating diff size, or tempted to add abstractions, layers, or signal threading. Bias toward deletion and the smallest change that solves the problem." disable-model-invocation: true

Laziness Protocol

Aim for the most result with the least code and complexity.

  • Prefer deletion. When asked to refactor or improve, look for removals before additions.
  • Maintain a flat call hierarchy. Avoid deep call chains. A rich interface that hides substantial work is not a deep call chain. If answering a question requires tracing through more than 3 files or layers, flatten it.
  • Consolidate decisions. Do not repeat the same choice in several places. Put it behind one source of truth and pass the result as a simple flag.
  • Minimize the diff. Make the smallest change that solves the problem. Fewer lines beat "elegant" boilerplate.
  • Question the threading. If a task asks you to pass a new signal through types, schemas, pipelines, or similar layers, stop and look for a more direct path.
  • Sweat the small leaks. Remove tiny pass-throughs, representation leaks, and duplicated choices before they spread. Small leaks compound into permanent coordination costs.

The test: If a human developer would find the code exhausting to maintain, it is a bad solution.