SKILL.md
Fowler/Martin Code Refactoring Best Practices
Comprehensive code refactoring guide based on Martin Fowler's catalog and Clean Code principles, designed for AI agents and LLMs. Contains 43 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Refactoring existing code to improve maintainability
- Decomposing long methods or large classes
- Reducing coupling between components
- Simplifying complex conditional logic
- Reviewing code for code smells and anti-patterns
Rule Categories by Priority
Priority
Category
Impact
Prefix
1
Structure & Decomposition
CRITICAL
struct-
2
Coupling & Dependencies
CRITICAL
couple-
3
Naming & Clarity
HIGH
name-
4
Conditional Logic
HIGH
cond-
5
Abstraction & Patterns
MEDIUM-HIGH
pattern-
6
Data Organization
MEDIUM
data-
7
Error Handling
MEDIUM
error-
8
Micro-Refactoring
LOW
micro-
Quick Reference
1. Structure & Decomposition (CRITICAL)
struct-extract-method- Extract Method for Long Functions
struct-single-responsibility- Apply Single Responsibility Principle
struct-extract-class- Extract Class from Large Class
struct-compose-method- Compose Method for Readable Flow
struct-function-length- Keep Functions Under 20 Lines
struct-replace-method-with-object- Replace Method with Method Object
struct-parameter-object- Introduce Parameter Object
2. Coupling & Dependencies (CRITICAL)
couple-dependency-injection- Use Dependency Injection
couple-hide-delegate- Hide Delegate to Reduce Coupling
couple-remove-middle-man- Remove Middle Man When Excessive
couple-feature-envy- Fix Feature Envy by Moving Methods
couple-interface-segregation- Apply Interface Segregation Principle
couple-preserve-whole-object- Preserve Whole Object Instead of Fields
3. Naming & Clarity (HIGH)
name-intention-revealing- Use Intention-Revealing Names
name-avoid-abbreviations- Avoid Abbreviations and Acronyms
name-consistent-vocabulary- Use Consistent Vocabulary
name-searchable-names- Use Searchable Names
name-avoid-encodings- Avoid Type Encodings in Names
4. Conditional Logic (HIGH)
cond-guard-clauses- Replace Nested Conditionals with Guard Clauses
cond-polymorphism- Replace Conditional with Polymorphism
cond-decompose- Decompose Complex Conditionals
cond-consolidate- Consolidate Duplicate Conditional Fragments
cond-special-case- Introduce Special Case Object
cond-lookup-table- Replace Conditional with Lookup Table
5. Abstraction & Patterns (MEDIUM-HIGH)
pattern-strategy- Extract Strategy for Algorithm Variants
pattern-template-method- Use Template Method for Shared Skeleton
pattern-factory- Use Factory for Complex Object Creation
pattern-open-closed- Apply Open-Closed Principle
pattern-composition-over-inheritance- Prefer Composition Over Inheritance
pattern-extract-superclass- Extract Superclass for Common Behavior
6. Data Organization (MEDIUM)
data-encapsulate-collection- Encapsulate Collection
data-replace-primitive- Replace Primitive with Object
data-encapsulate-record- Encapsulate Record into Class
data-split-variable- Split Variable with Multiple Assignments
data-replace-temp-with-query- Replace Temp with Query
7. Error Handling (MEDIUM)
error-exceptions-over-codes- Use Exceptions Instead of Error Codes
error-custom-exceptions- Create Domain-Specific Exception Types
error-fail-fast- Fail Fast with Preconditions
error-separate-concerns- Separate Error Handling from Business Logic
8. Micro-Refactoring (LOW)
micro-remove-dead-code- Remove Dead Code
micro-inline-variable- Inline Trivial Variables
micro-simplify-expressions- Simplify Boolean Expressions
micro-rename-for-clarity- Rename for Clarity
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
- Individual rules:
references/{prefix}-{slug}.md
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md