swl-ses 3.3.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 (177) hide show
  1. package/CLAUDE.md +425 -0
  2. package/_userland/agentes/.gitkeep +0 -0
  3. package/_userland/habilidades/.gitkeep +0 -0
  4. package/agentes/accesibilidad-wcag-swl.md +683 -0
  5. package/agentes/arquitecto-swl.md +210 -0
  6. package/agentes/auto-evolucion-swl.md +408 -0
  7. package/agentes/backend-api-swl.md +442 -0
  8. package/agentes/backend-node-swl.md +439 -0
  9. package/agentes/backend-python-swl.md +469 -0
  10. package/agentes/backend-workers-swl.md +444 -0
  11. package/agentes/cloud-infra-swl.md +466 -0
  12. package/agentes/consolidador-swl.md +487 -0
  13. package/agentes/datos-swl.md +568 -0
  14. package/agentes/depurador-swl.md +301 -0
  15. package/agentes/devops-ci-swl.md +352 -0
  16. package/agentes/disenador-ui-swl.md +546 -0
  17. package/agentes/documentador-swl.md +323 -0
  18. package/agentes/frontend-angular-swl.md +603 -0
  19. package/agentes/frontend-css-swl.md +700 -0
  20. package/agentes/frontend-react-swl.md +672 -0
  21. package/agentes/frontend-swl.md +483 -0
  22. package/agentes/frontend-tailwind-swl.md +808 -0
  23. package/agentes/implementador-swl.md +235 -0
  24. package/agentes/investigador-swl.md +274 -0
  25. package/agentes/investigador-ux-swl.md +482 -0
  26. package/agentes/migrador-swl.md +389 -0
  27. package/agentes/mobile-android-swl.md +473 -0
  28. package/agentes/mobile-cross-swl.md +501 -0
  29. package/agentes/mobile-ios-swl.md +464 -0
  30. package/agentes/notificador-swl.md +886 -0
  31. package/agentes/observabilidad-swl.md +408 -0
  32. package/agentes/orquestador-swl.md +490 -0
  33. package/agentes/planificador-swl.md +222 -0
  34. package/agentes/producto-prd-swl.md +565 -0
  35. package/agentes/release-manager-swl.md +545 -0
  36. package/agentes/rendimiento-swl.md +691 -0
  37. package/agentes/revisor-codigo-swl.md +254 -0
  38. package/agentes/revisor-seguridad-swl.md +316 -0
  39. package/agentes/tdd-qa-swl.md +323 -0
  40. package/agentes/ux-disenador-swl.md +498 -0
  41. package/bin/swl-ses.js +119 -0
  42. package/comandos/swl/actualizar.md +117 -0
  43. package/comandos/swl/aprender.md +348 -0
  44. package/comandos/swl/auditar-deps.md +390 -0
  45. package/comandos/swl/autoresearch.md +346 -0
  46. package/comandos/swl/checkpoint.md +296 -0
  47. package/comandos/swl/compactar.md +283 -0
  48. package/comandos/swl/crear-skill.md +609 -0
  49. package/comandos/swl/discutir-fase.md +230 -0
  50. package/comandos/swl/ejecutar-fase.md +302 -0
  51. package/comandos/swl/evolucionar.md +377 -0
  52. package/comandos/swl/instalar.md +220 -0
  53. package/comandos/swl/mapear-codebase.md +205 -0
  54. package/comandos/swl/nuevo-proyecto.md +154 -0
  55. package/comandos/swl/planear-fase.md +221 -0
  56. package/comandos/swl/release.md +405 -0
  57. package/comandos/swl/salud.md +382 -0
  58. package/comandos/swl/verificar.md +292 -0
  59. package/habilidades/accesibilidad-a11y/SKILL.md +584 -0
  60. package/habilidades/angular-avanzado/SKILL.md +491 -0
  61. package/habilidades/angular-moderno/SKILL.md +326 -0
  62. package/habilidades/api-rest-diseno/SKILL.md +302 -0
  63. package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
  64. package/habilidades/aprendizaje-continuo/SKILL.md +369 -0
  65. package/habilidades/async-python/SKILL.md +474 -0
  66. package/habilidades/auth-patrones/SKILL.md +488 -0
  67. package/habilidades/auto-evolucion-protocolo/SKILL.md +376 -0
  68. package/habilidades/autoresearch/SKILL.md +248 -0
  69. package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
  70. package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
  71. package/habilidades/checklist-calidad/SKILL.md +247 -0
  72. package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
  73. package/habilidades/checklist-seguridad/SKILL.md +224 -0
  74. package/habilidades/checkpoints-verificacion/SKILL.md +309 -0
  75. package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
  76. package/habilidades/ci-cd-pipelines/SKILL.md +583 -0
  77. package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
  78. package/habilidades/cloud-aws/SKILL.md +497 -0
  79. package/habilidades/compactacion-contexto/SKILL.md +201 -0
  80. package/habilidades/contenedores-docker/SKILL.md +453 -0
  81. package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
  82. package/habilidades/css-moderno/SKILL.md +463 -0
  83. package/habilidades/datos-etl/SKILL.md +486 -0
  84. package/habilidades/dependencias-auditoria/SKILL.md +293 -0
  85. package/habilidades/deprecacion-migracion/SKILL.md +485 -0
  86. package/habilidades/design-tokens/SKILL.md +519 -0
  87. package/habilidades/discutir-fase/SKILL.md +167 -0
  88. package/habilidades/diseno-responsivo/SKILL.md +326 -0
  89. package/habilidades/django-experto/SKILL.md +395 -0
  90. package/habilidades/doc-sync/SKILL.md +259 -0
  91. package/habilidades/ejecutar-fase/SKILL.md +199 -0
  92. package/habilidades/estructura-proyecto-claude/SKILL.md +459 -0
  93. package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
  94. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +213 -0
  95. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
  96. package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
  97. package/habilidades/event-driven/SKILL.md +580 -0
  98. package/habilidades/extractor-de-aprendizajes/SKILL.md +234 -0
  99. package/habilidades/fastapi-experto/SKILL.md +368 -0
  100. package/habilidades/frontend-avanzado/SKILL.md +555 -0
  101. package/habilidades/git-worktrees-paralelo/SKILL.md +246 -0
  102. package/habilidades/iam-secretos/SKILL.md +511 -0
  103. package/habilidades/instalar-sistema/SKILL.md +140 -0
  104. package/habilidades/kubernetes-orquestacion/SKILL.md +549 -0
  105. package/habilidades/manejo-errores/SKILL.md +512 -0
  106. package/habilidades/mapear-codebase/SKILL.md +199 -0
  107. package/habilidades/microservicios/SKILL.md +473 -0
  108. package/habilidades/mobile-flutter/SKILL.md +566 -0
  109. package/habilidades/mobile-react-native/SKILL.md +493 -0
  110. package/habilidades/monitoring-alertas/SKILL.md +447 -0
  111. package/habilidades/node-experto/SKILL.md +521 -0
  112. package/habilidades/notificaciones-multicanal/SKILL.md +448 -0
  113. package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
  114. package/habilidades/nuevo-proyecto/SKILL.md +183 -0
  115. package/habilidades/patrones-python/SKILL.md +381 -0
  116. package/habilidades/performance-baseline/SKILL.md +243 -0
  117. package/habilidades/planear-fase/SKILL.md +184 -0
  118. package/habilidades/postgresql-experto/SKILL.md +379 -0
  119. package/habilidades/react-experto/SKILL.md +434 -0
  120. package/habilidades/react-optimizacion/SKILL.md +328 -0
  121. package/habilidades/release-semver/SKILL.md +226 -0
  122. package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
  123. package/habilidades/sql-optimizacion/SKILL.md +314 -0
  124. package/habilidades/tailwind-experto/SKILL.md +412 -0
  125. package/habilidades/tdd-workflow/SKILL.md +267 -0
  126. package/habilidades/testing-python/SKILL.md +350 -0
  127. package/habilidades/threat-model-lite/SKILL.md +218 -0
  128. package/habilidades/typescript-avanzado/SKILL.md +454 -0
  129. package/habilidades/ux-diseno/SKILL.md +488 -0
  130. package/habilidades/validacion-ci-sistema/SKILL.md +543 -0
  131. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
  132. package/habilidades/verificar-trabajo/SKILL.md +208 -0
  133. package/habilidades/wireframes-flujos/SKILL.md +396 -0
  134. package/habilidades/workflow-claude-code/SKILL.md +359 -0
  135. package/hooks/calidad-pre-commit.js +578 -0
  136. package/hooks/escaneo-secretos.js +302 -0
  137. package/hooks/extraccion-aprendizajes.js +550 -0
  138. package/hooks/linea-estado.js +249 -0
  139. package/hooks/monitor-contexto.js +230 -0
  140. package/hooks/proteccion-rutas.js +249 -0
  141. package/manifiestos/hooks-config.json +41 -0
  142. package/manifiestos/modulos.json +318 -0
  143. package/manifiestos/perfiles.json +189 -0
  144. package/package.json +45 -0
  145. package/plantillas/PROJECT.md +122 -0
  146. package/plantillas/REQUIREMENTS.md +132 -0
  147. package/plantillas/ROADMAP.md +143 -0
  148. package/plantillas/STATE.md +109 -0
  149. package/plantillas/research/ARCHITECTURE.md +220 -0
  150. package/plantillas/research/FEATURES.md +175 -0
  151. package/plantillas/research/PITFALLS.md +299 -0
  152. package/plantillas/research/STACK.md +233 -0
  153. package/plantillas/research/SUMMARY.md +165 -0
  154. package/plugin.json +144 -0
  155. package/reglas/accesibilidad.md +269 -0
  156. package/reglas/api-diseno.md +400 -0
  157. package/reglas/arquitectura.md +183 -0
  158. package/reglas/cloud-infra.md +247 -0
  159. package/reglas/docs.md +245 -0
  160. package/reglas/estilo-codigo.md +179 -0
  161. package/reglas/git-workflow.md +186 -0
  162. package/reglas/performance.md +195 -0
  163. package/reglas/pruebas.md +159 -0
  164. package/reglas/seguridad.md +151 -0
  165. package/reglas/skills-estandar.md +473 -0
  166. package/scripts/actualizar.js +51 -0
  167. package/scripts/desinstalar.js +86 -0
  168. package/scripts/doctor.js +222 -0
  169. package/scripts/inicializar.js +89 -0
  170. package/scripts/instalador.js +333 -0
  171. package/scripts/lib/detectar-runtime.js +177 -0
  172. package/scripts/lib/estado.js +112 -0
  173. package/scripts/lib/hooks-settings.js +283 -0
  174. package/scripts/lib/manifiestos.js +138 -0
  175. package/scripts/lib/seguridad.js +160 -0
  176. package/scripts/publicar.js +209 -0
  177. package/scripts/validar.js +120 -0
@@ -0,0 +1,609 @@
1
+ ---
2
+ name: swl:crear-skill
3
+ description: Crea un nuevo skill en el sistema SWL de forma guiada siguiendo el estándar oficial en reglas/skills-estandar.md. Define nombre (≤64 chars, kebab-case), descripción (≤1024 chars) y cuándo activar. Crea el directorio con estructura de 3 niveles (SKILL.md + scripts/ opcional + recursos/ opcional) y registra en el inventario. Puede pre-poblar desde aprendizajes existentes. Flags: --nombre=[nombre], --desde-aprendizaje=[path], --template=[plantilla], --con-scripts, --con-recursos.
4
+ allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
5
+ ---
6
+
7
+ # /swl:crear-skill — Creación de nuevos skills en el sistema SWL
8
+
9
+ Eres el constructor de skills del sistema SWL. Tu responsabilidad es guiar la creación de nuevos módulos de conocimiento con la estructura correcta, el contenido apropiado y el registro adecuado en el sistema. Un skill bien construido ahorra horas de trabajo repetitivo; un skill mal construido introduce confusión que cuesta más de lo que ahorra.
10
+
11
+ **Estándar de referencia**: Toda skill creada por este comando DEBE cumplir la regla
12
+ definida en `reglas/skills-estandar.md`. Leer esa regla si hay dudas sobre estructura,
13
+ tamaño, naming o contenido.
14
+
15
+ ## Cuándo usar este comando
16
+
17
+ - Cuando se identifica un área de conocimiento que no está cubierta por ningún skill existente
18
+ - Después de resolver un problema suficientemente general y complejo como para merecer un skill dedicado
19
+ - Cuando se integra una nueva librería, API o herramienta que el equipo usará frecuentemente
20
+ - Cuando el comando `swl:aprender` identifica un aprendizaje TIPO C (nueva habilidad)
21
+ - Cuando una regla o conjunto de reglas crece tanto que merece ser separado de su skill actual
22
+
23
+ ## Prerequisito — Verificar que no existe ya
24
+
25
+ Antes de crear cualquier skill, verifica que no existe uno similar en ambos directorios:
26
+
27
+ ```bash
28
+ # Listar habilidades en español (SWL)
29
+ for dir in habilidades/*/; do
30
+ echo "=== $dir ==="
31
+ head -5 "$dir/SKILL.md" 2>/dev/null
32
+ echo ""
33
+ done
34
+
35
+ # Listar skills en inglés (heredados)
36
+ for dir in skills/*/; do
37
+ echo "=== $dir ==="
38
+ head -5 "$dir/SKILL.md" 2>/dev/null
39
+ echo ""
40
+ done
41
+ ```
42
+
43
+ Si existe un skill similar, reporta al usuario y pregunta si prefiere:
44
+ 1. Actualizar el skill existente (usa `swl:evolucionar --skill=[nombre]`)
45
+ 2. Crear uno nuevo de todas formas (justificar la separación)
46
+
47
+ ## Flags soportados
48
+
49
+ ```
50
+ --nombre=[nombre] Nombre del skill en kebab-case (ej: --nombre=stripe-payments)
51
+ Si no se pasa, se solicita interactivamente.
52
+ Validación: ≤64 chars, solo minúsculas + números + guiones,
53
+ sin palabras reservadas (anthropic, claude, swl).
54
+
55
+ --desde-aprendizaje=[path] Ruta a un LEARNINGS.md o archivo de notas para pre-poblar
56
+ el contenido del skill desde los aprendizajes extraídos.
57
+ Ej: --desde-aprendizaje=.planning/LEARNINGS.md
58
+
59
+ --template=[plantilla] Plantilla base a usar. Opciones:
60
+ basico — SKILL.md solo con estructura mínima
61
+ completo — SKILL.md + recursos/ con archivos de referencia
62
+ libreria — optimizado para documentar una librería
63
+ api — optimizado para documentar una API externa
64
+ patron — optimizado para documentar un patrón de código
65
+ Por defecto: basico
66
+
67
+ --con-scripts Crear directorio scripts/ vacío con README explicando
68
+ cuándo agregar scripts deterministas.
69
+ Usar cuando la skill ejecuta lógica reutilizable
70
+ (validación, formateo, cálculo) via bash.
71
+
72
+ --con-recursos Crear directorio recursos/ vacío listo para plantillas,
73
+ esquemas y documentación extendida.
74
+ Se activa automáticamente con template=completo|libreria|api.
75
+ ```
76
+
77
+ ## Paso 0 — Parseo y validación de flags
78
+
79
+ Extrae los valores de flags del comando invocado:
80
+ - `--nombre`: si está presente, úsalo como nombre del skill. Si no, se pedirá.
81
+ - `--desde-aprendizaje`: si está presente, lee el archivo para pre-poblar.
82
+ - `--template`: determina la plantilla. Por defecto `basico`.
83
+ - `--con-scripts`: si está presente, crear directorio `scripts/` en la skill.
84
+ - `--con-recursos`: si está presente, crear directorio `recursos/` en la skill.
85
+
86
+ ### Validación del nombre (estándar reglas/skills-estandar.md)
87
+
88
+ Verificar que el nombre cumple TODAS las siguientes condiciones:
89
+
90
+ ```
91
+ 1. Formato kebab-case: solo minúsculas, números y guiones. Sin mayúsculas,
92
+ sin espacios, sin guiones bajos, sin caracteres especiales.
93
+ Válidos: stripe-payments, fastapi-auth, react-query-patterns
94
+ Inválidos: StripePayments, stripe_payments, Stripe Payments
95
+
96
+ 2. Longitud: máximo 64 caracteres (límite del protocolo Anthropic).
97
+ Contar con: echo -n "nombre-del-skill" | wc -c
98
+
99
+ 3. Sin palabras reservadas: no puede contener "anthropic", "claude" ni "swl".
100
+ "swl" está reservado para agentes, no skills.
101
+ Inválidos: claude-helper, anthropic-patterns, swl-backend
102
+
103
+ 4. No duplicar nombre existente en habilidades/ ni en skills/:
104
+ ls habilidades/ skills/ | grep "^nombre-propuesto$"
105
+ ```
106
+
107
+ Si el nombre no sigue kebab-case, corregirlo automáticamente y reportar la corrección.
108
+ Si viola longitud o palabras reservadas, DETENER y pedir nombre nuevo — no corregir automáticamente.
109
+
110
+ ### Validación de la description (se valida en Paso 1b)
111
+
112
+ La description del frontmatter DEBE:
113
+ - No estar vacía
114
+ - Ser ≤ 1,024 caracteres
115
+ - Mencionar QUÉ hace la skill Y CUÁNDO cargarla
116
+
117
+ Verificar longitud: `echo -n "la description completa" | wc -c`
118
+
119
+ ## Paso 1 — Recopilación interactiva de información
120
+
121
+ Si no se pasaron todos los datos necesarios por flags, solicita la información faltante:
122
+
123
+ ### 1a. Nombre del skill
124
+
125
+ ```
126
+ ¿Cómo se llamará este skill?
127
+ Formato: kebab-case (ej: stripe-payments, async-python-patterns, angular-forms)
128
+ El nombre debe ser:
129
+ - Descriptivo del dominio que cubre
130
+ - Único en el sistema (no duplicar nombres existentes)
131
+ - Corto pero claro (2-4 palabras)
132
+ ```
133
+
134
+ ### 1b. Descripción del skill
135
+
136
+ ```
137
+ ¿Cuál es la descripción de este skill?
138
+ Esta descripción aparece en el frontmatter y es lo ÚNICO que Claude lee
139
+ para decidir si activar la skill. Debe responder DOS preguntas:
140
+ 1. ¿Qué conocimiento contiene?
141
+ 2. ¿En qué situaciones cargarla?
142
+
143
+ Límite: 1,024 caracteres (se validará antes de guardar).
144
+ Puede ser multi-línea usando el operador > de YAML.
145
+
146
+ Ejemplo válido:
147
+ "Patrones JWT para FastAPI: generación, validación, refresh y revocación.
148
+ Cargar cuando se implementen endpoints de autenticación, middleware de auth
149
+ o manejo de sesiones con tokens."
150
+
151
+ Ejemplo inválido:
152
+ "Skill sobre autenticación" ← solo describe, no dice cuándo usar
153
+ ```
154
+
155
+ Al recibir la description, verificar su longitud antes de continuar:
156
+ `echo -n "[description recibida]" | wc -c`
157
+ Si supera 1,024 chars, pedir que se acorte antes de proceder.
158
+
159
+ ### 1c. Cuándo activar este skill
160
+
161
+ ```
162
+ ¿Cuándo debe cargarse este skill?
163
+ Lista las situaciones donde un agente o desarrollador debería invocar Skill("[nombre]")
164
+
165
+ Ej:
166
+ - Cuando se implementa autenticación con JWT
167
+ - Cuando se escriben endpoints de login/logout
168
+ - Cuando se configura refresh tokens
169
+ ```
170
+
171
+ ### 1d. Dominio de conocimiento
172
+
173
+ ```
174
+ ¿A qué área pertenece este skill? (elige una o más)
175
+
176
+ 1. Backend Python (FastAPI, Django, SQLAlchemy)
177
+ 2. Frontend Angular
178
+ 3. Frontend React/Next.js
179
+ 4. Base de datos (SQL, PostgreSQL, migrations)
180
+ 5. Infraestructura y DevOps
181
+ 6. APIs y integraciones externas
182
+ 7. Testing y calidad
183
+ 8. Seguridad
184
+ 9. Proceso y metodología
185
+ 10. Otro: [especificar]
186
+ ```
187
+
188
+ ### 1e. Reglas iniciales
189
+
190
+ ```
191
+ ¿Cuáles son las 3-5 reglas más importantes de este skill?
192
+ Estas son las reglas que NUNCA deben violarse.
193
+ Para cada regla, escribe una línea que empiece con verbo en imperativo.
194
+
195
+ Ej:
196
+ - SIEMPRE validar el token JWT en el servidor, nunca en el frontend
197
+ - NUNCA almacenar el token en localStorage — usar httpOnly cookies
198
+ - Verificar la expiración del token en cada request
199
+ ```
200
+
201
+ Espera respuesta del usuario. Usa las reglas ingresadas para poblar el skill.
202
+
203
+ ## Paso 2 — Pre-población desde aprendizajes (si --desde-aprendizaje)
204
+
205
+ Si se pasó `--desde-aprendizaje=[path]`:
206
+
207
+ Lee el archivo especificado:
208
+ ```bash
209
+ cat [path]
210
+ ```
211
+
212
+ Extrae del archivo:
213
+ - Secciones marcadas como TIPO B o TIPO C (aprendizajes generales y nuevas habilidades)
214
+ - Anti-patrones documentados con formato `NUNCA hacer esto`
215
+ - Ejemplos de código que aparecen en el documento
216
+ - Referencias a documentación externa
217
+
218
+ Presenta al usuario lo que se encontró:
219
+
220
+ ```
221
+ Encontré el siguiente contenido relevante en [path]:
222
+
223
+ Reglas identificadas: [N]
224
+ 1. [regla 1]
225
+ 2. [regla 2]
226
+ ...
227
+
228
+ Anti-patrones identificados: [N]
229
+ 1. [anti-patrón 1]
230
+ 2. [anti-patrón 2]
231
+ ...
232
+
233
+ Ejemplos de código: [N bloques]
234
+
235
+ ¿Quieres usar este contenido para pre-poblar el skill? (sí/no/parcial)
236
+ ```
237
+
238
+ Espera confirmación antes de usar el contenido extraído.
239
+
240
+ ## Paso 3 — Selección de plantilla y estructura
241
+
242
+ Las skills SWL usan la estructura de 3 niveles definida en `reglas/skills-estandar.md`:
243
+ - **Nivel 1** (siempre cargado): frontmatter YAML en SKILL.md (~100 tokens)
244
+ - **Nivel 2** (al activar): cuerpo de SKILL.md — instrucciones y reglas (<5k tokens / 300 líneas)
245
+ - **Nivel 3** (bajo demanda): scripts/ y recursos/ — referenciados desde SKILL.md
246
+
247
+ ### Plantilla: basico
248
+
249
+ ```
250
+ habilidades/[nombre]/
251
+ └── SKILL.md
252
+ ```
253
+
254
+ Usar cuando: el conocimiento cabe en 300 líneas y no requiere archivos adicionales.
255
+
256
+ ### Plantilla: completo
257
+
258
+ ```
259
+ habilidades/[nombre]/
260
+ ├── SKILL.md
261
+ └── recursos/
262
+ └── referencia-avanzada.md # Documentación extendida, ejemplos completos
263
+ ```
264
+
265
+ Usar cuando: hay plantillas, esquemas o ejemplos que no caben en SKILL.md.
266
+
267
+ ### Plantilla: libreria
268
+
269
+ ```
270
+ habilidades/[nombre]/
271
+ ├── SKILL.md # Cuándo usar, conceptos clave, reglas críticas
272
+ └── recursos/
273
+ └── api-reference.md # Referencia rápida de la API (endpoints, tipos)
274
+ ```
275
+
276
+ Usar cuando: se documenta una librería externa con API extensa.
277
+
278
+ ### Plantilla: api
279
+
280
+ ```
281
+ habilidades/[nombre]/
282
+ ├── SKILL.md # Auth, endpoints principales, errores comunes
283
+ └── recursos/
284
+ └── endpoints.md # Listado de endpoints con request/response
285
+ ```
286
+
287
+ Usar cuando: se documenta una API externa (REST, GraphQL, gRPC).
288
+
289
+ ### Plantilla: patron
290
+
291
+ ```
292
+ habilidades/[nombre]/
293
+ └── SKILL.md # Descripción del patrón, cuándo aplicar, implementación
294
+ ```
295
+
296
+ Usar cuando: se documenta un patrón de diseño o arquitectura.
297
+
298
+ ### Flag --con-scripts (cualquier plantilla)
299
+
300
+ Si se pasa `--con-scripts` o si la skill requiere lógica determinista ejecutable,
301
+ agregar directorio `scripts/` con un archivo de orientación:
302
+
303
+ ```
304
+ habilidades/[nombre]/
305
+ ├── SKILL.md
306
+ ├── scripts/
307
+ │ └── README-scripts.md # Explica qué scripts agregar y cuándo
308
+ └── [recursos/ si aplica]
309
+ ```
310
+
311
+ ### Flag --con-recursos (activado por completo|libreria|api o flag explícito)
312
+
313
+ Crear directorio `recursos/` vacío listo para recibir archivos de referencia.
314
+
315
+ ### Crear la estructura en disco
316
+
317
+ ```bash
318
+ # Crear directorio base de la habilidad (en habilidades/, no en skills/)
319
+ mkdir -p habilidades/[nombre]
320
+
321
+ # Si la plantilla requiere recursos/
322
+ mkdir -p habilidades/[nombre]/recursos
323
+
324
+ # Si se pasa --con-scripts
325
+ mkdir -p habilidades/[nombre]/scripts
326
+ ```
327
+
328
+ **Nota importante**: Las nuevas habilidades SWL van en `habilidades/`, NO en `skills/`.
329
+ El directorio `skills/` contiene únicamente skills heredados en inglés.
330
+
331
+ ## Paso 4 — Generación del SKILL.md
332
+
333
+ Genera el SKILL.md con la información recopilada. El frontmatter DEBE tener exactamente
334
+ los campos `name` y `description` — son los únicos campos que el protocolo Anthropic
335
+ procesa en el Nivel 1. Campos adicionales como `version` o `domain` son opcionales
336
+ y se ubican DESPUÉS de `description`.
337
+
338
+ ```markdown
339
+ ---
340
+ name: [nombre-del-skill]
341
+ description: >
342
+ [descripción completa: qué hace y cuándo cargar — máximo 1,024 chars]
343
+ ---
344
+
345
+ # [Nombre Legible del Skill]
346
+
347
+ [descripción expandida de 2-3 oraciones sobre qué cubre este skill y por qué importa]
348
+
349
+ ## Cuándo cargar este skill
350
+
351
+ Invoca `Skill("[nombre-del-skill]")` cuando:
352
+
353
+ - [situación 1]
354
+ - [situación 2]
355
+ - [situación 3]
356
+ [agregar más según lo recopilado]
357
+
358
+ ## Conceptos clave
359
+
360
+ [3-5 conceptos fundamentales que el desarrollador debe entender antes de aplicar las reglas]
361
+
362
+ ### [Concepto 1]
363
+ [explicación concisa]
364
+
365
+ ### [Concepto 2]
366
+ [explicación concisa]
367
+
368
+ ### [Concepto 3]
369
+ [explicación concisa]
370
+
371
+ ## Reglas obligatorias
372
+
373
+ Estas reglas NUNCA deben violarse. El verificador rechazará código que las incumpla.
374
+
375
+ ### [Nombre de la Regla 1]
376
+ [descripción de la regla con justificación]
377
+
378
+ **Por qué**: [razón de la regla]
379
+ **Cómo verificar**: [cómo detectar si se viola]
380
+
381
+ ### [Nombre de la Regla 2]
382
+ [descripción de la regla]
383
+
384
+ [... repetir por cada regla recopilada en el Paso 1e ...]
385
+
386
+ ## Patrones recomendados
387
+
388
+ [Patrones de implementación que funcionan bien en este dominio]
389
+
390
+ ### [Patrón 1]
391
+ [descripción]
392
+
393
+ ```[lenguaje]
394
+ [ejemplo de código correcto]
395
+ ```
396
+
397
+ ## Anti-patrones conocidos
398
+
399
+ Estos son errores comunes en este dominio. El desarrollador DEBE evitarlos.
400
+
401
+ ### [Nombre del Anti-patrón 1] — NUNCA hacer esto
402
+
403
+ **Problema**: [descripción del problema]
404
+ **Síntoma**: [cómo se manifiesta el error]
405
+ **Causa**: [por qué ocurre frecuentemente]
406
+
407
+ ```[lenguaje]
408
+ # MAL — [descripción de por qué está mal]
409
+ [código incorrecto]
410
+
411
+ # BIEN — [descripción de por qué está bien]
412
+ [código correcto]
413
+ ```
414
+
415
+ ## Checklist de verificación
416
+
417
+ Antes de considerar el trabajo completo, verificar:
418
+
419
+ - [ ] [verificación 1]
420
+ - [ ] [verificación 2]
421
+ - [ ] [verificación 3]
422
+ [agregar items según las reglas definidas]
423
+
424
+ ## Referencias
425
+
426
+ - [Documentación oficial si aplica]
427
+ - [Issues o PRs relevantes si aplica]
428
+ - [Artículos de referencia si aplica]
429
+
430
+ ---
431
+ *Skill creado con swl:crear-skill el [fecha]. Versión 1.0.0.*
432
+ ```
433
+
434
+ Nota: los placeholders entre corchetes deben ser reemplazados con el contenido real recopilado. No dejar placeholders sin reemplazar en el archivo final.
435
+
436
+ ## Paso 5 — Generación de README-scripts.md (si --con-scripts)
437
+
438
+ Si se creó el directorio `scripts/`, generar un archivo de orientación:
439
+
440
+ ```markdown
441
+ # Scripts de la skill [nombre-del-skill]
442
+
443
+ Este directorio contiene scripts de lógica determinista reutilizable.
444
+ Claude los ejecuta via bash y procesa solo el output — no entran en contexto.
445
+
446
+ ## Cuándo agregar un script aquí
447
+
448
+ - La lógica es determinista: mismo input → mismo output siempre
449
+ - Sería costosa de regenerar en cada invocación
450
+ - No requiere razonamiento contextual
451
+
452
+ ## Cómo referenciar desde SKILL.md
453
+
454
+ ```markdown
455
+ Ejecutar validación: `python scripts/nombre-script.py ruta/al/archivo`
456
+ ```
457
+
458
+ ## Convenciones
459
+
460
+ - Nombre en kebab-case: `validar-frontmatter.py`, `formatear-sql.js`
461
+ - Exit code 0 = éxito, 1 = error
462
+ - Documentar uso en las primeras 5 líneas como comentario
463
+ - Imprimir resultados claros en stdout
464
+ ```
465
+
466
+ **Nota**: El formato AGENTS.md está deprecado para habilidades SWL. No crear AGENTS.md
467
+ en nuevas habilidades — el SKILL.md con frontmatter correcto cumple esa función.
468
+
469
+ ## Paso 6 — Registro del skill en el inventario
470
+
471
+ El registro tiene DOS componentes:
472
+
473
+ ### 6a. Registrar en CLAUDE.md del sistema
474
+
475
+ Buscar la tabla "Sistema de habilidades" en `CLAUDE.md` del sistema SWL
476
+ (normalmente en la raíz del repositorio) y agregar el nuevo skill bajo el
477
+ dominio correspondiente:
478
+
479
+ ```markdown
480
+ | **[Dominio]** | skill-existente-1, skill-existente-2, **[nombre-nuevo]** |
481
+ ```
482
+
483
+ Si el dominio no existe en la tabla, agregar una fila nueva.
484
+
485
+ ### 6b. Registrar en inventario de habilidades
486
+
487
+ Busca si existe un archivo de inventario:
488
+
489
+ ```bash
490
+ ls habilidades/README.md habilidades/INVENTORY.md 2>/dev/null
491
+ ```
492
+
493
+ Si existe, agrega una entrada para el nuevo skill.
494
+
495
+ Si no existe, NO crear automáticamente — reportar al usuario que el inventario
496
+ no existe y sugerir crearlo manualmente si el equipo lo requiere.
497
+
498
+ ## Paso 7 — Verificación de la estructura creada
499
+
500
+ Verifica que el skill fue creado correctamente aplicando el checklist de
501
+ `reglas/skills-estandar.md`:
502
+
503
+ ```bash
504
+ # Verificar que los archivos existen
505
+ ls -la habilidades/[nombre]/
506
+
507
+ # Verificar frontmatter: campos name y description presentes
508
+ head -10 habilidades/[nombre]/SKILL.md
509
+
510
+ # Verificar longitud del nombre (debe ser ≤64 chars)
511
+ echo -n "[nombre]" | wc -c
512
+
513
+ # Contar líneas del cuerpo (debe ser ≤300 líneas)
514
+ wc -l habilidades/[nombre]/SKILL.md
515
+
516
+ # Verificar que no hay placeholders sin reemplazar
517
+ grep -n "\[.*\]" habilidades/[nombre]/SKILL.md | grep -v "checklist\|lista\|ejemplo"
518
+
519
+ # Si hay scripts/, verificar que tienen exit codes
520
+ if [ -d habilidades/[nombre]/scripts/ ]; then
521
+ ls -la habilidades/[nombre]/scripts/
522
+ fi
523
+
524
+ # Si hay recursos/, verificar que son referenciados desde SKILL.md
525
+ if [ -d habilidades/[nombre]/recursos/ ]; then
526
+ for f in habilidades/[nombre]/recursos/*; do
527
+ fname=$(basename "$f")
528
+ grep -q "$fname" habilidades/[nombre]/SKILL.md && echo "OK: $fname referenciado" || echo "ALERTA: $fname NO referenciado en SKILL.md"
529
+ done
530
+ fi
531
+ ```
532
+
533
+ Si se detectan placeholders sin reemplazar, reportarlos y pedir al usuario que los complete:
534
+
535
+ ```
536
+ Se detectaron placeholders sin completar en habilidades/[nombre]/SKILL.md:
537
+ Línea [N]: [contenido con placeholder]
538
+ Línea [N]: [contenido con placeholder]
539
+
540
+ Por favor completa estos campos manualmente o proporciona la información
541
+ para que pueda completarlos por ti.
542
+ ```
543
+
544
+ Si el SKILL.md supera 300 líneas, advertir:
545
+
546
+ ```
547
+ ADVERTENCIA: SKILL.md tiene [N] líneas (límite recomendado: 300).
548
+ Considerar extraer secciones de referencia a recursos/referencia.md
549
+ y referenciarlas con: [ver referencia](recursos/referencia.md)
550
+ ```
551
+
552
+ ## Paso 8 — Instrucciones de uso
553
+
554
+ Al terminar, proporciona instrucciones claras de cómo usar el skill recién creado:
555
+
556
+ ```
557
+ === Habilidad "[nombre]" creada exitosamente ===
558
+
559
+ Ubicación: habilidades/[nombre]/
560
+ Niveles de carga:
561
+ Nivel 1 (automático): frontmatter YAML en SKILL.md (~N chars de description)
562
+ Nivel 2 (al activar): cuerpo de SKILL.md ([N] líneas)
563
+ [Nivel 3 (bajo demanda): scripts/ — si aplica]
564
+ [Nivel 3 (bajo demanda): recursos/ — si aplica]
565
+
566
+ Archivos creados:
567
+ habilidades/[nombre]/SKILL.md [N] líneas
568
+ [habilidades/[nombre]/scripts/ — si se pasó --con-scripts]
569
+ [habilidades/[nombre]/recursos/ — si se pasó --con-recursos o plantilla completo/libreria/api]
570
+
571
+ Para usar esta habilidad en un agente o comando:
572
+ Skill("[nombre]")
573
+
574
+ Para cargar desde el desarrollador (en su protocolo de skills):
575
+ Agrega "[nombre]" al mapa de habilidades del CLAUDE.md del agente
576
+
577
+ Registrada en CLAUDE.md del sistema:
578
+ Tabla "Sistema de habilidades" bajo dominio [dominio]
579
+
580
+ Para mantener esta habilidad actualizada:
581
+ /swl:evolucionar --skill=[nombre]
582
+
583
+ Para verificar su salud:
584
+ /swl:salud (incluye esta habilidad en el diagnóstico)
585
+
586
+ Checklist de cumplimiento (reglas/skills-estandar.md):
587
+ [X] name ≤64 chars, kebab-case, sin palabras reservadas
588
+ [X] description ≤1024 chars, menciona QUÉ y CUÁNDO
589
+ [X] cuerpo SKILL.md [N] líneas (límite: 300)
590
+ [X o pendiente] recursos/ referenciados con paths relativos
591
+ [X o pendiente] scripts/ con documentación de uso
592
+
593
+ Próximos pasos recomendados:
594
+ 1. Completar los ejemplos de código en SKILL.md si quedaron vacíos
595
+ 2. Agregar referencias a documentación oficial relevante
596
+ 3. Hacer un commit: git add habilidades/[nombre]/ && git commit -m "habilidad: agrega [nombre]"
597
+ ```
598
+
599
+ ## Reglas de comportamiento
600
+
601
+ - NUNCA crear una habilidad con menos de 3 reglas concretas — si hay menos, agregar al skill más cercano en lugar de crear uno nuevo. (El mínimo era 5 en el diseño original; se redujo a 3 para no forzar reglas artificiales.)
602
+ - NUNCA dejar placeholders sin reemplazar en el archivo final. Un skill con `[COMPLETAR]` no es un skill, es un borrador.
603
+ - NUNCA duplicar contenido que ya existe en otra habilidad — referenciar con `Skill("nombre-existente")` en su lugar.
604
+ - El campo `name` en el frontmatter DEBE coincidir exactamente con el nombre del directorio y con la forma en que se invoca: `Skill("[nombre]")`.
605
+ - Si el usuario proporciona contenido técnicamente incorrecto para las reglas, señalarlo con evidencia y sugerir la corrección — no agregar reglas erróneas por complacencia.
606
+ - La `description` en el frontmatter DEBE responder a "¿cuándo cargo este skill?" — no solo "qué hace" sino también "cuándo usarla". Máximo 1,024 caracteres.
607
+ - NUNCA crear habilidades en el directorio `skills/` — ese directorio es solo para skills heredados en inglés. Las nuevas habilidades van en `habilidades/`.
608
+ - NUNCA usar paths absolutos dentro de SKILL.md — siempre relativos al directorio de la habilidad.
609
+ - Leer `reglas/skills-estandar.md` si hay duda sobre cualquier aspecto del estándar — esa regla es la fuente de verdad.