La IA puede producir "suficientemente bueno" a escala. Lo que no puede producir sin instrucciones explícitas es bueno. La diferencia entre los dos es el gusto. Y el gusto se puede codificar.
El problema con las instrucciones vagas
Dile a un agente que "haga que la animación se sienta natural" y obtendrás un ease-in-out de 200ms en todo. Técnicamente animado. Se siente como un template.
El agente no sabe que ease-in está mal para UI porque empieza lento — el elemento acelera al final, dando la percepción de que la interfaz va por detrás de la acción del usuario.
No sabe que 200ms es correcto para un dropdown pero incorrecto para un modal. No sabe que un popover debe escalar desde el punto del trigger, no desde el centro. No sabe que el botón necesita scale(0.97) en :active, no scale(0.9), porque 0.9 se siente como si la interfaz se colapsara.
No lo sabe porque no se lo dijiste. Y no pudiste decírselo porque no lo habías articulado tú mismo.
El gusto se entrena, no es innato
El gusto no es un rasgo de personalidad. Es un instinto entrenado — el resultado acumulado de estudiar suficiente trabajo bueno para reconocer lo que lo separa del trabajo adecuado.
El ciclo de entrenamiento tiene tres pasos:
Exposición: rodéate de trabajo al más alto nivel de craft. Usa productos que sean excepcionalmente buenos, deliberadamente, no pasivamente. Con la pregunta: ¿qué está haciendo esta interfaz que no estoy notando conscientemente pero que me hace sentir bien?
Articulación: cuando algo se siente bien o mal, no te quedes en "se nota algo raro." Ve a la propiedad específica. El easing. La duración. El punto de origen. El valor de stagger. La razón por la que funciona siempre se puede encontrar — puede requerir reducir la velocidad a 0.25x para verla.
Codificación: una vez que puedes articular el por qué, puedes escribir la regla. Una vez que puedes escribir la regla, puedes transferirla a un agente.
Cómo es un skill file
Esta es una decisión de gusto codificada como instrucción para un agente:
## Easing — Decision Flowchart
Is the element entering or exiting the viewport?
├── Yes → ease-out: cubic-bezier(0.16, 1, 0.3, 1)
└── No
├── Moving/morphing while already visible?
│ └── Yes → ease-in-out: cubic-bezier(0.87, 0, 0.13, 1)
└── Hover state change?
├── Color/background only → ease (built-in CSS is fine)
└── Constant motion (loader)?
├── Yes → linear
└── Default → ease-out
NEVER use ease-in for UI animations.
## Duration — Hard Rules
| Element | Duration |
|---|---|
| Button press, scale on :active | 100–150ms |
| Tooltips, dropdowns, selects | 150–250ms |
| Modals, drawers, overlays | 200–300ms |
Hard limit: 300ms for any UI animation.
Keyboard-initiated actions: 0ms — never animate.
High-frequency interactions (>20×/session): 0ms — never animate.
## Scale — Specific Values
Never animate from scale(0).
Correct initial values:
- Dialog/modal entrance: scale(0.95)
- Popover/dropdown: scale(0.95), origin from trigger
- Button :active feedback: scale(0.97)
- Toast entrance: translateY(100%)
El agente que lee esto produce output correcto sin adivinar. El agente que recibe "que se sienta natural" produce un template.
Un ejemplo real: construir un sistema de transferencia de gusto
Durante los últimos meses he estado construyendo un sistema de skills personal para cada proyecto web que hago: un conjunto de archivos markdown cargados en Cursor como contexto que codifica mis decisiones de diseño como reglas.
Cuatro módulos:
Motion — flowcharts de easing, tablas de duración, técnicas de clip-path, cuándo no animar, el test de frecuencia, patrones de timeline en GSAP.
Interacción — cuándo triggear durante vs al final del gesto, reglas de consistencia espacial, inmediatez del feedback, interruptibilidad, los 8 principios de craft de interacción.
Tipografía — decisión de ratio por tipo de proyecto, line-height por nivel de escala, reglas de letter-spacing, tabular-nums para datos, font loading sin layout shift.
Código — semántica HTML, orden de propiedades CSS, patrones TypeScript, timelines GSAP legibles.
Qué cambia esto
El valor de un diseñador ya no está en ejecutar decisiones. Cualquier agente puede ejecutar. El valor está en tomar decisiones que son correctas y suficientemente articulables para ser replicadas.
Eso requiere una comprensión más profunda de por qué algo funciona, no solo de que lo hace. Requiere construir vocabulario para decisiones que antes vivían solo en la intuición.
Cada decisión que articulas se convierte en una regla. Cada regla se convierte en una restricción dentro de la que trabaja el agente. Cada restricción elimina una categoría de mediocridad de tu output.
Ese es un listón más alto que "tengo buen gusto." Es una habilidad distinta. Gusto como infraestructura, no gusto como personalidad. Y se compone.