@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.
Files changed (44) hide show
  1. package/README.md +115 -0
  2. package/dist/index.js +568 -0
  3. package/package.json +53 -0
  4. package/templates/base/AGENTS.md +177 -0
  5. package/templates/base/CHANGELOG.md +86 -0
  6. package/templates/base/README.md +110 -0
  7. package/templates/base/docs/CONTEXT.md +111 -0
  8. package/templates/base/docs/README.md +131 -0
  9. package/templates/base/docs/adr/TEMPLATE.md +83 -0
  10. package/templates/modules/agents/.agents/agents/doc-designer.md +56 -0
  11. package/templates/modules/agents/.agents/agents/doc-maintainer.md +54 -0
  12. package/templates/modules/agents/.agents/agents/doc-reviewer.md +80 -0
  13. package/templates/modules/agents/.agents/agents/doc-writer.md +66 -0
  14. package/templates/modules/agents/.agents/agents/reviewer.md +138 -0
  15. package/templates/modules/agents/.agents/skills/doc-design/SKILL.md +359 -0
  16. package/templates/modules/agents/.agents/skills/doc-design/references/design-system-format.md +550 -0
  17. package/templates/modules/agents/.agents/skills/doc-maintain/SKILL.md +345 -0
  18. package/templates/modules/agents/.agents/skills/doc-maintain/references/triggers.md +311 -0
  19. package/templates/modules/agents/.agents/skills/doc-review/SKILL.md +324 -0
  20. package/templates/modules/agents/.agents/skills/doc-review/references/health-checklist.md +290 -0
  21. package/templates/modules/agents/.agents/skills/doc-scaffold/SKILL.md +277 -0
  22. package/templates/modules/agents/.agents/skills/doc-scaffold/references/diataxis-quick-ref.md +149 -0
  23. package/templates/modules/agents/.agents/skills/doc-write/SKILL.md +414 -0
  24. package/templates/modules/agents/.agents/skills/doc-write/references/adr-format.md +194 -0
  25. package/templates/modules/agents/.agents/skills/doc-write/references/diataxis-patterns.md +351 -0
  26. package/templates/modules/ci/.github/workflows/docs-check.yml +94 -0
  27. package/templates/modules/design/docs/DESIGN.md +253 -0
  28. package/templates/modules/explanation/docs/explanation/agent-flow.md +15 -0
  29. package/templates/modules/explanation/docs/explanation/architecture.md +138 -0
  30. package/templates/modules/guides/docs/guides/deployment.md +189 -0
  31. package/templates/modules/guides/docs/guides/runbooks/TEMPLATE.md +86 -0
  32. package/templates/modules/guides/docs/guides/troubleshooting.md +65 -0
  33. package/templates/modules/operations/docs/operations/README.md +115 -0
  34. package/templates/modules/product/docs/product/overview.md +90 -0
  35. package/templates/modules/product/docs/roadmap.md +80 -0
  36. package/templates/modules/reference/docs/reference/api.md +131 -0
  37. package/templates/modules/reference/docs/reference/code-style.md +275 -0
  38. package/templates/modules/reference/docs/reference/configuration.md +117 -0
  39. package/templates/modules/reference/docs/reference/infrastructure.md +191 -0
  40. package/templates/modules/tutorials/docs/tutorials/environment-setup.md +212 -0
  41. package/templates/modules/tutorials/docs/tutorials/first-task.md +246 -0
  42. package/templates/modules/tutorials/docs/tutorials/quick-start.md +146 -0
  43. package/templates/shared/.editorconfig +20 -0
  44. package/templates/shared/.markdownlint.json +14 -0
@@ -0,0 +1,351 @@
1
+ ---
2
+ created: "2024-01-15"
3
+ status: active
4
+ type: reference
5
+ tags: [diataxis, patrones, documentacion, escritura]
6
+ ---
7
+
8
+ # Diátaxis — Patrones Detallados por Tipo
9
+
10
+ ## Patrones de Tutorial
11
+
12
+ ### Estructura canónica
13
+
14
+ ```markdown
15
+ # [Verbo + objeto del aprendizaje]
16
+
17
+ ## Qué vas a construir
18
+ [Resultado tangible que el lector obtendrá]
19
+
20
+ ## Prerequisitos
21
+ [Lista exacta: software, conocimientos, acceso]
22
+
23
+ ## Paso 1: [Acción concreta en infinitivo]
24
+ [Instrucciones paso a paso]
25
+ [Código completo y ejecutable]
26
+
27
+ ### ✅ Verificación
28
+ [Comando o acción para confirmar que funciona]
29
+
30
+ ## Paso N: ...
31
+
32
+ ## Resumen
33
+ [Qué se aprendió]
34
+ [Próximos pasos sugeridos]
35
+ ```
36
+
37
+ ### Tono
38
+
39
+ - **Didáctico y paciente**: No asumir conocimiento previo del tema
40
+ - **Un concepto a la vez**: Cada paso introduce UNA cosa nueva
41
+ - **Alentador**: Mostrar progreso visible y frecuentemente
42
+ - **Concreto**: Usar ejemplos específicos, no abstractos
43
+
44
+ ### Longitud
45
+
46
+ - **Ideal**: 500-1500 palabras
47
+ - **Máximo**: 2000 palabras — si es más, dividir en tutoriales secuenciales
48
+ - **Mínimo**: 300 palabras — si es menos, probablemente es un how-to
49
+
50
+ ### Cuándo escribir un tutorial
51
+
52
+ - Un usuario nuevo necesita aprender una habilidad fundamental
53
+ - Hay un flujo de onboarding que nadie ha documentado
54
+ - Un concepto clave se enseña repetidamente a nuevas personas
55
+
56
+ ### Ejemplo concreto
57
+
58
+ ```markdown
59
+ ---
60
+ created: "2024-03-10"
61
+ status: active
62
+ type: tutorial
63
+ tags: [onboarding, api, express]
64
+ ---
65
+
66
+ # Crear tu primer endpoint con Express
67
+
68
+ ## Qué vas a construir
69
+ Un endpoint GET /api/health que responda con el estado del servidor.
70
+
71
+ ## Prerequisitos
72
+ - Node.js 18+ instalado
73
+ - Editor de código
74
+ - Terminal
75
+
76
+ ## Paso 1: Inicializar el proyecto
77
+
78
+ Crea una carpeta nueva e inicializa el proyecto:
79
+
80
+ \`\`\`bash
81
+ mkdir mi-api && cd mi-api
82
+ npm init -y
83
+ npm install express
84
+ \`\`\`
85
+
86
+ ### ✅ Verificación
87
+ Deberías ver `node_modules/` y `package.json` en la carpeta.
88
+
89
+ ## Paso 2: Crear el servidor
90
+
91
+ Crea `index.js`:
92
+
93
+ \`\`\`javascript
94
+ const express = require('express');
95
+ const app = express();
96
+
97
+ app.get('/api/health', (req, res) => {
98
+ res.json({ status: 'ok', timestamp: new Date().toISOString() });
99
+ });
100
+
101
+ app.listen(3000, () => {
102
+ console.log('Servidor corriendo en http://localhost:3000');
103
+ });
104
+ \`\`\`
105
+
106
+ ### ✅ Verificación
107
+ Ejecuta `node index.js` y abre `http://localhost:3000/api/health` en el navegador.
108
+ Deberías ver `{"status":"ok","timestamp":"..."}`.
109
+
110
+ ## Resumen
111
+ Aprendiste a crear un servidor Express con un endpoint GET.
112
+ Próximo paso: [[tutorials/add-database]] para conectar una base de datos.
113
+ ```
114
+
115
+ ### Anti-patrones de tutorial
116
+
117
+ | Anti-patrón | Por qué es malo | Qué hacer en su lugar |
118
+ |-------------|----------------|----------------------|
119
+ | Explicar teoría antes de practicar | Aburre al principiante | Explicar MIENTRAS se hace |
120
+ | Saltarse pasos de verificación | El lector se pierde sin saberlo | Verificar después de CADA paso |
121
+ | Asumir conocimiento previo | Frustra al principiante | Listar prerequisitos explícitos |
122
+ | Código incompleto o seudo-código | No se puede ejecutar | Código SIEMPRE completo y ejecutable |
123
+ | Cubrir múltiples temas | Satura al lector | Un tutorial = un tema |
124
+ | Enlaces a docs externas para lo básico | Interrumpe el flujo | Incluir todo lo necesario inline |
125
+
126
+ ---
127
+
128
+ ## Patrones de How-to
129
+
130
+ ### Estructura canónica
131
+
132
+ ```markdown
133
+ # Cómo [resolver problema específico]
134
+
135
+ ## Cuándo usar esto
136
+ [1-3 líneas: escenario donde aplica esta guía]
137
+
138
+ ## Pasos
139
+ 1. [Acción directa]
140
+ 2. [Acción directa]
141
+ ...
142
+
143
+ ## Resultado esperado
144
+ [Qué se obtiene al final]
145
+ ```
146
+
147
+ ### Tono
148
+
149
+ - **Directo**: Al grano, sin preámbulos
150
+ - **Asume conocimiento**: El lector ya conoce el sistema
151
+ - **Práctico**: Pasos concretos, no explicaciones teóricas
152
+ - **Sin justificación**: No explicar por qué — si el lector pregunta por qué, necesita una explicación, no un how-to
153
+
154
+ ### Cuándo dividir un how-to
155
+
156
+ - Más de 10 pasos → dividir en how-tos más específicos
157
+ - Cubre más de un problema → un how-to por problema
158
+ - Tiene secciones de explicación → extraer la explicación a explanation/
159
+
160
+ ### Ejemplo concreto
161
+
162
+ ```markdown
163
+ ---
164
+ created: "2024-03-10"
165
+ status: active
166
+ type: how-to
167
+ tags: [auth, jwt, middleware]
168
+ ---
169
+
170
+ # Cómo agregar autenticación JWT a una API existente
171
+
172
+ ## Cuándo usar esto
173
+ Cuando tienes una API Express funcionando y necesitas proteger endpoints con JWT.
174
+
175
+ ## Pasos
176
+
177
+ 1. Instalar dependencias:
178
+
179
+ \`\`\`bash
180
+ npm install jsonwebtoken bcryptjs
181
+ \`\`\`
182
+
183
+ 2. Crear middleware de auth en `src/middleware/auth.js`:
184
+
185
+ \`\`\`javascript
186
+ const jwt = require('jsonwebtoken');
187
+
188
+ function authMiddleware(req, res, next) {
189
+ const token = req.headers.authorization?.split(' ')[1];
190
+ if (!token) return res.status(401).json({ error: 'Token requerido' });
191
+
192
+ try {
193
+ req.user = jwt.verify(token, process.env.JWT_SECRET);
194
+ next();
195
+ } catch {
196
+ res.status(401).json({ error: 'Token inválido' });
197
+ }
198
+ }
199
+
200
+ module.exports = authMiddleware;
201
+ \`\`\`
202
+
203
+ 3. Proteger endpoints:
204
+
205
+ \`\`\`javascript
206
+ const auth = require('./middleware/auth');
207
+ app.get('/api/profile', auth, (req, res) => { ... });
208
+ \`\`\`
209
+
210
+ ## Resultado esperado
211
+ Los endpoints protegidos requieren un JWT válido en el header `Authorization: Bearer <token>`.
212
+ ```
213
+
214
+ ### Anti-patrones de how-to
215
+
216
+ | Anti-patrón | Por qué es malo | Qué hacer en su lugar |
217
+ |-------------|----------------|----------------------|
218
+ | Explicar conceptos básicos | El lector ya debería saberlo | Link a tutorial si necesita base |
219
+ | Narrativa o storytelling | No es lo que busca el lector | Pasos directos y enumerados |
220
+ | Múltiples soluciones alternativas | Confunde al lector | Una solución, la mejor práctica |
221
+ | Prerequisitos extensos | Si necesita mucho setup, es un tutorial | Simplificar o link a tutorial |
222
+ | "Opcionalmente puedes..." | Genera incertidumbre | Un camino claro |
223
+
224
+ ---
225
+
226
+ ## Patrones de Referencia
227
+
228
+ ### Estructura canónica
229
+
230
+ ```markdown
231
+ # [Nombre del sistema/API/interfaz]
232
+
233
+ ## [Sección principal]
234
+
235
+ | Parámetro | Tipo | Requerido | Descripción | Default |
236
+ |-----------|------|-----------|-------------|---------|
237
+ | ... | ... | ... | ... | ... |
238
+
239
+ ## Códigos de respuesta
240
+
241
+ | Código | Significado | Cuándo se retorna |
242
+ |--------|------------|-------------------|
243
+ | ... | ... | ... |
244
+
245
+ ## Ejemplos
246
+ [Un ejemplo mínimo por cada caso de uso principal]
247
+ ```
248
+
249
+ ### Tono
250
+
251
+ - **Neutral y factual**: Sin opiniones, sin narrativa
252
+ - **Estructurado**: Tablas > listas > prosa
253
+ - **Completo**: Incluir TODOS los parámetros, TODOS los casos
254
+ - **Sin explicaciones**: Si necesita explicarse, linkear a explanation/
255
+
256
+ ### Pistas para auto-generación
257
+
258
+ Si el código tiene:
259
+ - **OpenAPI/Swagger**: Generar referencia desde el spec
260
+ - **TypeScript interfaces**: Extraer tipos y comentarios JSDoc
261
+ - **JSON Schema**: Usar el schema como base
262
+ - **CLI con `--help`**: Capturar la salida completa
263
+
264
+ ### Qué incluir siempre
265
+
266
+ - Todos los parámetros/props/campos con tipo y descripción
267
+ - Valores por defecto
268
+ - Valores permitidos (enums)
269
+ - Restricciones (min, max, formato)
270
+ - Códigos de error
271
+ - Ejemplos mínimos por cada caso principal
272
+
273
+ ### Anti-patrones de referencia
274
+
275
+ | Anti-patrón | Por qué es malo | Qué hacer en su lugar |
276
+ |-------------|----------------|----------------------|
277
+ | Prosa narrativa | La referencia debe ser consultable | Tablas y listas |
278
+ | Ejemplos sin contexto | No se sabe cuándo usar cada uno | Un ejemplo por caso de uso |
279
+ | Parámetros parciales | El lector no puede confiar en la doc | Documentar TODO o indicar qué falta |
280
+ | Explicar el porqué | No es el lugar | Link a explanation/ |
281
+ | Obviar edge cases | Sorprende al lector | Documentar todos los casos |
282
+
283
+ ---
284
+
285
+ ## Patrones de Explicación
286
+
287
+ ### Estructura canónica
288
+
289
+ ```markdown
290
+ # [Tema o pregunta que se responde]
291
+
292
+ ## Contexto
293
+ [Por qué existe, qué problema aborda]
294
+
295
+ ## Cómo funciona
296
+ [Vista general conceptual — sin código]
297
+
298
+ ## Alternativas consideradas
299
+ [Qué otras opciones existían]
300
+
301
+ ## Implicaciones
302
+ [Qué significa para el presente y futuro]
303
+ ```
304
+
305
+ ### Tono
306
+
307
+ - **Discursivo y analítico**: Como una conversación con un colega experto
308
+ - **Conectivo**: Relacionar con otros conceptos, ADRs, decisiones
309
+ - **Histórico**: Contar la historia de por qué se llegó aquí
310
+ - **Sin código** (o mínimo): El foco es el entendimiento, no la implementación
311
+
312
+ ### Cuándo es necesaria una explicación
313
+
314
+ - Un ADR necesita más contexto del que cabe en 1-3 oraciones
315
+ - Un concepto se referencia en múltiples how-tos/tutoriales y merece su propio espacio
316
+ - Alguien preguntó "¿por qué hicimos esto así?" más de una vez
317
+ - Hay confusión recurrente sobre un tema
318
+
319
+ ### Vinculación con ADRs
320
+
321
+ ```markdown
322
+ Para la decisión formal, ver [[ADR-003-event-sourcing]].
323
+ Este documento explica el contexto y las implicaciones en mayor detalle.
324
+ ```
325
+
326
+ ### Anti-patrones de explicación
327
+
328
+ | Anti-patrón | Por qué es malo | Qué hacer en su lugar |
329
+ |-------------|----------------|----------------------|
330
+ | Instrucciones paso a paso | Eso es un tutorial o how-to | Enfocarse en el porqué |
331
+ | Listar todas las opciones de config | Eso es referencia | Explicar la lógica detrás |
332
+ | Sin contexto histórico | Pierde el valor de la explicación | Incluir cómo se llegó ahí |
333
+ | Demasiado abstracto | No ayuda a entender | Usar analogías concretas |
334
+ | Repetir el ADR palabra por palabra | No agrega valor | Expandir con contexto y matices |
335
+
336
+ ---
337
+
338
+ ## Anti-patrones Transversales
339
+
340
+ ### Anti-patrones que aplican a TODOS los tipos
341
+
342
+ | Anti-patrón | Descripción | Solución |
343
+ |-------------|-------------|----------|
344
+ | **Documento camaleón** | Intenta ser dos tipos a la vez | Un doc = un tipo. Separar. |
345
+ | **Contenido placeholder** | "TODO: agregar contenido" | Escribir contenido real o no crear |
346
+ | **Sin frontmatter** | Archivo sin metadatos YAML | Siempre incluir frontmatter |
347
+ | **Sin fecha** | No se sabe cuándo se creó | Siempre incluir `created` |
348
+ | **Términos sin definir** | Jerga sin referencia a CONTEXT.md | Definir o linkear |
349
+ | **Enlaces rotos** | Referencias a archivos que no existen | Verificar antes de publicar |
350
+ | **Contenido duplicado** | Misma info en múltiples archivos | Referenciar, no duplicar |
351
+ | **Sin verificación** | No hay forma de saber si está actualizado | Incluir `last-reviewed` en frontmatter |
@@ -0,0 +1,94 @@
1
+ name: Docs Health Check
2
+
3
+ on:
4
+ push:
5
+ paths:
6
+ - 'docs/**'
7
+ - 'AGENTS.md'
8
+ - 'README.md'
9
+ - 'CHANGELOG.md'
10
+ pull_request:
11
+ paths:
12
+ - 'docs/**'
13
+
14
+ jobs:
15
+ docs-check:
16
+ runs-on: ubuntu-latest
17
+ name: Verificar documentación
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Verificar frontmatter YAML en todos los .md de docs/
22
+ run: |
23
+ echo "🔍 Verificando frontmatter YAML..."
24
+ errors=0
25
+ for file in $(find docs -name "*.md" -type f); do
26
+ if ! head -1 "$file" | grep -q "^---"; then
27
+ echo "❌ Sin frontmatter: $file"
28
+ errors=$((errors + 1))
29
+ fi
30
+ done
31
+ if [ $errors -gt 0 ]; then
32
+ echo "::error::$errors archivo(s) sin frontmatter YAML"
33
+ exit 1
34
+ fi
35
+ echo "✅ Todos los archivos tienen frontmatter"
36
+
37
+ - name: Verificar que no hay archivos vacíos en docs/
38
+ run: |
39
+ echo "🔍 Verificando archivos vacíos..."
40
+ errors=0
41
+ for file in $(find docs -name "*.md" -type f); do
42
+ # Un archivo con solo frontmatter tiene menos de 10 líneas útiles
43
+ content_lines=$(grep -v "^---$" "$file" | grep -v "^$" | wc -l)
44
+ if [ "$content_lines" -lt 3 ]; then
45
+ echo "⚠️ Archivo con poco contenido: $file ($content_lines líneas)"
46
+ fi
47
+ done
48
+ echo "✅ Verificación de archivos vacíos completada"
49
+
50
+ - name: Verificar links internos rotos
51
+ run: |
52
+ echo "🔍 Verificando links internos..."
53
+ errors=0
54
+ for file in $(find docs -name "*.md" -type f); do
55
+ # Extraer links relativos tipo [text](path.md)
56
+ links=$(grep -oP '\[.*?\]\(\K[^)]+' "$file" | grep -v "^http" | grep -v "^#" || true)
57
+ dir=$(dirname "$file")
58
+ for link in $links; do
59
+ # Resolver path relativo
60
+ target=$(realpath --relative-to=. "$dir/$link" 2>/dev/null || echo "")
61
+ if [ -n "$target" ] && [ ! -f "$target" ]; then
62
+ echo "❌ Link roto en $file → $link"
63
+ errors=$((errors + 1))
64
+ fi
65
+ done
66
+ done
67
+ if [ $errors -gt 0 ]; then
68
+ echo "::warning::$errors link(s) interno(s) rotos encontrados"
69
+ else
70
+ echo "✅ Todos los links internos son válidos"
71
+ fi
72
+
73
+ - name: Verificar CONTEXT.md tiene contenido
74
+ run: |
75
+ echo "🔍 Verificando CONTEXT.md..."
76
+ if [ -f "docs/CONTEXT.md" ]; then
77
+ completeness=$(grep -oP 'completeness:\s*"\K[0-9]+' docs/CONTEXT.md || echo "0")
78
+ if [ "$completeness" -lt 20 ]; then
79
+ echo "::warning::CONTEXT.md tiene completeness: ${completeness}%. Priorizar su actualización."
80
+ else
81
+ echo "✅ CONTEXT.md completeness: ${completeness}%"
82
+ fi
83
+ else
84
+ echo "::error::docs/CONTEXT.md no existe"
85
+ exit 1
86
+ fi
87
+
88
+ - name: Resumen
89
+ run: |
90
+ echo "📊 Resumen de documentación:"
91
+ echo " Archivos .md en docs/: $(find docs -name '*.md' -type f | wc -l)"
92
+ echo " ADRs: $(find docs/adr -name '*.md' -not -name 'TEMPLATE*' -type f 2>/dev/null | wc -l)"
93
+ echo " Tutoriales: $(find docs/tutorials -name '*.md' -type f 2>/dev/null | wc -l)"
94
+ echo " Guías: $(find docs/guides -name '*.md' -type f 2>/dev/null | wc -l)"
@@ -0,0 +1,253 @@
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`.
@@ -0,0 +1,15 @@
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.