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,334 @@
|
|
|
1
|
+
================================================================================
|
|
2
|
+
SKILL: VERCEL-DEPLOY - FLUJO VISUAL
|
|
3
|
+
================================================================================
|
|
4
|
+
|
|
5
|
+
PUNTO DE ENTRADA
|
|
6
|
+
│
|
|
7
|
+
▼
|
|
8
|
+
┌──────────────────────────────┐
|
|
9
|
+
│ /sdd.desplegar │
|
|
10
|
+
│ O paso 5 de /sdd.implementar│
|
|
11
|
+
│ O invocación manual │
|
|
12
|
+
└──────────────────┬────────────┘
|
|
13
|
+
│
|
|
14
|
+
▼
|
|
15
|
+
|
|
16
|
+
================================================================================
|
|
17
|
+
PASO 1: PRE-CHECKS
|
|
18
|
+
================================================================================
|
|
19
|
+
|
|
20
|
+
┌─────────────────────────────────────────────────────────┐
|
|
21
|
+
│ Validaciones preliminares (bloquean si fallan) │
|
|
22
|
+
└─────────────────────────────────────────────────────────┘
|
|
23
|
+
│
|
|
24
|
+
┌───────┴───────┬──────────┬──────────┐
|
|
25
|
+
▼ ▼ ▼ ▼
|
|
26
|
+
╔════════╗ ╔══════════╗ ╔═══════╗ ╔═════════╗
|
|
27
|
+
║ Check ║ ║ Rama ║ ║ Sin ║ ║ Tests ║
|
|
28
|
+
║TOKEN ║ ║ Limpia ║ ║Secretos║ ║ Verdes ║
|
|
29
|
+
╚════════╝ ╚══════════╝ ╚═══════╝ ╚═════════╝
|
|
30
|
+
│ │ │ │
|
|
31
|
+
✓ OK ✓ OK ✓ OK ✓ OK
|
|
32
|
+
│ │ │ │
|
|
33
|
+
└────────────┴───────────┴──────────┘
|
|
34
|
+
│
|
|
35
|
+
✅ TODO OK → Continuar
|
|
36
|
+
❌ ALGO FALLA → BLOQUEA (exit 1)
|
|
37
|
+
│
|
|
38
|
+
▼
|
|
39
|
+
|
|
40
|
+
================================================================================
|
|
41
|
+
PASO 2: AUTO-GENERAR VERCEL.JSON
|
|
42
|
+
================================================================================
|
|
43
|
+
|
|
44
|
+
┌─────────────────────────────────────────────────┐
|
|
45
|
+
│ Detectar framework y auto-generar configuración │
|
|
46
|
+
└─────────────────────────────────────────────────┘
|
|
47
|
+
│
|
|
48
|
+
┌──────────────┴──────────────┐
|
|
49
|
+
▼ ▼
|
|
50
|
+
┌──────────────────────┐ ┌─────────────────────┐
|
|
51
|
+
│ ¿Existe vercel.json? │ │ ¿Existe package.json│
|
|
52
|
+
└──────────────────────┘ └─────────────────────┘
|
|
53
|
+
│ │
|
|
54
|
+
SÍ │ NO SÍ │ NO
|
|
55
|
+
▼ │ ▼ │
|
|
56
|
+
✓ Skip │ ┌────────────┐
|
|
57
|
+
│ │ Detectar │
|
|
58
|
+
▼ │ Framework │
|
|
59
|
+
┌─────────────────┐ └────────────┘
|
|
60
|
+
│ Auto-generar: │ │
|
|
61
|
+
│ • buildCommand │ ┌────────┼────────┬──────────┬─────────┐
|
|
62
|
+
│ • outputDir │ ▼ ▼ ▼ ▼ ▼
|
|
63
|
+
│ • framework │ next react vue astro python
|
|
64
|
+
└─────────────────┘ │ │ │ │ │
|
|
65
|
+
│ │ │ │ │ │
|
|
66
|
+
▼ ▼ ▼ ▼ ▼ ▼
|
|
67
|
+
✅ LISTO ✓ Conf ✓ Conf ✓ Conf ✓ Conf ✓ Conf
|
|
68
|
+
│ │ │ │ │
|
|
69
|
+
└────────┴────────┴──────────┴─────────┘
|
|
70
|
+
│
|
|
71
|
+
▼
|
|
72
|
+
|
|
73
|
+
================================================================================
|
|
74
|
+
PASO 3: BUILD Y DEPLOY
|
|
75
|
+
================================================================================
|
|
76
|
+
|
|
77
|
+
┌──────────────────────────────────────┐
|
|
78
|
+
│ Compilar localmente y enviar a Vercel│
|
|
79
|
+
└──────────────────────────────────────┘
|
|
80
|
+
│
|
|
81
|
+
┌───────┴───────┐
|
|
82
|
+
▼ ▼
|
|
83
|
+
┌────────┐ ┌──────────────┐
|
|
84
|
+
│ Build │ │ Deploy a │
|
|
85
|
+
│Local │ │ Vercel │
|
|
86
|
+
│npm run │ │ --prod │
|
|
87
|
+
│build │ │ │
|
|
88
|
+
└────────┘ └──────────────┘
|
|
89
|
+
│ │
|
|
90
|
+
▼ ▼
|
|
91
|
+
✓ OK o ✓ OK → URL capturada
|
|
92
|
+
✗ FALLA o
|
|
93
|
+
✗ FALLA → ERROR (exit 1)
|
|
94
|
+
│
|
|
95
|
+
✗ ERROR URL: https://proyecto.vercel.app
|
|
96
|
+
(exit 1) │
|
|
97
|
+
▼
|
|
98
|
+
|
|
99
|
+
================================================================================
|
|
100
|
+
PASO 4: HEALTH CHECK
|
|
101
|
+
================================================================================
|
|
102
|
+
|
|
103
|
+
┌──────────────────┐
|
|
104
|
+
│ ¿URL responde? │
|
|
105
|
+
│ HTTP 200? │
|
|
106
|
+
└──────────────────┘
|
|
107
|
+
│
|
|
108
|
+
Intento 1 de 3
|
|
109
|
+
│
|
|
110
|
+
┌───────┴────────┐
|
|
111
|
+
▼ ▼
|
|
112
|
+
✓ 200 ✗ No 200
|
|
113
|
+
OK (502, 503, timeout)
|
|
114
|
+
│ │
|
|
115
|
+
▼ ▼
|
|
116
|
+
✅ ÉXITO Esperar 5s (backoff)
|
|
117
|
+
(Ir a PASO 5) │
|
|
118
|
+
Intento 2 de 3
|
|
119
|
+
│
|
|
120
|
+
┌──────┴────────┐
|
|
121
|
+
▼ ▼
|
|
122
|
+
✓ 200 ✗ No 200
|
|
123
|
+
OK Esperar 5s
|
|
124
|
+
│ │
|
|
125
|
+
▼ Intento 3 de 3
|
|
126
|
+
✅ ÉXITO │
|
|
127
|
+
┌───┴────────┐
|
|
128
|
+
▼ ▼
|
|
129
|
+
✓ 200 ✗ No 200
|
|
130
|
+
OK (final)
|
|
131
|
+
│ │
|
|
132
|
+
▼ ▼
|
|
133
|
+
✅ ÉXITO ❌ FALLA
|
|
134
|
+
(Ir a PASO 5)
|
|
135
|
+
|
|
136
|
+
================================================================================
|
|
137
|
+
PASO 5: ROLLBACK (CONDICIONAL)
|
|
138
|
+
================================================================================
|
|
139
|
+
|
|
140
|
+
┌────────────────────────────┐
|
|
141
|
+
│ ¿Necesita rollback? │
|
|
142
|
+
│ (Health check falló) │
|
|
143
|
+
└────────────────────────────┘
|
|
144
|
+
│
|
|
145
|
+
┌───────┴───────┐
|
|
146
|
+
▼ ▼
|
|
147
|
+
✓ Sí ✗ No
|
|
148
|
+
Rollback (Health OK)
|
|
149
|
+
│ │
|
|
150
|
+
▼ │
|
|
151
|
+
┌────────┐ ┌─────────────┐
|
|
152
|
+
│ Revert │ │ Skip rollback│
|
|
153
|
+
│ a prev │ │ (normal) │
|
|
154
|
+
│deploy │ └─────────────┘
|
|
155
|
+
└────────┘ │
|
|
156
|
+
│ │
|
|
157
|
+
▼ ▼
|
|
158
|
+
✓ OK ✅ CONTINUAR
|
|
159
|
+
│ │
|
|
160
|
+
├─────────────┬──┘
|
|
161
|
+
│ │
|
|
162
|
+
▼ ▼
|
|
163
|
+
|
|
164
|
+
================================================================================
|
|
165
|
+
PASO 6: REGISTRAR RESULTADO
|
|
166
|
+
================================================================================
|
|
167
|
+
|
|
168
|
+
┌──────────────────────────────┐
|
|
169
|
+
│ Guardar metadatos del deploy │
|
|
170
|
+
└──────────────────────────────┘
|
|
171
|
+
│
|
|
172
|
+
┌────────────┴──────────────┐
|
|
173
|
+
▼ ▼
|
|
174
|
+
┌────────────────┐ ┌────────────────┐
|
|
175
|
+
│ .sdd/estado.json│ │ Log en stdout │
|
|
176
|
+
│ │ │ │
|
|
177
|
+
│ • timestamp │ │ • Éxito │
|
|
178
|
+
│ • URL │ │ • Tiempo total │
|
|
179
|
+
│ • status │ │ • Próximos │
|
|
180
|
+
│ • health_check │ │ pasos │
|
|
181
|
+
│ • framework │ └────────────────┘
|
|
182
|
+
└────────────────┘ │
|
|
183
|
+
│ │
|
|
184
|
+
└───────────┬───────────┘
|
|
185
|
+
│
|
|
186
|
+
▼
|
|
187
|
+
✅ COMPLETADO
|
|
188
|
+
|
|
189
|
+
================================================================================
|
|
190
|
+
ENTRADA VS SALIDA
|
|
191
|
+
================================================================================
|
|
192
|
+
|
|
193
|
+
INPUT:
|
|
194
|
+
• VERCEL_TOKEN (requerido)
|
|
195
|
+
• VERCEL_PROJECT_ID (opcional)
|
|
196
|
+
• framework (auto-detectado)
|
|
197
|
+
• environment (production | staging)
|
|
198
|
+
|
|
199
|
+
OUTPUT:
|
|
200
|
+
• deploy_url: "https://proyecto.vercel.app"
|
|
201
|
+
• health_check: "200 OK" o "FAILED"
|
|
202
|
+
• timestamp: "2026-06-13T14:30:00Z"
|
|
203
|
+
• .sdd/estado.json: archivo con metadatos completos
|
|
204
|
+
|
|
205
|
+
ERROR OUTPUT:
|
|
206
|
+
• Mensaje de error claro
|
|
207
|
+
• Instrucciones de remediar
|
|
208
|
+
• Exit code: 1
|
|
209
|
+
|
|
210
|
+
================================================================================
|
|
211
|
+
MANEJO DE ERRORES
|
|
212
|
+
================================================================================
|
|
213
|
+
|
|
214
|
+
PUNTO DE FALLA ACCIÓN
|
|
215
|
+
────────────────────────────────────────────────────────
|
|
216
|
+
PASO 1: Pre-checks ❌ BLOQUEA → Usuario debe arreglar
|
|
217
|
+
│
|
|
218
|
+
├─ VERCEL_TOKEN Instrucciones para generar
|
|
219
|
+
├─ Rama limpia git add . && git commit
|
|
220
|
+
├─ Sin secretos Mueve a .env.local
|
|
221
|
+
└─ Tests OK /sdd.implementar
|
|
222
|
+
|
|
223
|
+
PASO 3: Build/Deploy ❌ BLOQUEA → Usuario debe arreglar
|
|
224
|
+
│
|
|
225
|
+
├─ Build falla npm run build (debug)
|
|
226
|
+
└─ Deploy falla Revisa Vercel API
|
|
227
|
+
|
|
228
|
+
PASO 4: Health Check 🔄 REINTENTOS AUTOMÁTICOS (3x)
|
|
229
|
+
│ ↓
|
|
230
|
+
└─ Persiste PASO 5: Rollback automático
|
|
231
|
+
|
|
232
|
+
PASO 5: Rollback ❌ CONTACTA DEVOPS
|
|
233
|
+
(nunca debería fallar)
|
|
234
|
+
|
|
235
|
+
================================================================================
|
|
236
|
+
DIAGRAMA SECUENCIAL
|
|
237
|
+
================================================================================
|
|
238
|
+
|
|
239
|
+
PASO 1 PASO 2 PASO 3 PASO 4 PASO 5/6
|
|
240
|
+
──────────────────────────────────────────────────────────────────────────
|
|
241
|
+
Pre-checks Configuración Build & Deploy Health Check Rollback/Log
|
|
242
|
+
│ │ │ │ │
|
|
243
|
+
├─ Token ├─ Detect ├─ Build ├─ Try 1 ├─ Needed?
|
|
244
|
+
│ │ │ │ │
|
|
245
|
+
├─ Rama ├─ vercel.json ├─ Deploy ├─ Try 2 ├─ Revert
|
|
246
|
+
│ │ │ │ │
|
|
247
|
+
├─ Secretos └─ Ready └─ Capturar URL ├─ Try 3 ├─ Log
|
|
248
|
+
│ │ │
|
|
249
|
+
└─ Tests └─ HTTP 200? └─ Done
|
|
250
|
+
│ │
|
|
251
|
+
▼ ▼
|
|
252
|
+
✅ OK ✅ OK o ❌ FALLA
|
|
253
|
+
│ │
|
|
254
|
+
└──────────────────────────────────────────────────┘
|
|
255
|
+
Todos los pasos ejecutados
|
|
256
|
+
│
|
|
257
|
+
▼
|
|
258
|
+
🚀 DESPLIEGUE COMPLETADO
|
|
259
|
+
│
|
|
260
|
+
▼
|
|
261
|
+
Mostrar URL, próximos pasos
|
|
262
|
+
Guardar estado en .sdd/estado.json
|
|
263
|
+
|
|
264
|
+
================================================================================
|
|
265
|
+
FLUJO DE DECISIÓN (IF/THEN)
|
|
266
|
+
================================================================================
|
|
267
|
+
|
|
268
|
+
SI VERCEL_TOKEN presente? NO → ERROR: Generar token
|
|
269
|
+
SÍ │
|
|
270
|
+
└─→ SI rama limpia? NO → ERROR: Commit cambios
|
|
271
|
+
SÍ │
|
|
272
|
+
└─→ SI sin secretos? NO → ERROR: Mueve secretos
|
|
273
|
+
SÍ │
|
|
274
|
+
└─→ SI tests OK? NO → ERROR: Arregla tests
|
|
275
|
+
SÍ │
|
|
276
|
+
└─→ PASO 2: Configuración
|
|
277
|
+
│
|
|
278
|
+
└─→ PASO 3: Deploy
|
|
279
|
+
│
|
|
280
|
+
└─→ PASO 4: Health Check
|
|
281
|
+
│
|
|
282
|
+
SI OK? NO?
|
|
283
|
+
│ └─→ Reintenta (3x)
|
|
284
|
+
│ │
|
|
285
|
+
│ SI persiste?
|
|
286
|
+
│ └─→ PASO 5: Rollback
|
|
287
|
+
│
|
|
288
|
+
└─→ PASO 6: Registrar
|
|
289
|
+
│
|
|
290
|
+
▼
|
|
291
|
+
✅ COMPLETADO
|
|
292
|
+
|
|
293
|
+
================================================================================
|
|
294
|
+
LÍNEA DE TIEMPO
|
|
295
|
+
================================================================================
|
|
296
|
+
|
|
297
|
+
00:00 Inicio (/sdd.desplegar)
|
|
298
|
+
│
|
|
299
|
+
00:05 PASO 1: Pre-checks (timeout: 60s)
|
|
300
|
+
│
|
|
301
|
+
00:30 PASO 2: Configuración (timeout: 30s)
|
|
302
|
+
│
|
|
303
|
+
00:35 PASO 3: Build (timeout: 900s/15 min)
|
|
304
|
+
│ Build local: ~60-120s
|
|
305
|
+
│ Deploy a Vercel: ~60-90s
|
|
306
|
+
│
|
|
307
|
+
02:45 PASO 4: Health Check (timeout: 60s)
|
|
308
|
+
│ Intento 1: ~5s
|
|
309
|
+
│ Si falla: espera 5s
|
|
310
|
+
│ Intento 2: ~5s
|
|
311
|
+
│ Si falla: espera 5s
|
|
312
|
+
│ Intento 3: ~5s
|
|
313
|
+
│
|
|
314
|
+
03:00 PASO 5: Rollback (timeout: 300s/si necesario)
|
|
315
|
+
│ Si health check falló: ~30s
|
|
316
|
+
│ Si OK: skip
|
|
317
|
+
│
|
|
318
|
+
03:15 PASO 6: Registrar (timeout: 10s)
|
|
319
|
+
│
|
|
320
|
+
▼
|
|
321
|
+
FIN TOTAL: ~3-4 minutos (típico)
|
|
322
|
+
MAX: ~30 minutos (si hay problemas)
|
|
323
|
+
|
|
324
|
+
================================================================================
|
|
325
|
+
COLORES DE ESTADO
|
|
326
|
+
================================================================================
|
|
327
|
+
|
|
328
|
+
🟢 ✅ Verde → OK, continuar
|
|
329
|
+
🔴 ❌ Rojo → Error, bloquea
|
|
330
|
+
🟡 ⚠️ Amarillo → Advertencia
|
|
331
|
+
🔵 ℹ️ Azul → Información
|
|
332
|
+
🟣 🔄 Púrpura → En progreso/Reintentando
|
|
333
|
+
|
|
334
|
+
================================================================================
|
|
@@ -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
|
+
|