@damenor/agent-docs 0.1.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/README.md +115 -0
- package/dist/index.js +568 -0
- package/package.json +53 -0
- package/templates/base/AGENTS.md +177 -0
- package/templates/base/CHANGELOG.md +86 -0
- package/templates/base/README.md +110 -0
- package/templates/base/docs/CONTEXT.md +111 -0
- package/templates/base/docs/README.md +131 -0
- package/templates/base/docs/adr/TEMPLATE.md +83 -0
- package/templates/modules/agents/.agents/agents/doc-designer.md +56 -0
- package/templates/modules/agents/.agents/agents/doc-maintainer.md +54 -0
- package/templates/modules/agents/.agents/agents/doc-reviewer.md +80 -0
- package/templates/modules/agents/.agents/agents/doc-writer.md +66 -0
- package/templates/modules/agents/.agents/agents/reviewer.md +138 -0
- package/templates/modules/agents/.agents/skills/doc-design/SKILL.md +359 -0
- package/templates/modules/agents/.agents/skills/doc-design/references/design-system-format.md +550 -0
- package/templates/modules/agents/.agents/skills/doc-maintain/SKILL.md +345 -0
- package/templates/modules/agents/.agents/skills/doc-maintain/references/triggers.md +311 -0
- package/templates/modules/agents/.agents/skills/doc-review/SKILL.md +324 -0
- package/templates/modules/agents/.agents/skills/doc-review/references/health-checklist.md +290 -0
- package/templates/modules/agents/.agents/skills/doc-scaffold/SKILL.md +277 -0
- package/templates/modules/agents/.agents/skills/doc-scaffold/references/diataxis-quick-ref.md +149 -0
- package/templates/modules/agents/.agents/skills/doc-write/SKILL.md +414 -0
- package/templates/modules/agents/.agents/skills/doc-write/references/adr-format.md +194 -0
- package/templates/modules/agents/.agents/skills/doc-write/references/diataxis-patterns.md +351 -0
- package/templates/modules/ci/.github/workflows/docs-check.yml +94 -0
- package/templates/modules/design/docs/DESIGN.md +253 -0
- package/templates/modules/explanation/docs/explanation/agent-flow.md +15 -0
- package/templates/modules/explanation/docs/explanation/architecture.md +138 -0
- package/templates/modules/guides/docs/guides/deployment.md +189 -0
- package/templates/modules/guides/docs/guides/runbooks/TEMPLATE.md +86 -0
- package/templates/modules/guides/docs/guides/troubleshooting.md +65 -0
- package/templates/modules/operations/docs/operations/README.md +115 -0
- package/templates/modules/product/docs/product/overview.md +90 -0
- package/templates/modules/product/docs/roadmap.md +80 -0
- package/templates/modules/reference/docs/reference/api.md +131 -0
- package/templates/modules/reference/docs/reference/code-style.md +275 -0
- package/templates/modules/reference/docs/reference/configuration.md +117 -0
- package/templates/modules/reference/docs/reference/infrastructure.md +191 -0
- package/templates/modules/tutorials/docs/tutorials/environment-setup.md +212 -0
- package/templates/modules/tutorials/docs/tutorials/first-task.md +246 -0
- package/templates/modules/tutorials/docs/tutorials/quick-start.md +146 -0
- package/templates/shared/.editorconfig +20 -0
- package/templates/shared/.markdownlint.json +14 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
created: "2026-05-07"
|
|
3
|
+
updated: "2026-05-07"
|
|
4
|
+
status: active
|
|
5
|
+
type: explanation
|
|
6
|
+
tags: [architecture, system-design, explanation]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Arquitectura del Sistema
|
|
10
|
+
|
|
11
|
+
> **Propósito**: Este documento explica la arquitectura del sistema — no *cómo* usarlo, sino *por qué* está diseñado así. Para detalles de implementación, consulta el código fuente. Para decisiones concretas, consulta los ADRs en `docs/adr/`.
|
|
12
|
+
|
|
13
|
+
## Visión General
|
|
14
|
+
|
|
15
|
+
[Breve descripción del sistema: qué hace, quién lo usa, cómo se relaciona con otros sistemas]
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
Client["🌐 Cliente<br/>(Browser / App / API Consumer)"]
|
|
20
|
+
CDN["CDN / Load Balancer"]
|
|
21
|
+
FE["Frontend<br/>[Framework]<br/>SSR/SPA · Routing · State"]
|
|
22
|
+
BE["API / Backend<br/>[Framework]<br/>REST API · Auth · Business logic"]
|
|
23
|
+
DB["🗄️ Base de datos<br/>[PostgreSQL]"]
|
|
24
|
+
Cache["⚡ Cache<br/>[Redis/etc]"]
|
|
25
|
+
|
|
26
|
+
Client --> CDN
|
|
27
|
+
CDN --> FE
|
|
28
|
+
CDN --> BE
|
|
29
|
+
BE --> DB
|
|
30
|
+
BE --> Cache
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Componentes Principales
|
|
34
|
+
|
|
35
|
+
### Frontend
|
|
36
|
+
|
|
37
|
+
- **Framework**: [Ej: React 18 / Next.js 14 / Vue 3]
|
|
38
|
+
- **Renderizado**: [SSR / SSG / SPA / Híbrido]
|
|
39
|
+
- **Estado**: [Local state / Context / Zustand / Redux]
|
|
40
|
+
- **Routing**: [Client-side / Server-side / File-based]
|
|
41
|
+
- **Estilos**: [Tailwind / CSS Modules / Styled Components]
|
|
42
|
+
|
|
43
|
+
> Ver ADRs relevantes en `docs/adr/` para entender por qué se eligió cada tecnología.
|
|
44
|
+
|
|
45
|
+
### Backend / API
|
|
46
|
+
|
|
47
|
+
- **Framework**: [Ej: Express / Fastify / NestJS / Hono]
|
|
48
|
+
- **Arquitectura**: [Monolito / Microservicios / Serverless]
|
|
49
|
+
- **Autenticación**: [JWT / Session / OAuth / API Keys]
|
|
50
|
+
- **Validación**: [Zod / Joi / class-validator]
|
|
51
|
+
|
|
52
|
+
### Base de Datos
|
|
53
|
+
|
|
54
|
+
- **Tipo**: [Relacional / NoSQL / Híbrido]
|
|
55
|
+
- **Motor**: [PostgreSQL / MySQL / MongoDB]
|
|
56
|
+
- **ORM**: [Prisma / TypeORM / Sequelize / Drizzle]
|
|
57
|
+
- **Migraciones**: [Gestionadas por el ORM / Manuales]
|
|
58
|
+
|
|
59
|
+
## Flujos Principales
|
|
60
|
+
|
|
61
|
+
### Flujo de Autenticación
|
|
62
|
+
|
|
63
|
+
```mermaid
|
|
64
|
+
sequenceDiagram
|
|
65
|
+
participant U as Usuario
|
|
66
|
+
participant FE as Frontend
|
|
67
|
+
participant BE as Backend
|
|
68
|
+
participant DB as Base de datos
|
|
69
|
+
|
|
70
|
+
U->>FE: Login (email + password)
|
|
71
|
+
FE->>BE: POST /auth/login
|
|
72
|
+
BE->>DB: Verificar credenciales
|
|
73
|
+
DB-->>BE: Usuario válido
|
|
74
|
+
BE-->>FE: JWT + Refresh Token
|
|
75
|
+
FE->>FE: Almacenar tokens
|
|
76
|
+
U->>FE: Acción protegida
|
|
77
|
+
FE->>BE: Request + Bearer token
|
|
78
|
+
BE->>BE: Verificar JWT
|
|
79
|
+
BE-->>FE: Respuesta
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Flujo de Datos Principal
|
|
83
|
+
|
|
84
|
+
```mermaid
|
|
85
|
+
sequenceDiagram
|
|
86
|
+
participant U as Usuario
|
|
87
|
+
participant FE as Frontend
|
|
88
|
+
participant BE as Backend
|
|
89
|
+
participant DB as Base de datos
|
|
90
|
+
|
|
91
|
+
U->>FE: Acción en UI
|
|
92
|
+
FE->>BE: API Request
|
|
93
|
+
BE->>BE: Validación + Lógica
|
|
94
|
+
BE->>DB: Read/Write
|
|
95
|
+
DB-->>BE: Resultado
|
|
96
|
+
BE-->>FE: Respuesta JSON
|
|
97
|
+
FE->>FE: Actualizar UI
|
|
98
|
+
FE-->>U: Vista actualizada
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Decisiones Arquitectónicas Clave
|
|
102
|
+
|
|
103
|
+
Las decisiones técnicas importantes están documentadas como ADRs en `docs/adr/`. Aquí un resumen:
|
|
104
|
+
|
|
105
|
+
| Decisión | ADR | Resumen |
|
|
106
|
+
|----------|-----|---------|
|
|
107
|
+
| [Ej: Base de datos] | `0002-*` | [Por qué se eligió] |
|
|
108
|
+
| [Ej: Framework frontend] | `0003-*` | [Por qué se eligió] |
|
|
109
|
+
| [Ej: Autenticación] | `0004-*` | [Por qué se eligió] |
|
|
110
|
+
|
|
111
|
+
> **Nota**: Para criterios de cuándo crear un ADR, ver [`docs/adr/TEMPLATE.md`](../adr/TEMPLATE.md).
|
|
112
|
+
|
|
113
|
+
## Límites del Sistema
|
|
114
|
+
|
|
115
|
+
### Qué NO hace este sistema
|
|
116
|
+
|
|
117
|
+
- [Limitación 1]
|
|
118
|
+
- [Limitación 2]
|
|
119
|
+
|
|
120
|
+
### Escalabilidad
|
|
121
|
+
|
|
122
|
+
- **Horizontal**: [Cómo escala el backend]
|
|
123
|
+
- **Vertical**: [Límites de recursos]
|
|
124
|
+
- **BD**: [Estrategia de escalado de datos]
|
|
125
|
+
|
|
126
|
+
## Dependencias Externas
|
|
127
|
+
|
|
128
|
+
| Servicio | Propósito | Alternativa si cae |
|
|
129
|
+
|----------|-----------|-------------------|
|
|
130
|
+
| [Servicio 1] | [Qué hace] | [Plan B] |
|
|
131
|
+
| [Servicio 2] | [Qué hace] | [Plan B] |
|
|
132
|
+
|
|
133
|
+
## Diagramas Relacionados
|
|
134
|
+
|
|
135
|
+
- Ver [`docs/internal/agent-guide.md`](../internal/agent-guide.md) para diagramas de flujo de agentes
|
|
136
|
+
- Ver `docs/guides/runbooks/` para procedimientos operativos
|
|
137
|
+
- Ver `docs/reference/infrastructure.md` para detalles de entornos
|
|
138
|
+
- Ver `docs/reference/api.md` para la referencia de la API
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
created: "2025-01-01"
|
|
3
|
+
status: active
|
|
4
|
+
type: guide
|
|
5
|
+
tags: [guía, deployment, deploy, producción, staging]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Guía de Deployment
|
|
9
|
+
|
|
10
|
+
Instrucciones paso a paso para hacer deploy de la aplicación a cada entorno.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Entornos
|
|
15
|
+
|
|
16
|
+
| Entorno | Propósito | URL | Branch | Auto-deploy |
|
|
17
|
+
|---------|-----------|-----|--------|-------------|
|
|
18
|
+
| **Development** | Desarrollo local | `http://localhost:3000` | Cualquiera | N/A |
|
|
19
|
+
| **Staging** | QA y validación antes de producción | `https://staging.[dominio]` | `develop` o `main` | Sí (push a branch) |
|
|
20
|
+
| **Production** | Usuarios finales | `https://[dominio]` | `main` | Sí (tag / release) |
|
|
21
|
+
|
|
22
|
+
Ver detalles de infraestructura en [`docs/reference/infrastructure.md`](../reference/infrastructure.md).
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Prerrequisitos
|
|
27
|
+
|
|
28
|
+
- Acceso al repositorio con permisos de push a `main`.
|
|
29
|
+
- Acceso a la plataforma de CI/CD (ej. {{TECH_STACK}}, Vercel, AWS Console).
|
|
30
|
+
- Variables de entorno configuradas para el entorno destino (ver [`configuration.md`](../reference/configuration.md)).
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Deploy a Staging
|
|
35
|
+
|
|
36
|
+
Staging se actualiza automáticamente al hacer push a `[develop / main]`. Si necesitas deploy manual:
|
|
37
|
+
|
|
38
|
+
### Opción A: Deploy automático (recomendado)
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Hacer push a la branch que triggera staging
|
|
42
|
+
git push origin [develop / main]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Verificar en la plataforma de CI/CD que el pipeline pasó correctamente.
|
|
46
|
+
|
|
47
|
+
### Opción B: Deploy manual
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 1. Construir la aplicación
|
|
51
|
+
[npm run build]
|
|
52
|
+
|
|
53
|
+
# 2. Deploy manual (según plataforma)
|
|
54
|
+
[comando de deploy específico — ej. vercel --prod, aws deploy push, etc.]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Verificación post-deploy
|
|
58
|
+
|
|
59
|
+
Después de que el deploy termine:
|
|
60
|
+
|
|
61
|
+
1. Abrir `https://staging.[dominio]` y verificar que la versión es la correcta.
|
|
62
|
+
2. Ejecutar smoke tests manuales:
|
|
63
|
+
- [ ] Login funciona
|
|
64
|
+
- [ ] Página principal carga
|
|
65
|
+
- [ ] [Flujo principal del negocio] funciona end-to-end
|
|
66
|
+
3. Verificar que no hay errores en consola (browser) ni en logs (servidor).
|
|
67
|
+
4. Verificar que la versión/metadata es correcta (footer, health check, etc.).
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Deploy a Producción
|
|
72
|
+
|
|
73
|
+
**Importante**: Los deploys a producción se hacen desde `main` **únicamente**. Nunca desde branches de feature.
|
|
74
|
+
|
|
75
|
+
### Pre-deploy checklist
|
|
76
|
+
|
|
77
|
+
Antes de hacer deploy a producción, verificar:
|
|
78
|
+
|
|
79
|
+
- [ ] Todos los tests pasan en CI (último build verde).
|
|
80
|
+
- [ ] Staging fue validado por QA/producto.
|
|
81
|
+
- [ ] No hay migraciones de base de datos pendientes (o están preparadas).
|
|
82
|
+
- [ ] Las variables de entorno de producción están actualizadas.
|
|
83
|
+
- [ ] El CHANGELOG está actualizado.
|
|
84
|
+
- [ ] Se comunicó al equipo el horario del deploy (si aplica).
|
|
85
|
+
|
|
86
|
+
### Proceso
|
|
87
|
+
|
|
88
|
+
#### Opción A: Deploy automático via tag
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# 1. Crear un tag de release
|
|
92
|
+
git tag -a v[VERSIÓN] -m "Release v[VERSIÓN]"
|
|
93
|
+
|
|
94
|
+
# 2. Pushear el tag
|
|
95
|
+
git push origin v[VERSIÓN]
|
|
96
|
+
|
|
97
|
+
# 3. El pipeline de CI/CD detecta el tag y hace deploy automático
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### Opción B: Deploy manual
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 1. Asegurarse de estar en main y actualizado
|
|
104
|
+
git checkout main
|
|
105
|
+
git pull origin main
|
|
106
|
+
|
|
107
|
+
# 2. Construir
|
|
108
|
+
[npm run build]
|
|
109
|
+
|
|
110
|
+
# 3. Deploy
|
|
111
|
+
[comando de deploy a producción]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Post-deploy
|
|
115
|
+
|
|
116
|
+
Inmediatamente después del deploy:
|
|
117
|
+
|
|
118
|
+
1. **Verificar la URL de producción**: abrir `https://[dominio]` y confirmar que la versión es la nueva.
|
|
119
|
+
2. **Smoke tests rápidos**:
|
|
120
|
+
- [ ] Página principal carga
|
|
121
|
+
- [ ] Login funciona
|
|
122
|
+
- [ ] [Flujo principal] funciona
|
|
123
|
+
3. **Monitorear logs** durante los primeros 15 minutos:
|
|
124
|
+
- Verificar que no hay errores inusuales.
|
|
125
|
+
- Verificar que el tráfico se ve normal.
|
|
126
|
+
4. **Actualizar CHANGELOG**: mover los cambios de "Sin publicar" a la sección de la versión.
|
|
127
|
+
5. **Comunicar**: notificar al equipo que el deploy fue exitoso (Slack / Teams / email).
|
|
128
|
+
|
|
129
|
+
### Rollback
|
|
130
|
+
|
|
131
|
+
Si algo sale mal después del deploy:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# 1. Identificar la versión anterior (la que funcionaba)
|
|
135
|
+
git log --oneline -5
|
|
136
|
+
|
|
137
|
+
# 2. Re-deployear la versión anterior
|
|
138
|
+
git checkout v[VERSIÓN_ANTERIOR]
|
|
139
|
+
[comando de deploy a producción]
|
|
140
|
+
|
|
141
|
+
# 3. Alternativa: revertir el merge commit
|
|
142
|
+
git revert -m 1 [HASH_DEL_MERGE]
|
|
143
|
+
git push origin main
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Migraciones de base de datos
|
|
149
|
+
|
|
150
|
+
Las migraciones se ejecutan como parte del pipeline de deploy, pero si necesitaras ejecutarlas manualmente:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Ver el estado de las migraciones
|
|
154
|
+
[comando de status — ej. npm run db:status]
|
|
155
|
+
|
|
156
|
+
# Ejecutar migraciones pendientes
|
|
157
|
+
[comando de migración — ej. npm run db:migrate]
|
|
158
|
+
|
|
159
|
+
# Rollback de la última migración (solo en emergencias)
|
|
160
|
+
[comando de rollback — ej. npm run db:rollback]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Regla**: Las migraciones deben ser **siempre hacia adelante** (additive). No modificar columnas existentes en breaking ways. Crear nuevas columnas y migrar datos gradualmente.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Variables de entorno por entorno
|
|
168
|
+
|
|
169
|
+
| Variable | Development | Staging | Production |
|
|
170
|
+
|----------|-------------|---------|------------|
|
|
171
|
+
| `APP_ENV` | `development` | `staging` | `production` |
|
|
172
|
+
| `DATABASE_URL` | Local | Staging DB | Production DB |
|
|
173
|
+
| `API_KEY_[SERVICIO]` | Key de testing | Key de staging | Key de producción |
|
|
174
|
+
| `LOG_LEVEL` | `debug` | `info` | `warn` |
|
|
175
|
+
|
|
176
|
+
Ver la referencia completa en [`configuration.md`](../reference/configuration.md).
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Troubleshooting de deploys
|
|
181
|
+
|
|
182
|
+
| Problema | Causa probable | Solución |
|
|
183
|
+
|----------|---------------|----------|
|
|
184
|
+
| Build falla en CI pero pasa local | Diferencia de versiones de Node/npm | Verificar que `.nvmrc` o `engines` en `package.json` coincida con CI |
|
|
185
|
+
| Deploy exitoso pero página en blanco | Variables de entorno faltantes | Verificar todas las vars requeridas en el entorno |
|
|
186
|
+
| Migración falla | Cambio breaking en schema | Ejecutar rollback y corregir la migración |
|
|
187
|
+
| Timeout en deploy | Recursos insuficientes | Verificar logs del CI/CD y recursos del servidor |
|
|
188
|
+
|
|
189
|
+
Más soluciones en [`troubleshooting.md`](troubleshooting.md).
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
created: "2026-05-07"
|
|
3
|
+
updated: "2026-05-07"
|
|
4
|
+
status: active
|
|
5
|
+
type: how-to
|
|
6
|
+
tags: [ops, runbooks, template]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Template de Runbook
|
|
10
|
+
|
|
11
|
+
> [!info] Cuándo crear un runbook
|
|
12
|
+
> Crea un runbook cuando un proceso operativo se repite o cuando necesitas documentar pasos para resolver un incidente específico. Guárdalo en `docs/guides/runbooks/`.
|
|
13
|
+
|
|
14
|
+
## Nombre del Runbook
|
|
15
|
+
|
|
16
|
+
**Tipo**: [operativo | incidente | mantenimiento]
|
|
17
|
+
**Severidad**: [baja | media | alta | crítica]
|
|
18
|
+
**Frecuencia**: [diario | semanal | mensual | bajo demanda]
|
|
19
|
+
|
|
20
|
+
## Contexto
|
|
21
|
+
|
|
22
|
+
¿Qué es este proceso? ¿Por qué existe? ¿Cuándo se ejecuta?
|
|
23
|
+
|
|
24
|
+
## Síntomas / Triggers
|
|
25
|
+
|
|
26
|
+
¿Qué indica que hay que ejecutar este runbook?
|
|
27
|
+
|
|
28
|
+
- Síntoma 1
|
|
29
|
+
- Síntoma 2
|
|
30
|
+
- Alerta de monitoring que lo dispara
|
|
31
|
+
|
|
32
|
+
## Prerrequisitos
|
|
33
|
+
|
|
34
|
+
- [ ] Acceso a [sistema/servidor]
|
|
35
|
+
- [ ] Permisos de [rol]
|
|
36
|
+
- [ ] Herramientas: [lista]
|
|
37
|
+
|
|
38
|
+
## Pasos
|
|
39
|
+
|
|
40
|
+
### Paso 1: [Título del paso]
|
|
41
|
+
|
|
42
|
+
**Acción**: Descripción clara de qué hacer
|
|
43
|
+
**Comando** (si aplica):
|
|
44
|
+
```bash
|
|
45
|
+
comando-aquí
|
|
46
|
+
```
|
|
47
|
+
**Verificación**: Cómo confirmar que el paso salió bien
|
|
48
|
+
|
|
49
|
+
### Paso 2: [Título del paso]
|
|
50
|
+
|
|
51
|
+
**Acción**: Descripción clara
|
|
52
|
+
**Comando**:
|
|
53
|
+
```bash
|
|
54
|
+
siguiente-comando
|
|
55
|
+
```
|
|
56
|
+
**Verificación**: Qué esperar
|
|
57
|
+
|
|
58
|
+
### Paso N: Verificación final
|
|
59
|
+
|
|
60
|
+
Confirmar que el proceso se completó exitosamente:
|
|
61
|
+
|
|
62
|
+
- [ ] Check 1
|
|
63
|
+
- [ ] Check 2
|
|
64
|
+
|
|
65
|
+
## Rollback
|
|
66
|
+
|
|
67
|
+
Si algo sale mal, cómo revertir:
|
|
68
|
+
|
|
69
|
+
1. Paso de rollback 1
|
|
70
|
+
2. Paso de rollback 2
|
|
71
|
+
|
|
72
|
+
## Escalación
|
|
73
|
+
|
|
74
|
+
Si no puedes resolver:
|
|
75
|
+
|
|
76
|
+
| Nivel | Contacto | Cuándo escalar |
|
|
77
|
+
|---------|----------------------|------------------------------------|
|
|
78
|
+
| L1 | [Equipo/dev] | Si los pasos del runbook fallan |
|
|
79
|
+
| L2 | [Tech lead] | Si el problema requiere acceso especial |
|
|
80
|
+
| L3 | [CTO/Infra lead] | Si hay riesgo de pérdida de datos |
|
|
81
|
+
|
|
82
|
+
## Notas
|
|
83
|
+
|
|
84
|
+
- Cualquier consideración especial
|
|
85
|
+
- Lecciones aprendidas de ejecuciones anteriores
|
|
86
|
+
- Enlaces a ADRs o docs relacionados
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
created: "2026-05-07"
|
|
3
|
+
updated: "2026-05-07"
|
|
4
|
+
status: active
|
|
5
|
+
type: how-to
|
|
6
|
+
tags: [ops, troubleshooting, debugging]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Troubleshooting
|
|
10
|
+
|
|
11
|
+
Problemas comunes encontrados durante el desarrollo y sus soluciones.
|
|
12
|
+
|
|
13
|
+
> [!tip] Cómo usar esta guía
|
|
14
|
+
> Busca tu problema en la tabla o por las secciones. Si encuentras un problema nuevo y lo resuelves, añádelo aquí para que el próximo developer no pierda tiempo.
|
|
15
|
+
|
|
16
|
+
## Problemas de Entorno
|
|
17
|
+
|
|
18
|
+
| Problema | Causa probable | Solución |
|
|
19
|
+
|----------|---------------|----------|
|
|
20
|
+
| `npm install` falla con EACCES | Permisos de npm global | Usa `nvm` o reinstala Node con permisos correctos |
|
|
21
|
+
| `command not found: node` | Node no instalado o no en PATH | Instala con `nvm install --lts` y reinicia terminal |
|
|
22
|
+
| Puerto 3000 ocupado | Otro proceso usando el puerto | `lsof -i :3000` (macOS) o `netstat -ano | findstr :3000` (Windows) y mata el proceso |
|
|
23
|
+
| Variables de entorno no cargadas | Falta archivo `.env` | Copia `.env.example` a `.env` y configura los valores |
|
|
24
|
+
|
|
25
|
+
## Problemas de Build
|
|
26
|
+
|
|
27
|
+
| Problema | Causa probable | Solución |
|
|
28
|
+
|----------|---------------|----------|
|
|
29
|
+
| Error de tipos TypeScript | Tipos incompatibles o faltantes | Ejecuta `[npm run typecheck]` para ver errores específicos |
|
|
30
|
+
| Build falla en CI pero no local | Diferencia de entorno (Node version, deps) | Verifica que `.nvmrc` o `engines` en package.json coincida con CI |
|
|
31
|
+
| Error "Module not found" | Dependencia no instalada o path incorrecto | `rm -rf node_modules && npm install` o verifica import paths |
|
|
32
|
+
| Out of memory en build | Proyecto grande sin suficiente RAM | Aumenta memoria: `NODE_OPTIONS="--max-old-space-size=4096" npm run build` |
|
|
33
|
+
|
|
34
|
+
## Problemas de Runtime
|
|
35
|
+
|
|
36
|
+
| Problema | Causa probable | Solución |
|
|
37
|
+
|----------|---------------|----------|
|
|
38
|
+
| CORS error en API calls | Backend no configurado para el origen del frontend | Verifica configuración CORS en el backend |
|
|
39
|
+
| 401 Unauthorized | Token expirado o no enviado | Verifica que el token se envía en headers y no ha expirado |
|
|
40
|
+
| Pantalla blanca en producción | Error JS no capturado, assets no cargan | Revisa consola del navegador, verifica que los assets se deployaron |
|
|
41
|
+
| Hydration mismatch (SSR) | HTML server != HTML client | Verifica que no haya `Date.now()`, `Math.random()` o APIs del navegador en SSR |
|
|
42
|
+
|
|
43
|
+
## Problemas de Base de Datos
|
|
44
|
+
|
|
45
|
+
| Problema | Causa probable | Solución |
|
|
46
|
+
|----------|---------------|----------|
|
|
47
|
+
| Connection refused | BD no arrancada o URL incorrecta | Verifica que el servicio esté corriendo y la URL en `.env` sea correcta |
|
|
48
|
+
| Migration error | Migración pendiente o conflicto | Ejecuta migraciones pendientes o resetea la BD local |
|
|
49
|
+
| Timeout en queries | Query ineficiente o locks | Revisa el query plan, añade índices si es necesario |
|
|
50
|
+
|
|
51
|
+
## Problemas de Git
|
|
52
|
+
|
|
53
|
+
| Problema | Causa probable | Solución |
|
|
54
|
+
|----------|---------------|----------|
|
|
55
|
+
| Merge conflict | Cambios en mismas líneas | Resuelve manualmente: busca `<<<<<<<`, elige el correcto, elimina marcadores |
|
|
56
|
+
| `git push` rechazado | Branch remota tiene commits nuevos | `git pull --rebase origin <branch>` y resuelve conflictos si hay |
|
|
57
|
+
| Hook pre-commit falla | Linting o formatting falla | Ejecuta `npm run lint:fix` y vuelve a commitear |
|
|
58
|
+
|
|
59
|
+
## Cómo añadir nuevos problemas
|
|
60
|
+
|
|
61
|
+
Cuando resuelvas un problema que no esté aquí:
|
|
62
|
+
|
|
63
|
+
1. Añade una fila a la tabla correspondiente
|
|
64
|
+
2. Incluye: problema, causa, solución
|
|
65
|
+
3. Si la solución es compleja, crea un how-to separado en `docs/guides/` y enlázalo aquí
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
created: "2026-05-07"
|
|
3
|
+
updated: "2026-05-07"
|
|
4
|
+
status: active
|
|
5
|
+
type: how-to
|
|
6
|
+
tags: [ops, operations, monitoring, incidents, production]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Operaciones
|
|
10
|
+
|
|
11
|
+
Centro de operaciones para el proyecto en producción.
|
|
12
|
+
|
|
13
|
+
> [!warning] Solo para entornos con producción
|
|
14
|
+
> Esta sección se crea cuando el proyecto tiene entorno de producción. Si el proyecto aún no está en producción, puedes ignorar esta sección.
|
|
15
|
+
|
|
16
|
+
## Monitorización
|
|
17
|
+
|
|
18
|
+
### Dashboards
|
|
19
|
+
|
|
20
|
+
| Dashboard | URL | Qué monitoriza |
|
|
21
|
+
|-----------|-----|----------------|
|
|
22
|
+
| Principal | [URL] | Health checks, uptime, errores |
|
|
23
|
+
| Rendimiento | [URL] | Latencia, throughput, recursos |
|
|
24
|
+
| Business | [URL] | Métricas de negocio |
|
|
25
|
+
|
|
26
|
+
### Alertas Configuradas
|
|
27
|
+
|
|
28
|
+
| Alerta | Severidad | Umbral | Canal de notificación |
|
|
29
|
+
|--------|-----------|--------|-----------------------|
|
|
30
|
+
| Servicio caído | Crítica | Health check fail > 2 min | [Slack/Email/PagerDuty] |
|
|
31
|
+
| Error rate alto | Alta | >5% de requests con error 5xx | [Slack/Email] |
|
|
32
|
+
| Latencia alta | Media | p95 > 2 segundos | [Slack] |
|
|
33
|
+
| Disco lleno | Alta | >90% uso de disco | [Slack/Email] |
|
|
34
|
+
| Certificado SSL por expirar | Media | <30 días | [Email] |
|
|
35
|
+
|
|
36
|
+
## SLAs y SLOs
|
|
37
|
+
|
|
38
|
+
| Métrica | SLO | Ventana | Medición |
|
|
39
|
+
|---------|-----|---------|----------|
|
|
40
|
+
| Disponibilidad | 99.9% | 30 días | Uptime checks |
|
|
41
|
+
| Latencia p95 | <500ms | 30 días | APM |
|
|
42
|
+
| Latencia p99 | <2s | 30 días | APM |
|
|
43
|
+
| Error rate | <0.1% | 7 días | Log aggregation |
|
|
44
|
+
| Tiempo de respuesta API | <200ms | 30 días | Synthetic monitoring |
|
|
45
|
+
|
|
46
|
+
## Gestión de Incidentes
|
|
47
|
+
|
|
48
|
+
### Niveles de Severidad
|
|
49
|
+
|
|
50
|
+
| Nivel | Definición | Ejemplo | Tiempo de respuesta |
|
|
51
|
+
|-------|------------|---------|-------------------|
|
|
52
|
+
| P0 - Crítico | Servicio completamente caído, afecta a todos los usuarios | Sitio no carga, BD inaccesible | <15 min |
|
|
53
|
+
| P1 - Alto | Funcionalidad principal no funciona, afecta muchos usuarios | Login roto, checkout falla | <1 hora |
|
|
54
|
+
| P2 - Medio | Funcionalidad secundaria afectada, workaround disponible | Búsqueda lenta, email no envía | <4 horas |
|
|
55
|
+
| P3 - Bajo | Problema cosmético o menor | Typo, UI glitch | Próximo sprint |
|
|
56
|
+
|
|
57
|
+
### Proceso de Incidente
|
|
58
|
+
|
|
59
|
+
1. **Detección**: Alerta automática o reporte de usuario
|
|
60
|
+
2. **Triage**: Asignar severidad y responsable
|
|
61
|
+
3. **Comunicación**: Notificar al equipo en canal de incidencias
|
|
62
|
+
4. **Resolución**: Diagnosticar, aplicar fix, verificar
|
|
63
|
+
5. **Post-mortem**: Documentar qué pasó, por qué, y cómo prevenirlo
|
|
64
|
+
|
|
65
|
+
### Plantilla de Post-mortem
|
|
66
|
+
|
|
67
|
+
Guardar en `docs/operations/post-mortems/YYYY-MM-DD-titulo.md`:
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## Resumen
|
|
71
|
+
[1-2 oraciones: qué pasó, impacto, duración]
|
|
72
|
+
|
|
73
|
+
## Timeline
|
|
74
|
+
- HH:MM - Detección
|
|
75
|
+
- HH:MM - Investigación empieza
|
|
76
|
+
- HH:MM - Causa raíz identificada
|
|
77
|
+
- HH:MM - Fix aplicado
|
|
78
|
+
- HH:MM - Servicio restaurado
|
|
79
|
+
|
|
80
|
+
## Causa Raíz
|
|
81
|
+
[Qué causó el incidente, no qué síntomas se vieron]
|
|
82
|
+
|
|
83
|
+
## Impacto
|
|
84
|
+
- Duración: X horas/minutos
|
|
85
|
+
- Usuarios afectados: X
|
|
86
|
+
- Datos perdidos: Sí/No
|
|
87
|
+
|
|
88
|
+
## Acciones Preventivas
|
|
89
|
+
- [ ] Acción 1 — Responsable — Fecha límite
|
|
90
|
+
- [ ] Acción 2 — Responsable — Fecha límite
|
|
91
|
+
|
|
92
|
+
## Lecciones Aprendidas
|
|
93
|
+
[Qué aprendimos que cambie cómo trabajamos]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Backups
|
|
97
|
+
|
|
98
|
+
| Recurso | Frecuencia | Retención | Ubicación |
|
|
99
|
+
|---------|-----------|-----------|-----------|
|
|
100
|
+
| Base de datos | Diaria | 30 días | [Proveedor/Ubicación] |
|
|
101
|
+
| Assets estáticos | En cada deploy | Últimos 10 deploys | [CDN/Storage] |
|
|
102
|
+
| Configuración | Versionada en git | Completa | Repositorio |
|
|
103
|
+
|
|
104
|
+
## On-Call
|
|
105
|
+
|
|
106
|
+
Si el proyecto tiene rotación de on-call:
|
|
107
|
+
|
|
108
|
+
| Día | Responsable | Horario | Contacto |
|
|
109
|
+
|-----|-------------|---------|----------|
|
|
110
|
+
| Lunes | [Nombre] | 9:00 - 18:00 | [Canal contacto] |
|
|
111
|
+
| ... | ... | ... | ... |
|
|
112
|
+
|
|
113
|
+
## Runbooks Relacionados
|
|
114
|
+
|
|
115
|
+
Los runbooks operativos están en `docs/guides/runbooks/`. Cada uno documenta un procedimiento específico para resolver problemas o realizar tareas operativas.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
created: "2025-01-01"
|
|
3
|
+
status: active
|
|
4
|
+
type: product-context
|
|
5
|
+
tags: [producto, visión, negocio, stakeholders, métricas]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Visión del Producto
|
|
9
|
+
|
|
10
|
+
## Qué es
|
|
11
|
+
|
|
12
|
+
{{PROJECT_NAME}} es [descripción de una oración: qué tipo de producto es y para qué sirve]. Es un proyecto de tipo [web app / landing / portal / plataforma] orientado a [segmento: corporativo / B2B / B2C / interno].
|
|
13
|
+
|
|
14
|
+
## Por qué existe
|
|
15
|
+
|
|
16
|
+
**Problema que resuelve**: [Describir el problema o necesidad que motivó la creación del proyecto. ¿Qué hacía el cliente/equipo antes? ¿Qué fricción existía?]
|
|
17
|
+
|
|
18
|
+
**Oportunidad**: [Por qué ahora. Qué cambió en el mercado, la organización o la tecnología que hace que este proyecto tenga sentido en este momento.]
|
|
19
|
+
|
|
20
|
+
## Usuarios objetivo
|
|
21
|
+
|
|
22
|
+
| Perfil | Quién es | Necesidad principal | Frecuencia de uso |
|
|
23
|
+
|--------|----------|--------------------|--------------------|
|
|
24
|
+
| **[Usuario primario]** | [Descripción: rol, contexto, nivel técnico] | [Qué viene a hacer al sistema. La tarea #1.] | [Diaria / Semanal / Mensual] |
|
|
25
|
+
| **[Usuario secundario]** | [Descripción] | [Qué viene a hacer] | [Frecuencia] |
|
|
26
|
+
| **[Usuario administrador]** | [Descripción] | [Gestionar configuración, usuarios, datos maestros] | [Frecuencia] |
|
|
27
|
+
|
|
28
|
+
## Valor que aporta
|
|
29
|
+
|
|
30
|
+
Para cada perfil de usuario:
|
|
31
|
+
|
|
32
|
+
| Usuario | Antes (sin el proyecto) | Después (con el proyecto) | Medible en |
|
|
33
|
+
|---------|------------------------|--------------------------|-----------|
|
|
34
|
+
| **[Perfil 1]** | [Cómo resolvía el problema antes — manual, Excel, otro sistema] | [Cómo lo resuelve ahora — automatizado, centralizado, más rápido] | [Métrica: tiempo, errores, costos] |
|
|
35
|
+
| **[Perfil 2]** | [Situación anterior] | [Situación nueva] | [Métrica] |
|
|
36
|
+
|
|
37
|
+
## Stakeholders
|
|
38
|
+
|
|
39
|
+
| Nombre / Rol | Responsabilidad en el proyecto | Decisiones que aprueba | Contacto |
|
|
40
|
+
|-------------|-------------------------------|----------------------|----------|
|
|
41
|
+
| **[Product Owner]** | Define prioridades y acepta entregas | Features, alcance, release dates | [email / slack] |
|
|
42
|
+
| **[Tech Lead]** | Guía decisiones técnicas | Arquitectura, stack, deuda técnica | [email / slack] |
|
|
43
|
+
| **[Diseñador/a]** | Define la experiencia visual y de interacción | UI/UX, design system, flujos | [email / slack] |
|
|
44
|
+
| **[Stakeholder de negocio]** | Representa las necesidades del cliente final | Funcionalidad de negocio, priorización | [email / slack] |
|
|
45
|
+
|
|
46
|
+
## Métricas de éxito
|
|
47
|
+
|
|
48
|
+
### Métricas primarias (KPIs)
|
|
49
|
+
|
|
50
|
+
| Métrica | Objetivo | Medición | Frecuencia |
|
|
51
|
+
|---------|----------|----------|------------|
|
|
52
|
+
| **[Métrica 1 — ej. Tasa de adopción]** | [Valor objetivo — ej. 80% de usuarios activos en 3 meses] | [Cómo se mide — ej. analytics de login] | [Mensual] |
|
|
53
|
+
| **[Métrica 2 — ej. Tiempo de tarea]** | [Valor objetivo — ej. reducir de 30min a 5min] | [Cómo se mide] | [Semanal] |
|
|
54
|
+
|
|
55
|
+
### Métricas de calidad
|
|
56
|
+
|
|
57
|
+
| Métrica | Objetivo | Medición |
|
|
58
|
+
|---------|----------|----------|
|
|
59
|
+
| **Uptime** | 99.9% | Monitoreo de infraestructura |
|
|
60
|
+
| **Tiempo de carga (LCP)** | < 2.5s | Lighthouse / Web Vitals |
|
|
61
|
+
| **Errores en producción** | < 0.1% de requests | Error tracking (Sentry, etc.) |
|
|
62
|
+
| **Cobertura de tests** | > 80% | CI/CD pipeline |
|
|
63
|
+
|
|
64
|
+
### Métricas de satisfacción
|
|
65
|
+
|
|
66
|
+
| Métrica | Objetivo | Medición |
|
|
67
|
+
|---------|----------|----------|
|
|
68
|
+
| **NPS / CSAT** | [Valor] | [Encuesta / feedback in-app] |
|
|
69
|
+
| **Tickets de soporte** | Reducir X% vs. sistema anterior | Help desk |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Contexto regulatorio y restricciones
|
|
74
|
+
|
|
75
|
+
- **Privacidad**: [Indicar si aplica GDPR, LFPDPPP, etc. Qué datos personales se manejan.]
|
|
76
|
+
- **Accesibilidad**: Nivel WCAG 2.1 AA como mínimo.
|
|
77
|
+
- **Seguridad**: [Normas de seguridad corporativas. Ej. OWASP Top 10, pen testing anual.]
|
|
78
|
+
- **Compliance**: [Otras restricciones del sector — ej. PCI DSS para pagos, SOC 2 para SaaS.]
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Evolución esperada
|
|
83
|
+
|
|
84
|
+
Este producto está pensado para crecer en las siguientes direcciones:
|
|
85
|
+
|
|
86
|
+
1. **Corto plazo (0-3 meses)**: [MVP o versión inicial con funcionalidad core.]
|
|
87
|
+
2. **Mediano plazo (3-6 meses)**: [Features complementarias, integraciones.]
|
|
88
|
+
3. **Largo plazo (6-12 meses)**: [Escalabilidad, nuevos módulos, expansión.]
|
|
89
|
+
|
|
90
|
+
Ver el detalle de features planificados en [`docs/roadmap.md`](../roadmap.md).
|