Limpiar duplicados
Skill eduardo-lezama/intranet-dashboard/.windsurf.bak/skills/limpiar-duplicados
Intranet dashboard based on html, css and js. Includes advance use of agentic workflows and MCP. For personal use with my own info panels, automation and IoT related stuff
npx -y skills add eduardo-lezama/intranet-dashboard --skill limpiar-duplicadosAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Usar al detectar código duplicado que debe consolidarse en una sola implementación
SKILL.md
3.5 KB, as published. Nobody here has run it
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