@damenor/agent-docs 0.1.2 → 0.4.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.
Files changed (41) hide show
  1. package/README.md +65 -29
  2. package/dist/index.js +3834 -217
  3. package/package.json +5 -2
  4. package/templates/modules/agents/.agents/agents/doc-designer.md +39 -37
  5. package/templates/modules/agents/.agents/agents/doc-maintainer.md +35 -35
  6. package/templates/modules/agents/.agents/agents/doc-reviewer.md +55 -46
  7. package/templates/modules/agents/.agents/agents/doc-writer.md +34 -33
  8. package/templates/modules/agents/.agents/agents/reviewer.md +114 -100
  9. package/templates/modules/agents/.agents/skills/doc-design/SKILL.md +176 -174
  10. package/templates/modules/agents/.agents/skills/doc-design/references/design-system-format.md +241 -247
  11. package/templates/modules/agents/.agents/skills/doc-maintain/SKILL.md +61 -51
  12. package/templates/modules/agents/.agents/skills/doc-maintain/references/triggers.md +171 -165
  13. package/templates/modules/agents/.agents/skills/doc-review/SKILL.md +39 -34
  14. package/templates/modules/agents/.agents/skills/doc-review/references/health-checklist.md +115 -112
  15. package/templates/modules/agents/.agents/skills/doc-scaffold/SKILL.md +19 -12
  16. package/templates/modules/agents/.agents/skills/doc-scaffold/references/diataxis-quick-ref.md +110 -110
  17. package/templates/modules/agents/.agents/skills/doc-write/SKILL.md +44 -16
  18. package/templates/modules/agents/.agents/skills/doc-write/references/adr-format.md +99 -93
  19. package/templates/modules/agents/.agents/skills/doc-write/references/diataxis-patterns.md +221 -200
  20. package/templates/base/AGENTS.md +0 -177
  21. package/templates/base/CHANGELOG.md +0 -86
  22. package/templates/base/README.md +0 -105
  23. package/templates/base/docs/CONTEXT.md +0 -111
  24. package/templates/base/docs/README.md +0 -131
  25. package/templates/base/docs/adr/TEMPLATE.md +0 -83
  26. package/templates/modules/design/docs/DESIGN.md +0 -253
  27. package/templates/modules/explanation/docs/explanation/agent-flow.md +0 -15
  28. package/templates/modules/explanation/docs/explanation/architecture.md +0 -138
  29. package/templates/modules/guides/docs/guides/deployment.md +0 -189
  30. package/templates/modules/guides/docs/guides/runbooks/TEMPLATE.md +0 -86
  31. package/templates/modules/guides/docs/guides/troubleshooting.md +0 -65
  32. package/templates/modules/operations/docs/operations/README.md +0 -115
  33. package/templates/modules/product/docs/product/overview.md +0 -90
  34. package/templates/modules/product/docs/roadmap.md +0 -80
  35. package/templates/modules/reference/docs/reference/api.md +0 -131
  36. package/templates/modules/reference/docs/reference/code-style.md +0 -275
  37. package/templates/modules/reference/docs/reference/configuration.md +0 -117
  38. package/templates/modules/reference/docs/reference/infrastructure.md +0 -191
  39. package/templates/modules/tutorials/docs/tutorials/environment-setup.md +0 -212
  40. package/templates/modules/tutorials/docs/tutorials/first-task.md +0 -246
  41. package/templates/modules/tutorials/docs/tutorials/quick-start.md +0 -146
@@ -1,83 +0,0 @@
1
- ---
2
- created: "2025-01-01"
3
- status: active
4
- type: adr-template
5
- tags: [adr, plantilla, decisiones, arquitectura]
6
- ---
7
-
8
- # ADR: [Título de la decisión]
9
-
10
- **Número**: `[NNNN]` (asignar al crear el archivo, ej. `0002`)
11
- **Fecha**: `[YYYY-MM-DD]`
12
- **Estado**: [Propuesto | Aceptado | Deprecado | Reemplazado por ADR-NNNN]
13
-
14
- ---
15
-
16
- ## Contexto
17
-
18
- [1-3 oraciones que describen la situación que motivó la decisión. Qué problema se intenta resolver. Qué restricciones existían.]
19
-
20
- ## Decisión
21
-
22
- [1-3 oraciones describiendo la decisión tomada. Ser específico: qué se eligió y qué se descartó.]
23
-
24
- ## Por qué
25
-
26
- [La justificación. Por qué esta opción y no otra. Qué criterio se usó para elegir (performance, mantenibilidad, costo, tiempo, etc.).]
27
-
28
- ---
29
-
30
- ## Opciones consideradas *(opcional)*
31
-
32
- | Opción | Pros | Contras |
33
- |--------|------|---------|
34
- | **[Opción A]** (elegida) | [Beneficios principales] | [Desventajas aceptadas] |
35
- | **[Opción B]** | [Beneficios] | [Por qué se descartó] |
36
- | **[Opción C]** | [Beneficios] | [Por qué se descartó] |
37
-
38
- ## Consecuencias *(opcional)*
39
-
40
- **Positivas**:
41
- - [Beneficio esperado de la decisión.]
42
-
43
- **Negativas**:
44
- - [Trade-off aceptado.]
45
-
46
- **Riesgos**:
47
- - [Qué podría salir mal y cómo se mitiga.]
48
-
49
- ---
50
-
51
- ## Cuándo escribir un ADR
52
-
53
- Escribir un ADR cuando la decisión cumple **al menos 2 de estos 3 criterios**:
54
-
55
- 1. **Irreversible**: Costaría mucho tiempo o dinero revertirla. No es un "probamos y si no funciona cambiamos".
56
- 2. **Sorprendente**: Alguien nuevo en el equipo preguntaría "¿por qué hicimos esto?". No es la opción obvia.
57
- 3. **Trade-off**: Hay al menos dos opciones válidas con pros y contras reales. No era claro desde el inicio.
58
-
59
- Si la decisión es trivial, obvia, o fácilmente reversible — **no escribir un ADR**. Un comentario en el código es suficiente.
60
-
61
- ### Ejemplos de cuándo SÍ escribir un ADR
62
-
63
- - "Usamos PostgreSQL en lugar de MongoDB para los datos de usuarios."
64
- - "Elegimos autenticación con JWT en lugar de sesiones."
65
- - "Usamos colas (RabbitMQ) para procesamiento asíncrono de pagos."
66
-
67
- ### Ejemplos de cuándo NO escribir un ADR
68
-
69
- - "Usamos ESLint para linting." (Obvio, sin trade-off)
70
- - "Nombramos las branches como `feature/xxx`." (Convención, no decisión de arquitectura)
71
- - "Elegimos el color azul para el botón principal." (Fácilmente reversible)
72
-
73
- ---
74
-
75
- ## Formato del nombre de archivo
76
-
77
- ```
78
- docs/adr/NNNN-titulo-en-kebab-case.md
79
- ```
80
-
81
- - `NNNN`: Número secuencial (0001, 0002, 0003...).
82
- - El título debe ser descriptivo de la decisión, no del problema.
83
- - Ejemplo: `0002-use-postgresql-over-mongodb.md`
@@ -1,253 +0,0 @@
1
- ---
2
- created: "2025-01-01"
3
- status: active
4
- type: design-system
5
- tags: [diseño, ui, componentes, colores, tipografía, design-system]
6
- version: "1.0.0"
7
- name: "[Nombre del Design System]"
8
- description: "Sistema de diseño visual para {{PROJECT_NAME}}"
9
- ---
10
-
11
- # Design System — {{PROJECT_NAME}}
12
-
13
- ```yaml
14
- # ⚠️ VALORES DE EJEMPLO — NO SON LOS TOKENS DEL PROYECTO
15
- # Los valores abajo son ilustrativos (basados en paleta Tailwind).
16
- # Reemplazar con los tokens reales del proyecto.
17
- # Para extraer tokens automáticamente del código, usar la skill `doc-design`.
18
-
19
- colors:
20
- primary:
21
- 50: "#eff6ff" # Fondo claro
22
- 100: "#dbeafe" # Hover sutil
23
- 500: "#3b82f6" # Color principal
24
- 600: "#2563eb" # Hover
25
- 700: "#1d4ed8" # Activo / Pressed
26
- 900: "#1e3a5f" # Texto sobre claro
27
- secondary:
28
- 50: "#f8fafc"
29
- 500: "#64748b"
30
- 700: "#334155"
31
- 900: "#0f172a"
32
- semantic:
33
- success: "#22c55e"
34
- warning: "#f59e0b"
35
- error: "#ef4444"
36
- info: "#3b82f6"
37
- neutral:
38
- white: "#ffffff"
39
- gray-100: "#f1f5f9"
40
- gray-300: "#cbd5e1"
41
- gray-500: "#64748b"
42
- gray-700: "#334155"
43
- black: "#0f172a"
44
- brand:
45
- corporate: "#[COLOR_PRINCIPAL]"
46
- accent: "#[COLOR_SECUNDARIO]"
47
-
48
- typography:
49
- fontFamily:
50
- base: "[Nombre de fuente], sans-serif"
51
- heading: "[Nombre de fuente], sans-serif"
52
- mono: "[Nombre de fuente monoespaciada], monospace"
53
- fontSize:
54
- xs: "0.75rem" # 12px
55
- sm: "0.875rem" # 14px
56
- base: "1rem" # 16px
57
- lg: "1.125rem" # 18px
58
- xl: "1.25rem" # 20px
59
- 2xl: "1.5rem" # 24px
60
- 3xl: "1.875rem" # 30px
61
- 4xl: "2.25rem" # 36px
62
- fontWeight:
63
- regular: "400"
64
- medium: "500"
65
- semibold: "600"
66
- bold: "700"
67
- lineHeight:
68
- tight: "1.25"
69
- base: "1.5"
70
- relaxed: "1.75"
71
-
72
- rounded:
73
- none: "0"
74
- sm: "0.25rem"
75
- md: "0.375rem"
76
- lg: "0.5rem"
77
- xl: "0.75rem"
78
- full: "9999px"
79
-
80
- spacing:
81
- unit: "0.25rem" # Base: 4px
82
- scale: [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24]
83
-
84
- components:
85
- button:
86
- variants: [primary, secondary, ghost, danger]
87
- sizes: [sm, md, lg]
88
- borderRadius: "md"
89
- input:
90
- variants: [default, error, disabled]
91
- borderRadius: "md"
92
- height: "2.5rem"
93
- card:
94
- borderRadius: "lg"
95
- shadow: "0 1px 3px rgba(0,0,0,0.1)"
96
- padding: "1.5rem"
97
- modal:
98
- borderRadius: "xl"
99
- maxWidth: "32rem"
100
- overlay: "rgba(0,0,0,0.5)"
101
- table:
102
- headerBg: "gray-100"
103
- rowHover: "gray-50"
104
- borderColor: "gray-300"
105
- ```
106
-
107
- ---
108
-
109
- ## Visión general
110
-
111
- Este documento es la fuente de verdad para las decisiones visuales del proyecto. Todo cambio de UI debe consultar este archivo primero. Si el cambio requiere un nuevo token o componente, actualizar este archivo antes de implementar.
112
-
113
- Los tokens de diseño viven aquí. Los componentes se implementan en código y **referencian** estos tokens.
114
-
115
- ---
116
-
117
- ## Colores
118
-
119
- ### Paleta principal
120
-
121
- | Token | Valor | Uso |
122
- |-------|-------|-----|
123
- | `primary-500` | `#[valor]` | Botones principales, links activos, elementos de acción |
124
- | `primary-700` | `#[valor]` | Botones en estado hover/active |
125
- | `secondary-500` | `#[valor]` | Elementos secundarios, iconos, texto complementario |
126
-
127
- ### Colores semánticos
128
-
129
- | Token | Valor | Cuándo usarlo |
130
- |-------|-------|---------------|
131
- | `success` | `#[valor]` | Operaciones exitosas, confirmaciones, estados positivos |
132
- | `warning` | `#[valor]` | Advertencias, datos que requieren atención sin ser error |
133
- | `error` | `#[valor]` | Errores, validaciones fallidas, operaciones fallidas |
134
- | `info` | `#[valor]` | Información contextual, tooltips, ayuda |
135
-
136
- ### Reglas de contraste
137
-
138
- - Todo texto sobre fondos de color debe cumplir con **WCAG 2.1 nivel AA** (ratio mínimo 4.5:1 para texto normal, 3:1 para texto grande).
139
- - Verificar contraste con [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/).
140
- - Nunca usar `gray-300` como color de texto sobre fondo blanco.
141
-
142
- ---
143
-
144
- ## Tipografía
145
-
146
- ### Jerarquía
147
-
148
- | Elemento | Tamaño | Peso | Line-height | Uso |
149
- |----------|--------|------|-------------|-----|
150
- | H1 | `2.25rem` (36px) | Bold (700) | Tight (1.25) | Título de página. Una sola vez por página. |
151
- | H2 | `1.5rem` (24px) | Semibold (600) | Tight (1.25) | Título de sección. |
152
- | H3 | `1.25rem` (20px) | Semibold (600) | Base (1.5) | Título de subsección o card. |
153
- | H4 | `1.125rem` (18px) | Medium (500) | Base (1.5) | Títulos menores. |
154
- | Body | `1rem` (16px) | Regular (400) | Base (1.5) | Texto de párrafo. |
155
- | Small | `0.875rem` (14px) | Regular (400) | Base (1.5) | Texto secundario, labels, helpers. |
156
- | Caption | `0.75rem` (12px) | Regular (400) | Base (1.5) | Notas legales, timestamps, metadatos. |
157
-
158
- ### Reglas
159
-
160
- - Máximo **3 niveles de headings** por página (H1 → H2 → H3).
161
- - No usar H1 más de una vez por vista.
162
- - Texto siempre en `base` (16px) como mínimo. No usar `xs` para texto funcional.
163
-
164
- ---
165
-
166
- ## Layout y espaciado
167
-
168
- ### Grid
169
-
170
- - Grid base de **4px**. Todo espaciado debe ser múltiplo de 4.
171
- - Container máximo: `1280px` centrado.
172
- - Padding lateral del container: `1.5rem` en mobile, `2rem` en desktop.
173
-
174
- ### Breakpoints
175
-
176
- | Nombre | Ancho | Dispositivo |
177
- |--------|-------|-------------|
178
- | `sm` | `640px` | Mobile horizontal |
179
- | `md` | `768px` | Tablet vertical |
180
- | `lg` | `1024px` | Tablet horizontal / laptop |
181
- | `xl` | `1280px` | Desktop |
182
-
183
- ---
184
-
185
- ## Elevación (Shadows)
186
-
187
- | Nivel | Sombra | Uso |
188
- |-------|--------|-----|
189
- | `none` | `none` | Elementos flat, backgrounds |
190
- | `sm` | `0 1px 2px rgba(0,0,0,0.05)` | Cards en reposo |
191
- | `md` | `0 4px 6px rgba(0,0,0,0.1)` | Cards con hover, dropdowns |
192
- | `lg` | `0 10px 15px rgba(0,0,0,0.1)` | Modales, popovers |
193
- | `xl` | `0 20px 25px rgba(0,0,0,0.15)` | Elementos flotantes destacados |
194
-
195
- ---
196
-
197
- ## Componentes
198
-
199
- ### Botones
200
-
201
- | Variante | Fondo | Texto | Borde |
202
- |----------|-------|-------|-------|
203
- | **Primary** | `primary-500` | `white` | Ninguno |
204
- | **Secondary** | `white` | `gray-700` | `gray-300` |
205
- | **Ghost** | Transparente | `gray-700` | Ninguno |
206
- | **Danger** | `error` | `white` | Ninguno |
207
-
208
- | Tamaño | Height | Padding horizontal | Font size |
209
- |--------|--------|-------------------|-----------|
210
- | `sm` | `2rem` | `0.75rem` | `sm` |
211
- | `md` | `2.5rem` | `1rem` | `base` |
212
- | `lg` | `3rem` | `1.5rem` | `lg` |
213
-
214
- ### Inputs
215
-
216
- - Altura: `2.5rem`
217
- - Border: `1px solid gray-300`
218
- - Border focus: `2px solid primary-500`
219
- - Border error: `2px solid error`
220
- - Placeholder: `gray-500`
221
- - Mensaje de error debajo del input en color `error`, tamaño `sm`.
222
-
223
- ### Cards
224
-
225
- - Border radius: `lg`
226
- - Sombra: `sm` en reposo, `md` en hover
227
- - Padding interno: `1.5rem`
228
- - Separación entre cards: `1rem`
229
-
230
- ---
231
-
232
- ## Comportamiento responsive
233
-
234
- Principio: **Mobile first**. Se diseña para mobile y se escala hacia desktop.
235
-
236
- 1. En mobile (< 768px): una sola columna, navegación colapsada, cards apiladas.
237
- 2. En tablet (768px - 1024px): dos columnas donde aplique, sidebar colapsable.
238
- 3. En desktop (> 1024px): layout completo con sidebar expandida.
239
-
240
- Regla: ningún elemento debe quedar fuera de viewport o requerir scroll horizontal en ningún breakpoint.
241
-
242
- ---
243
-
244
- ## Cómo actualizar este archivo
245
-
246
- Cuando se añada o cambie un elemento visual:
247
-
248
- 1. Actualizar el token en el bloque YAML de arriba.
249
- 2. Actualizar la tabla en la sección correspondiente.
250
- 3. Verificar que los componentes que usan ese token sigan teniendo contraste adecuado.
251
- 4. Si el cambio es significativo, crear un ADR explicando el motivo.
252
-
253
- Para gestión integral del design system, usar la skill `doc-design`.
@@ -1,15 +0,0 @@
1
- ---
2
- created: "2026-05-07"
3
- updated: "2026-05-07"
4
- status: deprecated
5
- type: redirect
6
- tags: [flujo, diagrama, agentes]
7
- ---
8
-
9
- # ⚠️ Este archivo ha sido fusionado
10
-
11
- Todo el contenido de diagramas de flujo, estructura de agentes y flujos de decisión se ha consolidado en:
12
-
13
- → **[`docs/internal/agent-guide.md`](../internal/agent-guide.md)**
14
-
15
- Este archivo se mantiene como redirect para no romper enlaces existentes.
@@ -1,138 +0,0 @@
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
@@ -1,189 +0,0 @@
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).