specleap-framework 2.0.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/backend.md +419 -0
- package/.agents/frontend.md +577 -0
- package/.agents/producto.md +516 -0
- package/.commands/adoptar.md +323 -0
- package/.commands/ayuda.md +142 -0
- package/.commands/crear-tickets.md +55 -0
- package/.commands/documentar.md +285 -0
- package/.commands/explicar.md +234 -0
- package/.commands/implementar.md +383 -0
- package/.commands/inicio.md +824 -0
- package/.commands/nuevo/README.md +292 -0
- package/.commands/nuevo/questions-base.yaml +320 -0
- package/.commands/nuevo/responses-example.yaml +53 -0
- package/.commands/planificar.md +253 -0
- package/.commands/refinar.md +306 -0
- package/LICENSE +21 -0
- package/README.md +603 -0
- package/SETUP.md +351 -0
- package/install.sh +152 -0
- package/package.json +60 -0
- package/proyectos/_template/.gitkeep +1 -0
- package/proyectos/_template/ANEXOS.md +21 -0
- package/proyectos/_template/CONTRATO.md +26 -0
- package/proyectos/_template/context/.gitkeep +1 -0
- package/rules/development-rules.md +113 -0
- package/rules/environment-protection.md +97 -0
- package/rules/git-workflow.md +142 -0
- package/rules/session-protocol.md +121 -0
- package/scripts/README.md +129 -0
- package/scripts/analyze-project.sh +826 -0
- package/scripts/create-asana-tasks.sh +133 -0
- package/scripts/detect-project-type.sh +141 -0
- package/scripts/estimate-effort.sh +290 -0
- package/scripts/generate-asana-structure.sh +262 -0
- package/scripts/generate-contract.sh +360 -0
- package/scripts/generate-contrato.sh +555 -0
- package/scripts/install-git-hooks.sh +141 -0
- package/scripts/install-skills.sh +130 -0
- package/scripts/lib/asana-utils.sh +191 -0
- package/scripts/lib/jira-project-utils.sh +222 -0
- package/scripts/lib/questions.json +831 -0
- package/scripts/lib/render-contrato.py +195 -0
- package/scripts/lib/validate.sh +325 -0
- package/scripts/parse-contrato.sh +190 -0
- package/scripts/setup-mcp.sh +654 -0
- package/scripts/test-cuestionario.sh +428 -0
- package/setup.sh +458 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Comando: documentar
|
|
2
|
+
|
|
3
|
+
**Sintaxis:** `documentar` o `documentar [archivo]`
|
|
4
|
+
|
|
5
|
+
**Objetivo:** Actualizar documentación técnica (context/) cuando hay cambios importantes.
|
|
6
|
+
|
|
7
|
+
**Motor:** Usa Git para analizar cambios + actualización manual guiada.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Flujo
|
|
12
|
+
|
|
13
|
+
### 1. Identificar Qué Documentar
|
|
14
|
+
|
|
15
|
+
**Opción A: Archivo específico**
|
|
16
|
+
```
|
|
17
|
+
documentar context/architecture.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Opción B: Análisis automático**
|
|
21
|
+
```
|
|
22
|
+
documentar
|
|
23
|
+
```
|
|
24
|
+
→ Analiza cambios recientes y determina qué actualizar
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### 2. Analizar Cambios Recientes (Git)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cd [directorio-proyecto]
|
|
32
|
+
|
|
33
|
+
# Ver commits recientes
|
|
34
|
+
git log --oneline -20
|
|
35
|
+
|
|
36
|
+
# Ver archivos modificados
|
|
37
|
+
git diff HEAD~10..HEAD --name-only
|
|
38
|
+
|
|
39
|
+
# Ver cambios en dependencias
|
|
40
|
+
git diff HEAD~10..HEAD package.json composer.json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Identificar:**
|
|
44
|
+
- ✅ Nuevas features implementadas
|
|
45
|
+
- ✅ Cambios arquitectónicos
|
|
46
|
+
- ✅ Nuevas dependencias
|
|
47
|
+
- ✅ Decisiones técnicas tomadas
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### 3. Leer Documentación Actual
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cd proyectos/[proyecto]/context/
|
|
55
|
+
|
|
56
|
+
# Leer todos los archivos
|
|
57
|
+
cat brief.md
|
|
58
|
+
cat architecture.md
|
|
59
|
+
cat tech-stack.md
|
|
60
|
+
cat conventions.md
|
|
61
|
+
cat decisions.md
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 4. Determinar Actualizaciones Necesarias
|
|
67
|
+
|
|
68
|
+
**Checklist:**
|
|
69
|
+
|
|
70
|
+
**brief.md:**
|
|
71
|
+
- [ ] Cambió el propósito del proyecto
|
|
72
|
+
- [ ] Hay nuevos módulos completados
|
|
73
|
+
- [ ] Cambió el estado (% progreso)
|
|
74
|
+
|
|
75
|
+
**architecture.md:**
|
|
76
|
+
- [ ] Nueva capa/componente agregado
|
|
77
|
+
- [ ] Cambió estructura de directorios
|
|
78
|
+
- [ ] Modificó patrón arquitectónico
|
|
79
|
+
- [ ] Nuevas dependencias entre módulos
|
|
80
|
+
|
|
81
|
+
**tech-stack.md:**
|
|
82
|
+
- [ ] Nueva dependencia (npm/composer)
|
|
83
|
+
- [ ] Actualización de versión importante
|
|
84
|
+
- [ ] Cambió herramienta (ej: Webpack → Vite)
|
|
85
|
+
- [ ] Nuevo servicio externo
|
|
86
|
+
|
|
87
|
+
**conventions.md:**
|
|
88
|
+
- [ ] Nuevo patrón de código establecido
|
|
89
|
+
- [ ] Cambió naming convention
|
|
90
|
+
- [ ] Nueva regla de testing
|
|
91
|
+
|
|
92
|
+
**decisions.md:**
|
|
93
|
+
- [ ] Decisión técnica importante tomada
|
|
94
|
+
- [ ] Alternativas evaluadas
|
|
95
|
+
- [ ] Decisión pendiente resuelta
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### 5. Actualizar Archivos
|
|
100
|
+
|
|
101
|
+
Para cada archivo que necesita actualización:
|
|
102
|
+
|
|
103
|
+
**A) Mostrar contenido actual:**
|
|
104
|
+
```markdown
|
|
105
|
+
📄 **Contenido actual de [archivo]:**
|
|
106
|
+
|
|
107
|
+
[Mostrar primeras 30 líneas]
|
|
108
|
+
|
|
109
|
+
...
|
|
110
|
+
|
|
111
|
+
¿Qué quieres actualizar?
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**B) Esperar input del usuario:**
|
|
115
|
+
|
|
116
|
+
Ejemplos:
|
|
117
|
+
- "Agrega que ahora usamos Redis para cache"
|
|
118
|
+
- "Actualiza la versión de Laravel a 11.x"
|
|
119
|
+
- "Agrega decisión sobre usar PostgreSQL en lugar de MySQL"
|
|
120
|
+
|
|
121
|
+
**C) Aplicar cambios:**
|
|
122
|
+
|
|
123
|
+
Editar el archivo con los cambios especificados.
|
|
124
|
+
|
|
125
|
+
**D) Mostrar diff:**
|
|
126
|
+
```bash
|
|
127
|
+
git diff context/[archivo]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
**Cambios en [archivo]:**
|
|
132
|
+
|
|
133
|
+
[Mostrar diff con colores]
|
|
134
|
+
|
|
135
|
+
¿Aprobar cambios? (s/n)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### 6. Confirmar y Commitear
|
|
141
|
+
|
|
142
|
+
Si el usuario aprueba:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
git add context/*.md
|
|
146
|
+
git commit -m "docs: update context/ documentation
|
|
147
|
+
|
|
148
|
+
Updated:
|
|
149
|
+
- [archivo1]: [cambio1]
|
|
150
|
+
- [archivo2]: [cambio2]
|
|
151
|
+
|
|
152
|
+
Refs: [commits que motivaron la actualización]"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
✅ **Documentación actualizada**
|
|
157
|
+
|
|
158
|
+
**Archivos modificados:**
|
|
159
|
+
- context/architecture.md
|
|
160
|
+
- context/tech-stack.md
|
|
161
|
+
- context/decisions.md
|
|
162
|
+
|
|
163
|
+
**Commit:** docs: update context/ documentation
|
|
164
|
+
|
|
165
|
+
¿Pushear cambios? (s/n)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Ejemplo Completo
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
Usuario: "documentar"
|
|
174
|
+
|
|
175
|
+
IA:
|
|
176
|
+
🔍 Analizando cambios recientes...
|
|
177
|
+
|
|
178
|
+
git log --oneline -20:
|
|
179
|
+
a1b2c3d feat: implement Redis cache
|
|
180
|
+
d4e5f6g feat: upgrade Laravel to 11.x
|
|
181
|
+
g7h8i9j refactor: move to PostgreSQL
|
|
182
|
+
|
|
183
|
+
📋 **Cambios detectados:**
|
|
184
|
+
1. Redis implementado para cache (commit a1b2c3d)
|
|
185
|
+
2. Laravel actualizado a 11.x (commit d4e5f6g)
|
|
186
|
+
3. Migración a PostgreSQL (commit g7h8i9j)
|
|
187
|
+
|
|
188
|
+
**Archivos a actualizar:**
|
|
189
|
+
- ✅ context/tech-stack.md (Redis + Laravel 11.x + PostgreSQL)
|
|
190
|
+
- ✅ context/architecture.md (nueva capa de cache)
|
|
191
|
+
- ✅ context/decisions.md (decisión PostgreSQL vs MySQL)
|
|
192
|
+
|
|
193
|
+
¿Actualizar estos archivos? (s/n)
|
|
194
|
+
|
|
195
|
+
Usuario: "s"
|
|
196
|
+
|
|
197
|
+
IA:
|
|
198
|
+
📝 Actualizando context/tech-stack.md...
|
|
199
|
+
|
|
200
|
+
**Agregando:**
|
|
201
|
+
- Laravel: 10.x → 11.x
|
|
202
|
+
- Cache: Redis 7.x (nuevo)
|
|
203
|
+
- Database: MySQL 8.0 → PostgreSQL 16.x
|
|
204
|
+
|
|
205
|
+
✅ tech-stack.md actualizado.
|
|
206
|
+
|
|
207
|
+
📝 Actualizando context/decisions.md...
|
|
208
|
+
|
|
209
|
+
**Agregando decisión:**
|
|
210
|
+
## 2026-02-26: Migración a PostgreSQL
|
|
211
|
+
|
|
212
|
+
**Contexto:** MySQL presentaba limitaciones con JSON queries.
|
|
213
|
+
|
|
214
|
+
**Alternativas evaluadas:**
|
|
215
|
+
1. MySQL 8.0 con JSON
|
|
216
|
+
2. PostgreSQL 16
|
|
217
|
+
3. MongoDB
|
|
218
|
+
|
|
219
|
+
**Decisión:** PostgreSQL 16
|
|
220
|
+
|
|
221
|
+
**Razones:**
|
|
222
|
+
- JSON nativo + mejor performance
|
|
223
|
+
- JSONB indexable
|
|
224
|
+
- Full-text search integrado
|
|
225
|
+
- Compatibilidad Laravel excelente
|
|
226
|
+
|
|
227
|
+
✅ decisions.md actualizado.
|
|
228
|
+
|
|
229
|
+
📝 Actualizando context/architecture.md...
|
|
230
|
+
|
|
231
|
+
**Agregando capa:**
|
|
232
|
+
## Cache Layer (Redis)
|
|
233
|
+
|
|
234
|
+
Implementado para reducir carga en base de datos.
|
|
235
|
+
|
|
236
|
+
**Cache keys:**
|
|
237
|
+
- `user:{id}` — Datos de usuario (TTL: 1h)
|
|
238
|
+
- `product:{id}` — Datos de producto (TTL: 30min)
|
|
239
|
+
- `categories` — Árbol de categorías (TTL: 24h)
|
|
240
|
+
|
|
241
|
+
✅ architecture.md actualizado.
|
|
242
|
+
|
|
243
|
+
💾 **Commiteando cambios...**
|
|
244
|
+
|
|
245
|
+
git commit -m "docs: update context/ - Redis cache + Laravel 11.x + PostgreSQL"
|
|
246
|
+
|
|
247
|
+
✅ Commit realizado.
|
|
248
|
+
|
|
249
|
+
¿Pushear? (s/n)
|
|
250
|
+
|
|
251
|
+
Usuario: "s"
|
|
252
|
+
|
|
253
|
+
git push origin main
|
|
254
|
+
|
|
255
|
+
✅ Documentación actualizada y pusheada.
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Comandos/Herramientas Usados
|
|
261
|
+
|
|
262
|
+
| Comando | Propósito |
|
|
263
|
+
|---------|-----------|
|
|
264
|
+
| `git log --oneline -20` | Ver commits recientes |
|
|
265
|
+
| `git diff HEAD~10..HEAD --name-only` | Archivos modificados |
|
|
266
|
+
| `git diff HEAD~10..HEAD package.json` | Cambios en dependencias |
|
|
267
|
+
| `git diff context/[archivo]` | Preview de cambios |
|
|
268
|
+
| `git add context/*.md` | Preparar commit |
|
|
269
|
+
| `git commit -m "..."` | Commitear |
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Reglas
|
|
274
|
+
|
|
275
|
+
1. **Siempre usar Git** para detectar cambios reales
|
|
276
|
+
2. **Mostrar diff** antes de commitear
|
|
277
|
+
3. **Pedir aprobación** al usuario
|
|
278
|
+
4. **Commits atómicos** (documentación separada de código)
|
|
279
|
+
5. **Referencias** a commits que motivaron la actualización
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Próximo Comando
|
|
284
|
+
|
|
285
|
+
- `explicar [concepto]` — Explicar código/arquitectura existente
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Comando: explicar
|
|
2
|
+
|
|
3
|
+
**Sintaxis:**
|
|
4
|
+
- `explicar [concepto]`
|
|
5
|
+
- `explicar @archivo.php`
|
|
6
|
+
- `explicar esta función`
|
|
7
|
+
|
|
8
|
+
**Objetivo:** Explicar código, arquitectura o decisiones técnicas de forma clara.
|
|
9
|
+
|
|
10
|
+
**Motor:** Usa lectura directa de archivos + análisis contextual.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Flujo
|
|
15
|
+
|
|
16
|
+
### 1. Identificar Qué Explicar
|
|
17
|
+
|
|
18
|
+
Analiza el argumento:
|
|
19
|
+
|
|
20
|
+
- **Concepto general** — "cómo funciona el carrito"
|
|
21
|
+
- **Archivo específico** — "@ProductController.php"
|
|
22
|
+
- **Función/método** — "esta función" (contexto previo)
|
|
23
|
+
- **Arquitectura** — "por qué usamos services"
|
|
24
|
+
- **Decisión técnica** — "por qué PostgreSQL"
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### 2. Leer Contexto Relevante
|
|
29
|
+
|
|
30
|
+
**Para Conceptos/Arquitectura:**
|
|
31
|
+
```bash
|
|
32
|
+
cat proyectos/[proyecto]/CONTRATO.md
|
|
33
|
+
cat proyectos/[proyecto]/context/architecture.md
|
|
34
|
+
cat proyectos/[proyecto]/context/tech-stack.md
|
|
35
|
+
cat proyectos/[proyecto]/context/decisions.md
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Para Código Específico:**
|
|
39
|
+
```bash
|
|
40
|
+
# Encontrar archivo
|
|
41
|
+
find [directorio-proyecto] -name "[archivo]"
|
|
42
|
+
|
|
43
|
+
# Leer archivo
|
|
44
|
+
cat [ruta-archivo]
|
|
45
|
+
|
|
46
|
+
# Ver imports/dependencias
|
|
47
|
+
grep -E "^use |^import " [ruta-archivo]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Para Decisiones Técnicas:**
|
|
51
|
+
```bash
|
|
52
|
+
# Buscar en decisions.md
|
|
53
|
+
grep -A 10 "[tecnología/decisión]" context/decisions.md
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### 3. Generar Explicación
|
|
59
|
+
|
|
60
|
+
**Estructura:**
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
# Explicación: [Concepto/Archivo/Función]
|
|
64
|
+
|
|
65
|
+
## Resumen
|
|
66
|
+
[1-2 párrafos: qué es y para qué sirve]
|
|
67
|
+
|
|
68
|
+
## ¿Cómo Funciona?
|
|
69
|
+
[Explicación paso a paso]
|
|
70
|
+
|
|
71
|
+
## Código Relevante
|
|
72
|
+
[Fragmentos de código con explicación]
|
|
73
|
+
|
|
74
|
+
## Relaciones
|
|
75
|
+
[Qué otros componentes están relacionados]
|
|
76
|
+
|
|
77
|
+
## Decisiones Técnicas
|
|
78
|
+
[Por qué se hizo de esta manera]
|
|
79
|
+
|
|
80
|
+
## Referencias
|
|
81
|
+
[Enlaces a docs, CONTRATO.md, context/]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### 4. Ejemplo Completo
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Usuario: "explicar cómo funciona el sistema de autenticación"
|
|
90
|
+
|
|
91
|
+
IA:
|
|
92
|
+
🔍 Leyendo contexto del proyecto...
|
|
93
|
+
|
|
94
|
+
cat proyectos/app-tienda/CONTRATO.md:
|
|
95
|
+
Sistema de Usuarios → Autenticación: Laravel Sanctum (SPA)
|
|
96
|
+
|
|
97
|
+
cat proyectos/app-tienda/context/tech-stack.md:
|
|
98
|
+
Autenticación: Laravel Sanctum 4.x
|
|
99
|
+
Frontend: React 18 con axios
|
|
100
|
+
|
|
101
|
+
cat proyectos/app-tienda/context/architecture.md:
|
|
102
|
+
API stateless, tokens en localStorage
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Explicación: Sistema de Autenticación
|
|
107
|
+
|
|
108
|
+
## Resumen
|
|
109
|
+
|
|
110
|
+
El proyecto usa **Laravel Sanctum** para autenticación SPA (Single Page Application).
|
|
111
|
+
|
|
112
|
+
Es un sistema **stateless** basado en tokens: el frontend (React) envía credenciales al backend (Laravel), recibe un token, y lo incluye en cada request posterior.
|
|
113
|
+
|
|
114
|
+
## ¿Cómo Funciona?
|
|
115
|
+
|
|
116
|
+
### 1. Login (Frontend → Backend)
|
|
117
|
+
|
|
118
|
+
Usuario ingresa email + password:
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
// LoginForm.tsx
|
|
122
|
+
const response = await axios.post('/api/login', {
|
|
123
|
+
email: 'user@example.com',
|
|
124
|
+
password: 'secreto123'
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const token = response.data.token;
|
|
128
|
+
localStorage.setItem('auth_token', token);
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 2. Backend Valida Credenciales
|
|
132
|
+
|
|
133
|
+
```php
|
|
134
|
+
// AuthController.php
|
|
135
|
+
public function login(Request $request)
|
|
136
|
+
{
|
|
137
|
+
$credentials = $request->validate([
|
|
138
|
+
'email' => 'required|email',
|
|
139
|
+
'password' => 'required',
|
|
140
|
+
]);
|
|
141
|
+
|
|
142
|
+
if (!Auth::attempt($credentials)) {
|
|
143
|
+
return response()->json(['error' => 'Invalid credentials'], 401);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
$user = Auth::user();
|
|
147
|
+
$token = $user->createToken('auth_token')->plainTextToken;
|
|
148
|
+
|
|
149
|
+
return response()->json(['token' => $token]);
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 3. Requests Autenticados
|
|
154
|
+
|
|
155
|
+
Frontend incluye el token en cada request:
|
|
156
|
+
|
|
157
|
+
```javascript
|
|
158
|
+
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
159
|
+
|
|
160
|
+
// Ahora todas las requests llevan el token
|
|
161
|
+
const products = await axios.get('/api/products');
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 4. Backend Verifica Token
|
|
165
|
+
|
|
166
|
+
Laravel Sanctum valida automáticamente el token:
|
|
167
|
+
|
|
168
|
+
```php
|
|
169
|
+
// routes/api.php
|
|
170
|
+
Route::middleware('auth:sanctum')->group(function () {
|
|
171
|
+
Route::get('/products', [ProductController::class, 'index']);
|
|
172
|
+
Route::post('/products', [ProductController::class, 'store']);
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Relaciones
|
|
177
|
+
|
|
178
|
+
- **Frontend:** LoginForm.tsx, ProtectedRoute.tsx, axiosConfig.js
|
|
179
|
+
- **Backend:** AuthController.php, User model, Sanctum middleware
|
|
180
|
+
- **Base de Datos:** personal_access_tokens table (guarda tokens)
|
|
181
|
+
|
|
182
|
+
## Decisiones Técnicas
|
|
183
|
+
|
|
184
|
+
**¿Por qué Sanctum y no JWT/Passport?**
|
|
185
|
+
|
|
186
|
+
Referencia: context/decisions.md línea 45
|
|
187
|
+
|
|
188
|
+
**Decisión:** Laravel Sanctum
|
|
189
|
+
|
|
190
|
+
**Razones:**
|
|
191
|
+
1. Más simple que Passport
|
|
192
|
+
2. Integrado nativamente en Laravel
|
|
193
|
+
3. Perfecto para SPAs
|
|
194
|
+
4. No requiere OAuth server
|
|
195
|
+
|
|
196
|
+
**Alternativas evaluadas:**
|
|
197
|
+
- JWT (tymon/jwt-auth) — Más complejo
|
|
198
|
+
- Laravel Passport — Overkill para SPA simple
|
|
199
|
+
|
|
200
|
+
## Referencias
|
|
201
|
+
|
|
202
|
+
- CONTRATO.md: "Sistema de Usuarios" sección
|
|
203
|
+
- context/tech-stack.md: Laravel Sanctum 4.x
|
|
204
|
+
- context/decisions.md: Línea 45-60
|
|
205
|
+
- Docs oficiales: https://laravel.com/docs/11.x/sanctum
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Comandos/Herramientas Usados
|
|
211
|
+
|
|
212
|
+
| Comando | Propósito |
|
|
213
|
+
|---------|-----------|
|
|
214
|
+
| `cat proyectos/[proyecto]/CONTRATO.md` | Leer contrato |
|
|
215
|
+
| `cat context/*.md` | Leer contexto |
|
|
216
|
+
| `find . -name "[archivo]"` | Buscar archivo |
|
|
217
|
+
| `grep -A 10 "[patrón]" [archivo]` | Buscar en archivo |
|
|
218
|
+
| `cat [archivo]` | Leer código |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Reglas
|
|
223
|
+
|
|
224
|
+
1. **Siempre leer contexto** antes de explicar
|
|
225
|
+
2. **Ejemplos de código** cuando ayude
|
|
226
|
+
3. **Referencias** a archivos/líneas específicas
|
|
227
|
+
4. **No inventar** — Si no hay info, decir "No lo sé"
|
|
228
|
+
5. **Claridad** sobre precisión técnica excesiva
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Próximo Comando
|
|
233
|
+
|
|
234
|
+
- `refinar SCRUM-XX` — Refinar user story para implementación
|