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.
Files changed (351) hide show
  1. package/AGENTS.md +33 -0
  2. package/CHANGELOG.md +108 -0
  3. package/CLAUDE.md +114 -0
  4. package/LICENSE +190 -0
  5. package/README.es.md +611 -0
  6. package/README.md +640 -0
  7. package/README.pt.md +579 -0
  8. package/VERSION +1 -0
  9. package/agentes/README.md +28 -0
  10. package/agentes/prompts/estimador.md +29 -0
  11. package/comandos/bucle-completar.md +13 -0
  12. package/comandos/bucle-estado.md +13 -0
  13. package/comandos/bucle.md +74 -0
  14. package/comandos/especdev/actualizar.md +200 -0
  15. package/comandos/especdev/agente.md +43 -0
  16. package/comandos/especdev/analizar-sesiones.md +158 -0
  17. package/comandos/especdev/aplicar.md +73 -0
  18. package/comandos/especdev/archivar.md +69 -0
  19. package/comandos/especdev/auditar-seguridad.md +234 -0
  20. package/comandos/especdev/auditar.md +15 -0
  21. package/comandos/especdev/avance-rapido.md +64 -0
  22. package/comandos/especdev/cambios.md +14 -0
  23. package/comandos/especdev/capturar.md +61 -0
  24. package/comandos/especdev/cerrar-sesion.md +88 -0
  25. package/comandos/especdev/clarificar.md +98 -0
  26. package/comandos/especdev/comenzar.md +105 -0
  27. package/comandos/especdev/completo.md +49 -0
  28. package/comandos/especdev/continuar.md +59 -0
  29. package/comandos/especdev/contrato-api.md +223 -0
  30. package/comandos/especdev/contrato-ui.md +245 -0
  31. package/comandos/especdev/crear-skill.md +148 -0
  32. package/comandos/especdev/debate.md +119 -0
  33. package/comandos/especdev/desglosar.md +172 -0
  34. package/comandos/especdev/destilar.md +211 -0
  35. package/comandos/especdev/detectar-ambiguedad.md +81 -0
  36. package/comandos/especdev/diagnostico.md +92 -0
  37. package/comandos/especdev/dise/303/261ar.md +74 -0
  38. package/comandos/especdev/doctor.md +78 -0
  39. package/comandos/especdev/donde-estoy.md +32 -0
  40. package/comandos/especdev/especificar.md +189 -0
  41. package/comandos/especdev/estado.md +46 -0
  42. package/comandos/especdev/estimar.md +141 -0
  43. package/comandos/especdev/explorar.md +175 -0
  44. package/comandos/especdev/guardian.md +99 -0
  45. package/comandos/especdev/historial.md +14 -0
  46. package/comandos/especdev/implementar.md +227 -0
  47. package/comandos/especdev/incorporar.md +71 -0
  48. package/comandos/especdev/iniciar.md +82 -0
  49. package/comandos/especdev/limpiar-slop.md +88 -0
  50. package/comandos/especdev/marketplace.md +109 -0
  51. package/comandos/especdev/memorizar.md +31 -0
  52. package/comandos/especdev/mesa-redonda.md +60 -0
  53. package/comandos/especdev/mesa-tecnica.md +144 -0
  54. package/comandos/especdev/migrar.md +237 -0
  55. package/comandos/especdev/minar-referencias.md +214 -0
  56. package/comandos/especdev/planificar-tecnico.md +186 -0
  57. package/comandos/especdev/planning.md +264 -0
  58. package/comandos/especdev/poc.md +302 -0
  59. package/comandos/especdev/presentar.md +75 -0
  60. package/comandos/especdev/proponer.md +69 -0
  61. package/comandos/especdev/pseudocodigo.md +49 -0
  62. package/comandos/especdev/rapido.md +69 -0
  63. package/comandos/especdev/reflexionar.md +53 -0
  64. package/comandos/especdev/retro.md +14 -0
  65. package/comandos/especdev/reversa.md +155 -0
  66. package/comandos/especdev/revisar.md +231 -0
  67. package/comandos/especdev/traspasar.md +76 -0
  68. package/comandos/especdev/traspaso.md +43 -0
  69. package/comandos/especdev/uat.md +84 -0
  70. package/comandos/especdev/validar-spec.md +58 -0
  71. package/comandos/especdev/validar.md +40 -0
  72. package/comandos/historias-generar.md +74 -0
  73. package/comandos/razonar/5-porques.md +42 -0
  74. package/comandos/razonar/circulo-competencia.md +22 -0
  75. package/comandos/razonar/costo-oportunidad.md +21 -0
  76. package/comandos/razonar/inversion.md +40 -0
  77. package/comandos/razonar/mapa-territorio.md +22 -0
  78. package/comandos/razonar/minimizar-arrepentimiento.md +20 -0
  79. package/comandos/razonar/pareto.md +32 -0
  80. package/comandos/razonar/pre-mortem.md +22 -0
  81. package/comandos/razonar/primeros-principios.md +57 -0
  82. package/comandos/razonar/probabilistico.md +21 -0
  83. package/comandos/razonar/reversibilidad.md +27 -0
  84. package/comandos/razonar/rlm-cadena-pensamiento.md +189 -0
  85. package/comandos/razonar/rlm-descomposicion.md +216 -0
  86. package/comandos/razonar/rlm-verificacion.md +169 -0
  87. package/comandos/razonar/segundo-orden.md +35 -0
  88. package/ganchos/parar.md +10 -0
  89. package/ganchos/post-herramienta.md +9 -0
  90. package/ganchos/pre-herramienta.md +19 -0
  91. package/habilidades/arnes-agente/HABILIDAD.md +164 -0
  92. package/habilidades/auto-correccion/HABILIDAD.md +114 -0
  93. package/habilidades/brainstorming/HABILIDAD.md +88 -0
  94. package/habilidades/cambio-carpeta/HABILIDAD.md +100 -0
  95. package/habilidades/code-rag/HABILIDAD.md +306 -0
  96. package/habilidades/contabilidad-tokens/HABILIDAD.md +109 -0
  97. package/habilidades/delta-specs/HABILIDAD.md +102 -0
  98. package/habilidades/desarrollo-subagentes/HABILIDAD.md +51 -0
  99. package/habilidades/deteccion-loops/HABILIDAD.md +168 -0
  100. package/habilidades/deteccion-stubs/HABILIDAD.md +204 -0
  101. package/habilidades/devlog/HABILIDAD.md +84 -0
  102. package/habilidades/documentacion-viva/HABILIDAD.md +231 -0
  103. package/habilidades/estimacion/HABILIDAD.md +48 -0
  104. package/habilidades/extensiones-presets/HABILIDAD.md +133 -0
  105. package/habilidades/generador-specs/HABILIDAD.md +37 -0
  106. package/habilidades/ingenieria-contexto/HABILIDAD.md +34 -0
  107. package/habilidades/integracion-mcp/HABILIDAD.md +59 -0
  108. package/habilidades/leyes-hierro/HABILIDAD.md +45 -0
  109. package/habilidades/mapa-arquitectonico/HABILIDAD.md +93 -0
  110. package/habilidades/memoria-persistente/HABILIDAD.md +97 -0
  111. package/habilidades/obsidian/HABILIDAD.md +93 -0
  112. package/habilidades/optimizacion-tokens/HABILIDAD.md +179 -0
  113. package/habilidades/optimizador-contexto/HABILIDAD.md +106 -0
  114. package/habilidades/orquestacion-autonoma/HABILIDAD.md +133 -0
  115. package/habilidades/permisos-seguridad/HABILIDAD.md +76 -0
  116. package/habilidades/persona/HABILIDAD.md +66 -0
  117. package/habilidades/planning-equipo/HABILIDAD.md +169 -0
  118. package/habilidades/presentaciones/HABILIDAD.md +63 -0
  119. package/habilidades/proyecciones-costo/HABILIDAD.md +54 -0
  120. package/habilidades/prueba-trabajo/HABILIDAD.md +131 -0
  121. package/habilidades/razonamiento/HABILIDAD.md +69 -0
  122. package/habilidades/recuperacion-sesion/HABILIDAD.md +27 -0
  123. package/habilidades/refactorizacion-solid/HABILIDAD.md +182 -0
  124. package/habilidades/reflexion/HABILIDAD.md +37 -0
  125. package/habilidades/rigor-progresivo/HABILIDAD.md +109 -0
  126. package/habilidades/rlm/HABILIDAD.md +85 -0
  127. package/habilidades/routing-modelos/HABILIDAD.md +79 -0
  128. package/habilidades/salud-habilidades/HABILIDAD.md +63 -0
  129. package/habilidades/schemas-dbml/HABILIDAD.md +101 -0
  130. package/habilidades/trazabilidad/HABILIDAD.md +63 -0
  131. package/habilidades/ui-ux-design/HABILIDAD.md +76 -0
  132. package/habilidades/validacion-nyquist/HABILIDAD.md +161 -0
  133. package/habilidades/worktrees/HABILIDAD.md +80 -0
  134. package/locales/en.json +179 -0
  135. package/locales/es.json +179 -0
  136. package/locales/pt.json +179 -0
  137. package/package.json +48 -0
  138. package/plantillas/checklist-requisitos.md +31 -0
  139. package/plantillas/docker/Dockerfile +16 -0
  140. package/plantillas/docker/docker-compose.yml +28 -0
  141. package/plantillas/especdev/WORKFLOW.md +118 -0
  142. package/plantillas/especdev/config.yaml +27 -0
  143. package/plantillas/especdev/en/config.yaml +27 -0
  144. package/plantillas/especdev/en/decisions.md +17 -0
  145. package/plantillas/especdev/en/deferred-work.md +17 -0
  146. package/plantillas/especdev/en/findings.md +7 -0
  147. package/plantillas/especdev/en/knowledge.md +19 -0
  148. package/plantillas/especdev/en/plan.md +35 -0
  149. package/plantillas/especdev/en/progress.md +7 -0
  150. package/plantillas/especdev/en/project-constitution.md +53 -0
  151. package/plantillas/especdev/en/pseudocode.md +35 -0
  152. package/plantillas/especdev/en/runtime.md +26 -0
  153. package/plantillas/especdev/en/status.md +16 -0
  154. package/plantillas/especdev/es/config.yaml +27 -0
  155. package/plantillas/especdev/es/conocimiento.md +19 -0
  156. package/plantillas/especdev/es/constitucion-proyecto.md +53 -0
  157. package/plantillas/especdev/es/decisiones.md +17 -0
  158. package/plantillas/especdev/es/deuda-scope.md +17 -0
  159. package/plantillas/especdev/es/estado.md +16 -0
  160. package/plantillas/especdev/es/hallazgos.md +7 -0
  161. package/plantillas/especdev/es/plan.md +35 -0
  162. package/plantillas/especdev/es/progreso.md +7 -0
  163. package/plantillas/especdev/es/pseudocodigo.md +35 -0
  164. package/plantillas/especdev/es/runtime.md +26 -0
  165. package/plantillas/especdev/estado.md +16 -0
  166. package/plantillas/especdev/hallazgos.md +7 -0
  167. package/plantillas/especdev/isa.yml +152 -0
  168. package/plantillas/especdev/plan.md +35 -0
  169. package/plantillas/especdev/progreso.md +7 -0
  170. package/plantillas/especdev/pt/config.yaml +27 -0
  171. package/plantillas/especdev/pt/conhecimento.md +19 -0
  172. package/plantillas/especdev/pt/constituicao-projeto.md +53 -0
  173. package/plantillas/especdev/pt/decisoes.md +17 -0
  174. package/plantillas/especdev/pt/descobertas.md +7 -0
  175. package/plantillas/especdev/pt/estado.md +16 -0
  176. package/plantillas/especdev/pt/plano.md +35 -0
  177. package/plantillas/especdev/pt/progresso.md +7 -0
  178. package/plantillas/especdev/pt/pseudocodigo.md +35 -0
  179. package/plantillas/especdev/pt/runtime.md +26 -0
  180. package/plantillas/especdev/pt/trabalho-diferido.md +17 -0
  181. package/plantillas/estimado-desarrollo.md +43 -0
  182. package/prompt.md +16 -0
  183. package/reglas/constitucion.md +122 -0
  184. package/reglas/hooks-parar.md +102 -0
  185. package/reglas/i18n.md +47 -0
  186. package/reglas/leyes-hierro.md +18 -0
  187. package/reglas/puertas-calidad.md +87 -0
  188. package/reglas/reglas-desviacion.md +36 -0
  189. package/reglas/reglas-trabajo-globales.md +171 -0
  190. package/reglas/skills-best-practices.md +109 -0
  191. package/scripts/.claude/commands/bucle-completar.md +13 -0
  192. package/scripts/.claude/commands/bucle-estado.md +13 -0
  193. package/scripts/.claude/commands/bucle.md +74 -0
  194. package/scripts/.claude/commands/especdev/actualizar.md +200 -0
  195. package/scripts/.claude/commands/especdev/agente.md +43 -0
  196. package/scripts/.claude/commands/especdev/analizar-sesiones.md +158 -0
  197. package/scripts/.claude/commands/especdev/aplicar.md +73 -0
  198. package/scripts/.claude/commands/especdev/archivar.md +69 -0
  199. package/scripts/.claude/commands/especdev/auditar-seguridad.md +234 -0
  200. package/scripts/.claude/commands/especdev/auditar.md +15 -0
  201. package/scripts/.claude/commands/especdev/avance-rapido.md +64 -0
  202. package/scripts/.claude/commands/especdev/cambios.md +14 -0
  203. package/scripts/.claude/commands/especdev/cerrar-sesion.md +88 -0
  204. package/scripts/.claude/commands/especdev/clarificar.md +98 -0
  205. package/scripts/.claude/commands/especdev/comenzar.md +77 -0
  206. package/scripts/.claude/commands/especdev/completo.md +49 -0
  207. package/scripts/.claude/commands/especdev/continuar.md +59 -0
  208. package/scripts/.claude/commands/especdev/contrato-api.md +223 -0
  209. package/scripts/.claude/commands/especdev/contrato-ui.md +245 -0
  210. package/scripts/.claude/commands/especdev/desglosar.md +172 -0
  211. package/scripts/.claude/commands/especdev/destilar.md +211 -0
  212. package/scripts/.claude/commands/especdev/detectar-ambiguedad.md +81 -0
  213. package/scripts/.claude/commands/especdev/diagnostico.md +92 -0
  214. package/scripts/.claude/commands/especdev/dise/303/261ar.md +74 -0
  215. package/scripts/.claude/commands/especdev/donde-estoy.md +32 -0
  216. package/scripts/.claude/commands/especdev/especificar.md +189 -0
  217. package/scripts/.claude/commands/especdev/estado.md +46 -0
  218. package/scripts/.claude/commands/especdev/estimar.md +141 -0
  219. package/scripts/.claude/commands/especdev/explorar.md +175 -0
  220. package/scripts/.claude/commands/especdev/guardian.md +99 -0
  221. package/scripts/.claude/commands/especdev/historial.md +14 -0
  222. package/scripts/.claude/commands/especdev/implementar.md +227 -0
  223. package/scripts/.claude/commands/especdev/incorporar.md +71 -0
  224. package/scripts/.claude/commands/especdev/iniciar.md +82 -0
  225. package/scripts/.claude/commands/especdev/limpiar-slop.md +88 -0
  226. package/scripts/.claude/commands/especdev/memorizar.md +31 -0
  227. package/scripts/.claude/commands/especdev/mesa-redonda.md +60 -0
  228. package/scripts/.claude/commands/especdev/mesa-tecnica.md +144 -0
  229. package/scripts/.claude/commands/especdev/migrar.md +237 -0
  230. package/scripts/.claude/commands/especdev/minar-referencias.md +214 -0
  231. package/scripts/.claude/commands/especdev/planificar-tecnico.md +186 -0
  232. package/scripts/.claude/commands/especdev/planning.md +264 -0
  233. package/scripts/.claude/commands/especdev/poc.md +302 -0
  234. package/scripts/.claude/commands/especdev/proponer.md +69 -0
  235. package/scripts/.claude/commands/especdev/rapido.md +69 -0
  236. package/scripts/.claude/commands/especdev/reflexionar.md +53 -0
  237. package/scripts/.claude/commands/especdev/retro.md +14 -0
  238. package/scripts/.claude/commands/especdev/reversa.md +155 -0
  239. package/scripts/.claude/commands/especdev/revisar.md +221 -0
  240. package/scripts/.claude/commands/especdev/traspasar.md +76 -0
  241. package/scripts/.claude/commands/especdev/traspaso.md +43 -0
  242. package/scripts/.claude/commands/especdev/validar.md +40 -0
  243. package/scripts/.claude/commands/historias-generar.md +74 -0
  244. package/scripts/.claude/commands/razonar/5-porques.md +42 -0
  245. package/scripts/.claude/commands/razonar/circulo-competencia.md +22 -0
  246. package/scripts/.claude/commands/razonar/costo-oportunidad.md +21 -0
  247. package/scripts/.claude/commands/razonar/inversion.md +40 -0
  248. package/scripts/.claude/commands/razonar/mapa-territorio.md +22 -0
  249. package/scripts/.claude/commands/razonar/minimizar-arrepentimiento.md +20 -0
  250. package/scripts/.claude/commands/razonar/pareto.md +32 -0
  251. package/scripts/.claude/commands/razonar/pre-mortem.md +22 -0
  252. package/scripts/.claude/commands/razonar/primeros-principios.md +57 -0
  253. package/scripts/.claude/commands/razonar/probabilistico.md +21 -0
  254. package/scripts/.claude/commands/razonar/reversibilidad.md +27 -0
  255. package/scripts/.claude/commands/razonar/rlm-cadena-pensamiento.md +189 -0
  256. package/scripts/.claude/commands/razonar/rlm-descomposicion.md +216 -0
  257. package/scripts/.claude/commands/razonar/rlm-verificacion.md +169 -0
  258. package/scripts/.claude/commands/razonar/segundo-orden.md +35 -0
  259. package/scripts/.claude/don-cheli/AGENTS.md +20 -0
  260. package/scripts/.claude/don-cheli/CLAUDE.md +114 -0
  261. package/scripts/.claude/don-cheli/NOTICE +17 -0
  262. package/scripts/.claude/don-cheli/VERSION +1 -0
  263. package/scripts/.claude/don-cheli/agentes/README.md +28 -0
  264. package/scripts/.claude/don-cheli/agentes/prompts/estimador.md +29 -0
  265. package/scripts/.claude/don-cheli/folder-map.json +19 -0
  266. package/scripts/.claude/don-cheli/ganchos/parar.md +10 -0
  267. package/scripts/.claude/don-cheli/ganchos/post-herramienta.md +9 -0
  268. package/scripts/.claude/don-cheli/ganchos/pre-herramienta.md +19 -0
  269. package/scripts/.claude/don-cheli/habilidades/arnes-agente/HABILIDAD.md +155 -0
  270. package/scripts/.claude/don-cheli/habilidades/auto-correccion/HABILIDAD.md +105 -0
  271. package/scripts/.claude/don-cheli/habilidades/brainstorming/HABILIDAD.md +79 -0
  272. package/scripts/.claude/don-cheli/habilidades/cambio-carpeta/HABILIDAD.md +91 -0
  273. package/scripts/.claude/don-cheli/habilidades/code-rag/HABILIDAD.md +297 -0
  274. package/scripts/.claude/don-cheli/habilidades/contabilidad-tokens/HABILIDAD.md +100 -0
  275. package/scripts/.claude/don-cheli/habilidades/delta-specs/HABILIDAD.md +93 -0
  276. package/scripts/.claude/don-cheli/habilidades/desarrollo-subagentes/HABILIDAD.md +42 -0
  277. package/scripts/.claude/don-cheli/habilidades/deteccion-loops/HABILIDAD.md +159 -0
  278. package/scripts/.claude/don-cheli/habilidades/deteccion-stubs/HABILIDAD.md +195 -0
  279. package/scripts/.claude/don-cheli/habilidades/devlog/HABILIDAD.md +75 -0
  280. package/scripts/.claude/don-cheli/habilidades/documentacion-viva/HABILIDAD.md +222 -0
  281. package/scripts/.claude/don-cheli/habilidades/estimacion/HABILIDAD.md +39 -0
  282. package/scripts/.claude/don-cheli/habilidades/extensiones-presets/HABILIDAD.md +124 -0
  283. package/scripts/.claude/don-cheli/habilidades/generador-specs/HABILIDAD.md +28 -0
  284. package/scripts/.claude/don-cheli/habilidades/ingenieria-contexto/HABILIDAD.md +25 -0
  285. package/scripts/.claude/don-cheli/habilidades/integracion-mcp/HABILIDAD.md +50 -0
  286. package/scripts/.claude/don-cheli/habilidades/leyes-hierro/HABILIDAD.md +36 -0
  287. package/scripts/.claude/don-cheli/habilidades/mapa-arquitectonico/HABILIDAD.md +84 -0
  288. package/scripts/.claude/don-cheli/habilidades/memoria-persistente/HABILIDAD.md +88 -0
  289. package/scripts/.claude/don-cheli/habilidades/obsidian/HABILIDAD.md +84 -0
  290. package/scripts/.claude/don-cheli/habilidades/optimizacion-tokens/HABILIDAD.md +170 -0
  291. package/scripts/.claude/don-cheli/habilidades/optimizador-contexto/HABILIDAD.md +97 -0
  292. package/scripts/.claude/don-cheli/habilidades/orquestacion-autonoma/HABILIDAD.md +124 -0
  293. package/scripts/.claude/don-cheli/habilidades/permisos-seguridad/HABILIDAD.md +67 -0
  294. package/scripts/.claude/don-cheli/habilidades/persona/HABILIDAD.md +57 -0
  295. package/scripts/.claude/don-cheli/habilidades/presentaciones/HABILIDAD.md +54 -0
  296. package/scripts/.claude/don-cheli/habilidades/prueba-trabajo/HABILIDAD.md +122 -0
  297. package/scripts/.claude/don-cheli/habilidades/razonamiento/HABILIDAD.md +60 -0
  298. package/scripts/.claude/don-cheli/habilidades/recuperacion-sesion/HABILIDAD.md +18 -0
  299. package/scripts/.claude/don-cheli/habilidades/refactorizacion-solid/HABILIDAD.md +173 -0
  300. package/scripts/.claude/don-cheli/habilidades/reflexion/HABILIDAD.md +15 -0
  301. package/scripts/.claude/don-cheli/habilidades/rigor-progresivo/HABILIDAD.md +100 -0
  302. package/scripts/.claude/don-cheli/habilidades/rlm/HABILIDAD.md +76 -0
  303. package/scripts/.claude/don-cheli/habilidades/schemas-dbml/HABILIDAD.md +92 -0
  304. package/scripts/.claude/don-cheli/habilidades/trazabilidad/HABILIDAD.md +54 -0
  305. package/scripts/.claude/don-cheli/habilidades/ui-ux-design/HABILIDAD.md +67 -0
  306. package/scripts/.claude/don-cheli/habilidades/validacion-nyquist/HABILIDAD.md +152 -0
  307. package/scripts/.claude/don-cheli/habilidades/worktrees/HABILIDAD.md +71 -0
  308. package/scripts/.claude/don-cheli/locale +1 -0
  309. package/scripts/.claude/don-cheli/locales/en.json +179 -0
  310. package/scripts/.claude/don-cheli/locales/es.json +179 -0
  311. package/scripts/.claude/don-cheli/locales/pt.json +179 -0
  312. package/scripts/.claude/don-cheli/plantillas/checklist-requisitos.md +31 -0
  313. package/scripts/.claude/don-cheli/plantillas/docker/Dockerfile +16 -0
  314. package/scripts/.claude/don-cheli/plantillas/docker/docker-compose.yml +28 -0
  315. package/scripts/.claude/don-cheli/plantillas/especdev/WORKFLOW.md +118 -0
  316. package/scripts/.claude/don-cheli/plantillas/especdev/config.yaml +27 -0
  317. package/scripts/.claude/don-cheli/plantillas/especdev/en/config.yaml +27 -0
  318. package/scripts/.claude/don-cheli/plantillas/especdev/en/findings.md +7 -0
  319. package/scripts/.claude/don-cheli/plantillas/especdev/en/plan.md +35 -0
  320. package/scripts/.claude/don-cheli/plantillas/especdev/en/progress.md +7 -0
  321. package/scripts/.claude/don-cheli/plantillas/especdev/en/status.md +16 -0
  322. package/scripts/.claude/don-cheli/plantillas/especdev/es/config.yaml +27 -0
  323. package/scripts/.claude/don-cheli/plantillas/especdev/es/estado.md +16 -0
  324. package/scripts/.claude/don-cheli/plantillas/especdev/es/hallazgos.md +7 -0
  325. package/scripts/.claude/don-cheli/plantillas/especdev/es/plan.md +35 -0
  326. package/scripts/.claude/don-cheli/plantillas/especdev/es/progreso.md +7 -0
  327. package/scripts/.claude/don-cheli/plantillas/especdev/estado.md +16 -0
  328. package/scripts/.claude/don-cheli/plantillas/especdev/hallazgos.md +7 -0
  329. package/scripts/.claude/don-cheli/plantillas/especdev/isa.yml +152 -0
  330. package/scripts/.claude/don-cheli/plantillas/especdev/plan.md +35 -0
  331. package/scripts/.claude/don-cheli/plantillas/especdev/progreso.md +7 -0
  332. package/scripts/.claude/don-cheli/plantillas/especdev/pt/config.yaml +27 -0
  333. package/scripts/.claude/don-cheli/plantillas/especdev/pt/descobertas.md +7 -0
  334. package/scripts/.claude/don-cheli/plantillas/especdev/pt/estado.md +16 -0
  335. package/scripts/.claude/don-cheli/plantillas/especdev/pt/plano.md +35 -0
  336. package/scripts/.claude/don-cheli/plantillas/especdev/pt/progresso.md +7 -0
  337. package/scripts/.claude/don-cheli/plantillas/estimado-desarrollo.md +43 -0
  338. package/scripts/.claude/don-cheli/prompt.md +16 -0
  339. package/scripts/.claude/don-cheli/reglas/constitucion.md +122 -0
  340. package/scripts/.claude/don-cheli/reglas/hooks-parar.md +102 -0
  341. package/scripts/.claude/don-cheli/reglas/i18n.md +47 -0
  342. package/scripts/.claude/don-cheli/reglas/leyes-hierro.md +18 -0
  343. package/scripts/.claude/don-cheli/reglas/puertas-calidad.md +87 -0
  344. package/scripts/.claude/don-cheli/reglas/reglas-desviacion.md +36 -0
  345. package/scripts/.claude/don-cheli/reglas/reglas-trabajo-globales.md +171 -0
  346. package/scripts/.claude/don-cheli/scripts/bucle.sh +103 -0
  347. package/scripts/.claude/don-cheli/scripts/instalar.sh +522 -0
  348. package/scripts/.claude/don-cheli/scripts/validar.sh +70 -0
  349. package/scripts/bucle.sh +103 -0
  350. package/scripts/instalar.sh +587 -0
  351. package/scripts/validar.sh +70 -0
@@ -0,0 +1,587 @@
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
+ CLEANUP_TMPDIR=""
10
+
11
+ # Detect if running via pipe (curl | bash) or directly
12
+ if [ -t 0 ] && [ -f "$0" ]; then
13
+ # Running directly from a file
14
+ SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
15
+ else
16
+ # Running via pipe (curl | bash) — clone repo to temp dir
17
+ # Use INSTALL_TMPDIR to avoid colliding with system $TMPDIR
18
+ INSTALL_TMPDIR=$(mktemp -d)
19
+ CLEANUP_TMPDIR="$INSTALL_TMPDIR"
20
+ echo -e " ⬇️ Downloading Don Cheli v${VERSION}..."
21
+ if ! git clone --depth 1 --quiet "$REPO_URL" "$INSTALL_TMPDIR/don-cheli-sdd" 2>/dev/null; then
22
+ echo -e "\033[0;31m ✗ Failed to clone repository. Check your internet connection.\033[0m"
23
+ rm -rf "$INSTALL_TMPDIR"
24
+ exit 1
25
+ fi
26
+ SCRIPT_DIR="$INSTALL_TMPDIR/don-cheli-sdd"
27
+ echo -e " \033[0;32m✓\033[0m Downloaded successfully."
28
+ echo ""
29
+ fi
30
+
31
+ cleanup() {
32
+ if [ -n "$CLEANUP_TMPDIR" ] && [ -d "$CLEANUP_TMPDIR" ]; then
33
+ rm -rf "$CLEANUP_TMPDIR"
34
+ fi
35
+ }
36
+ trap cleanup EXIT
37
+
38
+ # Colors
39
+ GREEN='\033[0;32m'
40
+ YELLOW='\033[1;33m'
41
+ RED='\033[0;31m'
42
+ CYAN='\033[0;36m'
43
+ BOLD='\033[1m'
44
+ DIM='\033[2m'
45
+ NC='\033[0m'
46
+
47
+ # ═══════════════════════════════════════════════════════════════
48
+ # i18n — JSON locale loader (pure bash, no jq dependency)
49
+ # ═══════════════════════════════════════════════════════════════
50
+
51
+ LOCALE="es"
52
+ LOCALE_FILE=""
53
+
54
+ # Extract a flat key from JSON (e.g., "installer.banner_line1")
55
+ # Works without jq — uses grep + sed for simple key-value extraction
56
+ i18n() {
57
+ local key="$1"
58
+ local section="${key%%.*}"
59
+ local rest="${key#*.}"
60
+ local subkey="${rest%%.*}"
61
+ local leaf="${rest#*.}"
62
+
63
+ # Handle 2-level keys (section.key)
64
+ if [ "$rest" = "$leaf" ]; then
65
+ leaf="$subkey"
66
+ subkey=""
67
+ fi
68
+
69
+ if [ -z "$LOCALE_FILE" ] || [ ! -f "$LOCALE_FILE" ]; then
70
+ echo "$key"
71
+ return
72
+ fi
73
+
74
+ local value
75
+ if [ -n "$subkey" ] && [ "$subkey" != "$leaf" ]; then
76
+ # 3-level key: section.subsection.key
77
+ value=$(grep -A1 "\"$leaf\"" "$LOCALE_FILE" | grep -o '"[^"]*"$' | head -1 | tr -d '"' 2>/dev/null)
78
+ else
79
+ # 2-level key: section.key
80
+ value=$(grep "\"$leaf\"" "$LOCALE_FILE" | head -1 | sed 's/.*: *"//;s/",\{0,1\}$//' 2>/dev/null)
81
+ fi
82
+
83
+ if [ -n "$value" ]; then
84
+ echo "$value"
85
+ else
86
+ echo "$key"
87
+ fi
88
+ }
89
+
90
+ # Template replacement: {{var}} → value
91
+ tpl() {
92
+ local text="$1"
93
+ shift
94
+ while [ $# -gt 0 ]; do
95
+ local var="$1"
96
+ local val="$2"
97
+ text="${text//\{\{$var\}\}/$val}"
98
+ shift 2
99
+ done
100
+ echo "$text"
101
+ }
102
+
103
+ load_locale() {
104
+ LOCALE_FILE="${SCRIPT_DIR}/locales/${LOCALE}.json"
105
+ if [ ! -f "$LOCALE_FILE" ]; then
106
+ LOCALE_FILE="${SCRIPT_DIR}/locales/es.json"
107
+ LOCALE="es"
108
+ fi
109
+ }
110
+
111
+ # ═══════════════════════════════════════════════════════════════
112
+ # Localized folder names per language
113
+ # ═══════════════════════════════════════════════════════════════
114
+
115
+ set_folder_names() {
116
+ case "$LOCALE" in
117
+ en)
118
+ DIR_SKILLS="skills"
119
+ DIR_RULES="rules"
120
+ DIR_TEMPLATES="templates"
121
+ DIR_HOOKS="hooks"
122
+ DIR_AGENTS="agents"
123
+ DIR_SCRIPTS="scripts"
124
+ DIR_ESPECDEV=".especdev"
125
+ FILE_STATUS="status.md"
126
+ FILE_FINDINGS="findings.md"
127
+ FILE_PLAN="plan.md"
128
+ FILE_PROGRESS="progress.md"
129
+ FILE_PROPOSAL="proposal.md"
130
+ FILE_CONFIG="config.yaml"
131
+ ;;
132
+ pt)
133
+ DIR_SKILLS="habilidades"
134
+ DIR_RULES="regras"
135
+ DIR_TEMPLATES="modelos"
136
+ DIR_HOOKS="ganchos"
137
+ DIR_AGENTS="agentes"
138
+ DIR_SCRIPTS="scripts"
139
+ DIR_ESPECDEV=".especdev"
140
+ FILE_STATUS="estado.md"
141
+ FILE_FINDINGS="descobertas.md"
142
+ FILE_PLAN="plano.md"
143
+ FILE_PROGRESS="progresso.md"
144
+ FILE_PROPOSAL="proposta.md"
145
+ FILE_CONFIG="config.yaml"
146
+ ;;
147
+ *) # es (default)
148
+ DIR_SKILLS="habilidades"
149
+ DIR_RULES="reglas"
150
+ DIR_TEMPLATES="plantillas"
151
+ DIR_HOOKS="ganchos"
152
+ DIR_AGENTS="agentes"
153
+ DIR_SCRIPTS="scripts"
154
+ DIR_ESPECDEV=".especdev"
155
+ FILE_STATUS="estado.md"
156
+ FILE_FINDINGS="hallazgos.md"
157
+ FILE_PLAN="plan.md"
158
+ FILE_PROGRESS="progreso.md"
159
+ FILE_PROPOSAL="propuesta.md"
160
+ FILE_CONFIG="config.yaml"
161
+ ;;
162
+ esac
163
+ }
164
+
165
+ # ═══════════════════════════════════════════════════════════════
166
+ # STEP 0 — Language Selection (FIRST THING THE USER SEES)
167
+ # ═══════════════════════════════════════════════════════════════
168
+
169
+ # Parse --lang flag from arguments (e.g., --lang es)
170
+ LANG_FLAG=""
171
+ for arg in "$@"; do
172
+ case "$arg" in
173
+ --lang=*) LANG_FLAG="${arg#*=}" ;;
174
+ esac
175
+ done
176
+ # Also check positional: --lang es
177
+ PREV=""
178
+ for arg in "$@"; do
179
+ if [ "$PREV" = "--lang" ]; then
180
+ LANG_FLAG="$arg"
181
+ fi
182
+ PREV="$arg"
183
+ done
184
+
185
+ clear 2>/dev/null || true
186
+ echo ""
187
+ echo -e "${CYAN}${BOLD}"
188
+ echo " ╔═══════════════════════════════════════════════════════════╗"
189
+ echo " ║ ║"
190
+ echo " ║ 🏗️ Don Cheli — SDD Framework ║"
191
+ echo " ║ ║"
192
+ echo " ╚═══════════════════════════════════════════════════════════╝"
193
+ echo -e "${NC}"
194
+ echo ""
195
+
196
+ if [ -n "$LANG_FLAG" ]; then
197
+ # Language provided via flag — skip interactive prompt
198
+ LANG_CHOICE="$LANG_FLAG"
199
+ else
200
+ echo -e "${BOLD} 🌍 Selecciona tu idioma / Select your language / Selecione seu idioma${NC}"
201
+ echo ""
202
+ echo -e " ${CYAN}1)${NC} 🇪🇸 Español"
203
+ echo -e " ${CYAN}2)${NC} 🇬🇧 English"
204
+ echo -e " ${CYAN}3)${NC} 🇧🇷 Português"
205
+ echo ""
206
+ echo -ne " ${BOLD}▸ ${NC}"
207
+ # Read from /dev/tty to work even when script is piped via curl
208
+ if ! read -r LANG_CHOICE < /dev/tty 2>/dev/null; then
209
+ echo ""
210
+ echo -e " ${YELLOW}⚠ Cannot read input (piped mode). Using default: Español${NC}"
211
+ echo -e " ${DIM} Tip: use --lang es|en|pt to set language non-interactively${NC}"
212
+ LANG_CHOICE="es"
213
+ fi
214
+ fi
215
+
216
+ case "$LANG_CHOICE" in
217
+ 1|es|ES|español|Español)
218
+ LOCALE="es"
219
+ LANG_NAME="Español"
220
+ ;;
221
+ 2|en|EN|english|English)
222
+ LOCALE="en"
223
+ LANG_NAME="English"
224
+ ;;
225
+ 3|pt|PT|português|Português|portugues)
226
+ LOCALE="pt"
227
+ LANG_NAME="Português"
228
+ ;;
229
+ *)
230
+ echo ""
231
+ echo -e " ${RED}✗ Invalid option / Opción inválida / Opção inválida${NC}"
232
+ echo -e " ${DIM} Using default: Español${NC}"
233
+ LOCALE="es"
234
+ LANG_NAME="Español"
235
+ ;;
236
+ esac
237
+
238
+ load_locale
239
+ set_folder_names
240
+
241
+ echo ""
242
+ echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.language_selected)" language "$LANG_NAME")"
243
+ echo ""
244
+ sleep 0.5
245
+
246
+ # ═══════════════════════════════════════════════════════════════
247
+ # Banner (in selected language)
248
+ # ═══════════════════════════════════════════════════════════════
249
+
250
+ BANNER_1=$(tpl "$(i18n installer.banner_line1)" version "$VERSION")
251
+ BANNER_2=$(i18n installer.banner_line2)
252
+
253
+ echo -e "${CYAN}${BOLD}"
254
+ echo " ┌───────────────────────────────────────────────────────┐"
255
+ printf " │ %-53s │\n" "$BANNER_1"
256
+ printf " │ %-53s │\n" "$BANNER_2"
257
+ echo " └───────────────────────────────────────────────────────┘"
258
+ echo -e "${NC}"
259
+
260
+ # ═══════════════════════════════════════════════════════════════
261
+ # Detect installation mode
262
+ # ═══════════════════════════════════════════════════════════════
263
+
264
+ MODE="local"
265
+ for arg in "$@"; do
266
+ if [ "$arg" = "--global" ]; then
267
+ MODE="global"
268
+ fi
269
+ done
270
+
271
+ if [ "$MODE" == "global" ]; then
272
+ FRAMEWORK_HOME="$HOME/.claude/don-cheli"
273
+ COMMANDS_DIR="$HOME/.claude/commands"
274
+ echo -e " ${YELLOW}$(i18n installer.mode_global)${NC}"
275
+ else
276
+ FRAMEWORK_HOME="./.claude/don-cheli"
277
+ COMMANDS_DIR="./.claude/commands"
278
+ echo -e " ${YELLOW}$(i18n installer.mode_local)${NC}"
279
+ fi
280
+
281
+ echo -e " ${DIM}$(tpl "$(i18n installer.framework_path)" path "$FRAMEWORK_HOME")${NC}"
282
+ echo -e " ${DIM}$(tpl "$(i18n installer.commands_path)" path "$COMMANDS_DIR")${NC}"
283
+ echo ""
284
+
285
+ # ═══════════════════════════════════════════════════════════════
286
+ # 1. Create structure
287
+ # ═══════════════════════════════════════════════════════════════
288
+
289
+ # Guard: abort if FRAMEWORK_HOME is empty to prevent rm -rf on system root
290
+ if [ -z "$FRAMEWORK_HOME" ]; then
291
+ echo -e " ${RED}✗ Error: FRAMEWORK_HOME is empty. Aborting to prevent data loss.${NC}"
292
+ exit 1
293
+ fi
294
+
295
+ # Clean previous locale folders to avoid leftovers from other languages
296
+ echo -e " 🧹 Cleaning previous installation..."
297
+ for OLD_DIR in habilidades skills reglas rules plantillas templates modelos ganchos hooks agentes agents; do
298
+ if [ -d "${FRAMEWORK_HOME}/${OLD_DIR}" ]; then
299
+ rm -rf "${FRAMEWORK_HOME}/${OLD_DIR}"
300
+ fi
301
+ done
302
+
303
+ echo -e " 📁 $(i18n installer.step_structure)"
304
+ mkdir -p "${FRAMEWORK_HOME}/${DIR_SKILLS}"
305
+ mkdir -p "${FRAMEWORK_HOME}/${DIR_RULES}"
306
+ mkdir -p "${FRAMEWORK_HOME}/${DIR_TEMPLATES}"
307
+ mkdir -p "${FRAMEWORK_HOME}/${DIR_HOOKS}"
308
+ mkdir -p "${FRAMEWORK_HOME}/${DIR_AGENTS}"
309
+ mkdir -p "${FRAMEWORK_HOME}/${DIR_SCRIPTS}"
310
+ mkdir -p "${FRAMEWORK_HOME}/locales"
311
+ mkdir -p "${COMMANDS_DIR}/especdev"
312
+ mkdir -p "${COMMANDS_DIR}/dc"
313
+ mkdir -p "${COMMANDS_DIR}/razonar"
314
+
315
+ # ═══════════════════════════════════════════════════════════════
316
+ # 2. Copy commands
317
+ # ═══════════════════════════════════════════════════════════════
318
+
319
+ echo -e " 📋 $(i18n installer.step_commands)"
320
+ if [ -d "${SCRIPT_DIR}/comandos/especdev" ]; then
321
+ cp -r "${SCRIPT_DIR}/comandos/especdev/"*.md "${COMMANDS_DIR}/especdev/" 2>/dev/null || true
322
+ # Create /dc: alias (same commands, shorter prefix)
323
+ cp -r "${SCRIPT_DIR}/comandos/especdev/"*.md "${COMMANDS_DIR}/dc/" 2>/dev/null || true
324
+ CMDS_ESPECDEV=$(ls "${COMMANDS_DIR}/especdev/"*.md 2>/dev/null | wc -l | tr -d ' ')
325
+ echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_commands_done)" count "$CMDS_ESPECDEV")"
326
+ echo -e " ${GREEN}✓${NC} /dc:* alias created (${CMDS_ESPECDEV} commands)"
327
+ # Rename dc/ commands to match locale
328
+ if [ "$LOCALE" = "en" ]; then
329
+ cd "${COMMANDS_DIR}/dc/" 2>/dev/null && {
330
+ # Rename Spanish → English (longest names first to avoid conflicts)
331
+ for pair in \
332
+ "analizar-sesiones:analyze-sessions" \
333
+ "auditar-seguridad:security-audit" \
334
+ "avance-rapido:fast-forward" \
335
+ "cerrar-sesion:close-session" \
336
+ "contrato-api:api-contract" \
337
+ "contrato-ui:ui-contract" \
338
+ "crear-skill:create-skill" \
339
+ "detectar-ambiguedad:detect-ambiguity" \
340
+ "limpiar-slop:clean-slop" \
341
+ "mesa-redonda:roundtable" \
342
+ "mesa-tecnica:tech-panel" \
343
+ "minar-referencias:mine-refs" \
344
+ "planificar-tecnico:tech-plan" \
345
+ "validar-spec:validate-spec" \
346
+ "donde-estoy:where-am-i" \
347
+ "pseudocodigo:pseudocode" \
348
+ "reflexionar:reflect" \
349
+ "diagnostico:diagnostic" \
350
+ "especificar:specify" \
351
+ "implementar:implement" \
352
+ "incorporar:onboard" \
353
+ "actualizar:update" \
354
+ "comenzar:start" \
355
+ "continuar:continue" \
356
+ "capturar:capture" \
357
+ "desglosar:breakdown" \
358
+ "destilar:distill" \
359
+ "explorar:explore" \
360
+ "historial:history" \
361
+ "memorizar:memorize" \
362
+ "presentar:present" \
363
+ "proponer:propose" \
364
+ "traspasar:handoff" \
365
+ "traspaso:handover" \
366
+ "archivar:archive" \
367
+ "completo:full" \
368
+ "guardian:guardian" \
369
+ "iniciar:init" \
370
+ "migrar:migrate" \
371
+ "reversa:reverse" \
372
+ "revisar:review" \
373
+ "cambios:changes" \
374
+ "aplicar:apply" \
375
+ "estimar:estimate" \
376
+ "validar:validate" \
377
+ "clarificar:clarify" \
378
+ "rapido:quick" \
379
+ "estado:status" \
380
+ "agente:agent"; do
381
+ src="${pair%%:*}.md"
382
+ dst="${pair##*:}.md"
383
+ [ -f "$src" ] && mv "$src" "$dst" 2>/dev/null
384
+ done
385
+ cd - >/dev/null
386
+ }
387
+ echo -e " ${GREEN}✓${NC} Commands renamed to English"
388
+ elif [ "$LOCALE" = "pt" ]; then
389
+ cd "${COMMANDS_DIR}/dc/" 2>/dev/null && {
390
+ for pair in \
391
+ "analizar-sesiones:analisar-sessoes" \
392
+ "auditar-seguridad:auditar-segurança" \
393
+ "avance-rapido:avanço-rapido" \
394
+ "cerrar-sesion:fechar-sessao" \
395
+ "crear-skill:criar-skill" \
396
+ "detectar-ambiguedad:detectar-ambiguidade" \
397
+ "limpiar-slop:limpar-slop" \
398
+ "donde-estoy:onde-estou" \
399
+ "reflexionar:refletir" \
400
+ "incorporar:integrar" \
401
+ "actualizar:atualizar" \
402
+ "comenzar:começar" \
403
+ "desglosar:decompor" \
404
+ "presentar:apresentar" \
405
+ "proponer:propor" \
406
+ "traspasar:transferir" \
407
+ "traspaso:transferencia" \
408
+ "archivar:arquivar" \
409
+ "guardian:guardiao" \
410
+ "cambios:mudanças" \
411
+ "historial:historico"; do
412
+ src="${pair%%:*}.md"
413
+ dst="${pair##*:}.md"
414
+ [ -f "$src" ] && mv "$src" "$dst" 2>/dev/null
415
+ done
416
+ cd - >/dev/null
417
+ }
418
+ echo -e " ${GREEN}✓${NC} Commands renamed to Português"
419
+ fi
420
+ fi
421
+ if [ -d "${SCRIPT_DIR}/comandos/razonar" ]; then
422
+ cp -r "${SCRIPT_DIR}/comandos/razonar/"*.md "${COMMANDS_DIR}/razonar/" 2>/dev/null || true
423
+ CMDS_RAZONAR=$(ls "${COMMANDS_DIR}/razonar/"*.md 2>/dev/null | wc -l | tr -d ' ')
424
+ echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_reasoning_done)" count "$CMDS_RAZONAR")"
425
+ fi
426
+ for CMD_FILE in "${SCRIPT_DIR}/comandos/"*.md; do
427
+ [ -f "$CMD_FILE" ] && cp "$CMD_FILE" "${COMMANDS_DIR}/" 2>/dev/null || true
428
+ done
429
+
430
+ # ═══════════════════════════════════════════════════════════════
431
+ # 3. Copy skills
432
+ # ═══════════════════════════════════════════════════════════════
433
+
434
+ echo -e " 🧠 $(i18n installer.step_skills)"
435
+ if [ -d "${SCRIPT_DIR}/habilidades" ]; then
436
+ cp -r "${SCRIPT_DIR}/habilidades/"* "${FRAMEWORK_HOME}/${DIR_SKILLS}/" 2>/dev/null || true
437
+ SKILLS=$(ls -d "${FRAMEWORK_HOME}/${DIR_SKILLS}/"*/ 2>/dev/null | wc -l | tr -d ' ')
438
+ echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_skills_done)" count "$SKILLS")"
439
+ fi
440
+
441
+ # ═══════════════════════════════════════════════════════════════
442
+ # 4. Copy rules
443
+ # ═══════════════════════════════════════════════════════════════
444
+
445
+ echo -e " ⚖️ $(i18n installer.step_rules)"
446
+ if [ -d "${SCRIPT_DIR}/reglas" ]; then
447
+ cp -r "${SCRIPT_DIR}/reglas/"* "${FRAMEWORK_HOME}/${DIR_RULES}/" 2>/dev/null || true
448
+ RULES=$(ls "${FRAMEWORK_HOME}/${DIR_RULES}/"*.md 2>/dev/null | wc -l | tr -d ' ')
449
+ echo -e " ${GREEN}✓${NC} $(tpl "$(i18n installer.step_rules_done)" count "$RULES")"
450
+ fi
451
+
452
+ # ═══════════════════════════════════════════════════════════════
453
+ # 5. Copy templates
454
+ # ═══════════════════════════════════════════════════════════════
455
+
456
+ echo -e " 📄 $(i18n installer.step_templates)"
457
+ if [ -d "${SCRIPT_DIR}/plantillas" ]; then
458
+ cp -r "${SCRIPT_DIR}/plantillas/"* "${FRAMEWORK_HOME}/${DIR_TEMPLATES}/" 2>/dev/null || true
459
+ echo -e " ${GREEN}✓${NC} $(i18n installer.step_templates_done)"
460
+ fi
461
+
462
+ # ═══════════════════════════════════════════════════════════════
463
+ # 6. Copy hooks
464
+ # ═══════════════════════════════════════════════════════════════
465
+
466
+ echo -e " 🪝 $(i18n installer.step_hooks)"
467
+ if [ -d "${SCRIPT_DIR}/ganchos" ]; then
468
+ cp -r "${SCRIPT_DIR}/ganchos/"* "${FRAMEWORK_HOME}/${DIR_HOOKS}/" 2>/dev/null || true
469
+ echo -e " ${GREEN}✓${NC} $(i18n installer.step_hooks_done)"
470
+ fi
471
+
472
+ # ═══════════════════════════════════════════════════════════════
473
+ # 7. Copy agents
474
+ # ═══════════════════════════════════════════════════════════════
475
+
476
+ echo -e " 🤖 $(i18n installer.step_agents)"
477
+ if [ -d "${SCRIPT_DIR}/agentes" ]; then
478
+ cp -r "${SCRIPT_DIR}/agentes/"* "${FRAMEWORK_HOME}/${DIR_AGENTS}/" 2>/dev/null || true
479
+ echo -e " ${GREEN}✓${NC} $(i18n installer.step_agents_done)"
480
+ fi
481
+
482
+ # ═══════════════════════════════════════════════════════════════
483
+ # 8. Copy scripts
484
+ # ═══════════════════════════════════════════════════════════════
485
+
486
+ echo -e " ⚙️ $(i18n installer.step_scripts)"
487
+ cp "${SCRIPT_DIR}/scripts/"*.sh "${FRAMEWORK_HOME}/${DIR_SCRIPTS}/" 2>/dev/null || true
488
+ echo -e " ${GREEN}✓${NC} $(i18n installer.step_scripts_done)"
489
+
490
+ # ═══════════════════════════════════════════════════════════════
491
+ # 9. Copy locales
492
+ # ═══════════════════════════════════════════════════════════════
493
+
494
+ echo -e " 🌍 Copying locales..."
495
+ if [ -d "${SCRIPT_DIR}/locales" ]; then
496
+ cp -r "${SCRIPT_DIR}/locales/"*.json "${FRAMEWORK_HOME}/locales/" 2>/dev/null || true
497
+ echo -e " ${GREEN}✓${NC} es.json, en.json, pt.json"
498
+ fi
499
+
500
+ # ═══════════════════════════════════════════════════════════════
501
+ # 10. Copy root files
502
+ # ═══════════════════════════════════════════════════════════════
503
+
504
+ echo -e " 📝 $(i18n installer.step_reference)"
505
+ for ROOT_FILE in CLAUDE.md AGENTS.md prompt.md NOTICE; do
506
+ if [ -f "${SCRIPT_DIR}/${ROOT_FILE}" ]; then
507
+ cp "${SCRIPT_DIR}/${ROOT_FILE}" "${FRAMEWORK_HOME}/" 2>/dev/null || true
508
+ fi
509
+ done
510
+ echo -e " ${GREEN}✓${NC} $(i18n installer.step_reference_done)"
511
+
512
+ # ═══════════════════════════════════════════════════════════════
513
+ # 11. Copy Antigravity/Gemini compatibility files
514
+ # ═══════════════════════════════════════════════════════════════
515
+
516
+ echo -e " 🔮 $(i18n installer.step_antigravity 2>/dev/null || echo 'Copying Antigravity/Gemini files...')"
517
+ if [ -f "${SCRIPT_DIR}/GEMINI.md" ]; then
518
+ cp "${SCRIPT_DIR}/GEMINI.md" "${FRAMEWORK_HOME}/" 2>/dev/null || true
519
+ fi
520
+ if [ -d "${SCRIPT_DIR}/.agent" ]; then
521
+ mkdir -p "${FRAMEWORK_HOME}/.agent"
522
+ cp -r "${SCRIPT_DIR}/.agent/"* "${FRAMEWORK_HOME}/.agent/" 2>/dev/null || true
523
+ fi
524
+ echo -e " ${GREEN}✓${NC} GEMINI.md, .agent/skills/, .agent/workflows/"
525
+
526
+ # ═══════════════════════════════════════════════════════════════
527
+ # 12. Save locale preference + version
528
+ # ═══════════════════════════════════════════════════════════════
529
+
530
+ echo "${VERSION}" > "${FRAMEWORK_HOME}/VERSION"
531
+ echo "${LOCALE}" > "${FRAMEWORK_HOME}/locale"
532
+
533
+ # Save folder name mapping for Claude to read
534
+ cat > "${FRAMEWORK_HOME}/folder-map.json" << FMEOF
535
+ {
536
+ "locale": "${LOCALE}",
537
+ "dirs": {
538
+ "skills": "${DIR_SKILLS}",
539
+ "rules": "${DIR_RULES}",
540
+ "templates": "${DIR_TEMPLATES}",
541
+ "hooks": "${DIR_HOOKS}",
542
+ "agents": "${DIR_AGENTS}",
543
+ "scripts": "${DIR_SCRIPTS}"
544
+ },
545
+ "files": {
546
+ "status": "${FILE_STATUS}",
547
+ "findings": "${FILE_FINDINGS}",
548
+ "plan": "${FILE_PLAN}",
549
+ "progress": "${FILE_PROGRESS}",
550
+ "proposal": "${FILE_PROPOSAL}",
551
+ "config": "${FILE_CONFIG}"
552
+ }
553
+ }
554
+ FMEOF
555
+
556
+ # ═══════════════════════════════════════════════════════════════
557
+ # Summary
558
+ # ═══════════════════════════════════════════════════════════════
559
+
560
+ echo ""
561
+ echo -e " ${GREEN}${BOLD}══════════════════════════════════════════════════════${NC}"
562
+ echo -e " ${GREEN}${BOLD} ✅ $(tpl "$(i18n installer.success_title)" version "$VERSION")${NC}"
563
+ echo -e " ${GREEN}${BOLD}══════════════════════════════════════════════════════${NC}"
564
+ echo ""
565
+ echo -e " $(i18n installer.structure_title)"
566
+ echo -e " 📂 ${FRAMEWORK_HOME}/"
567
+ echo -e " ├── ${DIR_SKILLS}/ (${SKILLS})"
568
+ echo -e " ├── ${DIR_RULES}/ (${RULES})"
569
+ echo -e " ├── ${DIR_TEMPLATES}/"
570
+ echo -e " ├── ${DIR_HOOKS}/"
571
+ echo -e " ├── ${DIR_AGENTS}/"
572
+ echo -e " ├── locales/ (es, en, pt)"
573
+ echo -e " └── CLAUDE.md"
574
+ echo ""
575
+ echo -e " 📂 ${COMMANDS_DIR}/"
576
+ echo -e " ├── dc/ (${CMDS_ESPECDEV} — short alias)"
577
+ echo -e " ├── especdev/ (${CMDS_ESPECDEV} $(i18n installer.structure_commands))"
578
+ echo -e " └── razonar/ (${CMDS_RAZONAR} $(i18n installer.structure_commands))"
579
+ echo ""
580
+ echo -e " 🌍 Locale: ${BOLD}${LANG_NAME}${NC} (${LOCALE})"
581
+ echo ""
582
+ echo -e " ${CYAN}$(i18n installer.next_steps_title)${NC}"
583
+ echo -e " 1. $(i18n installer.next_step_1)"
584
+ echo -e " 2. $(i18n installer.next_step_2)"
585
+ echo ""
586
+ echo -e " ${GREEN}${BOLD}$(i18n installer.farewell)${NC}"
587
+ 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