Agent skill
limpiar-duplicados
Usar al detectar código duplicado que debe consolidarse en una sola implementación
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/limpiar-duplicados
SKILL.md
Cuándo usar esta skill
- Al detectar funciones/métodos duplicados en el código
- Cuando ruff o análisis manual identifique código repetido
- Para consolidar lógica similar en helpers reutilizables
Contexto necesario antes de empezar
- Identificar las ubicaciones exactas del código duplicado
- Verificar que las implementaciones son idénticas o casi idénticas
- Determinar cuál es la versión "correcta" a mantener
- Verificar si hay tests que cubran el código
Pasos
1. Identificar duplicados
Buscar patrones comunes:
# Buscar funciones con mismo nombre
ruff check . --select=F811 # Redefinition of unused name
O revisar manualmente archivos grandes como dashboard.js o main.py.
2. Comparar implementaciones
- ¿Son exactamente iguales?
- ¿Hay diferencias menores (typos, mejoras)?
- ¿Cuál es la versión más completa/correcta?
3. Eliminar duplicado
Opción A: Eliminar la segunda definición
// ANTES: Dos definiciones de loadInitialData()
async loadInitialData() { /* primera */ }
// ... código intermedio ...
async loadInitialData() { /* segunda - ELIMINAR */ }
// DESPUÉS: Solo una definición
async loadInitialData() { /* mantener la mejor */ }
Opción B: Extraer a función helper
// ANTES: Lógica repetida en múltiples lugares
async loadWidgetA() {
const container = document.getElementById('a');
if (!container) return;
try { /* fetch y render */ }
catch (e) { utils.handleError(e, 'A', container); }
}
async loadWidgetB() {
const container = document.getElementById('b');
if (!container) return;
try { /* fetch y render similar */ }
catch (e) { utils.handleError(e, 'B', container); }
}
// DESPUÉS: Helper reutilizable
async loadWidget(containerId, apiUrl, renderFn) {
const container = document.getElementById(containerId);
if (!container) return;
try {
const data = await utils.fetchJSON(apiUrl);
container.innerHTML = renderFn(data);
} catch (e) {
utils.handleError(e, containerId, container);
}
}
4. Verificar que no se rompe nada
ruff check .
python -c "from app import app"
# Probar en navegador
<patrones_criticos> SIEMPRE:
- Verificar comportamiento antes y después
- Mantener la versión más completa/correcta
- Ejecutar validaciones después de limpiar
- Hacer commit separado para la limpieza
NUNCA:
- Eliminar código sin verificar que es realmente duplicado
- Asumir que dos funciones con mismo nombre hacen lo mismo
- Limpiar y añadir features en el mismo commit
PREFERENTEMENTE:
- Extraer a helper si el patrón se repite 3+ veces
- Documentar por qué se eligió una versión sobre otra
- Usar
@refactorcomo tipo de commit </patrones_criticos>
Duplicados conocidos en este proyecto
static/js/dashboard.js
loadInitialData()- líneas 24-47 y 49-72 (DUPLICADO)renderDocumentsTree()- líneas 328-355 y 383-410 (DUPLICADO)renderDocumentNode()- líneas 357-381 y 412-436 (DUPLICADO)
Cómo arreglarlos
- Eliminar la segunda definición de cada función
- Verificar que el dashboard funciona
- Commit:
refactor(js): eliminar funciones duplicadas en dashboard.js
Checklist de validación
- Duplicados identificados correctamente
- Versión correcta mantenida
- Segunda definición eliminada
-
ruff check .pasa - App funciona en navegador
- Commit con tipo
refactor
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?