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,522 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Don Cheli - Installation Script (i18n)
|
|
3
|
+
# Installs the Don Cheli framework locally or globally
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
VERSION="1.13.0"
|
|
8
|
+
REPO_URL="https://github.com/doncheli/don-cheli-sdd"
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
10
|
+
|
|
11
|
+
# Colors
|
|
12
|
+
GREEN='\033[0;32m'
|
|
13
|
+
YELLOW='\033[1;33m'
|
|
14
|
+
RED='\033[0;31m'
|
|
15
|
+
CYAN='\033[0;36m'
|
|
16
|
+
BOLD='\033[1m'
|
|
17
|
+
DIM='\033[2m'
|
|
18
|
+
NC='\033[0m'
|
|
19
|
+
|
|
20
|
+
# ═══════════════════════════════════════════════════════════════
|
|
21
|
+
# i18n — JSON locale loader (pure bash, no jq dependency)
|
|
22
|
+
# ═══════════════════════════════════════════════════════════════
|
|
23
|
+
|
|
24
|
+
LOCALE="es"
|
|
25
|
+
LOCALE_FILE=""
|
|
26
|
+
|
|
27
|
+
# Extract a flat key from JSON (e.g., "installer.banner_line1")
|
|
28
|
+
# Works without jq — uses grep + sed for simple key-value extraction
|
|
29
|
+
i18n() {
|
|
30
|
+
local key="$1"
|
|
31
|
+
local section="${key%%.*}"
|
|
32
|
+
local rest="${key#*.}"
|
|
33
|
+
local subkey="${rest%%.*}"
|
|
34
|
+
local leaf="${rest#*.}"
|
|
35
|
+
|
|
36
|
+
# Handle 2-level keys (section.key)
|
|
37
|
+
if [ "$rest" = "$leaf" ]; then
|
|
38
|
+
leaf="$subkey"
|
|
39
|
+
subkey=""
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
if [ -z "$LOCALE_FILE" ] || [ ! -f "$LOCALE_FILE" ]; then
|
|
43
|
+
echo "$key"
|
|
44
|
+
return
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
local value
|
|
48
|
+
if [ -n "$subkey" ] && [ "$subkey" != "$leaf" ]; then
|
|
49
|
+
# 3-level key: section.subsection.key
|
|
50
|
+
value=$(grep -A1 "\"$leaf\"" "$LOCALE_FILE" | grep -o '"[^"]*"$' | head -1 | tr -d '"' 2>/dev/null)
|
|
51
|
+
else
|
|
52
|
+
# 2-level key: section.key
|
|
53
|
+
value=$(grep "\"$leaf\"" "$LOCALE_FILE" | head -1 | sed 's/.*: *"//;s/",\{0,1\}$//' 2>/dev/null)
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
if [ -n "$value" ]; then
|
|
57
|
+
echo "$value"
|
|
58
|
+
else
|
|
59
|
+
echo "$key"
|
|
60
|
+
fi
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
# Template replacement: {{var}} → value
|
|
64
|
+
tpl() {
|
|
65
|
+
local text="$1"
|
|
66
|
+
shift
|
|
67
|
+
while [ $# -gt 0 ]; do
|
|
68
|
+
local var="$1"
|
|
69
|
+
local val="$2"
|
|
70
|
+
text="${text//\{\{$var\}\}/$val}"
|
|
71
|
+
shift 2
|
|
72
|
+
done
|
|
73
|
+
echo "$text"
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
load_locale() {
|
|
77
|
+
LOCALE_FILE="${SCRIPT_DIR}/locales/${LOCALE}.json"
|
|
78
|
+
if [ ! -f "$LOCALE_FILE" ]; then
|
|
79
|
+
LOCALE_FILE="${SCRIPT_DIR}/locales/es.json"
|
|
80
|
+
LOCALE="es"
|
|
81
|
+
fi
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# ═══════════════════════════════════════════════════════════════
|
|
85
|
+
# Localized folder names per language
|
|
86
|
+
# ═══════════════════════════════════════════════════════════════
|
|
87
|
+
|
|
88
|
+
set_folder_names() {
|
|
89
|
+
case "$LOCALE" in
|
|
90
|
+
en)
|
|
91
|
+
DIR_SKILLS="skills"
|
|
92
|
+
DIR_RULES="rules"
|
|
93
|
+
DIR_TEMPLATES="templates"
|
|
94
|
+
DIR_HOOKS="hooks"
|
|
95
|
+
DIR_AGENTS="agents"
|
|
96
|
+
DIR_SCRIPTS="scripts"
|
|
97
|
+
DIR_ESPECDEV=".especdev"
|
|
98
|
+
FILE_STATUS="status.md"
|
|
99
|
+
FILE_FINDINGS="findings.md"
|
|
100
|
+
FILE_PLAN="plan.md"
|
|
101
|
+
FILE_PROGRESS="progress.md"
|
|
102
|
+
FILE_PROPOSAL="proposal.md"
|
|
103
|
+
FILE_CONFIG="config.yaml"
|
|
104
|
+
;;
|
|
105
|
+
pt)
|
|
106
|
+
DIR_SKILLS="habilidades"
|
|
107
|
+
DIR_RULES="regras"
|
|
108
|
+
DIR_TEMPLATES="modelos"
|
|
109
|
+
DIR_HOOKS="ganchos"
|
|
110
|
+
DIR_AGENTS="agentes"
|
|
111
|
+
DIR_SCRIPTS="scripts"
|
|
112
|
+
DIR_ESPECDEV=".especdev"
|
|
113
|
+
FILE_STATUS="estado.md"
|
|
114
|
+
FILE_FINDINGS="descobertas.md"
|
|
115
|
+
FILE_PLAN="plano.md"
|
|
116
|
+
FILE_PROGRESS="progresso.md"
|
|
117
|
+
FILE_PROPOSAL="proposta.md"
|
|
118
|
+
FILE_CONFIG="config.yaml"
|
|
119
|
+
;;
|
|
120
|
+
*) # es (default)
|
|
121
|
+
DIR_SKILLS="habilidades"
|
|
122
|
+
DIR_RULES="reglas"
|
|
123
|
+
DIR_TEMPLATES="plantillas"
|
|
124
|
+
DIR_HOOKS="ganchos"
|
|
125
|
+
DIR_AGENTS="agentes"
|
|
126
|
+
DIR_SCRIPTS="scripts"
|
|
127
|
+
DIR_ESPECDEV=".especdev"
|
|
128
|
+
FILE_STATUS="estado.md"
|
|
129
|
+
FILE_FINDINGS="hallazgos.md"
|
|
130
|
+
FILE_PLAN="plan.md"
|
|
131
|
+
FILE_PROGRESS="progreso.md"
|
|
132
|
+
FILE_PROPOSAL="propuesta.md"
|
|
133
|
+
FILE_CONFIG="config.yaml"
|
|
134
|
+
;;
|
|
135
|
+
esac
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
# ═══════════════════════════════════════════════════════════════
|
|
139
|
+
# STEP 0 — Language Selection (FIRST THING THE USER SEES)
|
|
140
|
+
# ═══════════════════════════════════════════════════════════════
|
|
141
|
+
|
|
142
|
+
clear 2>/dev/null || true
|
|
143
|
+
echo ""
|
|
144
|
+
echo -e "${CYAN}${BOLD}"
|
|
145
|
+
echo " ╔═══════════════════════════════════════════════════════════╗"
|
|
146
|
+
echo " ║ ║"
|
|
147
|
+
echo " ║ 🏗️ Don Cheli — SDD Framework ║"
|
|
148
|
+
echo " ║ ║"
|
|
149
|
+
echo " ╚═══════════════════════════════════════════════════════════╝"
|
|
150
|
+
echo -e "${NC}"
|
|
151
|
+
echo ""
|
|
152
|
+
echo -e "${BOLD} 🌍 Selecciona tu idioma / Select your language / Selecione seu idioma${NC}"
|
|
153
|
+
echo ""
|
|
154
|
+
echo -e " ${CYAN}1)${NC} 🇪🇸 Español"
|
|
155
|
+
echo -e " ${CYAN}2)${NC} 🇬🇧 English"
|
|
156
|
+
echo -e " ${CYAN}3)${NC} 🇧🇷 Português"
|
|
157
|
+
echo ""
|
|
158
|
+
echo -ne " ${BOLD}▸ ${NC}"
|
|
159
|
+
# Read from /dev/tty to work even when script is piped via curl
|
|
160
|
+
if ! read -r LANG_CHOICE < /dev/tty 2>/dev/null; then
|
|
161
|
+
echo ""
|
|
162
|
+
echo -e " ${YELLOW}⚠ Cannot read input (piped mode). Using default: Español${NC}"
|
|
163
|
+
echo -e " ${DIM} Tip: use --lang es|en|pt to set language non-interactively${NC}"
|
|
164
|
+
LANG_CHOICE="es"
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
case "$LANG_CHOICE" in
|
|
168
|
+
1|es|ES|español|Español)
|
|
169
|
+
LOCALE="es"
|
|
170
|
+
LANG_NAME="Español"
|
|
171
|
+
;;
|
|
172
|
+
2|en|EN|english|English)
|
|
173
|
+
LOCALE="en"
|
|
174
|
+
LANG_NAME="English"
|
|
175
|
+
;;
|
|
176
|
+
3|pt|PT|português|Português|portugues)
|
|
177
|
+
LOCALE="pt"
|
|
178
|
+
LANG_NAME="Português"
|
|
179
|
+
;;
|
|
180
|
+
*)
|
|
181
|
+
echo ""
|
|
182
|
+
echo -e " ${RED}✗ Invalid option / Opción inválida / Opção inválida${NC}"
|
|
183
|
+
echo -e " ${DIM} Using default: Español${NC}"
|
|
184
|
+
LOCALE="es"
|
|
185
|
+
LANG_NAME="Español"
|
|
186
|
+
;;
|
|
187
|
+
esac
|
|
188
|
+
|
|
189
|
+
load_locale
|
|
190
|
+
set_folder_names
|
|
191
|
+
|
|
192
|
+
echo ""
|
|
193
|
+
echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.language_selected)" language "$LANG_NAME")"
|
|
194
|
+
echo ""
|
|
195
|
+
sleep 0.5
|
|
196
|
+
|
|
197
|
+
# ═══════════════════════════════════════════════════════════════
|
|
198
|
+
# Banner (in selected language)
|
|
199
|
+
# ═══════════════════════════════════════════════════════════════
|
|
200
|
+
|
|
201
|
+
BANNER_1=$(tpl "$(i18n installer.banner_line1)" version "$VERSION")
|
|
202
|
+
BANNER_2=$(i18n installer.banner_line2)
|
|
203
|
+
|
|
204
|
+
echo -e "${CYAN}${BOLD}"
|
|
205
|
+
echo " ┌───────────────────────────────────────────────────────┐"
|
|
206
|
+
printf " │ %-53s │\n" "$BANNER_1"
|
|
207
|
+
printf " │ %-53s │\n" "$BANNER_2"
|
|
208
|
+
echo " └───────────────────────────────────────────────────────┘"
|
|
209
|
+
echo -e "${NC}"
|
|
210
|
+
|
|
211
|
+
# ═══════════════════════════════════════════════════════════════
|
|
212
|
+
# Detect installation mode
|
|
213
|
+
# ═══════════════════════════════════════════════════════════════
|
|
214
|
+
|
|
215
|
+
MODE="local"
|
|
216
|
+
if [ "$1" == "--global" ] || [ "$2" == "--global" ]; then
|
|
217
|
+
MODE="global"
|
|
218
|
+
fi
|
|
219
|
+
|
|
220
|
+
if [ "$MODE" == "global" ]; then
|
|
221
|
+
FRAMEWORK_HOME="$HOME/.claude/don-cheli"
|
|
222
|
+
COMMANDS_DIR="$HOME/.claude/commands"
|
|
223
|
+
echo -e " ${YELLOW}$(i18n installer.mode_global)${NC}"
|
|
224
|
+
else
|
|
225
|
+
FRAMEWORK_HOME="./.claude/don-cheli"
|
|
226
|
+
COMMANDS_DIR="./.claude/commands"
|
|
227
|
+
echo -e " ${YELLOW}$(i18n installer.mode_local)${NC}"
|
|
228
|
+
fi
|
|
229
|
+
|
|
230
|
+
echo -e " ${DIM}$(tpl "$(i18n installer.framework_path)" path "$FRAMEWORK_HOME")${NC}"
|
|
231
|
+
echo -e " ${DIM}$(tpl "$(i18n installer.commands_path)" path "$COMMANDS_DIR")${NC}"
|
|
232
|
+
echo ""
|
|
233
|
+
|
|
234
|
+
# ═══════════════════════════════════════════════════════════════
|
|
235
|
+
# 1. Create structure
|
|
236
|
+
# ═══════════════════════════════════════════════════════════════
|
|
237
|
+
|
|
238
|
+
# Guard: abort if FRAMEWORK_HOME is empty to prevent rm -rf on system root
|
|
239
|
+
if [ -z "$FRAMEWORK_HOME" ]; then
|
|
240
|
+
echo -e " ${RED}✗ Error: FRAMEWORK_HOME is empty. Aborting to prevent data loss.${NC}"
|
|
241
|
+
exit 1
|
|
242
|
+
fi
|
|
243
|
+
|
|
244
|
+
# Clean previous locale folders to avoid leftovers from other languages
|
|
245
|
+
echo -e " 🧹 Cleaning previous installation..."
|
|
246
|
+
for OLD_DIR in habilidades skills reglas rules plantillas templates modelos ganchos hooks agentes agents; do
|
|
247
|
+
if [ -d "${FRAMEWORK_HOME}/${OLD_DIR}" ]; then
|
|
248
|
+
rm -rf "${FRAMEWORK_HOME}/${OLD_DIR}"
|
|
249
|
+
fi
|
|
250
|
+
done
|
|
251
|
+
|
|
252
|
+
echo -e " 📁 $(i18n installer.step_structure)"
|
|
253
|
+
mkdir -p "${FRAMEWORK_HOME}/${DIR_SKILLS}"
|
|
254
|
+
mkdir -p "${FRAMEWORK_HOME}/${DIR_RULES}"
|
|
255
|
+
mkdir -p "${FRAMEWORK_HOME}/${DIR_TEMPLATES}"
|
|
256
|
+
mkdir -p "${FRAMEWORK_HOME}/${DIR_HOOKS}"
|
|
257
|
+
mkdir -p "${FRAMEWORK_HOME}/${DIR_AGENTS}"
|
|
258
|
+
mkdir -p "${FRAMEWORK_HOME}/${DIR_SCRIPTS}"
|
|
259
|
+
mkdir -p "${FRAMEWORK_HOME}/locales"
|
|
260
|
+
mkdir -p "${COMMANDS_DIR}/especdev"
|
|
261
|
+
mkdir -p "${COMMANDS_DIR}/dc"
|
|
262
|
+
mkdir -p "${COMMANDS_DIR}/razonar"
|
|
263
|
+
|
|
264
|
+
# ═══════════════════════════════════════════════════════════════
|
|
265
|
+
# 2. Copy commands
|
|
266
|
+
# ═══════════════════════════════════════════════════════════════
|
|
267
|
+
|
|
268
|
+
echo -e " 📋 $(i18n installer.step_commands)"
|
|
269
|
+
if [ -d "${SCRIPT_DIR}/comandos/especdev" ]; then
|
|
270
|
+
cp -r "${SCRIPT_DIR}/comandos/especdev/"*.md "${COMMANDS_DIR}/especdev/" 2>/dev/null || true
|
|
271
|
+
# Create /dc: alias (same commands, shorter prefix)
|
|
272
|
+
cp -r "${SCRIPT_DIR}/comandos/especdev/"*.md "${COMMANDS_DIR}/dc/" 2>/dev/null || true
|
|
273
|
+
CMDS_ESPECDEV=$(ls "${COMMANDS_DIR}/especdev/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
274
|
+
echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_commands_done)" count "$CMDS_ESPECDEV")"
|
|
275
|
+
echo -e " ${GREEN}✓${NC} /dc:* alias created (${CMDS_ESPECDEV} commands)"
|
|
276
|
+
# Rename dc/ commands to match locale
|
|
277
|
+
if [ "$LOCALE" = "en" ]; then
|
|
278
|
+
cd "${COMMANDS_DIR}/dc/" 2>/dev/null && {
|
|
279
|
+
# Rename Spanish → English (longest names first to avoid conflicts)
|
|
280
|
+
for pair in \
|
|
281
|
+
"analizar-sesiones:analyze-sessions" \
|
|
282
|
+
"auditar-seguridad:security-audit" \
|
|
283
|
+
"avance-rapido:fast-forward" \
|
|
284
|
+
"cerrar-sesion:close-session" \
|
|
285
|
+
"contrato-api:api-contract" \
|
|
286
|
+
"contrato-ui:ui-contract" \
|
|
287
|
+
"crear-skill:create-skill" \
|
|
288
|
+
"detectar-ambiguedad:detect-ambiguity" \
|
|
289
|
+
"limpiar-slop:clean-slop" \
|
|
290
|
+
"mesa-redonda:roundtable" \
|
|
291
|
+
"mesa-tecnica:tech-panel" \
|
|
292
|
+
"minar-referencias:mine-refs" \
|
|
293
|
+
"planificar-tecnico:tech-plan" \
|
|
294
|
+
"validar-spec:validate-spec" \
|
|
295
|
+
"donde-estoy:where-am-i" \
|
|
296
|
+
"pseudocodigo:pseudocode" \
|
|
297
|
+
"reflexionar:reflect" \
|
|
298
|
+
"diagnostico:diagnostic" \
|
|
299
|
+
"especificar:specify" \
|
|
300
|
+
"implementar:implement" \
|
|
301
|
+
"incorporar:onboard" \
|
|
302
|
+
"actualizar:update" \
|
|
303
|
+
"comenzar:start" \
|
|
304
|
+
"continuar:continue" \
|
|
305
|
+
"capturar:capture" \
|
|
306
|
+
"desglosar:breakdown" \
|
|
307
|
+
"destilar:distill" \
|
|
308
|
+
"explorar:explore" \
|
|
309
|
+
"historial:history" \
|
|
310
|
+
"memorizar:memorize" \
|
|
311
|
+
"presentar:present" \
|
|
312
|
+
"proponer:propose" \
|
|
313
|
+
"traspasar:handoff" \
|
|
314
|
+
"traspaso:handover" \
|
|
315
|
+
"archivar:archive" \
|
|
316
|
+
"completo:full" \
|
|
317
|
+
"guardian:guardian" \
|
|
318
|
+
"iniciar:init" \
|
|
319
|
+
"migrar:migrate" \
|
|
320
|
+
"reversa:reverse" \
|
|
321
|
+
"revisar:review" \
|
|
322
|
+
"cambios:changes" \
|
|
323
|
+
"aplicar:apply" \
|
|
324
|
+
"estimar:estimate" \
|
|
325
|
+
"validar:validate" \
|
|
326
|
+
"clarificar:clarify" \
|
|
327
|
+
"rapido:quick" \
|
|
328
|
+
"estado:status" \
|
|
329
|
+
"agente:agent"; do
|
|
330
|
+
src="${pair%%:*}.md"
|
|
331
|
+
dst="${pair##*:}.md"
|
|
332
|
+
[ -f "$src" ] && mv "$src" "$dst" 2>/dev/null
|
|
333
|
+
done
|
|
334
|
+
cd - >/dev/null
|
|
335
|
+
}
|
|
336
|
+
echo -e " ${GREEN}✓${NC} Commands renamed to English"
|
|
337
|
+
elif [ "$LOCALE" = "pt" ]; then
|
|
338
|
+
cd "${COMMANDS_DIR}/dc/" 2>/dev/null && {
|
|
339
|
+
for pair in \
|
|
340
|
+
"analizar-sesiones:analisar-sessoes" \
|
|
341
|
+
"auditar-seguridad:auditar-segurança" \
|
|
342
|
+
"avance-rapido:avanço-rapido" \
|
|
343
|
+
"cerrar-sesion:fechar-sessao" \
|
|
344
|
+
"crear-skill:criar-skill" \
|
|
345
|
+
"detectar-ambiguedad:detectar-ambiguidade" \
|
|
346
|
+
"limpiar-slop:limpar-slop" \
|
|
347
|
+
"donde-estoy:onde-estou" \
|
|
348
|
+
"reflexionar:refletir" \
|
|
349
|
+
"incorporar:integrar" \
|
|
350
|
+
"actualizar:atualizar" \
|
|
351
|
+
"comenzar:começar" \
|
|
352
|
+
"desglosar:decompor" \
|
|
353
|
+
"presentar:apresentar" \
|
|
354
|
+
"proponer:propor" \
|
|
355
|
+
"traspasar:transferir" \
|
|
356
|
+
"traspaso:transferencia" \
|
|
357
|
+
"archivar:arquivar" \
|
|
358
|
+
"guardian:guardiao" \
|
|
359
|
+
"cambios:mudanças" \
|
|
360
|
+
"historial:historico"; do
|
|
361
|
+
src="${pair%%:*}.md"
|
|
362
|
+
dst="${pair##*:}.md"
|
|
363
|
+
[ -f "$src" ] && mv "$src" "$dst" 2>/dev/null
|
|
364
|
+
done
|
|
365
|
+
cd - >/dev/null
|
|
366
|
+
}
|
|
367
|
+
echo -e " ${GREEN}✓${NC} Commands renamed to Português"
|
|
368
|
+
fi
|
|
369
|
+
fi
|
|
370
|
+
if [ -d "${SCRIPT_DIR}/comandos/razonar" ]; then
|
|
371
|
+
cp -r "${SCRIPT_DIR}/comandos/razonar/"*.md "${COMMANDS_DIR}/razonar/" 2>/dev/null || true
|
|
372
|
+
CMDS_RAZONAR=$(ls "${COMMANDS_DIR}/razonar/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
373
|
+
echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_reasoning_done)" count "$CMDS_RAZONAR")"
|
|
374
|
+
fi
|
|
375
|
+
for CMD_FILE in "${SCRIPT_DIR}/comandos/"*.md; do
|
|
376
|
+
[ -f "$CMD_FILE" ] && cp "$CMD_FILE" "${COMMANDS_DIR}/" 2>/dev/null || true
|
|
377
|
+
done
|
|
378
|
+
|
|
379
|
+
# ═══════════════════════════════════════════════════════════════
|
|
380
|
+
# 3. Copy skills
|
|
381
|
+
# ═══════════════════════════════════════════════════════════════
|
|
382
|
+
|
|
383
|
+
echo -e " 🧠 $(i18n installer.step_skills)"
|
|
384
|
+
if [ -d "${SCRIPT_DIR}/habilidades" ]; then
|
|
385
|
+
cp -r "${SCRIPT_DIR}/habilidades/"* "${FRAMEWORK_HOME}/${DIR_SKILLS}/" 2>/dev/null || true
|
|
386
|
+
SKILLS=$(ls -d "${FRAMEWORK_HOME}/${DIR_SKILLS}/"*/ 2>/dev/null | wc -l | tr -d ' ')
|
|
387
|
+
echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_skills_done)" count "$SKILLS")"
|
|
388
|
+
fi
|
|
389
|
+
|
|
390
|
+
# ═══════════════════════════════════════════════════════════════
|
|
391
|
+
# 4. Copy rules
|
|
392
|
+
# ═══════════════════════════════════════════════════════════════
|
|
393
|
+
|
|
394
|
+
echo -e " ⚖️ $(i18n installer.step_rules)"
|
|
395
|
+
if [ -d "${SCRIPT_DIR}/reglas" ]; then
|
|
396
|
+
cp -r "${SCRIPT_DIR}/reglas/"* "${FRAMEWORK_HOME}/${DIR_RULES}/" 2>/dev/null || true
|
|
397
|
+
RULES=$(ls "${FRAMEWORK_HOME}/${DIR_RULES}/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
398
|
+
echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_rules_done)" count "$RULES")"
|
|
399
|
+
fi
|
|
400
|
+
|
|
401
|
+
# ═══════════════════════════════════════════════════════════════
|
|
402
|
+
# 5. Copy templates
|
|
403
|
+
# ═══════════════════════════════════════════════════════════════
|
|
404
|
+
|
|
405
|
+
echo -e " 📄 $(i18n installer.step_templates)"
|
|
406
|
+
if [ -d "${SCRIPT_DIR}/plantillas" ]; then
|
|
407
|
+
cp -r "${SCRIPT_DIR}/plantillas/"* "${FRAMEWORK_HOME}/${DIR_TEMPLATES}/" 2>/dev/null || true
|
|
408
|
+
echo -e " ${GREEN}✓${NC} $(i18n installer.step_templates_done)"
|
|
409
|
+
fi
|
|
410
|
+
|
|
411
|
+
# ═══════════════════════════════════════════════════════════════
|
|
412
|
+
# 6. Copy hooks
|
|
413
|
+
# ═══════════════════════════════════════════════════════════════
|
|
414
|
+
|
|
415
|
+
echo -e " 🪝 $(i18n installer.step_hooks)"
|
|
416
|
+
if [ -d "${SCRIPT_DIR}/ganchos" ]; then
|
|
417
|
+
cp -r "${SCRIPT_DIR}/ganchos/"* "${FRAMEWORK_HOME}/${DIR_HOOKS}/" 2>/dev/null || true
|
|
418
|
+
echo -e " ${GREEN}✓${NC} $(i18n installer.step_hooks_done)"
|
|
419
|
+
fi
|
|
420
|
+
|
|
421
|
+
# ═══════════════════════════════════════════════════════════════
|
|
422
|
+
# 7. Copy agents
|
|
423
|
+
# ═══════════════════════════════════════════════════════════════
|
|
424
|
+
|
|
425
|
+
echo -e " 🤖 $(i18n installer.step_agents)"
|
|
426
|
+
if [ -d "${SCRIPT_DIR}/agentes" ]; then
|
|
427
|
+
cp -r "${SCRIPT_DIR}/agentes/"* "${FRAMEWORK_HOME}/${DIR_AGENTS}/" 2>/dev/null || true
|
|
428
|
+
echo -e " ${GREEN}✓${NC} $(i18n installer.step_agents_done)"
|
|
429
|
+
fi
|
|
430
|
+
|
|
431
|
+
# ═══════════════════════════════════════════════════════════════
|
|
432
|
+
# 8. Copy scripts
|
|
433
|
+
# ═══════════════════════════════════════════════════════════════
|
|
434
|
+
|
|
435
|
+
echo -e " ⚙️ $(i18n installer.step_scripts)"
|
|
436
|
+
cp "${SCRIPT_DIR}/scripts/"*.sh "${FRAMEWORK_HOME}/${DIR_SCRIPTS}/" 2>/dev/null || true
|
|
437
|
+
echo -e " ${GREEN}✓${NC} $(i18n installer.step_scripts_done)"
|
|
438
|
+
|
|
439
|
+
# ═══════════════════════════════════════════════════════════════
|
|
440
|
+
# 9. Copy locales
|
|
441
|
+
# ═══════════════════════════════════════════════════════════════
|
|
442
|
+
|
|
443
|
+
echo -e " 🌍 Copying locales..."
|
|
444
|
+
if [ -d "${SCRIPT_DIR}/locales" ]; then
|
|
445
|
+
cp -r "${SCRIPT_DIR}/locales/"*.json "${FRAMEWORK_HOME}/locales/" 2>/dev/null || true
|
|
446
|
+
echo -e " ${GREEN}✓${NC} es.json, en.json, pt.json"
|
|
447
|
+
fi
|
|
448
|
+
|
|
449
|
+
# ═══════════════════════════════════════════════════════════════
|
|
450
|
+
# 10. Copy root files
|
|
451
|
+
# ═══════════════════════════════════════════════════════════════
|
|
452
|
+
|
|
453
|
+
echo -e " 📝 $(i18n installer.step_reference)"
|
|
454
|
+
for ROOT_FILE in CLAUDE.md AGENTS.md prompt.md NOTICE; do
|
|
455
|
+
if [ -f "${SCRIPT_DIR}/${ROOT_FILE}" ]; then
|
|
456
|
+
cp "${SCRIPT_DIR}/${ROOT_FILE}" "${FRAMEWORK_HOME}/" 2>/dev/null || true
|
|
457
|
+
fi
|
|
458
|
+
done
|
|
459
|
+
echo -e " ${GREEN}✓${NC} $(i18n installer.step_reference_done)"
|
|
460
|
+
|
|
461
|
+
# ═══════════════════════════════════════════════════════════════
|
|
462
|
+
# 11. Save locale preference + version
|
|
463
|
+
# ═══════════════════════════════════════════════════════════════
|
|
464
|
+
|
|
465
|
+
echo "${VERSION}" > "${FRAMEWORK_HOME}/VERSION"
|
|
466
|
+
echo "${LOCALE}" > "${FRAMEWORK_HOME}/locale"
|
|
467
|
+
|
|
468
|
+
# Save folder name mapping for Claude to read
|
|
469
|
+
cat > "${FRAMEWORK_HOME}/folder-map.json" << FMEOF
|
|
470
|
+
{
|
|
471
|
+
"locale": "${LOCALE}",
|
|
472
|
+
"dirs": {
|
|
473
|
+
"skills": "${DIR_SKILLS}",
|
|
474
|
+
"rules": "${DIR_RULES}",
|
|
475
|
+
"templates": "${DIR_TEMPLATES}",
|
|
476
|
+
"hooks": "${DIR_HOOKS}",
|
|
477
|
+
"agents": "${DIR_AGENTS}",
|
|
478
|
+
"scripts": "${DIR_SCRIPTS}"
|
|
479
|
+
},
|
|
480
|
+
"files": {
|
|
481
|
+
"status": "${FILE_STATUS}",
|
|
482
|
+
"findings": "${FILE_FINDINGS}",
|
|
483
|
+
"plan": "${FILE_PLAN}",
|
|
484
|
+
"progress": "${FILE_PROGRESS}",
|
|
485
|
+
"proposal": "${FILE_PROPOSAL}",
|
|
486
|
+
"config": "${FILE_CONFIG}"
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
FMEOF
|
|
490
|
+
|
|
491
|
+
# ═══════════════════════════════════════════════════════════════
|
|
492
|
+
# Summary
|
|
493
|
+
# ═══════════════════════════════════════════════════════════════
|
|
494
|
+
|
|
495
|
+
echo ""
|
|
496
|
+
echo -e " ${GREEN}${BOLD}══════════════════════════════════════════════════════${NC}"
|
|
497
|
+
echo -e " ${GREEN}${BOLD} ✅ $(tpl "$(i18n installer.success_title)" version "$VERSION")${NC}"
|
|
498
|
+
echo -e " ${GREEN}${BOLD}══════════════════════════════════════════════════════${NC}"
|
|
499
|
+
echo ""
|
|
500
|
+
echo -e " $(i18n installer.structure_title)"
|
|
501
|
+
echo -e " 📂 ${FRAMEWORK_HOME}/"
|
|
502
|
+
echo -e " ├── ${DIR_SKILLS}/ (${SKILLS})"
|
|
503
|
+
echo -e " ├── ${DIR_RULES}/ (${RULES})"
|
|
504
|
+
echo -e " ├── ${DIR_TEMPLATES}/"
|
|
505
|
+
echo -e " ├── ${DIR_HOOKS}/"
|
|
506
|
+
echo -e " ├── ${DIR_AGENTS}/"
|
|
507
|
+
echo -e " ├── locales/ (es, en, pt)"
|
|
508
|
+
echo -e " └── CLAUDE.md"
|
|
509
|
+
echo ""
|
|
510
|
+
echo -e " 📂 ${COMMANDS_DIR}/"
|
|
511
|
+
echo -e " ├── dc/ (${CMDS_ESPECDEV} — short alias)"
|
|
512
|
+
echo -e " ├── especdev/ (${CMDS_ESPECDEV} $(i18n installer.structure_commands))"
|
|
513
|
+
echo -e " └── razonar/ (${CMDS_RAZONAR} $(i18n installer.structure_commands))"
|
|
514
|
+
echo ""
|
|
515
|
+
echo -e " 🌍 Locale: ${BOLD}${LANG_NAME}${NC} (${LOCALE})"
|
|
516
|
+
echo ""
|
|
517
|
+
echo -e " ${CYAN}$(i18n installer.next_steps_title)${NC}"
|
|
518
|
+
echo -e " 1. $(i18n installer.next_step_1)"
|
|
519
|
+
echo -e " 2. $(i18n installer.next_step_2)"
|
|
520
|
+
echo ""
|
|
521
|
+
echo -e " ${GREEN}${BOLD}$(i18n installer.farewell)${NC}"
|
|
522
|
+
echo ""
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Don Cheli - Script de Validación
|
|
3
|
+
# Valida la estructura del framework
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
VERDE='\033[0;32m'
|
|
8
|
+
ROJO='\033[0;31m'
|
|
9
|
+
AMARILLO='\033[1;33m'
|
|
10
|
+
NC='\033[0m'
|
|
11
|
+
|
|
12
|
+
echo "=== Validación Don Cheli ==="
|
|
13
|
+
echo ""
|
|
14
|
+
|
|
15
|
+
ERRORES=0
|
|
16
|
+
ADVERTENCIAS=0
|
|
17
|
+
|
|
18
|
+
# Verificar directorios principales
|
|
19
|
+
for dir in comandos habilidades ganchos reglas plantillas agentes scripts; do
|
|
20
|
+
if [ -d "$dir" ]; then
|
|
21
|
+
echo -e "${VERDE}✅${NC} $dir/"
|
|
22
|
+
else
|
|
23
|
+
echo -e "${ROJO}❌${NC} $dir/ (faltante)"
|
|
24
|
+
ERRORES=$((ERRORES + 1))
|
|
25
|
+
fi
|
|
26
|
+
done
|
|
27
|
+
|
|
28
|
+
# Verificar archivos raíz
|
|
29
|
+
for archivo in README.md CLAUDE.md LICENCIA package.json VERSION; do
|
|
30
|
+
if [ -f "$archivo" ]; then
|
|
31
|
+
echo -e "${VERDE}✅${NC} $archivo"
|
|
32
|
+
else
|
|
33
|
+
echo -e "${ROJO}❌${NC} $archivo (faltante)"
|
|
34
|
+
ERRORES=$((ERRORES + 1))
|
|
35
|
+
fi
|
|
36
|
+
done
|
|
37
|
+
|
|
38
|
+
# Verificar que cada habilidad tiene HABILIDAD.md
|
|
39
|
+
echo ""
|
|
40
|
+
echo "Verificando habilidades..."
|
|
41
|
+
for dir in habilidades/*/; do
|
|
42
|
+
if [ -f "${dir}HABILIDAD.md" ]; then
|
|
43
|
+
echo -e "${VERDE}✅${NC} ${dir}HABILIDAD.md"
|
|
44
|
+
else
|
|
45
|
+
echo -e "${AMARILLO}⚠️${NC} ${dir}HABILIDAD.md (faltante)"
|
|
46
|
+
ADVERTENCIAS=$((ADVERTENCIAS + 1))
|
|
47
|
+
fi
|
|
48
|
+
done
|
|
49
|
+
|
|
50
|
+
# Contar comandos
|
|
51
|
+
ESPECDEV_COUNT=$(ls comandos/especdev/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
52
|
+
RAZONAR_COUNT=$(ls comandos/razonar/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
53
|
+
UTIL_COUNT=$(ls comandos/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
54
|
+
|
|
55
|
+
echo ""
|
|
56
|
+
echo "Resumen:"
|
|
57
|
+
echo "- Comandos /especdev:*: $ESPECDEV_COUNT"
|
|
58
|
+
echo "- Comandos /razonar:*: $RAZONAR_COUNT"
|
|
59
|
+
echo "- Comandos utilidad: $UTIL_COUNT"
|
|
60
|
+
echo "- Errores: $ERRORES"
|
|
61
|
+
echo "- Advertencias: $ADVERTENCIAS"
|
|
62
|
+
|
|
63
|
+
if [ "$ERRORES" -eq 0 ]; then
|
|
64
|
+
echo ""
|
|
65
|
+
echo -e "${VERDE}✅ Framework válido${NC}"
|
|
66
|
+
else
|
|
67
|
+
echo ""
|
|
68
|
+
echo -e "${ROJO}❌ Framework con errores${NC}"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|