Comandos de revisión: critique, audit, polish

Por: Artiko
impeccablecritiqueauditpolishrevisión

Comandos de revisión: critique, audit, polish

En el capítulo anterior aprendiste a usar los comandos de planificación (craft, shape, document, extract) para definir qué construir antes de escribir una sola línea. Pero planificar y construir no basta: el verdadero salto de calidad ocurre cuando alguien (o algo) mira tu interfaz con ojos críticos y te dice, sin rodeos, qué está mal y por qué. Esa es la función de los tres comandos de revisión de Impeccable.

En este capítulo vamos a desmenuzar critique, audit y polish. Los tres revisan tu trabajo, pero cada uno opera en un nivel distinto: critique te da una opinión de diseño honesta y una dirección, audit ejecuta una verificación técnica sistemática contra una checklist medible, y polish ya no opina sino que ejecuta las mejoras finas. Entender la diferencia entre los tres es lo que separa a quien usa Impeccable como un linter de quien lo usa como un director de arte.

Por qué tres comandos y no uno

Podrías preguntarte por qué Impeccable separa la revisión en tres comandos en lugar de tener un único “revisa esto”. La respuesta es que revisar diseño tiene tres modos cognitivos muy distintos, y mezclarlos produce feedback confuso.

flowchart LR
    A[Interfaz construida] --> B[critique]
    A --> C[audit]
    B -->|opinión y dirección| D[Decides qué arreglar]
    C -->|checklist técnica| D
    D --> E[polish]
    E -->|ejecuta mejoras finas| F[Interfaz impecable]
    style B fill:#dbeafe
    style C fill:#dcfce7
    style E fill:#fef3c7

Los tres se invocan con la misma forma que el resto de comandos de Impeccable: /impeccable <comando> <target>, donde el target puede ser una descripción (“la homepage”, “blog”), una ruta de archivo o una URL.

critique: la crítica de diseño honesta

El comando critique es el más ambicioso de los tres. No se limita a buscar errores: emite un juicio de diseño completo, combinando una revisión de diseño (subjetiva, basada en heurísticas y experiencia) con un escaneo del detector (determinista, las 44 reglas que viste en el capítulo 4). Luego sintetiza ambas evaluaciones en un informe priorizado.

Cómo funciona por dentro

Cuando ejecutas critique, el flujo es el siguiente:

  1. Resuelve el target: convierte tu entrada (“la homepage”) en una ruta concreta (site/pages/index.astro). Prefiere rutas de código fuente antes que URLs del servidor de desarrollo.
  2. Calcula un slug: genera un identificador estable para poder persistir el resultado y rastrear la evolución en el tiempo.
  3. Lee la lista de ignorados: si existe .impeccable/critique/ignore.md, descarta silenciosamente los hallazgos que coincidan. Es la única entrada de ejecuciones previas.
  4. Ejecuta dos evaluaciones independientes (A y B) y las sintetiza.

Evaluación A: revisión de diseño

Esta es la parte “humana” del juicio. Evalúa archivos fuente y páginas en vivo cubriendo:

Evaluación B: detector + evidencia del navegador

Esta es la parte determinista. Ejecuta el detector por CLI sobre los archivos de markup:

node .claude/skills/impeccable/scripts/detect.mjs --json [target]

El código de salida 0 significa limpio y 2 significa que encontró hallazgos. Para URLs, en lugar del CLI usa una visualización en el navegador: levanta un servidor en vivo, inyecta un script de detección (detect.js) y lee la consola en busca de mensajes impeccable. Esta visualización es la base del comando live, que veremos en el capítulo 11.

Qué devuelve critique

El informe combinado tiene una estructura fija y muy rica. Estas son sus piezas principales:

La banda de calificación del Design Health Score funciona así:

Rango (sobre 40)Banda
36 - 40Excellent
28 - 35Good
20 - 27Acceptable
12 - 19Poor
0 - 11Critical

Y las severidades de cada hallazgo son consistentes en los tres comandos:

TagNombreSignificado
P0BlockingImposible completar la tarea; arréglalo ya
P1MajorDificultad significativa; arréglalo antes de publicar
P2MinorExiste un workaround; arréglalo en la siguiente pasada
P3PolishSin impacto real; arréglalo si hay tiempo

El almacenamiento de critiques

Aquí entra una pieza que distingue a critique de los demás: la persistencia. Tras finalizar el informe, Impeccable lo guarda en .impeccable/critique/ usando el script critique-storage.mjs:

IMPECCABLE_CRITIQUE_META='{"target":"blog","total_score":32,"p0_count":0,"p1_count":2}' \
  node .claude/skills/impeccable/scripts/critique-storage.mjs write <slug> <body-file>

Y para leer la tendencia de las últimas ejecuciones:

node .claude/skills/impeccable/scripts/critique-storage.mjs trend <slug> 5

Esto permite que, al final de cada crítica, veas una línea como Trend for blog (last 5 runs): 24 → 28 → 32 → 29 → 32. La idea es poderosa: el diseño deja de ser una evaluación puntual y se convierte en una métrica que evoluciona. Puedes ver si tus cambios mejoran o empeoran la salud de diseño con cada iteración. Un fallo en el almacenamiento nunca bloquea la crítica.

Ejemplo de invocación

/impeccable critique blog

Impeccable resolverá “blog” a la ruta correspondiente, ejecutará ambas evaluaciones y te devolverá la tabla de salud, los priority issues y, al final, te hará entre 2 y 4 preguntas concretas (vía AskUserQuestion) basadas en los hallazgos reales: por ejemplo, “Encontré problemas de jerarquía visual, color y sobrecarga de información. ¿Cuál te importa más?”. Según tu respuesta, te listará comandos en orden de prioridad, cerrando siempre con /impeccable polish como paso final.

audit: la auditoría técnica sistemática

Mientras critique opina, audit verifica. Es una revisión de calidad técnica a nivel de código, enfocada en problemas medibles de implementación en lugar de en la crítica de diseño. Combina detección automática con el juicio del agente para evitar falsos positivos, pero su columna vertebral es una checklist objetiva.

Las cinco dimensiones

audit puntúa cinco dimensiones, cada una de 0 a 4:

  1. Accessibility (A11y): ratios de contraste, etiquetas ARIA, navegación por teclado, HTML semántico, texto alternativo y formularios.
  2. Performance: layout thrashing, animaciones costosas, lazy loading, tamaño del bundle y optimización del render.
  3. Responsive Design: anchos fijos, áreas táctiles (mínimo 44x44 px), overflow, escalado de texto y cobertura de breakpoints.
  4. Theming: design tokens, variantes de dark mode, consistencia de color y comportamiento del cambio de tema.
  5. Anti-Patterns (CRÍTICO): “tells” de diseño generado por IA (glassmorphism, gradient text, fuentes genéricas) y anti-patrones de UX generales.

Qué reporta

El informe de audit incluye:

Fíjate en la diferencia clave con critique: aquí cada hallazgo cita un estándar verificable (por ejemplo, una violación concreta de WCAG en una ubicación concreta). No es una opinión sobre si “se siente genérico”, es un hecho medible. Por eso audit es ideal antes de una release: te da una lista de defectos técnicos que puedes marcar como resueltos uno a uno. Importante: audit reporta pero no arregla los problemas.

Ejemplo de invocación

/impeccable audit blog

El comando te devolverá la tabla de salud sobre 20, el resumen ejecutivo con los conteos por severidad y la lista priorizada de hallazgos. Al final, sugiere los próximos pasos ordenados por severidad, concluyendo con /impeccable polish e invitándote a re-auditar para rastrear la mejora.

La relación con el detector

Tanto critique como audit se apoyan en el detector del capítulo 4, pero lo usan distinto. El detector por sí solo es puramente determinista: ejecuta sus 44 reglas y reporta. audit y critique lo envuelven con el juicio del agente, que verifica cada hallazgo para descartar falsos positivos y lo enriquece con contexto, impacto y recomendaciones. El detector dice “esto coincide con la regla X”; el agente decide si eso realmente importa en este contexto y qué hacer al respecto.

polish: el pulido de los detalles finales

polish es el único de los tres que ejecuta cambios. No te entrega un informe para que decidas: hace una pasada meticulosa y final sobre la interfaz para cazar los detalles que separan el trabajo bueno del trabajo excelente. Su lema lo resume todo: “Polish is the last step, not the first.”

El requisito previo

Antes de pulir nada, polish hace una evaluación crítica: la funcionalidad debe estar completa. No tiene sentido ajustar el espaciado de un componente que aún no funciona. El comando primero revisa el nivel de completitud y la barra de calidad (¿es un MVP o una funcionalidad insignia?), piensa desde la perspectiva del usuario y separa lo cosmético de lo funcional antes de tocar una sola línea.

Qué pule, exactamente

polish aborda de forma sistemática:

La alineación con el design system es innegociable

Hay una regla central en polish: “Aligning the feature to the design system is not optional.” Para cada desviación que encuentra, la clasifica antes de arreglarla en una de tres categorías:

Esta clasificación importa porque no todos los arreglos son iguales: un token faltante se corrige sustituyendo un valor, pero una desalineación conceptual puede requerir repensar el componente. Aquí se conecta con el DESIGN.md que definiste en el capítulo 3: ese documento es la fuente de verdad contra la que polish mide cada desviación.

Ejemplo de invocación

/impeccable polish blog

A diferencia de critique y audit, no esperes un informe con tablas de puntuación: espera cambios aplicados en tus archivos, con una explicación de qué se ajustó y por qué. Por eso polish es siempre el último eslabón de la cadena, el que ejecutan los flujos de los otros comandos como paso de cierre.

Tabla comparativa

Aspectocritiqueauditpolish
NaturalezaOpinión y direcciónVerificación sistemáticaEjecución de mejoras
¿Modifica código?NoNo
BaseHeurísticas + detectorChecklist técnica + detectorDesign system + checklist
SalidaInforme priorizado (heurísticas de Nielsen, personas)Informe técnico (5 dimensiones, WCAG)Cambios aplicados
PuntuaciónDesign Health sobre 40Audit Health sobre 20No puntúa
PersistenciaSí (.impeccable/critique/, con tendencia)NoNo
Cuándo usarloPara entender el rumbo del diseñoAntes de una release, para defectos técnicosAl final, cuando todo funciona
Ejemplo/impeccable critique blog/impeccable audit blog/impeccable polish blog

El flujo recomendado de revisión

Los tres comandos forman una secuencia natural. Primero entiendes el rumbo, luego verificas lo técnico, y al final pules:

sequenceDiagram
    participant D as Desarrollador
    participant C as critique
    participant A as audit
    participant P as polish
    D->>C: /impeccable critique blog
    C-->>D: Dirección + priority issues + tendencia
    D->>A: /impeccable audit blog
    A-->>D: Defectos técnicos verificables (WCAG, etc.)
    Note over D: Arregla los P0 y P1 con otros comandos
    D->>P: /impeccable polish blog
    P-->>D: Detalles finales aplicados

No es obligatorio ejecutar los tres siempre. Si solo quieres saber si tu diseño “se siente bien”, critique basta. Si vas a publicar y necesitas garantías de accesibilidad y performance, audit es el indicado. Y cuando la funcionalidad ya está completa y quieres ese último 5 % de calidad, polish cierra el trabajo. Lo importante es respetar el orden cuando los combinas: pulir antes de tener la dirección clara es desperdiciar esfuerzo.

Resumen

Siguiente: Comandos de refinamiento: bolder, quieter, distill, harden