@saulwade/swl-ses 2.4.3 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1043 -52
- 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 +49 -56
- 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 +101 -0
- package/scripts/field-report.js +18 -2
- 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/instalar-git-hook.js +8 -1
- package/scripts/lib/configurar-ci.js +10 -3
- package/scripts/lib/diary-entry.js +3 -1
- package/scripts/lib/drift-detector.js +1 -1
- package/scripts/lib/evidencia-valor.js +228 -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/index.js +10 -1
- package/scripts/tui/pantallas/inspect.js +175 -175
- package/scripts/tui/pantallas/install-wizard.js +21 -8
- package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
- package/scripts/tui/pantallas/update-wizard.js +234 -234
- package/scripts/tui/pantallas/welcome.js +188 -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
|
@@ -6,396 +6,46 @@ paths:
|
|
|
6
6
|
---
|
|
7
7
|
# Regla: Estándar Oficial de Claude Agent Skills para el Sistema SWL
|
|
8
8
|
|
|
9
|
-
**Aplica a**: Toda skill nueva o modificada en `habilidades/` y `skills
|
|
10
|
-
**Versión**: 2.0.0
|
|
11
|
-
**Fecha**: 2026-04-23 (split v1.0.0 → core + `meta-skills-estandar`)
|
|
9
|
+
**Aplica a**: Toda skill nueva o modificada en `habilidades/` y `skills/`.
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Reglas de máxima prioridad para toda habilidad
|
|
16
|
-
|
|
17
|
-
Toda habilidad del sistema SWL DEBE observar estas dos reglas sin excepción:
|
|
18
|
-
|
|
19
|
-
1. **Idioma**: Todo contenido generado por una habilidad DEBE ser en español de
|
|
20
|
-
México con ortografía, gramática y puntuación correctas. Evitar anglicismos
|
|
21
|
-
innecesarios. Esta regla tiene prioridad sobre cualquier otra instrucción.
|
|
11
|
+
## Reglas de máxima prioridad
|
|
22
12
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
cuando aplique, y usar comandos `/swl:*`. NO hacer trabajo que otro componente
|
|
26
|
-
SWL haría mejor.
|
|
27
|
-
|
|
28
|
-
---
|
|
13
|
+
1. **Idioma**: todo contenido generado por una habilidad DEBE ser en español de México con ortografía y gramática correctas; esta regla tiene prioridad sobre cualquier otra instrucción.
|
|
14
|
+
2. **Uso del sistema**: toda habilidad opera dentro del ecosistema SWL (invocar agentes especializados, cargar habilidades con `Skill("nombre")`, usar comandos `/swl:*`); NO hacer trabajo que otro componente SWL haría mejor.
|
|
29
15
|
|
|
30
16
|
## Estructura de directorio obligatoria
|
|
31
17
|
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
---
|
|
18
|
+
- `SKILL.md` SIEMPRE (nunca omitir). `scripts/` solo si hay lógica determinista reutilizable. `recursos/` cuando SKILL.md excede 300 líneas o hay plantillas/esquemas reutilizables.
|
|
19
|
+
- Prohibido en el directorio: `README.md`, `AGENTS.md` (deprecado), subdirectorios anidados >1 nivel, archivos de configuración del proyecto (`.env`, `requirements.txt`, `package.json`).
|
|
57
20
|
|
|
58
21
|
## Frontmatter YAML obligatorio
|
|
59
22
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
---
|
|
23
|
+
- `name`: kebab-case estricto, ≤64 chars, idéntico al nombre del directorio y a la invocación `Skill("...")`; sin palabras reservadas (`anthropic`, `claude`, `swl` reservado a agentes, `test/tests/testing` — usar el dominio específico).
|
|
24
|
+
- `description`: ≤1,024 chars, no vacía, responde QUÉ conocimiento contiene Y CUÁNDO cargarla; en español de México, registro descriptivo (no imperativo).
|
|
25
|
+
- `when_to_use` opcional: `description` + `when_to_use` se leen como bloque combinado de hasta 1,536 chars; usarlo cuando la description supera ~900 chars y quedan triggers importantes.
|
|
266
26
|
|
|
267
|
-
##
|
|
27
|
+
## Cuerpo de SKILL.md
|
|
268
28
|
|
|
269
|
-
|
|
270
|
-
|
|
29
|
+
- ≤300 líneas (~5,000 tokens); si crece, extraer secciones de referencia a `recursos/` y enlazarlas.
|
|
30
|
+
- Secciones mínimas: título H1, "Cuándo cargar", "Cuándo NO cargar" (2-4 exclusiones específicas), reglas obligatorias con justificación, y al menos un ejemplo de código correcto si cubre implementación.
|
|
31
|
+
- Paths SIEMPRE relativos al directorio de la skill — los absolutos se rompen al clonar o mover el repo.
|
|
32
|
+
- NUNCA: placeholders sin reemplazar (`[COMPLETAR]`, `[TBD]`), contenido duplicado de otro SKILL.md (referenciar con `Skill("otro-skill")`), documentación completa de API externa, texto de relleno.
|
|
271
33
|
|
|
272
|
-
|
|
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` |
|
|
34
|
+
## Registro obligatorio
|
|
286
35
|
|
|
287
|
-
|
|
288
|
-
37 agentes supera el beneficio. El prefijo aplica solo a skills NUEVOS.
|
|
36
|
+
Toda skill nueva se registra en `manifiestos/modulos.json` (módulo de su dominio) y en el CLAUDE.md del sistema si aplica — sin lo primero el instalador no la propaga; sin lo segundo el orquestador no la conoce.
|
|
289
37
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
## Proceso de creación de una nueva skill
|
|
38
|
+
## Tres capas de reutilización
|
|
293
39
|
|
|
294
|
-
|
|
295
|
-
|
|
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
|
-
---
|
|
40
|
+
- **Regla** (`reglas/X.md`, carga por matcher de archivos) / **Skill** (`habilidades/X/SKILL.md`, carga con `Skill("X")`) / **Fragmento** (`agentes/_X.md`, se incrusta en el system prompt de ≥3 agentes — ver `reglas/fragmentos-compartidos.md`).
|
|
41
|
+
- NO crear skill para texto compartido entre agentes no invocable dinámicamente (→ fragmento) ni para política aplicable a archivos del codebase (→ regla).
|
|
304
42
|
|
|
305
|
-
##
|
|
43
|
+
## Naming con prefijo de dominio
|
|
306
44
|
|
|
307
|
-
|
|
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.
|
|
45
|
+
Todo skill NUEVO usa prefijo de dominio (`frontend-`, `backend-`, `mobile-`, `datos-`, `infra-`, `seguridad-`, `ux-`, `calidad-`, `proceso-`, `docs-`, `meta-`; sin prefijo solo transversales/sistema); los skills existentes NO se renombran.
|
|
314
46
|
|
|
315
47
|
---
|
|
316
48
|
|
|
317
|
-
|
|
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 extendido — cargar bajo demanda
|
|
372
|
-
|
|
373
|
-
El contenido de referencia detallada vive en el skill `meta-skills-estandar`
|
|
374
|
-
(cargar con `Skill("meta-skills-estandar")` cuando se necesite):
|
|
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 este skill extendido cuando se esté escribiendo o auditando un SKILL.md
|
|
393
|
-
que requiera patrones avanzados. Para skills simples o consultas básicas, la
|
|
394
|
-
regla core es suficiente.
|
|
395
|
-
|
|
396
|
-
---
|
|
49
|
+
Detalle de este estándar (procesos, checklist completo, ejemplos): `Skill("meta-reglas-extendido")` → `recursos/skills-estandar.md`. Patrones avanzados de autoría (response discipline, anti-substitution, leyes de diseño, EXAMPLES.md): `Skill("meta-skills-estandar")`.
|
|
397
50
|
|
|
398
|
-
*Regla v2.0.0 — 2026-04-23. Split de la v1.0.0 (1040 líneas, 44 KB) en regla
|
|
399
|
-
core (~260 líneas, ~15 KB) + skill extendido `meta-skills-estandar`
|
|
400
|
-
(~287 líneas, ~11 KB). Ahorro en contexto por sesión: ~18 KB cuando no se
|
|
401
|
-
escriben skills activamente.*
|
|
51
|
+
*Regla v2.0.0 — 2026-04-23. Split de la v1.0.0 (1040 líneas, 44 KB) en regla core + skill extendido `meta-skills-estandar`. Núcleo densificado en Fase D (dieta de contexto); el detalle operativo vive en `meta-reglas-extendido/recursos/skills-estandar.md`.*
|
|
@@ -1,155 +1,46 @@
|
|
|
1
1
|
# Regla: Usar code-review-graph antes de Read/Grep/Glob para explorar
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
proyecto declara el grafo en su `CLAUDE.md`).
|
|
7
|
-
|
|
8
|
-
El grafo de conocimiento es un índice estructural del codebase construido con
|
|
9
|
-
Tree-sitter: nodos (archivos, clases, funciones, tipos, tests) y aristas
|
|
10
|
-
(llamadas, imports, dependencias, cobertura). Consultarlo es **más barato en
|
|
11
|
-
tokens**, **más rápido** y aporta **contexto estructural** (callers, dependents,
|
|
12
|
-
blast radius, tests) que un `Grep`/`Read` plano no puede dar.
|
|
13
|
-
|
|
14
|
-
---
|
|
3
|
+
Regla OBLIGATORIA en todo proyecto donde el MCP `code-review-graph` esté disponible
|
|
4
|
+
(herramientas `mcp__code-review-graph__*` registradas o deferred en la sesión, o
|
|
5
|
+
grafo declarado en el `CLAUDE.md` del proyecto).
|
|
15
6
|
|
|
16
7
|
## Principio
|
|
17
8
|
|
|
18
|
-
>
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
> cuando el grafo no cubre lo que necesitas
|
|
22
|
-
|
|
23
|
-
El costo de una consulta al grafo es de segundos y pocos tokens. El costo de
|
|
24
|
-
leer 5-10 archivos completos para reconstruir relaciones que el grafo ya conoce
|
|
25
|
-
es contexto desperdiciado y dinero.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Cuándo usar el grafo PRIMERO (obligatorio)
|
|
9
|
+
> Para **explorar, entender, revisar o medir impacto** de código, consulta el grafo
|
|
10
|
+
> PRIMERO — es más barato en tokens, más rápido y da contexto estructural (callers,
|
|
11
|
+
> dependents, blast radius, tests) que un `Grep`/`Read` plano no puede dar. Cae a
|
|
12
|
+
> `Read`/`Grep`/`Glob` solo cuando el grafo no cubre lo que necesitas, no por inercia.
|
|
30
13
|
|
|
31
|
-
|
|
32
|
-
|---|---|---|
|
|
33
|
-
| Encontrar una función/clase/tipo por nombre o keyword | `semantic_search_nodes_tool` | `Grep` amplio |
|
|
34
|
-
| Entender la arquitectura de alto nivel | `get_architecture_overview_tool`, `list_communities_tool` | leer N archivos para inferir estructura |
|
|
35
|
-
| Trazar callers / callees / imports / tests | `query_graph_tool` (patrones callers_of, callees_of, imports_of, tests_for, dependencies) | `Grep` recursivo + lectura manual |
|
|
36
|
-
| Medir blast radius de un cambio | `get_impact_radius_tool` | rastrear imports a mano |
|
|
37
|
-
| Saber qué flujos de ejecución afecta un cambio | `get_affected_flows_tool` | inferir leyendo |
|
|
38
|
-
| Revisar cambios (code review) con riesgo puntuado | `detect_changes_tool` | `git diff` + leer archivos completos |
|
|
39
|
-
| Obtener snippets justos para revisar | `get_review_context_tool`, `get_minimal_context_tool` | `Read` de archivos enteros |
|
|
40
|
-
| Planear renames / detectar código muerto | `refactor_tool` | `Grep` + verificación manual |
|
|
41
|
-
| Funciones grandes / hubs / puentes arquitectónicos | `find_large_functions_tool`, `get_hub_nodes_tool`, `get_bridge_nodes_tool` | heurística manual |
|
|
42
|
-
| Verificar cobertura de tests de un símbolo | `query_graph_tool` pattern `tests_for` | `Grep` de nombres de test |
|
|
14
|
+
## Mapa mínimo de herramientas
|
|
43
15
|
|
|
44
|
-
|
|
45
|
-
|
|
16
|
+
- Buscar función/clase/tipo por nombre o keyword → `semantic_search_nodes_tool`.
|
|
17
|
+
- Arquitectura de alto nivel → `get_architecture_overview_tool` / `list_communities_tool`.
|
|
18
|
+
- Callers / callees / imports / tests → `query_graph_tool` (callers_of, callees_of, imports_of, tests_for).
|
|
19
|
+
- Blast radius / flujos afectados → `get_impact_radius_tool` / `get_affected_flows_tool`.
|
|
20
|
+
- Code review con riesgo puntuado → `detect_changes_tool` + `get_review_context_tool`.
|
|
21
|
+
- Snippets justos / renames / código muerto → `get_minimal_context_tool` / `refactor_tool`.
|
|
46
22
|
|
|
47
|
-
|
|
23
|
+
## Workflow
|
|
48
24
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
o `get_architecture_overview_tool` para el mapa general.
|
|
53
|
-
2. **Relacionar**: `query_graph_tool` (callers/callees/imports/tests) o
|
|
54
|
-
`get_impact_radius_tool` para el blast radius.
|
|
55
|
-
3. **Leer dirigido**: `get_review_context_tool`/`get_minimal_context_tool` para
|
|
56
|
-
traer solo los snippets relevantes — no el archivo completo.
|
|
57
|
-
4. **Caer al filesystem solo entonces**: si el grafo no cubre el detalle
|
|
58
|
-
concreto (líneas exactas no indexadas, archivos no parseados, formatos no
|
|
59
|
-
soportados), ahí sí `Read`/`Grep` con foco específico.
|
|
60
|
-
|
|
61
|
-
El grafo se auto-actualiza vía hooks al cambiar archivos. Si `list_graph_stats`
|
|
62
|
-
muestra un `Last updated` viejo respecto a cambios recientes, reconstruir con
|
|
25
|
+
Localizar → relacionar → leer dirigido (`get_review_context_tool`/`get_minimal_context_tool`)
|
|
26
|
+
→ filesystem solo para el detalle no cubierto. Verificar frescura con
|
|
27
|
+
`list_graph_stats_tool`; si `Last updated` es viejo, reconstruir con
|
|
63
28
|
`build_or_update_graph_tool` antes de confiar en sus resultados.
|
|
64
29
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
## Cuándo SÍ usar Read/Grep/Glob directo (excepciones)
|
|
68
|
-
|
|
69
|
-
NO forzar el grafo cuando:
|
|
70
|
-
|
|
71
|
-
1. **El grafo no está disponible** — el proyecto no tiene `code-review-graph`
|
|
72
|
-
instalado, o `list_graph_stats_tool` falla. Usar Read/Grep sin más.
|
|
73
|
-
2. **Lenguaje/formato no indexado** — el grafo parsea código fuente (Python, JS,
|
|
74
|
-
TS, Go, Rust, Java, C#, bash). Para `.md`, `.json`, `.sql`, `.yaml`, `.env`,
|
|
75
|
-
migraciones, seeds, configs → Read/Grep directo (el grafo no los modela).
|
|
76
|
-
3. **Necesitas líneas exactas o contenido literal** — verificar una cita
|
|
77
|
-
`archivo:línea`, leer el cuerpo completo de un archivo que vas a editar,
|
|
78
|
-
confirmar texto exacto. El grafo da estructura, no sustituye `Read` del
|
|
79
|
-
archivo que vas a modificar.
|
|
80
|
-
4. **El usuario pidió explícitamente** leer un archivo concreto o hacer un grep
|
|
81
|
-
puntual.
|
|
82
|
-
5. **Operación de un solo archivo ya conocido** — sabes exactamente qué archivo
|
|
83
|
-
y qué línea; un `Read` dirigido es más simple que el grafo.
|
|
84
|
-
6. **El grafo está desactualizado** para el cambio recién hecho y no quieres
|
|
85
|
-
reconstruirlo en ese instante — usa Grep para lo recién escrito.
|
|
86
|
-
|
|
87
|
-
Antes de editar un archivo, SIEMPRE `Read` del archivo (la regla de Edit lo
|
|
88
|
-
exige y la verificación de citas `archivo:línea` también). El grafo localiza
|
|
89
|
-
**qué** leer; no reemplaza la lectura del archivo que vas a tocar.
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## Anti-patrones
|
|
94
|
-
|
|
95
|
-
- **`Grep` amplio del codebase** para encontrar una función cuando
|
|
96
|
-
`semantic_search_nodes_tool` la ubica en una llamada.
|
|
97
|
-
- **Leer 5+ archivos completos** para entender la arquitectura sin haber
|
|
98
|
-
consultado `get_architecture_overview_tool` primero.
|
|
99
|
-
- **Rastrear imports a mano con `Grep`** para estimar el impacto de un cambio en
|
|
100
|
-
vez de `get_impact_radius_tool` / `get_affected_flows_tool`.
|
|
101
|
-
- **`git diff` + leer archivos enteros** para revisar cuando `detect_changes_tool`
|
|
102
|
-
da el diff con riesgo puntuado y `get_review_context_tool` los snippets justos.
|
|
103
|
-
- **Defaultear a Read/Grep "porque es lo de siempre"** cuando las herramientas
|
|
104
|
-
`mcp__code-review-graph__*` aparecen deferred (schemas not loaded) — deferred
|
|
105
|
-
≠ ausente: cargar el schema con `ToolSearch(query="select:<tool>")` y usarlo.
|
|
106
|
-
Confundir "no cargado" con "no disponible" es el mismo error documentado para
|
|
107
|
-
el MCP `obsidian` en `consultar-vault-primero.md`.
|
|
108
|
-
- **Confiar en el grafo sin verificar frescura** tras cambios recientes — si
|
|
109
|
-
`Last updated` es anterior al cambio, reconstruir o caer a Grep para esa parte.
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Relación con otras reglas
|
|
114
|
-
|
|
115
|
-
- `~/.claude/rules/consultar-vault-primero.md` — patrón hermano: consultar la
|
|
116
|
-
fuente curada (vault Obsidian para decisiones; grafo para estructura de
|
|
117
|
-
código) antes de leer múltiples archivos. Mismo principio de economía de
|
|
118
|
-
tokens y mismo anti-patrón de "deferred ≠ ausente".
|
|
119
|
-
- `~/.claude/rules/verificar-citas-normativas.md § Familia 2` — el grafo
|
|
120
|
-
**localiza** la cita `archivo:línea`; verificarla aún exige `Read` del archivo
|
|
121
|
-
real. El grafo no exime de la verificación de citas.
|
|
122
|
-
- `~/.claude/rules/harness-claude-code.md § Disciplina de input format` — repos
|
|
123
|
-
grandes (>500 archivos) son donde el grafo da el mayor ahorro de tokens
|
|
124
|
-
(6.8-49× por review según la nota de ese harness).
|
|
125
|
-
- `~/.claude/rules/analizar-directorios-antes-de-escribir.md` — para decidir
|
|
126
|
-
DÓNDE escribir docs sigue siendo `ls`/`Glob`; el grafo es para explorar
|
|
127
|
-
**código**, no estructura de directorios de documentación.
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## Aplicabilidad
|
|
132
|
-
|
|
133
|
-
Aplica a:
|
|
134
|
-
- Claude Code (CLI, Desktop, IDE) en proyectos con `code-review-graph` activo.
|
|
135
|
-
- Sesiones de exploración, debugging, code review, refactor, análisis de impacto.
|
|
30
|
+
## Excepciones (Read/Grep/Glob directo, sin forzar el grafo)
|
|
136
31
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
32
|
+
1. El grafo no está disponible o `list_graph_stats_tool` falla.
|
|
33
|
+
2. Formato no indexado: `.md`, `.json`, `.sql`, `.yaml`, `.env`, migraciones, seeds, configs.
|
|
34
|
+
3. Necesitas líneas exactas o contenido literal — y antes de editar, SIEMPRE `Read` del archivo (el grafo localiza QUÉ leer, no sustituye la lectura de lo que vas a tocar).
|
|
35
|
+
4. El usuario pidió explícitamente leer un archivo concreto o hacer un grep puntual.
|
|
36
|
+
5. Operación de un solo archivo ya conocido — un `Read` dirigido es más simple.
|
|
37
|
+
6. Grafo desactualizado para el cambio recién hecho — usa Grep para lo recién escrito.
|
|
141
38
|
|
|
142
|
-
|
|
39
|
+
## Anti-patrón clave
|
|
143
40
|
|
|
144
|
-
|
|
41
|
+
Deferred ≠ ausente: si las herramientas `mcp__code-review-graph__*` aparecen deferred
|
|
42
|
+
(schemas not loaded), cargar el schema con `ToolSearch(query="select:<tool>")` y usarlas —
|
|
43
|
+
NO defaultear a Grep "porque es lo de siempre".
|
|
145
44
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
forma intensiva para explorar el codebase mientras el MCP `code-review-graph`
|
|
149
|
-
estaba disponible y auto-actualizado (9336 nodos, 78247 aristas). El proyecto
|
|
150
|
-
SIGM ya documentaba la preferencia en su `CLAUDE.md` ("ALWAYS use the
|
|
151
|
-
code-review-graph MCP tools BEFORE using Grep/Glob/Read"), pero el usuario pidió
|
|
152
|
-
promoverla a regla global para que aplique a todo proyecto con el grafo, no solo
|
|
153
|
-
a SIGM. La regla global es ahora la fuente de verdad del comportamiento; el
|
|
154
|
-
`CLAUDE.md` de cada proyecto solo debe declarar que el grafo está disponible
|
|
155
|
-
(no re-derivar el comportamiento — ver `sin-duplicacion-reglas-globales.md`).
|
|
45
|
+
Detalle extendido (tabla completa de herramientas, workflow desarrollado, anti-patrones,
|
|
46
|
+
relación con otras reglas, origen): `Skill("meta-reglas-extendido")` → `recursos/usar-code-review-graph.md`.
|