elsabro 2.1.0 → 2.3.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/agents/elsabro-orchestrator.md +113 -0
- package/commands/elsabro/add-phase.md +17 -0
- package/commands/elsabro/add-todo.md +111 -53
- package/commands/elsabro/audit-milestone.md +19 -0
- package/commands/elsabro/check-todos.md +210 -31
- package/commands/elsabro/complete-milestone.md +20 -1
- package/commands/elsabro/debug.md +19 -0
- package/commands/elsabro/discuss-phase.md +18 -1
- package/commands/elsabro/execute.md +511 -58
- package/commands/elsabro/insert-phase.md +18 -1
- package/commands/elsabro/list-phase-assumptions.md +17 -0
- package/commands/elsabro/new-milestone.md +19 -0
- package/commands/elsabro/new.md +19 -0
- package/commands/elsabro/pause-work.md +19 -0
- package/commands/elsabro/plan-milestone-gaps.md +20 -1
- package/commands/elsabro/plan.md +264 -36
- package/commands/elsabro/progress.md +203 -79
- package/commands/elsabro/quick.md +19 -0
- package/commands/elsabro/remove-phase.md +17 -0
- package/commands/elsabro/research-phase.md +18 -1
- package/commands/elsabro/resume-work.md +19 -0
- package/commands/elsabro/start.md +399 -98
- package/commands/elsabro/verify-work.md +138 -5
- package/hooks/confirm-destructive.sh +145 -0
- package/hooks/hooks-config.json +81 -0
- package/hooks/lint-check.sh +238 -0
- package/hooks/post-edit-test.sh +189 -0
- package/package.json +3 -2
- package/references/SYSTEM_INDEX.md +241 -0
- package/references/command-flow.md +352 -0
- package/references/enforcement-rules.md +331 -0
- package/references/error-contracts-tests.md +1171 -0
- package/references/error-contracts.md +3102 -0
- package/references/error-handling-instructions.md +26 -12
- package/references/parallel-worktrees.md +293 -0
- package/references/state-sync.md +381 -0
- package/references/task-dispatcher.md +388 -0
- package/references/tasks-integration.md +380 -0
- package/scripts/setup-parallel-worktrees.sh +319 -0
- package/skills/api-microservice.md +765 -0
- package/skills/api-setup.md +76 -3
- package/skills/auth-setup.md +46 -6
- package/skills/chrome-extension.md +584 -0
- package/skills/cicd-setup.md +1206 -0
- package/skills/cli-tool.md +884 -0
- package/skills/database-setup.md +41 -5
- package/skills/desktop-app.md +1351 -0
- package/skills/expo-app.md +35 -2
- package/skills/full-stack-app.md +543 -0
- package/skills/memory-update.md +207 -0
- package/skills/mobile-app.md +813 -0
- package/skills/nextjs-app.md +33 -2
- package/skills/payments-setup.md +76 -1
- package/skills/review.md +331 -0
- package/skills/saas-starter.md +639 -0
- package/skills/sentry-setup.md +41 -7
- package/skills/techdebt.md +289 -0
- package/skills/testing-setup.md +1218 -0
- package/skills/tutor.md +219 -0
- package/templates/.planning/notes/.gitkeep +0 -0
- package/templates/CLAUDE.md.template +48 -0
- package/templates/error-handling-config.json +79 -2
- package/templates/mistakes.md.template +52 -0
- package/templates/patterns.md.template +114 -0
package/skills/nextjs-app.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: nextjs-app
|
|
3
|
-
description: Skill para crear aplicaciones web con Next.js. Usa este skill cuando el usuario quiere crear una
|
|
3
|
+
description: Skill para crear aplicaciones web con Next.js. Usa este skill cuando el usuario quiere crear una pagina web, dashboard, o aplicacion web.
|
|
4
|
+
tags:
|
|
5
|
+
- web
|
|
6
|
+
- nextjs
|
|
7
|
+
- react
|
|
8
|
+
- typescript
|
|
9
|
+
- tailwind
|
|
10
|
+
- fullstack
|
|
11
|
+
difficulty: intermediate
|
|
12
|
+
estimated_time: 20-30 min
|
|
4
13
|
---
|
|
5
14
|
|
|
6
15
|
# Skill: Crear App Next.js
|
|
@@ -17,6 +26,28 @@ Usar cuando el usuario menciona:
|
|
|
17
26
|
- "blog"
|
|
18
27
|
</when_to_use>
|
|
19
28
|
|
|
29
|
+
<pre_requisites>
|
|
30
|
+
## Pre-requisitos
|
|
31
|
+
|
|
32
|
+
### Conocimientos
|
|
33
|
+
- JavaScript/TypeScript basico
|
|
34
|
+
- React fundamentals (components, hooks, state)
|
|
35
|
+
- HTML/CSS basico
|
|
36
|
+
- Terminal/CLI basico
|
|
37
|
+
|
|
38
|
+
### Software
|
|
39
|
+
- Node.js 20+ LTS
|
|
40
|
+
- npm, yarn, o pnpm
|
|
41
|
+
- Editor de codigo (VS Code recomendado)
|
|
42
|
+
- Navegador moderno (Chrome, Firefox, Safari, Edge)
|
|
43
|
+
|
|
44
|
+
### Extensiones recomendadas (VS Code)
|
|
45
|
+
- ES7+ React/Redux/React-Native snippets
|
|
46
|
+
- Tailwind CSS IntelliSense
|
|
47
|
+
- Prettier
|
|
48
|
+
- ESLint
|
|
49
|
+
</pre_requisites>
|
|
50
|
+
|
|
20
51
|
<before_starting>
|
|
21
52
|
## Investigación Obligatoria
|
|
22
53
|
|
|
@@ -43,7 +74,7 @@ Usar cuando el usuario menciona:
|
|
|
43
74
|
|
|
44
75
|
| Tecnología | Propósito | Verificar |
|
|
45
76
|
|------------|-----------|-----------|
|
|
46
|
-
| Next.js 15
|
|
77
|
+
| Next.js 15.x | Framework React | Context7 |
|
|
47
78
|
| TypeScript | Type safety | Context7 |
|
|
48
79
|
| Tailwind CSS 4 | Estilos | Context7 |
|
|
49
80
|
| App Router | Routing | Context7 |
|
package/skills/payments-setup.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: payments-setup
|
|
3
3
|
description: Skill para integrar pagos en cualquier proyecto. Usa este skill cuando el usuario quiere cobrar, vender, suscripciones, o Stripe.
|
|
4
|
+
tags:
|
|
5
|
+
- payments
|
|
6
|
+
- stripe
|
|
7
|
+
- billing
|
|
8
|
+
- subscriptions
|
|
9
|
+
- e-commerce
|
|
10
|
+
- checkout
|
|
11
|
+
difficulty: advanced
|
|
12
|
+
estimated_time: 45-60 min
|
|
4
13
|
---
|
|
5
14
|
|
|
6
15
|
# Skill: Setup de Pagos
|
|
@@ -17,6 +26,30 @@ Usar cuando el usuario menciona:
|
|
|
17
26
|
- "e-commerce"
|
|
18
27
|
</when_to_use>
|
|
19
28
|
|
|
29
|
+
<pre_requisites>
|
|
30
|
+
## Pre-requisitos
|
|
31
|
+
|
|
32
|
+
### Conocimientos
|
|
33
|
+
- JavaScript/TypeScript intermedio
|
|
34
|
+
- Conceptos de API REST
|
|
35
|
+
- Async/await y Promises
|
|
36
|
+
- Conceptos basicos de seguridad web (HTTPS, tokens)
|
|
37
|
+
|
|
38
|
+
### Software
|
|
39
|
+
- Node.js 20+ LTS
|
|
40
|
+
- Proyecto existente (Next.js, Hono, o similar)
|
|
41
|
+
- Stripe CLI (para desarrollo local)
|
|
42
|
+
|
|
43
|
+
### Cuentas requeridas
|
|
44
|
+
- Cuenta de Stripe (gratis para test mode)
|
|
45
|
+
- Stripe CLI instalado: `brew install stripe/stripe-cli/stripe`
|
|
46
|
+
|
|
47
|
+
### Antes de produccion
|
|
48
|
+
- Cuenta bancaria verificada en Stripe
|
|
49
|
+
- Documentacion de negocio completada
|
|
50
|
+
- Politicas de reembolso definidas
|
|
51
|
+
</pre_requisites>
|
|
52
|
+
|
|
20
53
|
<before_starting>
|
|
21
54
|
## Investigación Obligatoria
|
|
22
55
|
|
|
@@ -59,6 +92,48 @@ Usar cuando el usuario menciona:
|
|
|
59
92
|
| PayPal | Audiencia que lo prefiere |
|
|
60
93
|
</recommended_stack>
|
|
61
94
|
|
|
95
|
+
<project_structure>
|
|
96
|
+
## Estructura de Proyecto
|
|
97
|
+
|
|
98
|
+
### Archivos de Stripe en Next.js
|
|
99
|
+
```
|
|
100
|
+
src/
|
|
101
|
+
├── lib/
|
|
102
|
+
│ ├── stripe.ts # Cliente servidor (secret key)
|
|
103
|
+
│ └── stripe-client.ts # Cliente frontend (publishable key)
|
|
104
|
+
├── app/
|
|
105
|
+
│ ├── api/
|
|
106
|
+
│ │ ├── checkout/
|
|
107
|
+
│ │ │ └── route.ts # Crear sesion de checkout
|
|
108
|
+
│ │ ├── subscribe/
|
|
109
|
+
│ │ │ └── route.ts # Crear suscripcion
|
|
110
|
+
│ │ ├── portal/
|
|
111
|
+
│ │ │ └── route.ts # Customer portal
|
|
112
|
+
│ │ └── webhooks/
|
|
113
|
+
│ │ └── stripe/
|
|
114
|
+
│ │ └── route.ts # Webhook handler
|
|
115
|
+
│ ├── success/
|
|
116
|
+
│ │ └── page.tsx # Pagina post-pago exitoso
|
|
117
|
+
│ ├── cancel/
|
|
118
|
+
│ │ └── page.tsx # Pagina pago cancelado
|
|
119
|
+
│ └── pricing/
|
|
120
|
+
│ └── page.tsx # Pagina de precios
|
|
121
|
+
└── components/
|
|
122
|
+
├── BuyButton.tsx # Boton de compra
|
|
123
|
+
├── SubscribeButton.tsx # Boton de suscripcion
|
|
124
|
+
└── ManageSubscription.tsx # Acceso a portal
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Variables de entorno
|
|
128
|
+
```bash
|
|
129
|
+
# .env.local
|
|
130
|
+
STRIPE_SECRET_KEY=sk_test_xxx # Solo servidor
|
|
131
|
+
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx # Cliente
|
|
132
|
+
STRIPE_WEBHOOK_SECRET=whsec_xxx # Webhooks
|
|
133
|
+
NEXT_PUBLIC_URL=http://localhost:3000 # URL base
|
|
134
|
+
```
|
|
135
|
+
</project_structure>
|
|
136
|
+
|
|
62
137
|
<stripe_setup>
|
|
63
138
|
## Setup Stripe (Recomendado)
|
|
64
139
|
|
|
@@ -98,7 +173,7 @@ STRIPE_WEBHOOK_SECRET=whsec_xxx
|
|
|
98
173
|
import Stripe from 'stripe'
|
|
99
174
|
|
|
100
175
|
export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
|
|
101
|
-
apiVersion: '2024-
|
|
176
|
+
apiVersion: '2024-12-18.acacia', // API version 2026
|
|
102
177
|
typescript: true,
|
|
103
178
|
})
|
|
104
179
|
```
|
package/skills/review.md
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: Code review profesional estilo Staff Engineer - correctness, security, performance
|
|
4
|
+
trigger: /elsabro:review
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Grep
|
|
8
|
+
- Glob
|
|
9
|
+
- Bash
|
|
10
|
+
- Task
|
|
11
|
+
argument-hint: "[--staged|--pr|file] - scope del review"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# ELSABRO: Code Review
|
|
15
|
+
|
|
16
|
+
<objective>
|
|
17
|
+
Realizar code review profesional como un Staff Engineer antes de commits o PRs.
|
|
18
|
+
Detectar issues de correctness, security, performance, maintainability y testing.
|
|
19
|
+
Generar reporte estructurado compatible con flujo ELSABRO.
|
|
20
|
+
</objective>
|
|
21
|
+
|
|
22
|
+
<task_integration>
|
|
23
|
+
## Integracion con Tasks API
|
|
24
|
+
|
|
25
|
+
Al iniciar review:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
TaskCreate:
|
|
29
|
+
description: "Code review: [scope]"
|
|
30
|
+
status: in_progress
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Actualizar con issues encontrados por categoria.
|
|
34
|
+
Al finalizar, incluir veredicto y checklist.
|
|
35
|
+
</task_integration>
|
|
36
|
+
|
|
37
|
+
<triggers>
|
|
38
|
+
## Triggers
|
|
39
|
+
|
|
40
|
+
- `/elsabro:review` - Review de cambios actuales (staged + unstaged)
|
|
41
|
+
- `/elsabro:review --staged` - Solo cambios staged
|
|
42
|
+
- `/elsabro:review --pr` - Review completo estilo PR
|
|
43
|
+
- `/elsabro:review [file]` - Review de archivo especifico
|
|
44
|
+
- `/elsabro:review --save` - Guardar reporte en .planning/REVIEW.md
|
|
45
|
+
</triggers>
|
|
46
|
+
|
|
47
|
+
<checklist>
|
|
48
|
+
## Review Checklist
|
|
49
|
+
|
|
50
|
+
### 1. Correctness
|
|
51
|
+
- [ ] El codigo hace lo que deberia hacer?
|
|
52
|
+
- [ ] Maneja edge cases?
|
|
53
|
+
- [ ] Hay off-by-one errors?
|
|
54
|
+
- [ ] Las condiciones son correctas (< vs <=)?
|
|
55
|
+
- [ ] Null/undefined handling?
|
|
56
|
+
|
|
57
|
+
### 2. Security
|
|
58
|
+
- [ ] Hay inputs no sanitizados?
|
|
59
|
+
- [ ] Se exponen datos sensibles?
|
|
60
|
+
- [ ] SQL injection posible?
|
|
61
|
+
- [ ] XSS posible?
|
|
62
|
+
- [ ] Secrets hardcodeados?
|
|
63
|
+
- [ ] Validacion de permisos?
|
|
64
|
+
|
|
65
|
+
### 3. Performance
|
|
66
|
+
- [ ] Hay N+1 queries?
|
|
67
|
+
- [ ] Renders innecesarios en React?
|
|
68
|
+
- [ ] Loops dentro de loops evitables?
|
|
69
|
+
- [ ] Memory leaks (event listeners, subscriptions)?
|
|
70
|
+
- [ ] Operaciones bloqueantes?
|
|
71
|
+
|
|
72
|
+
### 4. Maintainability
|
|
73
|
+
- [ ] Codigo legible y auto-documentado?
|
|
74
|
+
- [ ] Nombres descriptivos?
|
|
75
|
+
- [ ] Funciones pequenas y enfocadas?
|
|
76
|
+
- [ ] DRY - no hay duplicacion?
|
|
77
|
+
- [ ] Principio de responsabilidad unica?
|
|
78
|
+
|
|
79
|
+
### 5. Testing
|
|
80
|
+
- [ ] Hay tests para el nuevo codigo?
|
|
81
|
+
- [ ] Los tests son significativos?
|
|
82
|
+
- [ ] Cubren edge cases?
|
|
83
|
+
- [ ] Mocks apropiados?
|
|
84
|
+
|
|
85
|
+
### 6. Project Conventions
|
|
86
|
+
- [ ] Sigue el estilo del proyecto?
|
|
87
|
+
- [ ] Respeta patterns de CLAUDE.md?
|
|
88
|
+
- [ ] No repite errores de mistakes.md?
|
|
89
|
+
</checklist>
|
|
90
|
+
|
|
91
|
+
<severity_levels>
|
|
92
|
+
## Niveles de Severidad
|
|
93
|
+
|
|
94
|
+
| Nivel | Emoji | Accion |
|
|
95
|
+
|-------|-------|--------|
|
|
96
|
+
| CRITICAL | [CRITICAL] | Must fix antes de merge |
|
|
97
|
+
| SUGGESTION | [SUGGESTION] | Should fix, no bloqueante |
|
|
98
|
+
| NITPICK | [NITPICK] | Optional, mejora menor |
|
|
99
|
+
| POSITIVE | [POSITIVE] | Lo que esta bien |
|
|
100
|
+
</severity_levels>
|
|
101
|
+
|
|
102
|
+
<output_format>
|
|
103
|
+
## Formato de Output
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# Code Review - [branch/file]
|
|
107
|
+
|
|
108
|
+
> Fecha: {{DATE}}
|
|
109
|
+
> Reviewer: ELSABRO
|
|
110
|
+
> Scope: {{SCOPE}}
|
|
111
|
+
|
|
112
|
+
## Summary
|
|
113
|
+
|
|
114
|
+
| Metrica | Valor |
|
|
115
|
+
|---------|-------|
|
|
116
|
+
| Files changed | 5 |
|
|
117
|
+
| Lines added | +127 |
|
|
118
|
+
| Lines removed | -45 |
|
|
119
|
+
| Risk level | MEDIUM |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## [CRITICAL] Issues Criticos (must fix)
|
|
124
|
+
|
|
125
|
+
### Missing null check in user handler
|
|
126
|
+
|
|
127
|
+
**File**: `src/api/users.ts:45`
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// Current
|
|
131
|
+
const name = user.profile.name
|
|
132
|
+
|
|
133
|
+
// Suggested
|
|
134
|
+
const name = user?.profile?.name ?? 'Unknown'
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Why**: Will crash if user.profile is undefined
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## [SUGGESTION] Sugerencias (should fix)
|
|
142
|
+
|
|
143
|
+
### Consider using early return
|
|
144
|
+
|
|
145
|
+
**File**: `src/utils/validate.ts:23`
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// Current
|
|
149
|
+
if (isValid) {
|
|
150
|
+
// 30 lines of code
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Suggested
|
|
154
|
+
if (!isValid) return null
|
|
155
|
+
// 30 lines of code (less nesting)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Why**: Reduce nesting, improve readability
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## [NITPICK] Nitpicks (optional)
|
|
163
|
+
|
|
164
|
+
### Variable naming
|
|
165
|
+
**File**: `src/api/users.ts:12`
|
|
166
|
+
|
|
167
|
+
`data` -> `userData` for clarity
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## [POSITIVE] Positives
|
|
172
|
+
|
|
173
|
+
- Good error handling in API calls
|
|
174
|
+
- Follows existing patterns
|
|
175
|
+
- Tests included
|
|
176
|
+
- Clean separation of concerns
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Checklist Summary
|
|
181
|
+
|
|
182
|
+
- [x] Correctness
|
|
183
|
+
- [x] Security
|
|
184
|
+
- [ ] Performance - N+1 query potential in line 67
|
|
185
|
+
- [x] Maintainability
|
|
186
|
+
- [ ] Testing - missing edge case test
|
|
187
|
+
- [x] Conventions
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Verdict
|
|
192
|
+
|
|
193
|
+
**MEDIUM RISK** - Approve with suggestions
|
|
194
|
+
|
|
195
|
+
Fix the critical null check before merging.
|
|
196
|
+
Consider addressing the performance issue in a follow-up.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Action Items
|
|
201
|
+
|
|
202
|
+
1. [ ] Fix null check in users.ts:45
|
|
203
|
+
2. [ ] Consider early return pattern in validate.ts
|
|
204
|
+
3. [ ] Add test for empty user profile case
|
|
205
|
+
```
|
|
206
|
+
</output_format>
|
|
207
|
+
|
|
208
|
+
<interactive_mode>
|
|
209
|
+
## Modo Interactivo
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Usuario: /elsabro:review
|
|
213
|
+
|
|
214
|
+
Claude: "Analizando cambios...
|
|
215
|
+
|
|
216
|
+
Encontre 3 archivos modificados:
|
|
217
|
+
1. src/api/users.ts (+45, -12) - Risk: HIGH
|
|
218
|
+
2. src/components/UserCard.tsx (+23, -5) - Risk: LOW
|
|
219
|
+
3. src/hooks/useUser.ts (+18, -0) - Risk: MEDIUM
|
|
220
|
+
|
|
221
|
+
Opciones:
|
|
222
|
+
1. Review completo (todos los archivos)
|
|
223
|
+
2. Solo el mas riesgoso (users.ts)
|
|
224
|
+
3. Elegir archivos especificos
|
|
225
|
+
|
|
226
|
+
Que prefieres?"
|
|
227
|
+
```
|
|
228
|
+
</interactive_mode>
|
|
229
|
+
|
|
230
|
+
<challenge_mode>
|
|
231
|
+
## Challenge Mode
|
|
232
|
+
|
|
233
|
+
Cuando el usuario dice "Grill me" o "Challenge me":
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
Claude: "Ok, modo dificil activado.
|
|
237
|
+
|
|
238
|
+
Voy a hacer preguntas sobre tus cambios:
|
|
239
|
+
|
|
240
|
+
1. En users.ts:45, por que elegiste ese approach?
|
|
241
|
+
2. Que pasa si el API devuelve null aqui?
|
|
242
|
+
3. Como escala esto con 10,000 usuarios?
|
|
243
|
+
4. Probaste el caso de error?
|
|
244
|
+
5. Por que no usaste [alternativa]?
|
|
245
|
+
|
|
246
|
+
No apruebo hasta que respondas satisfactoriamente."
|
|
247
|
+
```
|
|
248
|
+
</challenge_mode>
|
|
249
|
+
|
|
250
|
+
<diff_analysis>
|
|
251
|
+
## Analisis de Diff
|
|
252
|
+
|
|
253
|
+
Mostrar before/after cuando sea util:
|
|
254
|
+
|
|
255
|
+
```diff
|
|
256
|
+
- const data = await fetch(url)
|
|
257
|
+
+ const data = await fetch(url, {
|
|
258
|
+
+ headers: { 'Content-Type': 'application/json' },
|
|
259
|
+
+ timeout: 5000
|
|
260
|
+
+ })
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Evaluar:
|
|
264
|
+
- Es el cambio necesario?
|
|
265
|
+
- Introduce nuevos riesgos?
|
|
266
|
+
- Rompe compatibilidad?
|
|
267
|
+
</diff_analysis>
|
|
268
|
+
|
|
269
|
+
<save_report>
|
|
270
|
+
## Guardar Reporte
|
|
271
|
+
|
|
272
|
+
Con flag `--save`, guardar en `.planning/REVIEW.md`:
|
|
273
|
+
|
|
274
|
+
```markdown
|
|
275
|
+
# Code Review History
|
|
276
|
+
|
|
277
|
+
## Review: {{DATE}} - {{BRANCH}}
|
|
278
|
+
|
|
279
|
+
[Contenido del review]
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Review: {{PREV_DATE}} - {{PREV_BRANCH}}
|
|
284
|
+
|
|
285
|
+
[Review anterior]
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Mantener historial de los ultimos 10 reviews.
|
|
289
|
+
</save_report>
|
|
290
|
+
|
|
291
|
+
<integration_memory>
|
|
292
|
+
## Integracion con Memoria ELSABRO
|
|
293
|
+
|
|
294
|
+
Despues del review:
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
"Encontre patterns problematicos que se repiten:
|
|
298
|
+
- Falta de null checks (3 ocurrencias)
|
|
299
|
+
- Console.logs en codigo (2 ocurrencias)
|
|
300
|
+
|
|
301
|
+
Quieres que agregue estos a .planning/mistakes.md
|
|
302
|
+
para evitarlos en el futuro?"
|
|
303
|
+
```
|
|
304
|
+
</integration_memory>
|
|
305
|
+
|
|
306
|
+
<pre_commit_hook>
|
|
307
|
+
## Pre-commit Hook
|
|
308
|
+
|
|
309
|
+
Sugerir configurar hook para review automatico:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
# .git/hooks/pre-commit
|
|
313
|
+
#!/bin/bash
|
|
314
|
+
|
|
315
|
+
# Run ELSABRO review on staged files
|
|
316
|
+
claude --skill review --staged --fail-on-critical
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Esto previene commits con issues criticos.
|
|
320
|
+
</pre_commit_hook>
|
|
321
|
+
|
|
322
|
+
<verdicts>
|
|
323
|
+
## Posibles Veredictos
|
|
324
|
+
|
|
325
|
+
| Veredicto | Cuando |
|
|
326
|
+
|-----------|--------|
|
|
327
|
+
| APPROVE | Sin issues criticos, codigo solido |
|
|
328
|
+
| APPROVE WITH SUGGESTIONS | Issues menores, puede mergearse |
|
|
329
|
+
| REQUEST CHANGES | Issues criticos que deben resolverse |
|
|
330
|
+
| NEEDS DISCUSSION | Decisiones arquitectonicas pendientes |
|
|
331
|
+
</verdicts>
|