elsabro 7.3.2 → 7.5.0
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/README.md +80 -23
- package/agents/elsabro-executor.md +32 -0
- package/agents/elsabro-orchestrator.md +39 -0
- package/agents/elsabro-qa.md +37 -0
- package/agents/elsabro-verifier.md +37 -0
- package/bin/install.js +71 -0
- package/commands/elsabro/debug.md +54 -16
- package/commands/elsabro/execute.md +294 -7
- package/commands/elsabro/quick.md +32 -9
- package/flow-engine/src/graph.js +16 -4
- package/flow-engine/src/index.js +10 -0
- package/flow-engine/src/template.js +6 -5
- package/flow-engine/tests/cli.test.js +3 -2
- package/flow-engine/tests/execute-dispatcher.test.js +2 -1
- package/flow-engine/tests/graph.test.js +27 -26
- package/flow-engine/tests/integration.test.js +30 -34
- package/flows/development-flow.json +109 -12
- package/hooks/auto-sync-check.sh +238 -0
- package/hooks/check-review-skills.sh +45 -0
- package/hooks/hooks-config-updated.json +68 -10
- package/hooks/review-gate.sh +90 -0
- package/hooks/skill-gate.sh +107 -0
- package/package.json +1 -1
- package/references/enforcement-rules.md +43 -16
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# ELSABRO v7.
|
|
1
|
+
# ELSABRO v7.5.0
|
|
2
2
|
|
|
3
|
-
**Tu asistente AI para crear apps increibles** — Orquestacion de agentes con flow engine, checkpointing y
|
|
3
|
+
**Tu asistente AI para crear apps increibles** — Orquestacion de agentes con flow engine, checkpointing, ejecucion paralela y skill auto-discovery.
|
|
4
4
|
|
|
5
|
-
ELSABRO es un sistema de desarrollo AI-powered para Claude Code que te guia paso a paso en la creacion de aplicaciones. Incluye un flow engine con
|
|
5
|
+
ELSABRO es un sistema de desarrollo AI-powered para Claude Code que te guia paso a paso en la creacion de aplicaciones. Incluye un flow engine con 47 nodos, 12 agentes especializados, un CLI para control de flujo, un sistema de checkpoints para recuperacion automatica, y un pipeline completo de skill discovery e invocacion.
|
|
6
6
|
|
|
7
|
-
## Que Hay de Nuevo en v7.
|
|
7
|
+
## Que Hay de Nuevo en v7.4
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
9
|
+
- **Skill Invocation Protocol** — Los agentes reciben `availableSkills` en sus inputs y siguen prioridad: skills instalados > recomendados > implementacion manual
|
|
10
|
+
- **Skill Auto-Install Flow** — 2 nodos nuevos descubren top 5 skills relevantes, preguntan al usuario, y batch-instalan en paralelo
|
|
11
|
+
- **Review Gate Enforcement** — Hooks reales en Claude Code bloquean git commit/push si hay codigo sin code review
|
|
12
|
+
- **Auto-Sync Validation** — Hook que valida 6 archivos criticos despues de cada implementacion con modo `--fix`
|
|
13
|
+
- **Agent Teams Cleanup** — Verificacion con 30s timeout antes de TeamDelete, telemetria de anomalias
|
|
14
|
+
- **Context7 Integration** — Consulta silenciosa de documentacion antes de tocar codigo con librerias externas
|
|
15
|
+
- **399 tests** — Zero dependencias externas, Node 18+
|
|
16
16
|
|
|
17
17
|
## Para Quien es ELSABRO?
|
|
18
18
|
|
|
@@ -111,13 +111,13 @@ ELSABRO incluye un motor de ejecucion de flujos basado en grafos. El engine es u
|
|
|
111
111
|
### Arquitectura
|
|
112
112
|
|
|
113
113
|
```
|
|
114
|
-
JSON Flow Definition (
|
|
114
|
+
JSON Flow Definition (47 nodos)
|
|
115
115
|
|
|
|
116
116
|
v
|
|
117
117
|
graph.js — Construye Map + valida referencias
|
|
118
118
|
|
|
|
119
119
|
v
|
|
120
|
-
runner.js — While-loop: nodo
|
|
120
|
+
runner.js — While-loop: nodo -> executor -> checkpoint -> siguiente
|
|
121
121
|
|
|
|
122
122
|
v
|
|
123
123
|
executors.js — 9 tipos de nodos (entry, exit, condition, router,
|
|
@@ -128,9 +128,9 @@ JSON Flow Definition (44 nodos)
|
|
|
128
128
|
(inyectados en runtime, el engine no sabe de Claude Code)
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
-
- **
|
|
131
|
+
- **399 tests**, 92 suites, 0 dependencias externas
|
|
132
132
|
- **Checkpoint despues de cada nodo** — recuperacion automatica desde cualquier punto
|
|
133
|
-
- **Template resolver** — 7 tipos de expresiones
|
|
133
|
+
- **Template resolver** — 7 tipos de expresiones sin code execution
|
|
134
134
|
|
|
135
135
|
Para mas detalles ver [ARCHITECTURE.md](ARCHITECTURE.md).
|
|
136
136
|
|
|
@@ -155,9 +155,52 @@ node flow-engine/src/cli.js status --flow flows/development-flow.json
|
|
|
155
155
|
### Flow Definitions
|
|
156
156
|
|
|
157
157
|
ELSABRO incluye 2 flow definitions:
|
|
158
|
-
- `flows/development-flow.json` — Flujo completo de desarrollo (
|
|
158
|
+
- `flows/development-flow.json` — Flujo completo de desarrollo (47 nodos, ~1200 lineas)
|
|
159
159
|
- `flows/quick-flow.json` — Flujo rapido para tareas simples (8 nodos)
|
|
160
160
|
|
|
161
|
+
## Hooks System
|
|
162
|
+
|
|
163
|
+
ELSABRO incluye hooks automaticos que se integran con Claude Code:
|
|
164
|
+
|
|
165
|
+
| Hook | Evento | Funcion |
|
|
166
|
+
|------|--------|---------|
|
|
167
|
+
| `review-gate.sh` | PostToolUse (Write/Edit) | Bloquea git commit si hay codigo sin code review |
|
|
168
|
+
| `auto-sync-check.sh` | PostCommand | Valida sincronizacion de 6 archivos criticos |
|
|
169
|
+
| `check-review-skills.sh` | Pre-review | Verifica que skills de review estan instalados |
|
|
170
|
+
| `skill-discovery.sh` | PreFlow | Descubre y recomienda skills relevantes |
|
|
171
|
+
|
|
172
|
+
### Review Gate
|
|
173
|
+
|
|
174
|
+
Cada vez que se modifica codigo, el review gate se activa automaticamente:
|
|
175
|
+
```
|
|
176
|
+
Write/Edit -> flag set -> code review -> fix issues -> repeat until clean -> flag clear -> commit allowed
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Auto-Sync Validation
|
|
180
|
+
|
|
181
|
+
Valida que archivos criticos esten sincronizados:
|
|
182
|
+
```bash
|
|
183
|
+
# Verificar sincronizacion
|
|
184
|
+
bash hooks/auto-sync-check.sh
|
|
185
|
+
|
|
186
|
+
# Auto-corregir desyncs simples
|
|
187
|
+
bash hooks/auto-sync-check.sh --fix
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Skill Discovery
|
|
191
|
+
|
|
192
|
+
ELSABRO descubre automaticamente skills relevantes antes de cada ejecucion:
|
|
193
|
+
|
|
194
|
+
1. **Descubrimiento** — Escanea skills instalados (`~/.claude/skills/`), skills ELSABRO (`./skills/`), y el registry externo
|
|
195
|
+
2. **Ranking** — Ordena por relevancia usando keyword matching con pesos
|
|
196
|
+
3. **Presentacion** — Muestra top 5 al usuario con opcion de instalar
|
|
197
|
+
4. **Inyeccion** — Skills disponibles se pasan como `availableSkills` a todos los agentes
|
|
198
|
+
|
|
199
|
+
Los agentes siguen el **Skill Invocation Protocol** (seccion 3.1 de execute.md):
|
|
200
|
+
- Prioridad: skills instalados > recomendados > implementacion manual
|
|
201
|
+
- Context7 se consulta silenciosamente para documentacion de librerias externas
|
|
202
|
+
- Skills que fallan no bloquean la ejecucion
|
|
203
|
+
|
|
161
204
|
## Agentes Especializados
|
|
162
205
|
|
|
163
206
|
12 agentes con personalidades distintas, basados en BMAD-METHOD:
|
|
@@ -177,6 +220,8 @@ ELSABRO incluye 2 flow definitions:
|
|
|
177
220
|
| `elsabro-quick-dev` | Barry | Desarrollo rapido con minima ceremonia |
|
|
178
221
|
| `elsabro-yolo-dev` | Flash | Desarrollo ultra-rapido, maximo riesgo |
|
|
179
222
|
|
|
223
|
+
Cada agente tiene una seccion `<skills_usage>` personalizada que define que tipos de skills debe buscar y como usarlos segun su rol.
|
|
224
|
+
|
|
180
225
|
## PartyEngine
|
|
181
226
|
|
|
182
227
|
Sistema de discusion multi-agente. Selecciona 2-3 agentes relevantes para un tema y ejecuta rondas de debate con sintesis automatica.
|
|
@@ -194,6 +239,9 @@ El engine usa un mapa de relevancia (18 categorias de keywords) para elegir los
|
|
|
194
239
|
| `default` | Balance entre velocidad y seguridad |
|
|
195
240
|
| `yolo` | Maximo velocidad, minima ceremonia |
|
|
196
241
|
| `careful` | Maximo seguridad, verificacion exhaustiva |
|
|
242
|
+
| `teams` | Agent Teams con coordinacion peer-to-peer |
|
|
243
|
+
| `persistent-teams` | Persistent mode + Agent Teams + blocking review |
|
|
244
|
+
| `bmad` | Spec-Driven Development con PRD y Solution Design |
|
|
197
245
|
|
|
198
246
|
Cambiar perfil:
|
|
199
247
|
```
|
|
@@ -203,10 +251,10 @@ Cambiar perfil:
|
|
|
203
251
|
## Como Funciona
|
|
204
252
|
|
|
205
253
|
```
|
|
206
|
-
1. Describes tu idea
|
|
207
|
-
2. Planifica las fases
|
|
208
|
-
3. Ejecuta con agentes
|
|
209
|
-
4. Verifica automaticamente
|
|
254
|
+
1. Describes tu idea -> ELSABRO analiza y pregunta
|
|
255
|
+
2. Planifica las fases -> Crea planes atomicos con TDD
|
|
256
|
+
3. Ejecuta con agentes -> Parallel execution + checkpointing
|
|
257
|
+
4. Verifica automaticamente -> 3 reviewers + quality gates
|
|
210
258
|
```
|
|
211
259
|
|
|
212
260
|
Persistent mode mantiene ELSABRO activo entre mensajes — escribe naturalmente y ELSABRO rutea al comando correcto.
|
|
@@ -227,12 +275,18 @@ Persistent mode mantiene ELSABRO activo entre mensajes — escribe naturalmente
|
|
|
227
275
|
flow-engine/
|
|
228
276
|
src/ — 9 modulos del engine (index, graph, template,
|
|
229
277
|
executors, runner, checkpoint, callbacks, cli, party)
|
|
230
|
-
tests/ —
|
|
278
|
+
tests/ — 10 archivos de tests (399 tests, 92 suites)
|
|
231
279
|
src/agent-cards.json — 9 personalidades de agentes
|
|
232
280
|
|
|
233
281
|
flows/
|
|
234
|
-
development-flow.json — Flujo completo (
|
|
282
|
+
development-flow.json — Flujo completo (47 nodos)
|
|
235
283
|
quick-flow.json — Flujo rapido (8 nodos)
|
|
284
|
+
|
|
285
|
+
hooks/
|
|
286
|
+
review-gate.sh — Review gate (set/check/clear/status)
|
|
287
|
+
auto-sync-check.sh — Validacion de sincronizacion
|
|
288
|
+
check-review-skills.sh — Verificacion de skills de review
|
|
289
|
+
skill-discovery.sh — Discovery de skills pre-flow
|
|
236
290
|
```
|
|
237
291
|
|
|
238
292
|
## Actualizacion
|
|
@@ -284,7 +338,10 @@ rm -rf .elsabro .planning
|
|
|
284
338
|
|
|
285
339
|
| Version | Milestone | Cambio Principal |
|
|
286
340
|
|---------|-----------|-----------------|
|
|
287
|
-
| 7.
|
|
341
|
+
| 7.5.0 | M7+ | Skill gate enforcement, 5-layer enforcement, Agent Teams review, plan verification gate |
|
|
342
|
+
| 7.4.0 | M7+ | Skill invocation protocol, review gate enforcement, auto-sync hook, 47 nodos, 399 tests |
|
|
343
|
+
| 7.3.2 | M7 | Validation errors/warnings separation, case-insensitive hasCriticalIssues |
|
|
344
|
+
| 7.3.1 | M7 | PR #1: 23 critical fixes, skill auto-install hooks, deprecated teams bypass |
|
|
288
345
|
| 7.3.0 | M7 | Execute.md reescrito (-89%), observabilidad JSONL, limpieza codigo fantasma |
|
|
289
346
|
| 7.1.0 | M5 + M6 | AT compliance, design-ui routing, 279 failure mode tests |
|
|
290
347
|
| 7.0.0 | M4 | Feature completeness — 42/42 nodos, CLI, 257 tests |
|
|
@@ -94,6 +94,38 @@ CHECKPOINT (preguntar):
|
|
|
94
94
|
- payments/stripe → skills/payments-setup.md
|
|
95
95
|
</skill_awareness>
|
|
96
96
|
|
|
97
|
+
<skills_usage>
|
|
98
|
+
## Uso de Skills en Implementacion
|
|
99
|
+
|
|
100
|
+
### Deteccion Automatica de Skills
|
|
101
|
+
Cuando `availableSkills` esta presente en los inputs del contexto:
|
|
102
|
+
1. **Escanear tech stack** — Identificar frameworks, lenguajes y librerias del plan
|
|
103
|
+
2. **Matchear con skills disponibles** — Buscar skills que cubran el stack detectado
|
|
104
|
+
3. **Priorizar skill especializado > implementacion manual** — Si existe un skill verificado, usarlo
|
|
105
|
+
|
|
106
|
+
### Skills Prioritarios para Executor
|
|
107
|
+
| Tech Stack | Skill Recomendado | Uso |
|
|
108
|
+
|------------|-------------------|-----|
|
|
109
|
+
| React Native | react-native-best-practices | Patrones de componentes, navegacion, performance |
|
|
110
|
+
| Supabase/Postgres | supabase-postgres-best-practices | Queries, RLS, migrations, edge functions |
|
|
111
|
+
| TypeScript | typescript-pro | Tipos avanzados, generics, utility types |
|
|
112
|
+
| JavaScript | javascript-pro | Patrones modernos, async patterns |
|
|
113
|
+
| APIs REST | api-designer | Endpoints, validacion, error handling |
|
|
114
|
+
|
|
115
|
+
### Context7 Obligatorio
|
|
116
|
+
**ANTES de tocar codigo de librerias externas**, consultar Context7 silenciosamente:
|
|
117
|
+
- Buscar documentacion actualizada del paquete
|
|
118
|
+
- Verificar API signatures y breaking changes
|
|
119
|
+
- No mostrar la consulta al usuario, solo aplicar el conocimiento
|
|
120
|
+
|
|
121
|
+
### Reportar Skills Usados
|
|
122
|
+
En cada output de tarea completada, incluir:
|
|
123
|
+
```
|
|
124
|
+
Skills aplicados: [nombre-skill-1], [nombre-skill-2]
|
|
125
|
+
Patrones usados: [patron-del-skill aplicado]
|
|
126
|
+
```
|
|
127
|
+
</skills_usage>
|
|
128
|
+
|
|
97
129
|
<execution_flow>
|
|
98
130
|
## Flujo de Ejecución
|
|
99
131
|
|
|
@@ -38,6 +38,45 @@ Soy **Quantum**, el orquestador de ejecución paralela. Como un director de orqu
|
|
|
38
38
|
5. **Reportar en tiempo real** - El usuario sabe qué está pasando
|
|
39
39
|
</principles>
|
|
40
40
|
|
|
41
|
+
<skills_usage>
|
|
42
|
+
## Uso de Skills en Orquestacion
|
|
43
|
+
|
|
44
|
+
### Deteccion y Distribucion de Skills
|
|
45
|
+
Cuando `availableSkills` esta presente en los inputs del contexto:
|
|
46
|
+
1. **Inventariar skills disponibles** — Listar todos los skills relevantes para la tarea
|
|
47
|
+
2. **Matchear skills con teammates** — Asignar skills especializados a cada agente
|
|
48
|
+
3. **Distribuir en el prompt de spawn** — Incluir skills relevantes al lanzar cada teammate
|
|
49
|
+
|
|
50
|
+
### Skills Prioritarios para Orchestrator
|
|
51
|
+
| Area | Skill Recomendado | Uso |
|
|
52
|
+
|------|-------------------|-----|
|
|
53
|
+
| Debugging paralelo | parallel-debugging | Coordinar multiples debuggers simultaneos |
|
|
54
|
+
| Task management | task-coordination-strategies | Dependencias, prioridades, conflict resolution |
|
|
55
|
+
| Team comms | team-communication-protocols | Patrones de comunicacion entre teammates |
|
|
56
|
+
| Architecture | architecture-designer | Decisiones de splitting y paralelizacion |
|
|
57
|
+
|
|
58
|
+
### Distribucion de Skills a Teammates
|
|
59
|
+
Al crear un team o lanzar agentes, recomendar skills por rol:
|
|
60
|
+
- **executor teammates** → react-native-best-practices, supabase-postgres, typescript-pro
|
|
61
|
+
- **qa teammates** → playwright-expert, test-master, debugging-wizard
|
|
62
|
+
- **reviewer teammates** → code-reviewer, security-reviewer, secure-code-guardian
|
|
63
|
+
- **analyst teammates** → architecture-designer, database-optimizer
|
|
64
|
+
|
|
65
|
+
### Tracking de Skills por Teammate
|
|
66
|
+
Durante la ejecucion paralela, registrar:
|
|
67
|
+
- Que skills uso cada teammate y en que tareas
|
|
68
|
+
- Si algun skill causo problemas o errores
|
|
69
|
+
- Efectividad del skill vs implementacion manual
|
|
70
|
+
|
|
71
|
+
### Post-Mortem de Skills
|
|
72
|
+
Al generar el reporte final de ejecucion paralela, incluir:
|
|
73
|
+
```
|
|
74
|
+
Skills distribuidos: [total]
|
|
75
|
+
Skills efectivos: [lista con resultado positivo]
|
|
76
|
+
Skills problematicos: [lista con issues encontrados]
|
|
77
|
+
```
|
|
78
|
+
</skills_usage>
|
|
79
|
+
|
|
41
80
|
<workflows>
|
|
42
81
|
## Workflows Disponibles
|
|
43
82
|
|
package/agents/elsabro-qa.md
CHANGED
|
@@ -34,6 +34,43 @@ Soy **Murat**, Master Test Architect. Me especializo en API testing, backend ser
|
|
|
34
34
|
7. **API tests are first-class citizens** - No solo UI
|
|
35
35
|
</principles>
|
|
36
36
|
|
|
37
|
+
<skills_usage>
|
|
38
|
+
## Uso de Skills en Testing y QA
|
|
39
|
+
|
|
40
|
+
### Deteccion Automatica de Skills
|
|
41
|
+
Cuando `availableSkills` esta presente en los inputs del contexto:
|
|
42
|
+
1. **Identificar framework de testing** — Jest, Vitest, Pytest, Playwright, etc.
|
|
43
|
+
2. **Buscar skills de testing** — Matchear con skills disponibles para ese framework
|
|
44
|
+
3. **Priorizar patrones del skill > patrones genericos** — Skills contienen best practices verificadas
|
|
45
|
+
|
|
46
|
+
### Skills Prioritarios para QA
|
|
47
|
+
| Area | Skill Recomendado | Uso |
|
|
48
|
+
|------|-------------------|-----|
|
|
49
|
+
| E2E Browser | playwright-expert | Selectores, page objects, fixtures, paralelismo |
|
|
50
|
+
| Test Design | test-master | Estrategias de coverage, test doubles, TDD patterns |
|
|
51
|
+
| Debugging Tests | debugging-wizard | Diagnostico de flaky tests, race conditions |
|
|
52
|
+
| Security Testing | secure-code-guardian | OWASP testing, injection tests, auth bypass checks |
|
|
53
|
+
|
|
54
|
+
### Consultar Skills para Patrones Especificos
|
|
55
|
+
Antes de escribir tests para un framework o libreria:
|
|
56
|
+
- Verificar si el skill tiene patrones de test recomendados
|
|
57
|
+
- Usar fixtures y helpers sugeridos por el skill
|
|
58
|
+
- Aplicar la estructura de archivos de test del skill
|
|
59
|
+
|
|
60
|
+
### Integracion con CI/CD Skills
|
|
61
|
+
Cuando se configura pipeline de CI:
|
|
62
|
+
- Consultar devops-engineer para configuracion de stages
|
|
63
|
+
- Aplicar quality gates recomendados por el skill
|
|
64
|
+
- Configurar test reporters y coverage thresholds segun best practices
|
|
65
|
+
|
|
66
|
+
### Reportar Skills Consultados
|
|
67
|
+
En cada test plan o suite generada, documentar:
|
|
68
|
+
```
|
|
69
|
+
Skills consultados: [skill-1], [skill-2]
|
|
70
|
+
Patrones de testing aplicados: [patron-especifico]
|
|
71
|
+
```
|
|
72
|
+
</skills_usage>
|
|
73
|
+
|
|
37
74
|
<workflows>
|
|
38
75
|
## Workflows Disponibles
|
|
39
76
|
|
|
@@ -29,6 +29,43 @@ El executor puede decir "completado", pero debes verificar:
|
|
|
29
29
|
4. ¿Hace lo que se pidió?
|
|
30
30
|
</critical_rule>
|
|
31
31
|
|
|
32
|
+
<skills_usage>
|
|
33
|
+
## Uso de Skills en Verificacion y Review
|
|
34
|
+
|
|
35
|
+
### Deteccion Automatica de Skills
|
|
36
|
+
Cuando `availableSkills` esta presente en los inputs del contexto:
|
|
37
|
+
1. **Identificar areas de review** — Calidad, seguridad, performance, tipos
|
|
38
|
+
2. **Matchear con skills de review** — Buscar skills especializados para cada area
|
|
39
|
+
3. **Priorizar skill de review especializado > checklist manual** — Skills profundizan mas
|
|
40
|
+
|
|
41
|
+
### Skills Prioritarios para Verifier
|
|
42
|
+
| Area de Review | Skill Recomendado | Uso |
|
|
43
|
+
|----------------|-------------------|-----|
|
|
44
|
+
| Code Quality | code-reviewer | Naming, DRY, SOLID, complejidad ciclomatica |
|
|
45
|
+
| Security | security-reviewer | OWASP top 10, secrets exposure, auth flaws |
|
|
46
|
+
| Security Deep | secure-code-guardian | Injection, XSS, CSRF, dependency vulnerabilities |
|
|
47
|
+
| Architecture | architecture-designer | Patrones, separation of concerns, coupling |
|
|
48
|
+
|
|
49
|
+
### Cross-Reference con Security Skills
|
|
50
|
+
Para verificacion de seguridad OWASP:
|
|
51
|
+
- Usar secure-code-guardian para analisis de vulnerabilidades
|
|
52
|
+
- Verificar contra checklist OWASP del skill
|
|
53
|
+
- Reportar findings con severidad clasificada por el skill
|
|
54
|
+
|
|
55
|
+
### Verificacion Profunda con Skills
|
|
56
|
+
En Etapa 2 (Code Quality), si hay skills disponibles:
|
|
57
|
+
- Ejecutar analisis del skill ADEMAS del checklist standard
|
|
58
|
+
- El skill puede detectar anti-patterns especificos del framework
|
|
59
|
+
- Combinar findings del skill con findings manuales en reporte unificado
|
|
60
|
+
|
|
61
|
+
### Reportar Skills Aplicados
|
|
62
|
+
En cada VERIFICATION.md generado, incluir:
|
|
63
|
+
```
|
|
64
|
+
Skills de review usados: [skill-1], [skill-2]
|
|
65
|
+
Findings adicionales por skills: [cantidad]
|
|
66
|
+
```
|
|
67
|
+
</skills_usage>
|
|
68
|
+
|
|
32
69
|
<two_stage_review>
|
|
33
70
|
## Revisión de 2 Etapas
|
|
34
71
|
|
package/bin/install.js
CHANGED
|
@@ -422,6 +422,77 @@ async function install() {
|
|
|
422
422
|
}
|
|
423
423
|
}
|
|
424
424
|
|
|
425
|
+
// Install review-gate hooks in settings.json
|
|
426
|
+
// These hooks enforce code review before git commit/push
|
|
427
|
+
if (!settings.hooks) {
|
|
428
|
+
settings.hooks = {};
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// PostToolUse: Set review-pending flag when code is modified
|
|
432
|
+
const reviewGateSetHook = {
|
|
433
|
+
type: 'command',
|
|
434
|
+
command: 'input=$(cat); file=$(echo "$input" | jq -r \'.tool_input.file_path // "unknown"\' 2>/dev/null); if [ -f "$CLAUDE_PROJECT_DIR/hooks/review-gate.sh" ]; then bash "$CLAUDE_PROJECT_DIR/hooks/review-gate.sh" set "$file" 2>/dev/null; fi; exit 0'
|
|
435
|
+
};
|
|
436
|
+
|
|
437
|
+
// PreToolUse: Block git commit/push if review is pending
|
|
438
|
+
const reviewGateCheckHook = {
|
|
439
|
+
type: 'command',
|
|
440
|
+
command: 'input=$(cat); cmd=$(echo "$input" | jq -r \'.tool_input.command // ""\' 2>/dev/null); if echo "$cmd" | grep -qE \'git commit|git push\'; then if [ -f "$CLAUDE_PROJECT_DIR/hooks/review-gate.sh" ]; then bash "$CLAUDE_PROJECT_DIR/hooks/review-gate.sh" check; exit $?; fi; fi; exit 0'
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
// Merge PostToolUse hooks: remove any stale review-gate entries, then add correct one
|
|
444
|
+
if (!settings.hooks.PostToolUse || !Array.isArray(settings.hooks.PostToolUse)) {
|
|
445
|
+
settings.hooks.PostToolUse = [];
|
|
446
|
+
}
|
|
447
|
+
// Remove existing review-gate entries (any matcher) to avoid duplicates
|
|
448
|
+
const prevPostCount = settings.hooks.PostToolUse.length;
|
|
449
|
+
settings.hooks.PostToolUse = settings.hooks.PostToolUse.filter(entry =>
|
|
450
|
+
!(entry.hooks && entry.hooks.some(h => h.command && h.command.includes('review-gate.sh')))
|
|
451
|
+
);
|
|
452
|
+
// Add canonical review-gate entry with correct matcher
|
|
453
|
+
settings.hooks.PostToolUse.push({
|
|
454
|
+
matcher: 'Write|Edit',
|
|
455
|
+
hooks: [reviewGateSetHook]
|
|
456
|
+
});
|
|
457
|
+
const verb1 = prevPostCount > settings.hooks.PostToolUse.length ? 'actualizado' : 'instalado';
|
|
458
|
+
console.log(` ${green}✓${reset} Review gate (PostToolUse) ${verb1}`);
|
|
459
|
+
|
|
460
|
+
// Merge PreToolUse hooks: remove any stale review-gate entries, then add correct one
|
|
461
|
+
if (!settings.hooks.PreToolUse || !Array.isArray(settings.hooks.PreToolUse)) {
|
|
462
|
+
settings.hooks.PreToolUse = [];
|
|
463
|
+
}
|
|
464
|
+
// Remove existing review-gate entries (any matcher) to avoid duplicates
|
|
465
|
+
const prevPreCount = settings.hooks.PreToolUse.length;
|
|
466
|
+
settings.hooks.PreToolUse = settings.hooks.PreToolUse.filter(entry =>
|
|
467
|
+
!(entry.hooks && entry.hooks.some(h => h.command && h.command.includes('review-gate.sh')))
|
|
468
|
+
);
|
|
469
|
+
// Add canonical review-gate entry with correct matcher and exit $? fix
|
|
470
|
+
settings.hooks.PreToolUse.push({
|
|
471
|
+
matcher: 'Bash',
|
|
472
|
+
hooks: [reviewGateCheckHook]
|
|
473
|
+
});
|
|
474
|
+
const verb2 = prevPreCount > settings.hooks.PreToolUse.length ? 'actualizado' : 'instalado';
|
|
475
|
+
console.log(` ${green}✓${reset} Review gate (PreToolUse) ${verb2}`);
|
|
476
|
+
|
|
477
|
+
// Install skill-gate hooks in settings.json
|
|
478
|
+
// These hooks enforce skill discovery before code changes (only when ELSABRO mode is active)
|
|
479
|
+
const skillGateCheckHook = {
|
|
480
|
+
type: 'command',
|
|
481
|
+
command: 'if [ -f "$CLAUDE_PROJECT_DIR/hooks/skill-gate.sh" ]; then bash "$CLAUDE_PROJECT_DIR/hooks/skill-gate.sh" check; exit $?; fi; exit 0'
|
|
482
|
+
};
|
|
483
|
+
|
|
484
|
+
// Merge PreToolUse hooks for skill-gate: remove stale entries, then add correct one
|
|
485
|
+
const prevSkillGateCount = settings.hooks.PreToolUse.length;
|
|
486
|
+
settings.hooks.PreToolUse = settings.hooks.PreToolUse.filter(entry =>
|
|
487
|
+
!(entry.hooks && entry.hooks.some(h => h.command && h.command.includes('skill-gate.sh')))
|
|
488
|
+
);
|
|
489
|
+
settings.hooks.PreToolUse.push({
|
|
490
|
+
matcher: 'Write|Edit',
|
|
491
|
+
hooks: [skillGateCheckHook]
|
|
492
|
+
});
|
|
493
|
+
const verb3 = prevSkillGateCount > settings.hooks.PreToolUse.length ? 'actualizado' : 'instalado';
|
|
494
|
+
console.log(` ${green}✓${reset} Skill gate (PreToolUse) ${verb3}`);
|
|
495
|
+
|
|
425
496
|
// Add version tracking
|
|
426
497
|
settings.elsabro = {
|
|
427
498
|
version: pkg.version,
|
|
@@ -10,6 +10,9 @@ allowed-tools:
|
|
|
10
10
|
- Grep
|
|
11
11
|
- WebSearch
|
|
12
12
|
- Task
|
|
13
|
+
- TeamCreate
|
|
14
|
+
- TeamDelete
|
|
15
|
+
- SendMessage
|
|
13
16
|
- AskUserQuestion
|
|
14
17
|
- mcp__plugin_context7_context7__*
|
|
15
18
|
argument-hint: "[descripción del problema]"
|
|
@@ -133,25 +136,51 @@ El debugger actualizará el archivo de sesión con:
|
|
|
133
136
|
- Fix implementado
|
|
134
137
|
- Verificación realizada
|
|
135
138
|
|
|
136
|
-
## Paso 5: Code Review (OBLIGATORIO)
|
|
139
|
+
## Paso 5: Code Review (OBLIGATORIO - Agent Teams LITE)
|
|
137
140
|
|
|
138
|
-
**REGLA:** Después de implementar cualquier fix, SIEMPRE ejecutar code review antes de reportar al usuario.
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
Task(pr-review-toolkit:code-reviewer):
|
|
142
|
-
Revisa los cambios del fix aplicado.
|
|
143
|
-
Busca bugs, code smells, seguridad.
|
|
144
|
-
Archivos modificados: [lista de archivos cambiados]
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Si el review encuentra issues, corregir ANTES de reportar al usuario.
|
|
141
|
+
**REGLA:** Después de implementar cualquier fix, SIEMPRE ejecutar code review con Agent Teams antes de reportar al usuario.
|
|
148
142
|
|
|
149
143
|
```javascript
|
|
144
|
+
// Crear team de review LITE (3 agentes esenciales)
|
|
145
|
+
TeamCreate({ team_name: "elsabro-review-lite", description: "Quick review - 3 agentes especializados" })
|
|
146
|
+
|
|
147
|
+
// Lanzar 3 teammates en paralelo (UN SOLO MENSAJE)
|
|
148
|
+
Task({
|
|
149
|
+
subagent_type: "pr-review-toolkit:code-reviewer",
|
|
150
|
+
team_name: "elsabro-review-lite",
|
|
151
|
+
name: "quality-reviewer",
|
|
152
|
+
model: "sonnet",
|
|
153
|
+
prompt: "Review code quality of the fix: bugs, code smells, naming, patterns. Focus on modified files. DO NOT ask questions."
|
|
154
|
+
})
|
|
155
|
+
Task({
|
|
156
|
+
subagent_type: "pr-review-toolkit:silent-failure-hunter",
|
|
157
|
+
team_name: "elsabro-review-lite",
|
|
158
|
+
name: "failure-hunter",
|
|
159
|
+
model: "sonnet",
|
|
160
|
+
prompt: "Review fix for silent failures, error handling gaps, dangerous fallbacks. Focus on modified files. DO NOT ask questions."
|
|
161
|
+
})
|
|
162
|
+
Task({
|
|
163
|
+
subagent_type: "pr-review-toolkit:pr-test-analyzer",
|
|
164
|
+
team_name: "elsabro-review-lite",
|
|
165
|
+
name: "test-analyzer",
|
|
166
|
+
model: "sonnet",
|
|
167
|
+
prompt: "Analyze test coverage for the fix: edge cases, regression tests needed. Focus on modified files. DO NOT ask questions."
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
// Consolidar hallazgos. Si issues criticos > 0: fix y re-review
|
|
171
|
+
// Shutdown team
|
|
172
|
+
for (const name of ["quality-reviewer", "failure-hunter", "test-analyzer"]) {
|
|
173
|
+
SendMessage({ type: "shutdown_request", recipient: name, content: "Review complete" })
|
|
174
|
+
}
|
|
175
|
+
TeamDelete()
|
|
176
|
+
|
|
150
177
|
// MARCAR: code review pasó (para code_review_gate en siguiente_paso)
|
|
151
178
|
state.current_flow.code_review_passed = true;
|
|
152
179
|
Write(".elsabro/state.json", JSON.stringify(state, null, 2));
|
|
153
180
|
```
|
|
154
181
|
|
|
182
|
+
Si alguno de los 3 reviewers encuentra issues criticos, corregir y re-review ANTES de reportar al usuario.
|
|
183
|
+
|
|
155
184
|
## Paso 6: Verificar con Usuario
|
|
156
185
|
|
|
157
186
|
Una vez el debugger reporta fix:
|
|
@@ -177,18 +206,27 @@ Para verificar:
|
|
|
177
206
|
```
|
|
178
207
|
¿Se implementó un fix (modo find_and_fix)?
|
|
179
208
|
│
|
|
180
|
-
├─ SÍ → ¿Se ejecutó code review (Paso 5)?
|
|
209
|
+
├─ SÍ → ¿Se ejecutó code review con Agent Teams LITE (Paso 5)?
|
|
181
210
|
│ │
|
|
182
211
|
│ ├─ NO → EJECUTAR AHORA:
|
|
183
|
-
│ │
|
|
184
|
-
│ │
|
|
185
|
-
│ │
|
|
212
|
+
│ │ TeamCreate("elsabro-review-lite")
|
|
213
|
+
│ │ + 3 teammates: quality-reviewer, failure-hunter, test-analyzer
|
|
214
|
+
│ │ Consolidar hallazgos
|
|
215
|
+
│ │ Si issues criticos > 0: fix y re-review
|
|
216
|
+
│ │ Solo cuando issues == 0: shutdown + TeamDelete + continuar
|
|
186
217
|
│ │
|
|
187
|
-
│ └─ SÍ, issues == 0 → Continuar
|
|
218
|
+
│ └─ SÍ, issues == 0, team deleted → Continuar
|
|
188
219
|
│
|
|
189
220
|
└─ NO (solo find_root_cause_only) → Continuar (no aplica)
|
|
190
221
|
```
|
|
191
222
|
|
|
223
|
+
**Agent Teams LITE — 3 Reviewers:**
|
|
224
|
+
| Teammate | Plugin | Foco |
|
|
225
|
+
|----------|--------|------|
|
|
226
|
+
| quality-reviewer | pr-review-toolkit:code-reviewer | bugs, patterns, naming |
|
|
227
|
+
| failure-hunter | pr-review-toolkit:silent-failure-hunter | error handling, fallbacks |
|
|
228
|
+
| test-analyzer | pr-review-toolkit:pr-test-analyzer | coverage, edge cases |
|
|
229
|
+
|
|
192
230
|
**VIOLACIÓN CRÍTICA**: Reportar fix sin code review = ABORTAR OPERACIÓN
|
|
193
231
|
</code_review_gate>
|
|
194
232
|
|