Community Code Simplification Best Practices
Comprehensive code simplification guide for AI agents and LLMs. Contains 47 rules across 8 categories, prioritized by impact from critical (context discovery, behavior preservation) to incremental (language idioms). Each rule includes detailed explanations, real-world examples comparing incorrect vs. correct implementations, and specific impact metrics.
Core Principles
- Context First: Understand project conventions before making any changes
- Behavior Preservation: Change how code is written, never what it does
- Scope Discipline: Focus on recently modified code, keep diffs small
- Clarity Over Brevity: Explicit, readable code beats clever one-liners
When to Apply
Reference these guidelines when:
- Simplifying or cleaning up recently modified code
- Reducing nesting, complexity, or duplication
- Improving naming and readability
- Applying language-specific idiomatic patterns
- Reviewing code for maintainability issues
Rule Categories by Priority
| Priority | Category | Impact | Prefix | Rules |
|----------|----------|--------|--------|-------|
| 1 | Context Discovery | CRITICAL | ctx- | 4 |
| 2 | Behavior Preservation | CRITICAL | behave- | 6 |
| 3 | Scope Management | HIGH | scope- | 5 |
| 4 | Control Flow Simplification | HIGH | flow- | 9 |
| 5 | Naming and Clarity | MEDIUM-HIGH | name- | 6 |
| 6 | Duplication Reduction | MEDIUM | dup- | 5 |
| 7 | Dead Code Elimination | MEDIUM | dead- | 5 |
| 8 | Language Idioms | LOW-MEDIUM | idiom- | 7 |
Quick Reference
1. Context Discovery (CRITICAL)
ctx-read-claude-md- Always read CLAUDE.md before simplifyingctx-detect-lint-config- Check for linting and formatting configsctx-follow-existing-patterns- Match existing code style in file and projectctx-project-over-generic- Project conventions override generic best practices
2. Behavior Preservation (CRITICAL)
behave-preserve-outputs- Preserve all return values and outputsbehave-preserve-errors- Preserve error messages, types, and handlingbehave-preserve-api- Preserve public function signatures and typesbehave-preserve-side-effects- Preserve side effects (logging, I/O, state changes)behave-no-semantics-change- Forbid subtle semantic changesbehave-verify-before-commit- Verify behavior preservation before finalizing
3. Scope Management (HIGH)
scope-recent-code-only- Focus on recently modified code onlyscope-minimal-diff- Keep changes small and reviewablescope-no-unrelated-refactors- No unrelated refactorsscope-no-global-rewrites- Avoid global rewrites and architectural changesscope-respect-boundaries- Respect module and component boundaries
4. Control Flow Simplification (HIGH)
flow-early-return- Use early returns to reduce nestingflow-guard-clauses- Use guard clauses for preconditionsflow-no-nested-ternaries- Never use nested ternary operatorsflow-explicit-over-dense- Prefer explicit control flow over dense expressionsflow-flatten-nesting- Flatten deep nesting to maximum 2-3 levelsflow-single-responsibility- Each code block should do one thingflow-positive-conditions- Prefer positive conditions over double negativesflow-optional-chaining- Use optional chaining and nullish coalescingflow-boolean-simplification- Simplify boolean expressions
5. Naming and Clarity (MEDIUM-HIGH)
name-intention-revealing- Use intention-revealing namesname-nouns-for-data- Use nouns for data, verbs for actionsname-avoid-abbreviations- Avoid cryptic abbreviationsname-consistent-vocabulary- Use consistent vocabulary throughoutname-avoid-generic- Avoid generic namesname-string-interpolation- Prefer string interpolation over concatenation
6. Duplication Reduction (MEDIUM)
dup-rule-of-three- Apply the rule of threedup-no-single-use-helpers- Avoid single-use helper functionsdup-extract-for-clarity- Extract only when it improves claritydup-avoid-over-abstraction- Prefer duplication over premature abstractiondup-data-driven- Use data-driven patterns over repetitive conditionals
7. Dead Code Elimination (MEDIUM)
dead-remove-unused- Delete unused code artifactsdead-delete-not-comment- Delete code, never comment it outdead-remove-obvious-comments- Remove comments that state the obviousdead-keep-why-comments- Keep comments that explain why, not whatdead-remove-todo-fixme- Remove stale TODO/FIXME comments
8. Language Idioms (LOW-MEDIUM)
idiom-ts-strict-types- Use strict types over any (TypeScript)idiom-ts-const-assertions- Use const assertions and readonly (TypeScript)idiom-rust-question-mark- Use ? for error propagation (Rust)idiom-rust-iterator-chains- Use iterator chains when clearer (Rust)idiom-python-comprehensions- Use comprehensions for simple transforms (Python)idiom-go-error-handling- Handle errors immediately (Go)idiom-prefer-language-builtins- Prefer language and stdlib builtins
Workflow
- Discover context: Read CLAUDE.md, lint configs, examine existing patterns
- Identify scope: Focus on recently modified code unless asked to expand
- Apply transformations: Use rules in priority order (CRITICAL first)
- Verify behavior: Ensure outputs, errors, and side effects remain identical
- Keep diffs minimal: Small, focused changes that are easy to review
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
Reference Files
| File | Description | |------|-------------| | references/_sections.md | Category definitions and ordering | | assets/templates/_template.md | Template for new rules | | metadata.json | Version and reference information |