don-cheli-sdd 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +33 -0
- package/CHANGELOG.md +108 -0
- package/CLAUDE.md +114 -0
- package/LICENSE +190 -0
- package/README.es.md +611 -0
- package/README.md +640 -0
- package/README.pt.md +579 -0
- package/VERSION +1 -0
- package/agentes/README.md +28 -0
- package/agentes/prompts/estimador.md +29 -0
- package/comandos/bucle-completar.md +13 -0
- package/comandos/bucle-estado.md +13 -0
- package/comandos/bucle.md +74 -0
- package/comandos/especdev/actualizar.md +200 -0
- package/comandos/especdev/agente.md +43 -0
- package/comandos/especdev/analizar-sesiones.md +158 -0
- package/comandos/especdev/aplicar.md +73 -0
- package/comandos/especdev/archivar.md +69 -0
- package/comandos/especdev/auditar-seguridad.md +234 -0
- package/comandos/especdev/auditar.md +15 -0
- package/comandos/especdev/avance-rapido.md +64 -0
- package/comandos/especdev/cambios.md +14 -0
- package/comandos/especdev/capturar.md +61 -0
- package/comandos/especdev/cerrar-sesion.md +88 -0
- package/comandos/especdev/clarificar.md +98 -0
- package/comandos/especdev/comenzar.md +105 -0
- package/comandos/especdev/completo.md +49 -0
- package/comandos/especdev/continuar.md +59 -0
- package/comandos/especdev/contrato-api.md +223 -0
- package/comandos/especdev/contrato-ui.md +245 -0
- package/comandos/especdev/crear-skill.md +148 -0
- package/comandos/especdev/debate.md +119 -0
- package/comandos/especdev/desglosar.md +172 -0
- package/comandos/especdev/destilar.md +211 -0
- package/comandos/especdev/detectar-ambiguedad.md +81 -0
- package/comandos/especdev/diagnostico.md +92 -0
- package/comandos/especdev/dise/303/261ar.md +74 -0
- package/comandos/especdev/doctor.md +78 -0
- package/comandos/especdev/donde-estoy.md +32 -0
- package/comandos/especdev/especificar.md +189 -0
- package/comandos/especdev/estado.md +46 -0
- package/comandos/especdev/estimar.md +141 -0
- package/comandos/especdev/explorar.md +175 -0
- package/comandos/especdev/guardian.md +99 -0
- package/comandos/especdev/historial.md +14 -0
- package/comandos/especdev/implementar.md +227 -0
- package/comandos/especdev/incorporar.md +71 -0
- package/comandos/especdev/iniciar.md +82 -0
- package/comandos/especdev/limpiar-slop.md +88 -0
- package/comandos/especdev/marketplace.md +109 -0
- package/comandos/especdev/memorizar.md +31 -0
- package/comandos/especdev/mesa-redonda.md +60 -0
- package/comandos/especdev/mesa-tecnica.md +144 -0
- package/comandos/especdev/migrar.md +237 -0
- package/comandos/especdev/minar-referencias.md +214 -0
- package/comandos/especdev/planificar-tecnico.md +186 -0
- package/comandos/especdev/planning.md +264 -0
- package/comandos/especdev/poc.md +302 -0
- package/comandos/especdev/presentar.md +75 -0
- package/comandos/especdev/proponer.md +69 -0
- package/comandos/especdev/pseudocodigo.md +49 -0
- package/comandos/especdev/rapido.md +69 -0
- package/comandos/especdev/reflexionar.md +53 -0
- package/comandos/especdev/retro.md +14 -0
- package/comandos/especdev/reversa.md +155 -0
- package/comandos/especdev/revisar.md +231 -0
- package/comandos/especdev/traspasar.md +76 -0
- package/comandos/especdev/traspaso.md +43 -0
- package/comandos/especdev/uat.md +84 -0
- package/comandos/especdev/validar-spec.md +58 -0
- package/comandos/especdev/validar.md +40 -0
- package/comandos/historias-generar.md +74 -0
- package/comandos/razonar/5-porques.md +42 -0
- package/comandos/razonar/circulo-competencia.md +22 -0
- package/comandos/razonar/costo-oportunidad.md +21 -0
- package/comandos/razonar/inversion.md +40 -0
- package/comandos/razonar/mapa-territorio.md +22 -0
- package/comandos/razonar/minimizar-arrepentimiento.md +20 -0
- package/comandos/razonar/pareto.md +32 -0
- package/comandos/razonar/pre-mortem.md +22 -0
- package/comandos/razonar/primeros-principios.md +57 -0
- package/comandos/razonar/probabilistico.md +21 -0
- package/comandos/razonar/reversibilidad.md +27 -0
- package/comandos/razonar/rlm-cadena-pensamiento.md +189 -0
- package/comandos/razonar/rlm-descomposicion.md +216 -0
- package/comandos/razonar/rlm-verificacion.md +169 -0
- package/comandos/razonar/segundo-orden.md +35 -0
- package/ganchos/parar.md +10 -0
- package/ganchos/post-herramienta.md +9 -0
- package/ganchos/pre-herramienta.md +19 -0
- package/habilidades/arnes-agente/HABILIDAD.md +164 -0
- package/habilidades/auto-correccion/HABILIDAD.md +114 -0
- package/habilidades/brainstorming/HABILIDAD.md +88 -0
- package/habilidades/cambio-carpeta/HABILIDAD.md +100 -0
- package/habilidades/code-rag/HABILIDAD.md +306 -0
- package/habilidades/contabilidad-tokens/HABILIDAD.md +109 -0
- package/habilidades/delta-specs/HABILIDAD.md +102 -0
- package/habilidades/desarrollo-subagentes/HABILIDAD.md +51 -0
- package/habilidades/deteccion-loops/HABILIDAD.md +168 -0
- package/habilidades/deteccion-stubs/HABILIDAD.md +204 -0
- package/habilidades/devlog/HABILIDAD.md +84 -0
- package/habilidades/documentacion-viva/HABILIDAD.md +231 -0
- package/habilidades/estimacion/HABILIDAD.md +48 -0
- package/habilidades/extensiones-presets/HABILIDAD.md +133 -0
- package/habilidades/generador-specs/HABILIDAD.md +37 -0
- package/habilidades/ingenieria-contexto/HABILIDAD.md +34 -0
- package/habilidades/integracion-mcp/HABILIDAD.md +59 -0
- package/habilidades/leyes-hierro/HABILIDAD.md +45 -0
- package/habilidades/mapa-arquitectonico/HABILIDAD.md +93 -0
- package/habilidades/memoria-persistente/HABILIDAD.md +97 -0
- package/habilidades/obsidian/HABILIDAD.md +93 -0
- package/habilidades/optimizacion-tokens/HABILIDAD.md +179 -0
- package/habilidades/optimizador-contexto/HABILIDAD.md +106 -0
- package/habilidades/orquestacion-autonoma/HABILIDAD.md +133 -0
- package/habilidades/permisos-seguridad/HABILIDAD.md +76 -0
- package/habilidades/persona/HABILIDAD.md +66 -0
- package/habilidades/planning-equipo/HABILIDAD.md +169 -0
- package/habilidades/presentaciones/HABILIDAD.md +63 -0
- package/habilidades/proyecciones-costo/HABILIDAD.md +54 -0
- package/habilidades/prueba-trabajo/HABILIDAD.md +131 -0
- package/habilidades/razonamiento/HABILIDAD.md +69 -0
- package/habilidades/recuperacion-sesion/HABILIDAD.md +27 -0
- package/habilidades/refactorizacion-solid/HABILIDAD.md +182 -0
- package/habilidades/reflexion/HABILIDAD.md +37 -0
- package/habilidades/rigor-progresivo/HABILIDAD.md +109 -0
- package/habilidades/rlm/HABILIDAD.md +85 -0
- package/habilidades/routing-modelos/HABILIDAD.md +79 -0
- package/habilidades/salud-habilidades/HABILIDAD.md +63 -0
- package/habilidades/schemas-dbml/HABILIDAD.md +101 -0
- package/habilidades/trazabilidad/HABILIDAD.md +63 -0
- package/habilidades/ui-ux-design/HABILIDAD.md +76 -0
- package/habilidades/validacion-nyquist/HABILIDAD.md +161 -0
- package/habilidades/worktrees/HABILIDAD.md +80 -0
- package/locales/en.json +179 -0
- package/locales/es.json +179 -0
- package/locales/pt.json +179 -0
- package/package.json +48 -0
- package/plantillas/checklist-requisitos.md +31 -0
- package/plantillas/docker/Dockerfile +16 -0
- package/plantillas/docker/docker-compose.yml +28 -0
- package/plantillas/especdev/WORKFLOW.md +118 -0
- package/plantillas/especdev/config.yaml +27 -0
- package/plantillas/especdev/en/config.yaml +27 -0
- package/plantillas/especdev/en/decisions.md +17 -0
- package/plantillas/especdev/en/deferred-work.md +17 -0
- package/plantillas/especdev/en/findings.md +7 -0
- package/plantillas/especdev/en/knowledge.md +19 -0
- package/plantillas/especdev/en/plan.md +35 -0
- package/plantillas/especdev/en/progress.md +7 -0
- package/plantillas/especdev/en/project-constitution.md +53 -0
- package/plantillas/especdev/en/pseudocode.md +35 -0
- package/plantillas/especdev/en/runtime.md +26 -0
- package/plantillas/especdev/en/status.md +16 -0
- package/plantillas/especdev/es/config.yaml +27 -0
- package/plantillas/especdev/es/conocimiento.md +19 -0
- package/plantillas/especdev/es/constitucion-proyecto.md +53 -0
- package/plantillas/especdev/es/decisiones.md +17 -0
- package/plantillas/especdev/es/deuda-scope.md +17 -0
- package/plantillas/especdev/es/estado.md +16 -0
- package/plantillas/especdev/es/hallazgos.md +7 -0
- package/plantillas/especdev/es/plan.md +35 -0
- package/plantillas/especdev/es/progreso.md +7 -0
- package/plantillas/especdev/es/pseudocodigo.md +35 -0
- package/plantillas/especdev/es/runtime.md +26 -0
- package/plantillas/especdev/estado.md +16 -0
- package/plantillas/especdev/hallazgos.md +7 -0
- package/plantillas/especdev/isa.yml +152 -0
- package/plantillas/especdev/plan.md +35 -0
- package/plantillas/especdev/progreso.md +7 -0
- package/plantillas/especdev/pt/config.yaml +27 -0
- package/plantillas/especdev/pt/conhecimento.md +19 -0
- package/plantillas/especdev/pt/constituicao-projeto.md +53 -0
- package/plantillas/especdev/pt/decisoes.md +17 -0
- package/plantillas/especdev/pt/descobertas.md +7 -0
- package/plantillas/especdev/pt/estado.md +16 -0
- package/plantillas/especdev/pt/plano.md +35 -0
- package/plantillas/especdev/pt/progresso.md +7 -0
- package/plantillas/especdev/pt/pseudocodigo.md +35 -0
- package/plantillas/especdev/pt/runtime.md +26 -0
- package/plantillas/especdev/pt/trabalho-diferido.md +17 -0
- package/plantillas/estimado-desarrollo.md +43 -0
- package/prompt.md +16 -0
- package/reglas/constitucion.md +122 -0
- package/reglas/hooks-parar.md +102 -0
- package/reglas/i18n.md +47 -0
- package/reglas/leyes-hierro.md +18 -0
- package/reglas/puertas-calidad.md +87 -0
- package/reglas/reglas-desviacion.md +36 -0
- package/reglas/reglas-trabajo-globales.md +171 -0
- package/reglas/skills-best-practices.md +109 -0
- package/scripts/.claude/commands/bucle-completar.md +13 -0
- package/scripts/.claude/commands/bucle-estado.md +13 -0
- package/scripts/.claude/commands/bucle.md +74 -0
- package/scripts/.claude/commands/especdev/actualizar.md +200 -0
- package/scripts/.claude/commands/especdev/agente.md +43 -0
- package/scripts/.claude/commands/especdev/analizar-sesiones.md +158 -0
- package/scripts/.claude/commands/especdev/aplicar.md +73 -0
- package/scripts/.claude/commands/especdev/archivar.md +69 -0
- package/scripts/.claude/commands/especdev/auditar-seguridad.md +234 -0
- package/scripts/.claude/commands/especdev/auditar.md +15 -0
- package/scripts/.claude/commands/especdev/avance-rapido.md +64 -0
- package/scripts/.claude/commands/especdev/cambios.md +14 -0
- package/scripts/.claude/commands/especdev/cerrar-sesion.md +88 -0
- package/scripts/.claude/commands/especdev/clarificar.md +98 -0
- package/scripts/.claude/commands/especdev/comenzar.md +77 -0
- package/scripts/.claude/commands/especdev/completo.md +49 -0
- package/scripts/.claude/commands/especdev/continuar.md +59 -0
- package/scripts/.claude/commands/especdev/contrato-api.md +223 -0
- package/scripts/.claude/commands/especdev/contrato-ui.md +245 -0
- package/scripts/.claude/commands/especdev/desglosar.md +172 -0
- package/scripts/.claude/commands/especdev/destilar.md +211 -0
- package/scripts/.claude/commands/especdev/detectar-ambiguedad.md +81 -0
- package/scripts/.claude/commands/especdev/diagnostico.md +92 -0
- package/scripts/.claude/commands/especdev/dise/303/261ar.md +74 -0
- package/scripts/.claude/commands/especdev/donde-estoy.md +32 -0
- package/scripts/.claude/commands/especdev/especificar.md +189 -0
- package/scripts/.claude/commands/especdev/estado.md +46 -0
- package/scripts/.claude/commands/especdev/estimar.md +141 -0
- package/scripts/.claude/commands/especdev/explorar.md +175 -0
- package/scripts/.claude/commands/especdev/guardian.md +99 -0
- package/scripts/.claude/commands/especdev/historial.md +14 -0
- package/scripts/.claude/commands/especdev/implementar.md +227 -0
- package/scripts/.claude/commands/especdev/incorporar.md +71 -0
- package/scripts/.claude/commands/especdev/iniciar.md +82 -0
- package/scripts/.claude/commands/especdev/limpiar-slop.md +88 -0
- package/scripts/.claude/commands/especdev/memorizar.md +31 -0
- package/scripts/.claude/commands/especdev/mesa-redonda.md +60 -0
- package/scripts/.claude/commands/especdev/mesa-tecnica.md +144 -0
- package/scripts/.claude/commands/especdev/migrar.md +237 -0
- package/scripts/.claude/commands/especdev/minar-referencias.md +214 -0
- package/scripts/.claude/commands/especdev/planificar-tecnico.md +186 -0
- package/scripts/.claude/commands/especdev/planning.md +264 -0
- package/scripts/.claude/commands/especdev/poc.md +302 -0
- package/scripts/.claude/commands/especdev/proponer.md +69 -0
- package/scripts/.claude/commands/especdev/rapido.md +69 -0
- package/scripts/.claude/commands/especdev/reflexionar.md +53 -0
- package/scripts/.claude/commands/especdev/retro.md +14 -0
- package/scripts/.claude/commands/especdev/reversa.md +155 -0
- package/scripts/.claude/commands/especdev/revisar.md +221 -0
- package/scripts/.claude/commands/especdev/traspasar.md +76 -0
- package/scripts/.claude/commands/especdev/traspaso.md +43 -0
- package/scripts/.claude/commands/especdev/validar.md +40 -0
- package/scripts/.claude/commands/historias-generar.md +74 -0
- package/scripts/.claude/commands/razonar/5-porques.md +42 -0
- package/scripts/.claude/commands/razonar/circulo-competencia.md +22 -0
- package/scripts/.claude/commands/razonar/costo-oportunidad.md +21 -0
- package/scripts/.claude/commands/razonar/inversion.md +40 -0
- package/scripts/.claude/commands/razonar/mapa-territorio.md +22 -0
- package/scripts/.claude/commands/razonar/minimizar-arrepentimiento.md +20 -0
- package/scripts/.claude/commands/razonar/pareto.md +32 -0
- package/scripts/.claude/commands/razonar/pre-mortem.md +22 -0
- package/scripts/.claude/commands/razonar/primeros-principios.md +57 -0
- package/scripts/.claude/commands/razonar/probabilistico.md +21 -0
- package/scripts/.claude/commands/razonar/reversibilidad.md +27 -0
- package/scripts/.claude/commands/razonar/rlm-cadena-pensamiento.md +189 -0
- package/scripts/.claude/commands/razonar/rlm-descomposicion.md +216 -0
- package/scripts/.claude/commands/razonar/rlm-verificacion.md +169 -0
- package/scripts/.claude/commands/razonar/segundo-orden.md +35 -0
- package/scripts/.claude/don-cheli/AGENTS.md +20 -0
- package/scripts/.claude/don-cheli/CLAUDE.md +114 -0
- package/scripts/.claude/don-cheli/NOTICE +17 -0
- package/scripts/.claude/don-cheli/VERSION +1 -0
- package/scripts/.claude/don-cheli/agentes/README.md +28 -0
- package/scripts/.claude/don-cheli/agentes/prompts/estimador.md +29 -0
- package/scripts/.claude/don-cheli/folder-map.json +19 -0
- package/scripts/.claude/don-cheli/ganchos/parar.md +10 -0
- package/scripts/.claude/don-cheli/ganchos/post-herramienta.md +9 -0
- package/scripts/.claude/don-cheli/ganchos/pre-herramienta.md +19 -0
- package/scripts/.claude/don-cheli/habilidades/arnes-agente/HABILIDAD.md +155 -0
- package/scripts/.claude/don-cheli/habilidades/auto-correccion/HABILIDAD.md +105 -0
- package/scripts/.claude/don-cheli/habilidades/brainstorming/HABILIDAD.md +79 -0
- package/scripts/.claude/don-cheli/habilidades/cambio-carpeta/HABILIDAD.md +91 -0
- package/scripts/.claude/don-cheli/habilidades/code-rag/HABILIDAD.md +297 -0
- package/scripts/.claude/don-cheli/habilidades/contabilidad-tokens/HABILIDAD.md +100 -0
- package/scripts/.claude/don-cheli/habilidades/delta-specs/HABILIDAD.md +93 -0
- package/scripts/.claude/don-cheli/habilidades/desarrollo-subagentes/HABILIDAD.md +42 -0
- package/scripts/.claude/don-cheli/habilidades/deteccion-loops/HABILIDAD.md +159 -0
- package/scripts/.claude/don-cheli/habilidades/deteccion-stubs/HABILIDAD.md +195 -0
- package/scripts/.claude/don-cheli/habilidades/devlog/HABILIDAD.md +75 -0
- package/scripts/.claude/don-cheli/habilidades/documentacion-viva/HABILIDAD.md +222 -0
- package/scripts/.claude/don-cheli/habilidades/estimacion/HABILIDAD.md +39 -0
- package/scripts/.claude/don-cheli/habilidades/extensiones-presets/HABILIDAD.md +124 -0
- package/scripts/.claude/don-cheli/habilidades/generador-specs/HABILIDAD.md +28 -0
- package/scripts/.claude/don-cheli/habilidades/ingenieria-contexto/HABILIDAD.md +25 -0
- package/scripts/.claude/don-cheli/habilidades/integracion-mcp/HABILIDAD.md +50 -0
- package/scripts/.claude/don-cheli/habilidades/leyes-hierro/HABILIDAD.md +36 -0
- package/scripts/.claude/don-cheli/habilidades/mapa-arquitectonico/HABILIDAD.md +84 -0
- package/scripts/.claude/don-cheli/habilidades/memoria-persistente/HABILIDAD.md +88 -0
- package/scripts/.claude/don-cheli/habilidades/obsidian/HABILIDAD.md +84 -0
- package/scripts/.claude/don-cheli/habilidades/optimizacion-tokens/HABILIDAD.md +170 -0
- package/scripts/.claude/don-cheli/habilidades/optimizador-contexto/HABILIDAD.md +97 -0
- package/scripts/.claude/don-cheli/habilidades/orquestacion-autonoma/HABILIDAD.md +124 -0
- package/scripts/.claude/don-cheli/habilidades/permisos-seguridad/HABILIDAD.md +67 -0
- package/scripts/.claude/don-cheli/habilidades/persona/HABILIDAD.md +57 -0
- package/scripts/.claude/don-cheli/habilidades/presentaciones/HABILIDAD.md +54 -0
- package/scripts/.claude/don-cheli/habilidades/prueba-trabajo/HABILIDAD.md +122 -0
- package/scripts/.claude/don-cheli/habilidades/razonamiento/HABILIDAD.md +60 -0
- package/scripts/.claude/don-cheli/habilidades/recuperacion-sesion/HABILIDAD.md +18 -0
- package/scripts/.claude/don-cheli/habilidades/refactorizacion-solid/HABILIDAD.md +173 -0
- package/scripts/.claude/don-cheli/habilidades/reflexion/HABILIDAD.md +15 -0
- package/scripts/.claude/don-cheli/habilidades/rigor-progresivo/HABILIDAD.md +100 -0
- package/scripts/.claude/don-cheli/habilidades/rlm/HABILIDAD.md +76 -0
- package/scripts/.claude/don-cheli/habilidades/schemas-dbml/HABILIDAD.md +92 -0
- package/scripts/.claude/don-cheli/habilidades/trazabilidad/HABILIDAD.md +54 -0
- package/scripts/.claude/don-cheli/habilidades/ui-ux-design/HABILIDAD.md +67 -0
- package/scripts/.claude/don-cheli/habilidades/validacion-nyquist/HABILIDAD.md +152 -0
- package/scripts/.claude/don-cheli/habilidades/worktrees/HABILIDAD.md +71 -0
- package/scripts/.claude/don-cheli/locale +1 -0
- package/scripts/.claude/don-cheli/locales/en.json +179 -0
- package/scripts/.claude/don-cheli/locales/es.json +179 -0
- package/scripts/.claude/don-cheli/locales/pt.json +179 -0
- package/scripts/.claude/don-cheli/plantillas/checklist-requisitos.md +31 -0
- package/scripts/.claude/don-cheli/plantillas/docker/Dockerfile +16 -0
- package/scripts/.claude/don-cheli/plantillas/docker/docker-compose.yml +28 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/WORKFLOW.md +118 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/config.yaml +27 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/en/config.yaml +27 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/en/findings.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/en/plan.md +35 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/en/progress.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/en/status.md +16 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/es/config.yaml +27 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/es/estado.md +16 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/es/hallazgos.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/es/plan.md +35 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/es/progreso.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/estado.md +16 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/hallazgos.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/isa.yml +152 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/plan.md +35 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/progreso.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/pt/config.yaml +27 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/pt/descobertas.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/pt/estado.md +16 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/pt/plano.md +35 -0
- package/scripts/.claude/don-cheli/plantillas/especdev/pt/progresso.md +7 -0
- package/scripts/.claude/don-cheli/plantillas/estimado-desarrollo.md +43 -0
- package/scripts/.claude/don-cheli/prompt.md +16 -0
- package/scripts/.claude/don-cheli/reglas/constitucion.md +122 -0
- package/scripts/.claude/don-cheli/reglas/hooks-parar.md +102 -0
- package/scripts/.claude/don-cheli/reglas/i18n.md +47 -0
- package/scripts/.claude/don-cheli/reglas/leyes-hierro.md +18 -0
- package/scripts/.claude/don-cheli/reglas/puertas-calidad.md +87 -0
- package/scripts/.claude/don-cheli/reglas/reglas-desviacion.md +36 -0
- package/scripts/.claude/don-cheli/reglas/reglas-trabajo-globales.md +171 -0
- package/scripts/.claude/don-cheli/scripts/bucle.sh +103 -0
- package/scripts/.claude/don-cheli/scripts/instalar.sh +522 -0
- package/scripts/.claude/don-cheli/scripts/validar.sh +70 -0
- package/scripts/bucle.sh +103 -0
- package/scripts/instalar.sh +587 -0
- package/scripts/validar.sh +70 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Eliminar slop de código generado por IA antes de commits
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:limpiar-slop
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Detectar y eliminar **slop** — código innecesario, verbose, o sobre-ingenierizado que los modelos de IA generan frecuentemente. Se ejecuta sobre el diff del branch actual vs main.
|
|
11
|
+
|
|
12
|
+
> Adaptado de `deslop` de Pro-Workflow (rohitg00/pro-workflow).
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/especdev:limpiar-slop # Limpiar branch actual
|
|
18
|
+
/especdev:limpiar-slop --preview # Solo mostrar, no editar
|
|
19
|
+
/especdev:limpiar-slop --archivo archivo # Limpiar un solo archivo
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Qué es Slop
|
|
23
|
+
|
|
24
|
+
Código que la IA genera pero que un dev senior eliminaría:
|
|
25
|
+
|
|
26
|
+
| Patrón de Slop | Ejemplo | Corrección |
|
|
27
|
+
|----------------|---------|------------|
|
|
28
|
+
| **Comentarios obvios** | `// Get the user` antes de `getUser()` | Eliminar |
|
|
29
|
+
| **Try/catch defensivo** | Try/catch en código interno confiable | Eliminar si no es boundary |
|
|
30
|
+
| **Cast a `any`** | `(data as any).name` | Tipar correctamente |
|
|
31
|
+
| **Abstracciones prematuras** | Factory para un solo uso | Inlinear |
|
|
32
|
+
| **Nesting profundo** | 4+ niveles de if/else | Early returns |
|
|
33
|
+
| **Re-exports innecesarios** | `export { thing } from './thing'` solo para "limpiar" | Eliminar |
|
|
34
|
+
| **Scope creep** | Refactors no solicitados | Revertir |
|
|
35
|
+
| **Docstrings en código no tocado** | JSDoc nuevo en funciones existentes | Eliminar |
|
|
36
|
+
| **Error handling imposible** | Catch de errores que no pueden ocurrir | Eliminar |
|
|
37
|
+
|
|
38
|
+
## Comportamiento
|
|
39
|
+
|
|
40
|
+
1. **Obtener diff** contra main
|
|
41
|
+
2. **Escanear** los 9 patrones de slop
|
|
42
|
+
3. **Proponer** edits mínimos y focalizados
|
|
43
|
+
4. **Verificar** que el comportamiento no cambia (tests)
|
|
44
|
+
5. **Resumir** lo limpiado
|
|
45
|
+
|
|
46
|
+
## Output
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
=== Limpieza de Slop ===
|
|
50
|
+
|
|
51
|
+
Archivos escaneados: 8
|
|
52
|
+
Patrones encontrados: 12
|
|
53
|
+
|
|
54
|
+
🧹 Comentarios obvios: 5
|
|
55
|
+
- src/services/auth.ts:24 — "// Authenticate the user"
|
|
56
|
+
- src/services/auth.ts:38 — "// Return the token"
|
|
57
|
+
- src/utils/format.ts:12 — "// Format the date"
|
|
58
|
+
...
|
|
59
|
+
|
|
60
|
+
🧹 Try/catch defensivo: 3
|
|
61
|
+
- src/services/payment.ts:45 — try/catch en helper interno
|
|
62
|
+
- src/db/queries.ts:23 — catch vacío
|
|
63
|
+
...
|
|
64
|
+
|
|
65
|
+
🧹 Abstracciones prematuras: 2
|
|
66
|
+
- src/utils/createHandler.ts — Factory usado 1 sola vez
|
|
67
|
+
- src/helpers/wrapResponse.ts — Wrapper innecesario
|
|
68
|
+
...
|
|
69
|
+
|
|
70
|
+
🧹 Scope creep: 2
|
|
71
|
+
- src/middleware/cors.ts — Refactor no solicitado
|
|
72
|
+
...
|
|
73
|
+
|
|
74
|
+
Tests después de limpieza: ✅ 47/47 pasan
|
|
75
|
+
Líneas eliminadas: 34
|
|
76
|
+
Comportamiento: sin cambios
|
|
77
|
+
|
|
78
|
+
Resumen: Eliminados 5 comentarios obvios, 3 try/catch defensivos,
|
|
79
|
+
2 abstracciones prematuras, y 2 cambios fuera de scope.
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Guardrails
|
|
83
|
+
|
|
84
|
+
- **NO cambiar comportamiento** — Solo eliminar ruido
|
|
85
|
+
- **Edits mínimos** — No reescribir, solo limpiar
|
|
86
|
+
- **3 líneas similares > abstracción prematura** — Duplicar es ok
|
|
87
|
+
- **Verificar antes de borrar** — Confirmar que no se usa
|
|
88
|
+
- **Ejecutar tests** — Si fallan, revertir
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Guardar insights importantes para referencia futura
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:memorizar
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Guardar un insight o aprendizaje importante en `.especdev/hallazgos.md` para que persista entre sesiones.
|
|
11
|
+
|
|
12
|
+
## Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/especdev:memorizar <insight>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Ejemplo
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
/especdev:memorizar "Los índices compuestos en MongoDB mejoran 10x las consultas de búsqueda con filtros múltiples"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Agrega al archivo `.especdev/hallazgos.md`:
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
### 2026-03-21 15:30
|
|
28
|
+
**Insight:** Los índices compuestos en MongoDB mejoran 10x las consultas de búsqueda con filtros múltiples
|
|
29
|
+
**Contexto:** Implementación de API de búsqueda en Fase 4
|
|
30
|
+
**Categoría:** Rendimiento
|
|
31
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Discusión multi-perspectiva exploratoria con roles senior sobre un tema
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:mesa-redonda
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Iniciar una discusión exploratoria multi-perspectiva donde roles senior comparten su visión sobre un tema. A diferencia de `/especdev:debate` (que busca tensión adversarial), la mesa redonda busca **explorar opciones** y construir sobre las ideas de los demás.
|
|
11
|
+
|
|
12
|
+
## Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/especdev:mesa-redonda "<tema>"
|
|
16
|
+
/especdev:mesa-redonda --roles "CPO,Arquitecto,Negocio" "<tema>"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Roles Disponibles
|
|
20
|
+
|
|
21
|
+
| Rol | Perspectiva | Enfoque |
|
|
22
|
+
|-----|-------------|---------|
|
|
23
|
+
| **CPO** | Visión de producto | Roadmap, priorización, métricas de adopción |
|
|
24
|
+
| **Arquitecto** | Sistema y escalabilidad | Performance, mantenibilidad, deuda técnica |
|
|
25
|
+
| **UX Lead** | Experiencia de usuario | Usabilidad, accesibilidad, research, conversión |
|
|
26
|
+
| **Negocio** | Viabilidad comercial | ROI, unit economics, ventaja competitiva |
|
|
27
|
+
| **QA Lead** | Calidad y testing | Testability, edge cases, automatización |
|
|
28
|
+
| **Seguridad** | Protección y compliance | OWASP, regulaciones, datos sensibles |
|
|
29
|
+
| **DevOps** | Operaciones | Observabilidad, CI/CD, costos infra |
|
|
30
|
+
|
|
31
|
+
Default: CPO, Arquitecto, UX Lead, Negocio.
|
|
32
|
+
|
|
33
|
+
## Ejemplo
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
/especdev:mesa-redonda "¿Deberíamos usar microservicios o monolito?"
|
|
37
|
+
|
|
38
|
+
=== Mesa Redonda ===
|
|
39
|
+
Tema: ¿Microservicios o monolito?
|
|
40
|
+
|
|
41
|
+
📦 CPO: Con un equipo de 5 personas y sin product-market fit confirmado,
|
|
42
|
+
la velocidad de iteración es más valiosa que la escalabilidad.
|
|
43
|
+
Un monolito nos deja lanzar features 2-3x más rápido...
|
|
44
|
+
|
|
45
|
+
🏗️ Arquitecto: Dado nuestro equipo de 5 personas, un monolito modular
|
|
46
|
+
nos permite movernos más rápido sin la complejidad operacional.
|
|
47
|
+
Shopify escala con monolito — no es limitante...
|
|
48
|
+
|
|
49
|
+
🎨 UX Lead: Un solo codebase significa design system centralizado y
|
|
50
|
+
latencia consistente. La experiencia del usuario es más predecible
|
|
51
|
+
cuando no hay hops entre servicios...
|
|
52
|
+
|
|
53
|
+
💼 Negocio: Microservicios agregarían ~$3-5K/mes en infra y 30% más
|
|
54
|
+
tiempo en DevOps. Para pre-Serie A, cada mes de runway cuenta.
|
|
55
|
+
Los inversores quieren tracción, no arquitectura...
|
|
56
|
+
|
|
57
|
+
=== Consenso ===
|
|
58
|
+
Monolito modular con interfaces claras. Revisión de arquitectura
|
|
59
|
+
al llegar a 10K usuarios o 10 developers.
|
|
60
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Mesa técnica de expertos senior de desarrollo para decisiones de implementación, stack y código
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:mesa-tecnica
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Convocar una mesa de expertos técnicos senior — todos con +15 años de experiencia en su área — para discutir decisiones de implementación, patrones de código, elección de stack, performance, y problemas técnicos complejos. Cada experto aporta desde la trinchera: código real, incidentes vividos, y lecciones aprendidas.
|
|
11
|
+
|
|
12
|
+
A diferencia de `/especdev:debate` (tensión adversarial cross-funcional) y `/especdev:mesa-redonda` (exploración producto-negocio), la mesa técnica es **100% ingeniería**: cómo se construye, cómo escala, cómo se mantiene.
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/especdev:mesa-tecnica "<tema>"
|
|
18
|
+
/especdev:mesa-tecnica --roles "Backend,Frontend,Arquitecto" "<tema>"
|
|
19
|
+
/especdev:mesa-tecnica --preset infra "<tema>"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Roles Disponibles
|
|
23
|
+
|
|
24
|
+
### Core (participan por default)
|
|
25
|
+
|
|
26
|
+
| Rol | Perfil | Dominio | Aporta |
|
|
27
|
+
|-----|--------|---------|--------|
|
|
28
|
+
| **Tech Lead** | +15 años liderando equipos técnicos | Decisiones cross-cutting, trade-offs de equipo, priorización técnica | Visión holística, impacto en velocity del equipo, deuda técnica vs entrega, estándares de código |
|
|
29
|
+
| **Arquitecto** | +15 años diseñando sistemas distribuidos | System design, patrones de integración, evolución de arquitectura | Diagramas C4, ADRs, patterns (CQRS, Event Sourcing, Saga), anti-patterns, boundaries |
|
|
30
|
+
| **Sr. Backend** | +15 años en sistemas de alta concurrencia | APIs, bases de datos, colas, caching, concurrencia | Patrones de resiliencia (circuit breaker, retry, bulkhead), optimización de queries, connection pooling, race conditions |
|
|
31
|
+
| **Sr. Frontend** | +15 años en aplicaciones web/mobile complejas | UI frameworks, state management, rendering, bundle optimization | Performance (Core Web Vitals, LCP < 2.5s), SSR vs CSR vs ISR, accesibilidad, design systems, micro-frontends |
|
|
32
|
+
| **Sr. DevOps/SRE** | +15 años en infraestructura y operaciones | CI/CD, containers, observabilidad, incident response | IaC (Terraform/Pulumi), SLOs/SLIs, runbooks, cost optimization, zero-downtime deploys |
|
|
33
|
+
|
|
34
|
+
### Especialistas (invocables con --roles)
|
|
35
|
+
|
|
36
|
+
| Rol | Perfil | Dominio | Aporta |
|
|
37
|
+
|-----|--------|---------|--------|
|
|
38
|
+
| **Sr. DBA** | +15 años en modelado y optimización de datos | SQL/NoSQL, sharding, replicación, migraciones | Explain plans, índices, partitioning, connection limits, backup/recovery, CAP theorem en la práctica |
|
|
39
|
+
| **Sr. Seguridad** | +15 años en AppSec y pentesting | OWASP, threat modeling, criptografía aplicada | Vectores de ataque, auth flows (OAuth2/OIDC), secrets management, supply chain security |
|
|
40
|
+
| **Sr. QA/SDET** | +15 años en testing y calidad de software | Test strategy, automation frameworks, performance testing | Pirámide de tests, contract testing, chaos engineering, load testing (k6, Gatling), flaky tests |
|
|
41
|
+
| **Sr. Mobile** | +15 años en desarrollo nativo y cross-platform | iOS/Android, React Native, Flutter | Offline-first, push notifications, deep linking, app size, battery/memory optimization |
|
|
42
|
+
| **Sr. Data/ML** | +15 años en pipelines de datos e ML en producción | ETL, feature stores, model serving, data quality | Batch vs streaming, data contracts, model drift, A/B testing infrastructure |
|
|
43
|
+
|
|
44
|
+
### Presets
|
|
45
|
+
|
|
46
|
+
| Preset | Roles incluidos | Mejor para |
|
|
47
|
+
|--------|----------------|------------|
|
|
48
|
+
| (default) | Tech Lead, Arquitecto, Sr. Backend, Sr. Frontend, Sr. DevOps | Decisiones de implementación generales |
|
|
49
|
+
| `--preset backend` | Tech Lead, Arquitecto, Sr. Backend, Sr. DBA, Sr. Seguridad | APIs, servicios, bases de datos |
|
|
50
|
+
| `--preset frontend` | Tech Lead, Sr. Frontend, Sr. UX/UI, Sr. QA | UI, performance web, design systems |
|
|
51
|
+
| `--preset infra` | Tech Lead, Arquitecto, Sr. DevOps, Sr. DBA, Sr. Seguridad | Infraestructura, deploys, escalabilidad |
|
|
52
|
+
| `--preset fullstack` | Tech Lead, Arquitecto, Sr. Backend, Sr. Frontend, Sr. DevOps, Sr. DBA | Decisiones end-to-end |
|
|
53
|
+
|
|
54
|
+
## Reglas de Engagement
|
|
55
|
+
|
|
56
|
+
### Regla de Código
|
|
57
|
+
Los expertos DEBEN ilustrar sus puntos con pseudocódigo, snippets, o configuración concreta cuando aplique. No basta con decir "usar caching" — hay que mostrar dónde, cómo, y con qué TTL.
|
|
58
|
+
|
|
59
|
+
### Regla de Incidentes
|
|
60
|
+
Cada experto DEBE respaldar sus argumentos con al menos uno de:
|
|
61
|
+
- **Incidente real**: "En producción con 50K RPM, este patrón causó..." (propio o documentado públicamente)
|
|
62
|
+
- **Benchmark**: dato medido de performance, throughput, o latencia
|
|
63
|
+
- **Post-mortem público**: referencia a un caso conocido de la industria (Cloudflare, GitHub, Stripe, etc.)
|
|
64
|
+
|
|
65
|
+
Argumentos sin respaldo práctico se marcan como `[teórico]`.
|
|
66
|
+
|
|
67
|
+
### Regla de Complejidad
|
|
68
|
+
Antes de proponer una solución, cada experto DEBE evaluar:
|
|
69
|
+
- **Complejidad accidental** que introduce (configuración, dependencias, cognitive load)
|
|
70
|
+
- **Costo operativo** a 6 meses (quién lo mantiene, quién lo debugea a las 3am)
|
|
71
|
+
- **Alternativa más simple** que resuelve el 80% del problema
|
|
72
|
+
|
|
73
|
+
### Regla de Consenso Técnico
|
|
74
|
+
La mesa NO busca unanimidad. Busca:
|
|
75
|
+
1. **Decisión clara** con owner responsable
|
|
76
|
+
2. **Trade-offs explícitos** que todos entienden
|
|
77
|
+
3. **Señales de alerta** (métricas que indican cuándo revisar la decisión)
|
|
78
|
+
4. **Plan B documentado** si la decisión no funciona
|
|
79
|
+
|
|
80
|
+
## Output
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## Mesa Técnica: ¿Redis o Memcached para caching de sesiones?
|
|
84
|
+
|
|
85
|
+
### Tech Lead — Contexto y constraints
|
|
86
|
+
- Equipo de 8 devs, 3 con experiencia en Redis, 0 en Memcached
|
|
87
|
+
- SLA actual: p99 < 500ms, target: p99 < 200ms
|
|
88
|
+
- Budget: no queremos agregar más de $200/mes en infra
|
|
89
|
+
- **Prioridad**: simplicidad operativa > features avanzadas
|
|
90
|
+
- ⚠️ Cualquier solución que requiera expertise que no tenemos es un riesgo de bus factor
|
|
91
|
+
|
|
92
|
+
### Arquitecto — System design
|
|
93
|
+
- Redis como cache + session store simplifica la topología (1 sistema menos)
|
|
94
|
+
- Patrón recomendado: cache-aside con TTL de 15min para sesiones
|
|
95
|
+
- ```
|
|
96
|
+
Client → API Gateway → App Server → Redis (cache-aside)
|
|
97
|
+
↘ PostgreSQL (source of truth)
|
|
98
|
+
```
|
|
99
|
+
- Memcached es stateless y más fácil de escalar horizontalmente, pero perdemos pub/sub que necesitaremos para invalidación de cache distribuida
|
|
100
|
+
- ⚠️ Redis single-threaded: con >100K ops/s considerar Redis Cluster
|
|
101
|
+
|
|
102
|
+
### Sr. Backend — Implementación
|
|
103
|
+
- Redis con connection pooling (max 20 conns por instancia):
|
|
104
|
+
```python
|
|
105
|
+
redis_pool = redis.ConnectionPool(
|
|
106
|
+
host='redis-primary', port=6379,
|
|
107
|
+
max_connections=20, socket_timeout=0.1,
|
|
108
|
+
retry_on_timeout=True
|
|
109
|
+
)
|
|
110
|
+
```
|
|
111
|
+
- Patrón de fallback: si Redis cae, sesiones se recrean desde DB (graceful degradation)
|
|
112
|
+
- Incidente propio: sin socket_timeout, un Redis lento cascadeó y tumbó 3 servicios (2022)
|
|
113
|
+
- ⚠️ Serialización: usar msgpack (3x más rápido que JSON para session payloads de ~2KB)
|
|
114
|
+
|
|
115
|
+
### Sr. Frontend — Impacto en UX
|
|
116
|
+
- Sesiones de 15min TTL implican re-auth frecuente — medir tasa de "session expired" en analytics
|
|
117
|
+
- Si caching reduce p99 de 500ms a 200ms, el LCP mejora ~300ms (medido con RUM, correlación directa)
|
|
118
|
+
- ⚠️ Sliding window en TTL (renovar en cada request) evita UX de "me sacó de la sesión" pero complica invalidación
|
|
119
|
+
|
|
120
|
+
### Sr. DevOps — Operaciones
|
|
121
|
+
- Redis en managed service (ElastiCache/Upstash): ~$50/mes para nuestro volumen
|
|
122
|
+
- Monitoring: redis_connected_clients, redis_memory_used, cache_hit_ratio (target >95%)
|
|
123
|
+
- Runbook: si hit ratio < 80%, investigar TTL o key eviction policy
|
|
124
|
+
- Post-mortem relevante: GitHub degraded performance (2023) por Redis memory fragmentation sin monitoreo
|
|
125
|
+
- ⚠️ Backup: Redis RDB snapshots cada 6h, no confiar en Redis como source of truth
|
|
126
|
+
|
|
127
|
+
### Tensiones técnicas
|
|
128
|
+
1. TTL fijo (Arquitecto: simple) vs sliding window (Frontend: mejor UX) → **Decisión: sliding con cap de 2h**
|
|
129
|
+
2. Managed service (DevOps: menos ops) vs self-hosted (Backend: más control) → **Decisión: managed**
|
|
130
|
+
3. Single node (simple) vs cluster (resiliente) → **Decisión: single node ahora, cluster cuando >50K RPM**
|
|
131
|
+
|
|
132
|
+
### Decisión: Redis managed (ElastiCache) con cache-aside
|
|
133
|
+
- **Owner**: Sr. Backend implementa, Sr. DevOps configura infra y monitoring
|
|
134
|
+
- **Timeline**: 3 días de implementación + 2 días de load testing
|
|
135
|
+
- **Métricas de éxito**: p99 < 200ms, hit ratio > 95%, zero session-related incidents/mes
|
|
136
|
+
|
|
137
|
+
### Señales de alerta (cuándo revisitar)
|
|
138
|
+
- Cache hit ratio < 85% sostenido por 1 semana
|
|
139
|
+
- Redis memory > 70% del allocated
|
|
140
|
+
- Más de 50K RPM sostenido → evaluar cluster
|
|
141
|
+
|
|
142
|
+
### Plan B
|
|
143
|
+
Si Redis introduce más problemas que los que resuelve en los primeros 30 días, rollback a sesiones en PostgreSQL con pgbouncer + prepared statements (ya testeado, p99 ~350ms).
|
|
144
|
+
```
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Planificar y ejecutar migración entre stacks tecnológicos o versiones mayores
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:migrar
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Planificar y ejecutar migraciones de stacks tecnológicos (Vue→React, Express→Fastify) o actualizaciones de versiones mayores (Next.js 14→15, Python 3.9→3.12), minimizando riesgo de regresión.
|
|
11
|
+
|
|
12
|
+
## Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/especdev:migrar --de "Vue 3" --a "React 19"
|
|
16
|
+
/especdev:migrar --de "Express 4" --a "Fastify 5"
|
|
17
|
+
/especdev:migrar --de "Next.js 14" --a "Next.js 15"
|
|
18
|
+
/especdev:migrar --de "Python 3.9" --a "Python 3.12"
|
|
19
|
+
/especdev:migrar --de "REST" --a "GraphQL"
|
|
20
|
+
/especdev:migrar --de "JavaScript" --a "TypeScript"
|
|
21
|
+
/especdev:migrar --solo-plan # Solo generar plan, no ejecutar
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Tipos de Migración
|
|
25
|
+
|
|
26
|
+
| Tipo | Ejemplo | Riesgo | Enfoque |
|
|
27
|
+
|------|---------|--------|---------|
|
|
28
|
+
| **Framework** | Vue→React, Django→FastAPI | Alto | Rewrite incremental |
|
|
29
|
+
| **Versión mayor** | Next 14→15, Angular 17→19 | Medio | Upgrade guiado por changelog |
|
|
30
|
+
| **Lenguaje** | JS→TS, Python 2→3 | Alto | Codemods + revisión manual |
|
|
31
|
+
| **Paradigma** | REST→GraphQL, Monolito→Micro | Muy alto | Strangler Fig pattern |
|
|
32
|
+
| **Base de datos** | MySQL→PostgreSQL, Mongo→PG | Alto | Dual-write + migración |
|
|
33
|
+
|
|
34
|
+
## Proceso (6 fases)
|
|
35
|
+
|
|
36
|
+
### Fase 1: Inventario (automático)
|
|
37
|
+
|
|
38
|
+
Mapear el estado actual del proyecto:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
## Inventario de Migración: Vue 3 → React 19
|
|
42
|
+
|
|
43
|
+
### Stack Actual
|
|
44
|
+
- Framework: Vue 3.4 + Composition API
|
|
45
|
+
- Estado: Pinia 2.1
|
|
46
|
+
- Router: vue-router 4.3
|
|
47
|
+
- UI: Vuetify 3
|
|
48
|
+
- Build: Vite 5
|
|
49
|
+
- Tests: Vitest + Vue Test Utils
|
|
50
|
+
|
|
51
|
+
### Alcance
|
|
52
|
+
- Componentes: 47
|
|
53
|
+
- Stores: 8
|
|
54
|
+
- Rutas: 23
|
|
55
|
+
- Tests: 112
|
|
56
|
+
- LOC: 12,400
|
|
57
|
+
|
|
58
|
+
### Dependencias Vue-Específicas
|
|
59
|
+
| Dependencia | Alternativa React | Complejidad |
|
|
60
|
+
|-------------|-------------------|-------------|
|
|
61
|
+
| Pinia | Zustand / Redux Toolkit | Baja |
|
|
62
|
+
| vue-router | React Router v7 | Media |
|
|
63
|
+
| Vuetify | shadcn/ui + TailwindCSS | Alta |
|
|
64
|
+
| Vue Test Utils | React Testing Library | Media |
|
|
65
|
+
| Composables (12) | Custom hooks | Baja |
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Fase 2: Mapa de Equivalencias
|
|
69
|
+
|
|
70
|
+
Traducir conceptos entre ecosistemas:
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
## Equivalencias Vue → React
|
|
74
|
+
|
|
75
|
+
| Vue | React | Notas |
|
|
76
|
+
|-----|-------|-------|
|
|
77
|
+
| `<template>` | JSX | Diferente sintaxis, misma función |
|
|
78
|
+
| `ref()` / `reactive()` | `useState()` | Reactividad automática vs explícita |
|
|
79
|
+
| `computed()` | `useMemo()` | Semántica similar |
|
|
80
|
+
| `watch()` / `watchEffect()` | `useEffect()` | Cuidado con el array de deps |
|
|
81
|
+
| `onMounted()` | `useEffect(() => {}, [])` | Lifecycle → effects |
|
|
82
|
+
| `provide/inject` | `Context API` | Para estado compartido profundo |
|
|
83
|
+
| `v-if` / `v-for` | `{condition && ...}` / `.map()` | JSX condicional |
|
|
84
|
+
| `v-model` | `value` + `onChange` | Two-way vs one-way binding |
|
|
85
|
+
| Pinia store | Zustand store | API muy similar |
|
|
86
|
+
| `<slot>` | `children` / `render props` | Composición de componentes |
|
|
87
|
+
| Directive (`v-tooltip`) | HOC o hook | Sin equivalente directo |
|
|
88
|
+
| `<Transition>` | `framer-motion` | Animaciones |
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Fase 3: Estrategia de Migración
|
|
92
|
+
|
|
93
|
+
Elegir enfoque según riesgo:
|
|
94
|
+
|
|
95
|
+
#### Opción A: Big Bang (riesgo alto, rápido)
|
|
96
|
+
```
|
|
97
|
+
Reescribir todo de una vez.
|
|
98
|
+
✅ Para: proyectos pequeños (< 20 componentes)
|
|
99
|
+
❌ No para: proyectos en producción con usuarios activos
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Opción B: Strangler Fig (riesgo bajo, gradual) ← Recomendado
|
|
103
|
+
```
|
|
104
|
+
Migrar componente por componente, coexistiendo ambos frameworks.
|
|
105
|
+
|
|
106
|
+
Fase 1: Setup React junto a Vue (micro-frontend o iframe)
|
|
107
|
+
Fase 2: Migrar componentes leaf (sin hijos Vue)
|
|
108
|
+
Fase 3: Migrar componentes intermedios
|
|
109
|
+
Fase 4: Migrar componentes root
|
|
110
|
+
Fase 5: Remover Vue
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### Opción C: Parallel Run (riesgo medio)
|
|
114
|
+
```
|
|
115
|
+
Construir la versión React en paralelo, switchear cuando esté lista.
|
|
116
|
+
✅ Para: aplicaciones críticas que no pueden tener downtime
|
|
117
|
+
❌ Costoso en tiempo (mantener dos codebases)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Fase 4: Plan de Migración
|
|
121
|
+
|
|
122
|
+
Genera `.especdev/migracion/plan-migracion.md`:
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
## Plan de Migración: Vue → React
|
|
126
|
+
|
|
127
|
+
### Orden de Migración (por dependencias)
|
|
128
|
+
|
|
129
|
+
#### Wave 1: Infraestructura (sin UI)
|
|
130
|
+
- [ ] M001: Setup React + Vite + TypeScript
|
|
131
|
+
- [ ] M002: Configurar React Router (mapear rutas existentes)
|
|
132
|
+
- [ ] M003: Configurar Zustand (mapear stores Pinia)
|
|
133
|
+
- [ ] M004: Setup React Testing Library
|
|
134
|
+
|
|
135
|
+
#### Wave 2: Componentes Atómicos (sin dependencias internas)
|
|
136
|
+
- [ ] M005: Migrar Button, Input, Modal (Vuetify → shadcn/ui)
|
|
137
|
+
- [ ] M006: Migrar layout components (Header, Sidebar, Footer)
|
|
138
|
+
- [ ] M007: Tests para componentes migrados
|
|
139
|
+
|
|
140
|
+
#### Wave 3: Componentes con Estado
|
|
141
|
+
- [ ] M008: Migrar stores Pinia → Zustand (uno por uno)
|
|
142
|
+
- [ ] M009: Migrar composables → custom hooks
|
|
143
|
+
- [ ] M010: Migrar formularios con validación
|
|
144
|
+
|
|
145
|
+
#### Wave 4: Páginas y Rutas
|
|
146
|
+
- [ ] M011: Migrar páginas leaf (sin sub-rutas)
|
|
147
|
+
- [ ] M012: Migrar páginas con sub-rutas
|
|
148
|
+
- [ ] M013: Migrar guards de ruta → loader/middleware
|
|
149
|
+
|
|
150
|
+
#### Wave 5: Cleanup
|
|
151
|
+
- [ ] M014: Remover dependencias Vue
|
|
152
|
+
- [ ] M015: Actualizar CI/CD
|
|
153
|
+
- [ ] M016: Actualizar documentación
|
|
154
|
+
|
|
155
|
+
### Tests de Regresión por Wave
|
|
156
|
+
Cada wave ejecuta:
|
|
157
|
+
1. Tests unitarios de componentes migrados
|
|
158
|
+
2. Tests de integración de rutas migradas
|
|
159
|
+
3. Tests end-to-end del flujo completo
|
|
160
|
+
4. Comparación visual (screenshot diff) si aplica
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Fase 5: Ejecución
|
|
164
|
+
|
|
165
|
+
Cada tarea de migración sigue el ciclo:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
1. Leer componente/módulo Vue
|
|
169
|
+
2. Mapear a equivalencia React
|
|
170
|
+
3. Escribir test React (RED)
|
|
171
|
+
4. Implementar componente React (GREEN)
|
|
172
|
+
5. Verificar paridad funcional
|
|
173
|
+
6. Commit atómico: "migrate: ComponentName Vue→React"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Fase 6: Verificación Post-Migración
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
## Checklist Post-Migración
|
|
180
|
+
|
|
181
|
+
### Funcionalidad
|
|
182
|
+
- [ ] Todas las rutas funcionan
|
|
183
|
+
- [ ] Formularios envían datos correctamente
|
|
184
|
+
- [ ] Estado se persiste entre navegaciones
|
|
185
|
+
- [ ] Auth flow completo funciona
|
|
186
|
+
|
|
187
|
+
### Rendimiento
|
|
188
|
+
- [ ] Bundle size ≤ original (o justificar)
|
|
189
|
+
- [ ] LCP ≤ original
|
|
190
|
+
- [ ] No memory leaks en SPA navigation
|
|
191
|
+
|
|
192
|
+
### Calidad
|
|
193
|
+
- [ ] Coverage de tests ≥ original
|
|
194
|
+
- [ ] 0 dependencias Vue restantes
|
|
195
|
+
- [ ] Sin TODOs de migración pendientes
|
|
196
|
+
- [ ] CI/CD actualizado y pasando
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Formato de Commits de Migración
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
migrate: <componente/módulo> <origen>→<destino>
|
|
203
|
+
migrate: Button component Vue→React
|
|
204
|
+
migrate: auth store Pinia→Zustand
|
|
205
|
+
migrate: /dashboard route vue-router→react-router
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Almacenamiento
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
.especdev/migracion/
|
|
212
|
+
├── inventario.md # Estado actual del proyecto
|
|
213
|
+
├── equivalencias.md # Mapa de traducciones
|
|
214
|
+
├── plan-migracion.md # Plan con waves y tareas
|
|
215
|
+
├── progreso-migracion.md # Tracking de avance
|
|
216
|
+
└── post-migracion.md # Checklist de verificación
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Integración con Pipeline
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
/especdev:migrar → inventario + equivalencias + plan
|
|
223
|
+
→ /especdev:poc (opcional) → validar enfoque en módulo piloto
|
|
224
|
+
→ /especdev:implementar → ejecutar por waves
|
|
225
|
+
→ /especdev:auditar-seguridad → verificar que migración no introduce vulnerabilidades
|
|
226
|
+
→ /especdev:revisar → review final
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Guardrails
|
|
230
|
+
|
|
231
|
+
- **Nunca** migrar sin tests de regresión del sistema original
|
|
232
|
+
- **Nunca** migrar todo de una vez en proyectos en producción (usar Strangler Fig)
|
|
233
|
+
- **Siempre** mantener paridad funcional (no agregar features durante migración)
|
|
234
|
+
- **Siempre** commit atómico por componente/módulo migrado
|
|
235
|
+
- **Siempre** verificar rendimiento post-migración (bundle size, LCP)
|
|
236
|
+
- **Siempre** ejecutar tests e2e del flujo completo después de cada wave
|
|
237
|
+
- Si la migración afecta > 30% del codebase → confirmar con usuario antes de cada wave
|