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,168 @@
1
+ ---
2
+ nombre: Detección de Loops
3
+ descripcion: "Detectar ciclos infinitos en la ejecución del agente (A→B→A→B) y escalar antes del stop-loss"
4
+ version: 1.0.0
5
+ autor: Don Cheli
6
+ tags: [calidad, loops, ciclos, detección, auto-corrección]
7
+ activacion: "loop detectado", "ciclo infinito", "estoy en un loop", "stuck"
8
+ ---
9
+
10
+ # Habilidad: Detección de Loops en Auto-Corrección
11
+
12
+ **Versión:** 1.0.0
13
+ **Categoría:** Calidad
14
+ **Tipo:** Rígida
15
+
16
+ > Adaptado de DeepCode (HKUDS/DeepCode) — Loop Detection & Error Correction.
17
+
18
+ ## Cómo Mejora el Framework
19
+
20
+ Don Cheli ya tiene auto-corrección (aprendizajes acumulados), pero carece de un **guard contra ciclos infinitos de fix**. Cuando el agente intenta corregir un error y la corrección genera otro error similar, puede entrar en un loop destructivo que consume tokens sin avanzar.
21
+
22
+ Esta habilidad detecta y rompe esos ciclos automáticamente.
23
+
24
+ ## El Problema
25
+
26
+ ```
27
+ Intento 1: Fix A → genera Error B
28
+ Intento 2: Fix B → genera Error A (¡loop!)
29
+ Intento 3: Fix A → genera Error B
30
+ ... (infinito, consumiendo tokens)
31
+ ```
32
+
33
+ ## Mecanismo de Detección
34
+
35
+ ### 1. Registro de Intentos
36
+
37
+ Cada corrección se registra con su firma:
38
+
39
+ ```
40
+ [INTENTO] #N | Error: <firma> | Archivo: <ruta> | Fix: <descripción>
41
+ ```
42
+
43
+ La **firma del error** es un hash del tipo + mensaje + ubicación:
44
+
45
+ ```
46
+ firma = hash(tipo_error + mensaje_normalizado + archivo + línea)
47
+ ```
48
+
49
+ ### 2. Detección de Patrones
50
+
51
+ El sistema detecta loops cuando:
52
+
53
+ | Patrón | Condición | Ejemplo |
54
+ |--------|-----------|---------|
55
+ | **Loop directo** | Misma firma aparece 2+ veces | Error A → Fix → Error A |
56
+ | **Loop ping-pong** | Dos firmas alternan | Error A → Error B → Error A |
57
+ | **Loop espiral** | 3+ firmas en ciclo | A → B → C → A |
58
+ | **Estancamiento** | 3+ intentos sin progreso medible | Fix no cambia resultado de tests |
59
+
60
+ ### 3. Umbrales
61
+
62
+ | Umbral | Valor | Acción |
63
+ |--------|-------|--------|
64
+ | **Max intentos por error** | 3 | Escalar después del 3er intento |
65
+ | **Max intentos totales por tarea** | 8 | Stop-loss de la tarea |
66
+ | **Ventana de detección** | Últimos 10 intentos | Firmas se comparan en ventana deslizante |
67
+ | **Timeout por intento** | 60 segundos | Prevenir fixes que cuelgan |
68
+
69
+ ## Flujo de Corrección con Guard
70
+
71
+ ```
72
+ 1. Detectar error
73
+ 2. ¿Firma ya vista en ventana?
74
+ ├── NO → Intentar fix, registrar intento
75
+ │ └── ¿Fix exitoso?
76
+ │ ├── SÍ → Limpiar registro, continuar
77
+ │ └── NO → Volver a paso 2
78
+
79
+ └── SÍ → ¿Cuántas veces?
80
+ ├── 2 veces → Cambiar estrategia de fix
81
+ ├── 3 veces → ⛔ PARAR, reportar al usuario
82
+ └── Escalar con contexto completo
83
+ ```
84
+
85
+ ## Estrategias de Escape
86
+
87
+ Cuando se detecta un loop, antes de escalar al usuario se intentan **estrategias alternativas** (en orden):
88
+
89
+ ### Nivel 1: Cambiar Estrategia (automático)
90
+ ```
91
+ 1. Si el fix fue en el mismo archivo → intentar fix en archivo diferente
92
+ 2. Si el fix fue sintáctico → intentar fix semántico
93
+ 3. Si el fix fue local → intentar fix en dependencia
94
+ ```
95
+
96
+ ### Nivel 2: Ampliar Contexto (automático)
97
+ ```
98
+ 1. Leer archivos adyacentes (imports, dependencias)
99
+ 2. Revisar tests para entender comportamiento esperado
100
+ 3. Consultar historial git del archivo
101
+ ```
102
+
103
+ ### Nivel 3: Escalar al Usuario (manual)
104
+ ```
105
+ ⛔ LOOP DETECTADO
106
+
107
+ Error: TypeError: Cannot read property 'id' of undefined
108
+ Archivo: src/services/auth.ts:42
109
+ Intentos: 3
110
+ Estrategias probadas:
111
+ 1. Agregar null check → generó error en caller
112
+ 2. Inicializar objeto vacío → falló validación
113
+ 3. Agregar default parameter → TypeScript error
114
+
115
+ Contexto del loop:
116
+ - El objeto `user` llega como undefined desde `getSession()`
117
+ - `getSession()` devuelve undefined cuando el token expira
118
+ - El fix necesita decisión de negocio: ¿redirigir al login o renovar token?
119
+
120
+ Opciones sugeridas:
121
+ A) Redirigir al login cuando el token expira
122
+ B) Implementar refresh token automático
123
+ C) Otro enfoque: [tu input]
124
+ ```
125
+
126
+ ## Integración con Auto-Corrección Existente
127
+
128
+ Esta habilidad **extiende** la auto-corrección existente, no la reemplaza:
129
+
130
+ ```
131
+ Auto-Corrección (aprendizajes) Detección de Loops (guard)
132
+ ├── Registra correcciones ├── Registra intentos de fix
133
+ ├── Acumula reglas ├── Detecta ciclos
134
+ ├── Previene errores futuros ├── Previene loops presentes
135
+ └── Propone al usuario └── Escala al usuario
136
+ ```
137
+
138
+ ## Registro en Memoria
139
+
140
+ Cuando un loop se resuelve, se registra en `.especdev/memoria/loops-resueltos.md`:
141
+
142
+ ```markdown
143
+ ## Loop Resuelto: 2026-03-21
144
+
145
+ - **Error:** TypeError en auth.ts:42
146
+ - **Causa raíz:** Token expirado no manejado
147
+ - **Intentos antes de resolución:** 3
148
+ - **Estrategia exitosa:** Nivel 3 (decisión del usuario: refresh token)
149
+ - **Regla aprendida:** Siempre manejar caso de token expirado en servicios auth
150
+ ```
151
+
152
+ ## Métricas
153
+
154
+ El sistema trackea:
155
+
156
+ | Métrica | Propósito |
157
+ |---------|-----------|
158
+ | Loops detectados por sesión | Medir frecuencia |
159
+ | Intentos promedio antes de detección | Medir eficiencia |
160
+ | Estrategia de escape más efectiva | Optimizar respuesta |
161
+ | Tokens ahorrados vs sin detección | Justificar la habilidad |
162
+
163
+ ## Guardrails
164
+
165
+ - **Nunca** silenciar un loop — siempre informar
166
+ - **Nunca** superar el stop-loss (8 intentos) sin escalar
167
+ - **Siempre** registrar el loop resuelto para aprendizaje futuro
168
+ - **Siempre** proponer opciones al usuario, no decidir en loops de Nivel 3
@@ -0,0 +1,204 @@
1
+ ---
2
+ nombre: Detección de Stubs
3
+ descripcion: "Detectar código stub (TODO, placeholder, mock sin implementar) antes de marcar una tarea como completa"
4
+ version: 1.0.0
5
+ autor: Don Cheli
6
+ tags: [calidad, stubs, TODOs, placeholders, completitud]
7
+ activacion: "detectar stubs", "buscar TODOs", "código incompleto", "placeholders"
8
+ ---
9
+
10
+ # Habilidad: Detección de Stubs (Código Placeholder)
11
+
12
+ **Versión:** 1.0.0
13
+ **Categoría:** Calidad
14
+ **Tipo:** Rígida
15
+
16
+ > Adaptado de Get Shit Done (gsd-build/get-shit-done) — Stub Detection Patterns.
17
+
18
+ ## Cómo Mejora el Framework
19
+
20
+ Un problema frecuente del desarrollo asistido por IA: el agente genera código placeholder (stubs) y lo reporta como "implementado". Don Cheli tiene revisión de código, pero no un sistema específico para detectar stubs que pasan como código completo.
21
+
22
+ ## El Problema
23
+
24
+ ```
25
+ Agente: "✅ Implementé el servicio de pagos"
26
+ Código real:
27
+ async processPayment(data) {
28
+ // TODO: implement payment processing
29
+ return { success: true };
30
+ }
31
+ ```
32
+
33
+ El agente "completó" la tarea, pero el código es un stub.
34
+
35
+ ## Patrones de Detección
36
+
37
+ ### Indicadores Universales
38
+
39
+ | Patrón | Ejemplo | Severidad |
40
+ |--------|---------|-----------|
41
+ | **TODO/FIXME/HACK** | `// TODO: implement this` | ❌ Crítico |
42
+ | **Return vacío o hardcoded** | `return {};`, `return true;`, `return []` | ❌ Crítico |
43
+ | **Throw no implementado** | `throw new Error('Not implemented')` | ❌ Crítico |
44
+ | **Console.log como lógica** | `console.log('called')` sin más lógica | ⚠️ Alto |
45
+ | **Valores hardcoded** | `return 42;`, `return "test"` | ⚠️ Alto |
46
+ | **Lorem ipsum** | `"Lorem ipsum dolor sit amet"` | ⚠️ Alto |
47
+ | **Pass/noop** | `pass` (Python), `{}` (cuerpo vacío) | ⚠️ Alto |
48
+ | **Placeholder de config** | `"your-api-key-here"`, `"xxx"`, `"changeme"` | ❌ Crítico |
49
+
50
+ ### Patrones por Tipo de Artefacto
51
+
52
+ #### React/Frontend
53
+ ```
54
+ ❌ Componente que solo renderiza <div>placeholder</div>
55
+ ❌ Handler onClick vacío: onClick={() => {}}
56
+ ❌ Estilos inline con valores mágicos sin design token
57
+ ❌ Imágenes placeholder sin src real
58
+ ⚠️ Componente sin props tipados (any)
59
+ ```
60
+
61
+ #### API/Backend
62
+ ```
63
+ ❌ Endpoint que retorna data mockeada/hardcoded
64
+ ❌ Middleware que no hace nada (next() directo)
65
+ ❌ Validación que acepta todo (return true)
66
+ ❌ Error handler que traga excepciones silenciosamente
67
+ ⚠️ Service con un solo método implementado de N declarados
68
+ ```
69
+
70
+ #### Base de Datos
71
+ ```
72
+ ❌ Migración vacía (up/down sin operaciones)
73
+ ❌ Seed con datos obviamente falsos ("test@test.com", "John Doe")
74
+ ❌ Query que retorna SELECT * sin filtro ni paginación
75
+ ⚠️ Índices declarados pero sin justificación de uso
76
+ ```
77
+
78
+ #### Tests
79
+ ```
80
+ ❌ Test que siempre pasa: expect(true).toBe(true)
81
+ ❌ Test sin assertions
82
+ ❌ Test que solo verifica que no lanza error (sin verificar output)
83
+ ⚠️ Test con un solo caso (falta edge cases)
84
+ ```
85
+
86
+ ### Verificación de Cableado (Wiring)
87
+
88
+ Detectar que los componentes están realmente conectados:
89
+
90
+ | Conexión | Verificación |
91
+ |----------|-------------|
92
+ | **Componente → API** | Componente hace fetch/call real, no datos hardcoded |
93
+ | **API → Base de Datos** | Endpoint ejecuta query real, no retorna mock |
94
+ | **Form → Handler** | Submit ejecuta lógica, no solo console.log |
95
+ | **Error → UI** | Errores se muestran al usuario, no solo se loggean |
96
+
97
+ ## Cuándo Ejecutar
98
+
99
+ | Momento | Trigger |
100
+ |---------|---------|
101
+ | **Post-implementación** | Después de cada tarea GREEN en `/especdev:implementar` |
102
+ | **Pre-revisión** | Antes de `/especdev:revisar` |
103
+ | **Pre-merge** | Como parte de la Puerta 6 (Merge de Código) |
104
+
105
+ ## Flujo de Detección
106
+
107
+ ```
108
+ 1. Escanear archivos modificados/creados
109
+ 2. Aplicar patrones universales
110
+ 3. Aplicar patrones por tipo de artefacto
111
+ 4. Verificar cableado entre capas
112
+ 5. Generar reporte
113
+
114
+ ¿Stubs encontrados?
115
+ ├── SÍ → ⛔ BLOQUEAR tarea como incompleta
116
+ │ └── Listar cada stub con ubicación y severidad
117
+ └── NO → ✅ Tarea genuinamente completa
118
+ ```
119
+
120
+ ## Reporte de Stubs
121
+
122
+ ```markdown
123
+ ## Detección de Stubs: CrearUsuario
124
+
125
+ Archivos escaneados: 8
126
+ Stubs detectados: 3
127
+
128
+ ### ❌ Crítico
129
+
130
+ 1. **src/services/email_service.py:15**
131
+ Patrón: Return hardcoded
132
+ ```python
133
+ async def send_welcome_email(user):
134
+ return True # No envía email real
135
+ ```
136
+ Acción: Implementar envío con servicio de email
137
+
138
+ 2. **src/controllers/usuario_controller.py:42**
139
+ Patrón: TODO pendiente
140
+ ```python
141
+ # TODO: add rate limiting
142
+ ```
143
+ Acción: Implementar rate limiting o remover TODO si no aplica
144
+
145
+ ### ⚠️ Alto
146
+
147
+ 3. **tests/unit/test_email.py:8**
148
+ Patrón: Test sin assertion real
149
+ ```python
150
+ def test_send_email():
151
+ result = send_welcome_email(mock_user)
152
+ assert result is not None # No verifica comportamiento
153
+ ```
154
+ Acción: Verificar que el servicio de email fue llamado con los parámetros correctos
155
+
156
+ ### Resultado: ❌ NO-AVANZAR (2 críticos, 1 alto)
157
+ ```
158
+
159
+ ## Integración con Pipeline
160
+
161
+ ```
162
+ /especdev:implementar (cada tarea GREEN)
163
+ → [DETECCIÓN STUBS] ← automática
164
+ → ¿Stubs encontrados?
165
+ ├── SÍ → Tarea regresa a RED (implementar de verdad)
166
+ └── NO → Tarea completa, siguiente tarea
167
+
168
+ /especdev:revisar
169
+ → [DETECCIÓN STUBS] ← segunda pasada
170
+ → Reporte incluido en review
171
+ ```
172
+
173
+ ## Integración con Puertas de Calidad
174
+
175
+ Se integra como verificación en la **Puerta 6** (Merge de Código):
176
+
177
+ ```
178
+ Puerta 6: Merge de Código
179
+ ├── Tests verdes ✅
180
+ ├── Lint limpio ✅
181
+ ├── Type-check pasa ✅
182
+ ├── Coverage ≥ 85% ✅
183
+ ├── Sin diff no relacionado ✅
184
+ └── Sin stubs detectados ✅ ← NUEVA
185
+ ```
186
+
187
+ ## Excepciones
188
+
189
+ Hay casos legítimos donde un "stub" es intencional:
190
+
191
+ | Caso | Cómo marcar | Ejemplo |
192
+ |------|------------|---------|
193
+ | Feature flag deshabilitado | `// STUB:feature-flag:nombre-flag` | Funcionalidad para release futuro |
194
+ | Mock en test | No aplica (stubs en tests de mock son válidos) | `jest.fn()` |
195
+ | Interface/abstract | No aplica (declaraciones sin cuerpo son válidas) | `abstract class` |
196
+
197
+ Usar el comentario `// STUB:razón` para excluir de detección.
198
+
199
+ ## Guardrails
200
+
201
+ - **Nunca** marcar una tarea como completa si tiene stubs críticos
202
+ - **Nunca** ignorar stubs silenciosamente — siempre reportar
203
+ - **Siempre** verificar cableado entre capas (no solo código individual)
204
+ - **Siempre** respetar excepciones marcadas con `// STUB:razón`
@@ -0,0 +1,84 @@
1
+ ---
2
+ nombre: DevLog — Bitácora de Desarrollo
3
+ descripcion: "Mantener un log de desarrollo con decisiones, cambios y contexto para referencia futura"
4
+ version: 1.0.0
5
+ autor: Don Cheli
6
+ tags: [devlog, bitacora, historial, observabilidad]
7
+ activacion: "devlog", "registrar decisión", "log de desarrollo"
8
+ ---
9
+
10
+ # Habilidad: DevLog — Bitácora de Desarrollo
11
+
12
+ **Versión:** 1.0.0
13
+ **Categoría:** Observabilidad
14
+ **Tipo:** Flexible
15
+
16
+ > Adaptado de DevilDev — DevLog para historial de desarrollo.
17
+
18
+ ## Cómo Mejora el Framework
19
+
20
+ El DevLog es una bitácora cronológica de TODOS los cambios significativos del proyecto. Complementa la memoria persistente con un registro temporal ordenado.
21
+
22
+ ## Diferencia con Memoria Persistente
23
+
24
+ | Memoria Persistente | DevLog |
25
+ |--------------------|--------|
26
+ | Decisiones y convenciones | Historial cronológico |
27
+ | "QUÉ decidimos" | "QUÉ pasó y CUÁNDO" |
28
+ | Se actualiza (sobrescribe) | Solo se agrega (append) |
29
+ | Para contexto | Para auditoría |
30
+
31
+ ## Formato
32
+
33
+ ```markdown
34
+ # DevLog: mi-proyecto
35
+
36
+ ## 2026-03-21
37
+
38
+ ### 16:30 — Feature: OAuth Login (PROJ-42)
39
+ - **Tipo:** Feature
40
+ - **Archivos:** 8 modificados, +234 -45 líneas
41
+ - **Arquitectura:** Nuevo componente "OAuth Provider"
42
+ - **Spec:** auth-oauth.delta.md
43
+ - **Tests:** 12 nuevos (todos pasan)
44
+ - **Tokens:** 58,120 | Costo: $0.14
45
+ - **Notas:** Se eligió Strategy Pattern para extensibilidad
46
+
47
+ ### 14:15 — Fix: Login timeout (PROJ-41)
48
+ - **Tipo:** Bugfix
49
+ - **Archivos:** 2 modificados, +8 -4 líneas
50
+ - **Tests:** 1 nuevo (regression test)
51
+ - **Tokens:** 12,500 | Costo: $0.03
52
+ - **Notas:** Timeout aumentado de 30s a 60s
53
+
54
+ ## 2026-03-20
55
+
56
+ ### 11:00 — Refactor: Separar servicio de email
57
+ - **Tipo:** Refactor
58
+ - **Archivos:** 5 modificados, +120 -180 líneas
59
+ - **Arquitectura:** Componente "Email Service" extraído de "API"
60
+ - **Tests:** Sin cambios (todos siguen pasando)
61
+ ```
62
+
63
+ ## Auto-Registro
64
+
65
+ El DevLog se actualiza automáticamente cuando:
66
+ 1. `/especdev:archivar` completa un cambio
67
+ 2. `/especdev:aplicar` termina una implementación
68
+ 3. Se crea un commit significativo
69
+
70
+ ## Ubicación
71
+
72
+ ```
73
+ .especdev/devlog/
74
+ ├── 2026-03.md # Log del mes
75
+ ├── 2026-02.md # Mes anterior
76
+ └── indice.md # Índice con conteos por mes
77
+ ```
78
+
79
+ ## Valor para el Equipo
80
+
81
+ - **Onboarding:** "¿Qué pasó este mes?" → DevLog
82
+ - **Retrospectivas:** Datos reales de qué se hizo
83
+ - **Debugging:** "¿Cuándo se cambió esto?" → Buscar en DevLog
84
+ - **Estimados:** Datos históricos de duración y costo por tipo de cambio
@@ -0,0 +1,231 @@
1
+ ---
2
+ nombre: Documentación Viva
3
+ descripcion: "Generar y mantener documentación sincronizada con el código: ADRs, OpenAPI, diagramas Mermaid"
4
+ version: 1.0.0
5
+ autor: Don Cheli
6
+ tags: [documentación, ADR, OpenAPI, Mermaid, diagramas]
7
+ activacion: "documentación viva", "generar docs", "ADR", "OpenAPI", "diagrama"
8
+ ---
9
+
10
+ # Habilidad: Documentación Técnica Viva
11
+
12
+ **Versión:** 1.0.0
13
+ **Categoría:** Documentación
14
+ **Tipo:** Flexible
15
+
16
+ ## Cómo Mejora el Framework
17
+
18
+ Don Cheli tiene devlog (registro cronológico) y trazabilidad (pipeline de artefactos), pero carece de un sistema para generar y mantener documentación técnica **que evoluciona con el código**: ADRs, specs OpenAPI, y documentación de decisiones.
19
+
20
+ ## Tipos de Documentación
21
+
22
+ ### 1. ADRs — Architecture Decision Records
23
+
24
+ Documentan el **por qué** detrás de decisiones técnicas.
25
+
26
+ ```markdown
27
+ # ADR-001: Usar PostgreSQL en vez de MongoDB
28
+
29
+ **Estado:** Aceptado
30
+ **Fecha:** 2026-03-21
31
+ **Contexto:** Necesitamos una base de datos para el sistema de pedidos.
32
+ **Decisión:** Usar PostgreSQL 16.
33
+ **Consecuencias:**
34
+ - (+) Transacciones ACID para pedidos
35
+ - (+) JSON support para datos semi-estructurados
36
+ - (-) Requiere schema upfront (menos flexible que Mongo)
37
+ - (-) Más configuración inicial
38
+
39
+ **Alternativas evaluadas:**
40
+ - MongoDB: descartada por falta de transacciones multi-documento nativas
41
+ - SQLite: descartada por límites de concurrencia (ver PoC poc/sqlite-mvp/)
42
+ ```
43
+
44
+ **Ubicación:** `.especdev/memoria/decisiones/ADR-###.md`
45
+
46
+ **Cuándo crear:**
47
+ - Elección de tecnología/librería
48
+ - Decisión arquitectónica (monolito vs micro, REST vs GraphQL)
49
+ - Trade-off significativo con alternativas válidas
50
+ - Checkpoint tipo `decisión` en `/especdev:implementar`
51
+
52
+ **Cuándo NO crear:**
53
+ - Decisiones obvias sin alternativas reales
54
+ - Elecciones de estilo/formato
55
+ - Configuraciones menores
56
+
57
+ ### 2. Specs OpenAPI / Swagger
58
+
59
+ Generación automática de especificaciones de API desde los contratos del plan.
60
+
61
+ **Trigger:** Después de `/especdev:planificar-tecnico` si el plan incluye contratos API.
62
+
63
+ ```yaml
64
+ # specs/api/openapi.yaml (auto-generado)
65
+ openapi: 3.1.0
66
+ info:
67
+ title: Mi Proyecto API
68
+ version: 1.0.0
69
+
70
+ paths:
71
+ /api/v1/usuarios:
72
+ post:
73
+ summary: Crear usuario
74
+ operationId: crearUsuario
75
+ requestBody:
76
+ required: true
77
+ content:
78
+ application/json:
79
+ schema:
80
+ $ref: '#/components/schemas/CrearUsuarioRequest'
81
+ responses:
82
+ '201':
83
+ description: Usuario creado
84
+ content:
85
+ application/json:
86
+ schema:
87
+ $ref: '#/components/schemas/UsuarioResponse'
88
+ '400':
89
+ description: Datos inválidos
90
+ '409':
91
+ description: Email duplicado
92
+
93
+ components:
94
+ schemas:
95
+ CrearUsuarioRequest:
96
+ type: object
97
+ required: [email, password, nombre]
98
+ properties:
99
+ email:
100
+ type: string
101
+ format: email
102
+ password:
103
+ type: string
104
+ minLength: 8
105
+ nombre:
106
+ type: string
107
+ maxLength: 100
108
+ UsuarioResponse:
109
+ type: object
110
+ properties:
111
+ id:
112
+ type: string
113
+ format: uuid
114
+ email:
115
+ type: string
116
+ nombre:
117
+ type: string
118
+ createdAt:
119
+ type: string
120
+ format: date-time
121
+ ```
122
+
123
+ **Ubicación:** `specs/api/openapi.yaml`
124
+
125
+ **Auto-actualización:** Cuando `/especdev:planificar-tecnico` genera un nuevo contrato API, el OpenAPI spec se actualiza automáticamente.
126
+
127
+ ### 3. Docstrings/JSDoc Significativos
128
+
129
+ Guía para generar comentarios que aportan valor (no ruido).
130
+
131
+ ```
132
+ ✅ Documentar:
133
+ - WHY (por qué existe esta función/clase)
134
+ - Parámetros con tipos y restricciones
135
+ - Excepciones que puede lanzar
136
+ - Efectos secundarios (escribe en BD, envía email)
137
+ - Invariantes y precondiciones
138
+
139
+ ❌ NO documentar:
140
+ - WHAT (qué hace — si el nombre no lo dice, renombrar)
141
+ - Código obvio (// incrementar contador → i++)
142
+ - Getters/setters triviales
143
+ - Re-describir los tipos que ya son explícitos
144
+ ```
145
+
146
+ **Ejemplo bueno:**
147
+ ```python
148
+ def process_refund(payment_id: str, amount: Decimal | None = None) -> RefundResult:
149
+ """Procesa reembolso total o parcial via Stripe.
150
+
151
+ Si amount es None, reembolsa el total. Reembolsos parciales
152
+ acumulativos no pueden exceder el monto original.
153
+
154
+ Raises:
155
+ PaymentNotFoundError: payment_id no existe
156
+ RefundExceedsPaymentError: monto acumulado > original
157
+ StripeError: error de comunicación con Stripe (auto-retry 3x)
158
+
159
+ Side effects:
160
+ - Crea registro en tabla refunds
161
+ - Envía email de confirmación al usuario (async)
162
+ """
163
+ ```
164
+
165
+ ### 4. Diagramas como Código
166
+
167
+ Usar Mermaid para diagramas que viven con el código:
168
+
169
+ ```markdown
170
+ ## Flujo de Autenticación
171
+
172
+ ```mermaid
173
+ sequenceDiagram
174
+ participant U as Usuario
175
+ participant A as API
176
+ participant S as AuthService
177
+ participant D as Database
178
+
179
+ U->>A: POST /login {email, password}
180
+ A->>S: authenticate(email, password)
181
+ S->>D: findByEmail(email)
182
+ D-->>S: User | null
183
+ alt Usuario existe
184
+ S->>S: verifyPassword(password, hash)
185
+ S-->>A: JWT token
186
+ A-->>U: 200 {token}
187
+ else No existe
188
+ S-->>A: throw UnauthorizedError
189
+ A-->>U: 401 {error}
190
+ end
191
+ ```
192
+ ```
193
+
194
+ **Ubicación:** Inline en specs, plans, o ADRs.
195
+
196
+ ## Ciclo de Vida de la Documentación
197
+
198
+ ```
199
+ Código cambia → ¿Docs afectadas?
200
+ ├── API cambió → Actualizar OpenAPI
201
+ ├── Decisión arquitectónica → Crear/actualizar ADR
202
+ ├── Nuevo módulo → Actualizar mapa arquitectónico
203
+ ├── Nuevo flujo → Agregar diagrama Mermaid
204
+ └── Solo lógica interna → No requiere docs
205
+ ```
206
+
207
+ ## Verificación de Frescura
208
+
209
+ | Documento | Frecuencia de verificación | Cómo verificar |
210
+ |-----------|---------------------------|----------------|
211
+ | OpenAPI | Cada PR con cambio de API | Diff entre spec y código |
212
+ | ADRs | Cada fase de Estrategia | ¿Decisiones siguen vigentes? |
213
+ | Diagramas | Cada cambio arquitectónico | ¿Flujo coincide con código? |
214
+ | README | Cada release | ¿Instrucciones funcionan? |
215
+
216
+ ## Integración con Pipeline
217
+
218
+ ```
219
+ /especdev:planificar-tecnico → genera OpenAPI si hay API
220
+ /especdev:implementar (checkpoint:decisión) → genera ADR
221
+ /especdev:revisar → verifica frescura de docs
222
+ /especdev:archivar → snapshot de docs con versión
223
+ ```
224
+
225
+ ## Guardrails
226
+
227
+ - **Nunca** duplicar información entre docs — referenciar con links
228
+ - **Nunca** documentar código obvio (renombrar en vez de comentar)
229
+ - **Siempre** crear ADR para decisiones con alternativas válidas
230
+ - **Siempre** actualizar OpenAPI cuando cambia un contrato de API
231
+ - **Máximo** ~200 líneas por documento (constitución Art. de concisión)