sdd-es 2.0.0 → 2.6.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 (127) hide show
  1. package/.claude/settings.json +29 -29
  2. package/.claude/settings.local.json +10 -0
  3. package/.claude-plugin/marketplace.json +10 -7
  4. package/.claude-plugin/plugin.json +59 -37
  5. package/.gitignore +20 -0
  6. package/.mcp.json +8 -0
  7. package/LICENSE +21 -0
  8. package/README.md +77 -40
  9. package/agents/architecture-designer.md +211 -0
  10. package/agents/arquitecto.md +16 -1
  11. package/agents/asesor-datos.md +15 -1
  12. package/agents/critico.md +37 -1
  13. package/agents/desarrollador-backend.md +3 -1
  14. package/agents/desarrollador-frontend.md +11 -16
  15. package/agents/disenador-api.md +13 -1
  16. package/agents/documentador.md +3 -1
  17. package/agents/investigador.md +3 -1
  18. package/agents/operaciones.md +3 -1
  19. package/agents/product-designer.md +268 -0
  20. package/agents/revisor.md +25 -1
  21. package/agents/seguridad.md +5 -1
  22. package/agents/tester.md +3 -1
  23. package/claude-hooks/agent-memory.js +288 -0
  24. package/claude-hooks/pre-tool-guard.js +61 -9
  25. package/cli/index.js +1 -2
  26. package/commands/sdd.adr.md +196 -0
  27. package/commands/sdd.analizar.md +23 -2
  28. package/commands/sdd.ayuda.md +13 -0
  29. package/commands/sdd.compliance.md +521 -0
  30. package/commands/sdd.configurar.md +34 -1
  31. package/commands/sdd.constitucion.md +198 -23
  32. package/commands/sdd.construir.md +210 -0
  33. package/commands/sdd.crear-mcp.md +2 -0
  34. package/commands/sdd.defect-report.md +134 -0
  35. package/commands/sdd.descubrir.md +19 -0
  36. package/commands/sdd.dise/303/261ar.md +188 -0
  37. package/commands/sdd.estado.md +120 -3
  38. package/commands/sdd.exportar.md +344 -0
  39. package/commands/sdd.implementar.md +272 -52
  40. package/commands/sdd.interpretar.md +239 -0
  41. package/commands/sdd.md +93 -4
  42. package/commands/sdd.optimizar-memoria.md +47 -0
  43. package/commands/sdd.optimizar.md +164 -0
  44. package/commands/sdd.planificar.md +64 -0
  45. package/commands/sdd.retro.md +74 -0
  46. package/commands/sdd.verificar.md +81 -0
  47. package/configuracion-ejemplo/.claude/CLAUDE.md +106 -0
  48. package/configuracion-ejemplo/sdd.config.yaml +10 -0
  49. package/craft/accessibility-baseline.md +216 -0
  50. package/craft/anti-ai-slop.md +158 -0
  51. package/craft/color.md +160 -0
  52. package/craft/typography.md +121 -0
  53. package/design-systems/bold-brutalist/DESIGN.md +239 -0
  54. package/design-systems/editorial-minimal/DESIGN.md +205 -0
  55. package/design-systems/neutral-modern/DESIGN.md +227 -0
  56. package/design-systems/vibrant-consumer/DESIGN.md +257 -0
  57. package/design-systems/warm-editorial/DESIGN.md +221 -0
  58. package/docs/AGENTES.md +4 -1
  59. package/docs/CASO-COMPLETO.md +206 -0
  60. package/docs/EJEMPLOS.md +61 -185
  61. package/docs/FABRICA.md +163 -115
  62. package/docs/INICIO-RAPIDO.md +27 -79
  63. package/docs/MEMORIA-Y-OBSERVABILIDAD.md +239 -0
  64. package/docs/MODELOS.md +3 -0
  65. package/docs/QUE-PASA-SI-FALLA.md +404 -0
  66. package/docs/README.md +43 -0
  67. package/docs/RELACION-CON-CLAUDE-CODE.md +38 -0
  68. package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
  69. package/package.json +15 -10
  70. package/plantillas/job-story-mejorar-prompt.md +107 -0
  71. package/presets/enterprise.yaml +6 -0
  72. package/presets/lean.yaml +4 -0
  73. package/presets/startup.yaml +6 -0
  74. package/skills/adr-indexer/SKILL.md +181 -0
  75. package/skills/cache-audit/SKILL.md +163 -0
  76. package/skills/critica-diseno/SKILL.md +193 -0
  77. package/skills/descubrir-idea/SKILL.md +133 -0
  78. package/skills/effort-router/SKILL.md +128 -0
  79. package/skills/elegir-direccion/SKILL.md +184 -0
  80. package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
  81. package/skills/github-connect/INDEX.md +223 -0
  82. package/skills/github-connect/INTEGRATION.md +361 -0
  83. package/skills/github-connect/QUICK-START.md +168 -0
  84. package/skills/github-connect/README.md +414 -0
  85. package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
  86. package/skills/github-connect/SKILL.md +343 -0
  87. package/skills/github-connect/STRUCTURE.txt +252 -0
  88. package/skills/github-connect/example-config.yaml +41 -0
  89. package/skills/github-connect/github-connect.sh +419 -0
  90. package/skills/interpretar-idea/SKILL.md +254 -0
  91. package/skills/mejorar-prompt/SKILL.md +237 -0
  92. package/skills/memory-compactor/SKILL.md +68 -0
  93. package/skills/modo-guiado/SKILL.md +12 -2
  94. package/skills/mutation-detector/SKILL.md +134 -0
  95. package/skills/observabilidad-consumo/SKILL.md +164 -0
  96. package/skills/token-budget/SKILL.md +177 -0
  97. package/skills/vercel-deploy/00-START-HERE.txt +364 -0
  98. package/skills/vercel-deploy/CHECKLIST.md +205 -0
  99. package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
  100. package/skills/vercel-deploy/FLOW.txt +334 -0
  101. package/skills/vercel-deploy/INDEX.md +276 -0
  102. package/skills/vercel-deploy/INTEGRATION.md +328 -0
  103. package/skills/vercel-deploy/MANIFEST.md +310 -0
  104. package/skills/vercel-deploy/README.md +65 -0
  105. package/skills/vercel-deploy/SKILL.md +356 -0
  106. package/skills/vercel-deploy/deploy.sh +298 -0
  107. package/skills/vercel-deploy/estado.json.example +205 -0
  108. package/skills/vercel-deploy/skill.yaml +323 -0
  109. package/skills/vercel-deploy/vercel-deploy.sh +216 -0
  110. package/skills/wireframe-mvp/SKILL.md +157 -0
  111. package/docs/EJEMPLO-PRACTICA.md +0 -383
  112. package/mcp-figma/README.md +0 -158
  113. package/mcp-figma/package.json +0 -7
  114. package/mcp-figma/src/component-generator.js +0 -162
  115. package/mcp-figma/src/design-system-analyzer.js +0 -247
  116. package/mcp-figma/src/figma-client.js +0 -75
  117. package/mcp-figma/src/index.js +0 -114
  118. package/mcp-figma/src/mcp.js +0 -97
  119. package/mcp-figma/src/style-mapper.js +0 -85
  120. /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
  121. /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
  122. /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
  123. /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
  124. /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
  125. /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
  126. /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
  127. /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
package/craft/color.md ADDED
@@ -0,0 +1,160 @@
1
+ # Color Rules — FORGE Craft
2
+
3
+ Adoptado de open-design (nexu-io). Referencia para agentes de diseño.
4
+
5
+ ---
6
+
7
+ ## Principio fundamental
8
+
9
+ **Un color de acento. Un color de fondo. Un color de texto. Todo lo demás es variante.**
10
+
11
+ La mayoría de diseños de IA generada fallan porque usan demasiados colores. La restricción genera identidad.
12
+
13
+ ---
14
+
15
+ ## Sistema de roles de color
16
+
17
+ Todo color en un UI tiene un **rol**, no un valor arbitrario. Define los roles primero, los valores después.
18
+
19
+ | Variable CSS | Rol | Descripción |
20
+ |--------------|-----|-------------|
21
+ | `--bg-base` | Fondo base | La superficie más grande de la pantalla |
22
+ | `--bg-surface` | Superficie elevada | Cards, modales, sidebars |
23
+ | `--bg-surface2` | Superficie doble elevada | Inputs, tooltips, dropdowns |
24
+ | `--text-primary` | Texto principal | Headings, labels importantes |
25
+ | `--text-secondary` | Texto secundario | Body text, descripciones |
26
+ | `--text-muted` | Texto atenuado | Metadata, placeholders, timestamps |
27
+ | `--text-inverse` | Texto invertido | Texto sobre fondos de acento |
28
+ | `--accent` | Color de acento | CTAs, links, indicadores de progreso |
29
+ | `--accent-hover` | Acento al hover | Versión más clara/oscura del acento |
30
+ | `--accent-subtle` | Acento sutil | Fondos de badges, highlights |
31
+ | `--border` | Bordes | Líneas divisorias, bordes de inputs |
32
+ | `--error` | Error | Mensajes de error, validación fallida |
33
+ | `--success` | Éxito | Confirmaciones, validación exitosa |
34
+ | `--warning` | Advertencia | Alertas no críticas |
35
+
36
+ ---
37
+
38
+ ## Paletas por dirección visual
39
+
40
+ ### Neutral Modern (light)
41
+ ```css
42
+ :root {
43
+ --bg-base: #FAFAFA;
44
+ --bg-surface: #FFFFFF;
45
+ --bg-surface2: #F4F4F5;
46
+ --text-primary: #111111;
47
+ --text-secondary: #374151;
48
+ --text-muted: #6B7280;
49
+ --text-inverse: #FFFFFF;
50
+ --accent: #2563EB;
51
+ --accent-hover: #1D4ED8;
52
+ --accent-subtle:#DBEAFE;
53
+ --border: #E5E7EB;
54
+ --error: #DC2626;
55
+ --success: #16A34A;
56
+ --warning: #D97706;
57
+ }
58
+ ```
59
+
60
+ ### Warm Editorial (light)
61
+ ```css
62
+ :root {
63
+ --bg-base: #FAF8F4;
64
+ --bg-surface: #FFFFFF;
65
+ --bg-surface2: #F5F0E8;
66
+ --text-primary: #2C2416;
67
+ --text-secondary: #4A3728;
68
+ --text-muted: #7C6B5A;
69
+ --text-inverse: #FAF8F4;
70
+ --accent: #C0392B;
71
+ --accent-hover: #A93226;
72
+ --accent-subtle:#FADBD8;
73
+ --border: #DDD5C8;
74
+ --error: #C0392B;
75
+ --success: #1E8449;
76
+ --warning: #B7770D;
77
+ }
78
+ ```
79
+
80
+ ### Bold Brutalist (dark)
81
+ ```css
82
+ :root {
83
+ --bg-base: #0A0A0A;
84
+ --bg-surface: #141414;
85
+ --bg-surface2: #1E1E1E;
86
+ --text-primary: #F5F5F5;
87
+ --text-secondary: #D0D0D0;
88
+ --text-muted: #888888;
89
+ --text-inverse: #0A0A0A;
90
+ --accent: #F0E040;
91
+ --accent-hover: #F5E860;
92
+ --accent-subtle:#2A2800;
93
+ --border: #2E2E2E;
94
+ --error: #FF4444;
95
+ --success: #44FF88;
96
+ --warning: #FFAA00;
97
+ }
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Reglas de contraste (WCAG AA mínimo)
103
+
104
+ | Combinación | Ratio mínimo | Test |
105
+ |-------------|-------------|------|
106
+ | Texto sobre fondo base | 4.5:1 | `--text-primary` sobre `--bg-base` |
107
+ | Texto grande (> 18px bold) | 3:1 | `--text-secondary` sobre `--bg-surface` |
108
+ | Texto sobre acento | 4.5:1 | `--text-inverse` sobre `--accent` |
109
+ | Iconos / bordes | 3:1 | `--border` sobre `--bg-base` |
110
+
111
+ **Herramientas de verificación**: coolors.co/contrast-checker, webaim.org/resources/contrastchecker
112
+
113
+ ### Ratios comprobados de las paletas FORGE
114
+
115
+ | Paleta | text-primary / bg-base | text-inverse / accent |
116
+ |--------|----------------------|-----------------------|
117
+ | Neutral Modern | #111111 / #FAFAFA → **19.6:1** ✅ | #FFFFFF / #2563EB → **4.7:1** ✅ |
118
+ | Warm Editorial | #2C2416 / #FAF8F4 → **14.2:1** ✅ | #FAF8F4 / #C0392B → **4.6:1** ✅ |
119
+ | Bold Brutalist | #F5F5F5 / #0A0A0A → **18.9:1** ✅ | #0A0A0A / #F0E040 → **14.3:1** ✅ |
120
+
121
+ ---
122
+
123
+ ## Anti-patrones de color (no hacer)
124
+
125
+ ❌ **Gradiente de 2 colores en diagonal sobre hero** — cliché de IA generada (regla P0 de anti-ai-slop)
126
+ ❌ **Indigo #6366F1 como acento** — el azul Tailwind por defecto (regla P0 de anti-ai-slop)
127
+ ❌ **Más de 1 color de acento** — si necesitas un segundo acento, usa una variante del primero
128
+ ❌ **Texto de color sobre fondo de color** — solo si el contraste es ≥ 4.5:1
129
+ ❌ **Usar colores semánticos fuera de su rol** — `--error` no se usa para decoración
130
+ ❌ **Sombras de color saturado** (glow effects, colored box-shadows) — en B2B y herramientas parece poco serio
131
+ ❌ **Fondos blancos puros #FFFFFF en dark mode** — usar `--bg-surface` no `#FFFFFF`
132
+
133
+ ---
134
+
135
+ ## Cómo aplicar sombras (depth)
136
+
137
+ Las sombras deben ser casi negras, nunca de color. La opacidad define la profundidad.
138
+
139
+ ```css
140
+ /* Nivel 1 — Cards, dropdowns */
141
+ box-shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04);
142
+
143
+ /* Nivel 2 — Modales, sidebars elevados */
144
+ box-shadow: 0 4px 16px rgba(0,0,0,0.12), 0 2px 4px rgba(0,0,0,0.06);
145
+
146
+ /* Bold Brutalist — offset shadow sin difuminado */
147
+ box-shadow: 4px 4px 0 var(--accent);
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Referencia rápida para agentes
153
+
154
+ Cuando generes un wireframe:
155
+ 1. Lee el DESIGN.md activo — copia las variables CSS exactas de la paleta
156
+ 2. Define todas las variables en `:root { }` al inicio del `<style>`
157
+ 3. Nunca uses colores hex directos en los componentes — usa las variables
158
+ 4. Verifica mentalmente el contraste antes de finalizar (texto sobre fondo)
159
+ 5. Si el DESIGN.md es bold-brutalist, las sombras son offset `4px 4px 0` sin blur
160
+ 6. Nunca uses gradientes en diagonal como fondo de hero
@@ -0,0 +1,121 @@
1
+ # Typography Rules — FORGE Craft
2
+
3
+ Adoptado de open-design (nexu-io). Referencia para agentes de diseño.
4
+
5
+ ---
6
+
7
+ ## Principio fundamental
8
+
9
+ **La tipografía no es decoración — es jerarquía.**
10
+
11
+ El lector debe saber en 0.3 segundos dónde está el título, el cuerpo y la acción. Si hay duda, la tipografía falló.
12
+
13
+ ---
14
+
15
+ ## Escala tipográfica base
16
+
17
+ Usa una escala con ratio 1.25 (Major Third) o 1.333 (Perfect Fourth). No inventes tamaños arbitrarios.
18
+
19
+ ### Perfect Fourth (ratio 1.333) — recomendada para productos web
20
+
21
+ | Rol | Tamaño | Uso |
22
+ |-----|--------|-----|
23
+ | `--text-xs` | 10px | Labels, captions, badges |
24
+ | `--text-sm` | 12px | Texto auxiliar, metadata |
25
+ | `--text-base` | 14px | Cuerpo de texto principal |
26
+ | `--text-md` | 16px | Párrafos largos, descripciones |
27
+ | `--text-lg` | 18px | Lead text, subtítulos |
28
+ | `--text-xl` | 24px | Títulos de sección (h3) |
29
+ | `--text-2xl` | 32px | Títulos de página (h2) |
30
+ | `--text-3xl` | 48px | Hero titles (h1) |
31
+ | `--text-4xl` | 64px | Display (hero grande, landing) |
32
+
33
+ ---
34
+
35
+ ## Familias tipográficas por dirección visual
36
+
37
+ ### Neutral Modern
38
+ - **Display/Headings**: Inter (Google Fonts) — `font-weight: 700`
39
+ - **Body**: Inter — `font-weight: 400`
40
+ - **Code**: `'Cascadia Code', 'Fira Code', monospace`
41
+ - **Característica**: sin serifa, geométrica, alta legibilidad
42
+
43
+ ### Warm Editorial
44
+ - **Display**: Playfair Display (Google Fonts) — `font-weight: 700, 900`
45
+ - **Subheadings**: Source Serif 4 — `font-weight: 600`
46
+ - **Body**: Source Serif 4 — `font-weight: 400`
47
+ - **Labels/UI**: Inter — `font-weight: 500`
48
+ - **Característica**: contraste serif/sans para jerarquía editorial
49
+
50
+ ### Bold Brutalist
51
+ - **Display/Headings**: Space Grotesk (Google Fonts) — `font-weight: 900`, UPPERCASE
52
+ - **Body**: Space Grotesk — `font-weight: 400`
53
+ - **Code/Mono accent**: Space Mono — `font-weight: 700`
54
+ - **Característica**: condensado, chocante, todo en mayúsculas para headings
55
+
56
+ ---
57
+
58
+ ## Reglas de composición
59
+
60
+ ### Line height
61
+ - Headings: `line-height: 1.1` — `1.2`
62
+ - Body text: `line-height: 1.6` — `1.7`
63
+ - Labels/captions: `line-height: 1.3`
64
+
65
+ ### Letter spacing
66
+ - Headings grandes (> 32px): `letter-spacing: -0.03em` (óptico)
67
+ - Body: `letter-spacing: 0`
68
+ - UPPERCASE labels: `letter-spacing: 0.08em` — `0.12em`
69
+ - Botones: `letter-spacing: 0.02em`
70
+
71
+ ### Font weight en jerarquía
72
+ - Solo usar 3 pesos máximo por pantalla: `400` (body) + `600` (subheadings) + `700/900` (titles)
73
+ - No usar `font-weight: 300` — en pantallas oscuras parece roto
74
+ - No usar `font-weight: 500` como heading — es demasiado sutil para crear jerarquía
75
+
76
+ ### Medida de línea (measure)
77
+ - Cuerpo de texto: **60–75 caracteres por línea** (óptimo de lectura)
78
+ - En CSS: `max-width: 65ch` para párrafos de texto largo
79
+ - Títulos: sin restricción de measure — llenan el contenedor
80
+
81
+ ---
82
+
83
+ ## Anti-patrones tipográficos (no hacer)
84
+
85
+ ❌ **Mezclar más de 2 familias tipográficas** en la misma pantalla
86
+ ❌ **Usar todas las variantes de peso** (100, 200, 300... 900) en una sola UI
87
+ ❌ **Texto body menor a 13px** — ilegible en mobile y pantallas de alta densidad
88
+ ❌ **Itálica en cuerpo largo** — reduce velocidad de lectura un 15%
89
+ ❌ **Centrar texto de más de 3 líneas** — el ojo pierde el inicio de cada línea
90
+ ❌ **Texto en mayúsculas para párrafos** — solo para labels cortos (< 4 palabras)
91
+ ❌ **Combinar dos fuentes de la misma categoría** (dos sans-serif diferentes sin contraste suficiente)
92
+
93
+ ---
94
+
95
+ ## Cómo cargar fuentes (Google Fonts)
96
+
97
+ ```html
98
+ <!-- Neutral Modern: Inter -->
99
+ <link rel="preconnect" href="https://fonts.googleapis.com">
100
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
101
+
102
+ <!-- Warm Editorial: Playfair Display + Source Serif 4 -->
103
+ <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Source+Serif+4:wght@400;600&display=swap" rel="stylesheet">
104
+
105
+ <!-- Bold Brutalist: Space Grotesk + Space Mono -->
106
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
107
+ ```
108
+
109
+ **Siempre incluir `display=swap`** para evitar FOIT (flash of invisible text).
110
+
111
+ ---
112
+
113
+ ## Referencia rápida para agentes
114
+
115
+ Cuando generes un wireframe:
116
+ 1. Lee el DESIGN.md activo para saber qué familia tipográfica usar
117
+ 2. Usa `<link>` de Google Fonts con `display=swap`
118
+ 3. Define variables CSS: `--font-display`, `--font-body`, `--font-mono`
119
+ 4. Aplica la escala: heading principal → `--text-3xl` o `--text-2xl`, body → `--text-base`
120
+ 5. Letter-spacing negativo en headings grandes, positivo en UPPERCASE labels
121
+ 6. Nunca mezclar más de 2 familias en la misma pantalla
@@ -0,0 +1,239 @@
1
+ # DESIGN SYSTEM: Bold Brutalist
2
+
3
+ > **Dirección**: Impactante, directo, sin adornos. Colores saturados, tipografía masiva, estructura visible. Honesto sobre lo que es.
4
+
5
+ ---
6
+
7
+ ## 1. Visual Theme & Atmosphere
8
+
9
+ El diseño no esconde nada. Estructura visible, bordes duros, peso tipográfico máximo.
10
+ No busca gustar — busca impactar. Funcional y agresivamente visual.
11
+
12
+ **Palabras clave**: impactante · directo · audaz · sin excusas · estructural · honesto
13
+
14
+ ---
15
+
16
+ ## 2. Color Palette & Roles
17
+
18
+ ```css
19
+ /* Fondos */
20
+ --bg-base: #0A0A0A; /* casi negro */
21
+ --bg-surface: #141414; /* negro algo más claro */
22
+ --bg-subtle: #1F1F1F; /* superficies elevadas */
23
+ --bg-emphasis: #2A2A2A; /* hover */
24
+
25
+ /* Texto */
26
+ --text-primary: #F5F5F5; /* casi blanco */
27
+ --text-secondary:#A0A0A0; /* gris medio */
28
+ --text-muted: #5A5A5A; /* deshabilitados */
29
+ --text-inverse: #0A0A0A; /* sobre fondos claros */
30
+
31
+ /* Acento — uno solo, saturado */
32
+ --accent: #F0E040; /* amarillo brillante — el único color */
33
+ --accent-hover: #D4C400;
34
+ --accent-subtle: #2A2800; /* fondo de chips con acento */
35
+
36
+ /* Estado */
37
+ --success: #39FF14; /* verde neón */
38
+ --warning: #FF6B00; /* naranja */
39
+ --error: #FF2D2D; /* rojo */
40
+ --info: #00BFFF; /* azul cielo */
41
+
42
+ /* Bordes — el alma del brutalismo */
43
+ --border: #333333;
44
+ --border-strong: #F5F5F5; /* borde blanco para énfasis */
45
+ --border-accent: #F0E040; /* borde amarillo para acción */
46
+ ```
47
+
48
+ ---
49
+
50
+ ## 3. Typography Rules
51
+
52
+ ```css
53
+ /* Fuentes — pesadas, directas */
54
+ --font-display: 'Space Grotesk', 'Arial Black', sans-serif;
55
+ --font-body: 'Space Grotesk', 'Arial', sans-serif;
56
+ --font-mono: 'Space Mono', 'Courier New', monospace;
57
+
58
+ /* Escala — extremos */
59
+ --text-xs: 11px / 1.3;
60
+ --text-sm: 13px / 1.4;
61
+ --text-base: 16px / 1.5;
62
+ --text-lg: 20px / 1.4;
63
+ --text-xl: 28px / 1.2;
64
+ --text-2xl: 40px / 1.1;
65
+ --text-3xl: 56px / 1.0;
66
+ --text-4xl: 80px / 0.95; /* headings héroe masivos */
67
+
68
+ /* Pesos */
69
+ --weight-bold: 700;
70
+ --weight-black: 900; /* para headings principales */
71
+ ```
72
+
73
+ **Reglas específicas**:
74
+ - H1: Space Grotesk, 56–80px, weight 900, uppercase, tracking -0.02em
75
+ - H2: Space Grotesk, 40px, weight 700, uppercase
76
+ - Body: Space Grotesk, 16px, weight 400, line-height 1.6
77
+ - Labels/UI: Space Mono, 12px, uppercase, letter-spacing 0.1em
78
+ - Nunca itálica (el brutalismo es recto)
79
+
80
+ ---
81
+
82
+ ## 4. Component Stylings
83
+
84
+ ### Botones — el elemento más característico
85
+ ```css
86
+ /* Primario — el brutalismo signature */
87
+ .btn-primary {
88
+ background: var(--accent);
89
+ color: var(--text-inverse);
90
+ padding: 14px 32px;
91
+ border-radius: 0; /* cuadrado perfecto */
92
+ border: 2px solid var(--accent);
93
+ font-family: var(--font-mono);
94
+ font-weight: 700;
95
+ font-size: 13px;
96
+ letter-spacing: 0.1em;
97
+ text-transform: uppercase;
98
+ /* El shadow offset es el sello del brutalismo */
99
+ box-shadow: 4px 4px 0 var(--border-strong);
100
+ transition: box-shadow 0.1s, transform 0.1s;
101
+ }
102
+ .btn-primary:hover {
103
+ box-shadow: 2px 2px 0 var(--border-strong);
104
+ transform: translate(2px, 2px);
105
+ }
106
+ .btn-primary:active {
107
+ box-shadow: 0 0 0 var(--border-strong);
108
+ transform: translate(4px, 4px);
109
+ }
110
+
111
+ /* Outline */
112
+ .btn-outline {
113
+ background: transparent;
114
+ color: var(--text-primary);
115
+ border: 2px solid var(--border-strong);
116
+ padding: 14px 32px;
117
+ border-radius: 0;
118
+ font-family: var(--font-mono);
119
+ font-size: 13px;
120
+ letter-spacing: 0.1em;
121
+ text-transform: uppercase;
122
+ box-shadow: 4px 4px 0 var(--border-strong);
123
+ }
124
+ ```
125
+
126
+ ### Cards
127
+ ```css
128
+ .card {
129
+ background: var(--bg-surface);
130
+ border: 2px solid var(--border-strong);
131
+ border-radius: 0;
132
+ padding: 24px 28px;
133
+ box-shadow: 6px 6px 0 var(--border-accent); /* shadow offset amarillo */
134
+ }
135
+
136
+ .card:hover {
137
+ box-shadow: 3px 3px 0 var(--border-accent);
138
+ transform: translate(3px, 3px);
139
+ transition: all 0.1s;
140
+ }
141
+ ```
142
+
143
+ ### Inputs
144
+ ```css
145
+ .input {
146
+ background: var(--bg-subtle);
147
+ border: 2px solid var(--border-strong);
148
+ border-radius: 0;
149
+ padding: 12px 16px;
150
+ font-family: var(--font-mono);
151
+ font-size: 14px;
152
+ color: var(--text-primary);
153
+ }
154
+ .input:focus {
155
+ border-color: var(--accent);
156
+ outline: none;
157
+ }
158
+ ```
159
+
160
+ ### Tags / Badges
161
+ ```css
162
+ .badge {
163
+ display: inline-flex;
164
+ padding: 3px 10px;
165
+ border: 1px solid var(--border-strong);
166
+ border-radius: 0;
167
+ font-family: var(--font-mono);
168
+ font-size: 11px;
169
+ letter-spacing: 0.1em;
170
+ text-transform: uppercase;
171
+ color: var(--text-secondary);
172
+ }
173
+ .badge-accent {
174
+ border-color: var(--accent);
175
+ color: var(--accent);
176
+ background: var(--accent-subtle);
177
+ }
178
+ ```
179
+
180
+ ---
181
+
182
+ ## 5. Layout Principles
183
+
184
+ - **Grid**: 12 columnas, gutter 20px, max-width 1280px (más amplio que lo usual)
185
+ - **Bordes como estructura**: los contenedores usan `border: 2px solid` para delimitar secciones, no padding ni colores de fondo
186
+ - **Asimetría intencional**: hero con texto gigante izquierda + elemento visual derecha sin margen entre ellos
187
+ - **Espaciado**: mínimo 32px entre secciones, máximo 80px — no tan generoso como editorial
188
+ - **Columnas de texto**: max 60 caracteres por línea (legibilidad en texto masivo)
189
+
190
+ ---
191
+
192
+ ## 6. Depth & Elevation
193
+
194
+ ```css
195
+ /* El offset shadow ES la profundidad en brutalismo */
196
+ --shadow-offset-sm: 3px 3px 0; /* elementos pequeños */
197
+ --shadow-offset-md: 6px 6px 0; /* cards, modales */
198
+ --shadow-offset-lg: 8px 8px 0; /* elementos hero */
199
+
200
+ /* Color del shadow: blanco sobre negro, amarillo para accent */
201
+ /* Nunca sombras difusas (box-shadow blur > 0 es raro) */
202
+ ```
203
+
204
+ ---
205
+
206
+ ## 7. Do's and Don'ts
207
+
208
+ **✅ Hacer:**
209
+ - Headings en UPPERCASE masivos (56px+)
210
+ - Offset shadows en botones y cards (4–8px)
211
+ - Bordes `border: 2px solid` visibles como estructura
212
+ - Tipografía monospace para etiquetas y código
213
+ - Un solo color de acento (amarillo) — nunca dos
214
+ - Hover states con `transform: translate()` para simular presión
215
+
216
+ **❌ No hacer:**
217
+ - Gradientes (ninguno)
218
+ - Bordes redondeados (máximo 0–2px)
219
+ - Más de 1 color de acento
220
+ - Sombras difusas (box-shadow con blur)
221
+ - Itálica
222
+ - Imágenes de stock genéricas (mejor sin imagen que con una mala)
223
+ - Fondos claros (este sistema es dark-first)
224
+
225
+ ---
226
+
227
+ ## 8. Responsive Behavior
228
+
229
+ ```
230
+ Desktop (≥1024px): layout full-width, headings masivos, offset shadows completos
231
+ Tablet (640–1023px): headings reducidos (max 40px), shadows más pequeños
232
+ Mobile (<640px): 1 col, headings 28–32px, sin offset shadow (tap targets), padding lateral 16px
233
+ ```
234
+
235
+ ---
236
+
237
+ ## 9. Agent Prompt Guide
238
+
239
+ > Usa el sistema Bold Brutalist: fondo casi negro (#0A0A0A), texto casi blanco (#F5F5F5), acento amarillo brillante (#F0E040) solo en 1–2 elementos. Space Grotesk para headings (700–900 weight, UPPERCASE), Space Mono para UI y labels. Bordes duros (border-radius: 0), offset shadows en botones y cards (4–8px sin blur). Sin gradientes. Sin bordes redondeados. Sin fuentes serif. El diseño se siente como un cartel de propaganda bien ejecutado: impactante, directo, sin decoración innecesaria.