Por qué la mayoría de las listas de consistencia no funcionan
La lista estándar hace preguntas como "¿es consistente la apariencia y sensación de la interfaz?" y "¿se usan las etiquetas de forma consistente?". Esas son reformulaciones del objetivo. La persona que realiza la auditoría tiene que convertir cada una en algo comprobable, y lo hará de forma diferente cada vez, lo que hace que la auditoría en sí sea inconsistente.
Una comprobación necesita tres cosas para valer la pena: un elemento específico que observar, una forma de observarlo y una condición que decida si se aprueba o falla. Todo lo siguiente tiene las tres.
Pasada uno: mecánica
Cinco minutos, no requiere juicio y encuentra una proporción sorprendente de desviaciones reales. Cada una de estas debería terminar en CI una vez aprobada; una comprobación que solo se ejecuta durante las auditorías permite que la desviación se acumule entre ellas.
- 1
Valores de color literales fuera del archivo de tokens
La comprobación de mayor rendimiento. Cualquier valor hex en un componente significa que se omitió la capa de design tokens, y significa que ese color no puede cambiarse de forma centralizada.
grep -rn --include='*.tsx' --include='*.css' -E '#[0-9a-fA-F]{3,8}\b' src \ | grep -v 'tokens\|globals.css' - 2
Grosores de fuente fuera de su rango
El grosor es donde la jerarquía revierte silenciosamente a los valores predeterminados del framework. Si su sistema define 400 y 600, cualquier valor superior es una desviación, independientemente de cómo se vea.
grep -rn --include='*.tsx' -E 'font-(bold|extrabold|black)|font-weight:\s*[78]00' src - 3
Valores de espaciado fuera de la escala
Las salidas de emergencia de valores arbitrarios son donde muere el ritmo. Un
p-[13px]no es nada; cuarenta de ellos son un segundo sistema de espaciado que nadie acordó.grep -rn --include='*.tsx' -E '\b(p|m|gap|space)-\[[0-9]+px\]' src - 4
Valores de radio
El radio se desvía más que cualquier otra cosa porque cada autor de componentes elige lo que parece correcto de forma aislada. Cuente los valores distintos en uso; más de tres o cuatro es un hallazgo.
grep -rhoE 'rounded-[a-z0-9]+|border-radius:\s*[0-9]+px' src -r \ --include='*.tsx' --include='*.css' | sort | uniq -c | sort -rn - 5
Propiedades que su sistema prohíbe
Cualquier cosa que nombre su lista de prohibiciones. Si dice que la elevación nunca es una sombra, esta comprobación lo hace cumplir. Si no tiene una lista de prohibiciones, ese es el hallazgo: escriba una primero.
grep -rn --include='*.tsx' --include='*.css' -E 'box-shadow|shadow-(sm|md|lg|xl)|gradient' src
Ejecute estas comprobaciones antes de mirar cualquier otra cosa. Cada resultado es un hallazgo definitivo que no requiere discusión, y eliminarlos primero significa que la pasada comparativa se centrará en decisiones de juicio genuinas en lugar de errores obvios.
La cuarta comprobación tiene un matiz importante: contar los valores de radio distintos le informa sobre la consistencia, no sobre la corrección. Tres valores usados deliberadamente —6px en controles, 12px en contenedores, completo en avatares— es un sistema. Tres valores que resultan ser 6, 8 y 10 es una desviación que no ha sido detectada.
Pasada dos: comparativa
Aquí está el error de todo proceso de auditoría. Revisar una pantalla por sí sola le indica si es internamente coherente. No le dice nada sobre si coincide con las otras pantallas, porque no puede mantener las otras pantallas en su cabeza con suficiente precisión.
La desviación es invisible por archivo y obvia en la comparación. La revisión por pull-request estructuralmente no puede detectarla.
Por lo tanto, abra tres pantallas terminadas de la misma superficie lado a lado: tres pantallas de aplicación o tres páginas de marketing, nunca una mezcla. Comparar un panel de control con una página de aterrizaje produce diferencias que se supone que deben estar ahí.
| Analizar | Falla cuando | |
|---|---|---|
| Densidad | Padding de controles, altura de fila, espacio entre secciones | Una pantalla tiene aire y otra está saturada, sin que el contenido lo justifique |
| Jerarquía | Cómo se distingue el título de la página del título de una sección | Uno usa el tamaño, otro el peso y un tercero el color |
| Elevación | Cómo se indica una superficie elevada | Sombras en una pantalla, bordes en otra |
| Estados vacíos | Qué ocurre cuando no hay datos | Una ilustración en una, una frase en otra y nada en la tercera |
| Carga | Qué aparece mientras los datos están en tránsito | Skeletons, un spinner y un flash en blanco en tres pantallas distintas |
| Presentación de errores | Dónde aparece un error y qué aspecto tiene | En línea en una, un toast en otra y un estado de página completa en una tercera |
Las últimas tres filas son donde el trabajo de consistencia suele ser más débil, y no es por descuido: los estados vacíos, de carga y de error se escriben bajo presión de tiempo, de forma individual y por quien sea que estuviera trabajando en ese archivo. Además, son precisamente lo que ve un usuario frustrado.
Si su sistema de diseño no dice nada sobre los estados vacíos, de carga y de error, espere que los tres difieran en cada pantalla y que ninguna revisión lo detecte. Estos estados deben especificarse tan explícitamente como los botones, y casi nunca se hace.
La lista de comprobación comparativa completa
Las seis filas anteriores son donde se concentra la deriva. Esta es la lista completa, agrupada para que pueda completarla de una sola vez. Cada elemento tiene una condición de aprobación en lugar de una pregunta.
Color
- Cada color en cada pantalla se resuelve en un rol con nombre. Falla si algún componente contiene un valor literal.
- El color de acento aparece en los mismos tipos de elementos en todas las pantallas. Falla si es un botón en una pantalla y un encabezado en otra.
- Los colores de estado aparecen solo para estados. Falla si el color de éxito se utiliza de forma decorativa en cualquier lugar.
- Cada color del modo claro tiene una contraparte en el modo oscuro que ha sido elegida, no derivada. Falla si cualquier superficie es una inversión directa.
Tipografía
- Cada tamaño en pantalla es un paso de la escala. Falla si encuentra un tamaño que no lo sea.
- Los pesos se mantienen dentro de la banda declarada. Falla en cualquier peso superior, por muy bien que se vea.
- El mismo nivel semántico se ve igual en todas partes: cada título de página coincide con todos los demás títulos de página. Falla si dos pantallas distinguen su título de forma diferente.
- Los números en columnas son tabulares y están alineados. Falla si los dígitos no se alinean entre filas.
Espacio y forma
- Cada valor de espaciado es un paso de la escala. Falla en cualquier valor arbitrario.
- Los valores de radio distintos son pocos y cada uno tiene un propósito establecido. Falla si no puede explicar por qué existe 8px junto a 6px.
- La elevación se indica de la misma manera en todas partes. Falla si se utilizan sombras y bordes simultáneamente para la misma función.
- El ritmo de la sección es consistente: el espacio entre un encabezado y su contenido es el mismo en cada pantalla. Falla en cualquier variación sin motivo.
Componentes y controles
- Una sola implementación por componente. Falla si dos archivos definen una tarjeta.
- Las acciones primarias son idénticas y se ubican en la misma posición relativa. Falla si una pantalla la coloca a la izquierda y otra a la derecha.
- Las acciones destructivas son visualmente distintas y coherentes en todo el sistema. Falla si la acción de eliminar se ve como la de guardar en cualquier lugar.
- Los elementos interactivos tienen un estado de enfoque visible y es el mismo en todas partes. Falla si falta algún anillo de enfoque o si este diverge.
- Los estados desactivados son visualmente distintos del contenido atenuado. Falla si el usuario no puede distinguir un control no disponible de un texto con menor énfasis.
Los estados que nadie especifica
- Los estados vacíos utilizan un único tratamiento en todo el producto. Falla si aparece una ilustración en un lugar y una frase en otro.
- La carga utiliza un único mecanismo. Falla si aparecen un skeleton, un spinner y un destello en blanco en tres pantallas distintas.
- Los errores aparecen en el mismo lugar y con el mismo tratamiento. Falla si aparecen en línea en un sitio y como toast en otro.
- El texto de error indica qué salió mal y qué hacer. Falla si el mensaje se limita a pedir disculpas.
- El contenido largo se trunca de la misma manera en todas partes. Falla si en un lugar se ajusta el texto y en otro se usan puntos suspensivos sin una regla que lo justifique.
Si dispone de poco tiempo, trabaje primero en el último grupo. Es el grupo con más probabilidades de fallar, el menos probable de estar especificado en algún lugar y el que más probablemente verá un usuario que ya está teniendo una mala experiencia.
Contenido y lenguaje
- Un mismo concepto tiene un único nombre en todas partes. Falla si la interfaz dice "proyecto" en un lugar y "espacio de trabajo" en otro para referirse a lo mismo.
- Los botones nombran la acción que realizan y la confirmación la refleja. Falla si aparece "Enviar" seguido de "Sus cambios han sido guardados".
- El uso de mayúsculas sigue una única regla para etiquetas, encabezados y botones. Falla si se mezclan el formato de título (Title Case) y el de oración (Sentence Case).
- Las fechas, horas y números utilizan un único formato. Falla si hay dos formatos de fecha en un mismo producto.
El primer elemento de este grupo causa más confusión real al usuario que cualquier inconsistencia visual mencionada en este artículo. Dos nombres para un solo concepto obligan al usuario a mantener dos modelos mentales y le impiden saber si se trata de lo mismo.
Tercera validación: ¿son coherentes las reglas en sí mismas?
Una vez al trimestre, audite el sistema en lugar de la interfaz. La pregunta no es si se siguieron las reglas, sino si las reglas podían seguirse.
| Señal | Significado | |
|---|---|---|
| Una regla con una salvedad | "Espaciado generoso, aunque las tablas pueden ser más densas" | Dos reglas que fingen ser una. Un modelo o una persona debe elegir, y eligen de forma distinta |
| La misma excepción solicitada repetidamente | Tres equipos necesitaron el mismo valor fuera del sistema | Falta algo en la capa semántica. Promuévalo en lugar de conceder excepciones |
| Multiplicación de tokens a nivel de componente | Muchos tokens con un único consumidor | La vía de escape se ha convertido en la carretera principal |
| Una regla que nadie puede decir de memoria | Todo el mundo tiene que consultarla | O es demasiado complicada o es arbitraria. Ambas cosas tienen solución |
La primera fila es la que debe revisarse con más rigor, porque una regla con matices parece una regla exhaustiva. Si sus directrices contienen salvedades, las superficies que describen esas salvedades requieren documentos independientes; la gobernanza cubre la versión estructural de esto.
Qué cambia cuando un agente escribe las pantallas
Dos cosas, en direcciones opuestas, y ambas cambian la forma en que debe ejecutar esta lista de verificación.
La validación mecánica se vuelve más importante, ya que el volumen de código ha aumentado pero la capacidad de revisión no. Un agente que produce cuarenta pantallas entre revisiones reproducirá cualquier inconsistencia cuarenta veces antes de que alguien la detecte. Las comprobaciones automatizadas son lo único que escala a ese ritmo.
La revisión comparativa también cobra más importancia, y por una razón más sutil. Un agente es extremadamente consistente *dentro* de un archivo y no tiene memoria entre sesiones, por lo que su resultado es un conjunto de pantallas internamente coherentes que difieren entre sí. Ese es precisamente el modo de fallo que la revisión por archivo no puede detectar.
La causa raíz suele estar en el origen. Analizamos 299 archivos DESIGN.md escritos para dar pautas de diseño a los agentes: el 86% especifica los colores como hex raw sin rol semántico, el 76% no establece prohibiciones de ningún tipo, el 69% no define un modo oscuro, el 57% no nombra motivos y el 44% no contiene ningún valor de tamaño concreto en ninguna parte. El 54% depende de al menos un adjetivo vago: "limpio" en el 39%, "moderno" en el 36%.
Un archivo así deja sin resolver las decisiones de densidad, jerarquía, elevación y estados vacíos, por lo que el modelo las toma de cero en cada pantalla. Los hallazgos de inconsistencia frente a esas pautas son reales, y corregirlos pantalla por pantalla no servirá de nada. Cómo escribir pautas que sí funcionen.
Los kits de diseño de Identity Forge cierran esa brecha directamente: roles de color semánticos para modo claro y oscuro, escalas de tipografía y espaciado, motivos y una lista explícita de lo que se debe y no se debe hacer, todo serializado en un DESIGN.md que el agente lee antes de escribir. Explorar los kits.
La versión resumida
Si dispone de veinte minutos en lugar de un día:
- Busque con grep los valores hex fuera del archivo de tokens. Cada coincidencia es un hallazgo.
- Busque con grep los grosores de fuente (font weights) que superen su rango. Cada coincidencia es un hallazgo.
- Cuente los valores de radio distintos. Si hay más de cuatro, analice por qué.
- Abra tres pantallas de una misma superficie. Compare la densidad, la jerarquía y la elevación.
- Observe específicamente sus estados vacíos, de carga y de error. Aquí es donde la inconsistencia será más evidente.
- Compruebe si sus pautas incluyen una lista de prohibiciones. Si no es así, esa es la solución que evitará la siguiente ronda de errores.
Los pasos del uno al tres son automatizables hoy en día y no deberían volver a ejecutarse manualmente. Los pasos cuatro y cinco requieren una persona y merecen media hora recurrente. El paso seis es el que decide si tendrá que repetir todo esto el próximo trimestre.
¿Cómo audito la consistencia de la UI?
En tres pasadas. Comprobaciones mecánicas que puede buscar con grep: colores literales, grosores de fuente, espaciados fuera de escala, dispersión de radios y propiedades prohibidas. Luego, una pasada comparativa con tres pantallas terminadas de la misma superficie una al lado de la otra. Y, trimestralmente, una auditoría para verificar si las reglas mismas son coherentes.
¿Por qué la revisión de código no detecta la inconsistencia de diseño?
Porque la revisión analiza un solo archivo, y la deriva solo existe entre archivos. Una pantalla puede ser totalmente coherente por sí misma y utilizar una estrategia de densidad, jerarquía y elevación diferente a la de cualquier otra pantalla. No se puede mantener la imagen de las demás en la cabeza con la precisión suficiente para notarlo.
¿Cuáles son las partes más comúnmente inconsistentes de una interfaz?
Los estados vacíos, los estados de carga y la presentación de errores, por un margen amplio. Se escriben individualmente bajo presión de tiempo, rara vez se especifican en un sistema de diseño y ningún proceso de revisión los compara, a pesar de ser precisamente lo que encuentra un usuario bloqueado.
¿Con qué frecuencia debo realizar una auditoría de consistencia?
Integre las comprobaciones mecánicas en el CI para que se ejecuten continuamente. Realice la pasada comparativa mensualmente o después de cualquier ráfaga de pantallas nuevas. Audite las reglas trimestralmente. Cualquier cosa que solo ocurra durante una auditoría programada permite que la deriva se acumule durante un ciclo completo.
¿Es la UI generada por IA más o menos consistente?
Ambas cosas, de una manera que anula la revisión normal. Es altamente consistente dentro de un único archivo y no tiene memoria entre sesiones, por lo que obtiene un conjunto de pantallas internamente coherentes que difieren entre sí. Las comprobaciones automatizadas y la comparación entre pantallas son las dos formas de detectarlo; la revisión por archivo, estructuralmente, no puede.