@saulwade/swl-ses 2.4.3 → 2.5.2

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 (200) hide show
  1. package/CLAUDE.md +194 -241
  2. package/README.md +600 -597
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/abogado-diablo-swl.md +145 -0
  6. package/agentes/accesibilidad-wcag-swl.md +690 -690
  7. package/agentes/arquitecto-swl.md +267 -267
  8. package/agentes/auto-evolucion-swl.md +908 -908
  9. package/agentes/backend-api-swl.md +1 -1
  10. package/agentes/backend-csharp-swl.md +420 -420
  11. package/agentes/backend-go-swl.md +390 -390
  12. package/agentes/backend-java-swl.md +281 -281
  13. package/agentes/backend-node-swl.md +1 -1
  14. package/agentes/backend-python-swl.md +1 -1
  15. package/agentes/backend-rust-swl.md +364 -364
  16. package/agentes/backend-workers-swl.md +482 -482
  17. package/agentes/cloud-infra-swl.md +509 -509
  18. package/agentes/consolidador-swl.md +541 -541
  19. package/agentes/datos-swl.md +1 -1
  20. package/agentes/depurador-swl.md +352 -352
  21. package/agentes/devops-ci-swl.md +400 -400
  22. package/agentes/disenador-ui-swl.md +569 -569
  23. package/agentes/documentador-swl.md +345 -345
  24. package/agentes/frontend-angular-swl.md +621 -621
  25. package/agentes/frontend-css-swl.md +716 -716
  26. package/agentes/frontend-react-swl.md +692 -692
  27. package/agentes/frontend-swl.md +496 -496
  28. package/agentes/frontend-tailwind-swl.md +826 -826
  29. package/agentes/gh-fix-ci-swl.md +6 -1
  30. package/agentes/implementador-swl.md +1 -1
  31. package/agentes/investigador-swl.md +432 -432
  32. package/agentes/investigador-ux-swl.md +505 -505
  33. package/agentes/llm-apps-swl.md +1 -1
  34. package/agentes/migrador-swl.md +442 -442
  35. package/agentes/mobile-android-swl.md +511 -511
  36. package/agentes/mobile-cross-swl.md +541 -541
  37. package/agentes/mobile-ios-swl.md +502 -502
  38. package/agentes/mobile-testing-swl.md +302 -302
  39. package/agentes/nemesis-auditor-swl.md +285 -285
  40. package/agentes/notificador-swl.md +1 -1
  41. package/agentes/observabilidad-swl.md +438 -438
  42. package/agentes/pagos-swl.md +310 -310
  43. package/agentes/perfilador-usuario-swl.md +321 -321
  44. package/agentes/planificador-swl.md +399 -399
  45. package/agentes/producto-prd-swl.md +589 -589
  46. package/agentes/red-team-swl.md +218 -218
  47. package/agentes/release-manager-swl.md +590 -590
  48. package/agentes/rendimiento-swl.md +713 -713
  49. package/agentes/resolutor-build-swl.md +10 -1
  50. package/agentes/revisor-angular-swl.md +278 -278
  51. package/agentes/revisor-codigo-swl.md +1 -1
  52. package/agentes/revisor-csharp-swl.md +264 -264
  53. package/agentes/revisor-go-swl.md +259 -259
  54. package/agentes/revisor-java-swl.md +257 -257
  55. package/agentes/revisor-kotlin-swl.md +273 -273
  56. package/agentes/revisor-nextjs-swl.md +281 -281
  57. package/agentes/revisor-php-swl.md +271 -271
  58. package/agentes/revisor-react-swl.md +278 -278
  59. package/agentes/revisor-rust-swl.md +346 -346
  60. package/agentes/revisor-seguridad-swl.md +399 -399
  61. package/agentes/revisor-swift-swl.md +268 -268
  62. package/agentes/revisor-typescript-swl.md +346 -346
  63. package/agentes/sre-swl.md +1 -1
  64. package/agentes/tdd-qa-swl.md +393 -393
  65. package/bin/lib/bot-comandos.js +1 -1
  66. package/bin/swl-ses.js +6 -0
  67. package/comandos/swl/adoptar-proyecto.md +14 -2
  68. package/comandos/swl/configurar-ci.md +8 -1
  69. package/comandos/swl/deuda-codigo.md +97 -97
  70. package/comandos/swl/discutir-fase.md +22 -118
  71. package/comandos/swl/fix.md +118 -0
  72. package/comandos/swl/nuevo-proyecto.md +54 -3
  73. package/comandos/swl/predecir.md +32 -2
  74. package/comandos/swl/seguridad.md +189 -0
  75. package/comandos/swl/status.md +5 -3
  76. package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
  77. package/habilidades/discutir-fase/SKILL.md +84 -81
  78. package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
  79. package/habilidades/doc-sync/SKILL.md +3 -1
  80. package/habilidades/doubt-driven-review/SKILL.md +15 -1
  81. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  82. package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
  83. package/habilidades/harness-claude-code/SKILL.md +3 -1
  84. package/habilidades/instalar-sistema/SKILL.md +3 -1
  85. package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
  86. package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
  87. package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
  88. package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
  89. package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
  90. package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
  91. package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
  92. package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
  93. package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
  94. package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
  95. package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
  96. package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
  97. package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
  98. package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
  99. package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
  100. package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
  101. package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
  102. package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
  103. package/habilidades/meta-skills-estandar/SKILL.md +3 -1
  104. package/habilidades/nuevo-proyecto/SKILL.md +20 -3
  105. package/habilidades/php-experto/SKILL.md +10 -3
  106. package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
  107. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
  108. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
  109. package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
  110. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
  111. package/hooks/check-update.js +19 -10
  112. package/hooks/contexto-subagente.js +68 -68
  113. package/hooks/degradacion-instintos.js +1 -1
  114. package/hooks/extraccion-aprendizajes.js +2 -2
  115. package/hooks/lib/briefing.js +3 -3
  116. package/hooks/lib/nudge-tracker.js +1 -1
  117. package/hooks/lib/otlp-exporter.js +1 -1
  118. package/hooks/lib/webhook-dedup.js +1 -1
  119. package/hooks/session-briefing.js +1 -1
  120. package/llms.txt +6 -6
  121. package/manifiestos/canonical-hashes.json +1043 -52
  122. package/manifiestos/hooks-config.json +469 -469
  123. package/manifiestos/invariantes-criticos.json +30 -30
  124. package/manifiestos/modulos.json +168 -135
  125. package/manifiestos/perfiles.json +0 -2
  126. package/manifiestos/skills-lock.json +49 -56
  127. package/package.json +7 -5
  128. package/plantillas/github-workflows/README.md +15 -1
  129. package/plantillas/github-workflows/swl-devsecops.yml +70 -0
  130. package/plugin.json +5 -5
  131. package/reglas/analisis-previo-tareas-grandes.md +30 -156
  132. package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
  133. package/reglas/api-diseno.md +28 -398
  134. package/reglas/arquitectura.md +35 -456
  135. package/reglas/arreglar-al-detectar.md +30 -230
  136. package/reglas/debatir-antes-de-aceptar.md +30 -143
  137. package/reglas/docs.md +7 -0
  138. package/reglas/estilo-codigo.md +9 -0
  139. package/reglas/fragmentos-compartidos.md +6 -0
  140. package/reglas/git-workflow.md +44 -240
  141. package/reglas/gobernanza.md +23 -262
  142. package/reglas/memoria-consolidada.md +34 -228
  143. package/reglas/performance.md +8 -0
  144. package/reglas/pruebas.md +12 -0
  145. package/reglas/seguridad-agentes.md +37 -418
  146. package/reglas/seguridad.md +12 -0
  147. package/reglas/sesiones-paralelas.md +29 -162
  148. package/reglas/sin-duplicacion-reglas-globales.md +25 -166
  149. package/reglas/skills-estandar.md +23 -373
  150. package/reglas/usar-code-review-graph.md +31 -140
  151. package/reglas/usar-context7.md +30 -208
  152. package/reglas/usar-sistema-swl.md +47 -242
  153. package/reglas/verificar-citas-normativas.md +47 -537
  154. package/scripts/actualizar.js +253 -253
  155. package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
  156. package/scripts/auditar-clases-conocidas.js +106 -0
  157. package/scripts/bootstrap-instintos.js +2 -2
  158. package/scripts/canario-hooks.js +166 -0
  159. package/scripts/cli/configurar-ci.js +2 -1
  160. package/scripts/evidencia-valor.js +101 -0
  161. package/scripts/field-report.js +18 -2
  162. package/scripts/generar-comandos.js +143 -0
  163. package/scripts/generar-inventario.js +236 -23
  164. package/scripts/generar-matriz-lenguajes.js +1 -1
  165. package/scripts/instalador.js +15 -1
  166. package/scripts/instalar-git-hook.js +8 -1
  167. package/scripts/lib/configurar-ci.js +10 -3
  168. package/scripts/lib/diary-entry.js +3 -1
  169. package/scripts/lib/drift-detector.js +1 -1
  170. package/scripts/lib/evidencia-valor.js +228 -0
  171. package/scripts/lib/expandir-targets.js +71 -71
  172. package/scripts/lib/frontmatter-md.js +63 -0
  173. package/scripts/lib/parsear-opciones.js +2 -0
  174. package/scripts/lib/prune-componentes.js +180 -0
  175. package/scripts/lib/reglas-globales-conocidas.json +16 -2
  176. package/scripts/lib/scoring-instintos.js +2 -2
  177. package/scripts/lib/toml-merge.js +204 -204
  178. package/scripts/lib/transformadores/claude.js +1 -1
  179. package/scripts/lib/transformadores/codex.js +1 -1
  180. package/scripts/lib/transformadores/copilot.js +1 -1
  181. package/scripts/lib/transformadores/cursor.js +1 -1
  182. package/scripts/lib/transformadores/gemini.js +22 -2
  183. package/scripts/lib/transformadores/opencode.js +1 -1
  184. package/scripts/mcp-server/auth.js +105 -105
  185. package/scripts/mcp-server/cache.js +106 -106
  186. package/scripts/prune.js +102 -0
  187. package/scripts/publicar.js +18 -2
  188. package/scripts/tui/index.js +10 -1
  189. package/scripts/tui/pantallas/inspect.js +175 -175
  190. package/scripts/tui/pantallas/install-wizard.js +21 -8
  191. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  192. package/scripts/tui/pantallas/update-wizard.js +234 -234
  193. package/scripts/tui/pantallas/welcome.js +188 -189
  194. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  195. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  196. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  197. package/habilidades/tracking-measurement/SKILL.md +0 -239
  198. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  199. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  200. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
@@ -0,0 +1,179 @@
1
+ # Sin duplicación de reglas globales en CLAUDE.md — extendido
2
+
3
+ > Extendido de `reglas/sin-duplicacion-reglas-globales.md` (Fase D, dieta de
4
+ > contexto). El núcleo instalado es la norma; aquí viven el catálogo, los
5
+ > ejemplos, los comandos de detección y el caso de origen completos.
6
+
7
+ ## Índice
8
+
9
+ - [Cuándo aplicar](#cuándo-aplicar)
10
+ - [Catálogo de reglas globales conocidas](#catálogo-de-reglas-globales-conocidas)
11
+ - [Qué SÍ es legítimo en CLAUDE.md de proyecto](#qué-sí-es-legítimo-en-claudemd-de-proyecto)
12
+ - [Cómo detectarlo](#cómo-detectarlo)
13
+ - [Cómo remediar](#cómo-remediar)
14
+ - [Anti-patrones](#anti-patrones)
15
+ - [Relación con otras reglas](#relación-con-otras-reglas)
16
+ - [Origen de esta regla](#origen-de-esta-regla)
17
+ - [Checklist al modificar CLAUDE.md de proyecto](#checklist-al-modificar-claudemd-de-proyecto)
18
+
19
+ ---
20
+
21
+ ## Cuándo aplicar
22
+
23
+ OBLIGATORIO al:
24
+
25
+ - Crear un `CLAUDE.md` de proyecto nuevo (`/swl:claudemd init-project`,
26
+ `/swl:nuevo-proyecto`, `/swl:adoptar-proyecto`).
27
+ - Modificar `CLAUDE.md` de proyecto inline (`/swl:aprender` Paso 6 Tipo A,
28
+ edición manual del usuario, `Edit`/`Write` programático).
29
+ - Revisar `CLAUDE.md` (`/swl:claudemd audit`, `/swl:claudemd refactor`,
30
+ hook `claudemd-bloat-detector`, hook `claudemd-duplicacion-detector`).
31
+
32
+ NO aplica al:
33
+
34
+ - `~/.claude/CLAUDE.md` (user-level) — ahí SÍ pueden declararse
35
+ preferencias personales que parafrasean o complementan reglas globales.
36
+ - Documentación dentro del proyecto que no es `CLAUDE.md` (READMEs,
37
+ ADRs, docs de feature) — ahí no aplica el contrato canónico.
38
+
39
+ ---
40
+
41
+ ## Catálogo de reglas globales conocidas
42
+
43
+ Las siguientes reglas globales se cargan automáticamente cada sesión y
44
+ NO deben duplicarse en `CLAUDE.md` de proyecto:
45
+
46
+ | Regla global | Sección canónica | Referencia para citar |
47
+ |---|---|---|
48
+ | `brevedad-output.md` | Idioma obligatorio: español de México | `@~/.claude/rules/brevedad-output.md § Idioma obligatorio` |
49
+ | `brevedad-output.md` | Brevedad y eficiencia de output | `@~/.claude/rules/brevedad-output.md § Brevedad` |
50
+ | `git-coauthor.md` | Sin co-autores en commits | `@~/.claude/rules/git-coauthor.md` |
51
+ | `arreglar-al-detectar.md` | Detectar → Informar → Arreglar | `@~/.claude/rules/arreglar-al-detectar.md` |
52
+ | `debatir-antes-de-aceptar.md` | Debatir decisiones que chocan con reglas | `@~/.claude/rules/debatir-antes-de-aceptar.md` |
53
+ | `usar-context7.md` | Consultar Context7 antes de dependencias | `@~/.claude/rules/usar-context7.md` |
54
+
55
+ Catálogo declarativo completo:
56
+ `scripts/lib/reglas-globales-conocidas.json`. El catálogo es la fuente
57
+ de verdad consumida por el auditor (`scripts/auditar-claudemd.js`) y el
58
+ hook (`hooks/claudemd-duplicacion-detector.js`).
59
+
60
+ ---
61
+
62
+ ## Qué SÍ es legítimo en CLAUDE.md de proyecto
63
+
64
+ Lo siguiente NO se considera duplicación y es bienvenido:
65
+
66
+ 1. **Matiz local específico**: "Convenciones locales: identificadores
67
+ técnicos en inglés (rutas, comandos), prosa en español." — el matiz
68
+ es del proyecto, no la regla del idioma.
69
+ 2. **Override explícito documentado**: "Override de
70
+ `~/.claude/rules/brevedad-output.md` § Brevedad: este proyecto usa
71
+ docstrings extendidos por requerimiento legal." — el override es
72
+ explícito y nombra la regla global.
73
+ 3. **Excepción acotada con justificación**: "Excepción a
74
+ `~/.claude/rules/arreglar-al-detectar.md`: bugs cosméticos en el
75
+ módulo legacy `X/` se difieren a Q3 por congelación." — la excepción
76
+ nombra la regla y justifica.
77
+ 4. **Referencia `@`**: `@~/.claude/rules/<archivo>.md` — incluir la
78
+ regla por referencia, no inline.
79
+
80
+ ---
81
+
82
+ ## Cómo detectarlo
83
+
84
+ ### Manual
85
+
86
+ ```bash
87
+ node scripts/auditar-claudemd.js
88
+ # Buscar en el output: "duplicacion-reglas-globales"
89
+ ```
90
+
91
+ ### Automático
92
+
93
+ - **Auditor síncrono**: `scripts/auditar-claudemd.js` (dimensión 7,
94
+ severidad WARN, no bloquea).
95
+ - **Hook async**: `hooks/claudemd-duplicacion-detector.js` (PostToolUse,
96
+ emite nudge a `.planning/evolution/nudges.jsonl`).
97
+ - **Comando**: `/swl:claudemd audit` reporta el conteo; `/swl:claudemd
98
+ refactor` propone el reemplazo concreto.
99
+
100
+ ---
101
+
102
+ ## Cómo remediar
103
+
104
+ 1. **Identificar el bloque** señalado por el auditor (línea aproximada).
105
+ 2. **Decidir**:
106
+ - ¿El bloque es 100% paráfrasis de la regla global? → **eliminar**.
107
+ - ¿El bloque agrega matiz local? → **reescribir como matiz corto**
108
+ (≤3 líneas) que nombra la regla global ("Convenciones locales:
109
+ <matiz>. Ver `@~/.claude/rules/<archivo>.md`.").
110
+ 3. **Verificar**: re-ejecutar `node scripts/auditar-claudemd.js` hasta
111
+ que la duplicación desaparezca.
112
+
113
+ ---
114
+
115
+ ## Anti-patrones
116
+
117
+ - **Copiar contenido de reglas globales "para que esté visible"**: la
118
+ regla global YA está visible — se carga automáticamente. Copiarla en
119
+ cada proyecto es deuda silenciosa.
120
+ - **Re-derivar el principio con palabras propias**: si dices "todo
121
+ contenido generado debe ser en español de México con acentos
122
+ correctos…" estás re-derivando `brevedad-output.md § Idioma`.
123
+ - **Bloque "Reglas de máxima prioridad" que repite reglas globales**:
124
+ las reglas globales SON prioritarias por construcción — duplicarlas
125
+ no aumenta su prioridad.
126
+ - **Idioma "Language" en inglés que dice "español"**: paradójico y
127
+ duplica la regla.
128
+ - **Override implícito sin nombrar la regla global**: "este proyecto
129
+ usa docstrings extendidos" sin decir que es override de qué.
130
+ - **Ignorar el WARN del auditor argumentando "es para claridad"**: el
131
+ auditor lleva razón. La regla global es suficiente claridad.
132
+
133
+ ---
134
+
135
+ ## Relación con otras reglas
136
+
137
+ - `~/.claude/rules/memoria-consolidada.md § Reglas de no-duplicación`:
138
+ principio general "un dato vive en exactamente un canal". Esta regla
139
+ lo aplica al canal CLAUDE.md.
140
+ - `~/.claude/rules/fragmentos-compartidos.md`: la analogía a nivel de
141
+ agentes (fragmentos `_*.md` se incrustan, no se duplican).
142
+ - `~/.claude/rules/skills-estandar.md`: la analogía a nivel de skills
143
+ (skill referencia otro skill, no duplica su contenido).
144
+ - `reglas/auditorias-documentales-estructurales.md § Para prosa
145
+ cuantificada en campos descriptivos`: hermana — verifica drift
146
+ cross-manifest. Esta regla verifica drift cross-fuente.
147
+
148
+ ---
149
+
150
+ ## Origen de esta regla
151
+
152
+ Sesión 2026-05-22, swl-ses v1.7.0. El usuario pegó 4 fragmentos de
153
+ `CLAUDE.md` de distintos proyectos que repetían la misma regla de idioma
154
+ "español de México" en formas distintas (lista con bullets, H3 inline,
155
+ lista numerada, sección "Language" en inglés). El análisis reveló:
156
+
157
+ - La regla ya vivía en `~/.claude/rules/brevedad-output.md § Idioma
158
+ obligatorio: español de México` desde sesiones previas.
159
+ - Cada proyecto la había re-derivado por iteraciones de
160
+ `/swl:aprender` Tipo A sin que ningún check detectara la
161
+ duplicación.
162
+ - El bloat acumulado en cada `CLAUDE.md` consumía 7-15 líneas que
163
+ podían eliminarse sin perder semántica.
164
+
165
+ Resolución: crear el catálogo declarativo + detector + dimensión 7 del
166
+ auditor + hook PostToolUse + esta regla. Release v1.7.0 MINOR.
167
+
168
+ ---
169
+
170
+ ## Checklist al modificar CLAUDE.md de proyecto
171
+
172
+ - [ ] ¿El bloque que voy a agregar parafrasea una regla global de
173
+ `~/.claude/rules/`?
174
+ - [ ] Si sí: ¿agrega matiz local genuino, o solo repite el principio?
175
+ - [ ] Si solo repite: NO agregar — la regla global ya aplica.
176
+ - [ ] Si agrega matiz: redactar en ≤3 líneas que **nombran la regla
177
+ global** (referencia con `@~/.claude/rules/<archivo>.md`).
178
+ - [ ] Tras escribir: ejecutar `node scripts/auditar-claudemd.js` y
179
+ confirmar 0 hallazgos `duplicacion-reglas-globales`.
@@ -0,0 +1,394 @@
1
+ # Estándar de skills — extendido
2
+
3
+ > **Procedencia**: contenido extraído de `reglas/skills-estandar.md` durante la
4
+ > Fase D (dieta de contexto). El núcleo instalado en `~/.claude/rules/` es la
5
+ > norma vigente; este documento aporta el detalle operativo (estructura,
6
+ > procesos, checklists, ejemplos) sin cambiar la semántica. El contenido
7
+ > AVANZADO de autoría de skills (Response Discipline, Anti-substitution
8
+ > Guardrails, leyes de diseño, `EXAMPLES.md`, etc.) NO vive aquí — sigue en
9
+ > `Skill("meta-skills-estandar")`, precedente de este patrón (split v2.0.0,
10
+ > 2026-04-23).
11
+
12
+ ## Índice
13
+
14
+ 1. [Estructura de directorio obligatoria](#estructura-de-directorio-obligatoria)
15
+ 2. [Frontmatter YAML obligatorio](#frontmatter-yaml-obligatorio)
16
+ 3. [Los tres niveles de carga (divulgación progresiva)](#los-tres-niveles-de-carga-divulgación-progresiva)
17
+ 4. [Reglas de contenido de SKILL.md](#reglas-de-contenido-de-skillmd)
18
+ 5. [Paths relativos: regla sin excepciones](#paths-relativos-regla-sin-excepciones)
19
+ 6. [Reglas de nombrado de archivos dentro de la skill](#reglas-de-nombrado-de-archivos-dentro-de-la-skill)
20
+ 7. [Inventario y registro de nuevas skills](#inventario-y-registro-de-nuevas-skills)
21
+ 8. [Diferencia con fragmentos compartidos](#diferencia-con-fragmentos-compartidos)
22
+ 9. [Convención de naming para skills nuevos](#convención-de-naming-para-skills-nuevos)
23
+ 10. [Proceso de creación de una nueva skill](#proceso-de-creación-de-una-nueva-skill)
24
+ 11. [Proceso de actualización de una skill existente](#proceso-de-actualización-de-una-skill-existente)
25
+ 12. [Checklist de auditoría de cumplimiento](#checklist-de-auditoría-de-cumplimiento)
26
+ 13. [Contenido avanzado en meta-skills-estandar](#contenido-avanzado-en-meta-skills-estandar)
27
+
28
+ ---
29
+
30
+ ## Estructura de directorio obligatoria
31
+
32
+ ```
33
+ nombre-skill/
34
+ ├── SKILL.md # OBLIGATORIO — cuerpo principal de instrucciones
35
+ ├── scripts/ # OPCIONAL — solo si la skill ejecuta lógica real
36
+ │ └── [scripts .py/.js/.sh con lógica determinista]
37
+ └── recursos/ # OPCIONAL — plantillas, ejemplos, esquemas, documentación extendida
38
+ └── [archivos .md, .yaml, .json, .py de referencia]
39
+ ```
40
+
41
+ ### Qué va en cada capa
42
+
43
+ | Capa | Archivo(s) | Cuándo incluir |
44
+ |------|-----------|----------------|
45
+ | Obligatorio | `SKILL.md` | Siempre. Nunca omitir. |
46
+ | Opcional | `scripts/` | Solo si hay lógica determinista reutilizable (validación, formateo, cálculo) |
47
+ | Opcional | `recursos/` | Cuando SKILL.md excede 300 líneas o cuando hay plantillas/esquemas reutilizables |
48
+
49
+ ### Lo que NO debe existir en el directorio
50
+
51
+ - Archivos `README.md` — la descripción vive en el frontmatter de SKILL.md.
52
+ - Archivos `AGENTS.md` en habilidades nuevas — formato deprecado para SWL.
53
+ - Subdirectorios anidados más de un nivel (`recursos/sub/sub/archivo.md`).
54
+ - Archivos de configuración del proyecto (`.env`, `requirements.txt`, `package.json`).
55
+
56
+ ---
57
+
58
+ ## Frontmatter YAML obligatorio
59
+
60
+ Todo SKILL.md DEBE comenzar con un bloque YAML delimitado por `---`:
61
+
62
+ ```yaml
63
+ ---
64
+ name: nombre-kebab-case
65
+ description: >
66
+ Qué hace esta skill y cuándo Claude debe usarla.
67
+ Incluir tanto el QUÉ como el CUÁNDO. Mínimo 2 oraciones.
68
+ ---
69
+ ```
70
+
71
+ ### Reglas del campo `name`
72
+
73
+ - Formato: kebab-case estricto (minúsculas, números, guiones).
74
+ - Longitud máxima: 64 caracteres (límite del protocolo Anthropic).
75
+ - Debe coincidir exactamente con el nombre del directorio.
76
+ - Debe coincidir exactamente con la forma en que se invoca: `Skill("nombre-aqui")`.
77
+ - Descriptivo del dominio, no del proyecto ni del equipo.
78
+
79
+ **Palabras reservadas** — NO usar en el nombre: `anthropic`, `claude`, `swl`
80
+ (reservado para agentes), `test/tests/testing` (usar el dominio específico:
81
+ `tdd-workflow`, `python-testing`).
82
+
83
+ Nombres válidos: `fastapi-experto`, `angular-moderno`, `ci-cd-pipelines`.
84
+ Nombres inválidos: `FastAPIExperto` (mayúsculas), `fastapi_experto` (guion
85
+ bajo), `anthropic-patterns` (palabra reservada).
86
+
87
+ ### Reglas del campo `description`
88
+
89
+ - Longitud máxima: 1,024 caracteres (límite del protocolo Anthropic).
90
+ - No puede estar vacío ni ser solo whitespace.
91
+ - Debe responder dos preguntas: ¿qué conocimiento contiene? ¿cuándo cargarla?
92
+ - Redactar en español de México.
93
+ - Usar el operador `>` de YAML para descripciones largas (múltiples líneas).
94
+ - Verificar antes de guardar: `echo -n "tu description" | wc -c` debe ser ≤ 1024.
95
+
96
+ **Límite ampliado con `when_to_use`**: Claude Code lee `description` +
97
+ `when_to_use` como bloque combinado de hasta 1,536 chars. Si la description
98
+ ocupa más de 900 chars y aún quedan triggers importantes, usar el campo
99
+ opcional `when_to_use` en el frontmatter:
100
+
101
+ ```yaml
102
+ description: >
103
+ FastAPI con Pydantic v2, SQLAlchemy async y testing con httpx.
104
+ Cargar cuando se implementen endpoints, schemas o queries async.
105
+ when_to_use: >
106
+ Usar este skill cuando el usuario mencione MissingGreenlet, selectinload,
107
+ Depends(), response_model o cualquier patrón de dependency injection.
108
+ ```
109
+
110
+ Las frases directas del tipo "Usar este skill cuando el usuario mencione X, Y o Z"
111
+ son válidas y efectivas en `when_to_use`. No usar ese tono imperativo en
112
+ `description` — ahí el registro es descriptivo.
113
+
114
+ **Description bien redactada**:
115
+ ```yaml
116
+ description: >
117
+ FastAPI con Pydantic v2, SQLAlchemy async, dependency injection y testing
118
+ con httpx. Cargar cuando se implementen endpoints FastAPI, schemas Pydantic,
119
+ queries SQLAlchemy async o tests de integración con httpx.
120
+ ```
121
+
122
+ **Description mal redactada**:
123
+ ```yaml
124
+ description: Skill de FastAPI # no dice CUÁNDO usarla
125
+ description: "" # vacía — inválida
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Los tres niveles de carga (divulgación progresiva)
131
+
132
+ ### Nivel 1 — Siempre en contexto (~100 tokens)
133
+
134
+ El frontmatter YAML (`name` y `description`) se carga automáticamente cuando
135
+ el modelo evalúa qué skills están disponibles. La `description` es lo único
136
+ que el modelo lee para decidir si debe cargar la skill. Si no menciona CUÁNDO
137
+ usarla, el modelo no la activará.
138
+
139
+ ### Nivel 2 — Al activar (~5,000 tokens máximo)
140
+
141
+ El cuerpo de SKILL.md se carga completo cuando se invoca `Skill("nombre")`.
142
+ Debe ser autocontenido y no exceder 5,000 tokens (≈300 líneas). Si crece más,
143
+ extraer contenido a `recursos/`.
144
+
145
+ **Tersidad para agentes Haiku**: skills invocados por agentes con `model:
146
+ claude-haiku-*` (notificador-swl, resolutor-build-swl) deben ser especialmente
147
+ tersos. Si un skill se invoca desde agentes de distinto nivel de modelo, colocar
148
+ la lógica compleja en `recursos/` y mantener SKILL.md mínimo.
149
+
150
+ ### Nivel 3 — Bajo demanda (sin límite práctico)
151
+
152
+ Los archivos en `scripts/` y `recursos/` se cargan solo cuando SKILL.md los
153
+ referencia explícitamente y el agente decide leerlos. No entran en contexto
154
+ automáticamente.
155
+
156
+ ---
157
+
158
+ ## Reglas de contenido de SKILL.md
159
+
160
+ ### Límite de tamaño
161
+
162
+ SKILL.md NO debe exceder **300 líneas** (aproximadamente 5,000 tokens). Si
163
+ crece más:
164
+
165
+ 1. Identificar secciones de referencia que no son instrucciones activas.
166
+ 2. Extraer esas secciones a `recursos/nombre-descriptivo.md`.
167
+ 3. Agregar en SKILL.md: `Para referencia completa, ver [nombre](recursos/nombre-descriptivo.md)`.
168
+
169
+ ### Estructura mínima del cuerpo
170
+
171
+ El cuerpo de SKILL.md (después del frontmatter) DEBE incluir al menos:
172
+
173
+ 1. **Título H1** con el nombre legible de la skill.
174
+ 2. **Sección "Cuándo cargar"** — lista de situaciones concretas.
175
+ 3. **Sección "Cuándo NO cargar"** — 2-4 situaciones donde la skill NO debe
176
+ activarse, aunque parezca relevante. Previene activación tangencial por
177
+ similitud de términos. Equivalente en frontmatter: campo `exclusiones`
178
+ (array de strings).
179
+ 4. **Reglas obligatorias** — las que nunca se violan, con justificación.
180
+ 5. Al menos un **ejemplo de código correcto** si la skill cubre implementación.
181
+
182
+ ### Lo que NUNCA debe estar en SKILL.md
183
+
184
+ - Documentación completa de una API externa (va en `recursos/`).
185
+ - Scripts o código ejecutable largo (va en `scripts/`).
186
+ - Contenido duplicado de otro SKILL.md (referenciar con `Skill("otro-skill")`).
187
+ - Texto de relleno, advertencias genéricas, disclaimers corporativos.
188
+ - Placeholders sin reemplazar (`[COMPLETAR]`, `[TBD]`, `[PENDIENTE]`).
189
+
190
+ ### Checklist de ejecución vs verificación
191
+
192
+ - **Checklist de verificación** (post-hoc): ítems a revisar al terminar.
193
+ Válido para auditorías, PRs, releases.
194
+ - **Checklist de ejecución** (progresivo): pasos que el agente "tachará" en
195
+ vivo durante la sesión. Usar para workflows críticos con 3+ pasos donde
196
+ omitir uno tiene costo alto. Máximo 8 ítems.
197
+
198
+ ---
199
+
200
+ ## Paths relativos: regla sin excepciones
201
+
202
+ Todo path referenciado dentro de un SKILL.md DEBE ser relativo al directorio
203
+ de la skill.
204
+
205
+ **Correcto**:
206
+ ```markdown
207
+ Ver [referencia avanzada](recursos/referencia-avanzada.md).
208
+ Ejecutar validación: `python scripts/validar.py archivo.md`
209
+ ```
210
+
211
+ **Incorrecto**:
212
+ ```markdown
213
+ Ver D:\Python\swl\habilidades\mi-skill\recursos\referencia.md
214
+ Ver /home/usuario/proyecto/habilidades/mi-skill/recursos/referencia.md
215
+ ```
216
+
217
+ **Por qué**: los paths absolutos se rompen cuando el repositorio se clona en
218
+ una ruta distinta, se mueve de directorio o se usa en otro sistema operativo.
219
+
220
+ ---
221
+
222
+ ## Reglas de nombrado de archivos dentro de la skill
223
+
224
+ | Archivo | Convención | Ejemplo |
225
+ |---------|-----------|---------|
226
+ | Archivo principal | Siempre `SKILL.md` (mayúsculas) | `SKILL.md` |
227
+ | Scripts | kebab-case + extensión | `validar-frontmatter.py` |
228
+ | Recursos Markdown | kebab-case + `.md` | `referencia-avanzada.md` |
229
+ | Recursos JSON | kebab-case + `.json` | `mcp-json-template.json` |
230
+ | Recursos YAML | kebab-case + `.yaml` | `openapi-schema.yaml` |
231
+
232
+ ---
233
+
234
+ ## Inventario y registro de nuevas skills
235
+
236
+ Toda skill nueva en `habilidades/` DEBE registrarse en dos lugares:
237
+
238
+ 1. **`manifiestos/modulos.json`** dentro del módulo de su dominio
239
+ correspondiente (para que el instalador la copie al destino).
240
+ 2. **CLAUDE.md del sistema** bajo la tabla "Sistema de habilidades" si aplica
241
+ al dominio correspondiente (para que el orquestador la considere).
242
+
243
+ Sin registro en `modulos.json` el instalador no la propaga. Sin entrada en
244
+ CLAUDE.md el orquestador no sabe que existe.
245
+
246
+ ---
247
+
248
+ ## Diferencia con fragmentos compartidos
249
+
250
+ Las skills NO son la única capa de reutilización del sistema SWL. Existen tres
251
+ capas distintas — cada una con su propósito:
252
+
253
+ | Capa | Cuándo usar | Cómo se carga |
254
+ |------|-------------|---------------|
255
+ | **Regla** (`reglas/X.md`) | Política transversal aplicable por matcher de archivos | Carga global cuando el matcher se cumple |
256
+ | **Skill** (`habilidades/X/SKILL.md`) | Conocimiento operacional invocable bajo demanda | Carga al invocar `Skill("X")` |
257
+ | **Fragmento** (`agentes/_X.md`) | Bloque de texto compartido por ≥3 agentes en su system prompt | Se incrusta literalmente al cargar el agente — sin overhead runtime |
258
+
259
+ NO crear una skill cuando el contenido es:
260
+ - Texto compartido entre múltiples agentes que no se invoca dinámicamente → es fragmento.
261
+ - Política aplicable a archivos del codebase → es regla.
262
+
263
+ Ver `reglas/fragmentos-compartidos.md` para la convención completa de fragmentos.
264
+
265
+ ---
266
+
267
+ ## Convención de naming para skills nuevos
268
+
269
+ Todo skill nuevo DEBE usar prefijo de dominio. Facilita agrupación lógica sin
270
+ depender de subdirectorios (que Claude Code no soporta en `.claude/skills/`).
271
+
272
+ | Prefijo | Dominio | Ejemplo |
273
+ |---------|---------|---------|
274
+ | `frontend-` | Frontend (React, Angular, CSS, Tailwind) | `frontend-render-patterns` |
275
+ | `backend-` | Backend (Python, Node, APIs) | `backend-caching-strategies` |
276
+ | `mobile-` | Mobile (Android, iOS, RN, Flutter) | `mobile-offline-sync` |
277
+ | `datos-` | Datos (BD, ETL, SQL) | `datos-migracion-zero-downtime` |
278
+ | `infra-` | Infraestructura (cloud, CI/CD, Docker, k8s) | `infra-terraform-modules` |
279
+ | `seguridad-` | Seguridad (OWASP, audit, IAM) | `seguridad-oauth2-flows` |
280
+ | `ux-` | UX/UI/Diseño | `ux-research-synthesis` |
281
+ | `calidad-` | Testing, QA, code review | `calidad-mutation-testing` |
282
+ | `proceso-` | Workflow, planificación, orquestación | `proceso-sprint-planning` |
283
+ | `docs-` | Documentación | `docs-api-changelog` |
284
+ | `meta-` | Meta-skills (sobre skills, sobre agentes) | `meta-skills-estandar` |
285
+ | (sin prefijo) | Skills transversales o del sistema | `compactacion-contexto` |
286
+
287
+ **Skills existentes NO se renombran** — el costo de actualizar referencias en
288
+ 37 agentes supera el beneficio. El prefijo aplica solo a skills NUEVOS.
289
+
290
+ ---
291
+
292
+ ## Proceso de creación de una nueva skill
293
+
294
+ 1. Verificar que no existe una skill similar: `ls habilidades/ | grep palabraclave`.
295
+ 2. Elegir prefijo de dominio según la tabla de convención de naming.
296
+ 3. Crear el directorio: `mkdir -p habilidades/prefijo-nombre-kebab-case/`.
297
+ 4. Crear `SKILL.md` con frontmatter válido y cuerpo mínimo.
298
+ 5. Verificar el checklist de auditoría completo.
299
+ 6. Registrar en `manifiestos/modulos.json` dentro del módulo apropiado.
300
+ 7. Registrar en CLAUDE.md bajo el dominio correspondiente si aplica.
301
+ 8. Commit atómico: `git add habilidades/prefijo-nombre/ && git commit`.
302
+
303
+ ---
304
+
305
+ ## Proceso de actualización de una skill existente
306
+
307
+ 1. Leer el SKILL.md actual con `Read`.
308
+ 2. Aplicar los cambios.
309
+ 3. Verificar que no supera 300 líneas.
310
+ 4. Si superó el límite, extraer a `recursos/`.
311
+ 5. Re-verificar el checklist de auditoría.
312
+ 6. Actualizar la versión en el frontmatter (SemVer).
313
+ 7. Commit atómico con descripción del cambio.
314
+
315
+ ---
316
+
317
+ ## Checklist de auditoría de cumplimiento
318
+
319
+ Usar este checklist antes de hacer commit de una skill nueva o modificada:
320
+
321
+ ### Estructura
322
+
323
+ - [ ] Directorio nombrado en kebab-case.
324
+ - [ ] `SKILL.md` existe y no está vacío.
325
+ - [ ] Si hay `scripts/`, contiene archivos ejecutables (no documentación).
326
+ - [ ] Si hay `recursos/`, los archivos son referenciados desde `SKILL.md`.
327
+ - [ ] No hay subdirectorios anidados más de un nivel.
328
+
329
+ ### Frontmatter
330
+
331
+ - [ ] Bloque `---` abre y cierra correctamente.
332
+ - [ ] Campo `name` presente, en kebab-case, máximo 64 caracteres.
333
+ - [ ] Campo `name` coincide exactamente con el nombre del directorio.
334
+ - [ ] Campo `description` presente, no vacío, máximo 1,024 caracteres.
335
+ - [ ] `description` menciona QUÉ hace Y CUÁNDO usarla.
336
+ - [ ] No hay palabras reservadas (`anthropic`, `claude`) en `name`.
337
+ - [ ] Si `description` + triggers superan 900 chars, considerar `when_to_use`.
338
+
339
+ ### Cuerpo de SKILL.md
340
+
341
+ - [ ] Cuerpo no excede 300 líneas (~5,000 tokens).
342
+ - [ ] Tiene sección "Cuándo cargar" o equivalente.
343
+ - [ ] Tiene sección "Cuándo NO cargar" con 2-4 exclusiones específicas.
344
+ - [ ] Tiene al menos una regla concreta (no solo descripciones).
345
+ - [ ] Tiene sección "Gotchas" o "Errores comunes no obvios" si cubre implementación.
346
+ - [ ] Directivas MUST/ALWAYS/NEVER/NUNCA/SIEMPRE incluyen justificación.
347
+ - [ ] No hay placeholders sin reemplazar (`[COMPLETAR]`, `[TBD]`).
348
+ - [ ] Todos los paths son relativos (ninguno absoluto).
349
+ - [ ] No duplica contenido de otro SKILL.md sin referencia cruzada.
350
+
351
+ ### Scripts (si aplica)
352
+
353
+ - [ ] Cada script tiene documentación de uso en las primeras 5 líneas.
354
+ - [ ] Los scripts usan exit codes estándar (0/1).
355
+ - [ ] Los scripts son deterministas (mismo input → mismo output).
356
+
357
+ ### Recursos (si aplica)
358
+
359
+ - [ ] Cada recurso es referenciado desde SKILL.md con path relativo.
360
+ - [ ] Los recursos son archivos reales (plantillas, esquemas, ejemplos funcionales).
361
+ - [ ] No hay recursos huérfanos (sin referencia en SKILL.md).
362
+ - [ ] Si un recurso supera 200 líneas, incluye ToC al inicio.
363
+
364
+ ### Registro
365
+
366
+ - [ ] La skill aparece en `manifiestos/modulos.json` bajo el módulo correcto.
367
+ - [ ] El nombre aparece en la tabla de habilidades de CLAUDE.md si aplica.
368
+
369
+ ---
370
+
371
+ ## Contenido avanzado en meta-skills-estandar
372
+
373
+ Los patrones avanzados de autoría NO viven en este documento — están en el
374
+ skill `meta-skills-estandar` (cargar con `Skill("meta-skills-estandar")`):
375
+
376
+ - **Response Discipline** para skills que prescriben comandos.
377
+ - **Anti-substitution Guardrails** para prevenir sustituciones incorrectas.
378
+ - **Campo dual `herramientasPermitidas` / `allowed-tools`**.
379
+ - **Nivel de control de instrucciones** (alto/medio/bajo).
380
+ - **Reglas detalladas para `scripts/` y `recursos/`**.
381
+ - **Anti-patrones al crear skills** (6 anti-patrones con ejemplos MAL/BIEN).
382
+ - **Leyes de diseño de alta señal** (6 leyes con ejemplos).
383
+ - **Principio de idiomas de framework** (tabla para Django, FastAPI, NestJS,
384
+ Spring Boot, Laravel, Rails, Go, Rust).
385
+ - **Mapeo a frameworks de seguridad** (NIST CSF, NIST AI RMF, MITRE ATT&CK,
386
+ ATLAS, D3FEND) — solo aplica a skills del dominio seguridad.
387
+ - **Migración a nombres de campo en español (REC-S15)**.
388
+ - **Convención `EXAMPLES.md`** como recurso opcional para skills críticos
389
+ cuyo valor depende de diff MAL→BIEN lado a lado. NO retroactiva — solo
390
+ guía para skills nuevos.
391
+
392
+ Cargar ese skill cuando se esté escribiendo o auditando un SKILL.md que
393
+ requiera patrones avanzados. Para skills simples o consultas básicas, el
394
+ núcleo de la regla es suficiente.