con un clic
python-refactoring
Python refactoring triggers and guidelines for code size limits
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Python refactoring triggers and guidelines for code size limits
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Python import style guidelines for absolute and relative imports
Python naming conventions for variables, constants, files, and directories
Python pathlib usage guidelines for file and directory operations
UV command-line usage patterns for Python project management
UV command automation and project lifecycle management patterns powered by the uv-mcp server
Universal coding principles and best practices for maintainable software
| name | python-refactoring |
| description | Python refactoring triggers and guidelines for code size limits |
| license | MIT |
| compatibility | opencode |
| metadata | {"related_coding_principles":"For general coding principles, use skill `coding-principles`","related_python_guidelines":"For style and quality standards, use skill `python-guidelines`"} |
Provide guidelines for when to refactor Python code based on size limits and complexity thresholds.
# When a single .py file exceeds 250 lines:
# OPTION 1: Split into multiple modules
# module/
# __init__.py # Public API
# core.py # Core functionality
# helpers.py # Helper functions
# validators.py # Validation logic
# OPTION 2: Extract functions
# Original module has many related functions
# Extract related functions into separate modules
# Use __init__.py to expose public API
# When a function exceeds 75 lines (declaration + body):
# BEFORE: Monolithic function
def process_data(data):
# 80+ lines of mixed logic
validate(data)
transform(data)
clean(data)
aggregate(data)
export(data)
# AFTER: Decomposed functions
def process_data(data):
validate(data)
transformed = transform_data(data)
cleaned = clean_data(transformed)
results = aggregate_data(cleaned)
export_results(results)
def transform_data(data):
# Single responsibility
pass
def clean_data(data):
# Single responsibility
pass
# When a class exceeds 200 lines:
# BEFORE: God class with many responsibilities
class DataProcessor:
def validate(self): ...
def parse(self): ...
def transform(self): ...
def export(self): ...
def log(self): ...
def cache(self): ...
# AFTER: Split responsibilities
class DataProcessor:
def __init__(self, validator, parser, transformer, exporter):
self.validator = validator
self.parser = parser
self.transformer = transformer
self.exporter = exporter
def process(self, data):
validated = self.validator.validate(data)
parsed = self.parser.parse(validated)
return self.transformer.transform(parsed)
# BAD: Multiple responsibilities
class UserService:
def authenticate(self): ... # Auth logic
def send_email(self): ... # Email logic
def cache_data(self): ... # Caching logic
def generate_report(self): ... # Reporting logic
# GOOD: Split by responsibility
class AuthService: ...
class EmailService: ...
class CacheService: ...
class ReportService: ...
# When class has too many attributes/dependencies:
# Use composition instead of inheritance
class DataProcessor:
def __init__(self, validator, parser, transformer):
# Inject dependencies
self.validator = validator
self.parser = parser
self.transformer = transformer
Use this skill when: