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,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Modo completo para proyectos grandes y complejos (Nivel 3)
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:completo
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Iniciar modo completo (Nivel 3 - Complejo) para proyectos que requieren las 7 fases del ciclo de vida.
|
|
11
|
+
|
|
12
|
+
## Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/especdev:completo <descripción del proyecto>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Las 7 Fases
|
|
19
|
+
|
|
20
|
+
| Fase | Duración | Actividades |
|
|
21
|
+
|------|----------|-------------|
|
|
22
|
+
| 1. Descubrimiento | 1-2 días | Validar problema, investigar, descubrimientos |
|
|
23
|
+
| 2. Estrategia | 1 día | Hoja de ruta, hitos, decisiones |
|
|
24
|
+
| 3. Diseño | 2-3 días | Arquitectura, UX, especificaciones |
|
|
25
|
+
| 4. Desarrollo | Variable | TDD, implementación, iteración |
|
|
26
|
+
| 5. Calidad | 1-2 días | Testing, validación, rendimiento |
|
|
27
|
+
| 6. Lanzamiento | 1 día | Despliegue, documentación, release |
|
|
28
|
+
| 7. Crecimiento | Continuo | Monitoreo, feedback, iteración |
|
|
29
|
+
|
|
30
|
+
## Transiciones de Fase
|
|
31
|
+
|
|
32
|
+
Cada fase requiere criterios de Avance/No-Avance:
|
|
33
|
+
|
|
34
|
+
```markdown
|
|
35
|
+
## Fase [N] Completada
|
|
36
|
+
|
|
37
|
+
### Lista de Verificación Avance/No-Avance
|
|
38
|
+
- [ ] Todas las tareas de la fase completadas
|
|
39
|
+
- [ ] Entregables verificados
|
|
40
|
+
- [ ] Sin bloqueadores
|
|
41
|
+
- [ ] Listo para siguiente fase
|
|
42
|
+
|
|
43
|
+
**Decisión:** AVANZAR / NO-AVANZAR
|
|
44
|
+
**Motivo:** [por qué]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Des-escalamiento
|
|
48
|
+
|
|
49
|
+
Si después de la Estrategia el alcance es menor → des-escalar a `/especdev:rapido`
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Recuperar sesión previa y generar reporte de puesta al día
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:continuar
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Recuperar el contexto de una sesión previa y generar un reporte de puesta al día.
|
|
11
|
+
|
|
12
|
+
## Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/especdev:continuar
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Comportamiento
|
|
19
|
+
|
|
20
|
+
1. **Detectar** directorio `.especdev/` existente
|
|
21
|
+
2. **Leer** archivos de contexto
|
|
22
|
+
3. **Generar** Reporte de Puesta al Día:
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
## 🔄 Recuperación de Sesión
|
|
26
|
+
|
|
27
|
+
**Proyecto:** api-pagos
|
|
28
|
+
**Última Sesión:** 2026-03-21 15:30
|
|
29
|
+
|
|
30
|
+
**Estado Actual:**
|
|
31
|
+
- Fase: 3/7 (Diseño)
|
|
32
|
+
- Tarea: Diseñar esquema de base de datos
|
|
33
|
+
- Progreso: 40%
|
|
34
|
+
|
|
35
|
+
**Hallazgos Recientes:**
|
|
36
|
+
- JWT preferido sobre sesiones
|
|
37
|
+
- La API legacy tiene vulnerabilidades
|
|
38
|
+
|
|
39
|
+
**Próximos Pasos:**
|
|
40
|
+
1. Completar esquema de base de datos
|
|
41
|
+
2. Agregar reset de contraseña
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Test de 5 Preguntas
|
|
45
|
+
|
|
46
|
+
Para verificar que el contexto está completo:
|
|
47
|
+
|
|
48
|
+
| # | Pregunta | Fuente | Estado |
|
|
49
|
+
|---|----------|--------|--------|
|
|
50
|
+
| 1 | ¿Dónde estoy? | `estado.md` | Fase actual |
|
|
51
|
+
| 2 | ¿A dónde voy? | `plan.md` | Fases restantes |
|
|
52
|
+
| 3 | ¿Cuál es la meta? | `config.yaml` | Objetivo del proyecto |
|
|
53
|
+
| 4 | ¿Qué he aprendido? | `hallazgos.md` | Descubrimientos clave |
|
|
54
|
+
| 5 | ¿Qué he hecho? | `progreso.md` | Acciones recientes |
|
|
55
|
+
|
|
56
|
+
**Estado del Contexto:**
|
|
57
|
+
- ✅ Completo (5/5) → Listo para continuar
|
|
58
|
+
- ⚠️ Parcial (3-4/5) → Proceder con precaución
|
|
59
|
+
- ❌ Incompleto (0-2/5) → Ejecutar `/especdev:iniciar --reparar`
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Diseñar contratos de API, webhooks e integraciones con manejo de errores y reintentos
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:contrato-api
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Diseñar contratos de API completos (REST o GraphQL), definir webhooks, planificar manejo de errores y reintentos para asegurar la resiliencia de integraciones con plataformas externas.
|
|
11
|
+
|
|
12
|
+
## Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/especdev:contrato-api <descripción de la integración>
|
|
16
|
+
/especdev:contrato-api --tipo rest "Integración con Stripe para pagos"
|
|
17
|
+
/especdev:contrato-api --tipo graphql "API de catálogo de productos"
|
|
18
|
+
/especdev:contrato-api --tipo webhook "Recibir eventos de Shopify"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Diferencia con `/especdev:planificar-tecnico`
|
|
22
|
+
|
|
23
|
+
| Aspecto | `planificar-tecnico` | `contrato-api` |
|
|
24
|
+
|---------|---------------------|----------------|
|
|
25
|
+
| **Alcance** | Blueprint completo de una feature | Solo el contrato de API/integración |
|
|
26
|
+
| **Profundidad** | Contrato básico (request/response) | Contrato completo (errores, reintentos, webhooks, idempotencia) |
|
|
27
|
+
| **Cuándo** | Después de spec | Cuando la integración es el foco principal |
|
|
28
|
+
|
|
29
|
+
## Output para API REST
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
## Contrato API: Integración de Pagos con Stripe
|
|
33
|
+
|
|
34
|
+
### Endpoints
|
|
35
|
+
|
|
36
|
+
#### POST /api/v1/pagos
|
|
37
|
+
**Propósito:** Crear un cobro
|
|
38
|
+
**Auth:** Bearer token (JWT)
|
|
39
|
+
**Rate limit:** 100 req/min por usuario
|
|
40
|
+
**Idempotencia:** Sí (header `Idempotency-Key`)
|
|
41
|
+
|
|
42
|
+
**Request:**
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"monto": 5000, // centavos, min: 100, max: 99999900
|
|
46
|
+
"moneda": "USD", // ISO 4217
|
|
47
|
+
"cliente_id": "uuid",
|
|
48
|
+
"metodo_pago_id": "pm_xxx",
|
|
49
|
+
"descripcion": "Pedido #1234",
|
|
50
|
+
"metadata": {} // opcional, max 50 keys
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Responses:**
|
|
55
|
+
| Status | Significado | Body |
|
|
56
|
+
|--------|------------|------|
|
|
57
|
+
| 201 | Cobro creado | `{ id, status, monto, stripe_id, created_at }` |
|
|
58
|
+
| 400 | Datos inválidos | `{ error, field, message }` |
|
|
59
|
+
| 402 | Pago rechazado | `{ error, decline_code, message }` |
|
|
60
|
+
| 409 | Idempotency conflict | `{ error, original_id }` |
|
|
61
|
+
| 429 | Rate limit | `{ error, retry_after }` |
|
|
62
|
+
| 500 | Error interno | `{ error, request_id }` |
|
|
63
|
+
|
|
64
|
+
**Headers de respuesta:**
|
|
65
|
+
```
|
|
66
|
+
X-Request-Id: uuid // Para soporte/debugging
|
|
67
|
+
X-RateLimit-Remaining: 95
|
|
68
|
+
X-RateLimit-Reset: 1616544000
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Webhooks (recibir desde Stripe)
|
|
72
|
+
|
|
73
|
+
#### POST /api/v1/webhooks/stripe
|
|
74
|
+
**Verificación:** HMAC-SHA256 con `Stripe-Signature` header
|
|
75
|
+
**Tolerancia de timestamp:** 300 segundos (5 min)
|
|
76
|
+
**Respuesta esperada:** 200 OK (body vacío) en < 5s
|
|
77
|
+
|
|
78
|
+
**Eventos soportados:**
|
|
79
|
+
| Evento | Acción | Idempotente |
|
|
80
|
+
|--------|--------|-------------|
|
|
81
|
+
| `payment_intent.succeeded` | Marcar pedido como pagado | Sí |
|
|
82
|
+
| `payment_intent.payment_failed` | Notificar al usuario | Sí |
|
|
83
|
+
| `charge.refunded` | Procesar reembolso | Sí |
|
|
84
|
+
| `charge.dispute.created` | Alertar al equipo | Sí |
|
|
85
|
+
|
|
86
|
+
**Procesamiento:**
|
|
87
|
+
```
|
|
88
|
+
1. Verificar firma HMAC
|
|
89
|
+
2. Parsear evento
|
|
90
|
+
3. Verificar idempotencia (event.id en tabla processed_events)
|
|
91
|
+
4. Responder 200 INMEDIATAMENTE
|
|
92
|
+
5. Procesar en cola async (no bloquear respuesta)
|
|
93
|
+
6. Registrar en audit log
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Manejo de Errores
|
|
97
|
+
|
|
98
|
+
**Errores del cliente (4xx):**
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"error": {
|
|
102
|
+
"tipo": "validation_error",
|
|
103
|
+
"mensaje": "El monto debe ser mayor a $1.00",
|
|
104
|
+
"campo": "monto",
|
|
105
|
+
"codigo": "MONTO_INVALIDO"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Errores del servidor (5xx):**
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"error": {
|
|
114
|
+
"tipo": "internal_error",
|
|
115
|
+
"mensaje": "Error procesando el pago",
|
|
116
|
+
"request_id": "req_abc123"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Códigos de error consistentes:**
|
|
122
|
+
| Código | Significado | HTTP |
|
|
123
|
+
|--------|------------|------|
|
|
124
|
+
| `MONTO_INVALIDO` | Monto fuera de rango | 400 |
|
|
125
|
+
| `MONEDA_NO_SOPORTADA` | Moneda no en whitelist | 400 |
|
|
126
|
+
| `PAGO_RECHAZADO` | Tarjeta rechazada | 402 |
|
|
127
|
+
| `DUPLICADO` | Idempotency conflict | 409 |
|
|
128
|
+
| `RATE_LIMIT` | Demasiadas requests | 429 |
|
|
129
|
+
| `STRIPE_ERROR` | Error de comunicación con Stripe | 502 |
|
|
130
|
+
|
|
131
|
+
### Política de Reintentos
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Estrategia: Exponential backoff con jitter
|
|
135
|
+
|
|
136
|
+
Intento 1: inmediato
|
|
137
|
+
Intento 2: 1s + jitter (0-500ms)
|
|
138
|
+
Intento 3: 2s + jitter (0-1000ms)
|
|
139
|
+
Intento 4: 4s + jitter (0-2000ms)
|
|
140
|
+
Max intentos: 4
|
|
141
|
+
|
|
142
|
+
Reintentar en:
|
|
143
|
+
✅ 429 (rate limit) — respetar Retry-After header
|
|
144
|
+
✅ 500, 502, 503, 504 (errores transitorios)
|
|
145
|
+
❌ 400, 401, 402, 403, 404, 409 (errores definitivos)
|
|
146
|
+
|
|
147
|
+
Circuit breaker:
|
|
148
|
+
- Abrir después de 5 fallos consecutivos
|
|
149
|
+
- Half-open después de 30 segundos
|
|
150
|
+
- Cerrar después de 2 éxitos consecutivos
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Timeouts
|
|
154
|
+
|
|
155
|
+
| Operación | Timeout | Acción si timeout |
|
|
156
|
+
|-----------|---------|-------------------|
|
|
157
|
+
| Crear cobro | 10s | Reintentar (idempotente) |
|
|
158
|
+
| Verificar webhook | 2s | Rechazar (400) |
|
|
159
|
+
| Procesar evento async | 30s | Cola de dead-letter |
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Output para GraphQL
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
### Schema GraphQL
|
|
166
|
+
|
|
167
|
+
```graphql
|
|
168
|
+
type Mutation {
|
|
169
|
+
crearPago(input: CrearPagoInput!): PagoResult!
|
|
170
|
+
reembolsar(pagoId: ID!, monto: Int): ReembolsoResult!
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
type Query {
|
|
174
|
+
pago(id: ID!): Pago
|
|
175
|
+
pagos(filtro: PagoFiltro, paginacion: Paginacion): PagoConnection!
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
input CrearPagoInput {
|
|
179
|
+
monto: Int! # centavos
|
|
180
|
+
moneda: Moneda!
|
|
181
|
+
clienteId: ID!
|
|
182
|
+
metodoPagoId: String!
|
|
183
|
+
descripcion: String
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
type PagoResult {
|
|
187
|
+
pago: Pago
|
|
188
|
+
error: APIError
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Almacenamiento
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
specs/api/
|
|
197
|
+
├── openapi.yaml # Spec completa (auto-generada)
|
|
198
|
+
├── contratos/
|
|
199
|
+
│ ├── pagos.contrato.md # Contrato de pagos
|
|
200
|
+
│ ├── webhooks.contrato.md
|
|
201
|
+
│ └── catalogo.contrato.md
|
|
202
|
+
└── postman/
|
|
203
|
+
└── coleccion.json # Colección Postman exportada
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Integración con Pipeline
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
/especdev:contrato-api → contrato + OpenAPI parcial
|
|
210
|
+
→ /especdev:planificar-tecnico → incorpora contrato al plan
|
|
211
|
+
→ /especdev:desglosar → tareas incluyen implementación del contrato
|
|
212
|
+
→ Documentación Viva → actualiza OpenAPI global
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Guardrails
|
|
216
|
+
|
|
217
|
+
- **Nunca** diseñar API sin definir manejo de errores
|
|
218
|
+
- **Nunca** omitir idempotencia en operaciones de escritura
|
|
219
|
+
- **Nunca** confiar en input externo sin validación
|
|
220
|
+
- **Siempre** definir timeouts y política de reintentos
|
|
221
|
+
- **Siempre** incluir `request_id` en respuestas de error
|
|
222
|
+
- **Siempre** verificar firma de webhooks antes de procesar
|
|
223
|
+
- **Siempre** responder rápido a webhooks (< 5s), procesar async
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Bloquear estándares visuales antes de codear frontend (UI Design Contract)
|
|
3
|
+
i18n: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /especdev:contrato-ui
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Definir y bloquear los estándares visuales de una feature frontend **antes** de escribir código. Previene el problema más común del desarrollo frontend con IA: inconsistencia visual entre componentes porque no hay un contrato de diseño.
|
|
11
|
+
|
|
12
|
+
> Adaptado de Get Shit Done (gsd-build/get-shit-done) — UI Design Contracts: "lock visual standards before coding to prevent visually inconsistent AI-generated components."
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/especdev:contrato-ui # Crear contrato para el proyecto
|
|
18
|
+
/especdev:contrato-ui @specs/features/ui/ # Crear para un módulo específico
|
|
19
|
+
/especdev:contrato-ui --desde @figma-export # Derivar de un export de Figma
|
|
20
|
+
/especdev:contrato-ui --extender # Extender contrato existente
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Por Qué Existe
|
|
24
|
+
|
|
25
|
+
| Sin Contrato UI | Con Contrato UI |
|
|
26
|
+
|-----------------|-----------------|
|
|
27
|
+
| Componente A usa `padding: 16px`, B usa `padding: 1rem`, C usa `padding: 20px` | Todos usan `--spacing-md: 1rem` |
|
|
28
|
+
| Cada componente elige sus propios colores | Paleta definida, tokens de diseño |
|
|
29
|
+
| Tipografía inconsistente entre páginas | Escala tipográfica fija |
|
|
30
|
+
| Copywriting variable ("Click here" vs "Continuar" vs "Submit") | Voz y tono definidos |
|
|
31
|
+
| IA genera componentes "bonitos" pero incompatibles entre sí | Todos los componentes siguen el mismo contrato |
|
|
32
|
+
|
|
33
|
+
## Comportamiento
|
|
34
|
+
|
|
35
|
+
### Paso 1: Detectar Stack Frontend
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Detectando stack frontend...
|
|
39
|
+
├── Framework: React 19 / Next.js 15
|
|
40
|
+
├── Estilos: TailwindCSS 4.x
|
|
41
|
+
├── Componentes: shadcn/ui
|
|
42
|
+
├── Iconos: Lucide Icons
|
|
43
|
+
└── Design system existente: No detectado
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Paso 2: Definir Contrato
|
|
47
|
+
|
|
48
|
+
El contrato cubre 6 dimensiones:
|
|
49
|
+
|
|
50
|
+
#### 1. Espaciado (Spacing)
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
spacing:
|
|
54
|
+
base: 4px # Unidad mínima
|
|
55
|
+
scale:
|
|
56
|
+
xs: 4px # 1 unidad
|
|
57
|
+
sm: 8px # 2 unidades
|
|
58
|
+
md: 16px # 4 unidades (default)
|
|
59
|
+
lg: 24px # 6 unidades
|
|
60
|
+
xl: 32px # 8 unidades
|
|
61
|
+
2xl: 48px # 12 unidades
|
|
62
|
+
regla: "Todo espaciado DEBE ser múltiplo de 4px"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### 2. Tipografía (Typography)
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
typography:
|
|
69
|
+
familia:
|
|
70
|
+
primaria: "Inter, system-ui, sans-serif"
|
|
71
|
+
monospace: "JetBrains Mono, monospace"
|
|
72
|
+
escala:
|
|
73
|
+
xs: "0.75rem / 1rem" # 12px, captions
|
|
74
|
+
sm: "0.875rem / 1.25rem" # 14px, labels
|
|
75
|
+
base: "1rem / 1.5rem" # 16px, body
|
|
76
|
+
lg: "1.125rem / 1.75rem" # 18px, lead
|
|
77
|
+
xl: "1.25rem / 1.75rem" # 20px, h4
|
|
78
|
+
2xl: "1.5rem / 2rem" # 24px, h3
|
|
79
|
+
3xl: "1.875rem / 2.25rem" # 30px, h2
|
|
80
|
+
4xl: "2.25rem / 2.5rem" # 36px, h1
|
|
81
|
+
peso:
|
|
82
|
+
normal: 400
|
|
83
|
+
medium: 500
|
|
84
|
+
semibold: 600
|
|
85
|
+
bold: 700
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### 3. Color (Palette)
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
color:
|
|
92
|
+
brand:
|
|
93
|
+
primary: "#2563EB" # Acciones principales
|
|
94
|
+
primary-hover: "#1D4ED8"
|
|
95
|
+
secondary: "#64748B" # Acciones secundarias
|
|
96
|
+
semantic:
|
|
97
|
+
success: "#16A34A"
|
|
98
|
+
warning: "#D97706"
|
|
99
|
+
error: "#DC2626"
|
|
100
|
+
info: "#2563EB"
|
|
101
|
+
neutral:
|
|
102
|
+
background: "#FFFFFF"
|
|
103
|
+
surface: "#F8FAFC"
|
|
104
|
+
border: "#E2E8F0"
|
|
105
|
+
text-primary: "#0F172A"
|
|
106
|
+
text-secondary: "#64748B"
|
|
107
|
+
text-muted: "#94A3B8"
|
|
108
|
+
modo_oscuro: true # Si aplica, definir variantes
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### 4. Componentes (Patterns)
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
componentes:
|
|
115
|
+
botones:
|
|
116
|
+
primario: "bg-primary text-white rounded-md px-4 py-2 font-medium"
|
|
117
|
+
secundario: "bg-white border border-border text-secondary rounded-md px-4 py-2"
|
|
118
|
+
destructivo: "bg-error text-white rounded-md px-4 py-2"
|
|
119
|
+
fantasma: "text-secondary hover:bg-surface rounded-md px-4 py-2"
|
|
120
|
+
tamanos: [sm, md, lg]
|
|
121
|
+
inputs:
|
|
122
|
+
estilo: "border rounded-md px-3 py-2 focus:ring-2 focus:ring-primary"
|
|
123
|
+
error: "border-error focus:ring-error"
|
|
124
|
+
label: "text-sm font-medium text-text-primary mb-1"
|
|
125
|
+
cards:
|
|
126
|
+
estilo: "bg-white border rounded-lg p-6 shadow-sm"
|
|
127
|
+
modales:
|
|
128
|
+
overlay: "bg-black/50 backdrop-blur-sm"
|
|
129
|
+
contenido: "bg-white rounded-xl shadow-xl max-w-md mx-auto p-6"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### 5. Layout
|
|
133
|
+
|
|
134
|
+
```yaml
|
|
135
|
+
layout:
|
|
136
|
+
contenedor: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"
|
|
137
|
+
grid: "12 columnas"
|
|
138
|
+
breakpoints:
|
|
139
|
+
sm: "640px"
|
|
140
|
+
md: "768px"
|
|
141
|
+
lg: "1024px"
|
|
142
|
+
xl: "1280px"
|
|
143
|
+
sidebar: "w-64 fixed"
|
|
144
|
+
navbar: "h-16 fixed top-0"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### 6. Voz y Tono (Copywriting)
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
copywriting:
|
|
151
|
+
idioma_ui: "es" # Del config.yaml
|
|
152
|
+
voz: "Profesional pero cercano"
|
|
153
|
+
reglas:
|
|
154
|
+
- "Usar 'tú' (no 'usted') para el usuario"
|
|
155
|
+
- "Botones: verbos en infinitivo ('Crear', 'Guardar', 'Cancelar')"
|
|
156
|
+
- "Errores: explicar qué pasó Y qué hacer ('El email ya existe. Intenta con otro.')"
|
|
157
|
+
- "Éxito: confirmar la acción completada ('Usuario creado exitosamente')"
|
|
158
|
+
- "Vacíos: guiar al usuario ('Aún no tienes proyectos. Crea el primero.')"
|
|
159
|
+
prohibido:
|
|
160
|
+
- "Click here / Haga clic aquí"
|
|
161
|
+
- "Error genérico sin contexto"
|
|
162
|
+
- "Jerga técnica en mensajes al usuario"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Paso 3: Generar Artefacto
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
Contrato UI generado:
|
|
169
|
+
→ specs/ui/contrato-ui.yaml (contrato completo)
|
|
170
|
+
→ specs/ui/tokens.css (custom properties generadas)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Output
|
|
174
|
+
|
|
175
|
+
### Archivo de Contrato (`specs/ui/contrato-ui.yaml`)
|
|
176
|
+
|
|
177
|
+
YAML completo con las 6 dimensiones definidas arriba.
|
|
178
|
+
|
|
179
|
+
### Tokens CSS generados (`specs/ui/tokens.css`)
|
|
180
|
+
|
|
181
|
+
```css
|
|
182
|
+
:root {
|
|
183
|
+
/* Spacing */
|
|
184
|
+
--spacing-xs: 4px;
|
|
185
|
+
--spacing-sm: 8px;
|
|
186
|
+
--spacing-md: 16px;
|
|
187
|
+
--spacing-lg: 24px;
|
|
188
|
+
--spacing-xl: 32px;
|
|
189
|
+
|
|
190
|
+
/* Colors */
|
|
191
|
+
--color-primary: #2563EB;
|
|
192
|
+
--color-primary-hover: #1D4ED8;
|
|
193
|
+
--color-success: #16A34A;
|
|
194
|
+
--color-error: #DC2626;
|
|
195
|
+
--color-text-primary: #0F172A;
|
|
196
|
+
--color-text-secondary: #64748B;
|
|
197
|
+
--color-border: #E2E8F0;
|
|
198
|
+
--color-surface: #F8FAFC;
|
|
199
|
+
|
|
200
|
+
/* Typography */
|
|
201
|
+
--font-primary: 'Inter', system-ui, sans-serif;
|
|
202
|
+
--font-mono: 'JetBrains Mono', monospace;
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Integración con Pipeline
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
/especdev:contrato-ui → contrato-ui.yaml + tokens.css
|
|
210
|
+
→ /especdev:especificar → escenarios referencian tokens
|
|
211
|
+
→ /especdev:planificar-tecnico → plan incluye contrato como dependencia
|
|
212
|
+
→ /especdev:implementar → agente usa tokens, NO inventa estilos
|
|
213
|
+
→ /especdev:revisar → verifica cumplimiento del contrato
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Verificación de Cumplimiento
|
|
217
|
+
|
|
218
|
+
Durante `/especdev:revisar`, se verifica:
|
|
219
|
+
|
|
220
|
+
| Verificación | Criterio | Severidad |
|
|
221
|
+
|--------------|----------|-----------|
|
|
222
|
+
| Colores | Solo usa colores del contrato | ❌ Crítico |
|
|
223
|
+
| Espaciado | Múltiplos de la base (4px) | ⚠️ Alto |
|
|
224
|
+
| Tipografía | Solo usa escala definida | ⚠️ Alto |
|
|
225
|
+
| Copywriting | Sigue reglas de voz y tono | ℹ️ Info |
|
|
226
|
+
| Componentes | Usa patterns definidos | ⚠️ Alto |
|
|
227
|
+
| Responsive | Respeta breakpoints | ⚠️ Alto |
|
|
228
|
+
|
|
229
|
+
## Cuándo Usar
|
|
230
|
+
|
|
231
|
+
| Situación | Usar contrato |
|
|
232
|
+
|-----------|--------------|
|
|
233
|
+
| Feature con UI nueva | ✅ Sí |
|
|
234
|
+
| Modificación de UI existente | ✅ Sí (extender contrato existente) |
|
|
235
|
+
| API/backend sin UI | ❌ No |
|
|
236
|
+
| Fix de bug visual | ❌ No (contrato ya existe) |
|
|
237
|
+
| Prototipo/POC | ⚠️ Opcional (contrato mínimo) |
|
|
238
|
+
|
|
239
|
+
## Guardrails
|
|
240
|
+
|
|
241
|
+
- **Nunca** generar componentes frontend sin contrato UI vigente
|
|
242
|
+
- **Nunca** usar valores hardcoded de color/spacing en código (usar tokens)
|
|
243
|
+
- **Siempre** verificar cumplimiento del contrato en revisión
|
|
244
|
+
- **Siempre** extender (no reemplazar) el contrato cuando se agregan patrones
|
|
245
|
+
- **Siempre** generar tokens CSS/variables junto al contrato
|