refactoringlisted
Install: claude install-skill Vasallo94/obsidian-mcp-server
# Refactoring Skill
## Cuándo usar esta skill
- Cuando detectes código duplicado.
- Cuando funciones sean demasiado largas (>50 líneas).
- Cuando módulos tengan demasiadas responsabilidades.
- Cuando quieras mejorar la legibilidad o mantenibilidad.
## Regla de Oro
> **Nunca refactorizar sin tests.** Ejecuta `uv run pytest tests/` antes y
> después de cada refactoring para verificar que no rompiste nada.
## Proceso de Refactoring Seguro
### 1. Verificar estado inicial
```bash
# Tests deben pasar
uv run pytest tests/ -v
# Sin errores de linting/tipos
uv run ruff check . && uv run pyright
```
### 2. Hacer cambio pequeño
Solo UN cambio a la vez. No mezclar refactorings.
### 3. Verificar después del cambio
```bash
uv run pytest tests/ -v
uv run ruff check . && uv run pyright
```
### 4. Commit si pasa
```bash
git add . && git commit -m "refactor(module): descripción breve"
```
## Code Smells Comunes
### 1. Función Larga (>50 líneas)
**Problema**: Difícil de entender y testear.
**Solución**: Extract Method
```python
# ❌ ANTES: Función monolítica
def process_vault(path: Path) -> str:
# 100 líneas de código...
pass
# ✅ DESPUÉS: Funciones pequeñas
def process_vault(path: Path) -> str:
"""Procesa el vault completo."""
notes = _find_notes(path)
filtered = _filter_forbidden(notes)
formatted = _format_results(filtered)
return formatted
def _find_notes(path: Path) -> List[Path]:
"""Busca notas en el vault."""
return list(path.rglob("*