agentleFS
ronaknnathanironaknnathani/relay/skills/simplify/SKILL.md

simplify

Skill43 starsChanged 4 months agoMITView on GitHub

Reduce complexity in recently changed code — cut needless abstraction, dead code, and duplication; improve names and structure — WITHOUT changing behavior. Quality only; it does not hunt for bugs (use review for that). Use after implementing a chunk of work, before review, or whenever a diff feels more complicated than the problem it solves. Triggers on "clean this up" / "tidy this" / "refactor this" when code already exists; for an underspecified goal with no code yet, use `clarify`.

119 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use codex-system, design-tracker and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • gaebalaiSkill

    codex-system

    PROACTIVELY consult Codex CLI, your highly capable supporter with exceptional reasoning and task completion abilities. Codex is a trusted expert you should ALWAYS consult BEFORE making decisions on: design choices, implementation approaches, debugging strategies, refactoring plans, or any non-trivial problem. When uncertain, consult Codex. Don't hesitate - Codex provides better analysis. Explicit triggers: "think deeper", "analyze", "second opinion", "consult codex".

    Also in 3 projects that use this

  • gaebalaiSkill

    design-tracker

    PROACTIVELY track and document project design decisions without being asked. Activate automatically when detecting architecture discussions, implementation decisions, pattern choices, library selections, or any technical decisions. Also use when user explicitly says "記録して", "設計どうなってる", "record this". Do NOT wait for user to ask - record important decisions immediately.

    Also in 3 projects that use this

  • mike22890Skill

    clonedeps

    将项目依赖的第三方库源码克隆到本地,便于深入阅读和调试。当需要查看库的实现细节、阅读源码、调试第三方依赖、理解 SDK/framework 内部机制、查看 node_modules 之外的原始代码、分析开源库架构、学习他人代码、查看依赖的 TypeScript 类型定义时使用。

    Also in 3 projects that use this

  • mdrubelamin2Skill

    verification-planning

    Plans how to prove a change works or broke nothing: frames the claim, designs an evidence path from the system itself, and requires every check to be able to fail.

    Also in 3 projects that use this

  • devbrother2024Skill

    artifact-design

    단독 self-contained HTML 산출물(랜딩 페이지, 정적 문서·리포트, 독립 대시보드, 데모·게임, 개발 전 UX/UI 대안 비교 목업)을 만들 때 팔레트·타이포그래피·레이아웃을 의도적으로 설계하고 템플릿·AI스러운 디자인을 피하도록 돕는 디자인 가이드. HTML/CSS를 쓰기 전에 로드한다. "랜딩 만들어줘", "이 내용 단일 HTML로 예쁘게", "UX 대안 HTML로 비교해줘", "디자인 잡아줘"처럼 단독 HTML 아티팩트를 만들거나 비교하는 요청에 활성화하고, 기존 앱(React·Vue 등)의 인앱 컴포넌트 수정이나 순수 백엔드·로직 작업에는 쓰지 않는다.

    Also in 3 projects that use this

  • codebycoreySkill

    batch

    Create multiple proposals from free-form feature descriptions. Use when planning several features at once, batch creating proposals, or setting up related changes.

    Also in 4 projects that use this

  • +3 more from gaebalai

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 4 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 111 edited versions we read keep these.

  • 4

    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:

    Look at the changed code for:

    line 21
  2. Distinctive:

    If the "simplified" version is longer or harder to follow, it isn't a simplification — revert it.

    line 50
  3. Very specific:

    When the caller asks for report mode (for example review-pr, reviewing someone else's pull request), do not edit anything.

    line 54
  4. Distinctive:

    Establish a baseline: Run the tests covering the change — or, if there is no suite or it cannot run, the narrowest available behavior check …

    line 62
  5. Distinctive:

    Tests are out of scope: Never edit a test to make it pass — a breaking test means behavior changed, so revert the simplification, not the …

    line 74

“Common” is measured: kept by at least 6 in 10 of the 111 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

Simplify

Make a change simpler and clearer without changing what it does. The bar: readable, explicit code over clever, compact code — would a senior engineer call this overcomplicated? Scope is the recently changed code — the working diff (e.g. git diff against the branch point) unless the caller names files. This is quality-only: it does not hunt for bugs (that's review).

Step 0 — the invariant

Preserve functionality. Never change what the code does, only how it does it. Every original feature, output, and behavior stays intact. If a simplification would alter behavior, it is a review or implementation concern, not a simplification — stop and surface it.

Scan — three buckets

Look at the changed code for:

  • Structural — nesting depth ≥ 3, functions longer than ~50 lines, nested ternaries, boolean-flag parameters that select behavior, indirection that only forwards a call.
  • Naming — data/result/temp/foo, names that mislead, names that imply something broader or different than the thing actually is.
  • Redundancy — duplicated logic, dead/unreachable code, unused parameters/variables/fields, over-abstraction (a helper, wrapper, or interface used in exactly one place), defensive code for states an upstream invariant already makes impossible.

The deletion test

For each abstraction or layer of indirection, ask: would removing it concentrate complexity (then keep it — it's earning its keep) or merely relocate it (then remove it — it's not)? A single-use helper usually relocates; inline it. A wrapper that hides a genuinely complex subsystem behind a small interface usually concentrates; keep it.

Two-sided guardrail

Simplifying is a balance, not a race to fewer lines. Pair every "look for" with a "don't":

Look forDon't
reduce nesting and indirectionintroduce a nested ternary or a dense one-liner
inline a single-use helperinline a helper that names a genuinely complex step
remove a redundant abstractionremove a helpful abstraction that organizes the code
consolidate duplicated logicmerge unrelated concerns into one function
clearer names, fewer obvious commentsmake the code harder to debug or extend

If the "simplified" version is longer or harder to follow, it isn't a simplification — revert it.

Report mode

When the caller asks for report mode (for example review-pr, reviewing someone else's pull request), do not edit anything. Run the scan, the deletion test, and the guardrail below against the caller's diff, then return each candidate as a finding: file:line, the bucket (structural, naming, or redundancy), what to change, and why it is clearer. Mark every finding Suggestion unless the complexity hides a real defect. Skip the Process steps, which only apply when you own the code.

Process

  1. Establish a baseline. Run the tests covering the change — or, if there is no suite or it cannot run, the narrowest available behavior check (build, typecheck, or lint) — and confirm it is green before you start. Never fabricate a green result; if the baseline is already red for unrelated reasons, note that and rely on the narrower check.
  2. Understand before changing (Chesterton's Fence). Work out why the code is shaped the way it is — a guard, retry, or special case may exist for a real reason. Remove a guard only when its premise is verifiable in the code you can see; if confirming it needs reasoning about whether an upstream invariant truly holds, leave it and flag for review.
  3. One simplification at a time → re-run that check → keep it only if it stays green; revert immediately if not. Tests are necessary but not sufficient: for a change on a path the suite does not exercise, reason explicitly about input/output equivalence — error paths, ordering, side effects, short-circuit evaluation — before keeping it.
  4. Tests are out of scope. Never edit a test to make it pass — a breaking test means behavior changed, so revert the simplification, not the test. Do not refactor, consolidate, or delete tests or fixtures even when they look redundant; that silently weakens coverage.
  5. Keep the simplify diff separate from feature/fix changes, so a reviewer reads pure refactor.
  6. Verify functionality preserved at the end: the baseline check is green and you have reasoned about any untested paths you touched.

Red flags

  • The simplified code is longer, or harder to follow, than before.
  • Editing, consolidating, or deleting a test or fixture (tests are out of scope).
  • Calling behavior "unchanged" from a passing suite alone, on code the suite does not exercise.
  • Removing an abstraction or guard without applying the deletion test / Chesterton's Fence.
  • Touching code outside the working diff ("while I'm here…").
  • Optimizing for fewer lines at the cost of clarity.

Verification checklist

  • The baseline check (tests for the changed code, or build/typecheck/lint) is green before and after — never a fabricated green.
  • For any change on a path the suite does not cover, I reasoned about input/output equivalence, not just "tests pass".
  • No test or fixture was edited, consolidated, or deleted — tests stayed out of scope.
  • Every removed abstraction/guard passed the deletion test (and Chesterton's Fence for guards).
  • The change stayed within the working diff.
  • The diff is genuinely clearer — not merely shorter.

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.