sdd-es 2.0.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +21 -45
- package/LICENSE +21 -0
- package/README.md +51 -21
- package/agents/architecture-designer.md +174 -0
- package/agents/arquitecto.md +16 -1
- package/agents/asesor-datos.md +15 -1
- package/agents/critico.md +37 -1
- package/agents/desarrollador-backend.md +3 -1
- package/agents/desarrollador-frontend.md +3 -1
- package/agents/disenador-api.md +13 -1
- package/agents/documentador.md +3 -1
- package/agents/investigador.md +3 -1
- package/agents/operaciones.md +3 -1
- package/agents/product-designer.md +232 -0
- package/agents/revisor.md +25 -1
- package/agents/seguridad.md +5 -1
- package/agents/tester.md +3 -1
- package/claude-hooks/agent-memory.js +154 -0
- package/cli/index.js +1 -2
- package/commands/sdd.analizar.md +23 -2
- package/commands/sdd.compliance.md +516 -0
- package/commands/sdd.configurar.md +33 -0
- package/commands/sdd.constitucion.md +198 -23
- package/commands/sdd.construir.md +210 -0
- package/commands/sdd.dise/303/261ar.md +188 -0
- package/commands/sdd.estado.md +68 -1
- package/commands/sdd.exportar.md +344 -0
- package/commands/sdd.implementar.md +203 -23
- package/commands/sdd.interpretar.md +239 -0
- package/commands/sdd.md +70 -1
- package/commands/sdd.optimizar.md +164 -0
- package/commands/sdd.planificar.md +64 -0
- package/commands/sdd.verificar.md +10 -0
- package/craft/accessibility-baseline.md +216 -0
- package/craft/anti-ai-slop.md +158 -0
- package/craft/color.md +160 -0
- package/craft/typography.md +121 -0
- package/design-systems/bold-brutalist/DESIGN.md +239 -0
- package/design-systems/editorial-minimal/DESIGN.md +205 -0
- package/design-systems/neutral-modern/DESIGN.md +227 -0
- package/design-systems/vibrant-consumer/DESIGN.md +257 -0
- package/design-systems/warm-editorial/DESIGN.md +221 -0
- package/docs/AGENTES.md +4 -1
- package/docs/FABRICA.md +164 -115
- package/docs/MEMORIA-Y-OBSERVABILIDAD.md +237 -0
- package/docs/MODELOS.md +3 -0
- package/docs/QUE-PASA-SI-FALLA.md +404 -0
- package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
- package/package.json +5 -3
- package/skills/cache-audit/SKILL.md +163 -0
- package/skills/critica-diseno/SKILL.md +193 -0
- package/skills/descubrir-idea/SKILL.md +133 -0
- package/skills/effort-router/SKILL.md +128 -0
- package/skills/elegir-direccion/SKILL.md +184 -0
- package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
- package/skills/github-connect/INDEX.md +223 -0
- package/skills/github-connect/INTEGRATION.md +361 -0
- package/skills/github-connect/QUICK-START.md +168 -0
- package/skills/github-connect/README.md +414 -0
- package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
- package/skills/github-connect/SKILL.md +343 -0
- package/skills/github-connect/STRUCTURE.txt +252 -0
- package/skills/github-connect/example-config.yaml +41 -0
- package/skills/github-connect/github-connect.sh +419 -0
- package/skills/interpretar-idea/SKILL.md +254 -0
- package/skills/memory-compactor/SKILL.md +114 -0
- package/skills/modo-guiado/SKILL.md +12 -2
- package/skills/observabilidad-consumo/SKILL.md +164 -0
- package/skills/token-budget/SKILL.md +154 -0
- package/skills/vercel-deploy/00-START-HERE.txt +364 -0
- package/skills/vercel-deploy/CHECKLIST.md +205 -0
- package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
- package/skills/vercel-deploy/FLOW.txt +334 -0
- package/skills/vercel-deploy/INDEX.md +276 -0
- package/skills/vercel-deploy/INTEGRATION.md +328 -0
- package/skills/vercel-deploy/MANIFEST.md +310 -0
- package/skills/vercel-deploy/README.md +65 -0
- package/skills/vercel-deploy/SKILL.md +356 -0
- package/skills/vercel-deploy/deploy.sh +298 -0
- package/skills/vercel-deploy/estado.json.example +205 -0
- package/skills/vercel-deploy/skill.yaml +323 -0
- package/skills/vercel-deploy/vercel-deploy.sh +216 -0
- package/skills/wireframe-mvp/SKILL.md +157 -0
- package/.claude-plugin/marketplace.json +0 -31
- package/.claude-plugin/plugin.json +0 -97
- package/docs/EJEMPLO-PRACTICA.md +0 -383
- package/docs/EJEMPLOS.md +0 -212
- /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
- /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
- /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
- /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
- /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
- /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
- /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
- /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
package/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.
|