@saulwade/swl-ses 2.4.3 → 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 +713 -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 +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/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,156 @@
|
|
|
1
|
+
# Usar code-review-graph antes de Read/Grep/Glob — extendido
|
|
2
|
+
|
|
3
|
+
> Extendido de `reglas/usar-code-review-graph.md` (Fase D, dieta de contexto).
|
|
4
|
+
> El núcleo instalado es la norma; aquí viven la tabla completa de herramientas,
|
|
5
|
+
> el workflow desarrollado, las excepciones y anti-patrones completos, la
|
|
6
|
+
> relación con otras reglas y el origen.
|
|
7
|
+
|
|
8
|
+
## Índice
|
|
9
|
+
|
|
10
|
+
- [Cuándo usar el grafo PRIMERO (obligatorio)](#cuándo-usar-el-grafo-primero-obligatorio)
|
|
11
|
+
- [Workflow estándar](#workflow-estándar)
|
|
12
|
+
- [Cuándo SÍ usar Read/Grep/Glob directo (excepciones)](#cuándo-sí-usar-readgrepglob-directo-excepciones)
|
|
13
|
+
- [Anti-patrones](#anti-patrones)
|
|
14
|
+
- [Relación con otras reglas](#relación-con-otras-reglas)
|
|
15
|
+
- [Aplicabilidad](#aplicabilidad)
|
|
16
|
+
- [Origen](#origen)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Cuándo usar el grafo PRIMERO (obligatorio)
|
|
21
|
+
|
|
22
|
+
El grafo de conocimiento es un índice estructural del codebase construido con
|
|
23
|
+
Tree-sitter: nodos (archivos, clases, funciones, tipos, tests) y aristas
|
|
24
|
+
(llamadas, imports, dependencias, cobertura). Consultarlo es **más barato en
|
|
25
|
+
tokens**, **más rápido** y aporta **contexto estructural** (callers, dependents,
|
|
26
|
+
blast radius, tests) que un `Grep`/`Read` plano no puede dar.
|
|
27
|
+
|
|
28
|
+
El costo de una consulta al grafo es de segundos y pocos tokens. El costo de
|
|
29
|
+
leer 5-10 archivos completos para reconstruir relaciones que el grafo ya conoce
|
|
30
|
+
es contexto desperdiciado y dinero.
|
|
31
|
+
|
|
32
|
+
| Necesidad | Herramienta del grafo | En vez de |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| Encontrar una función/clase/tipo por nombre o keyword | `semantic_search_nodes_tool` | `Grep` amplio |
|
|
35
|
+
| Entender la arquitectura de alto nivel | `get_architecture_overview_tool`, `list_communities_tool` | leer N archivos para inferir estructura |
|
|
36
|
+
| Trazar callers / callees / imports / tests | `query_graph_tool` (patrones callers_of, callees_of, imports_of, tests_for, dependencies) | `Grep` recursivo + lectura manual |
|
|
37
|
+
| Medir blast radius de un cambio | `get_impact_radius_tool` | rastrear imports a mano |
|
|
38
|
+
| Saber qué flujos de ejecución afecta un cambio | `get_affected_flows_tool` | inferir leyendo |
|
|
39
|
+
| Revisar cambios (code review) con riesgo puntuado | `detect_changes_tool` | `git diff` + leer archivos completos |
|
|
40
|
+
| Obtener snippets justos para revisar | `get_review_context_tool`, `get_minimal_context_tool` | `Read` de archivos enteros |
|
|
41
|
+
| Planear renames / detectar código muerto | `refactor_tool` | `Grep` + verificación manual |
|
|
42
|
+
| Funciones grandes / hubs / puentes arquitectónicos | `find_large_functions_tool`, `get_hub_nodes_tool`, `get_bridge_nodes_tool` | heurística manual |
|
|
43
|
+
| Verificar cobertura de tests de un símbolo | `query_graph_tool` pattern `tests_for` | `Grep` de nombres de test |
|
|
44
|
+
|
|
45
|
+
Antes de una sesión de exploración/revisión, vale `list_graph_stats_tool` para
|
|
46
|
+
confirmar que el grafo está construido y fresco (`Last updated`).
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Workflow estándar
|
|
51
|
+
|
|
52
|
+
1. **Localizar**: `semantic_search_nodes_tool` con el nombre/keyword del símbolo
|
|
53
|
+
o `get_architecture_overview_tool` para el mapa general.
|
|
54
|
+
2. **Relacionar**: `query_graph_tool` (callers/callees/imports/tests) o
|
|
55
|
+
`get_impact_radius_tool` para el blast radius.
|
|
56
|
+
3. **Leer dirigido**: `get_review_context_tool`/`get_minimal_context_tool` para
|
|
57
|
+
traer solo los snippets relevantes — no el archivo completo.
|
|
58
|
+
4. **Caer al filesystem solo entonces**: si el grafo no cubre el detalle
|
|
59
|
+
concreto (líneas exactas no indexadas, archivos no parseados, formatos no
|
|
60
|
+
soportados), ahí sí `Read`/`Grep` con foco específico.
|
|
61
|
+
|
|
62
|
+
El grafo se auto-actualiza vía hooks al cambiar archivos. Si `list_graph_stats`
|
|
63
|
+
muestra un `Last updated` viejo respecto a cambios recientes, reconstruir con
|
|
64
|
+
`build_or_update_graph_tool` antes de confiar en sus resultados.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Cuándo SÍ usar Read/Grep/Glob directo (excepciones)
|
|
69
|
+
|
|
70
|
+
NO forzar el grafo cuando:
|
|
71
|
+
|
|
72
|
+
1. **El grafo no está disponible** — el proyecto no tiene `code-review-graph`
|
|
73
|
+
instalado, o `list_graph_stats_tool` falla. Usar Read/Grep sin más.
|
|
74
|
+
2. **Lenguaje/formato no indexado** — el grafo parsea código fuente (Python, JS,
|
|
75
|
+
TS, Go, Rust, Java, C#, bash). Para `.md`, `.json`, `.sql`, `.yaml`, `.env`,
|
|
76
|
+
migraciones, seeds, configs → Read/Grep directo (el grafo no los modela).
|
|
77
|
+
3. **Necesitas líneas exactas o contenido literal** — verificar una cita
|
|
78
|
+
`archivo:línea`, leer el cuerpo completo de un archivo que vas a editar,
|
|
79
|
+
confirmar texto exacto. El grafo da estructura, no sustituye `Read` del
|
|
80
|
+
archivo que vas a modificar.
|
|
81
|
+
4. **El usuario pidió explícitamente** leer un archivo concreto o hacer un grep
|
|
82
|
+
puntual.
|
|
83
|
+
5. **Operación de un solo archivo ya conocido** — sabes exactamente qué archivo
|
|
84
|
+
y qué línea; un `Read` dirigido es más simple que el grafo.
|
|
85
|
+
6. **El grafo está desactualizado** para el cambio recién hecho y no quieres
|
|
86
|
+
reconstruirlo en ese instante — usa Grep para lo recién escrito.
|
|
87
|
+
|
|
88
|
+
Antes de editar un archivo, SIEMPRE `Read` del archivo (la regla de Edit lo
|
|
89
|
+
exige y la verificación de citas `archivo:línea` también). El grafo localiza
|
|
90
|
+
**qué** leer; no reemplaza la lectura del archivo que vas a tocar.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Anti-patrones
|
|
95
|
+
|
|
96
|
+
- **`Grep` amplio del codebase** para encontrar una función cuando
|
|
97
|
+
`semantic_search_nodes_tool` la ubica en una llamada.
|
|
98
|
+
- **Leer 5+ archivos completos** para entender la arquitectura sin haber
|
|
99
|
+
consultado `get_architecture_overview_tool` primero.
|
|
100
|
+
- **Rastrear imports a mano con `Grep`** para estimar el impacto de un cambio en
|
|
101
|
+
vez de `get_impact_radius_tool` / `get_affected_flows_tool`.
|
|
102
|
+
- **`git diff` + leer archivos enteros** para revisar cuando `detect_changes_tool`
|
|
103
|
+
da el diff con riesgo puntuado y `get_review_context_tool` los snippets justos.
|
|
104
|
+
- **Defaultear a Read/Grep "porque es lo de siempre"** cuando las herramientas
|
|
105
|
+
`mcp__code-review-graph__*` aparecen deferred (schemas not loaded) — deferred
|
|
106
|
+
≠ ausente: cargar el schema con `ToolSearch(query="select:<tool>")` y usarlo.
|
|
107
|
+
Confundir "no cargado" con "no disponible" es el mismo error documentado para
|
|
108
|
+
el MCP `obsidian` en `consultar-vault-primero.md`.
|
|
109
|
+
- **Confiar en el grafo sin verificar frescura** tras cambios recientes — si
|
|
110
|
+
`Last updated` es anterior al cambio, reconstruir o caer a Grep para esa parte.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Relación con otras reglas
|
|
115
|
+
|
|
116
|
+
- `~/.claude/rules/consultar-vault-primero.md` — patrón hermano: consultar la
|
|
117
|
+
fuente curada (vault Obsidian para decisiones; grafo para estructura de
|
|
118
|
+
código) antes de leer múltiples archivos. Mismo principio de economía de
|
|
119
|
+
tokens y mismo anti-patrón de "deferred ≠ ausente".
|
|
120
|
+
- `~/.claude/rules/verificar-citas-normativas.md § Familia 2` — el grafo
|
|
121
|
+
**localiza** la cita `archivo:línea`; verificarla aún exige `Read` del archivo
|
|
122
|
+
real. El grafo no exime de la verificación de citas.
|
|
123
|
+
- `~/.claude/rules/harness-claude-code.md § Disciplina de input format` — repos
|
|
124
|
+
grandes (>500 archivos) son donde el grafo da el mayor ahorro de tokens
|
|
125
|
+
(6.8-49× por review según la nota de ese harness).
|
|
126
|
+
- `~/.claude/rules/analizar-directorios-antes-de-escribir.md` — para decidir
|
|
127
|
+
DÓNDE escribir docs sigue siendo `ls`/`Glob`; el grafo es para explorar
|
|
128
|
+
**código**, no estructura de directorios de documentación.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Aplicabilidad
|
|
133
|
+
|
|
134
|
+
Aplica a:
|
|
135
|
+
- Claude Code (CLI, Desktop, IDE) en proyectos con `code-review-graph` activo.
|
|
136
|
+
- Sesiones de exploración, debugging, code review, refactor, análisis de impacto.
|
|
137
|
+
|
|
138
|
+
NO aplica a:
|
|
139
|
+
- Proyectos sin el grafo instalado.
|
|
140
|
+
- Exploración de documentación/configuración no indexada por el grafo.
|
|
141
|
+
- Sub-agentes que operan sobre un único archivo pasado como argumento.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Origen
|
|
146
|
+
|
|
147
|
+
Formalizada el 2026-06-09 a petición explícita del usuario tras observar que en
|
|
148
|
+
una sesión larga (feature B-1 de SIGM) se usó `Grep`/`Read`/`Bash` directo de
|
|
149
|
+
forma intensiva para explorar el codebase mientras el MCP `code-review-graph`
|
|
150
|
+
estaba disponible y auto-actualizado (9336 nodos, 78247 aristas). El proyecto
|
|
151
|
+
SIGM ya documentaba la preferencia en su `CLAUDE.md` ("ALWAYS use the
|
|
152
|
+
code-review-graph MCP tools BEFORE using Grep/Glob/Read"), pero el usuario pidió
|
|
153
|
+
promoverla a regla global para que aplique a todo proyecto con el grafo, no solo
|
|
154
|
+
a SIGM. La regla global es ahora la fuente de verdad del comportamiento; el
|
|
155
|
+
`CLAUDE.md` de cada proyecto solo debe declarar que el grafo está disponible
|
|
156
|
+
(no re-derivar el comportamiento — ver `sin-duplicacion-reglas-globales.md`).
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Consultar Context7 — extendido
|
|
2
|
+
|
|
3
|
+
> Extendido de `reglas/usar-context7.md` (Fase D, dieta de contexto). El núcleo
|
|
4
|
+
> instalado es la norma; aquí viven la motivación completa, el flujo de consulta
|
|
5
|
+
> con ejemplos, la tabla de aplicabilidad por agente y el caso de origen.
|
|
6
|
+
|
|
7
|
+
## Índice
|
|
8
|
+
|
|
9
|
+
- [Por qué existe esta regla](#por-qué-existe-esta-regla)
|
|
10
|
+
- [Cuándo consultar Context7 (OBLIGATORIO)](#cuándo-consultar-context7-obligatorio)
|
|
11
|
+
- [Cómo consultar Context7](#cómo-consultar-context7)
|
|
12
|
+
- [Reglas estrictas](#reglas-estrictas)
|
|
13
|
+
- [Excepción: Context7 no responde o no tiene la librería](#excepción-context7-no-responde-o-no-tiene-la-librería)
|
|
14
|
+
- [Auditoría retroactiva](#auditoría-retroactiva)
|
|
15
|
+
- [Aplicabilidad por agente](#aplicabilidad-por-agente)
|
|
16
|
+
- [Checklist de consulta Context7](#checklist-de-consulta-context7)
|
|
17
|
+
- [Origen de esta regla](#origen-de-esta-regla)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Por qué existe esta regla
|
|
22
|
+
|
|
23
|
+
El conocimiento del modelo sobre librerías de terceros tiene fecha de
|
|
24
|
+
corte. Una librería que en el corte estaba en la versión X y era la
|
|
25
|
+
recomendación, hoy puede estar:
|
|
26
|
+
|
|
27
|
+
- En una versión Y mayor con cambios incompatibles
|
|
28
|
+
- Deprecada y reemplazada por otra librería
|
|
29
|
+
- Con vulnerabilidades conocidas que requieren un parche
|
|
30
|
+
- Renombrada o migrada a otra organización
|
|
31
|
+
|
|
32
|
+
Generar código sin verificar la versión actual genera tres clases de
|
|
33
|
+
defectos en producción:
|
|
34
|
+
|
|
35
|
+
1. **Imports a APIs deprecadas** que arrastran warnings o se eliminan
|
|
36
|
+
en próximas versiones (ejemplo histórico: `@xenova/transformers`
|
|
37
|
+
migrado a `@huggingface/transformers`).
|
|
38
|
+
2. **Dependencias transitivas obsoletas** que el usuario ve como
|
|
39
|
+
warnings al instalar (ejemplo: `prebuild-install@7.1.3` arrastrada
|
|
40
|
+
por una librería que el sistema eligió sin verificar la salud).
|
|
41
|
+
3. **Vulnerabilidades CVE conocidas** que están parchadas en versiones
|
|
42
|
+
más nuevas que el modelo no conoce.
|
|
43
|
+
|
|
44
|
+
Context7 (MCP `mcp__claude_ai_Context7__query-docs` y
|
|
45
|
+
`mcp__claude_ai_Context7__resolve-library-id`) provee documentación
|
|
46
|
+
actualizada de librerías y frameworks. Su uso es la primera línea de
|
|
47
|
+
defensa contra estos tres problemas.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Cuándo consultar Context7 (OBLIGATORIO)
|
|
52
|
+
|
|
53
|
+
Antes de:
|
|
54
|
+
|
|
55
|
+
1. **Agregar una nueva dependencia** a `package.json`, `requirements.txt`,
|
|
56
|
+
`pom.xml`, `Cargo.toml`, `go.mod`, `composer.json`, `Package.swift` o
|
|
57
|
+
equivalente.
|
|
58
|
+
2. **Generar código que importe o use una librería externa** que no
|
|
59
|
+
estaba ya en uso en el proyecto, aunque la librería ya esté
|
|
60
|
+
instalada.
|
|
61
|
+
3. **Actualizar la versión** de una dependencia existente.
|
|
62
|
+
4. **Migrar de una librería a otra** alternativa (ej.
|
|
63
|
+
`axios` → `fetch`, `moment` → `date-fns`, `jest` → `vitest`).
|
|
64
|
+
5. **Resolver un warning de deprecación** de una dependencia
|
|
65
|
+
transitiva.
|
|
66
|
+
6. **Implementar un patrón nuevo** del framework (ej. Server Actions
|
|
67
|
+
en Next.js, Signals en Angular, Suspense en React) — la API
|
|
68
|
+
correcta cambia rápido.
|
|
69
|
+
|
|
70
|
+
NO es necesario consultar Context7 cuando:
|
|
71
|
+
|
|
72
|
+
- La librería es interna al proyecto SWL (`scripts/lib/*`,
|
|
73
|
+
`hooks/lib/*`).
|
|
74
|
+
- Es la biblioteca estándar del lenguaje (Node `fs`, Python `os`).
|
|
75
|
+
- Es código que no usa dependencias externas (algoritmos, lógica de
|
|
76
|
+
negocio sin librerías de terceros).
|
|
77
|
+
- El cambio es trivial (renombrar variable, formatear).
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Cómo consultar Context7
|
|
82
|
+
|
|
83
|
+
El MCP de Context7 expone dos herramientas principales:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
mcp__claude_ai_Context7__resolve-library-id(libraryName)
|
|
87
|
+
→ Resuelve un nombre de librería (ej. "react", "next.js") al ID
|
|
88
|
+
canónico que Context7 usa internamente.
|
|
89
|
+
|
|
90
|
+
mcp__claude_ai_Context7__query-docs(library, topic, version?)
|
|
91
|
+
→ Devuelve documentación actualizada de la librería sobre el
|
|
92
|
+
topic específico. Acepta versión opcional.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Flujo típico:
|
|
96
|
+
|
|
97
|
+
1. Resolver el ID de la librería:
|
|
98
|
+
```
|
|
99
|
+
const id = mcp__claude_ai_Context7__resolve-library-id({
|
|
100
|
+
libraryName: "next.js"
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. Consultar el tema específico:
|
|
105
|
+
```
|
|
106
|
+
const docs = mcp__claude_ai_Context7__query-docs({
|
|
107
|
+
library: id,
|
|
108
|
+
topic: "Server Actions",
|
|
109
|
+
version: "16"
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
3. Verificar:
|
|
114
|
+
- ¿La librería sigue siendo la recomendada o está deprecada?
|
|
115
|
+
- ¿Hay una alternativa migrada que deberíamos usar?
|
|
116
|
+
- ¿La API que voy a generar es la actual o cambió?
|
|
117
|
+
- ¿La versión que recomienda Context7 coincide con la del
|
|
118
|
+
`package.json` del proyecto?
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Reglas estrictas
|
|
123
|
+
|
|
124
|
+
### NUNCA agregar dependencia sin verificar
|
|
125
|
+
|
|
126
|
+
Antes de escribir `npm install <paquete>`, `pip install <paquete>`,
|
|
127
|
+
`go get <paquete>` o equivalente:
|
|
128
|
+
|
|
129
|
+
- Consultar Context7 para confirmar que la librería sigue activa.
|
|
130
|
+
- Confirmar la versión más reciente compatible con el resto del
|
|
131
|
+
stack del proyecto.
|
|
132
|
+
- Si Context7 reporta deprecación, **NO la uses**. Buscar la
|
|
133
|
+
alternativa migrada.
|
|
134
|
+
|
|
135
|
+
### NUNCA generar código con API obsoleta
|
|
136
|
+
|
|
137
|
+
Si el usuario pide implementar X usando librería Y:
|
|
138
|
+
|
|
139
|
+
- Consultar Context7 sobre cómo se hace X en la versión actual de Y.
|
|
140
|
+
- Si la API que aparece en el contexto del modelo difiere de la que
|
|
141
|
+
Context7 reporta como actual, **usar la de Context7**.
|
|
142
|
+
- Documentar en un comentario corto la versión consultada y la
|
|
143
|
+
fecha si la API es notable.
|
|
144
|
+
|
|
145
|
+
### NUNCA copiar ejemplos de la web sin verificar versión
|
|
146
|
+
|
|
147
|
+
Stack Overflow, blogs y tutoriales tienen alta probabilidad de
|
|
148
|
+
mostrar código deprecado. Si el agente consulta una web (vía
|
|
149
|
+
WebSearch o WebFetch) y obtiene un ejemplo, ese ejemplo debe
|
|
150
|
+
validarse contra Context7 antes de incorporarlo.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Excepción: Context7 no responde o no tiene la librería
|
|
155
|
+
|
|
156
|
+
Si Context7 no tiene documentación disponible para una librería
|
|
157
|
+
específica:
|
|
158
|
+
|
|
159
|
+
1. **Documentar en el código** que Context7 no respondió y la API se
|
|
160
|
+
tomó de la fuente oficial (npm registry, docs del repo).
|
|
161
|
+
2. **Verificar al menos**: la librería existe, no está deprecada en
|
|
162
|
+
npm/PyPI, su última publicación es reciente (≤ 12 meses).
|
|
163
|
+
3. **NO bloquear** el flujo del usuario por este caso — proceder con
|
|
164
|
+
diligencia razonable.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Auditoría retroactiva
|
|
169
|
+
|
|
170
|
+
Esta regla aplica también al código existente del proyecto SWL:
|
|
171
|
+
|
|
172
|
+
- Si durante un refactor se detecta una dependencia que arrastra
|
|
173
|
+
warnings de deprecación, abrir un ticket para auditarla con
|
|
174
|
+
Context7 y migrar si hay alternativa actual.
|
|
175
|
+
- El comando `/swl:auditar-deps` (cuando esté disponible) debe
|
|
176
|
+
cruzar las dependencias del proyecto contra Context7 para
|
|
177
|
+
detectar deprecaciones silenciosas.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Aplicabilidad por agente
|
|
182
|
+
|
|
183
|
+
| Agente | Aplica | Cuándo |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| `backend-python-swl` | SÍ | Al generar código FastAPI/Django/SQLAlchemy |
|
|
186
|
+
| `backend-node-swl` | SÍ | Al generar código Express/Fastify/NestJS |
|
|
187
|
+
| `backend-java-swl` | SÍ | Al generar código Spring Boot/JPA |
|
|
188
|
+
| `backend-go-swl` | SÍ | Al generar código Go con frameworks |
|
|
189
|
+
| `backend-rust-swl` | SÍ | Al generar código Axum/Actix |
|
|
190
|
+
| `backend-csharp-swl` | SÍ | Al generar código ASP.NET Core |
|
|
191
|
+
| `frontend-react-swl` | SÍ | Al generar código React/Next.js |
|
|
192
|
+
| `frontend-angular-swl` | SÍ | Al generar código Angular |
|
|
193
|
+
| `frontend-css-swl` | SÍ | Al usar PostCSS/Tailwind plugins |
|
|
194
|
+
| `frontend-tailwind-swl` | SÍ | Al usar Tailwind v4+ APIs |
|
|
195
|
+
| `frontend-swl` | SÍ | Al usar Vue/Svelte/Lit |
|
|
196
|
+
| `mobile-android-swl` | SÍ | Al usar Jetpack Compose libs |
|
|
197
|
+
| `mobile-ios-swl` | SÍ | Al usar SwiftUI/Combine |
|
|
198
|
+
| `mobile-cross-swl` | SÍ | Al usar React Native/Flutter |
|
|
199
|
+
| `implementador-swl` | SÍ | Generalista — siempre |
|
|
200
|
+
| `llm-apps-swl` | SÍ | LangChain, OpenAI SDK, Anthropic SDK |
|
|
201
|
+
| `pagos-swl` | SÍ | Stripe SDK actualizado |
|
|
202
|
+
| `datos-swl` | SÍ | ORMs y drivers de BD |
|
|
203
|
+
| `arquitecto-swl` | RECOMENDADO | Al evaluar tradeoffs entre librerías |
|
|
204
|
+
| `revisor-codigo-swl` | RECOMENDADO | Al detectar deps deprecadas en review |
|
|
205
|
+
| `revisor-seguridad-swl` | OBLIGATORIO | Al verificar CVEs de dependencias |
|
|
206
|
+
| Resto de agentes | NO | No generan código con dependencias externas |
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Checklist de consulta Context7
|
|
211
|
+
|
|
212
|
+
Antes de marcar una tarea como completa:
|
|
213
|
+
|
|
214
|
+
- [ ] ¿Las dependencias agregadas/usadas se verificaron contra Context7?
|
|
215
|
+
- [ ] ¿La versión usada está alineada con la que Context7 reporta como actual?
|
|
216
|
+
- [ ] ¿No hay imports de APIs deprecadas según Context7?
|
|
217
|
+
- [ ] ¿Las dependencias transitivas conocidas no son warnings de
|
|
218
|
+
deprecación al instalar?
|
|
219
|
+
- [ ] Si Context7 no tenía la librería, ¿se documentó el motivo?
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Origen de esta regla
|
|
224
|
+
|
|
225
|
+
Esta regla se formalizó tras observar en la primera instalación pública
|
|
226
|
+
de `@saulwade/swl-ses@1.0.0` (2026-04-30) un warning de
|
|
227
|
+
`prebuild-install@7.1.3 deprecated` arrastrado por
|
|
228
|
+
`@xenova/transformers` que estaba en `optionalDependencies`. La
|
|
229
|
+
dependencia se eligió en una iteración anterior sin verificar Context7;
|
|
230
|
+
la migración oficial era `@huggingface/transformers`. El warning se vio
|
|
231
|
+
en cada `npm install` del paquete distribuido. Resuelto en v1.0.1
|
|
232
|
+
eliminando la dependencia opcional y elevando esta regla a obligatoria
|
|
233
|
+
para que no se repita.
|
|
234
|
+
|
|
235
|
+
Memoria asociada: `feedback_usar_context7.md` (preferencia previa del
|
|
236
|
+
usuario, formalizada como regla).
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# Uso obligatorio del sistema SWL — extendido
|
|
2
|
+
|
|
3
|
+
> Extendido de `reglas/usar-sistema-swl.md` (Fase D, dieta de contexto). El núcleo
|
|
4
|
+
> instalado es la norma — su matriz operacional comprimida es LA herramienta de
|
|
5
|
+
> decisión; aquí viven el racional completo, la matriz con justificaciones, los
|
|
6
|
+
> anti-patrones desarrollados con MAL/BIEN y los checklists íntegros.
|
|
7
|
+
|
|
8
|
+
## Índice
|
|
9
|
+
|
|
10
|
+
- [Por qué existe esta regla](#por-qué-existe-esta-regla)
|
|
11
|
+
- [Matriz operacional completa](#matriz-operacional-completa)
|
|
12
|
+
- [Excepciones legítimas](#excepciones-legítimas)
|
|
13
|
+
- [Anti-patrones explícitos](#anti-patrones-explícitos)
|
|
14
|
+
- [Checklist antes de empezar cualquier tarea](#checklist-antes-de-empezar-cualquier-tarea)
|
|
15
|
+
- [Cómo recuperarse si ya empecé directo](#cómo-recuperarse-si-ya-empecé-directo)
|
|
16
|
+
- [Aplicabilidad](#aplicabilidad)
|
|
17
|
+
- [Relación con otras reglas](#relación-con-otras-reglas)
|
|
18
|
+
- [Checklist de auto-verificación al final del turno](#checklist-de-auto-verificación-al-final-del-turno)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Por qué existe esta regla
|
|
23
|
+
|
|
24
|
+
El sistema SWL se instaló específicamente para que Claude **no haga trabajo
|
|
25
|
+
directo cuando hay un componente especializado**. El patrón recurrente que
|
|
26
|
+
esta regla cierra es:
|
|
27
|
+
|
|
28
|
+
- Implementar con Read/Write/Edit en vez de invocar `implementador-swl` o el
|
|
29
|
+
agente de stack (`backend-python-swl`, `frontend-react-swl`, etc.).
|
|
30
|
+
- Hacer commits sin invocar `revisor-codigo-swl` ni `revisor-seguridad-swl`.
|
|
31
|
+
- Escribir código sin cargar el skill de stack correspondiente
|
|
32
|
+
(`fastapi-experto`, `react-experto`, `angular-moderno`).
|
|
33
|
+
- Implementar features sin pasar por `/swl:discutir-fase` → `/swl:planear-fase`
|
|
34
|
+
→ `/swl:ejecutar-fase` cuando el alcance lo justifica.
|
|
35
|
+
- Diferir scope (entregar read-only cuando el plan decía CRUD) sin invocar al
|
|
36
|
+
planificador ni crear DA formal — viola `arreglar-al-detectar.md`.
|
|
37
|
+
|
|
38
|
+
El patrón es costoso y reproducible. La regla `arreglar-al-detectar.md`
|
|
39
|
+
prohíbe la deuda silenciosa; esta regla cierra la causa raíz: saltarse el
|
|
40
|
+
flujo SWL desde el inicio.
|
|
41
|
+
|
|
42
|
+
El sistema SWL es la herramienta del usuario — saltársela sin justificación
|
|
43
|
+
es decisión que la regla `debatir-antes-de-aceptar.md` exige debatir antes
|
|
44
|
+
de ejecutar.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Matriz operacional completa
|
|
49
|
+
|
|
50
|
+
Versión íntegra de la matriz del núcleo, con la columna que justifica por qué
|
|
51
|
+
el trabajo directo NO basta.
|
|
52
|
+
|
|
53
|
+
### Para tareas de desarrollo
|
|
54
|
+
|
|
55
|
+
| Tarea | Componente SWL obligatorio | Componente directo NO basta porque |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| Feature nueva > 50 LOC o multi-archivo | `/swl:discutir-fase` → `/swl:planear-fase` → `/swl:ejecutar-fase` o `orquestador-swl` | Sin discovery el scope queda implícito y diverge en ejecución |
|
|
58
|
+
| Implementación backend Python/Node/Java/Go/Rust/C# | `backend-python-swl` / `backend-node-swl` / etc. + `Skill("<framework>-experto")` | El skill carga gotchas críticos (ej: MissingGreenlet en SQLAlchemy async) |
|
|
59
|
+
| Implementación frontend React/Angular/Vue/Svelte | `frontend-react-swl` / `frontend-angular-swl` / `frontend-swl` + skill correspondiente | Los skills traen patrones modernos (signals, RSC, Suspense) que el modelo no actualiza solo |
|
|
60
|
+
| Implementación mobile Android/iOS/RN/Flutter | `mobile-android-swl` / `mobile-ios-swl` / `mobile-cross-swl` | Casos edge de plataforma (Core Data, baseline profiles) |
|
|
61
|
+
| Bug con stack trace o reproducible | `depurador-swl` con método científico | Saltar al fix sin hipótesis aislada falla con frecuencia |
|
|
62
|
+
| Refactor masivo o migración schema | `migrador-swl` | Exige plan de rollback + expand-contract, no improvisar |
|
|
63
|
+
|
|
64
|
+
### Para tareas de calidad
|
|
65
|
+
|
|
66
|
+
| Tarea | Componente SWL obligatorio |
|
|
67
|
+
|---|---|
|
|
68
|
+
| Pre-merge a main | `/swl:revisar` o `revisor-codigo-swl` + `revisor-seguridad-swl` |
|
|
69
|
+
| Verificación post-fase | `/swl:verificar` con `Skill("verificar-trabajo")` (goal-backward 4 niveles) |
|
|
70
|
+
| Auditoría de calidad | `Skill("checklist-calidad")` con score ≥9.0 |
|
|
71
|
+
| Tests nuevos | `tdd-qa-swl` (ciclo RED→GREEN→REFACTOR) |
|
|
72
|
+
| Auditoría de seguridad | `Skill("checklist-seguridad")` (OWASP Top 10 + A11) |
|
|
73
|
+
| Detectar funcionalidad duplicada | `Skill("swl-revisar-impacto")` o `revisor-codigo-swl` con veto DRY mayor |
|
|
74
|
+
|
|
75
|
+
### Para tareas de proceso
|
|
76
|
+
|
|
77
|
+
| Tarea | Componente SWL obligatorio |
|
|
78
|
+
|---|---|
|
|
79
|
+
| Cierre de sesión productiva | `/swl:compactar` + `/swl:aprender` |
|
|
80
|
+
| Capturar aprendizaje recurrente | `/swl:aprender` → APRENDIZAJES.md → posible promoción a regla/skill |
|
|
81
|
+
| Release con bump de versión | `/swl:release` (sincronización de ubicaciones de versión) |
|
|
82
|
+
| Documentación viva post-feature | `documentador-swl` |
|
|
83
|
+
| Diagnóstico del sistema | `/swl:status salud` |
|
|
84
|
+
|
|
85
|
+
### Para tareas de búsqueda y contexto
|
|
86
|
+
|
|
87
|
+
| Tarea | Componente SWL obligatorio |
|
|
88
|
+
|---|---|
|
|
89
|
+
| Contexto de dominio previo | `Skill("memoria-busqueda")` sobre `.planning/sessions/` y APRENDIZAJES.md |
|
|
90
|
+
| Investigación tecnológica | `investigador-swl` con WebSearch/WebFetch + `Skill("agent-browser")` |
|
|
91
|
+
| Verificar dependencia externa | Consultar Context7 (regla `usar-context7.md`) |
|
|
92
|
+
| Decisiones repetibles del proyecto | Revisar `.planning/adrs/`, APRENDIZAJES.md, `instintos/proyecto.yaml` ANTES de proponer solución |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Excepciones legítimas
|
|
97
|
+
|
|
98
|
+
NO aplicar esta regla cuando:
|
|
99
|
+
|
|
100
|
+
1. **Tarea trivial de 1-2 archivos**: rename, fix de typo, ajuste de comentario,
|
|
101
|
+
formato. El overhead de invocar agente supera el valor.
|
|
102
|
+
2. **Pregunta de lectura pura**: "¿qué hace este archivo?", "¿dónde se define
|
|
103
|
+
X?". Usar Read/Grep directos.
|
|
104
|
+
3. **Comando de shell puro**: `git status`, `npm install`, `gh pr list`.
|
|
105
|
+
4. **Sesión exploratoria explícita**: el usuario pidió "explora", "echa un
|
|
106
|
+
vistazo", "investiga sin tocar nada".
|
|
107
|
+
5. **Override explícito del usuario**: "no uses agentes, hazlo directo".
|
|
108
|
+
Respetar la instrucción explícita; registrar la excepción si tiene impacto
|
|
109
|
+
en flujo posterior.
|
|
110
|
+
6. **Fix urgente de producción** con incidente activo: aplicar fix mínimo,
|
|
111
|
+
el agente puede esperar al post-mortem.
|
|
112
|
+
7. **Proyecto sin SWL instalado**: si no hay `plugin.json` ni `agentes/` en
|
|
113
|
+
el proyecto, la regla no aplica.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Anti-patrones explícitos
|
|
118
|
+
|
|
119
|
+
### Anti-patrón 1: implementar feature compleja con Read+Write directo
|
|
120
|
+
|
|
121
|
+
❌ **MAL**: el usuario pide "agrega CRUD para entidad X", Claude empieza a
|
|
122
|
+
escribir el modelo + endpoint + frontend + tests con Read+Write secuenciales,
|
|
123
|
+
sin pasar por `/swl:planear-fase` ni invocar `backend-python-swl`.
|
|
124
|
+
|
|
125
|
+
✅ **BIEN**: invocar `/swl:discutir-fase` para extraer decisiones,
|
|
126
|
+
`/swl:planear-fase` para descomponer en tareas atómicas, `/swl:ejecutar-fase`
|
|
127
|
+
que delega a `implementador-swl` o agente de stack con skill cargado.
|
|
128
|
+
|
|
129
|
+
### Anti-patrón 2: commit sin revisión
|
|
130
|
+
|
|
131
|
+
❌ **MAL**: terminar implementación y hacer `git add . && git commit` sin
|
|
132
|
+
pasar por `revisor-codigo-swl` ni `revisor-seguridad-swl`.
|
|
133
|
+
|
|
134
|
+
✅ **BIEN**: `/swl:revisar` antes del commit. Score ≥ 9.0 obligatorio. Si
|
|
135
|
+
hay veto items, corregir antes de mergear.
|
|
136
|
+
|
|
137
|
+
### Anti-patrón 3: divergir del plan sin reconfirmar scope
|
|
138
|
+
|
|
139
|
+
❌ **MAL**: plan decía "CRUD completo", entregar read-only documentando en
|
|
140
|
+
commit "la edición se agrega en iteración posterior". Es deuda silenciosa
|
|
141
|
+
prohibida por `arreglar-al-detectar.md`.
|
|
142
|
+
|
|
143
|
+
✅ **BIEN**: si durante ejecución se detecta que el scope original es muy
|
|
144
|
+
grande, pausar, invocar `planificador-swl` para re-planificar, o crear DA
|
|
145
|
+
formal con trigger verificable. NUNCA diferir scope en commit silencioso.
|
|
146
|
+
|
|
147
|
+
### Anti-patrón 4: implementar con framework sin cargar el skill correspondiente
|
|
148
|
+
|
|
149
|
+
❌ **MAL**: escribir FastAPI con SQLAlchemy async sin cargar
|
|
150
|
+
`Skill("fastapi-experto")` — alta probabilidad de incurrir en MissingGreenlet
|
|
151
|
+
por lazy loading.
|
|
152
|
+
|
|
153
|
+
✅ **BIEN**: cargar el skill ANTES de la primera línea. El skill trae los
|
|
154
|
+
gotchas específicos que el modelo no recuerda solo.
|
|
155
|
+
|
|
156
|
+
### Anti-patrón 5: detectar funcionalidad duplicada y commitearla igual
|
|
157
|
+
|
|
158
|
+
❌ **MAL**: durante implementación detectar que `/catalogos` ya tiene lo
|
|
159
|
+
mismo que se está agregando en `/catalogos-contratacion` pero commitearlo
|
|
160
|
+
porque "el plan decía implementarlo aquí". Pérdida de DRY.
|
|
161
|
+
|
|
162
|
+
✅ **BIEN**: pausar, invocar `revisor-codigo-swl` o `Skill("swl-revisar-impacto")`,
|
|
163
|
+
reportar la duplicación al usuario, esperar decisión de scope.
|
|
164
|
+
|
|
165
|
+
### Anti-patrón 6: usar agente especializado como "etiqueta cosmética"
|
|
166
|
+
|
|
167
|
+
❌ **MAL**: decir "estoy invocando implementador-swl" pero seguir trabajando
|
|
168
|
+
con Read+Write+Edit personalmente sin lanzar el Agent tool.
|
|
169
|
+
|
|
170
|
+
✅ **BIEN**: invocación real con el tool Agent. El sub-agente recibe contexto
|
|
171
|
+
acotado, opera con sus permisos declarados y devuelve resultado.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Checklist antes de empezar cualquier tarea
|
|
176
|
+
|
|
177
|
+
Antes de la primera tool call sustantiva:
|
|
178
|
+
|
|
179
|
+
- [ ] **PASO 0 — Consultar memoria previa** (`Skill("memoria-busqueda")`,
|
|
180
|
+
APRENDIZAJES.md, `.planning/adrs/`, vault Obsidian si aplica). El
|
|
181
|
+
proyecto tiene decisiones ya tomadas y patrones validados que se
|
|
182
|
+
repiten. Empezar sin consultar es reabrir decisiones cerradas.
|
|
183
|
+
- [ ] ¿La tarea cabe en alguna fila de la **matriz operacional**?
|
|
184
|
+
- [ ] Si sí: ¿identifiqué el agente, skill o comando SWL correspondiente?
|
|
185
|
+
- [ ] ¿Cargué el skill relevante con `Skill("nombre")` antes de implementar?
|
|
186
|
+
- [ ] Si la tarea es no trivial: ¿pasó por el flujo discutir → planear → ejecutar?
|
|
187
|
+
- [ ] Si voy a hacer trabajo directo: ¿estoy dentro de las **excepciones
|
|
188
|
+
legítimas**? Si no, esta regla me obliga a usar el componente SWL.
|
|
189
|
+
- [ ] Antes de commit: ¿pasé por revisor de código + seguridad?
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Cómo recuperarse si ya empecé directo
|
|
194
|
+
|
|
195
|
+
Si avancé con trabajo directo y al revisar esta regla detecto que debí usar
|
|
196
|
+
un componente SWL:
|
|
197
|
+
|
|
198
|
+
1. **Trabajo trivial y reversible**: aceptar el atajo, registrar la
|
|
199
|
+
excepción mentalmente, terminar.
|
|
200
|
+
2. **Trabajo sustantivo pero sin commit**: invocar el componente SWL ahora
|
|
201
|
+
(revisor / verificar / planificador retrospectivo) antes del commit. Aún
|
|
202
|
+
se gana cobertura.
|
|
203
|
+
3. **Ya se commiteó**: ejecutar `/swl:verificar` post-hoc. Si encuentra
|
|
204
|
+
hallazgos, corregir en commit siguiente bajo `arreglar-al-detectar.md`.
|
|
205
|
+
4. **El patrón se repite en la sesión**: invocar `/swl:aprender` para
|
|
206
|
+
capturar el feedback explícitamente y reforzar el comportamiento futuro.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Aplicabilidad
|
|
211
|
+
|
|
212
|
+
Aplica a:
|
|
213
|
+
|
|
214
|
+
- Claude Code (CLI, Desktop, IDE) operando dentro de proyectos con SWL
|
|
215
|
+
instalado.
|
|
216
|
+
- Sesiones de implementación, debugging, refactor, revisión, planning.
|
|
217
|
+
- Cualquier ciclo GSD (Goal-Seeking Development).
|
|
218
|
+
|
|
219
|
+
NO aplica a:
|
|
220
|
+
|
|
221
|
+
- Proyectos sin SWL instalado.
|
|
222
|
+
- Repos de terceros, exploración de código ajeno (`temp/`, dependencias
|
|
223
|
+
npm/pip).
|
|
224
|
+
- Tareas administrativas puras del sistema (instalar SWL, configurar Claude
|
|
225
|
+
Code).
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Relación con otras reglas
|
|
230
|
+
|
|
231
|
+
- `arreglar-al-detectar.md` — la deuda silenciosa de scope (anti-patrón 3
|
|
232
|
+
aquí) es exactamente lo que prohíbe esa regla.
|
|
233
|
+
- `debatir-antes-de-aceptar.md` — saltarse SWL sin justificación es decisión
|
|
234
|
+
que choca con regla documentada → exige debate, no ejecución silenciosa.
|
|
235
|
+
- `brevedad-output.md` — cubre idioma y eficiencia de tokens; esta regla
|
|
236
|
+
cubre flujo de trabajo.
|
|
237
|
+
- `skills-estandar.md` — cubre cómo escribir skills (autor); esta regla
|
|
238
|
+
cubre cómo usarlos (consumidor).
|
|
239
|
+
- `usar-context7.md` — regla hermana: consultar documentación de librerías
|
|
240
|
+
externas antes de implementar.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Checklist de auto-verificación al final del turno
|
|
245
|
+
|
|
246
|
+
Al cerrar un turno con trabajo sustantivo:
|
|
247
|
+
|
|
248
|
+
- [ ] ¿Invoqué los agentes/skills/comandos SWL aplicables o estuve dentro
|
|
249
|
+
de las excepciones legítimas?
|
|
250
|
+
- [ ] Si hice trabajo directo: ¿la decisión está justificada por una
|
|
251
|
+
excepción concreta, no por inercia?
|
|
252
|
+
- [ ] Si detecto que omití un componente que debí usar: ¿lo invoco
|
|
253
|
+
retrospectivamente antes del commit final?
|