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,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
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Buscar repos open-source relevantes como referencia antes de implementar
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:minar-referencias
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Buscar y evaluar repositorios open-source, snippets y patrones de referencia relevantes para la tarea actual. Reduce el "empezar de cero" proporcionando implementaciones probadas como guía.
|
|
11
|
+
|
|
12
|
+
> Adaptado de DeepCode (HKUDS/DeepCode) — Code Reference Mining Agent: "descubrir repositorios relevantes y construir knowledge graphs para informar la generación de código."
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/especdev:minar-referencias "webhook handler con verificación de firma"
|
|
18
|
+
/especdev:minar-referencias "rate limiter con sliding window"
|
|
19
|
+
/especdev:minar-referencias --stack node,typescript "auth con JWT refresh"
|
|
20
|
+
/especdev:minar-referencias --max 5 "graphql subscriptions"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Por Qué Existe
|
|
24
|
+
|
|
25
|
+
| Sin Minar | Con Minar |
|
|
26
|
+
|-----------|-----------|
|
|
27
|
+
| Implementar desde cero | Partir de patrones probados |
|
|
28
|
+
| Descubrir anti-patrones tarde | Conocer pitfalls de antemano |
|
|
29
|
+
| Reinventar soluciones comunes | Reutilizar lo que funciona |
|
|
30
|
+
| Estimaciones imprecisas | Complejidad real visible |
|
|
31
|
+
|
|
32
|
+
## Comportamiento
|
|
33
|
+
|
|
34
|
+
### Paso 1: Análisis de la Query
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Query: "webhook handler con verificación de firma"
|
|
38
|
+
├── Conceptos clave: webhook, handler, signature verification
|
|
39
|
+
├── Stack detectado: Node.js + TypeScript (de config.yaml)
|
|
40
|
+
├── Dominio: API integration, security
|
|
41
|
+
└── Complejidad estimada: Media
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Paso 2: Búsqueda Multi-Fuente
|
|
45
|
+
|
|
46
|
+
El comando busca en múltiples fuentes (según disponibilidad):
|
|
47
|
+
|
|
48
|
+
| Fuente | Método | Qué Busca |
|
|
49
|
+
|--------|--------|-----------|
|
|
50
|
+
| **GitHub** | API search / web search | Repos con implementaciones similares |
|
|
51
|
+
| **Proyecto actual** | Grep local | Código existente reutilizable |
|
|
52
|
+
| **CodeRAG** | Índice local | Patrones ya indexados |
|
|
53
|
+
| **Memoria** | Engram | Decisiones previas sobre el tema |
|
|
54
|
+
|
|
55
|
+
### Paso 3: Evaluación de Relevancia
|
|
56
|
+
|
|
57
|
+
Cada resultado se evalúa en 4 dimensiones:
|
|
58
|
+
|
|
59
|
+
| Dimensión | Peso | Criterio |
|
|
60
|
+
|-----------|------|----------|
|
|
61
|
+
| **Relevancia** | 40% | ¿Resuelve el mismo problema? |
|
|
62
|
+
| **Calidad** | 25% | Stars, mantenimiento, tests, docs |
|
|
63
|
+
| **Compatibilidad** | 20% | ¿Mismo stack/framework? |
|
|
64
|
+
| **Simplicidad** | 15% | ¿Es adoptable sin refactor mayor? |
|
|
65
|
+
|
|
66
|
+
Score = suma ponderada (0.0 - 1.0)
|
|
67
|
+
|
|
68
|
+
### Paso 4: Extracción de Patrones
|
|
69
|
+
|
|
70
|
+
De los top resultados, se extraen:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
1. Patrón arquitectónico usado
|
|
74
|
+
2. Dependencias clave
|
|
75
|
+
3. Manejo de errores
|
|
76
|
+
4. Edge cases cubiertos
|
|
77
|
+
5. Snippet representativo (≤ 30 líneas)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Output
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## Referencias Minadas: "webhook handler con verificación de firma"
|
|
84
|
+
|
|
85
|
+
Fecha: 2026-03-21 | Stack: Node.js + TypeScript | Resultados: 3
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 1. stripe/stripe-node — Webhook Verification (score: 0.91)
|
|
90
|
+
**Repo:** github.com/stripe/stripe-node
|
|
91
|
+
**Archivo:** src/Webhooks.ts
|
|
92
|
+
**Por qué es relevante:** Implementación de referencia de Stripe para verificar firmas HMAC-SHA256.
|
|
93
|
+
|
|
94
|
+
**Patrón:**
|
|
95
|
+
- Verificar firma antes de procesar
|
|
96
|
+
- Tolerancia de timestamp (5 min por defecto)
|
|
97
|
+
- Comparación timing-safe para prevenir timing attacks
|
|
98
|
+
|
|
99
|
+
**Snippet:**
|
|
100
|
+
```typescript
|
|
101
|
+
function verifySignature(payload: string, header: string, secret: string): boolean {
|
|
102
|
+
const timestamp = extractTimestamp(header);
|
|
103
|
+
const signature = extractSignature(header);
|
|
104
|
+
|
|
105
|
+
if (Date.now() / 1000 - timestamp > TOLERANCE) {
|
|
106
|
+
throw new WebhookSignatureError('Timestamp too old');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const expected = crypto
|
|
110
|
+
.createHmac('sha256', secret)
|
|
111
|
+
.update(`${timestamp}.${payload}`)
|
|
112
|
+
.digest('hex');
|
|
113
|
+
|
|
114
|
+
return crypto.timingSafeEqual(
|
|
115
|
+
Buffer.from(signature),
|
|
116
|
+
Buffer.from(expected)
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Lecciones:**
|
|
122
|
+
- Usar `timingSafeEqual` (no `===`) para comparar firmas
|
|
123
|
+
- Validar timestamp para prevenir replay attacks
|
|
124
|
+
- Lanzar error específico (no genérico)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### 2. svix/svix-webhooks — Webhook Handler Pattern (score: 0.84)
|
|
129
|
+
**Repo:** github.com/svix/svix-webhooks
|
|
130
|
+
**Por qué es relevante:** SDK de webhooks con patrón de handler idempotente.
|
|
131
|
+
|
|
132
|
+
**Patrón:**
|
|
133
|
+
- Idempotency key en header
|
|
134
|
+
- Queue para procesamiento async
|
|
135
|
+
- Retry automático con backoff
|
|
136
|
+
|
|
137
|
+
**Lecciones:**
|
|
138
|
+
- Separar verificación de procesamiento
|
|
139
|
+
- Idempotencia es obligatoria para webhooks
|
|
140
|
+
- Responder 200 antes de procesar (async)
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
### 3. [Proyecto actual] src/utils/crypto.ts (score: 0.72)
|
|
145
|
+
**Archivo:** src/utils/crypto.ts:15-30
|
|
146
|
+
**Por qué es relevante:** Ya existe un helper de HMAC en el proyecto.
|
|
147
|
+
|
|
148
|
+
**Nota:** Reutilizar `createHmacSignature()` existente en vez de reimplementar.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Resumen de Decisiones
|
|
153
|
+
|
|
154
|
+
| Decisión | Recomendación | Fuente |
|
|
155
|
+
|----------|--------------|--------|
|
|
156
|
+
| Verificación de firma | HMAC-SHA256 + timestamp | stripe/stripe-node |
|
|
157
|
+
| Comparación de firma | `timingSafeEqual` | stripe/stripe-node |
|
|
158
|
+
| Procesamiento | Async (queue) + responder 200 | svix/svix-webhooks |
|
|
159
|
+
| Helper de HMAC | Reutilizar existente | Proyecto actual |
|
|
160
|
+
| Idempotencia | Idempotency key en header | svix/svix-webhooks |
|
|
161
|
+
|
|
162
|
+
## Próximo Paso
|
|
163
|
+
→ `/especdev:especificar` usando estas referencias como base
|
|
164
|
+
→ O `/especdev:planificar-tecnico` para incorporar los patrones al blueprint
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Integración con Pipeline
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
/especdev:minar-referencias → referencias
|
|
171
|
+
→ /especdev:especificar → specs informadas
|
|
172
|
+
→ /especdev:planificar-tecnico → plan con patrones reales
|
|
173
|
+
→ CodeRAG → indexar patrones útiles para futuro
|
|
174
|
+
|
|
175
|
+
/especdev:minar-referencias → referencias
|
|
176
|
+
→ /especdev:estimar → estimados más precisos (complejidad real)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Integración con CodeRAG
|
|
180
|
+
|
|
181
|
+
Los patrones encontrados se pueden indexar automáticamente:
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
¿Indexar los patrones encontrados en CodeRAG? (s/n)
|
|
185
|
+
> s
|
|
186
|
+
Indexados 3 patrones en .especdev/code-rag/patterns.json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Almacenamiento
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
.especdev/referencias/
|
|
193
|
+
├── webhook-handler-2026-03-21.md # Resultado de esta búsqueda
|
|
194
|
+
├── rate-limiter-2026-03-15.md # Búsqueda anterior
|
|
195
|
+
└── _index.md # Índice de búsquedas
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Modelo Recomendado
|
|
199
|
+
|
|
200
|
+
| Paso | Modelo | Razón |
|
|
201
|
+
|------|--------|-------|
|
|
202
|
+
| Búsqueda | Haiku | Solo buscar y filtrar |
|
|
203
|
+
| Evaluación de relevancia | Haiku | Scoring simple |
|
|
204
|
+
| Extracción de patrones | Sonnet | Requiere comprensión de código |
|
|
205
|
+
| Resumen de decisiones | Haiku | Formateo |
|
|
206
|
+
|
|
207
|
+
## Guardrails
|
|
208
|
+
|
|
209
|
+
- **Nunca** copiar código con licencias incompatibles sin verificar
|
|
210
|
+
- **Nunca** incluir credenciales o tokens de repos de referencia
|
|
211
|
+
- **Siempre** priorizar código existente en el proyecto sobre externo
|
|
212
|
+
- **Siempre** indicar la fuente y licencia de cada referencia
|
|
213
|
+
- **Siempre** limitar snippets a ≤30 líneas (respetar fair use)
|
|
214
|
+
- **Máximo** 5 referencias por búsqueda (evitar analysis paralysis)
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generar blueprint técnico desde una especificación Gherkin
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:planificar-tecnico
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Generar un blueprint técnico (contratos API, modelos, arquitectura de servicios) desde una especificación Gherkin, incluyendo verificación de constitución y contexto técnico estructurado.
|
|
11
|
+
|
|
12
|
+
> Alineado con spec-kit (github/spec-kit) — Constitution Check, Technical Context y Complexity Tracking
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/especdev:planificar-tecnico @specs/features/<dominio>/<Feature>.feature
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Comportamiento
|
|
21
|
+
|
|
22
|
+
1. **Verificar Puerta 2** — El `.feature` debe tener tag `@lista` (pasó `/especdev:clarificar`)
|
|
23
|
+
2. **Verificar** que no hay marcadores `[NECESITA CLARIFICACIÓN]` pendientes
|
|
24
|
+
3. **Ejecutar Chequeo de Constitución** — Validar contra los principios de `reglas/constitucion.md`
|
|
25
|
+
4. **Documentar Contexto Técnico** — Stack, dependencias, restricciones
|
|
26
|
+
5. **Ratificar DBML** — Convertir campos `@provisional` a ratificados
|
|
27
|
+
6. **Generar** contratos API, modelos, arquitectura de servicios
|
|
28
|
+
7. **Registrar Complejidad** — Justificar desviaciones de simplicidad
|
|
29
|
+
8. **Crear** archivo `.plan.md` en `specs/features/<dominio>/`
|
|
30
|
+
|
|
31
|
+
## Output
|
|
32
|
+
|
|
33
|
+
Genera `specs/features/<dominio>/<Feature>.plan.md`:
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
# Blueprint Técnico: CrearUsuario
|
|
37
|
+
|
|
38
|
+
**Rama:** feature/crear-usuario
|
|
39
|
+
**Spec:** specs/features/usuario/CrearUsuario.feature
|
|
40
|
+
**Fecha:** 2026-03-21
|
|
41
|
+
**Estado:** Borrador
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Resumen
|
|
46
|
+
|
|
47
|
+
Implementar registro de usuarios con email/contraseña, incluyendo
|
|
48
|
+
validación, hashing de contraseña y generación de JWT.
|
|
49
|
+
Enfoque técnico: API REST con patrón Controller → Service → Repository.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Chequeo de Constitución
|
|
54
|
+
|
|
55
|
+
Verificación obligatoria contra `reglas/constitucion.md`:
|
|
56
|
+
|
|
57
|
+
| Artículo | Principio | Estado | Notas |
|
|
58
|
+
|----------|-----------|--------|-------|
|
|
59
|
+
| I | Gherkin es Rey | ✅ | Spec @lista aprobada |
|
|
60
|
+
| I-B | Schema como Verdad Viva | ✅ | DBML ratificado |
|
|
61
|
+
| II | Precisión Quirúrgica | ✅ | Cambio mínimo, 1 feature |
|
|
62
|
+
| III | Arquitectura Plug-and-Play | ✅ | Nuevo módulo, no infla existentes |
|
|
63
|
+
| IV | Regla Las Vegas | ✅ | Tests herméticos planificados |
|
|
64
|
+
| IV-B | Punto de Entrada | ✅ | Validación en Controller |
|
|
65
|
+
| V | Estándares Modernos | ✅ | Type hints + Pydantic/Zod |
|
|
66
|
+
| VI | Adaptabilidad | ✅ | Stack detectado: FastAPI |
|
|
67
|
+
| VII | Codificación Defensiva | ✅ | Excepciones custom planificadas |
|
|
68
|
+
|
|
69
|
+
**Resultado: ✅ PASA** — El plan es compatible con la constitución.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Contexto Técnico
|
|
74
|
+
|
|
75
|
+
| Aspecto | Valor |
|
|
76
|
+
|---------|-------|
|
|
77
|
+
| **Lenguaje** | Python 3.12 / TypeScript 5.x |
|
|
78
|
+
| **Framework** | FastAPI 0.115 / Next.js 15 |
|
|
79
|
+
| **Dependencias** | bcryptjs, python-jose, pydantic |
|
|
80
|
+
| **Almacenamiento** | PostgreSQL 16 + Prisma/SQLAlchemy |
|
|
81
|
+
| **Testing** | pytest + pytest-asyncio / vitest |
|
|
82
|
+
| **Plataforma** | Docker + Linux |
|
|
83
|
+
| **Rendimiento** | < 500ms p95 (de criterios de éxito) |
|
|
84
|
+
| **Escala** | ~1,000 registros/día (estimado) |
|
|
85
|
+
| **Restricciones** | Sin OAuth en v1 (definido en clarificación) |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Contrato API
|
|
90
|
+
|
|
91
|
+
POST /api/v1/usuarios
|
|
92
|
+
Content-Type: application/json
|
|
93
|
+
|
|
94
|
+
Request:
|
|
95
|
+
{
|
|
96
|
+
"email": "string (required, email format)",
|
|
97
|
+
"password": "string (required, min 8 chars)",
|
|
98
|
+
"nombre": "string (required, max 100 chars)"
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
Response 201:
|
|
102
|
+
{
|
|
103
|
+
"id": "uuid",
|
|
104
|
+
"email": "string",
|
|
105
|
+
"nombre": "string",
|
|
106
|
+
"token": "jwt-string",
|
|
107
|
+
"createdAt": "datetime"
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
Response 400:
|
|
111
|
+
{
|
|
112
|
+
"error": "string",
|
|
113
|
+
"field": "string (optional)"
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
Response 409:
|
|
117
|
+
{
|
|
118
|
+
"error": "El email ya está registrado"
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Modelo de Datos
|
|
124
|
+
|
|
125
|
+
Usuario (ratificado desde DBML):
|
|
126
|
+
- id: UUID (PK, auto-gen)
|
|
127
|
+
- email: String (unique, indexed, NOT NULL)
|
|
128
|
+
- password_hash: String (NOT NULL)
|
|
129
|
+
- nombre: String (max 100, NOT NULL)
|
|
130
|
+
- created_at: DateTime (default: now())
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Arquitectura de Servicios
|
|
135
|
+
|
|
136
|
+
Controller → Service → Repository → Database
|
|
137
|
+
↓
|
|
138
|
+
EmailService (async)
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Dependencias
|
|
143
|
+
|
|
144
|
+
- bcryptjs (hash de contraseña)
|
|
145
|
+
- python-jose / jsonwebtoken (generación JWT)
|
|
146
|
+
- pydantic / zod (validación de DTOs)
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Tracking de Complejidad
|
|
151
|
+
|
|
152
|
+
Justificar cualquier decisión que añade complejidad por encima de la alternativa más simple:
|
|
153
|
+
|
|
154
|
+
| Decisión | Alternativa Simple | Por Qué Se Rechazó |
|
|
155
|
+
|----------|--------------------|---------------------|
|
|
156
|
+
| JWT con refresh token | Solo JWT simple | Requerimiento de seguridad: tokens de corta duración |
|
|
157
|
+
| Email async con cola | Email síncrono | Bloquea respuesta al usuario, riesgo de timeout |
|
|
158
|
+
| Repository pattern | Queries directas | Testabilidad: inyección de dependencias para mocks |
|
|
159
|
+
|
|
160
|
+
Si la tabla está vacía, no hay desviaciones de simplicidad.
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Secciones Obligatorias del Plan
|
|
164
|
+
|
|
165
|
+
| Sección | Propósito | Falla si falta |
|
|
166
|
+
|---------|-----------|----------------|
|
|
167
|
+
| **Resumen** | Qué y cómo en 2-3 líneas | Sí |
|
|
168
|
+
| **Chequeo de Constitución** | Validar contra principios | Sí |
|
|
169
|
+
| **Contexto Técnico** | Stack y restricciones | Sí |
|
|
170
|
+
| **Contrato API** | Interfaces públicas | Sí (si hay API) |
|
|
171
|
+
| **Modelo de Datos** | Entidades y relaciones | Sí (si hay datos) |
|
|
172
|
+
| **Arquitectura** | Componentes y flujo | Sí |
|
|
173
|
+
| **Dependencias** | Librerías externas | Sí |
|
|
174
|
+
| **Tracking de Complejidad** | Justificar desviaciones | Sí (puede estar vacía) |
|
|
175
|
+
|
|
176
|
+
## Puerta de Calidad
|
|
177
|
+
|
|
178
|
+
Este comando implementa la **Puerta 4 (Aprobación de Plan)**:
|
|
179
|
+
|
|
180
|
+
- Chequeo de constitución pasa (todos ✅)
|
|
181
|
+
- Sin `[NECESITA CLARIFICACIÓN]` pendiente
|
|
182
|
+
- Contexto técnico completo
|
|
183
|
+
- DBML ratificado (sin campos `@provisional`)
|
|
184
|
+
- Tracking de complejidad documentado
|
|
185
|
+
|
|
186
|
+
Si algún artículo de la constitución no pasa → **NO-AVANZAR** hasta resolver.
|