| name | code-simplifier |
| description | Simplify and clean up code after changes are complete. Reduces complexity, improves readability, and ensures consistency. |
| disable-model-invocation | true |
Code Simplifier
Clean up and simplify code after making changes.
When to Use
Run this skill after completing a feature or fix to ensure the code is clean, readable, and maintainable.
Simplification Goals
Reduce Complexity
- Break long functions into smaller, focused ones
- Reduce nesting depth (max 3 levels)
- Simplify complex conditionals
- Extract magic numbers to named constants
Improve Readability
- Use descriptive variable and function names
- Add clarifying comments for non-obvious logic
- Ensure consistent formatting
- Remove unnecessary comments
Apply Pythonic Patterns
- Use list/dict/set comprehensions where appropriate
- Use
with statements for resource management
- Use
enumerate() instead of manual indexing
- Use
zip() for parallel iteration
- Use f-strings for formatting
- Use
pathlib for file paths
Clean Up
- Remove unused imports
- Remove unused variables
- Remove commented-out code
- Remove redundant code paths
- Consolidate duplicate logic
Workflow
-
Identify Changed Files
- Focus on files modified in the current session
- Or specify files/directories as arguments
-
Analyze Each File
- Check for simplification opportunities
- Prioritize high-impact improvements
-
Apply Simplifications
- Make incremental changes
- Preserve original behavior
- Run tests after each change
-
Format and Lint
- Run
ruff format .
- Run
ruff check --fix .
-
Verify
- Run tests:
pytest
- Ensure behavior unchanged
Arguments
Optionally specify files or directories to simplify.
Usage:
/code-simplifier - Simplify recently changed files
/code-simplifier src/module.py - Simplify specific file
/code-simplifier src/ - Simplify entire directory
Example Transformations
Before:
result = []
for i in range(len(items)):
if items[i].is_valid == True:
result.append(items[i].value)
After:
result = [item.value for item in items if item.is_valid]
Before:
if x != None:
if y != None:
if z != None:
process(x, y, z)
After:
if all(v is not None for v in (x, y, z)):
process(x, y, z)