sdd-es 2.0.0 → 2.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/.claude/settings.json +21 -45
- package/LICENSE +21 -0
- package/README.md +51 -21
- package/agents/architecture-designer.md +174 -0
- package/agents/arquitecto.md +16 -1
- package/agents/asesor-datos.md +15 -1
- package/agents/critico.md +37 -1
- package/agents/desarrollador-backend.md +3 -1
- package/agents/desarrollador-frontend.md +3 -1
- package/agents/disenador-api.md +13 -1
- package/agents/documentador.md +3 -1
- package/agents/investigador.md +3 -1
- package/agents/operaciones.md +3 -1
- package/agents/product-designer.md +232 -0
- package/agents/revisor.md +25 -1
- package/agents/seguridad.md +5 -1
- package/agents/tester.md +3 -1
- package/claude-hooks/agent-memory.js +154 -0
- package/cli/index.js +1 -2
- package/commands/sdd.analizar.md +23 -2
- package/commands/sdd.compliance.md +516 -0
- package/commands/sdd.configurar.md +33 -0
- package/commands/sdd.constitucion.md +198 -23
- package/commands/sdd.construir.md +210 -0
- package/commands/sdd.dise/303/261ar.md +188 -0
- package/commands/sdd.estado.md +68 -1
- package/commands/sdd.exportar.md +344 -0
- package/commands/sdd.implementar.md +203 -23
- package/commands/sdd.interpretar.md +239 -0
- package/commands/sdd.md +70 -1
- package/commands/sdd.optimizar.md +164 -0
- package/commands/sdd.planificar.md +64 -0
- package/commands/sdd.verificar.md +10 -0
- package/craft/accessibility-baseline.md +216 -0
- package/craft/anti-ai-slop.md +158 -0
- package/craft/color.md +160 -0
- package/craft/typography.md +121 -0
- package/design-systems/bold-brutalist/DESIGN.md +239 -0
- package/design-systems/editorial-minimal/DESIGN.md +205 -0
- package/design-systems/neutral-modern/DESIGN.md +227 -0
- package/design-systems/vibrant-consumer/DESIGN.md +257 -0
- package/design-systems/warm-editorial/DESIGN.md +221 -0
- package/docs/AGENTES.md +4 -1
- package/docs/FABRICA.md +164 -115
- package/docs/MEMORIA-Y-OBSERVABILIDAD.md +237 -0
- package/docs/MODELOS.md +3 -0
- package/docs/QUE-PASA-SI-FALLA.md +404 -0
- package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
- package/package.json +5 -3
- package/skills/cache-audit/SKILL.md +163 -0
- package/skills/critica-diseno/SKILL.md +193 -0
- package/skills/descubrir-idea/SKILL.md +133 -0
- package/skills/effort-router/SKILL.md +128 -0
- package/skills/elegir-direccion/SKILL.md +184 -0
- package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
- package/skills/github-connect/INDEX.md +223 -0
- package/skills/github-connect/INTEGRATION.md +361 -0
- package/skills/github-connect/QUICK-START.md +168 -0
- package/skills/github-connect/README.md +414 -0
- package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
- package/skills/github-connect/SKILL.md +343 -0
- package/skills/github-connect/STRUCTURE.txt +252 -0
- package/skills/github-connect/example-config.yaml +41 -0
- package/skills/github-connect/github-connect.sh +419 -0
- package/skills/interpretar-idea/SKILL.md +254 -0
- package/skills/memory-compactor/SKILL.md +114 -0
- package/skills/modo-guiado/SKILL.md +12 -2
- package/skills/observabilidad-consumo/SKILL.md +164 -0
- package/skills/token-budget/SKILL.md +154 -0
- package/skills/vercel-deploy/00-START-HERE.txt +364 -0
- package/skills/vercel-deploy/CHECKLIST.md +205 -0
- package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
- package/skills/vercel-deploy/FLOW.txt +334 -0
- package/skills/vercel-deploy/INDEX.md +276 -0
- package/skills/vercel-deploy/INTEGRATION.md +328 -0
- package/skills/vercel-deploy/MANIFEST.md +310 -0
- package/skills/vercel-deploy/README.md +65 -0
- package/skills/vercel-deploy/SKILL.md +356 -0
- package/skills/vercel-deploy/deploy.sh +298 -0
- package/skills/vercel-deploy/estado.json.example +205 -0
- package/skills/vercel-deploy/skill.yaml +323 -0
- package/skills/vercel-deploy/vercel-deploy.sh +216 -0
- package/skills/wireframe-mvp/SKILL.md +157 -0
- package/.claude-plugin/marketplace.json +0 -31
- package/.claude-plugin/plugin.json +0 -97
- package/docs/EJEMPLO-PRACTICA.md +0 -383
- package/docs/EJEMPLOS.md +0 -212
- /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
- /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
- /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
- /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
- /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
- /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
- /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
- /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# Integración: vercel-deploy con sdd.implementar
|
|
2
|
+
|
|
3
|
+
Guía para integrar el skill **vercel-deploy** en el flujo de `/sdd.implementar`.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
El skill **vercel-deploy** se invoca automáticamente al final del flujo `/sdd.implementar` cuando `deploy.plataforma: vercel` está configurado.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/sdd.implementar
|
|
11
|
+
├─ Paso 1: Análisis & planning
|
|
12
|
+
├─ Paso 2: Desarrollo iterativo
|
|
13
|
+
├─ Paso 3: Testing
|
|
14
|
+
├─ Paso 4: Revisión de código
|
|
15
|
+
└─ Paso 5: DEPLOY → [vercel-deploy skill] ← AQUÍ
|
|
16
|
+
↓
|
|
17
|
+
Gate humano: "¿Despliego en Vercel?" [sí/no/después]
|
|
18
|
+
↓ sí
|
|
19
|
+
[Ejecutar 6 pasos de deploy]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Requisitos previos
|
|
23
|
+
|
|
24
|
+
### 1. Variable de entorno: VERCEL_TOKEN
|
|
25
|
+
|
|
26
|
+
El skill requiere `VERCEL_TOKEN` configurado. Dos opciones:
|
|
27
|
+
|
|
28
|
+
**Opción A: Exportar en el shell (sesión actual)**
|
|
29
|
+
```bash
|
|
30
|
+
export VERCEL_TOKEN="vercel_xxx_abc123..."
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Opción B: Persistente en `.env.local` (recomendado)**
|
|
34
|
+
```bash
|
|
35
|
+
echo 'VERCEL_TOKEN=vercel_xxx_abc123...' >> .env.local
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Obtener el token:
|
|
39
|
+
1. Ve a https://vercel.com/account/tokens
|
|
40
|
+
2. Crea un nuevo token con scope **full**
|
|
41
|
+
3. Cópialo y guárdalo
|
|
42
|
+
|
|
43
|
+
### 2. (Opcional) VERCEL_PROJECT_ID
|
|
44
|
+
|
|
45
|
+
Si el proyecto ya existe en Vercel:
|
|
46
|
+
```bash
|
|
47
|
+
export VERCEL_PROJECT_ID="prj_xyz123..."
|
|
48
|
+
# O en .env.local:
|
|
49
|
+
echo 'VERCEL_PROJECT_ID=prj_xyz123...' >> .env.local
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Obtener project ID:
|
|
53
|
+
1. Ve a https://vercel.com/dashboard
|
|
54
|
+
2. Abre tu proyecto
|
|
55
|
+
3. Ve a Settings > General
|
|
56
|
+
4. Copia el **Project ID**
|
|
57
|
+
|
|
58
|
+
## Configuración en sdd.implementar
|
|
59
|
+
|
|
60
|
+
En el archivo `/sdd.implementar.md` (o similar), añade:
|
|
61
|
+
|
|
62
|
+
### Sección de configuración
|
|
63
|
+
```yaml
|
|
64
|
+
---
|
|
65
|
+
deploy:
|
|
66
|
+
plataforma: vercel # ← Activa invocación automática del skill
|
|
67
|
+
framework: auto # ← Auto-detect (next, react, vue, astro, etc.)
|
|
68
|
+
environment: production # ← O 'staging'
|
|
69
|
+
---
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Gate humano antes de deploy
|
|
73
|
+
Justo antes de invocar el skill:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
## ¿Estamos listos para producción?
|
|
77
|
+
|
|
78
|
+
Checklist final:
|
|
79
|
+
- [ ] Tests pasando localmente
|
|
80
|
+
- [ ] Cambios committeados
|
|
81
|
+
- [ ] Sin secretos en código
|
|
82
|
+
- [ ] Health check en staging (opcional)
|
|
83
|
+
|
|
84
|
+
**¿Despliego en Vercel?**
|
|
85
|
+
|
|
86
|
+
[sí] → Ejecutar vercel-deploy
|
|
87
|
+
[no] → Saltar deploy
|
|
88
|
+
[después] → Recordarme luego
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Invocación del skill
|
|
92
|
+
```bash
|
|
93
|
+
# Automática (recomendada)
|
|
94
|
+
/sdd.implementar
|
|
95
|
+
# ... pasos 1-4 ...
|
|
96
|
+
# PASO 5: Deploy
|
|
97
|
+
if [ deploy.plataforma == "vercel" ]; then
|
|
98
|
+
vercel-deploy # ← Invoca el skill
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
# O manual en cualquier momento:
|
|
102
|
+
/sdd.desplegar
|
|
103
|
+
/sdd.desplegar --environment staging
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Flujo esperado
|
|
107
|
+
|
|
108
|
+
### Ejecución exitosa
|
|
109
|
+
```
|
|
110
|
+
🚀 DESPLIEGUE A VERCEL
|
|
111
|
+
|
|
112
|
+
✅ Pre-checks completados
|
|
113
|
+
✓ VERCEL_TOKEN presente
|
|
114
|
+
✓ Rama limpia
|
|
115
|
+
✓ Sin secretos
|
|
116
|
+
✓ Tests verdes
|
|
117
|
+
|
|
118
|
+
✅ vercel.json: detectado framework nextjs
|
|
119
|
+
|
|
120
|
+
✅ Build local exitoso
|
|
121
|
+
✅ Deploy a Vercel enviado
|
|
122
|
+
URL: https://mi-proyecto.vercel.app
|
|
123
|
+
|
|
124
|
+
✅ Health check: HTTP 200 OK
|
|
125
|
+
|
|
126
|
+
Tu app está en vivo: https://mi-proyecto.vercel.app
|
|
127
|
+
Tiempo total: 3m 42s
|
|
128
|
+
|
|
129
|
+
Próximos pasos:
|
|
130
|
+
• Comparte URL: https://mi-proyecto.vercel.app
|
|
131
|
+
• Ejecuta /sdd.snapshot para actualizar estado
|
|
132
|
+
• Monitorea por 15 minutos
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Fallo y rollback automático
|
|
136
|
+
```
|
|
137
|
+
🚀 DESPLIEGUE A VERCEL
|
|
138
|
+
|
|
139
|
+
✅ Pre-checks completados
|
|
140
|
+
✅ Build local exitoso
|
|
141
|
+
✅ Deploy a Vercel enviado
|
|
142
|
+
|
|
143
|
+
⚠️ Health check: HTTP 502 (3 reintentos fallidos)
|
|
144
|
+
|
|
145
|
+
🔄 Ejecutando rollback...
|
|
146
|
+
✅ Rollback completado — versión anterior está en vivo
|
|
147
|
+
|
|
148
|
+
❌ ACCIÓN REQUERIDA:
|
|
149
|
+
• Revisa los logs en https://vercel.com/dashboard
|
|
150
|
+
• Diagnostica el error (env vars, memoria, etc.)
|
|
151
|
+
• Corrije y ejecuta /sdd.desplegar nuevamente
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Fallo en pre-checks
|
|
155
|
+
```
|
|
156
|
+
🔍 PASO 1: Pre-checks
|
|
157
|
+
|
|
158
|
+
❌ Error: VERCEL_TOKEN no configurado
|
|
159
|
+
|
|
160
|
+
Instrucciones para generar:
|
|
161
|
+
1. Ve a https://vercel.com/account/tokens
|
|
162
|
+
2. Crea un nuevo token con scope 'full'
|
|
163
|
+
3. Guárdalo:
|
|
164
|
+
export VERCEL_TOKEN='vercel_xxx_...'
|
|
165
|
+
# O en .env.local:
|
|
166
|
+
echo 'VERCEL_TOKEN=vercel_xxx_...' >> .env.local
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Ejemplo: sdd.implementar.md con vercel-deploy
|
|
170
|
+
|
|
171
|
+
```markdown
|
|
172
|
+
# sdd.implementar
|
|
173
|
+
|
|
174
|
+
Implementar y desplegar una feature.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Configuración
|
|
179
|
+
|
|
180
|
+
deploy:
|
|
181
|
+
plataforma: vercel
|
|
182
|
+
framework: nextjs
|
|
183
|
+
environment: production
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Paso 1: Análisis
|
|
188
|
+
|
|
189
|
+
...
|
|
190
|
+
|
|
191
|
+
## Paso 2: Desarrollo
|
|
192
|
+
|
|
193
|
+
...
|
|
194
|
+
|
|
195
|
+
## Paso 3: Testing
|
|
196
|
+
|
|
197
|
+
...
|
|
198
|
+
|
|
199
|
+
## Paso 4: Code Review
|
|
200
|
+
|
|
201
|
+
...
|
|
202
|
+
|
|
203
|
+
## Paso 5: Deploy
|
|
204
|
+
|
|
205
|
+
El siguiente paso despliega tu code a Vercel **solo si todo está OK**.
|
|
206
|
+
|
|
207
|
+
### ¿Estamos listos?
|
|
208
|
+
|
|
209
|
+
- [ ] Tests pasando
|
|
210
|
+
- [ ] Cambios committeados
|
|
211
|
+
- [ ] Sin secretos en código
|
|
212
|
+
|
|
213
|
+
**¿Despliego en Vercel?**
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Sí → ejecutar skill
|
|
217
|
+
/sdd.desplegar
|
|
218
|
+
|
|
219
|
+
# No → saltar por ahora
|
|
220
|
+
# Nota: Puedes desplegar manualmente luego con /sdd.desplegar
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## ✨ Checklist post-deploy
|
|
226
|
+
|
|
227
|
+
- [ ] Health check verde (HTTP 200)
|
|
228
|
+
- [ ] Compartir URL con testers
|
|
229
|
+
- [ ] Monitorear por 15 minutos
|
|
230
|
+
- [ ] Ejecutar `/sdd.snapshot` para actualizar estado
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Archivos generados post-deploy
|
|
234
|
+
|
|
235
|
+
Después de un deploy exitoso, el skill crea/actualiza:
|
|
236
|
+
|
|
237
|
+
### `.sdd/estado.json`
|
|
238
|
+
Metadatos del último despliegue:
|
|
239
|
+
```json
|
|
240
|
+
{
|
|
241
|
+
"ultimo_despliegue": {
|
|
242
|
+
"timestamp": "2026-06-13T14:30:00Z",
|
|
243
|
+
"url": "https://mi-proyecto.vercel.app",
|
|
244
|
+
"status": "OK",
|
|
245
|
+
"health_check": "200 OK",
|
|
246
|
+
"framework": "nextjs"
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### `vercel.json` (auto-generado si no existe)
|
|
252
|
+
Configuración de build y output:
|
|
253
|
+
```json
|
|
254
|
+
{
|
|
255
|
+
"buildCommand": "npm run build",
|
|
256
|
+
"outputDirectory": ".next",
|
|
257
|
+
"framework": "nextjs"
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Troubleshooting
|
|
262
|
+
|
|
263
|
+
### Error: "VERCEL_TOKEN no configurado"
|
|
264
|
+
|
|
265
|
+
**Solución:**
|
|
266
|
+
```bash
|
|
267
|
+
export VERCEL_TOKEN="vercel_xxx_abc123..."
|
|
268
|
+
# O:
|
|
269
|
+
echo 'VERCEL_TOKEN=vercel_xxx_abc123...' >> .env.local
|
|
270
|
+
source .env.local
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Error: "Tests fallando"
|
|
274
|
+
|
|
275
|
+
**Solución:**
|
|
276
|
+
1. Ejecuta tests localmente: `npm test`
|
|
277
|
+
2. Arregla los fallos
|
|
278
|
+
3. Commit: `git add . && git commit -m "Fix tests"`
|
|
279
|
+
4. Reintenta: `/sdd.desplegar`
|
|
280
|
+
|
|
281
|
+
### Error: "Health check fallando (HTTP 502)"
|
|
282
|
+
|
|
283
|
+
**Causas posibles:**
|
|
284
|
+
- Aplicación tarda en iniciar (cold start)
|
|
285
|
+
- Variable de entorno faltante en Vercel
|
|
286
|
+
- Servidor no está escuchando en puerto correcto
|
|
287
|
+
|
|
288
|
+
**Solución:**
|
|
289
|
+
1. Revisa logs en https://vercel.com/dashboard
|
|
290
|
+
2. Configura env vars en Vercel si es necesario
|
|
291
|
+
3. Reintenta el deploy
|
|
292
|
+
|
|
293
|
+
### Error: "Cambios sin stagear"
|
|
294
|
+
|
|
295
|
+
**Solución:**
|
|
296
|
+
```bash
|
|
297
|
+
git add .
|
|
298
|
+
git commit -m "Descripción de cambios"
|
|
299
|
+
/sdd.desplegar
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Variables de entorno en Vercel
|
|
303
|
+
|
|
304
|
+
Si tu aplicación necesita secrets o env vars:
|
|
305
|
+
|
|
306
|
+
1. Ve a Vercel Dashboard → Settings → Environment Variables
|
|
307
|
+
2. Añade cada variable: `KEY=value`
|
|
308
|
+
3. Las variables están disponibles en build time y runtime
|
|
309
|
+
|
|
310
|
+
Ejemplo:
|
|
311
|
+
```
|
|
312
|
+
DATABASE_URL=postgres://...
|
|
313
|
+
API_KEY=sk_xxx_...
|
|
314
|
+
NODE_ENV=production
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## Monitoreo post-deploy
|
|
318
|
+
|
|
319
|
+
Después de desplegar, el skill propone:
|
|
320
|
+
|
|
321
|
+
1. **Compartir URL** con testers y stakeholders
|
|
322
|
+
2. **Monitorear por 15 minutos** usando `/sdd.canary`
|
|
323
|
+
3. **Actualizar estado del producto** con `/sdd.snapshot`
|
|
324
|
+
4. **En caso de issues**: `/sdd.revertir` para rollback manual
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
Para más detalles, ver [SKILL.md](./SKILL.md).
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# MANIFEST: Skill vercel-deploy
|
|
2
|
+
|
|
3
|
+
**Despliegue automático en Vercel con 6 pasos atómicos, health checks y rollback automático.**
|
|
4
|
+
|
|
5
|
+
Versión: 1.0.0
|
|
6
|
+
Fecha: 2026-06-13
|
|
7
|
+
Estado: ✅ Listo para usar
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 📦 Contenido del paquete
|
|
12
|
+
|
|
13
|
+
### Documentación (6 archivos)
|
|
14
|
+
|
|
15
|
+
| Archivo | Tipo | Tamaño | Propósito |
|
|
16
|
+
|---------|------|--------|----------|
|
|
17
|
+
| **SKILL.md** | Especificación | ~10 KB | Documento maestro: flujo de 6 pasos con código ejecutable |
|
|
18
|
+
| **README.md** | Quick start | ~2 KB | Guía rápida para empezar inmediatamente |
|
|
19
|
+
| **CHECKLIST.md** | Pre-requisitos | ~5 KB | 8 secciones de validación antes de desplegar |
|
|
20
|
+
| **INTEGRATION.md** | Integración | ~8 KB | Cómo conectar con `/sdd.implementar` |
|
|
21
|
+
| **INDEX.md** | Navegación | ~6 KB | Mapa de documentos y rutas de lectura |
|
|
22
|
+
| **FLOW.txt** | Diagrama visual | ~15 KB | Flujo visual ASCII de toda la ejecución |
|
|
23
|
+
|
|
24
|
+
### Ejecutables (1 archivo)
|
|
25
|
+
|
|
26
|
+
| Archivo | Tipo | Tamaño | Propósito |
|
|
27
|
+
|---------|------|--------|----------|
|
|
28
|
+
| **deploy.sh** | Script Bash | ~8 KB | Implementación funcional de los 6 pasos |
|
|
29
|
+
|
|
30
|
+
### Configuración (2 archivos)
|
|
31
|
+
|
|
32
|
+
| Archivo | Tipo | Tamaño | Propósito |
|
|
33
|
+
|---------|------|--------|----------|
|
|
34
|
+
| **skill.yaml** | Metadata YAML | ~10 KB | Metadatos del skill para registración en SDD |
|
|
35
|
+
| **estado.json.example** | Ejemplo JSON | ~15 KB | Ejemplo de salida: `.sdd/estado.json` generado |
|
|
36
|
+
|
|
37
|
+
### Navegación (1 archivo)
|
|
38
|
+
|
|
39
|
+
| Archivo | Tipo | Propósito |
|
|
40
|
+
|---------|------|----------|
|
|
41
|
+
| **MANIFEST.md** | Resumen | Este archivo: índice de contenidos |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 🚀 Inicio rápido
|
|
46
|
+
|
|
47
|
+
### 1. Verificar requisitos (1 min)
|
|
48
|
+
```bash
|
|
49
|
+
cd c:\Users\usuario\sdd-lite\sdd-lite\skills\vercel-deploy
|
|
50
|
+
grep -l "VERCEL_TOKEN\|npm\|git\|curl" README.md
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Leer documentación (5-10 min)
|
|
54
|
+
```bash
|
|
55
|
+
# Empezar con el README
|
|
56
|
+
cat README.md
|
|
57
|
+
|
|
58
|
+
# Luego revisar el checklist
|
|
59
|
+
cat CHECKLIST.md
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. Configurar VERCEL_TOKEN (2 min)
|
|
63
|
+
```bash
|
|
64
|
+
export VERCEL_TOKEN="vercel_xxx_abc123..."
|
|
65
|
+
# O persistente:
|
|
66
|
+
echo 'VERCEL_TOKEN=vercel_xxx_abc123...' >> .env.local
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 4. Ejecutar el skill (3-4 min)
|
|
70
|
+
```bash
|
|
71
|
+
# Opción A: Script directo
|
|
72
|
+
bash ./skills/vercel-deploy/deploy.sh
|
|
73
|
+
|
|
74
|
+
# Opción B: Integrado en /sdd.desplegar
|
|
75
|
+
/sdd.desplegar
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 📖 Rutas de lectura según tu perfil
|
|
81
|
+
|
|
82
|
+
### "Quiero desplegar YA" (10 min total)
|
|
83
|
+
1. [README.md](./README.md) — Setup y commands
|
|
84
|
+
2. [CHECKLIST.md](./CHECKLIST.md) — Validar prerequisites
|
|
85
|
+
3. Ejecutar: `bash deploy.sh`
|
|
86
|
+
|
|
87
|
+
### "Soy arquitecto/DevOps" (30 min total)
|
|
88
|
+
1. [SKILL.md](./SKILL.md) — Especificación completa
|
|
89
|
+
2. [deploy.sh](./deploy.sh) — Revisión de código
|
|
90
|
+
3. [skill.yaml](./skill.yaml) — Metadata y configuración
|
|
91
|
+
4. [FLOW.txt](./FLOW.txt) — Diagrama de flujo
|
|
92
|
+
|
|
93
|
+
### "Voy a integrar en /sdd.implementar" (25 min total)
|
|
94
|
+
1. [INTEGRATION.md](./INTEGRATION.md) — Cómo conectar
|
|
95
|
+
2. [CHECKLIST.md](./CHECKLIST.md) — Qué validar
|
|
96
|
+
3. [skill.yaml](./skill.yaml) — Configuración YAML
|
|
97
|
+
4. [SKILL.md](./SKILL.md) — Detalles completos
|
|
98
|
+
|
|
99
|
+
### "Solo necesito un diagrama visual" (5 min)
|
|
100
|
+
1. [FLOW.txt](./FLOW.txt) — Flujo completo
|
|
101
|
+
2. [INDEX.md](./INDEX.md) — Relaciones entre documentos
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 🎯 Características principales
|
|
106
|
+
|
|
107
|
+
✅ **Flujo atómico** — 6 pasos secuenciales bloqueantes
|
|
108
|
+
✅ **Pre-checks** — Valida VERCEL_TOKEN, rama limpia, sin secretos, tests verdes
|
|
109
|
+
✅ **Auto-configuración** — Detecta framework (next, react, vue, astro, python)
|
|
110
|
+
✅ **Health checks** — 3 reintentos automáticos con backoff exponencial
|
|
111
|
+
✅ **Rollback automático** — Revertir a deploy anterior si falla health check
|
|
112
|
+
✅ **Observabilidad** — `.sdd/estado.json` con metadatos completos
|
|
113
|
+
✅ **Seguridad** — Detección de secretos, VERCEL_TOKEN nunca se loguea
|
|
114
|
+
✅ **Idempotencia** — Ejecutar 2x produce el mismo resultado
|
|
115
|
+
✅ **UX** — Output visual con emojis, colores, pasos numerados
|
|
116
|
+
✅ **Documentación** — 9 archivos (docs + ejecutables + ejemplos)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 📋 Flujo de 6 pasos (TL;DR)
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
1. PRE-CHECKS → Valida VERCEL_TOKEN, rama, secretos, tests
|
|
124
|
+
2. CONFIGURACIÓN → Detecta framework, auto-genera vercel.json
|
|
125
|
+
3. BUILD & DEPLOY → npm run build + vercel deploy --prod
|
|
126
|
+
4. HEALTH CHECK → Verifica HTTP 200 (retry 3x, backoff 5s)
|
|
127
|
+
5. ROLLBACK → Si falla, revertir a deploy anterior (automático)
|
|
128
|
+
6. REGISTRAR → Guardar en .sdd/estado.json
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🔧 Requisitos previos
|
|
134
|
+
|
|
135
|
+
### Obligatorios
|
|
136
|
+
- ✅ Bash (4+)
|
|
137
|
+
- ✅ Git (2+)
|
|
138
|
+
- ✅ Node.js (18+) con npm
|
|
139
|
+
- ✅ Vercel CLI (`npm install -g vercel`)
|
|
140
|
+
- ✅ curl (7+)
|
|
141
|
+
- ✅ VERCEL_TOKEN (generar en vercel.com/account/tokens)
|
|
142
|
+
|
|
143
|
+
### Opcionales
|
|
144
|
+
- 🟡 VERCEL_PROJECT_ID (si ya existe en Vercel)
|
|
145
|
+
- 🟡 Notificaciones (Slack, email)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 📊 Estadísticas
|
|
150
|
+
|
|
151
|
+
| Métrica | Valor |
|
|
152
|
+
|---------|-------|
|
|
153
|
+
| Total de archivos | 9 |
|
|
154
|
+
| Líneas de documentación | ~2,500 |
|
|
155
|
+
| Líneas de código (deploy.sh) | ~250 |
|
|
156
|
+
| Líneas de metadata (skill.yaml) | ~300 |
|
|
157
|
+
| Pasos del flujo | 6 |
|
|
158
|
+
| Pre-checks | 4 |
|
|
159
|
+
| Health check retries | 3 |
|
|
160
|
+
| Documentos para diferentes perfiles | 4 |
|
|
161
|
+
| Duración típica | 3-4 minutos |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## ✨ Diferenciadores vs Bolt/v0
|
|
166
|
+
|
|
167
|
+
| Aspecto | vercel-deploy | Bolt/v0 |
|
|
168
|
+
|--------|---------------|---------|
|
|
169
|
+
| **Pre-deploy checks** | ✅ Sí (4 validaciones) | ❌ No |
|
|
170
|
+
| **Secretos en código** | ✅ Detecta y bloquea | ❌ Puede estar oculto |
|
|
171
|
+
| **Tests** | ✅ Valida antes de deploy | ❌ Después del deploy |
|
|
172
|
+
| **Health check** | ✅ 3 reintentos automáticos | ❌ Manual o inexistente |
|
|
173
|
+
| **Rollback** | ✅ Automático si falla | ❌ Manual |
|
|
174
|
+
| **Observabilidad** | ✅ .sdd/estado.json completo | ❌ Logs en Vercel |
|
|
175
|
+
| **Framework detection** | ✅ Automático | ❌ Manual |
|
|
176
|
+
| **Atomicidad** | ✅ Todo o nada | ❌ Estados intermedios |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 🔐 Seguridad
|
|
181
|
+
|
|
182
|
+
- ✅ VERCEL_TOKEN nunca se imprime en logs
|
|
183
|
+
- ✅ Grep de secretos comunes (API_KEY, SECRET, password) en src/
|
|
184
|
+
- ✅ Fuerza .env.local en .gitignore
|
|
185
|
+
- ✅ No permite deploy si hay cambios sin stagear
|
|
186
|
+
- ✅ Valida rama limpia ante de proceder
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 📌 Cómo se genera .sdd/estado.json
|
|
191
|
+
|
|
192
|
+
Después de un deploy exitoso, el script crea:
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"ultimo_despliegue": {
|
|
197
|
+
"timestamp": "2026-06-13T14:30:00Z",
|
|
198
|
+
"url": "https://proyecto.vercel.app",
|
|
199
|
+
"status": "OK",
|
|
200
|
+
"health_check": "200 OK",
|
|
201
|
+
"framework": "nextjs"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Ver ejemplo completo en [estado.json.example](./estado.json.example).
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 🔗 Integración con flujos SDD
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
# En tu sdd.implementar.md:
|
|
214
|
+
deploy:
|
|
215
|
+
plataforma: vercel
|
|
216
|
+
framework: auto
|
|
217
|
+
environment: production
|
|
218
|
+
skill: vercel-deploy
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Gate humano antes de ejecutar:
|
|
222
|
+
```
|
|
223
|
+
¿Despliego en Vercel? [sí/no/después]
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 📞 Troubleshooting rápido
|
|
229
|
+
|
|
230
|
+
| Problema | Solución |
|
|
231
|
+
|----------|----------|
|
|
232
|
+
| VERCEL_TOKEN ausente | Generar en vercel.com/account/tokens |
|
|
233
|
+
| Tests fallando | Ejecutar `/sdd.implementar` nuevamente |
|
|
234
|
+
| Health check 502/503 | Reintenta automáticamente (3x); si persiste, rollback |
|
|
235
|
+
| Build falla | Revisar `npm run build` localmente |
|
|
236
|
+
| Cambios sin stagear | `git add . && git commit` |
|
|
237
|
+
| Secretos en código | Mueve a .env.local |
|
|
238
|
+
|
|
239
|
+
Ver [CHECKLIST.md](./CHECKLIST.md) para validación completa.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 🎓 Ejemplos de uso
|
|
244
|
+
|
|
245
|
+
### Uso simple
|
|
246
|
+
```bash
|
|
247
|
+
export VERCEL_TOKEN="vercel_xxx_..."
|
|
248
|
+
bash ./skills/vercel-deploy/deploy.sh
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Integrado en /sdd.implementar
|
|
252
|
+
```bash
|
|
253
|
+
/sdd.implementar
|
|
254
|
+
# ... pasos 1-4 ...
|
|
255
|
+
# PASO 5: Deploy
|
|
256
|
+
# ¿Despliego en Vercel? [sí]
|
|
257
|
+
# → Ejecuta vercel-deploy automáticamente
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Con diferentes ambientes
|
|
261
|
+
```bash
|
|
262
|
+
/sdd.desplegar --environment staging
|
|
263
|
+
/sdd.desplegar --environment production
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## 📝 Versionamiento
|
|
269
|
+
|
|
270
|
+
| Versión | Fecha | Cambios |
|
|
271
|
+
|---------|-------|---------|
|
|
272
|
+
| 1.0.0 | 2026-06-13 | Release inicial |
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 📚 Referencias
|
|
277
|
+
|
|
278
|
+
- Vercel Docs: https://vercel.com/docs
|
|
279
|
+
- Vercel API: https://vercel.com/docs/api
|
|
280
|
+
- Vercel CLI: https://vercel.com/cli
|
|
281
|
+
- Deployment best practices: https://vercel.com/docs/concepts/deployments
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## ✅ Checklist de instalación
|
|
286
|
+
|
|
287
|
+
- [ ] Descargado en `sdd-lite/skills/vercel-deploy/`
|
|
288
|
+
- [ ] VERCEL_TOKEN generado y guardado
|
|
289
|
+
- [ ] Leer README.md (2 min)
|
|
290
|
+
- [ ] Revisar CHECKLIST.md (5 min)
|
|
291
|
+
- [ ] Ejecutar deploy.sh (3-4 min)
|
|
292
|
+
- [ ] Verificar URL en vivo
|
|
293
|
+
- [ ] Guardar estado en .sdd/estado.json
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## 🎯 Próximos pasos
|
|
298
|
+
|
|
299
|
+
1. **Ahora**: Leer [README.md](./README.md)
|
|
300
|
+
2. **Luego**: Revisar [CHECKLIST.md](./CHECKLIST.md)
|
|
301
|
+
3. **Ejecutar**: `bash ./skills/vercel-deploy/deploy.sh`
|
|
302
|
+
4. **Integrar**: En `/sdd.implementar` con [INTEGRATION.md](./INTEGRATION.md)
|
|
303
|
+
5. **Monitorear**: Post-deploy con `/sdd.canary`
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
**Estado:** ✅ Listo para usar
|
|
308
|
+
**Mantenedor:** SDD Team
|
|
309
|
+
**Soporte:** Referir a documentación interna
|
|
310
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Skill: vercel-deploy
|
|
2
|
+
|
|
3
|
+
Despliegue automático en Vercel con pre-checks, health checks y rollback automático.
|
|
4
|
+
|
|
5
|
+
## Uso rápido
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Generar VERCEL_TOKEN
|
|
9
|
+
export VERCEL_TOKEN="xxx_your_token_xxx"
|
|
10
|
+
|
|
11
|
+
# Desplegar (automáticamente en /sdd.implementar)
|
|
12
|
+
/sdd.desplegar
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Flujo
|
|
16
|
+
|
|
17
|
+
1. **Pre-checks**: Validar VERCEL_TOKEN, rama limpia, sin secretos, tests verdes
|
|
18
|
+
2. **vercel.json**: Auto-generar si no existe (detecta framework automáticamente)
|
|
19
|
+
3. **Build & Deploy**: Compilar localmente y enviar a Vercel
|
|
20
|
+
4. **Health Check**: Verificar que la URL responde HTTP 200 (3 reintentos con backoff)
|
|
21
|
+
5. **Rollback**: Revertir a deploy anterior si health check falla
|
|
22
|
+
6. **Log**: Guardar metadatos en `.sdd/estado.json` para auditoría
|
|
23
|
+
|
|
24
|
+
## Obtener VERCEL_TOKEN
|
|
25
|
+
|
|
26
|
+
1. Ve a https://vercel.com/account/tokens
|
|
27
|
+
2. Crea un nuevo token con scope **full**
|
|
28
|
+
3. Guárdalo en el entorno:
|
|
29
|
+
```bash
|
|
30
|
+
export VERCEL_TOKEN="vercel_xxx_..."
|
|
31
|
+
```
|
|
32
|
+
O en `.env.local`:
|
|
33
|
+
```
|
|
34
|
+
VERCEL_TOKEN=vercel_xxx_...
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Errores comunes
|
|
38
|
+
|
|
39
|
+
| Error | Solución |
|
|
40
|
+
|-------|----------|
|
|
41
|
+
| VERCEL_TOKEN ausente | Ejecutar `export VERCEL_TOKEN="..."` |
|
|
42
|
+
| Tests fallando | Ejecutar `/sdd.implementar` nuevamente |
|
|
43
|
+
| Health check fallando | Revisar logs de Vercel; revisar env vars |
|
|
44
|
+
| Cambios sin stagear | Ejecutar `git add . && git commit` |
|
|
45
|
+
|
|
46
|
+
## Próximos pasos post-deploy
|
|
47
|
+
|
|
48
|
+
- Compartir URL con testers: https://mi-proyecto.vercel.app
|
|
49
|
+
- Monitorear anomalías (15 minutos)
|
|
50
|
+
- Ejecutar `/sdd.snapshot` para actualizar estado del producto
|
|
51
|
+
- Si hay issues: `/sdd.revertir` para rollback manual
|
|
52
|
+
|
|
53
|
+
## Invocación
|
|
54
|
+
|
|
55
|
+
**Automática**: PASO final de `/sdd.implementar` (con confirmación humana)
|
|
56
|
+
|
|
57
|
+
**Manual**:
|
|
58
|
+
```bash
|
|
59
|
+
/sdd.desplegar
|
|
60
|
+
/sdd.desplegar --environment staging
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
Para detalles completos del flujo de 6 pasos, ver [SKILL.md](./SKILL.md).
|