@saulwade/swl-ses 2.4.2 → 2.5.1
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 +194 -241
- package/README.md +600 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/abogado-diablo-swl.md +145 -0
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +908 -908
- package/agentes/backend-api-swl.md +1 -1
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-node-swl.md +1 -1
- package/agentes/backend-python-swl.md +1 -1
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/datos-swl.md +1 -1
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/gh-fix-ci-swl.md +6 -1
- package/agentes/implementador-swl.md +1 -1
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/llm-apps-swl.md +1 -1
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/notificador-swl.md +1 -1
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/resolutor-build-swl.md +10 -1
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-codigo-swl.md +1 -1
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/sre-swl.md +1 -1
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/lib/bot-comandos.js +1 -1
- package/bin/swl-ses.js +6 -0
- package/comandos/swl/adoptar-proyecto.md +14 -2
- package/comandos/swl/configurar-ci.md +8 -1
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +22 -118
- package/comandos/swl/fix.md +118 -0
- package/comandos/swl/nuevo-proyecto.md +54 -3
- package/comandos/swl/predecir.md +32 -2
- package/comandos/swl/seguridad.md +189 -0
- package/comandos/swl/status.md +5 -3
- package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
- package/habilidades/discutir-fase/SKILL.md +84 -81
- package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
- package/habilidades/doc-sync/SKILL.md +3 -1
- package/habilidades/doubt-driven-review/SKILL.md +15 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
- package/habilidades/harness-claude-code/SKILL.md +3 -1
- package/habilidades/instalar-sistema/SKILL.md +3 -1
- package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
- package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
- package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
- package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
- package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
- package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
- package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
- package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
- package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
- package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
- package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
- package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
- package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
- package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
- package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
- package/habilidades/meta-skills-estandar/SKILL.md +3 -1
- package/habilidades/nuevo-proyecto/SKILL.md +20 -3
- package/habilidades/php-experto/SKILL.md +10 -3
- package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
- package/hooks/check-update.js +19 -10
- package/hooks/contexto-subagente.js +68 -68
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/extraccion-aprendizajes.js +2 -2
- package/hooks/lib/briefing.js +3 -3
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/webhook-dedup.js +1 -1
- package/hooks/session-briefing.js +1 -1
- package/llms.txt +6 -6
- package/manifiestos/canonical-hashes.json +989 -0
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +168 -135
- package/manifiestos/perfiles.json +0 -2
- package/manifiestos/skills-lock.json +52 -59
- package/package.json +7 -5
- package/plantillas/github-workflows/README.md +15 -1
- package/plantillas/github-workflows/swl-devsecops.yml +70 -0
- package/plugin.json +5 -5
- package/reglas/analisis-previo-tareas-grandes.md +30 -156
- package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
- package/reglas/api-diseno.md +28 -398
- package/reglas/arquitectura.md +35 -456
- package/reglas/arreglar-al-detectar.md +30 -230
- package/reglas/debatir-antes-de-aceptar.md +30 -143
- package/reglas/docs.md +7 -0
- package/reglas/estilo-codigo.md +9 -0
- package/reglas/fragmentos-compartidos.md +6 -0
- package/reglas/git-workflow.md +44 -240
- package/reglas/gobernanza.md +23 -262
- package/reglas/memoria-consolidada.md +34 -228
- package/reglas/performance.md +8 -0
- package/reglas/pruebas.md +12 -0
- package/reglas/seguridad-agentes.md +37 -418
- package/reglas/seguridad.md +12 -0
- package/reglas/sesiones-paralelas.md +29 -162
- package/reglas/sin-duplicacion-reglas-globales.md +25 -166
- package/reglas/skills-estandar.md +23 -373
- package/reglas/usar-code-review-graph.md +31 -140
- package/reglas/usar-context7.md +30 -208
- package/reglas/usar-sistema-swl.md +47 -242
- package/reglas/verificar-citas-normativas.md +47 -537
- package/scripts/actualizar.js +253 -253
- package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
- package/scripts/auditar-clases-conocidas.js +106 -0
- package/scripts/bootstrap-instintos.js +2 -2
- package/scripts/canario-hooks.js +166 -0
- package/scripts/cli/configurar-ci.js +2 -1
- package/scripts/evidencia-valor.js +93 -0
- package/scripts/field-report.js +1 -1
- package/scripts/generar-comandos.js +143 -0
- package/scripts/generar-inventario.js +236 -23
- package/scripts/generar-matriz-lenguajes.js +1 -1
- package/scripts/instalador.js +15 -1
- package/scripts/lib/configurar-ci.js +10 -3
- package/scripts/lib/detectar-runtime.js +12 -3
- package/scripts/lib/diary-entry.js +3 -1
- package/scripts/lib/drift-detector.js +1 -1
- package/scripts/lib/evidencia-valor.js +189 -0
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/frontmatter-md.js +63 -0
- package/scripts/lib/parsear-opciones.js +2 -0
- package/scripts/lib/prune-componentes.js +180 -0
- package/scripts/lib/reglas-globales-conocidas.json +16 -2
- package/scripts/lib/scoring-instintos.js +2 -2
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/transformadores/claude.js +1 -1
- package/scripts/lib/transformadores/codex.js +1 -1
- package/scripts/lib/transformadores/copilot.js +1 -1
- package/scripts/lib/transformadores/cursor.js +1 -1
- package/scripts/lib/transformadores/gemini.js +22 -2
- package/scripts/lib/transformadores/opencode.js +1 -1
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/prune.js +102 -0
- package/scripts/publicar.js +18 -2
- package/scripts/tui/pantallas/inspect.js +175 -175
- package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
- package/scripts/tui/pantallas/update-wizard.js +234 -234
- package/scripts/tui/pantallas/welcome.js +189 -189
- package/habilidades/paid-media-tracking/SKILL.md +0 -269
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
- package/habilidades/tracking-measurement/SKILL.md +0 -239
- package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
- 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.
|