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,237 @@
|
|
|
1
|
+
# Memoria, Observabilidad y Optimización de Tokens en SDD-ES
|
|
2
|
+
|
|
3
|
+
Este documento explica cómo SDD-ES mantiene continuidad entre sesiones (memoria por agente), cómo monitorizar el consumo de agentes sin depender del conteo de tokens del modelo, y cómo usar las nuevas técnicas de optimización de tokens (v2.5.0).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Memoria por agente
|
|
8
|
+
|
|
9
|
+
### Qué es
|
|
10
|
+
|
|
11
|
+
Cada agente del Grupo OPUS (arquitecto, asesor-datos, disenador-api, critico) tiene un archivo de memoria persistente en:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
.sdd/memoria/agente-{nombre}.md
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Este archivo crece automáticamente durante la sesión: cada vez que el agente escribe un archivo, el hook `PostToolUse` registra la fecha, el archivo modificado y un resumen del contenido.
|
|
18
|
+
|
|
19
|
+
### Para qué sirve
|
|
20
|
+
|
|
21
|
+
Claude Code no mantiene contexto entre sesiones. El archivo de memoria resuelve este problema: al inicio de una nueva sesión, el agente lee su archivo de memoria y recupera las decisiones tomadas en sesiones anteriores — qué arquitectura se eligió, qué restricciones aplican, qué se acordó con el usuario.
|
|
22
|
+
|
|
23
|
+
### Cómo funciona el hook
|
|
24
|
+
|
|
25
|
+
El hook `claude-hooks/agent-memory.js` se ejecuta como `PostToolUse` tras cada `Write` o `Edit`. Lee la variable de entorno `CLAUDE_AGENT_NAME` que Claude Code inyecta cuando hay un subagente activo, y si el agente es uno de los cuatro del Grupo OPUS, añade una entrada al archivo de memoria correspondiente.
|
|
26
|
+
|
|
27
|
+
Desde v2.5.0, el hook también emite una alerta por stderr cuando la memoria de un agente supera 50KB:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
⚠️ [agent-memory] Memoria de arquitecto supera 52KB — considera ejecutar /sdd.optimizar memoria
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Formato de una entrada de memoria
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
## 2026-06-13 — .sdd/especificaciones/2026-06-13-auth/spec.md
|
|
37
|
+
> # Especificación: Autenticación con magic link — Decisión: usar Resend para emails
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Cuándo leer la memoria
|
|
41
|
+
|
|
42
|
+
Los agentes leen su archivo de memoria al inicio de cada invocación. No necesitas hacer nada manualmente: si el archivo existe, el agente lo lee.
|
|
43
|
+
|
|
44
|
+
### Cuándo comprimir la memoria
|
|
45
|
+
|
|
46
|
+
Cuando la memoria supera 80 entradas o 50KB, empieza a consumir ventana de contexto sin aportar valor (entradas antiguas del mismo archivo son redundantes). Usa:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
/sdd.optimizar memoria
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Esto invoca `memory-compactor`, que deduplica entradas del mismo archivo (conserva solo la más reciente) y aplica compresión caveman (Nivel Full de `compresion-tokens`). Siempre guarda un backup `.original`.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 2. Ledger de consumo (observabilidad)
|
|
57
|
+
|
|
58
|
+
### Qué es
|
|
59
|
+
|
|
60
|
+
`.sdd/observabilidad/consumo.jsonl` es un archivo de líneas JSON (una por evento) que registra cada escritura de archivo por cualquier agente, incluyendo el agente principal. Se escribe en tiempo real por el mismo hook `agent-memory.js`.
|
|
61
|
+
|
|
62
|
+
Ejemplo de una línea del ledger:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{"ts":"2026-06-13T14:32:07.123Z","agente":"arquitecto","tool":"Write","archivo":".sdd/especificaciones/2026-06-13-auth/spec.md","bytes":4821}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Campos
|
|
69
|
+
|
|
70
|
+
| Campo | Descripción |
|
|
71
|
+
|-------|-------------|
|
|
72
|
+
| `ts` | Timestamp ISO 8601 del momento de escritura |
|
|
73
|
+
| `agente` | Nombre del agente (`CLAUDE_AGENT_NAME`) o `"main"` si es la sesión principal |
|
|
74
|
+
| `tool` | Herramienta usada: `Write`, `Edit`, `MultiEdit` |
|
|
75
|
+
| `archivo` | Ruta del archivo modificado |
|
|
76
|
+
| `bytes` | Tamaño en bytes del contenido escrito |
|
|
77
|
+
|
|
78
|
+
### Limitación importante
|
|
79
|
+
|
|
80
|
+
Los `bytes` miden el tamaño del contenido escrito en cada invocación — **no el consumo real de tokens del modelo**. Claude Code no expone el conteo de tokens al hook. Los bytes son un **proxy de magnitud**: escrituras grandes correlacionan con más trabajo, pero no son equivalentes a la facturación de la API.
|
|
81
|
+
|
|
82
|
+
Para costos exactos, usa el dashboard de Anthropic Console o la API de usage.
|
|
83
|
+
|
|
84
|
+
### Cómo usar el ledger
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
/sdd.estado consumo
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Esto invoca `observabilidad-consumo` y produce:
|
|
91
|
+
- Tabla de invocaciones y bytes por agente
|
|
92
|
+
- Alertas de fan-out (>5 agentes distintos, >20 invocaciones de un mismo agente)
|
|
93
|
+
- Top momentos de actividad por minuto
|
|
94
|
+
|
|
95
|
+
### Vaciar el ledger entre sesiones
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
echo "" > .sdd/observabilidad/consumo.jsonl
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 3. Técnicas de optimización de tokens (v2.5.0)
|
|
104
|
+
|
|
105
|
+
### El comando unificado
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
/sdd.optimizar
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Ejecuta el ciclo completo de 6 pasos: consumo → routing → compresión de memoria → auditoría de caché → presupuesto → reporte con acciones ordenadas por impacto.
|
|
112
|
+
|
|
113
|
+
Subcomandos disponibles:
|
|
114
|
+
|
|
115
|
+
| Subcomando | Qué hace |
|
|
116
|
+
|---|---|
|
|
117
|
+
| `/sdd.optimizar` | Ciclo completo |
|
|
118
|
+
| `/sdd.optimizar tokens` | Solo effort-router + cache-audit |
|
|
119
|
+
| `/sdd.optimizar memoria` | Solo memory-compactor |
|
|
120
|
+
| `/sdd.optimizar presupuesto` | Solo token-budget |
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### Técnica 1 — Effort routing (mayor impacto)
|
|
125
|
+
|
|
126
|
+
La skill `effort-router` recomienda el modelo y nivel de esfuerzo correcto para cada agente según la fase actual. Evita pagar Opus cuando la tarea es mecánica.
|
|
127
|
+
|
|
128
|
+
**Regla de oro:** si el agente toma una decisión que no se puede deshacer → Opus. Si ejecuta una decisión ya tomada → Sonnet o Haiku.
|
|
129
|
+
|
|
130
|
+
| Grupo | Fases | Ahorro vs. Opus-en-todo |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| A — Opus siempre | especificacion, planificacion, analisis | 0% |
|
|
133
|
+
| B — Sonnet suficiente | implementacion (backend/frontend), verificacion, qa | ~40% |
|
|
134
|
+
| C — Haiku suficiente | tests, docs, deploy, retro | ~80% |
|
|
135
|
+
|
|
136
|
+
Ahorro típico en una fase de `implementacion` completa: **~56%**.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### Técnica 2 — Compresión de memoria (previene degradación de contexto)
|
|
141
|
+
|
|
142
|
+
La skill `memory-compactor` actúa sobre `.sdd/memoria/agente-*.md`:
|
|
143
|
+
|
|
144
|
+
1. **Deduplica**: misma ruta modificada en fechas distintas → conserva solo la más reciente (reduce 40-60% en proyectos largos)
|
|
145
|
+
2. **Comprime**: aplica el diccionario caveman de `compresion-tokens` (Nivel Full, 80+ pares de reemplazos) sobre el texto de cada entrada
|
|
146
|
+
3. **Backup**: guarda `.original` antes de tocar nada
|
|
147
|
+
|
|
148
|
+
Cuándo actúa: cuando hay >80 entradas O >50KB en algún archivo de memoria.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### Técnica 3 — Auditoría de caché
|
|
153
|
+
|
|
154
|
+
La skill `cache-audit` detecta los 3 patrones que invalidan el prompt caching silenciosamente:
|
|
155
|
+
|
|
156
|
+
| Invalidador | Severidad | Fix |
|
|
157
|
+
|---|---|---|
|
|
158
|
+
| Timestamps dinámicos en el system prompt (`2026-06-13`) | Alta | Mover al final del prompt, en bloque separado |
|
|
159
|
+
| UUIDs / IDs de sesión embebidos en el prompt | Alta | Pasar como argumento, no como parte del system prompt |
|
|
160
|
+
| Contenido JSONL (`consumo.jsonl`) embebido en el prompt | Media | Leer con tool `Read` cuando se necesite |
|
|
161
|
+
|
|
162
|
+
El prompt caching reduce hasta un 90% el costo de tokens de entrada para bloques estables. Un solo invalidador en el sistema prompt anula el beneficio completo.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### Técnica 4 — Presupuesto por fase
|
|
167
|
+
|
|
168
|
+
La skill `token-budget` proyecta el costo relativo de las fases restantes y recomienda cuándo usar PTC paralelo vs. serial. Si hay historial en `consumo.jsonl`, calibra los pesos con la velocidad real de la sesión.
|
|
169
|
+
|
|
170
|
+
Regla de paralelización (de `orquestacion-ptc`):
|
|
171
|
+
|
|
172
|
+
| Tareas pendientes | Estrategia | Ahorro estimado |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| 1-2 | Serial directo | — |
|
|
175
|
+
| 3-5 independientes | PTC paralelo | ~70% |
|
|
176
|
+
| 6-10 independientes | PTC en 2 lotes | ~65% |
|
|
177
|
+
| Con dependencias | Serial (respetar grafo) | — |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 4. Cómo controlar los agentes con estos datos
|
|
182
|
+
|
|
183
|
+
### Detectar paralelización innecesaria
|
|
184
|
+
|
|
185
|
+
Si el ledger muestra >5 agentes activos en una sola fase, revisar `orquestacion-ptc`. Si los agentes se bloquean entre sí (uno necesita el output del otro), paralelizarlos desperdicia tokens.
|
|
186
|
+
|
|
187
|
+
Señal del ledger: muchos agentes distintos con pocas invocaciones cada uno → fan-out excesivo.
|
|
188
|
+
|
|
189
|
+
### Detectar agentes en loop
|
|
190
|
+
|
|
191
|
+
Si un agente tiene >20 invocaciones en el ledger de una sesión, está probablemente en un ciclo de auto-corrección.
|
|
192
|
+
|
|
193
|
+
Solución: `/sdd.estado agentes` y verificar condiciones de salida claras.
|
|
194
|
+
|
|
195
|
+
### Detectar memoria que conviene comprimir
|
|
196
|
+
|
|
197
|
+
La alerta del hook (`⚠️ Memoria supera 50KB`) es la señal principal. También visible desde `/sdd.optimizar`.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 5. Arquitectura del sistema (v2.5.0)
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
claude-hooks/
|
|
205
|
+
agent-memory.js ← Hook PostToolUse (Write/Edit/MultiEdit)
|
|
206
|
+
→ .sdd/memoria/agente-{nombre}.md (4 agentes OPUS)
|
|
207
|
+
→ .sdd/observabilidad/consumo.jsonl (todos los agentes)
|
|
208
|
+
→ stderr: alerta si memoria supera 50KB
|
|
209
|
+
|
|
210
|
+
skills/
|
|
211
|
+
observabilidad-consumo/ ← Lee consumo.jsonl, produce reporte, detecta fan-out
|
|
212
|
+
effort-router/ ← Routing Haiku/Sonnet/Opus por fase (v2.5.0)
|
|
213
|
+
memory-compactor/ ← Deduplicación + compresión de .sdd/memoria/ (v2.5.0)
|
|
214
|
+
cache-audit/ ← Detecta invalidadores silenciosos de caché (v2.5.0)
|
|
215
|
+
token-budget/ ← Proyecta costo por fase + recomendación PTC (v2.5.0)
|
|
216
|
+
compresion-tokens/ ← Diccionario caveman — reutilizado por memory-compactor
|
|
217
|
+
orquestacion-ptc/ ← Criterios PTC — reutilizados por token-budget
|
|
218
|
+
|
|
219
|
+
commands/
|
|
220
|
+
sdd.estado.md ← /sdd.estado consumo
|
|
221
|
+
sdd.optimizar.md ← Ciclo completo de optimización (v2.5.0)
|
|
222
|
+
sdd.comprimir.md ← /sdd.comprimir memoria → memory-compactor
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 6. Tabla completa de skills de eficiencia
|
|
228
|
+
|
|
229
|
+
| Skill | Qué hace | Cuándo usarla |
|
|
230
|
+
|-------|----------|---------------|
|
|
231
|
+
| `observabilidad-consumo` | Reporte del ledger JSONL | Siempre, o desde `/sdd.estado consumo` |
|
|
232
|
+
| `effort-router` | Recomienda Haiku/Sonnet/Opus por fase | Al inicio de cada fase o desde `/sdd.optimizar` |
|
|
233
|
+
| `memory-compactor` | Deduplica y comprime `.sdd/memoria/` | Cuando hay alerta de 50KB o desde `/sdd.optimizar memoria` |
|
|
234
|
+
| `cache-audit` | Detecta invalidadores de caché | Antes de `/sdd.implementar` en proyectos grandes |
|
|
235
|
+
| `token-budget` | Proyecta costo de fases restantes | Antes de fases costosas (analisis, implementacion larga) |
|
|
236
|
+
| `orquestacion-ptc` | Explica cuándo paralelizar agentes | Fan-out alto en el ledger |
|
|
237
|
+
| `compresion-tokens` | Comprime cualquier archivo `.sdd/` | Memoria muy larga, specs verbosas |
|
package/docs/MODELOS.md
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
| critico | **opus** | sonnet | haiku | Requiere razonamiento abstracto |
|
|
16
16
|
| seguridad | **opus** | — | sonnet, haiku | Auditoría debe ser exhaustiva |
|
|
17
17
|
| documentador | **sonnet** | haiku | opus (overkill) | Generación estructurada |
|
|
18
|
+
| investigador | **sonnet** | opus (investigación profunda) | haiku | Análisis comparativo |
|
|
19
|
+
| product-designer | **opus** | sonnet (MVPs) | haiku | Decisiones de producto irreversibles |
|
|
20
|
+
| architecture-designer | **sonnet** | opus (stacks complejos) | haiku | Propuesta técnica estructurada |
|
|
18
21
|
|
|
19
22
|
## Filosofía
|
|
20
23
|
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
# ¿Qué Pasa Si Algo Sale Mal? Guía de Recuperación
|
|
2
|
+
|
|
3
|
+
Este documento responde a las preguntas más comunes de usuarios no-técnicos cuando algo no sale como esperaban.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Premisa: Tu código está **siempre seguro**
|
|
8
|
+
|
|
9
|
+
Antes de cualquier respuesta, recuerda esto:
|
|
10
|
+
|
|
11
|
+
✅ Tu código está guardado en GitHub (historial completo)
|
|
12
|
+
✅ Cada cambio se registra (puedes ver quién cambió qué y cuándo)
|
|
13
|
+
✅ Puedes volver a una versión anterior en cualquier momento (sin perder nada)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Escenario 1: "El deploy falló — mi app no está en internet"
|
|
18
|
+
|
|
19
|
+
### ¿Por qué pasó?
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Vercel rechazó el código porque:
|
|
23
|
+
→ Falta una variable de entorno
|
|
24
|
+
→ Un archivo obligatorio no se generó
|
|
25
|
+
→ El código tiene un error que no detectamos en pruebas
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### ¿Qué hago?
|
|
29
|
+
|
|
30
|
+
**Opción A: Reintentar** (si fue un error pasajero)
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Claude responde:
|
|
34
|
+
"Voy a intentar publicar de nuevo..."
|
|
35
|
+
|
|
36
|
+
[Reintentos automáticos con espera]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Opción B: Arreglar el código**
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Si el error es técnico (variable faltante, etc.):
|
|
43
|
+
|
|
44
|
+
Tú dices: "Cambio X cosa"
|
|
45
|
+
Claude: "¿Qué cambias?"
|
|
46
|
+
Tú: "Agrega soporte para pagos"
|
|
47
|
+
|
|
48
|
+
Claude:
|
|
49
|
+
1. Edita el código
|
|
50
|
+
2. Prueba de nuevo
|
|
51
|
+
3. Intenta publicar
|
|
52
|
+
|
|
53
|
+
Tu versión anterior sigue en GitHub → sin miedo de cambiar
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Opción C: Esperar y intentar después**
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Tú dices: "Dejar para después"
|
|
60
|
+
|
|
61
|
+
Claude:
|
|
62
|
+
✅ Tu código está seguro en GitHub
|
|
63
|
+
✅ Puedes intentar publicar mañana
|
|
64
|
+
✅ Nada se perdió
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Escenario 2: "Cambié de idea a mitad del proceso"
|
|
70
|
+
|
|
71
|
+
### Caso: Empezamos a construir, pero quiero otra cosa
|
|
72
|
+
|
|
73
|
+
**Ejecuta `/sdd.constitucion` de nuevo:**
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Claude detecta: "Ya hay una constitución"
|
|
77
|
+
|
|
78
|
+
¿Quieres actualizar los principios?
|
|
79
|
+
|
|
80
|
+
Tú: "Sí, cambio X"
|
|
81
|
+
|
|
82
|
+
Claude:
|
|
83
|
+
1. Actualiza la constitución
|
|
84
|
+
2. Carga la especificación anterior
|
|
85
|
+
3. ¿Modifico la especificación también?
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Lo que NO se pierde:**
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
✅ Especificación anterior (en GitHub)
|
|
92
|
+
✅ Plan anterior (en GitHub)
|
|
93
|
+
✅ Código que se construyó (en GitHub — rama anterior)
|
|
94
|
+
|
|
95
|
+
Tú empiezas una nueva rama con los cambios.
|
|
96
|
+
Si cambias de idea de vuelta, la anterior sigue disponible.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Escenario 3: "Publiqué pero después quiero cambiar algo"
|
|
102
|
+
|
|
103
|
+
### Opción A: Cambio rápido (antes de compartir)
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
Tú dices: "Cambio el color del botón"
|
|
107
|
+
|
|
108
|
+
Claude:
|
|
109
|
+
1. Edita el código
|
|
110
|
+
2. Prueba
|
|
111
|
+
3. Publica la nueva versión (3 minutos)
|
|
112
|
+
|
|
113
|
+
Usuarios no notan nada (refresca la página y ven la versión nueva)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Opción B: Cambio importante (que afecta datos)
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Tú dices: "Quiero agregar una nueva pregunta al formulario"
|
|
120
|
+
|
|
121
|
+
Claude:
|
|
122
|
+
1. Actualiza la especificación
|
|
123
|
+
2. Genera un plan
|
|
124
|
+
3. Pide tu aprobación
|
|
125
|
+
4. Construye
|
|
126
|
+
5. Prueba
|
|
127
|
+
6. Publica
|
|
128
|
+
|
|
129
|
+
[Igual que la primera vez, pero más rápido porque ya tiene contexto]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Opción C: "Me arrepiento — vuelvo a la versión anterior"
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Tú dices: "Vuelve a cómo estaba hace 2 horas"
|
|
136
|
+
|
|
137
|
+
Claude:
|
|
138
|
+
1. Ve a GitHub
|
|
139
|
+
2. Encuentra ese commit
|
|
140
|
+
3. Publica esa versión
|
|
141
|
+
|
|
142
|
+
Tu sitio está igual que antes. Sin pérdida de datos.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Escenario 4: "Mi cliente dice que algo no funciona"
|
|
148
|
+
|
|
149
|
+
### Paso 1: Reproducir el problema
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Tú dices: "Mi cliente dice que X no funciona"
|
|
153
|
+
|
|
154
|
+
Claude:
|
|
155
|
+
1. Prueba el sitio en vivo
|
|
156
|
+
2. Intenta reproducir el problema
|
|
157
|
+
3. Pregunta: "¿Qué exactamente hizo tu cliente?"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Ejemplo:**
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
Tú: "Mi cliente dice que el formulario no calcula el precio"
|
|
164
|
+
|
|
165
|
+
Claude:
|
|
166
|
+
"¿A qué tipo de proyecto selecciona?"
|
|
167
|
+
Tú: "Logo simple"
|
|
168
|
+
|
|
169
|
+
Claude:
|
|
170
|
+
"¿Cuántas revisiones elige?"
|
|
171
|
+
Tú: "Normal"
|
|
172
|
+
|
|
173
|
+
[Claude llena el formulario con esos datos]
|
|
174
|
+
|
|
175
|
+
Claude:
|
|
176
|
+
"Aquí veo el problema: el precio dice $200, pero debería ser $300"
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Paso 2: Identificar la causa
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
Claude diagnostica:
|
|
183
|
+
|
|
184
|
+
❌ Error de cálculo (la fórmula está mal)
|
|
185
|
+
❌ Falta una opción (ej: urgencia 24 horas)
|
|
186
|
+
❌ Base de datos no guarda bien los datos
|
|
187
|
+
✅ Problema del navegador del cliente (caché viejo)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Paso 3: Arreglar
|
|
191
|
+
|
|
192
|
+
**Si es cálculo incorrecto:**
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
Tú: "El precio está mal"
|
|
196
|
+
|
|
197
|
+
Claude:
|
|
198
|
+
"¿Cuál debería ser el precio correcto para logo + normal?"
|
|
199
|
+
Tú: "$400"
|
|
200
|
+
|
|
201
|
+
Claude:
|
|
202
|
+
1. Edita la fórmula
|
|
203
|
+
2. Prueba con diferentes opciones
|
|
204
|
+
3. Publica
|
|
205
|
+
|
|
206
|
+
Listo. Tu cliente verá el precio correcto.
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Si es caché del navegador:**
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Claude:
|
|
213
|
+
"Dile a tu cliente que actualice la página (Ctrl+F5 o Cmd+Shift+R)"
|
|
214
|
+
|
|
215
|
+
Eso borra la copia antigua del sitio de su navegador
|
|
216
|
+
y carga la versión nueva.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Escenario 5: "¿Qué pasa si GitHub desaparece?"
|
|
222
|
+
|
|
223
|
+
### Respuesta: No es realista, pero aquí está el plan
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
GitHub es propiedad de Microsoft. Es tan importante como AWS o Google.
|
|
227
|
+
La probabilidad de que desaparezca es 0.001%.
|
|
228
|
+
|
|
229
|
+
Pero si quieres dormir tranquilo:
|
|
230
|
+
|
|
231
|
+
1. Tu código está en Vercel también (servidor en vivo)
|
|
232
|
+
2. Puedes hacer "backup" a tu computadora en cualquier momento
|
|
233
|
+
(comando: git clone https://github.com/tu-user/tu-repo)
|
|
234
|
+
3. Puedes mover tu repo a GitLab o Gitea en 5 minutos
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Escenario 6: "¿Qué pasa si Vercel cobra y no puedo pagar?"
|
|
240
|
+
|
|
241
|
+
### Respuesta: No sucede sin advertencia
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
Vercel es gratis hasta 100GB de ancho de banda (datos descargados).
|
|
245
|
+
|
|
246
|
+
Si algo cambia:
|
|
247
|
+
1. Te lo avisan con 30 días de anticipación
|
|
248
|
+
2. Tu sitio NO desaparece (sigue funcionando)
|
|
249
|
+
3. Puedes mover a otro servidor gratis (Netlify, Railway, etc.)
|
|
250
|
+
4. Tus datos en GitHub no se pierden
|
|
251
|
+
|
|
252
|
+
Claude puede ayudarte a mover en 30 minutos.
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Escenario 7: "¿Qué pasa si cambia mi requerimiento legal?"
|
|
258
|
+
|
|
259
|
+
### Ejemplo: Necesito cumplir GDPR, HIPAA, etc.
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
Tú: "Mi cliente quiere que el sitio cumpla GDPR"
|
|
263
|
+
|
|
264
|
+
Claude:
|
|
265
|
+
1. Ejecuta /sdd.compliance automáticamente
|
|
266
|
+
2. Identifica qué falta
|
|
267
|
+
3. Genera un plan
|
|
268
|
+
4. Pregunta: "¿Apruebo estos cambios?"
|
|
269
|
+
5. Implementa
|
|
270
|
+
|
|
271
|
+
Ejemplo de cambios:
|
|
272
|
+
- Agregar "política de privacidad"
|
|
273
|
+
- Permitir que usuarios descarguen sus datos
|
|
274
|
+
- Encriptar datos sensibles
|
|
275
|
+
- Otros cambios específicos
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Escenario 8: "¿Qué pasa si alguien hackea mi sitio?"
|
|
281
|
+
|
|
282
|
+
### Respuesta: SDD-ES lo previene
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
Durante el proceso:
|
|
286
|
+
|
|
287
|
+
✅ El agente de seguridad revisó el código automáticamente
|
|
288
|
+
✅ Se prueban ataques comunes (XSS, SQL injection, etc.)
|
|
289
|
+
✅ Secretos (contraseñas, API keys) no están en el código
|
|
290
|
+
✅ Validación de datos (usuario no puede inyectar código malicioso)
|
|
291
|
+
|
|
292
|
+
Si algo pasara:
|
|
293
|
+
|
|
294
|
+
1. GitHub registra quién cambió qué (auditoría completa)
|
|
295
|
+
2. Puedes volver a una versión anterior en segundos
|
|
296
|
+
3. Investigar qué pasó (historial de cambios)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Escenario 9: "¿Y si alguien lo copia?"
|
|
302
|
+
|
|
303
|
+
### Respuesta: Depende del contexto
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
Casos:
|
|
307
|
+
|
|
308
|
+
❌ Algo muy valioso (algoritmo secreto, datos únicos)
|
|
309
|
+
→ Considera cerrar el repo (private en GitHub)
|
|
310
|
+
→ Requiere autenticación para acceder al sitio
|
|
311
|
+
|
|
312
|
+
✅ Algo público (herramienta útil, componente reutilizable)
|
|
313
|
+
→ Está bien que la copien
|
|
314
|
+
→ Agrega tu licencia (MIT: "úsalo gratis, dame crédito")
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Escenario 10: "Pasó algo raro — no sé qué está mal"
|
|
320
|
+
|
|
321
|
+
### Paso 1: Ejecutar el diagnóstico
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Tú: "Algo no funciona bien"
|
|
325
|
+
|
|
326
|
+
Claude:
|
|
327
|
+
"Voy a revisar todo..."
|
|
328
|
+
|
|
329
|
+
Ejecuta: /sdd.doctor
|
|
330
|
+
|
|
331
|
+
Este comando verifica:
|
|
332
|
+
✅ Código sintaxis correcta
|
|
333
|
+
✅ Todos los archivos presentes
|
|
334
|
+
✅ Base de datos conectada
|
|
335
|
+
✅ Servidor respondiendo
|
|
336
|
+
✅ Tests pasando
|
|
337
|
+
✅ Sin secretos expuestos
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Paso 2: Obtener un reporte
|
|
341
|
+
|
|
342
|
+
```
|
|
343
|
+
Claude te muestra:
|
|
344
|
+
|
|
345
|
+
DIAGNOSTICO:
|
|
346
|
+
✅ Código bien
|
|
347
|
+
✅ Tests pasando
|
|
348
|
+
❌ Base de datos no conecta
|
|
349
|
+
|
|
350
|
+
CAUSA PROBABLE:
|
|
351
|
+
El archivo de base de datos se eliminó accidentalmente.
|
|
352
|
+
|
|
353
|
+
SOLUCION:
|
|
354
|
+
Voy a restaurar desde GitHub...
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Resumen: No hay error que no se pueda arreglar
|
|
360
|
+
|
|
361
|
+
| Problema | Tiempo | Reversible | Datos seguros |
|
|
362
|
+
|----------|--------|-----------|----------------|
|
|
363
|
+
| Deploy falló | 2 min reintentar | ✅ Sí | ✅ Sí (GitHub) |
|
|
364
|
+
| Cambié de idea | 10 min refactor | ✅ Sí | ✅ Sí (ramas) |
|
|
365
|
+
| Cliente reporta bug | 5 min fix + test | ✅ Sí | ✅ Sí (auditoria) |
|
|
366
|
+
| GitHub desaparece | 1 hora mover | ✅ Sí | ✅ Sí (backup local) |
|
|
367
|
+
| Vercel cobra extra | 30 min migrar | ✅ Sí | ✅ Sí (GitHub) |
|
|
368
|
+
| Compliance nueva | 20 min auditar | ✅ Sí | ✅ Sí (reportes) |
|
|
369
|
+
| Hackeo potencial | — | ✅ Sí (rollback) | ✅ Sí (GitHub audit) |
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Mantra: "Tu código está seguro, cualquier cambio es reversible"
|
|
374
|
+
|
|
375
|
+
Esto no es verdad en 99% de las herramientas.
|
|
376
|
+
|
|
377
|
+
**Con SDD-ES:**
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
GitHub → historial completo (quién, qué, cuándo)
|
|
381
|
+
Vercel → roll-forward/rollback en 1 click
|
|
382
|
+
Especificación → documento versionado
|
|
383
|
+
Plan → aprobado por ti, registrado
|
|
384
|
+
|
|
385
|
+
No hay decisión que no puedas deshacer.
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Última línea: Si necesitas ayuda
|
|
391
|
+
|
|
392
|
+
```
|
|
393
|
+
Tu proyecto tiene:
|
|
394
|
+
|
|
395
|
+
📝 Especificación clara (qué debería hacer)
|
|
396
|
+
📋 Plan técnico (cómo se construyó)
|
|
397
|
+
📊 Cambios documentados (quién hizo qué)
|
|
398
|
+
✅ Tests automáticos (qué funciona)
|
|
399
|
+
🔒 Auditoría de seguridad (vulnerabilidades conocidas)
|
|
400
|
+
|
|
401
|
+
Si algo está mal, Claude tiene TODA la información para arreglarlo.
|
|
402
|
+
|
|
403
|
+
Sin necesidad de programar. Solo describir el problema.
|
|
404
|
+
```
|