Contenido y adaptación: clarify, adapt, optimize
Contenido y adaptación: clarify, adapt, optimize
En el capítulo anterior trabajamos el movimiento y el deleite: animaciones, microinteracciones y onboarding. Eran capas que se aplican sobre una interfaz que ya existe. Ahora damos un paso atrás para mirar algo que muchos equipos tratan como un detalle de última hora y que, sin embargo, es la mitad de la experiencia: el contenido y su capacidad de adaptarse.
Este capítulo cubre tres comandos de Impeccable que comparten una idea de fondo: una interfaz no se termina cuando los píxeles encajan, sino cuando el mensaje es claro, cuando ese mensaje sobrevive al cambio de dispositivo o idioma, y cuando llega rápido a la persona que lo necesita. Esos tres frentes son, respectivamente, clarify, adapt y optimize.
Recuerda que en Impeccable todos los comandos se invocan con la misma forma: /impeccable <comando> <target>, donde el target puede ser un componente, una página o una ruta del proyecto. Cada comando lee su guía de referencia interna (los archivos reference/clarify.md, reference/adapt.md y reference/optimize.md del skill) y aplica un proceso sistemático en lugar de una opinión improvisada.
El contenido es diseño, no un afterthought
Antes de entrar en los comandos conviene fijar la filosofía, porque explica por qué estos tres comandos existen y no son simplemente “pasar el texto por un corrector”.
Cuando diseñamos solemos rellenar las maquetas con texto de relleno (Lorem ipsum) y dejamos las palabras reales para “cuando esté el diseño”. El problema es que el texto no es contenido decorativo: es la parte de la interfaz con la que la persona realmente piensa. Un botón que dice Submit y otro que dice Crear cuenta ocupan el mismo espacio, pero comunican cosas distintas. Una jerarquía visual impecable puede arruinarse con un titular ambiguo, y la mejor animación del mundo no salva a un mensaje de error que dice Error 403: Forbidden.
flowchart LR
A[Contenido del mensaje] --> B{¿Es claro?}
B -->|clarify| C[Mensaje legible y específico]
C --> D{¿Sobrevive al contexto?}
D -->|adapt| E[Funciona en cada dispositivo / idioma]
E --> F{¿Llega rápido?}
F -->|optimize| G[Experiencia percibida y accesible]
G --> H[Diseño realmente terminado]
La secuencia del diagrama es deliberada. No tiene sentido optimizar el peso de una página cuyo mensaje todavía confunde, ni adaptar a móvil un texto que en escritorio ya falla. Por eso el orden mental recomendado es: primero claridad, después adaptación, después optimización.
clarify: claridad del contenido y del mensaje
clarify es el comando que ataca el texto de la interfaz: microcopy, etiquetas, errores, estados vacíos, navegación y la jerarquía de la información. Su guía de referencia parte de una idea muy concreta: el texto poco claro genera tickets de soporte y abandono. Es decir, la ambigüedad tiene un coste medible.
Propósito y target
- Propósito: identificar de forma sistemática el texto confuso y reescribirlo para que sea específico, activo y contextual.
- Target: copy orientado a la persona usuaria en cualquier superficie: formularios, botones, mensajes de error, estados vacíos y navegación.
El proceso de evaluación
Según el reference, antes de reescribir nada clarify evalúa el texto buscando seis problemas concretos:
- Jerga sin explicación.
- Ambigüedad (frases que admiten más de una interpretación).
- Voz pasiva donde la activa sería más directa.
- Problemas de longitud (demasiado largo o demasiado corto).
- Falta de contexto (el texto no dice qué pasará después).
- Tono inadecuado para la situación.
Solo cuando esos problemas están identificados pasa a la estrategia de mejora: definir el mensaje principal, la acción requerida, el tono apropiado y las restricciones antes de redactar la nueva versión.
Principios fundamentales
La guía resume su criterio en principios que se aplican a todo el copy:
- Sé específico:
Enter email, noEnter value. - Sé activo:
Save changes, noChanges will be saved. - En botones, usa verbo específico + objeto; nunca un
OKoSubmitdesnudo. - En acciones destructivas, explica la consecuencia.
Y su lista de prohibiciones es igual de tajante: nunca uses jerga sin explicar, nunca culpes a la persona usuaria, nunca escribas en pasiva por defecto, nunca asumas conocimiento técnico y nunca cambies la terminología “por variar” (la consistencia léxica importa más que la riqueza de vocabulario).
Ejemplos de transformación
El reference incluye casos canónicos que muestran el antes y el después:
Error message:
Antes: "Error 403: Forbidden"
Después: "You don't have permission to view this page. Contact your admin."
Button label:
Antes: "Submit"
Después: "Create account"
Empty state:
Antes: "No items"
Después: "No projects yet. Create your first to get started."
Form label:
Antes: "DOB (MM/DD/YYYY)"
Después: "Date of birth"
Ejemplo de invocación y salida
/impeccable clarify src/components/SignupForm.tsx
La salida no es una lista de quejas, sino una propuesta accionable: por cada pieza de texto detectada con alguno de los seis problemas, clarify entrega el texto reescrito, una breve justificación, y cuando aplica una tabla de consistencia para unificar la terminología (por ejemplo, decidir entre eliminar, borrar o quitar y usar siempre el mismo término). Cierra con una checklist de verificación para confirmar la claridad antes del handoff.
adapt: adaptar el diseño a otro contexto
adapt resuelve un problema distinto: tienes un diseño que funciona en un contexto y necesitas que funcione en otro (otro dispositivo, otra superficie, otro idioma, otro breakpoint). La trampa que el reference quiere evitar tiene nombre propio: escalar píxeles en lugar de repensar la experiencia.
“Adaptation is rethinking the experience for the new context, not scaling pixels.”
Propósito y target
- Propósito: repensar la experiencia al mover un diseño entre plataformas, dispositivos o casos de uso, en lugar de limitarse a encoger o estirar el layout existente.
- Target: diseñadores que adaptan un diseño a un nuevo contexto: móvil, tablet, escritorio, impresión, email, etc.
Los cuatro pasos de adapt
El reference describe un flujo de cuatro fases que vale la pena conocer:
sequenceDiagram
participant A as adapt
participant S as Diseño original
participant T as Contexto destino
A->>S: 1. Evaluar el reto (supuestos del origen)
A->>T: 2. Entender destino (input, pantalla, red, uso)
A->>A: 3. Planificar estrategia por contexto
A->>T: 4. Implementar (breakpoints por contenido)
T-->>A: Verificar en dispositivos reales
- Evaluar el reto: identificar el contexto y los supuestos del diseño original, y señalar qué no encaja o no funcionará en el nuevo entorno.
- Planificar la estrategia según el destino.
- Implementar con técnicas responsivas reales.
- Verificar en condiciones reales.
Estrategias por contexto
La guía da pautas concretas para cada superficie:
- Móvil: una sola columna, áreas táctiles de
44×44px, divulgación progresiva (progressive disclosure). - Tablet: layouts híbridos a dos columnas que soporten táctil y puntero.
- Escritorio: múltiples columnas, estados
hover, atajos de teclado y mayor densidad de datos. - Impresión: eliminar elementos interactivos y expandir el contenido que estaba abreviado.
- Email: ancho máximo de
600px, CSS inline y layouts basados en tablas.
Reglas técnicas clave
adapt insiste en detectar el método de entrada, no solo el tamaño de pantalla. Un portátil puede tener pantalla táctil y una tablet puede tener teclado, así que el viewport por sí solo miente.
/* Detección por capacidad, no por tamaño */
@media (pointer: coarse) {
/* dispositivos táctiles: targets más grandes */
.button { min-height: 44px; min-width: 44px; }
}
@media (hover: hover) {
/* solo cuando el hover existe de verdad */
.card:hover { transform: translateY(-2px); }
}
/* Soporte para notch / esquinas redondeadas */
.app-bar {
padding-top: env(safe-area-inset-top);
}
Para imágenes, la recomendación es usar srcset con descriptores de ancho y sizes, y recurrir a <picture> para art direction cuando el recorte cambia entre breakpoints:
<picture>
<source media="(max-width: 600px)" srcset="hero-mobile.webp" />
<source media="(min-width: 601px)" srcset="hero-desktop.webp" />
<img src="hero-desktop.webp" alt="Panel de control de la aplicación" />
</picture>
El enfoque recomendado es mobile-first: estilos base para móvil y complejidad de escritorio en capas con min-width, para no cargar estilos innecesarios. Y, sobre todo, breakpoints dirigidos por el contenido, no por tamaños genéricos de dispositivo.
Prohibiciones de adapt
- Nunca ocultes funcionalidad central en móvil.
- No dependas del
hoverpara interacciones críticas (quien usa táctil no puede hacer hover). - Mantén una arquitectura de información consistente entre todos los contextos.
- No confíes solo en la emulación de DevTools: prueba en dispositivos reales, porque la emulación se pierde matices del táctil y de la realidad de rendimiento.
Ejemplo de invocación y salida
/impeccable adapt src/pages/pricing.astro
La salida de adapt describe qué supuestos del diseño original se rompen en el contexto destino, propone la estrategia de adaptación adecuada (columnas, áreas táctiles, divulgación progresiva) y entrega el CSS/markup responsivo con media queries por capacidad de entrada, además de una lista de verificación en dispositivos y orientaciones reales.
optimize: optimizar lo que de verdad importa
optimize cierra el trío. Su principio rector es claro y disciplinado:
“Performance is a feature. Identify the actual bottleneck for THIS interface, fix it, then measure.”
La clave es la palabra measure. El reference está construido para evitar la optimización prematura: no se toca nada sin datos que demuestren dónde está el cuello de botella real de esta interfaz concreta.
Propósito y target
- Propósito: un marco sistemático para identificar y arreglar cuellos de botella reales de rendimiento, con la medición como punto de partida y de cierre.
- Target: dos fases con áreas concretas.
Fase de evaluación:
- Core Web Vitals (
LCP,FID/INP,CLS). - Tiempos de carga y tamaño de los bundles.
- Métricas de rendimiento en runtime.
- Cascadas de red (
network waterfalls).
Dominios de optimización:
- Rendimiento de carga (imágenes, JavaScript, CSS, fuentes).
- Rendimiento de renderizado (layout thrashing, optimización del DOM).
- Rendimiento de animación (aceleración por GPU, objetivo de 60fps).
- Técnicas específicas del framework.
- Optimización de red.
- Objetivos de Core Web Vitals.
Ejemplos del reference
Tres patrones aparecen como ejemplos canónicos. El primero evita el layout thrashing agrupando lecturas antes de las escrituras para no forzar reflows:
// Mal: lectura/escritura intercaladas fuerzan reflows
elements.forEach((el) => {
const w = el.offsetWidth; // lectura
el.style.width = w + 10 + "px"; // escritura -> reflow
});
// Bien: primero todas las lecturas, luego todas las escrituras
const widths = elements.map((el) => el.offsetWidth);
elements.forEach((el, i) => {
el.style.width = widths[i] + 10 + "px";
});
El segundo, optimización de imágenes con formatos modernos, srcset y carga diferida:
<img
src="photo.webp"
srcset="photo-400.webp 400w, photo-800.webp 800w"
sizes="(max-width: 600px) 400px, 800px"
loading="lazy"
alt="Fotografía del producto"
/>
El tercero, animaciones que se apoyan en transform y opacity para usar la GPU en lugar de propiedades que disparan layout:
/* GPU-friendly: no provoca reflow */
.toast {
transition: transform 200ms ease, opacity 200ms ease;
}
.toast--hidden {
transform: translateY(8px);
opacity: 0;
}
Reglas: lo que sí y lo que no
Sí:
- Medir antes y después de cada cambio.
- Probar en dispositivos reales con condiciones de red realistas.
- Priorizar primero el mayor cuello de botella.
No:
- Optimizar sin datos de medición.
- Sacrificar accesibilidad o funcionalidad por velocidad.
- Hacer
lazy loaddel contenido above the fold (lo visible sin scroll debe cargar de inmediato). - Abusar de
will-change.
Conviene subrayar la regla de accesibilidad: en Impeccable, optimizar nunca justifica degradar la accesibilidad. El rendimiento percibido y la accesibilidad se tratan como parte de la misma calidad, no como objetivos en competencia.
Herramientas de monitorización
El reference apunta a un conjunto concreto: Lighthouse de Chrome DevTools, WebPageTest, seguimiento de Core Web Vitals, analizadores de bundles y plataformas RUM (Real User Monitoring).
Ejemplo de invocación y salida
/impeccable optimize src/pages/index.astro
optimize empieza por la fase de evaluación: reporta el cuello de botella medido (por ejemplo, un LCP alto por una imagen hero sin srcset), propone el arreglo del mayor problema primero, lo aplica con las técnicas del dominio correspondiente y vuelve a medir para confirmar la mejora. La salida es, por tanto, un ciclo medir → arreglar → medir, no una lista de optimizaciones genéricas.
Tabla comparativa
| Aspecto | clarify | adapt | optimize |
|---|---|---|---|
| Foco | Claridad del texto y del mensaje | Adaptar la experiencia a otro contexto | Rendimiento percibido y real |
| Pregunta que responde | ¿Se entiende? | ¿Funciona en este dispositivo/idioma? | ¿Llega rápido y accesible? |
| Target típico | Microcopy, botones, errores, estados vacíos | Móvil, tablet, escritorio, impresión, email | Páginas y componentes con coste de carga/render |
| Principio central | Específico, activo, contextual | Repensar, no escalar píxeles | Medir el cuello de botella real, luego arreglar |
| Técnicas clave | Verbo + objeto, consecuencias, consistencia léxica | Breakpoints por contenido, pointer/hover, srcset | Core Web Vitals, GPU, lazy load, batching de reflows |
| Prohibición destacada | Jerga, culpar al usuario, pasiva | Ocultar funciones en móvil, depender del hover | Optimizar sin medir, lazy load above-the-fold |
| Invocación | /impeccable clarify <target> | /impeccable adapt <target> | /impeccable optimize <target> |
Cómo encajan los tres en tu flujo
Estos comandos rara vez se usan aislados. Una secuencia habitual sobre una landing page sería:
/impeccable clarify src/pages/landing.astro # primero el mensaje
/impeccable adapt src/pages/landing.astro # luego que sobreviva a cada contexto
/impeccable optimize src/pages/landing.astro # y por último que cargue rápido
El orden importa porque cada paso parte del resultado del anterior: adaptar un copy confuso solo multiplica la confusión en más pantallas, y optimizar el peso de una imagen que adapt va a sustituir por una versión responsiva es trabajo perdido. Igual que el detector de 44 reglas actúa como red de seguridad determinista, estos tres comandos actúan sobre la dimensión que ninguna regla automática puede juzgar del todo: si el contenido comunica.
Resumen
- El contenido es diseño: el mensaje, su adaptación y su velocidad son parte de la experiencia, no un retoque final.
- clarify mejora la claridad del texto y la jerarquía del mensaje detectando jerga, ambigüedad, pasiva, longitud, falta de contexto y tono; reescribe con la regla de “específico + activo + contextual”.
- adapt repiensa la experiencia para un nuevo contexto (móvil, tablet, escritorio, impresión, email) con breakpoints por contenido y detección de
pointer/hover, nunca escalando píxeles ni ocultando funciones críticas. - optimize arregla cuellos de botella medidos (Core Web Vitals, carga, render, animación) priorizando el mayor primero y sin sacrificar accesibilidad.
- El orden recomendado es clarify → adapt → optimize, porque cada paso construye sobre el anterior.
Siguiente: Live browser iteration: el comando live