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,152 @@
|
|
|
1
|
+
# ISA — Arquitectura de Conjunto de Instrucciones para BDD
|
|
2
|
+
|
|
3
|
+
# Mapea tipos de pasos Gherkin a patrones de código de test.
|
|
4
|
+
# Adaptado de Specular (pei9564/Specular) y traducido al español.
|
|
5
|
+
#
|
|
6
|
+
# Este archivo define la "arquitectura de instrucciones" que conecta
|
|
7
|
+
# cada tipo de paso Gherkin con su implementación en tests.
|
|
8
|
+
#
|
|
9
|
+
# CÓMO MEJORA EL FRAMEWORK:
|
|
10
|
+
# Sin ISA, el agente inventa patrones de test diferentes cada vez.
|
|
11
|
+
# Con ISA, la generación de tests es CONSISTENTE y PREDECIBLE.
|
|
12
|
+
# Cada escenario Gherkin mapea a un patrón de test bien definido.
|
|
13
|
+
|
|
14
|
+
# ============================================================
|
|
15
|
+
# Compartido: Contrato de conftest.py para TODOS los tipos
|
|
16
|
+
# ============================================================
|
|
17
|
+
compartido:
|
|
18
|
+
contexto_fixture:
|
|
19
|
+
descripcion: |
|
|
20
|
+
Diccionario mutable, portador de estado para Dado → Cuando → Entonces.
|
|
21
|
+
Proporcionado por tests/integracion/conftest.py como fixture de pytest.
|
|
22
|
+
claves:
|
|
23
|
+
- "contexto['datos_base_*'] ← Pasos Dado (datos mock de tablas Gherkin)"
|
|
24
|
+
- "contexto['resultado'] ← Paso Cuando (valor de retorno o excepción capturada)"
|
|
25
|
+
- "contexto['payload'] ← (tipos API) Pasos Cuando acumulan de tablas de datos"
|
|
26
|
+
- "contexto['respuesta'] ← (tipos API) asegurar_llamado() cachea la respuesta"
|
|
27
|
+
- "contexto['config'] ← (tipos Servicio) Pasos Dado configuran objeto de config"
|
|
28
|
+
|
|
29
|
+
helpers:
|
|
30
|
+
- nombre: "tabla_a_dicts"
|
|
31
|
+
ubicacion: "tests/integracion/conftest.py"
|
|
32
|
+
firma: "tabla_a_dicts(datatable: list[list[str]]) -> list[dict]"
|
|
33
|
+
descripcion: "Convierte datatable de pytest-bdd a list[dict]. NUNCA parsear datatables manualmente."
|
|
34
|
+
|
|
35
|
+
reglas_limite:
|
|
36
|
+
conftest_posee:
|
|
37
|
+
- "fixture contexto (dict[str, Any])"
|
|
38
|
+
- "helper tabla_a_dicts()"
|
|
39
|
+
- "fixtures app / client (solo tipos API)"
|
|
40
|
+
- "Pasos Dado comunes: entidades de fondo, middleware de auth"
|
|
41
|
+
archivo_feature_posee:
|
|
42
|
+
- "decoradores @scenario() (1:1 desde Gherkin)"
|
|
43
|
+
- "Pasos Dado específicos del feature"
|
|
44
|
+
- "Pasos Cuando específicos del feature"
|
|
45
|
+
- "Pasos Entonces específicos del feature"
|
|
46
|
+
prevencion_colision:
|
|
47
|
+
- "Nombres de función DEBEN incluir contexto de dominio o feature"
|
|
48
|
+
- "MAL: cuando_crear_recurso, entonces_fallo"
|
|
49
|
+
- "BIEN: cuando_ejecutar_creacion_usuario, entonces_creacion_usuario_deberia_fallar"
|
|
50
|
+
|
|
51
|
+
# ============================================================
|
|
52
|
+
# Tipo API: Flujo HTTP client
|
|
53
|
+
# ============================================================
|
|
54
|
+
api:
|
|
55
|
+
flujo_contexto:
|
|
56
|
+
cuando_acumula: "contexto['payload']"
|
|
57
|
+
disparador_almacena: "contexto['respuesta']"
|
|
58
|
+
funcion_disparador: "asegurar_llamado(contexto, client, {{ mock_repo }})"
|
|
59
|
+
|
|
60
|
+
definiciones:
|
|
61
|
+
# --- CONFIGURACION_MOCK (Dado) ---
|
|
62
|
+
- patron: "el sistema tiene los siguientes {tipo_entidad}:"
|
|
63
|
+
tipo: "CONFIGURACION_MOCK"
|
|
64
|
+
contexto: "Dado"
|
|
65
|
+
notas: "Parsear tabla de datos en contexto para configuración de mock."
|
|
66
|
+
|
|
67
|
+
# --- LLAMADA_API (Cuando) ---
|
|
68
|
+
- patron: "el usuario crea {recurso}:"
|
|
69
|
+
tipo: "LLAMADA_API"
|
|
70
|
+
contexto: "Cuando"
|
|
71
|
+
notas: "Parsear tabla field/value en contexto['payload']."
|
|
72
|
+
|
|
73
|
+
# --- DISPARADOR_API ---
|
|
74
|
+
- patron: "(interno — llamado por pasos Entonces)"
|
|
75
|
+
tipo: "DISPARADOR_API"
|
|
76
|
+
contexto: "Entonces (interno)"
|
|
77
|
+
notas: |
|
|
78
|
+
asegurar_llamado() configura mocks, dispara el request HTTP,
|
|
79
|
+
y cachea la respuesta. Idempotente: dispara solo una vez por escenario.
|
|
80
|
+
|
|
81
|
+
# --- ASERCION_API (Entonces) ---
|
|
82
|
+
- patron: "el {recurso} debería crearse exitosamente"
|
|
83
|
+
tipo: "ASERCION_API"
|
|
84
|
+
contexto: "Entonces"
|
|
85
|
+
notas: "Verificar status 201 y campos del body."
|
|
86
|
+
|
|
87
|
+
- patron: "la creación debería fallar"
|
|
88
|
+
tipo: "ASERCION_API"
|
|
89
|
+
contexto: "Entonces"
|
|
90
|
+
notas: "Verificar status >= 400."
|
|
91
|
+
|
|
92
|
+
- patron: "el mensaje de error debería indicar \"{texto}\""
|
|
93
|
+
tipo: "ASERCION_API"
|
|
94
|
+
contexto: "Entonces"
|
|
95
|
+
notas: "Verificar que el mensaje de error contiene el texto."
|
|
96
|
+
|
|
97
|
+
# --- ASERCION_BD (Entonces) ---
|
|
98
|
+
- patron: "la tabla {tabla} debería contener:"
|
|
99
|
+
tipo: "ASERCION_BD"
|
|
100
|
+
contexto: "Entonces"
|
|
101
|
+
notas: "Verificar campos de respuesta contra tabla de datos."
|
|
102
|
+
|
|
103
|
+
# ============================================================
|
|
104
|
+
# Tipo Servicio: Llamada directa al servicio
|
|
105
|
+
# ============================================================
|
|
106
|
+
servicio:
|
|
107
|
+
flujo_contexto:
|
|
108
|
+
dado_acumula: "contexto['config']"
|
|
109
|
+
cuando_almacena: "contexto['resultado']"
|
|
110
|
+
descripcion: |
|
|
111
|
+
Sin HTTP client involucrado. Los pasos Cuando llaman al método del servicio directamente.
|
|
112
|
+
contexto["resultado"] almacena el valor de retorno o la excepción capturada.
|
|
113
|
+
|
|
114
|
+
definiciones:
|
|
115
|
+
# --- CONFIGURACION (Dado) ---
|
|
116
|
+
- patron: "el sistema está configurado con:"
|
|
117
|
+
tipo: "CONFIGURACION"
|
|
118
|
+
contexto: "Dado"
|
|
119
|
+
notas: "Parsear tabla de configuración en contexto['config']."
|
|
120
|
+
|
|
121
|
+
# --- LLAMADA_SERVICIO (Cuando) ---
|
|
122
|
+
- patron: "el sistema ejecuta {operacion}"
|
|
123
|
+
tipo: "LLAMADA_SERVICIO"
|
|
124
|
+
contexto: "Cuando"
|
|
125
|
+
notas: "Invocar método del servicio directamente. Capturar excepciones."
|
|
126
|
+
|
|
127
|
+
# --- ASERCION_SERVICIO (Entonces) ---
|
|
128
|
+
- patron: "la operación debería completarse exitosamente"
|
|
129
|
+
tipo: "ASERCION_SERVICIO"
|
|
130
|
+
contexto: "Entonces"
|
|
131
|
+
notas: "Verificar que resultado no es excepción."
|
|
132
|
+
|
|
133
|
+
- patron: "el resultado debería contener:"
|
|
134
|
+
tipo: "ASERCION_SERVICIO"
|
|
135
|
+
contexto: "Entonces"
|
|
136
|
+
notas: "Verificar campos del resultado contra tabla de datos."
|
|
137
|
+
|
|
138
|
+
# --- ASERCION_EXCEPCION (Entonces) ---
|
|
139
|
+
- patron: "la operación debería fallar"
|
|
140
|
+
tipo: "ASERCION_EXCEPCION"
|
|
141
|
+
contexto: "Entonces"
|
|
142
|
+
notas: "Verificar que resultado es una excepción."
|
|
143
|
+
|
|
144
|
+
- patron: "el tipo de error debería ser \"{tipo_excepcion}\""
|
|
145
|
+
tipo: "ASERCION_EXCEPCION"
|
|
146
|
+
contexto: "Entonces"
|
|
147
|
+
notas: "Verificar nombre de clase de excepción."
|
|
148
|
+
|
|
149
|
+
- patron: "el mensaje de error debería contener \"{texto}\""
|
|
150
|
+
tipo: "ASERCION_EXCEPCION"
|
|
151
|
+
contexto: "Entonces"
|
|
152
|
+
notas: "Verificar que el mensaje de excepción contiene el texto."
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Plan del Proyecto
|
|
2
|
+
|
|
3
|
+
## Fase 1: Descubrimiento
|
|
4
|
+
- [ ] Validar el problema
|
|
5
|
+
- [ ] Investigar soluciones existentes
|
|
6
|
+
- [ ] Documentar hallazgos
|
|
7
|
+
|
|
8
|
+
## Fase 2: Estrategia
|
|
9
|
+
- [ ] Definir hoja de ruta
|
|
10
|
+
- [ ] Establecer hitos
|
|
11
|
+
- [ ] Tomar decisiones clave
|
|
12
|
+
|
|
13
|
+
## Fase 3: Diseño
|
|
14
|
+
- [ ] Arquitectura del sistema
|
|
15
|
+
- [ ] Diseño de UX/UI
|
|
16
|
+
- [ ] Especificaciones técnicas
|
|
17
|
+
|
|
18
|
+
## Fase 4: Desarrollo
|
|
19
|
+
- [ ] Implementar con TDD
|
|
20
|
+
- [ ] Iterar sobre feedback
|
|
21
|
+
|
|
22
|
+
## Fase 5: Calidad
|
|
23
|
+
- [ ] Tests completos
|
|
24
|
+
- [ ] Validación de rendimiento
|
|
25
|
+
- [ ] Revisión de seguridad
|
|
26
|
+
|
|
27
|
+
## Fase 6: Lanzamiento
|
|
28
|
+
- [ ] Despliegue
|
|
29
|
+
- [ ] Documentación final
|
|
30
|
+
- [ ] Release notes
|
|
31
|
+
|
|
32
|
+
## Fase 7: Crecimiento
|
|
33
|
+
- [ ] Monitoreo
|
|
34
|
+
- [ ] Feedback de usuarios
|
|
35
|
+
- [ ] Iteración
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Configuração do Projeto Don Cheli
|
|
2
|
+
projeto:
|
|
3
|
+
nome: "meu-projeto"
|
|
4
|
+
tipo: "produto" # produto|cli|app|biblioteca|servico|refatoracao|correcao|poc
|
|
5
|
+
descricao: ""
|
|
6
|
+
versao: "0.1.0"
|
|
7
|
+
|
|
8
|
+
# Modelos de IA
|
|
9
|
+
modelos:
|
|
10
|
+
padrao: sonnet
|
|
11
|
+
agentes:
|
|
12
|
+
planejador: opus
|
|
13
|
+
arquiteto: opus
|
|
14
|
+
executor: sonnet
|
|
15
|
+
revisor: opus
|
|
16
|
+
testador: sonnet
|
|
17
|
+
documentador: haiku
|
|
18
|
+
estimador: opus
|
|
19
|
+
|
|
20
|
+
# Histórico de sessões
|
|
21
|
+
historico:
|
|
22
|
+
habilitado: true
|
|
23
|
+
maxSessoes: 10
|
|
24
|
+
autoSalvar: true
|
|
25
|
+
|
|
26
|
+
# Idioma
|
|
27
|
+
idioma: "pt"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Estado do Don Cheli
|
|
2
|
+
|
|
3
|
+
## Atual
|
|
4
|
+
- **Fase:** 1/7 (Descoberta)
|
|
5
|
+
- **Tarefa:** Definir o problema
|
|
6
|
+
- **Bloqueio:** Nenhum
|
|
7
|
+
|
|
8
|
+
## Estatísticas Rápidas
|
|
9
|
+
- **Progresso:** 0%
|
|
10
|
+
- **Última Atualização:** [data]
|
|
11
|
+
|
|
12
|
+
## Velocidade
|
|
13
|
+
- Sessões concluídas: 0
|
|
14
|
+
- Duração média: -
|
|
15
|
+
- Fases concluídas: 0/7
|
|
16
|
+
- Tempo restante estimado: -
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Plano do Projeto
|
|
2
|
+
|
|
3
|
+
## Fase 1: Descoberta
|
|
4
|
+
- [ ] Validar o problema
|
|
5
|
+
- [ ] Pesquisar soluções existentes
|
|
6
|
+
- [ ] Documentar descobertas
|
|
7
|
+
|
|
8
|
+
## Fase 2: Estratégia
|
|
9
|
+
- [ ] Definir roteiro
|
|
10
|
+
- [ ] Estabelecer marcos
|
|
11
|
+
- [ ] Tomar decisões chave
|
|
12
|
+
|
|
13
|
+
## Fase 3: Design
|
|
14
|
+
- [ ] Arquitetura do sistema
|
|
15
|
+
- [ ] Design de UX/UI
|
|
16
|
+
- [ ] Especificações técnicas
|
|
17
|
+
|
|
18
|
+
## Fase 4: Desenvolvimento
|
|
19
|
+
- [ ] Implementar com TDD
|
|
20
|
+
- [ ] Iterar sobre feedback
|
|
21
|
+
|
|
22
|
+
## Fase 5: Qualidade
|
|
23
|
+
- [ ] Testes completos
|
|
24
|
+
- [ ] Validação de desempenho
|
|
25
|
+
- [ ] Revisão de segurança
|
|
26
|
+
|
|
27
|
+
## Fase 6: Lançamento
|
|
28
|
+
- [ ] Implantação
|
|
29
|
+
- [ ] Documentação final
|
|
30
|
+
- [ ] Notas de versão
|
|
31
|
+
|
|
32
|
+
## Fase 7: Crescimento
|
|
33
|
+
- [ ] Monitoramento
|
|
34
|
+
- [ ] Feedback dos usuários
|
|
35
|
+
- [ ] Iteração
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Estimado de Desarrollo: [Nombre del Proyecto]
|
|
2
|
+
|
|
3
|
+
**Fecha:** [fecha]
|
|
4
|
+
**Generado por:** `/especdev:estimar`
|
|
5
|
+
|
|
6
|
+
## Resumen Ejecutivo
|
|
7
|
+
|
|
8
|
+
| Métrica | Valor |
|
|
9
|
+
|---------|-------|
|
|
10
|
+
| **Esfuerzo total** | X-Y días/persona |
|
|
11
|
+
| **Complejidad** | Baja/Media/Alta |
|
|
12
|
+
| **Confianza** | X% |
|
|
13
|
+
| **Modelo dominante** | [modelo] |
|
|
14
|
+
|
|
15
|
+
## Desglose por Feature
|
|
16
|
+
|
|
17
|
+
| Feature | Optimista | Esperado | Pesimista | Riesgo |
|
|
18
|
+
|---------|-----------|----------|-----------|--------|
|
|
19
|
+
| Feature 1 | Xd | Yd | Zd | Bajo/Medio/Alto |
|
|
20
|
+
| Feature 2 | Xd | Yd | Zd | Bajo/Medio/Alto |
|
|
21
|
+
|
|
22
|
+
## Detalle por Modelo
|
|
23
|
+
|
|
24
|
+
### Puntos de Función: X días
|
|
25
|
+
### Planning Poker IA: X días
|
|
26
|
+
### COCOMO: X días
|
|
27
|
+
### Histórico: X días / N/A
|
|
28
|
+
|
|
29
|
+
## Riesgos que Afectan la Estimación
|
|
30
|
+
|
|
31
|
+
| Riesgo | Probabilidad | Impacto | Mitigación |
|
|
32
|
+
|--------|-------------|---------|------------|
|
|
33
|
+
| Riesgo 1 | X% | +X días | [acción] |
|
|
34
|
+
|
|
35
|
+
## Supuestos Clave
|
|
36
|
+
|
|
37
|
+
- [supuesto 1]
|
|
38
|
+
- [supuesto 2]
|
|
39
|
+
|
|
40
|
+
## Recomendación
|
|
41
|
+
|
|
42
|
+
Usar estimado **esperado** (X días) con buffer de 20% para imprevistos.
|
|
43
|
+
→ **Total recomendado: X días/persona**
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Don Cheli — Instrucciones para Amp
|
|
2
|
+
|
|
3
|
+
## Identidad
|
|
4
|
+
|
|
5
|
+
Asistente de desarrollo bajo el framework Don Cheli.
|
|
6
|
+
|
|
7
|
+
## Contexto
|
|
8
|
+
|
|
9
|
+
Lee `.especdev/` para entender el estado del proyecto.
|
|
10
|
+
|
|
11
|
+
## Reglas
|
|
12
|
+
|
|
13
|
+
1. TDD obligatorio
|
|
14
|
+
2. Causa raíz primero
|
|
15
|
+
3. Evidencia siempre
|
|
16
|
+
4. Todo en español
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Constitución de Don Cheli
|
|
2
|
+
|
|
3
|
+
> **Versión:** 2.0.0 | **Ratificada:** 2026-03-21
|
|
4
|
+
>
|
|
5
|
+
> La constitución gobierna TODO el código generado bajo Don Cheli.
|
|
6
|
+
> Enriquecida con principios de Specular (pei9564/Specular).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## I. Gherkin es Rey (Fuente Única de Verdad)
|
|
11
|
+
|
|
12
|
+
Los archivos `.feature` en `specs/features/` son los **ÚNICOS** artefactos de especificación. No se generan ni mantienen archivos spec.md separados.
|
|
13
|
+
|
|
14
|
+
- Todas las decisiones de planificación, implementación y testing DEBEN rastrearse hasta Escenarios y Reglas definidos en el `.feature` correspondiente.
|
|
15
|
+
- El orden del flujo DEBE ser: Leer Gherkin → Generar Step Definitions (Rojo) → Implementar Feature (Verde) → Refactorizar.
|
|
16
|
+
- Cuando un archivo Gherkin es ambiguo o incompleto, el vacío DEBE resolverse actualizando el `.feature` — nunca inventando requisitos en artefactos posteriores.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## I-B. Schema como Verdad Viva (Ciclo de Vida DBML)
|
|
21
|
+
|
|
22
|
+
Las definiciones de schema en `specs/db_schema/<dominio>.dbml` siguen un ciclo de dos fases:
|
|
23
|
+
|
|
24
|
+
1. **Provisional** (tag `@provisional` presente): Auto-generado durante la fase Spec. Nombres de campos, tipos y restricciones son borradores.
|
|
25
|
+
- Los Escenarios en `.feature` DEBEN usar los nombres de campos provisionales tal como están.
|
|
26
|
+
- Los schemas provisionales DEBEN revisarse y ratificarse antes de la fase Plan.
|
|
27
|
+
|
|
28
|
+
2. **Ratificado** (sin tag `@provisional`): Revisado durante Clarify o Plan. Una vez ratificado, el DBML se convierte en **Verdad Absoluta**.
|
|
29
|
+
- Cualquier feature posterior en el mismo dominio DEBE extender (no reemplazar) el schema ratificado.
|
|
30
|
+
- Renombrar campos después de la ratificación requiere una nota de migración en el plan.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## II. Precisión Quirúrgica (Colaboración en Equipo)
|
|
35
|
+
|
|
36
|
+
Cada cambio DEBE ser el **cambio mínimo viable** requerido por la tarea actual.
|
|
37
|
+
|
|
38
|
+
- Refactoring "de paso" de código no relacionado, helpers globales o componentes compartidos está **PROHIBIDO** salvo que se solicite explícitamente.
|
|
39
|
+
- Cambios de formato, adición de comentarios y reordenamiento de imports fuera del alcance de la tarea NO DEBEN aparecer en diffs.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## III. Arquitectura Plug-and-Play (Modularidad)
|
|
44
|
+
|
|
45
|
+
El código DEBE seguir el Principio Abierto/Cerrado: abierto para extensión, cerrado para modificación.
|
|
46
|
+
|
|
47
|
+
- Nuevas features DEBEN entregarse como módulos, Objetos de Servicio o clases nuevas, no inflando funciones existentes.
|
|
48
|
+
- La lógica de negocio DEBE encapsularse en Objetos de Servicio o clases especializadas. Controllers, Handlers y Routers DEBEN ser thin (solo delegación).
|
|
49
|
+
- Concerns transversales (logging, auth, validación) DEBEN usar patrones de middleware o decoradores, no código inline.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## IV. La Regla "Las Vegas" (Aislamiento de Servicios y Mocking)
|
|
54
|
+
|
|
55
|
+
> Lo que pasa dentro de un servicio SE QUEDA dentro de ese servicio.
|
|
56
|
+
|
|
57
|
+
- Los tests DEBEN ejecutarse herméticamente — sin llamadas de red reales, sin estado de BD compartido, sin efectos secundarios en el filesystem.
|
|
58
|
+
- Toda interacción con un servicio externo (HTTP APIs, gRPC, bases de datos, colas de mensajes) DEBE estar mockeada por defecto.
|
|
59
|
+
- Las clases de servicio DEBEN aceptar dependencias via Inyección de Dependencias para que intercambiar mocks por clientes reales sea transparente.
|
|
60
|
+
- Los tests end-to-end son la ÚNICA excepción y DEBEN marcarse explícitamente como tales.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## IV-B. Regla del Punto de Entrada (Alineamiento BDD-Arquitectura)
|
|
65
|
+
|
|
66
|
+
La validación de reglas de negocio DEBE colocarse lo más cerca posible del punto de entrada que el paso `Cuando` del BDD invoca.
|
|
67
|
+
|
|
68
|
+
**Test de litmus:** Para cada Escenario de fallo en el `.feature`, preguntar: _"¿El paso `Cuando` realmente se ejecuta en mi arquitectura?"_ Si la respuesta es no, la arquitectura viola esta regla.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## V. Estándares Modernos de Código
|
|
73
|
+
|
|
74
|
+
- **Type hints** son obligatorios en toda firma de función.
|
|
75
|
+
- **Modelos de validación** (Pydantic/Zod/equivalente) DEBEN usarse para DTOs y schemas — diccionarios/objetos crudos están PROHIBIDOS para datos estructurados.
|
|
76
|
+
- Se DEBE seguir el style guide del lenguaje (PEP 8, ESLint, etc.). Donde el guide conflicta con legibilidad, gana legibilidad.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## VI. Adaptabilidad al Contexto
|
|
81
|
+
|
|
82
|
+
Antes de generar código, el framework y toolchain DEBEN detectarse escaneando archivos de configuración (`package.json`, `requirements.txt`, `pyproject.toml`, etc.).
|
|
83
|
+
|
|
84
|
+
El código generado NO DEBE introducir patrones que conflicten con las dependencias instaladas o convenciones establecidas del proyecto.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## VII. Codificación Defensiva y Manejo de Errores
|
|
89
|
+
|
|
90
|
+
- Bloques `try...catch` desnudos que engullen errores están PROHIBIDOS. Toda excepción capturada DEBE logguearse con stack trace completo.
|
|
91
|
+
- El código DEBE usar clases de excepción custom que mapeen a códigos de estado HTTP (ej: `RecursoNoEncontrado` → 404).
|
|
92
|
+
- **Regla Stop-Loss:** Si una tarea falla (luz Roja) más de 3 veces, el trabajo DEBE detenerse y se DEBE solicitar guía humana. Los ciclos infinitos de fix-break están PROHIBIDOS.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## VIII. Protocolo de Clarificación (Auto-QA)
|
|
97
|
+
|
|
98
|
+
Al ejecutar `/especdev:clarificar`, el agente actúa como **Ingeniero QA Estricto** y ejecuta obligatoriamente:
|
|
99
|
+
|
|
100
|
+
1. **Verificación de Consistencia Schema-Spec:**
|
|
101
|
+
- Escanear todos los campos en el Gherkin
|
|
102
|
+
- Comparar contra el schema DBML
|
|
103
|
+
- Error si nombres no coinciden exactamente
|
|
104
|
+
- Error si campo `NOT NULL` no tiene escenario de validación
|
|
105
|
+
|
|
106
|
+
2. **Verificación de Convención de Nombres:**
|
|
107
|
+
- Feature COMMAND: usar patrón precondición/postcondición
|
|
108
|
+
- Feature QUERY: usar patrón precondición/éxito
|
|
109
|
+
|
|
110
|
+
3. **Auditoría Auto-Generado:**
|
|
111
|
+
- Revisar escenarios auto-generados
|
|
112
|
+
- Marcar los que sean redundantes o lógicamente imposibles
|
|
113
|
+
|
|
114
|
+
**Formato de salida:** ✅ PASS / ⚠️ WARNING / ❌ FAIL
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Gobernanza
|
|
119
|
+
|
|
120
|
+
- Esta constitución **supersede** todas las prácticas de desarrollo y guías de estilo dentro del repositorio.
|
|
121
|
+
- Las enmiendas requieren: (1) Justificación documentada, (2) Revisión, (3) Plan de migración para código que ya no cumpla.
|
|
122
|
+
- Todos los PRs y revisiones de código DEBEN verificar cumplimiento con estos principios.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Stop Hooks — Verificaciones de Parada
|
|
2
|
+
|
|
3
|
+
## Qué Son
|
|
4
|
+
|
|
5
|
+
Los Stop Hooks son verificaciones automáticas que DEBEN pasar antes de que el agente pueda declarar una tarea como "completa". Son el equivalente a puertas de calidad de CI/CD pero ejecutadas por el agente en tiempo real.
|
|
6
|
+
|
|
7
|
+
> Concepto de MELI: los agentes NO pueden terminar sin pasar validaciones.
|
|
8
|
+
|
|
9
|
+
## Configuración
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
# .especdev/hooks/parar.yml
|
|
13
|
+
version: 1
|
|
14
|
+
|
|
15
|
+
hooks:
|
|
16
|
+
# Obligatorios — si fallan, la tarea se BLOQUEA
|
|
17
|
+
obligatorios:
|
|
18
|
+
- nombre: "Lint"
|
|
19
|
+
comando: "npm run lint"
|
|
20
|
+
timeout: 60
|
|
21
|
+
|
|
22
|
+
- nombre: "Type Check"
|
|
23
|
+
comando: "npx tsc --noEmit"
|
|
24
|
+
timeout: 120
|
|
25
|
+
|
|
26
|
+
- nombre: "Tests Unitarios"
|
|
27
|
+
comando: "npm test -- --testPathPattern=unit"
|
|
28
|
+
timeout: 180
|
|
29
|
+
|
|
30
|
+
- nombre: "Build"
|
|
31
|
+
comando: "npm run build"
|
|
32
|
+
timeout: 300
|
|
33
|
+
|
|
34
|
+
# Opcionales — si fallan, se advierte pero no se bloquea
|
|
35
|
+
opcionales:
|
|
36
|
+
- nombre: "Coverage"
|
|
37
|
+
comando: "npm run coverage -- --threshold 85"
|
|
38
|
+
timeout: 180
|
|
39
|
+
|
|
40
|
+
- nombre: "Tests E2E"
|
|
41
|
+
comando: "npm run test:e2e"
|
|
42
|
+
timeout: 600
|
|
43
|
+
|
|
44
|
+
# Pre-commit — se ejecutan antes de cada commit
|
|
45
|
+
pre_commit:
|
|
46
|
+
- nombre: "Guardian"
|
|
47
|
+
comando: "/especdev:guardian"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Flujo de Ejecución
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
/especdev:implementar
|
|
54
|
+
│
|
|
55
|
+
├── ... (implementar tareas) ...
|
|
56
|
+
│
|
|
57
|
+
└── Ejecutar Stop Hooks
|
|
58
|
+
│
|
|
59
|
+
├── 1. Lint ───── ✅ PASS (0.8s)
|
|
60
|
+
├── 2. TypeCheck ── ✅ PASS (2.1s)
|
|
61
|
+
├── 3. Tests ───── ❌ FAIL (1 fallo)
|
|
62
|
+
│ └── BLOQUEADO: 1 test falla
|
|
63
|
+
│ → Corregir y re-ejecutar
|
|
64
|
+
│
|
|
65
|
+
└── Re-ejecutar después de fix
|
|
66
|
+
├── 3. Tests ───── ✅ PASS
|
|
67
|
+
├── 4. Build ───── ✅ PASS
|
|
68
|
+
└── === TODOS LOS HOOKS PASAN ===
|
|
69
|
+
→ Tarea marcada como ✅ COMPLETA
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Templates por Stack
|
|
73
|
+
|
|
74
|
+
### Node.js / TypeScript
|
|
75
|
+
```yaml
|
|
76
|
+
hooks:
|
|
77
|
+
obligatorios:
|
|
78
|
+
- {nombre: "ESLint", comando: "npx eslint . --ext .ts,.tsx"}
|
|
79
|
+
- {nombre: "TypeScript", comando: "npx tsc --noEmit"}
|
|
80
|
+
- {nombre: "Vitest", comando: "npx vitest run"}
|
|
81
|
+
- {nombre: "Build", comando: "npm run build"}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Python
|
|
85
|
+
```yaml
|
|
86
|
+
hooks:
|
|
87
|
+
obligatorios:
|
|
88
|
+
- {nombre: "Ruff", comando: "ruff check ."}
|
|
89
|
+
- {nombre: "MyPy", comando: "mypy app/ --strict"}
|
|
90
|
+
- {nombre: "Pytest", comando: "pytest -v"}
|
|
91
|
+
- {nombre: "Build", comando: "python -m build"}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Go
|
|
95
|
+
```yaml
|
|
96
|
+
hooks:
|
|
97
|
+
obligatorios:
|
|
98
|
+
- {nombre: "Go Vet", comando: "go vet ./..."}
|
|
99
|
+
- {nombre: "Staticcheck", comando: "staticcheck ./..."}
|
|
100
|
+
- {nombre: "Go Test", comando: "go test ./..."}
|
|
101
|
+
- {nombre: "Go Build", comando: "go build ./..."}
|
|
102
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# i18n — Internationalization Rules
|
|
2
|
+
|
|
3
|
+
## Language Detection
|
|
4
|
+
|
|
5
|
+
On every interaction, detect the user's configured language:
|
|
6
|
+
|
|
7
|
+
1. Read the framework locale file at `${FRAMEWORK_HOME}/locale` (contains `es`, `en`, or `pt`)
|
|
8
|
+
2. If not found, check `.especdev/config.yaml` → `framework.idioma`
|
|
9
|
+
3. If neither exists, default to `es`
|
|
10
|
+
|
|
11
|
+
## Language Behavior
|
|
12
|
+
|
|
13
|
+
Once the locale is determined:
|
|
14
|
+
|
|
15
|
+
| Locale | Communication | Code | Commits/PRs | Docs |
|
|
16
|
+
|--------|--------------|------|-------------|------|
|
|
17
|
+
| `es` | Español | English | Español | Español |
|
|
18
|
+
| `en` | English | English | English | English |
|
|
19
|
+
| `pt` | Português | English | Português | Português |
|
|
20
|
+
|
|
21
|
+
**Code (variables, functions, comments) is ALWAYS in English regardless of locale.**
|
|
22
|
+
|
|
23
|
+
## Locale Files
|
|
24
|
+
|
|
25
|
+
Framework locale strings are in `locales/{es,en,pt}.json`. Use them for:
|
|
26
|
+
- Phase names, status labels, verdicts
|
|
27
|
+
- Installer messages
|
|
28
|
+
- Command output templates
|
|
29
|
+
- Review dimensions, severity labels
|
|
30
|
+
- TDD cycle names, iron laws
|
|
31
|
+
|
|
32
|
+
## How to Apply
|
|
33
|
+
|
|
34
|
+
When generating output (estado.md, plan.md, hallazgos.md, propuesta.md, etc.):
|
|
35
|
+
- Use the locale's terminology for headers, labels, and status text
|
|
36
|
+
- Keep technical terms (e.g., TDD, OWASP, API, WebSocket) untranslated
|
|
37
|
+
- Gherkin keywords follow the Gherkin i18n spec:
|
|
38
|
+
- `es`: Dado/Cuando/Entonces/Y
|
|
39
|
+
- `en`: Given/When/Then/And
|
|
40
|
+
- `pt`: Dado/Quando/Então/E
|
|
41
|
+
|
|
42
|
+
## Changing Language
|
|
43
|
+
|
|
44
|
+
The user can change the language at any time by:
|
|
45
|
+
1. Editing `${FRAMEWORK_HOME}/locale` directly
|
|
46
|
+
2. Re-running `scripts/instalar.sh` (re-prompts language selection)
|
|
47
|
+
3. Setting `framework.idioma` in `.especdev/config.yaml`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Leyes de Hierro
|
|
2
|
+
|
|
3
|
+
## No Negociable. Siempre se aplican.
|
|
4
|
+
|
|
5
|
+
### 1. Ley TDD
|
|
6
|
+
Todo código de producción REQUIERE tests.
|
|
7
|
+
- `RED` → Escribir test que falla
|
|
8
|
+
- `GREEN` → Código mínimo que pasa
|
|
9
|
+
- `REFACTOR` → Mejorar sin cambiar comportamiento
|
|
10
|
+
|
|
11
|
+
### 2. Ley de Debugging
|
|
12
|
+
Primero la causa raíz, luego la corrección.
|
|
13
|
+
1. REPRODUCIR → AISLAR → ENTENDER → CORREGIR → VERIFICAR
|
|
14
|
+
|
|
15
|
+
### 3. Ley de Verificación
|
|
16
|
+
Evidencia antes de afirmaciones.
|
|
17
|
+
- ✅ "Tests pasan (evidencia adjunta)"
|
|
18
|
+
- ❌ "Creo que funciona"
|