Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add emvnuel/SKILL.md --skill "clean-code-principles"
Install specific skill from multi-skill repository
# Description
Detects violations of Clean Code principles and suggests refactorings. Use when reviewing code quality, improving readability, or refactoring methods, classes, and modules.
# SKILL.md
name: clean-code-principles
description: Detects violations of Clean Code principles and suggests refactorings. Use when reviewing code quality, improving readability, or refactoring methods, classes, and modules.
Clean Code Refactoring Detection
Identify opportunities to apply Clean Code principles based on Robert C. Martin's guidelines.
Naming
Meaningful Names
Detect: Single-letter variables, abbreviations, temp/data/info suffixes
Refactor: Intention-revealing names that explain purpose
Cookbook: meaningful-names.md
Pronounceable Names
Detect: Unpronounceable abbreviations (genymdhms, modymdhms)
Refactor: Names that can be discussed verbally
Cookbook: meaningful-names.md
Searchable Names
Detect: Magic numbers, single-letter constants
Refactor: Named constants with clear purpose
Cookbook: meaningful-names.md
Functions
Small Functions
Detect: Methods longer than 20 lines, multiple levels of abstraction
Refactor: Extract smaller, single-purpose functions
Cookbook: small-functions.md
Single Responsibility
Detect: Functions doing multiple unrelated tasks
Refactor: One function, one responsibility, one level of abstraction
Cookbook: small-functions.md
Few Arguments
Detect: Functions with more than 3 arguments
Refactor: Parameter objects, builder pattern, method extraction
Cookbook: function-arguments.md
No Side Effects
Detect: Functions that modify global state or input parameters
Refactor: Pure functions, explicit state changes
Cookbook: side-effects.md
Command Query Separation
Detect: Functions that both change state AND return values
Refactor: Separate commands (void) from queries (return value)
Cookbook: command-query-separation.md
Comments
Self-Documenting Code
Detect: Comments explaining "what" instead of code explaining itself
Refactor: Rename variables and extract methods to make intent clear
Cookbook: comments.md
Useful Comments
Detect: Commented-out code, redundant comments, changelog in code
Refactor: Legal/license comments, intent explanation, TODO with tickets
Cookbook: comments.md
Error Handling
Exceptions Over Error Codes
Detect: Methods returning error codes or status flags
Refactor: Throw specific, descriptive exceptions
Cookbook: error-handling.md
Unchecked Exceptions
Detect: Checked exceptions creating coupling
Refactor: Runtime exceptions with meaningful messages
Cookbook: error-handling.md
Don't Return Null
Detect: Methods returning null for error/empty cases
Refactor: Optional<T>, empty collections, Null Object pattern
Cookbook: null-handling.md
Don't Pass Null
Detect: null passed as method argument
Refactor: Overloaded methods, default values, Optional parameters
Cookbook: null-handling.md
Classes
Single Responsibility (SRP)
Detect: Classes with multiple reasons to change, mixed concerns
Refactor: Separate classes for distinct responsibilities
Cookbook: single-responsibility.md
Cohesion
Detect: Methods not using instance variables, unrelated fields
Refactor: Extract related fields/methods into new classes
Cookbook: cohesion.md
Small Classes
Detect: Classes with 200+ lines or 10+ methods
Refactor: Identify hidden responsibilities, extract collaborators
Cookbook: small-classes.md
Code Smells
Long Method
Detect: Methods exceeding 20 lines
Refactor: Extract Method until each does one thing
Cookbook: long-method.md
Primitive Obsession
Detect: Strings for emails/phone/money, parallel arrays
Refactor: Value objects, domain-specific types
Cookbook: primitive-obsession.md
Feature Envy
Detect: Method uses more data from other class than its own
Refactor: Move method to the class it envies
Cookbook: feature-envy.md
Data Clumps
Detect: Same group of parameters passed together repeatedly
Refactor: Parameter object or extract class
Cookbook: data-clumps.md
Divergent Change
Detect: Class changes for unrelated reasons
Refactor: Split class by responsibility
Cookbook: divergent-change.md
Shotgun Surgery
Detect: One change requires many small edits across classes
Refactor: Consolidate related logic into single class
Cookbook: shotgun-surgery.md
Quick Reference Table
| Principle | Detection Signal | Clean Code Solution |
|---|---|---|
| Meaningful Names | Single-letter vars, abbreviations | Intention-revealing names |
| Small Functions | Methods > 20 lines | Extract, one level of abstraction |
| Few Arguments | > 3 parameters | Parameter objects, builder |
| No Side Effects | Modifies global/input state | Pure functions |
| Command Query Sep. | Function changes state AND returns | Separate commands from queries |
| Self-Documenting | Comments explain "what" | Rename, extract methods |
| Exceptions | Error codes, status flags | Specific exceptions |
| Don't Return Null | Null for errors/empty | Optional, empty collections |
| Single Responsibility | Multiple reasons to change | Separate classes |
| Cohesion | Methods don't use instance vars | Extract new classes |
| Long Method | > 20 lines | Extract Method |
| Primitive Obsession | Strings for domain types | Value objects |
| Feature Envy | Uses external class data | Move method |
| Data Clumps | Repeated parameter groups | Parameter object |
Boy Scout Rule
Leave the code cleaner than you found it.
Apply opportunistic refactoring:
- Fix one naming issue
- Extract one long method
- Remove one piece of dead code
- Add one missing null check
Cookbook Index
Clean Code recipes with practical examples:
Naming: Meaningful Names
Functions: Small Functions · Function Arguments · Side Effects · Command Query Separation
Comments: Comments
Error Handling: Error Handling · Null Handling
Classes: Single Responsibility · Cohesion · Small Classes
Code Smells: Long Method · Primitive Obsession · Feature Envy · Data Clumps · Divergent Change · Shotgun Surgery
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.