sdd-es 2.0.0 → 2.6.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 +29 -29
- package/.claude/settings.local.json +10 -0
- package/.claude-plugin/marketplace.json +10 -7
- package/.claude-plugin/plugin.json +59 -37
- package/.gitignore +20 -0
- package/.mcp.json +8 -0
- package/LICENSE +21 -0
- package/README.md +77 -40
- package/agents/architecture-designer.md +211 -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 +11 -16
- 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 +268 -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 +288 -0
- package/claude-hooks/pre-tool-guard.js +61 -9
- package/cli/index.js +1 -2
- package/commands/sdd.adr.md +196 -0
- package/commands/sdd.analizar.md +23 -2
- package/commands/sdd.ayuda.md +13 -0
- package/commands/sdd.compliance.md +521 -0
- package/commands/sdd.configurar.md +34 -1
- package/commands/sdd.constitucion.md +198 -23
- package/commands/sdd.construir.md +210 -0
- package/commands/sdd.crear-mcp.md +2 -0
- package/commands/sdd.defect-report.md +134 -0
- package/commands/sdd.descubrir.md +19 -0
- package/commands/sdd.dise/303/261ar.md +188 -0
- package/commands/sdd.estado.md +120 -3
- package/commands/sdd.exportar.md +344 -0
- package/commands/sdd.implementar.md +272 -52
- package/commands/sdd.interpretar.md +239 -0
- package/commands/sdd.md +93 -4
- package/commands/sdd.optimizar-memoria.md +47 -0
- package/commands/sdd.optimizar.md +164 -0
- package/commands/sdd.planificar.md +64 -0
- package/commands/sdd.retro.md +74 -0
- package/commands/sdd.verificar.md +81 -0
- package/configuracion-ejemplo/.claude/CLAUDE.md +106 -0
- package/configuracion-ejemplo/sdd.config.yaml +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/CASO-COMPLETO.md +206 -0
- package/docs/EJEMPLOS.md +61 -185
- package/docs/FABRICA.md +163 -115
- package/docs/INICIO-RAPIDO.md +27 -79
- package/docs/MEMORIA-Y-OBSERVABILIDAD.md +239 -0
- package/docs/MODELOS.md +3 -0
- package/docs/QUE-PASA-SI-FALLA.md +404 -0
- package/docs/README.md +43 -0
- package/docs/RELACION-CON-CLAUDE-CODE.md +38 -0
- package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
- package/package.json +15 -10
- package/plantillas/job-story-mejorar-prompt.md +107 -0
- package/presets/enterprise.yaml +6 -0
- package/presets/lean.yaml +4 -0
- package/presets/startup.yaml +6 -0
- package/skills/adr-indexer/SKILL.md +181 -0
- 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/mejorar-prompt/SKILL.md +237 -0
- package/skills/memory-compactor/SKILL.md +68 -0
- package/skills/modo-guiado/SKILL.md +12 -2
- package/skills/mutation-detector/SKILL.md +134 -0
- package/skills/observabilidad-consumo/SKILL.md +164 -0
- package/skills/token-budget/SKILL.md +177 -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/docs/EJEMPLO-PRACTICA.md +0 -383
- package/mcp-figma/README.md +0 -158
- package/mcp-figma/package.json +0 -7
- package/mcp-figma/src/component-generator.js +0 -162
- package/mcp-figma/src/design-system-analyzer.js +0 -247
- package/mcp-figma/src/figma-client.js +0 -75
- package/mcp-figma/src/index.js +0 -114
- package/mcp-figma/src/mcp.js +0 -97
- package/mcp-figma/src/style-mapper.js +0 -85
- /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,276 @@
|
|
|
1
|
+
# Skill: vercel-deploy
|
|
2
|
+
|
|
3
|
+
**Despliegue automático en Vercel con pre-checks, health checks y rollback automático.**
|
|
4
|
+
|
|
5
|
+
Cierra el ciclo idea→producción sin salir del flujo. Diferenciador vs Bolt/v0: verificación independiente **PRE-deploy**, no post-deploy.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📋 Archivos en este directorio
|
|
10
|
+
|
|
11
|
+
### `SKILL.md` ⭐ (Principal)
|
|
12
|
+
**Documento maestro** con la especificación completa del skill.
|
|
13
|
+
|
|
14
|
+
Contenido:
|
|
15
|
+
- Propósito y visión
|
|
16
|
+
- Entrada requerida (VERCEL_TOKEN, variables de entorno)
|
|
17
|
+
- Flujo detallado de 6 pasos (código Bash ejecutable)
|
|
18
|
+
- PASO 1: Pre-checks (bloquea si hay issues)
|
|
19
|
+
- PASO 2: Auto-generar vercel.json
|
|
20
|
+
- PASO 3: Build y deploy a Vercel
|
|
21
|
+
- PASO 4: Health check con retry y backoff
|
|
22
|
+
- PASO 5: Rollback automático si falla
|
|
23
|
+
- PASO 6: Registrar resultado en `.sdd/estado.json`
|
|
24
|
+
- Output visual para el usuario
|
|
25
|
+
- Tabla de manejo de errores
|
|
26
|
+
- Notas de implementación (atomicidad, idempotencia, seguridad)
|
|
27
|
+
|
|
28
|
+
**Leer esto primero para entender qué hace el skill.**
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
### `deploy.sh` (Ejecutable)
|
|
33
|
+
**Script Bash funcional** que implementa los 6 pasos.
|
|
34
|
+
|
|
35
|
+
Características:
|
|
36
|
+
- Colores y emojis en el output
|
|
37
|
+
- Manejo robusto de errores
|
|
38
|
+
- Funciones modulares para cada paso
|
|
39
|
+
- Exit codes correctos
|
|
40
|
+
- Logging a `.sdd/estado.json`
|
|
41
|
+
|
|
42
|
+
Uso:
|
|
43
|
+
```bash
|
|
44
|
+
bash ./skills/vercel-deploy/deploy.sh
|
|
45
|
+
# O si tiene permisos de ejecución:
|
|
46
|
+
./skills/vercel-deploy/deploy.sh
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Para testing y ejecución real del flujo.**
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### `README.md` (Inicio rápido)
|
|
54
|
+
**Guía de usuario con setup mínimo.**
|
|
55
|
+
|
|
56
|
+
Contenido:
|
|
57
|
+
- Uso rápido (copy-paste commands)
|
|
58
|
+
- Cómo obtener VERCEL_TOKEN
|
|
59
|
+
- Tabla de errores comunes
|
|
60
|
+
- Próximos pasos post-deploy
|
|
61
|
+
- Invocación (automática vs manual)
|
|
62
|
+
|
|
63
|
+
**Para usuarios que quieren empezar rápido.**
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### `CHECKLIST.md` (Pre-requisitos)
|
|
68
|
+
**Checklist interactivo** antes de desplegar.
|
|
69
|
+
|
|
70
|
+
Contenido:
|
|
71
|
+
- 8 secciones: autenticación, código, seguridad, tests, vercel config, dependencias, comunicación, contingencia
|
|
72
|
+
- Comandos para verificar cada condición
|
|
73
|
+
- Acciones remediales si algo falla
|
|
74
|
+
- Checklist de una línea (copy-paste)
|
|
75
|
+
- Tabla "estado final: all systems go"
|
|
76
|
+
|
|
77
|
+
**Para verificar que todo está ready antes de desplegar.**
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### `INTEGRATION.md` (Integración con sdd.implementar)
|
|
82
|
+
**Guía para conectar vercel-deploy en el flujo `/sdd.implementar`.**
|
|
83
|
+
|
|
84
|
+
Contenido:
|
|
85
|
+
- Overview del flujo (dónde se invoca)
|
|
86
|
+
- Requisitos previos (VERCEL_TOKEN, VERCEL_PROJECT_ID)
|
|
87
|
+
- Configuración en sdd.implementar (YAML frontmatter)
|
|
88
|
+
- Gate humano ("¿Despliego?")
|
|
89
|
+
- Flujo esperado (éxito, fallo, rollback)
|
|
90
|
+
- Ejemplo completo de sdd.implementar.md
|
|
91
|
+
- Archivos generados (.sdd/estado.json, vercel.json)
|
|
92
|
+
- Troubleshooting por escenario
|
|
93
|
+
- Variables de entorno en Vercel Dashboard
|
|
94
|
+
- Monitoreo post-deploy
|
|
95
|
+
|
|
96
|
+
**Para integrar el skill en tu workflow SDD.**
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### `INDEX.md` (Este archivo)
|
|
101
|
+
**Mapa de navegación** de toda la documentación.
|
|
102
|
+
|
|
103
|
+
Contenido:
|
|
104
|
+
- Descripción de cada archivo
|
|
105
|
+
- Qué leer según tu caso de uso
|
|
106
|
+
- Relaciones entre documentos
|
|
107
|
+
|
|
108
|
+
**Para orientarte en la estructura.**
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 🎯 Qué leer según tu caso de uso
|
|
113
|
+
|
|
114
|
+
### "Quiero desplegar ahora mismo"
|
|
115
|
+
1. Lee [README.md](./README.md) (2 min)
|
|
116
|
+
2. Lee [CHECKLIST.md](./CHECKLIST.md) (5 min)
|
|
117
|
+
3. Ejecuta: `bash ./skills/vercel-deploy/deploy.sh`
|
|
118
|
+
|
|
119
|
+
### "Quiero entender qué hace el skill"
|
|
120
|
+
1. Lee [SKILL.md](./SKILL.md) (10 min)
|
|
121
|
+
2. Analiza [deploy.sh](./deploy.sh) (5 min)
|
|
122
|
+
3. Revisa ejemplos en [README.md](./README.md)
|
|
123
|
+
|
|
124
|
+
### "Quiero integrarlo en mi /sdd.implementar"
|
|
125
|
+
1. Lee [INTEGRATION.md](./INTEGRATION.md) (15 min)
|
|
126
|
+
2. Copia la sección YAML del ejemplo
|
|
127
|
+
3. Añade el gate humano en tu workflow
|
|
128
|
+
4. Configura VERCEL_TOKEN
|
|
129
|
+
|
|
130
|
+
### "Algo falló y necesito troubleshoot"
|
|
131
|
+
1. Consulta tabla de errores en [README.md](./README.md)
|
|
132
|
+
2. Más detalles en [SKILL.md](./SKILL.md) → "Manejo de errores"
|
|
133
|
+
3. Si es de integración, ve a [INTEGRATION.md](./INTEGRATION.md) → "Troubleshooting"
|
|
134
|
+
|
|
135
|
+
### "Quiero ver el código ejecutable"
|
|
136
|
+
1. Revisa [deploy.sh](./deploy.sh)
|
|
137
|
+
2. Lee comentarios alineados con [SKILL.md](./SKILL.md)
|
|
138
|
+
3. Test localmente con variables mock
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## ⚡ Flujo de 6 pasos (resumen)
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
PASO 1: Pre-checks
|
|
146
|
+
✓ VERCEL_TOKEN presente
|
|
147
|
+
✓ Rama limpia (git)
|
|
148
|
+
✓ Sin secretos en src/
|
|
149
|
+
✓ Tests verdes
|
|
150
|
+
↓ (bloquea si algo falla)
|
|
151
|
+
|
|
152
|
+
PASO 2: Configuración
|
|
153
|
+
✓ Detectar framework (next, react, vue, astro, python...)
|
|
154
|
+
✓ Auto-generar vercel.json si no existe
|
|
155
|
+
↓
|
|
156
|
+
|
|
157
|
+
PASO 3: Deploy
|
|
158
|
+
✓ Build local: npm run build
|
|
159
|
+
✓ Enviar a Vercel: vercel deploy --prod
|
|
160
|
+
✓ Capturar URL de salida
|
|
161
|
+
↓
|
|
162
|
+
|
|
163
|
+
PASO 4: Health Check
|
|
164
|
+
✓ Retry 3 veces: curl -s $DEPLOY_URL
|
|
165
|
+
✓ Esperar backoff si falla (5s entre intentos)
|
|
166
|
+
✓ Si HTTP 200: ✅ éxito
|
|
167
|
+
↓ (si no, ir a PASO 5)
|
|
168
|
+
|
|
169
|
+
PASO 5: Rollback
|
|
170
|
+
✓ Si health check falla: vercel rollback --prod
|
|
171
|
+
✓ Revertir a deploy anterior
|
|
172
|
+
✓ Loguear y notificar usuario
|
|
173
|
+
↓
|
|
174
|
+
|
|
175
|
+
PASO 6: Registrar
|
|
176
|
+
✓ Guardar metadatos en .sdd/estado.json
|
|
177
|
+
✓ Timestamp, URL, status, health_check, framework
|
|
178
|
+
✓ Disponible para auditoría y monitoreo
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 📦 Input del skill
|
|
184
|
+
|
|
185
|
+
```env
|
|
186
|
+
# Requerido
|
|
187
|
+
VERCEL_TOKEN=vercel_xxx_abc123...
|
|
188
|
+
|
|
189
|
+
# Opcional pero recomendado
|
|
190
|
+
VERCEL_PROJECT_ID=prj_xyz123...
|
|
191
|
+
|
|
192
|
+
# Auto-detectado
|
|
193
|
+
framework=nextjs # O react, vue, astro, python, etc.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## 📤 Output del skill
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
🚀 DESPLIEGUE A VERCEL — COMPLETADO
|
|
200
|
+
|
|
201
|
+
✅ Pre-checks completados
|
|
202
|
+
✅ Build exitoso
|
|
203
|
+
✅ Vercel deployment: https://mi-proyecto.vercel.app
|
|
204
|
+
✅ Health check: HTTP 200
|
|
205
|
+
|
|
206
|
+
Tu app está en vivo: https://mi-proyecto.vercel.app
|
|
207
|
+
Tiempo total: 3m 42s
|
|
208
|
+
|
|
209
|
+
Próximos pasos:
|
|
210
|
+
• Comparte la URL
|
|
211
|
+
• Monitorea por 15 minutos
|
|
212
|
+
• Ejecuta /sdd.snapshot
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 🔐 Seguridad
|
|
218
|
+
|
|
219
|
+
- ✅ VERCEL_TOKEN nunca se loguea en stdout
|
|
220
|
+
- ✅ Secretos detectados pre-deploy (grep en src/)
|
|
221
|
+
- ✅ .env.local en .gitignore
|
|
222
|
+
- ✅ Credenciales en variables de entorno, no en código
|
|
223
|
+
- ✅ Atomicidad: o todo se despliega o se revierte
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 📚 Relaciones entre documentos
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
INDEX.md (Tú estás aquí)
|
|
231
|
+
├─ README.md ← Empezar aquí
|
|
232
|
+
├─ CHECKLIST.md ← Antes de desplegar
|
|
233
|
+
├─ SKILL.md ← Entender el flujo
|
|
234
|
+
│ └─ deploy.sh ← Implementación
|
|
235
|
+
├─ INTEGRATION.md ← Conectar con sdd.implementar
|
|
236
|
+
└─ Este mismo archivo
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 💡 Tips
|
|
242
|
+
|
|
243
|
+
1. **Siempre verifica el checklist antes de desplegar** → Lee [CHECKLIST.md](./CHECKLIST.md)
|
|
244
|
+
|
|
245
|
+
2. **Si algo falla, revisa logs en Vercel Dashboard** → https://vercel.com/dashboard
|
|
246
|
+
|
|
247
|
+
3. **VERCEL_TOKEN va en .env.local** (nunca en git):
|
|
248
|
+
```bash
|
|
249
|
+
echo 'VERCEL_TOKEN=vercel_xxx_...' >> .env.local
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
4. **El skill es idempotente** → Ejecutar dos veces produce el mismo resultado
|
|
253
|
+
|
|
254
|
+
5. **Health check reintenta 3 veces automáticamente** → Maneja cold starts
|
|
255
|
+
|
|
256
|
+
6. **Rollback es automático si health check falla** → Protección contra deployments rotos
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 🚀 Próximos pasos
|
|
261
|
+
|
|
262
|
+
| Quiero... | Ir a... |
|
|
263
|
+
|-----------|---------|
|
|
264
|
+
| Desplegar ahora | [README.md](./README.md) |
|
|
265
|
+
| Entender el flujo | [SKILL.md](./SKILL.md) |
|
|
266
|
+
| Verificar prerequisites | [CHECKLIST.md](./CHECKLIST.md) |
|
|
267
|
+
| Integrar en /sdd.implementar | [INTEGRATION.md](./INTEGRATION.md) |
|
|
268
|
+
| Ver código ejecutable | [deploy.sh](./deploy.sh) |
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
**Versión:** 1.0
|
|
273
|
+
**Última actualización:** 2026-06-13
|
|
274
|
+
**Framework:** Bash + Vercel CLI
|
|
275
|
+
**Estado:** ✅ Listo para usar
|
|
276
|
+
|
|
@@ -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).
|