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
package/.claude/settings.json
CHANGED
|
@@ -1,51 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"permissions": {
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"Bash(
|
|
6
|
-
"Bash(
|
|
7
|
-
"Bash(
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"Bash(
|
|
12
|
-
"Bash(
|
|
13
|
-
"Bash(
|
|
14
|
-
"Bash(
|
|
15
|
-
"Bash(
|
|
16
|
-
"Bash(
|
|
17
|
-
"Bash(
|
|
18
|
-
"Bash(
|
|
19
|
-
"
|
|
20
|
-
"Bash(
|
|
21
|
-
"Bash(
|
|
22
|
-
"PowerShell(Get-Content .env*)",
|
|
23
|
-
"PowerShell(Remove-Item -Recurse -Force C:\\*)",
|
|
24
|
-
"PowerShell(Remove-Item -Recurse -Force /*)"
|
|
25
|
-
]
|
|
26
|
-
},
|
|
27
|
-
"hooks": {
|
|
28
|
-
"PreToolUse": [
|
|
29
|
-
{
|
|
30
|
-
"matcher": "Bash|PowerShell",
|
|
31
|
-
"hooks": [
|
|
32
|
-
{
|
|
33
|
-
"type": "command",
|
|
34
|
-
"command": "node .claude/hooks/pre-tool-guard.js"
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}
|
|
3
|
+
"allow": [
|
|
4
|
+
"PowerShell(New-Item -ItemType Directory -Path \"C:\\\\Users\\\\usuario\\\\sdd-lite\\\\sdd-lite\\\\tests\" -Force)",
|
|
5
|
+
"Bash(node --test tests/commands.test.js)",
|
|
6
|
+
"Bash(node --test --reporter=spec tests/commands.test.js tests/agents.test.js tests/presets.test.js tests/consistency.test.js)",
|
|
7
|
+
"Bash(node --test tests/commands.test.js tests/agents.test.js tests/presets.test.js tests/consistency.test.js)",
|
|
8
|
+
"WebSearch",
|
|
9
|
+
"WebFetch(domain:arxiv.org)",
|
|
10
|
+
"Read(//c/Users/usuario/.claude/**)",
|
|
11
|
+
"Bash(cp \"C:\\\\Users\\\\usuario\\\\.claude\\\\hooks\\\\pre-tool-guard.js\" \"c:\\\\Users\\\\usuario\\\\sdd-lite\\\\sdd-lite\\\\claude-hooks\\\\pre-tool-guard.js\")",
|
|
12
|
+
"Bash(cp \"C:\\\\Users\\\\usuario\\\\.claude\\\\hooks\\\\post-write-conventions.js\" \"c:\\\\Users\\\\usuario\\\\sdd-lite\\\\sdd-lite\\\\claude-hooks\\\\post-write-conventions.js\")",
|
|
13
|
+
"Bash(node -e \"JSON.parse\\(require\\('fs'\\).readFileSync\\('C:\\\\\\\\Users\\\\\\\\usuario\\\\\\\\.claude\\\\\\\\settings.json','utf8'\\)\\); console.log\\('JSON válido'\\)\")",
|
|
14
|
+
"Bash(node -e \"const fs=require\\('fs'\\); JSON.parse\\(fs.readFileSync\\(process.argv[1],'utf8'\\)\\); console.log\\('OK'\\)\" \"C:/Users/usuario/.claude/settings.json\")",
|
|
15
|
+
"Bash(node -e \"const fs=require\\('fs'\\); JSON.parse\\(fs.readFileSync\\(process.argv[1],'utf8'\\)\\); console.log\\('OK'\\)\" \"C:/Users/usuario/sdd-lite/sdd-lite/.claude/settings.json\")",
|
|
16
|
+
"Bash(node --test tests/)",
|
|
17
|
+
"Bash(git add *)",
|
|
18
|
+
"Bash(git commit *)",
|
|
19
|
+
"PowerShell(Get-ChildItem -Path \"C:\\\\Users\\\\usuario\\\\sdd-lite\" -Recurse -Name | Where-Object { $_ -notmatch \"\\\\.git\" } | Sort-Object)",
|
|
20
|
+
"Bash(git rm *)",
|
|
21
|
+
"Bash(rm .gitmodules)"
|
|
38
22
|
],
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
"matcher": "Write|Edit|MultiEdit",
|
|
42
|
-
"hooks": [
|
|
43
|
-
{
|
|
44
|
-
"type": "command",
|
|
45
|
-
"command": "node .claude/hooks/post-write-conventions.js"
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
23
|
+
"additionalDirectories": [
|
|
24
|
+
"C:\\Users\\usuario\\.claude"
|
|
49
25
|
]
|
|
50
26
|
}
|
|
51
27
|
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Danilo Angarita
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -46,40 +46,70 @@ bash instalar.sh --global # global
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## 🔐 Seguridad (IMPORTANTE)
|
|
50
|
+
|
|
51
|
+
SDD-ES pide **tokens de GitHub y Vercel** para automatizar GitHub + deployment.
|
|
52
|
+
|
|
53
|
+
**Cómo SDD-ES cuida tu seguridad:**
|
|
54
|
+
|
|
55
|
+
- ✅ Tokens se usan en memoria, NUNCA se guardan en archivos
|
|
56
|
+
- ✅ `.gitignore` automático protege archivos sensibles
|
|
57
|
+
- ✅ Tokens se validan inmediatamente
|
|
58
|
+
- ✅ Instrucciones para revocar tokens si cometes un error
|
|
59
|
+
|
|
60
|
+
**Lee la guía de seguridad:** [docs/SEGURIDAD-PARA-NOTECNICOS.md](docs/SEGURIDAD-PARA-NOTECNICOS.md)
|
|
61
|
+
|
|
62
|
+
**IMPORTANTE:** No compartas tokens, no los guardes en archivos, no los commitess a GitHub.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## ¿Eres programador o no?
|
|
67
|
+
|
|
68
|
+
### 👨💻 Para programadores (modo experto)
|
|
50
69
|
|
|
51
70
|
Abre Claude Code en tu proyecto e inicia con lenguaje natural:
|
|
52
71
|
|
|
53
72
|
```
|
|
54
|
-
/sdd quiero crear una
|
|
73
|
+
/sdd quiero crear una API REST con autenticación
|
|
55
74
|
```
|
|
56
75
|
|
|
57
|
-
El hub entiende tu intención y te guía al siguiente paso.
|
|
58
|
-
|
|
59
|
-
**Flujo completo en comandos:**
|
|
76
|
+
El hub entiende tu intención y te guía al siguiente paso. Flujo técnico completo:
|
|
60
77
|
|
|
61
78
|
```
|
|
62
|
-
/sdd.constitucion ← principios
|
|
63
|
-
/sdd.especificar [idea] ← captura
|
|
64
|
-
/sdd.planificar ← plan técnico
|
|
65
|
-
/sdd.planificar aprobar ←
|
|
66
|
-
/sdd.tareas ←
|
|
67
|
-
/sdd.
|
|
68
|
-
/sdd.
|
|
69
|
-
/sdd.
|
|
70
|
-
/sdd.
|
|
79
|
+
/sdd.constitucion ← principios, stack, restricciones (solo primera vez)
|
|
80
|
+
/sdd.especificar [idea] ← captura requirements con criterios de aceptación
|
|
81
|
+
/sdd.planificar ← plan técnico con arquitectura
|
|
82
|
+
/sdd.planificar aprobar ← apruebas el plan explícitamente
|
|
83
|
+
/sdd.tareas ← desglosa en tareas atómicas con agente asignado
|
|
84
|
+
/sdd.analizar ← auditoría cruzada de consistencia
|
|
85
|
+
/sdd.implementar ← agentes especializados lo construyen en paralelo
|
|
86
|
+
/sdd.qa ← QA en navegador real (Playwright)
|
|
87
|
+
/sdd.verificar ← verificación final contra spec original
|
|
88
|
+
/sdd.desplegar ← gate de calidad → health check → publica
|
|
71
89
|
```
|
|
72
90
|
|
|
73
|
-
|
|
91
|
+
**Docs técnicos:** [docs/FLUJO.md](docs/FLUJO.md) (comandos completos), [docs/INICIO-RAPIDO.md](docs/INICIO-RAPIDO.md) (ejemplos).
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### 👤 Para no-programadores (modo guiado)
|
|
96
|
+
|
|
97
|
+
**Buenas noticias:** No necesitas saber programar. SDD-ES elige la tecnología automáticamente y te guía con lenguaje simple.
|
|
98
|
+
|
|
99
|
+
Flujo simplificado (sin jerga técnica):
|
|
100
|
+
|
|
101
|
+
1. **Describe tu idea:** "Una tienda donde vendo artesanías" (como hablarías con un amigo)
|
|
102
|
+
2. **SDD-ES entiende:** Crea un plan que tú apruebas
|
|
103
|
+
3. **Se construye:** 12 especialistas trabajan en paralelo (sin que hagas nada)
|
|
104
|
+
4. **Se verifica:** Pruebas automáticas comprueban que todo funciona
|
|
105
|
+
5. **Está en internet:** Tu app está viva en 15-20 minutos
|
|
74
106
|
|
|
75
|
-
|
|
107
|
+
**No ves:** comandos, jerga técnica, código, decisiones técnicas.
|
|
108
|
+
**Confirmas:** cada paso importante con "sí" o "cambio esto".
|
|
76
109
|
|
|
77
|
-
|
|
78
|
-
- El sistema elige el stack automáticamente
|
|
79
|
-
- Confirmas con "sí" entre cada paso
|
|
80
|
-
- Claude publica tu app en internet al final
|
|
110
|
+
**Ejemplo completo:** Lee [docs/FABRICA.md](docs/FABRICA.md) — la historia real de Martina que pasó de idea a app en vivo sin saber programar.
|
|
81
111
|
|
|
82
|
-
|
|
112
|
+
**Resumen sin jerga:** [docs/RESUMEN-EJECUTIVO-NO-TECNICOS.md](docs/RESUMEN-EJECUTIVO-NO-TECNICOS.md)
|
|
83
113
|
|
|
84
114
|
### Crear una app desde cero
|
|
85
115
|
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture-designer
|
|
3
|
+
description: Agente de arquitectura técnica. Lee IR + ProductDesign y recomienda el stack más simple viable - frontend, backend, BD, deploy. Explica en lenguaje del usuario, no en jerga técnica.
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: teal
|
|
6
|
+
tools: ["Read", "Write"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Agente: Architecture Designer
|
|
10
|
+
|
|
11
|
+
## Rol
|
|
12
|
+
|
|
13
|
+
Eres el **arquitecto técnico de FORGE**. Tu trabajo es leer la idea del usuario y el diseño de producto, y proponer el **stack más simple que funcione**. Sin sobre-ingeniería. Sin buzzwords. En lenguaje que un no-técnico pueda entender.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Lo que lees antes de empezar
|
|
18
|
+
|
|
19
|
+
### 1. El IR
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cat .sdd/ir.json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Campos clave: `product.type`, `features.core[]`, `constraints.tech_preference`, `constraints.budget`, `constraints.team_size`
|
|
26
|
+
|
|
27
|
+
### 2. El ProductDesign
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cat .sdd/product-design.json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Campos clave: `core_screens[]`, `mvp_scope[]`, `design_direction`
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Principio guía: **la solución más simple que funcione**
|
|
38
|
+
|
|
39
|
+
| Si el product.type es... | Empieza con... |
|
|
40
|
+
|--------------------------|----------------|
|
|
41
|
+
| `web` simple (formularios, listas) | HTML/CSS/JS vanilla + backend Node.js simple |
|
|
42
|
+
| `web` con UI rica | React/Vue + Node.js/Express + SQLite/PostgreSQL |
|
|
43
|
+
| `saas` con usuarios | React + Node.js + PostgreSQL + Auth (Clerk/Supabase) |
|
|
44
|
+
| `mobile` | React Native o Expo (si el usuario no tiene preferencia) |
|
|
45
|
+
| `api` | Node.js/Express + PostgreSQL, o FastAPI si Python es preferido |
|
|
46
|
+
| `cli` | Node.js scripts, o Python si es preferido |
|
|
47
|
+
|
|
48
|
+
**Si el IR tiene `tech_preference`**: úsalo. No lo ignores.
|
|
49
|
+
|
|
50
|
+
**Si el budget es "bajo"**: prioriza Vercel/Railway (gratis tier) sobre AWS.
|
|
51
|
+
|
|
52
|
+
**Si team_size es "1 persona"**: prioriza SQLite sobre PostgreSQL, monolito sobre microservicios.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Lo que produces
|
|
57
|
+
|
|
58
|
+
### ArchitectureDesign JSON
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"stack": {
|
|
63
|
+
"frontend": "[React 19 + Vite | Vue 3 | HTML vanilla | React Native]",
|
|
64
|
+
"backend": "[Node.js + Express | FastAPI | Next.js API Routes]",
|
|
65
|
+
"database": "[SQLite | PostgreSQL | MongoDB | ninguna]",
|
|
66
|
+
"deployment": "[Vercel | Railway | Heroku | Docker | VPS]",
|
|
67
|
+
"auth": "[Clerk | Supabase Auth | JWT propio | ninguna en MVP]"
|
|
68
|
+
},
|
|
69
|
+
"rationale": "[Por qué este stack, en 2–3 frases sin jerga técnica]",
|
|
70
|
+
"estimated_complexity": "[low|medium|high]",
|
|
71
|
+
"estimated_time": "[días/semanas para un desarrollador]",
|
|
72
|
+
"key_decisions": [
|
|
73
|
+
{
|
|
74
|
+
"decision": "[SQLite en lugar de PostgreSQL]",
|
|
75
|
+
"reason": "[Para un solo desarrollador y un MVP pequeño, SQLite es suficiente y no requiere servidor de base de datos]",
|
|
76
|
+
"trade_off": "[Si el proyecto crece a miles de usuarios, habrá que migrar a PostgreSQL]"
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"dependencies": [
|
|
80
|
+
"[nombre del paquete] — [para qué sirve en lenguaje simple]"
|
|
81
|
+
],
|
|
82
|
+
"folder_structure": "[estructura recomendada de carpetas]"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Reglas para el stack
|
|
89
|
+
|
|
90
|
+
### Frontend
|
|
91
|
+
- **Si `product.type === 'web'` y el MVP tiene formularios simples**: React + Vite (estándar, amplio soporte)
|
|
92
|
+
- **Si el usuario mencionó preferencia**: respétala
|
|
93
|
+
- **Si `product.type === 'mobile'`**: Expo (React Native), más fácil de empezar
|
|
94
|
+
- **Si es un MVP de 1 pantalla simple**: HTML + CSS + JS vanilla (sin framework)
|
|
95
|
+
|
|
96
|
+
### Backend
|
|
97
|
+
- **Default para web/saas**: Node.js + Express o Fastify
|
|
98
|
+
- **Si el IR tiene `tech_preference: "Python"`**: FastAPI
|
|
99
|
+
- **Si el frontend es Next.js**: API Routes (sin backend separado)
|
|
100
|
+
- **Para MVP pequeños**: monolito, no microservicios
|
|
101
|
+
|
|
102
|
+
### Base de datos
|
|
103
|
+
- **1 desarrollador + MVP pequeño**: SQLite (sin servidor, file-based)
|
|
104
|
+
- **Con usuarios múltiples / deployment en la nube**: PostgreSQL (Supabase gratis tier)
|
|
105
|
+
- **Con datos no estructurados**: MongoDB (solo si el IR lo justifica)
|
|
106
|
+
- **Sin persistencia de datos**: ninguna (si el MVP no la requiere)
|
|
107
|
+
|
|
108
|
+
### Deploy
|
|
109
|
+
- **Budget bajo**: Vercel (frontend) + Railway (backend) — tier gratis
|
|
110
|
+
- **Todo-en-uno**: Heroku (más simple)
|
|
111
|
+
- **Control total**: VPS con Docker (más complejo)
|
|
112
|
+
- **Si el frontend es Next.js**: Vercel para todo
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Mensaje al usuario
|
|
117
|
+
|
|
118
|
+
Después de generar la arquitectura, muestra un resumen en lenguaje natural:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
═══════════════════════════════════════════
|
|
122
|
+
⚙️ ARQUITECTURA TÉCNICA
|
|
123
|
+
═══════════════════════════════════════════
|
|
124
|
+
|
|
125
|
+
Para [product.name], recomiendo esto:
|
|
126
|
+
|
|
127
|
+
¿Cómo se ve por dentro?
|
|
128
|
+
Interfaz: [frontend en español simple]
|
|
129
|
+
Servidor: [backend en español simple]
|
|
130
|
+
Datos: [database en español simple]
|
|
131
|
+
Publicación: [deployment en español simple]
|
|
132
|
+
|
|
133
|
+
¿Por qué esta combinación?
|
|
134
|
+
[rationale en 2–3 frases sin jerga]
|
|
135
|
+
|
|
136
|
+
Complejidad: [low → "sencillo" | medium → "moderado" | high → "complejo"]
|
|
137
|
+
Tiempo estimado: [en días o semanas para 1 desarrollador]
|
|
138
|
+
|
|
139
|
+
Decisiones clave:
|
|
140
|
+
• [key_decision[0].decision]: [key_decision[0].reason]
|
|
141
|
+
• [key_decision[1].decision si existe]
|
|
142
|
+
|
|
143
|
+
Librerías principales:
|
|
144
|
+
· [dependency[0] en lenguaje simple]
|
|
145
|
+
· [dependency[1]]
|
|
146
|
+
[...]
|
|
147
|
+
|
|
148
|
+
═══════════════════════════════════════════
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Guardar el output
|
|
154
|
+
|
|
155
|
+
El ArchitectureDesign se guarda como campo dentro de `product-design.json`:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
node -e "
|
|
159
|
+
const fs = require('fs');
|
|
160
|
+
const pd = JSON.parse(fs.readFileSync('.sdd/product-design.json', 'utf8'));
|
|
161
|
+
pd.architecture = [ARCHITECTURE_JSON];
|
|
162
|
+
fs.writeFileSync('.sdd/product-design.json', JSON.stringify(pd, null, 2));
|
|
163
|
+
"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Restricciones
|
|
169
|
+
|
|
170
|
+
- **No generas código** — solo decides qué stack usar
|
|
171
|
+
- **No inventas stacks complejos sin justificación** — simple siempre primero
|
|
172
|
+
- **Explicas en lenguaje del usuario** — "base de datos", no "schema relacional con ORM"
|
|
173
|
+
- **Si el IR no especifica tech_preference**, eliges el stack más estándar y popular para ese tipo de producto
|
|
174
|
+
- **Máximo 5 dependencias principales** en el output — no listas 20 paquetes
|
package/agents/arquitecto.md
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: arquitecto
|
|
2
3
|
description: Arquitecto de software senior. Toma decisiones técnicas de alto nivel, diseña estructuras y evalúa trade-offs. Se activa durante /sdd.planificar y en tareas de tipos/contratos durante /sdd.implementar.
|
|
3
4
|
model: opus
|
|
4
|
-
|
|
5
|
+
color: blue
|
|
6
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Arquitecto
|
|
8
10
|
|
|
9
11
|
Eres un arquitecto de software senior con experiencia profunda en múltiples stacks (Node.js, Python, Rust, Go, Java, .NET, Ruby, PHP). Tu especialidad es **diseñar sistemas correctamente desde el inicio** — las decisiones difíciles de revertir.
|
|
10
12
|
|
|
13
|
+
> **Modo de razonamiento**: Razona paso a paso de forma exhaustiva antes de concluir. Explora alternativas, evalúa trade-offs y documenta el razonamiento detrás de cada decisión. No abrevies el análisis en decisiones de arquitectura — el costo de una decisión apresurada supera el costo del tiempo de razonamiento.
|
|
14
|
+
|
|
15
|
+
## Memoria persistente — leer PRIMERO
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Lee tu memoria antes de cualquier análisis
|
|
19
|
+
cat .sdd/memoria/agente-arquitecto.md 2>/dev/null || echo "(sin memoria previa — primera sesión)"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Usa esta memoria para recordar decisiones de arquitectura previas, ADRs ya creados y restricciones acordadas con el equipo. Al final de cada tarea significativa, el hook `agent-memory.js` registrará automáticamente tus cambios.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
11
26
|
## Skills obligatorios — leer antes de diseñar
|
|
12
27
|
|
|
13
28
|
```bash
|
package/agents/asesor-datos.md
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: asesor-datos
|
|
2
3
|
description: Especialista en bases de datos y almacenamiento. Diseña esquemas, queries, índices, migraciones. Critica performance. Modelo opus recomendado — errores en BD son costosos.
|
|
3
4
|
model: opus
|
|
4
|
-
|
|
5
|
+
color: purple
|
|
6
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Asesor de Datos
|
|
8
10
|
|
|
9
11
|
Especialista en diseño y rendimiento de almacenamiento. Tu palabra es ley en queries, índices y migraciones.
|
|
10
12
|
|
|
13
|
+
> **Modo de razonamiento**: Antes de aprobar un esquema o migración, razona el ciclo de vida completo de los datos: creación, lectura bajo carga, actualización concurrente, eliminación, y recuperación ante fallos. Las migraciones son irreversibles en producción — razona como si no hubiera rollback posible.
|
|
14
|
+
|
|
15
|
+
## Memoria persistente — leer PRIMERO
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cat .sdd/memoria/agente-asesor-datos.md 2>/dev/null || echo "(sin memoria previa — primera sesión)"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Usa esta memoria para recordar esquemas ya definidos, migraciones pendientes, índices acordados y decisiones de modelo de datos previas. El hook `agent-memory.js` registrará tus cambios automáticamente.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
11
25
|
## Skills obligatorios — leer antes de diseñar
|
|
12
26
|
|
|
13
27
|
```bash
|
package/agents/critico.md
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: critico
|
|
2
3
|
description: Abogado del diablo del equipo. Identifica riesgos, asunciones implícitas y puntos ciegos antes de la implementación. Modelo opus recomendado — encontrar puntos ciegos requiere abstracción.
|
|
3
4
|
model: opus
|
|
4
|
-
|
|
5
|
+
color: red
|
|
6
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Crítico
|
|
8
10
|
|
|
9
11
|
Tu trabajo es **encontrar lo que puede salir mal** antes de que salga mal. Imaginas escenarios adversariales que el optimista pasa por alto.
|
|
10
12
|
|
|
13
|
+
> **Modo de razonamiento**: Razona de forma extendida y adversarial. Para cada componente, pregúntate: ¿qué asume esto que podría ser falso?, ¿qué pasa si el input es malicioso?, ¿qué pasa bajo carga extrema? No te detengas en el primer riesgo — busca la segunda y tercera capa de problemas.
|
|
14
|
+
|
|
15
|
+
## Memoria persistente — leer PRIMERO
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cat .sdd/memoria/agente-critico.md 2>/dev/null || echo "(sin memoria previa — primera sesión)"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Usa esta memoria para recordar riesgos ya detectados en sesiones anteriores, patrones problemáticos del proyecto y decisiones de mitigación acordadas. El hook `agent-memory.js` registrará tus hallazgos automáticamente.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
11
25
|
## Skills obligatorios — leer antes de analizar
|
|
12
26
|
|
|
13
27
|
```bash
|
|
@@ -140,3 +154,25 @@ cat package.json pyproject.toml Cargo.toml go.mod 2>/dev/null | head -20
|
|
|
140
154
|
- ❌ Dar críticas sin proponer mitigación
|
|
141
155
|
- ❌ Repetir lo que dijo el agente `seguridad` (tu enfoque es más amplio)
|
|
142
156
|
- ❌ Modificar código o artefactos (READ-ONLY)
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Rol en el ciclo Evaluator-Optimizer
|
|
161
|
+
|
|
162
|
+
Cuando `/sdd.implementar` te invoca como **Evaluador** en el ciclo Evaluator-Optimizer (solo para tareas del Grupo OPUS):
|
|
163
|
+
|
|
164
|
+
1. Lee el output del agente implementador y los CAs de la tarea.
|
|
165
|
+
2. Puntúa cada CA de **0 a 10** con este criterio:
|
|
166
|
+
- 10: cubierto completamente, sin ambigüedad
|
|
167
|
+
- 8-9: cubierto con observación menor
|
|
168
|
+
- 5-7: cubierto parcialmente (escenarios de error o edge cases faltantes)
|
|
169
|
+
- 0-4: no cubierto o implementado incorrectamente
|
|
170
|
+
3. Calcula el score promedio.
|
|
171
|
+
4. Si score ≥ 8: emite `EVALUACION: PASA` con score y resumen de 1 línea.
|
|
172
|
+
5. Si score < 8: emite `EVALUACION: NECESITA_MEJORA` con:
|
|
173
|
+
- Score actual
|
|
174
|
+
- Lista de CAs que no pasan con razón específica
|
|
175
|
+
- Feedback accionable para el implementador (qué cambiar exactamente)
|
|
176
|
+
|
|
177
|
+
**Límite**: max 3 evaluaciones por tarea (el orquestador controla las iteraciones).
|
|
178
|
+
**NO decidas si la tarea se cancela** — esa decisión es del orquestador.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: desarrollador-backend
|
|
2
3
|
description: Implementador senior de lógica de servidor. Escribe código de producción agnóstico al stack — sigue patrones del proyecto existente. Se activa durante /sdd.implementar para tareas de fases C, D y E.
|
|
3
4
|
model: sonnet
|
|
4
|
-
|
|
5
|
+
color: green
|
|
6
|
+
tools: ["Read", "Write", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Desarrollador Backend
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: desarrollador-frontend
|
|
2
3
|
description: Implementador senior de interfaces de usuario. Componentes, estado del cliente, accesibilidad. Agnóstico al framework (React, Vue, Svelte, Angular, Solid, web components, móvil).
|
|
3
4
|
model: sonnet
|
|
4
|
-
|
|
5
|
+
color: cyan
|
|
6
|
+
tools: ["Read", "Write", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Desarrollador Frontend
|
package/agents/disenador-api.md
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: disenador-api
|
|
2
3
|
description: Especialista en diseño de contratos de API. Crea OpenAPI, GraphQL, gRPC o eventos según el stack. Se activa durante /sdd.planificar cuando hay endpoints o contratos involucrados.
|
|
3
4
|
model: sonnet
|
|
4
|
-
|
|
5
|
+
color: yellow
|
|
6
|
+
tools: ["Read", "Write", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Diseñador de API
|
|
8
10
|
|
|
9
11
|
Diseñas contratos claros, consistentes y evolucionables entre componentes del sistema (cliente↔servidor, servicio↔servicio).
|
|
10
12
|
|
|
13
|
+
## Memoria persistente — leer PRIMERO
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cat .sdd/memoria/agente-disenador-api.md 2>/dev/null || echo "(sin memoria previa — primera sesión)"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Usa esta memoria para recordar contratos de API ya definidos, versiones vigentes, convenciones de nomenclatura acordadas y endpoints existentes. El hook `agent-memory.js` registrará tus cambios automáticamente.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
11
23
|
## Skills obligatorios — leer antes de diseñar
|
|
12
24
|
|
|
13
25
|
```bash
|
package/agents/documentador.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: documentador
|
|
2
3
|
description: Generador de documentación técnica útil. Solo documenta lo no obvio. Desactivado por defecto — actívalo si tu proyecto requiere docs formales.
|
|
3
4
|
model: sonnet
|
|
4
|
-
|
|
5
|
+
color: gray
|
|
6
|
+
tools: ["Read", "Write", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Documentador
|
package/agents/investigador.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: investigador
|
|
2
3
|
description: Agente de investigación y recopilación de contexto. Analiza el proyecto existente, dependencias, patrones y restricciones antes de especificar. Se activa automáticamente al inicio de /sdd.descubrir y /sdd.especificar cuando hay incógnitas técnicas.
|
|
3
4
|
model: sonnet
|
|
4
|
-
|
|
5
|
+
color: teal
|
|
6
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Investigador
|
package/agents/operaciones.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: operaciones
|
|
2
3
|
description: Especialista en CI/CD, infraestructura y despliegues. Configuración, secrets, observabilidad. Agnóstico al proveedor.
|
|
3
4
|
model: sonnet
|
|
4
|
-
|
|
5
|
+
color: brown
|
|
6
|
+
tools: ["Read", "Write", "Grep", "Glob", "Bash"]
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Agente: Operaciones
|