¿Qué hace Tailr — el bucle de revisión?
Tailr permite que la persona con la que trabajas marque su servidor de desarrollo en el navegador — haz clic en un elemento, di qué está mal — y te entregue todas las marcas a la vez como un lote. Tú aplicas el lote e informas cada marca a medida que se aplica.
Las reglas a continuación son todo el protocolo. Son las mismas reglas que tailr init
escribe en el AGENTS.md / CLAUDE.md de un proyecto; este plugin las incorpora
en su lugar, por lo que no es necesario editar nada en el repositorio del usuario.
Tailr — marcado visual del revisor
El revisor marca la aplicación en ejecución en el navegador y te entrega los cambios
como un solo lote. Una sesión está activa cuando existe .tailr/session.json; si no
existe, inicia una como proceso en segundo plano de larga duración — debe permanecer
activa, así que no bloquees tu turno esperándola:
npx tailr --target http://localhost:<puerto del servidor de desarrollo>
Esto imprime una URL de revisión (normalmente http://localhost:4100). Indica al revisor que use esa URL, no el puerto original. Tailr actúa como proxy de la aplicación e inyecta su superposición; el código fuente no se modifica.
El bucle es wait → pull → progress por cada marca → done o fail.
| Comando | Herramienta MCP | |
|---|---|---|
npx tailr status | tailr_status | ¿hay un lote esperando? salida 0 sí · 3 sesión activa, nada esperando · 2 sin sesión |
npx tailr wait | tailr_wait | bloquear hasta que se presione Enviar; salida 0 hay un lote esperando · 3 tiempo agotado, reinícialo · 2 sesión terminada |
npx tailr pull | tailr_pull | toma el lote, impreso como JSON |
npx tailr progress <ref> | tailr_progress | informa que una marca se ha aplicado |
npx tailr done | tailr_done | la ejecución finalizó |
npx tailr fail "razón" | tailr_fail | devolvió incompleto |
Cada marca lleva un ref ("01"), un type, la route donde se hizo, una
dirección de fuente address de mejor esfuerzo, un selector CSS, el texto del
elemento y el comment del revisor.
comment— cambia ese elemento según lo descritoremove— elimina ese elementotext— llevabefore/after; cambia el texto aafterpoint— lleva las coordenadas de páginax/yen lugar de un elemento. El revisor marcó un lugar, no una cosa: puede querer algo nuevo allí, o simplemente estar señalando el punto. Su comentario indica cuál.
Reglas que importan
- Ejecuta
waitcomo un proceso en segundo plano de larga duración y trata su salida como la notificación. Nunca le pidas al revisor que te diga que ha llegado un lote, y nunca hagas polling para obtener uno. Vuelve a iniciarlo después de cada ejecución que cierres. - Informa cada marca con
progressa medida que la aplicas, no todas al final. El revisor las ve desaparecer en pantalla; agruparlas hace que parezca que no está pasando nada. - Siempre cierra la ejecución con
doneofail. Hasta que lo hagas, el revisor no puede enviar otro lote. Si encuentras algo que no puedes hacer, llama afailcon lo que realmente salió mal — Tailr no inventará una explicación, te redirige de vuelta a ti. - Cuando la dirección de fuente y el selector no coincidan, confía en la dirección de fuente.
- Una marca con
"orphaned": trueperdió su elemento antes de ser enviada. No adivines lo que se quería decir — consúltalo con el revisor. - Si una marca es ambigua, pregunta en lugar de elegir una interpretación.
- Ejecuta estos comandos desde el directorio del proyecto; así es como Tailr encuentra la sesión.
Ejecutar los comandos desde este plugin
Este plugin registra el servidor MCP de Tailr, por lo que tailr_status, tailr_wait,
tailr_pull, tailr_progress, tailr_done y tailr_fail están disponibles
directamente. Prefiérelos a la CLI: siempre están presentes, mientras que el
comodín npx tailr solo se resuelve en un proyecto que tenga Tailr instalado.
Cuando recurras a la CLI, usa el nombre completo del paquete para que funcione en un proyecto que no haya instalado nada:
npx -y @gcrft123/tailr <comando>
Iniciar una sesión es el único paso sin herramienta MCP, porque la sesión es el servidor con el que hablan esas herramientas. Iníciala como un proceso en segundo plano de larga duración — tiene que mantenerse activa, así que no bloquees tu turno esperándola:
npx -y @gcrft123/tailr --target http://localhost:<puerto del servidor de desarrollo>
Si el proyecto tiene Tailr como dependencia, el simple npx tailr es equivalente
y más corto.