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.
- package/CLAUDE.md +425 -0
- package/_userland/agentes/.gitkeep +0 -0
- package/_userland/habilidades/.gitkeep +0 -0
- package/agentes/accesibilidad-wcag-swl.md +683 -0
- package/agentes/arquitecto-swl.md +210 -0
- package/agentes/auto-evolucion-swl.md +408 -0
- package/agentes/backend-api-swl.md +442 -0
- package/agentes/backend-node-swl.md +439 -0
- package/agentes/backend-python-swl.md +469 -0
- package/agentes/backend-workers-swl.md +444 -0
- package/agentes/cloud-infra-swl.md +466 -0
- package/agentes/consolidador-swl.md +487 -0
- package/agentes/datos-swl.md +568 -0
- package/agentes/depurador-swl.md +301 -0
- package/agentes/devops-ci-swl.md +352 -0
- package/agentes/disenador-ui-swl.md +546 -0
- package/agentes/documentador-swl.md +323 -0
- package/agentes/frontend-angular-swl.md +603 -0
- package/agentes/frontend-css-swl.md +700 -0
- package/agentes/frontend-react-swl.md +672 -0
- package/agentes/frontend-swl.md +483 -0
- package/agentes/frontend-tailwind-swl.md +808 -0
- package/agentes/implementador-swl.md +235 -0
- package/agentes/investigador-swl.md +274 -0
- package/agentes/investigador-ux-swl.md +482 -0
- package/agentes/migrador-swl.md +389 -0
- package/agentes/mobile-android-swl.md +473 -0
- package/agentes/mobile-cross-swl.md +501 -0
- package/agentes/mobile-ios-swl.md +464 -0
- package/agentes/notificador-swl.md +886 -0
- package/agentes/observabilidad-swl.md +408 -0
- package/agentes/orquestador-swl.md +490 -0
- package/agentes/planificador-swl.md +222 -0
- package/agentes/producto-prd-swl.md +565 -0
- package/agentes/release-manager-swl.md +545 -0
- package/agentes/rendimiento-swl.md +691 -0
- package/agentes/revisor-codigo-swl.md +254 -0
- package/agentes/revisor-seguridad-swl.md +316 -0
- package/agentes/tdd-qa-swl.md +323 -0
- package/agentes/ux-disenador-swl.md +498 -0
- package/bin/swl-ses.js +119 -0
- package/comandos/swl/actualizar.md +117 -0
- package/comandos/swl/aprender.md +348 -0
- package/comandos/swl/auditar-deps.md +390 -0
- package/comandos/swl/autoresearch.md +346 -0
- package/comandos/swl/checkpoint.md +296 -0
- package/comandos/swl/compactar.md +283 -0
- package/comandos/swl/crear-skill.md +609 -0
- package/comandos/swl/discutir-fase.md +230 -0
- package/comandos/swl/ejecutar-fase.md +302 -0
- package/comandos/swl/evolucionar.md +377 -0
- package/comandos/swl/instalar.md +220 -0
- package/comandos/swl/mapear-codebase.md +205 -0
- package/comandos/swl/nuevo-proyecto.md +154 -0
- package/comandos/swl/planear-fase.md +221 -0
- package/comandos/swl/release.md +405 -0
- package/comandos/swl/salud.md +382 -0
- package/comandos/swl/verificar.md +292 -0
- package/habilidades/accesibilidad-a11y/SKILL.md +584 -0
- package/habilidades/angular-avanzado/SKILL.md +491 -0
- package/habilidades/angular-moderno/SKILL.md +326 -0
- package/habilidades/api-rest-diseno/SKILL.md +302 -0
- package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
- package/habilidades/aprendizaje-continuo/SKILL.md +369 -0
- package/habilidades/async-python/SKILL.md +474 -0
- package/habilidades/auth-patrones/SKILL.md +488 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +376 -0
- package/habilidades/autoresearch/SKILL.md +248 -0
- package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
- package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
- package/habilidades/checklist-calidad/SKILL.md +247 -0
- package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
- package/habilidades/checklist-seguridad/SKILL.md +224 -0
- package/habilidades/checkpoints-verificacion/SKILL.md +309 -0
- package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
- package/habilidades/ci-cd-pipelines/SKILL.md +583 -0
- package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
- package/habilidades/cloud-aws/SKILL.md +497 -0
- package/habilidades/compactacion-contexto/SKILL.md +201 -0
- package/habilidades/contenedores-docker/SKILL.md +453 -0
- package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
- package/habilidades/css-moderno/SKILL.md +463 -0
- package/habilidades/datos-etl/SKILL.md +486 -0
- package/habilidades/dependencias-auditoria/SKILL.md +293 -0
- package/habilidades/deprecacion-migracion/SKILL.md +485 -0
- package/habilidades/design-tokens/SKILL.md +519 -0
- package/habilidades/discutir-fase/SKILL.md +167 -0
- package/habilidades/diseno-responsivo/SKILL.md +326 -0
- package/habilidades/django-experto/SKILL.md +395 -0
- package/habilidades/doc-sync/SKILL.md +259 -0
- package/habilidades/ejecutar-fase/SKILL.md +199 -0
- package/habilidades/estructura-proyecto-claude/SKILL.md +459 -0
- package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +213 -0
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
- package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
- package/habilidades/event-driven/SKILL.md +580 -0
- package/habilidades/extractor-de-aprendizajes/SKILL.md +234 -0
- package/habilidades/fastapi-experto/SKILL.md +368 -0
- package/habilidades/frontend-avanzado/SKILL.md +555 -0
- package/habilidades/git-worktrees-paralelo/SKILL.md +246 -0
- package/habilidades/iam-secretos/SKILL.md +511 -0
- package/habilidades/instalar-sistema/SKILL.md +140 -0
- package/habilidades/kubernetes-orquestacion/SKILL.md +549 -0
- package/habilidades/manejo-errores/SKILL.md +512 -0
- package/habilidades/mapear-codebase/SKILL.md +199 -0
- package/habilidades/microservicios/SKILL.md +473 -0
- package/habilidades/mobile-flutter/SKILL.md +566 -0
- package/habilidades/mobile-react-native/SKILL.md +493 -0
- package/habilidades/monitoring-alertas/SKILL.md +447 -0
- package/habilidades/node-experto/SKILL.md +521 -0
- package/habilidades/notificaciones-multicanal/SKILL.md +448 -0
- package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
- package/habilidades/nuevo-proyecto/SKILL.md +183 -0
- package/habilidades/patrones-python/SKILL.md +381 -0
- package/habilidades/performance-baseline/SKILL.md +243 -0
- package/habilidades/planear-fase/SKILL.md +184 -0
- package/habilidades/postgresql-experto/SKILL.md +379 -0
- package/habilidades/react-experto/SKILL.md +434 -0
- package/habilidades/react-optimizacion/SKILL.md +328 -0
- package/habilidades/release-semver/SKILL.md +226 -0
- package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
- package/habilidades/sql-optimizacion/SKILL.md +314 -0
- package/habilidades/tailwind-experto/SKILL.md +412 -0
- package/habilidades/tdd-workflow/SKILL.md +267 -0
- package/habilidades/testing-python/SKILL.md +350 -0
- package/habilidades/threat-model-lite/SKILL.md +218 -0
- package/habilidades/typescript-avanzado/SKILL.md +454 -0
- package/habilidades/ux-diseno/SKILL.md +488 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +543 -0
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
- package/habilidades/verificar-trabajo/SKILL.md +208 -0
- package/habilidades/wireframes-flujos/SKILL.md +396 -0
- package/habilidades/workflow-claude-code/SKILL.md +359 -0
- package/hooks/calidad-pre-commit.js +578 -0
- package/hooks/escaneo-secretos.js +302 -0
- package/hooks/extraccion-aprendizajes.js +550 -0
- package/hooks/linea-estado.js +249 -0
- package/hooks/monitor-contexto.js +230 -0
- package/hooks/proteccion-rutas.js +249 -0
- package/manifiestos/hooks-config.json +41 -0
- package/manifiestos/modulos.json +318 -0
- package/manifiestos/perfiles.json +189 -0
- package/package.json +45 -0
- package/plantillas/PROJECT.md +122 -0
- package/plantillas/REQUIREMENTS.md +132 -0
- package/plantillas/ROADMAP.md +143 -0
- package/plantillas/STATE.md +109 -0
- package/plantillas/research/ARCHITECTURE.md +220 -0
- package/plantillas/research/FEATURES.md +175 -0
- package/plantillas/research/PITFALLS.md +299 -0
- package/plantillas/research/STACK.md +233 -0
- package/plantillas/research/SUMMARY.md +165 -0
- package/plugin.json +144 -0
- package/reglas/accesibilidad.md +269 -0
- package/reglas/api-diseno.md +400 -0
- package/reglas/arquitectura.md +183 -0
- package/reglas/cloud-infra.md +247 -0
- package/reglas/docs.md +245 -0
- package/reglas/estilo-codigo.md +179 -0
- package/reglas/git-workflow.md +186 -0
- package/reglas/performance.md +195 -0
- package/reglas/pruebas.md +159 -0
- package/reglas/seguridad.md +151 -0
- package/reglas/skills-estandar.md +473 -0
- package/scripts/actualizar.js +51 -0
- package/scripts/desinstalar.js +86 -0
- package/scripts/doctor.js +222 -0
- package/scripts/inicializar.js +89 -0
- package/scripts/instalador.js +333 -0
- package/scripts/lib/detectar-runtime.js +177 -0
- package/scripts/lib/estado.js +112 -0
- package/scripts/lib/hooks-settings.js +283 -0
- package/scripts/lib/manifiestos.js +138 -0
- package/scripts/lib/seguridad.js +160 -0
- package/scripts/publicar.js +209 -0
- 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.
|