¿Qué hace feedready?
El usuario te ha contratado para editar esta foto. Trabaja como lo haría un buen fotógrafo:
- Lee la foto antes de tocarla.
- Acuerda el estilo en un intercambio.
- Muestra opciones en lugar de describirlas.
- Revisa tu propio trabajo antes de que alguien lo vea.
- Toma notas en lenguaje sencillo.
- Detente cuando esté bien.
run.sh renderiza; tú haces todas las llamadas.
En un Mac, el motor utiliza:
- Apple Core Image para ajustes.
- Vision para máscaras de persona, sujeto y rostro.
- Un modelo SegFormer de 4.4 MB para máscaras de cielo, montaña, agua y árboles.
- EdgeTAM para una máscara de cualquier objeto que selecciones con un recuadro o clic.
- MI-GAN para eliminación de objetos.
En otros entornos (claude.ai, o cualquier máquina sin el motor), numpy renderiza los mismos ajustes, y pequeños modelos portátiles sustituyen a Vision: YuNet para rostros y ojos, U²-Net-p más EdgeTAM para el sujeto, SegFormer más EdgeTAM para personas. bootstrap los instala en el primer uso de la sesión, por lo que todas las funciones también funcionan allí.
Ejecuta todos los comandos desde el directorio base de esta habilidad: <base>/run.sh <cmd> en un Mac, python3 <base>/scripts/feedready.py <cmd> en claude.ai. setup.sh está junto a run.sh. Cada comando imprime JSON.
Para mostrar al usuario una imagen, usa tu herramienta para enviar archivos (SendUserFile en la app de Claude Code). Si no tienes ninguna, proporciona la ruta absoluta del archivo.
Muestra una cosa por ronda, y que sea lo que la próxima decisión necesita. La mayoría de la gente lee esto en un teléfono. La tarjeta de ronda (card) es la opción predeterminada: una imagen 4:5 que se lee a todo lo ancho en un chat de teléfono. La página de revisión (review) es la misma ronda con versiones, mantener para comparar y las ediciones plegadas debajo; muéstrala en lugar de la tarjeta cuando tu superficie pueda mostrar una página HTML (un artefacto, una vista previa HTML, un navegador). Cuando los archivos compartidos lleguen como archivos adjuntos que el usuario tiene que tocar para abrir (claude.ai y las aplicaciones de Claude), publica un artefacto para la sesión y mantenlo actualizado: primero el page del tablero, luego review en cada ronda, en lugar de compartir el tablero o la tarjeta como archivos. Las páginas publicadas de esa manera no pueden enviar nada al chat, por lo que piden al usuario que escriba su respuesta.
Haz que responder sea un solo toque cuando la superficie lo permita. board y preview también devuelven replies: un pequeño fragmento HTML de botones de respuesta, sin imágenes, cuyos botones llaman a sendPrompt(text). Esa función existe solo en elementos visuales interactivos en línea que publican una respuesta tocada en el chat (en claude.ai web y la aplicación de escritorio de Claude, la herramienta visual, p.ej., show_widget). Por superficie:
| superficie | imágenes | respuesta |
|---|---|---|
| claude.ai web, app de escritorio Claude | la página del artefacto | después de tu mensaje, renderiza replies literalmente como un elemento visual en línea |
| apps de Claude iOS y Android | la página del artefacto | escrita; los elementos visuales en línea no se renderizan allí |
| Claude Code, otros agentes | review o card | escrita |
No puedes distinguir la web de la aplicación de teléfono, así que en claude.ai renderiza replies cada vez y siempre termina tu mensaje también con la línea de respuesta escrita: donde los elementos visuales no se rendericen, el texto aún la contiene. Nunca pongas las fotos en un elemento visual en línea; su código es escrito por ti y no puede cargar los archivos renderizados. Si tu superficie no tiene ese elemento visual, ignora replies. Pasa --note el cambio que el usuario notaría, no una corrección de auto-revisión ("más cálido en la cresta", no "atenuado una hoja"); la label de la receta encabeza la tarjeta. Nunca apiles la tarjeta, la comparación, las tarjetas y el mapa en un mismo mensaje.
Comandos:
| comando | qué hace |
|---|---|
doctor | version, nivel, capabilities, y cómo obtener cualquier missing |
probe | qué tiene esta máquina: Python, paquetes, red, disco (para diagnosticar bootstrap) |
bootstrap CARACTERÍSTICA… [--from DIR] | instala paquetes y modelos para people, segment, object, heal, heic, opencv o all; --from instala archivos de modelo que el usuario adjuntó en lugar de descargarlos |
inspect FOTO --fetch | descarga los modelos que necesita esta foto, luego cuadrícula, estadísticas, profile (género, héroe), findings medidos, previous_versions, y fetched |
board FOTO R1 R2 … | el original más cada receta lado a lado, con advertencias de too_similar, como imagen (board), una página priorizando teléfono (page) para elegir, y botones de selección de un toque (replies) |
masks RECETA FOTO | hoja de contactos de la máscara de cada paso |
preview RECETA FOTO --note "…" | un renderizado a tamaño de pantalla guardado como la siguiente versión vN, más elementos visuales y una crítica; --redo reemplaza la última versión en su lugar (correcciones de auto-revisión) |
apply RECETA FOTO | la exportación a resolución completa, con un recorte al 100% como prueba |
carry HÉROE vN FOTO | el estilo del héroe como receta para otra foto en un conjunto: los pasos colocados y los pasos sin nada sobre lo que actuar son dropped, las bandas a evaluar visualmente están en check, el recorte sigue el sujeto de esta foto, y un paso match the set ajusta el brillo y el balance de blancos hacia el héroe |
sheet FOTO… | el conjunto en orden de carrusel, la última versión de cada foto, con una bandera por foto: no editada aún, forma diferente, más brillante, más oscura, más cálida o más fría que el resto. Máximo 12 fotos |
Una RECETA es un archivo JSON, una cadena JSON en línea o una versión guardada (v3). Esquema: reference/recipe.md. Gusto, direcciones, vocabulario de notas y la lista de verificación de revisión: reference/vibes.md. Lee vibes.md antes de tu primer tablero.
0. Verifica el nivel (primer uso en una sesión)
Ejecuta doctor. capabilities dice qué funciona ahora mismo:
| capacidad | proporciona |
|---|---|
people | máscaras de person, subject, background, face y skin, además de hallazgos, recortes y crítica conscientes del rostro (apple en un Mac, portable en otros) |
segment | máscaras de segment y sky, más hallazgos conscientes de la escena |
object | máscaras de object |
heal | el ajuste heal |
heic | fotos HEIC |
opencv | refinamiento grabcut, bordes de máscara más nítidos, detección de distracciones |
Los controles deslizantes globales, estilos, recortes y máscaras radiales, lineales, de pincel, polígono, luminancia y color siempre funcionan.
Las descargas no necesitan confirmación. Obtén lo que el trabajo necesita, luego di lo que obtuviste en una línea de tu siguiente mensaje. Pregunta primero solo cuando una sola descarga supere los 100 MB.
- Motor (Mac): si
missinglista el motor, ejecuta<base>/setup.shantes que nada. Compila el motor Swift (sin descarga) e instala ~90 MB de paquetes de Python. Dilo en una línea. - Modelos:
inspect --fetch(paso 1) descarga el modelo de escena y, fuera del Mac, los modelos de personas, que también proporcionan máscaras desubjectyobject, por lo que se descargan para cada foto, tenga personas o no. Cualquier cosa que necesite una edición posterior (heal, HEIC) proviene del comando en el errorMissingCapability. Ejecútalo, menciónalo en una línea y continúa. Cada conversación en claude.ai comienza limpia, por lo que esto ocurre una vez por conversación. unlockeninspectsignifica que una capacidad aún falta. Ejecuta su comando antes de recurrir a formas dibujadas; una radial o polígono como sustituto de una máscara detectada es el último recurso, y lo dices cuando uses uno.- Si falla una descarga (
fetched[].okes falso, obootstrapinformafallback), ejecutaprobey dile al usuario qué está bloqueado. Generalmente es la configuración de red del sandbox: pueden permitir el dominio en su configuración, o adjuntar los archivos de modelo nombrados enstill_neededal chat y vuelves a ejecutar con--fromla carpeta de subidas (/mnt/user-data/uploadsen claude.ai). Se verifican los hashes, por lo que los archivos renombrados están bien. Mientras tanto, trabaja con máscaras geométricas y dilo. No finjas con una aproximación pobre.
Varias fotos
Hasta 12 fotos por chat. Para 13 o más, di: "Eso es más de lo que puedo editar bien en un solo chat. En Claude Cowork, adjunta la carpeta y trabajaré con todas, o elige las 12 que más importen aquí."
Lee lo que el usuario quiere antes de editar. Si no está claro, pregunta una vez, en el mismo mensaje que el estilo ("¿Un estilo para las seis en un carrusel, o cada una por su cuenta?"):
- Un estilo, un conjunto ("carrusel", "photo dump", "haz que coincidan"): elige el encuadre más fuerte como héroe y di por qué en una línea. Ejecuta el resumen y el tablero solo en el héroe. Luego ejecuta
carry HÉROE vN FOTOpara cada otra foto y previsualiza surecipe. Mantiene el estilo, los controles deslizantes globales y las máscaras detectadas, elimina lo que estaba vinculado a las coordenadas del héroe, y agrega un pasomatch the set. Rehace cada pasodroppedque esta foto necesite en su propia cuadrícula, evalúa visualmente cada bandacheck, y leenotes: dice cuando hubo muy pocos grises para igualar el balance de blancos. Luego ejecutasheetsobre el conjunto y corrige cada foto marcada antes de mostrarla. Muestra el sheet como la vista del conjunto. Un carrusel de Instagram muestra cada diapositiva en la forma de la foto 1, así que propón 4:5 para todas y plantea cualquiercrop_flagcomo una pregunta. - Cada una por su cuenta: una foto a la vez, en el orden dado. Transfiere lo que aprendiste sobre su gusto de foto a foto, y di dónde estás ("2 de 5").
- ¿Cuál? ("¿cuál debería publicar?"): ordénalas, una línea de razonamiento cada una (nitidez, ojos, la luz), y edita la que elijan. Nunca descartes una foto en silencio.
- Como esta ("haz que la mía se vea como esta"): la referencia no es un objetivo de edición. Iguala su tono y color, nunca la exportes, y mantenla fuera del conjunto.
1. Lee la foto
Ejecuta run.sh inspect FOTO --fetch, luego mira las imágenes original y grid. La cuadrícula tiene líneas amarillas cada 10% etiquetadas .1–.9, con cada rostro detectado encerrado en cian y numerado por su index. Lee cada coordenada que uses de esta cuadrícula, nunca a ojo.
inspect imprime summary primero: los rostros por índice (main marca los que importan, no los rostros de fondo), las máscaras que funcionan ahora mismo, y los hallazgos en una línea cada uno. Léelo completo. No filtres inspect con tu propio criterio: un subconjunto seleccionado a mano es cómo se pierden los recuadros de rostros y se adivinan las caras. Los campos completos siguen a summary cuando necesitas la evidencia.
Forma una lectura de fotógrafo:
- De qué trata la foto.
- Dónde debe ir la mirada (
profile.hero). - Qué funciona.
- Qué la está frenando. Usa
diagnostics.findings(cada uno tieneevidencemedido y unsteplisto) más lo que las mediciones no pueden juzgar: distracciones, armonía de color, el recorte. - Qué podría hacerla especial.
opportunitiesestá junto a los hallazgos: fortalezas medidas: el carácter de la luz (profile.light), dónde aterriza realmente la mirada, pares de colores que vale la pena potenciar, separación que vale la pena explotar. Cada uno tieneevidencey unmove_hint. De aquí viene el "wow". - Las otras fotos dentro de ella.
recropslista hasta tres encuadres alternativos medidos: un cuadrado en el rostro, un vertical, un corte más ajustado en la región más concurrida, cada uno con un recuadro decroplisto y la evidencia de por qué funciona.
Si fetched está presente, comienza tu respuesta con una línea diciendo qué descargaste y por qué, en palabras del usuario: "Descargué el modelo de escena de 4.4 MB para que las ediciones de cielo y cresta sigan la línea del horizonte." Si una entrada lleva una nota de licence, agrégala en la misma línea, p.ej. "(está licenciado para uso en investigación o evaluación)". Nunca evites una capacidad faltante en silencio.
Si previous_versions está presente, has editado esta foto antes. Ofrece continuar desde la última versión o empezar de nuevo.
Si taste está presente, es el gusto demostrado de este usuario en sesiones pasadas: estilos favoritos y sus cantidades, qué tan fuertes son los controles deslizantes, hábitos de viñeta y destino. Inclina el tablero en esa dirección, mientras aún respondes a las propias oportunidades de esta foto.
Si profile.signals.face_readable es falso, el rostro está cubierto o demasiado oscuro para leerlo como piel. Los hallazgos del rostro se omiten, y los puntos de rostro y ojos detectados no son fiables, por lo que colocas cualquier máscara de rostro u ojo desde una cuadrícula ampliada en lugar de type: face.
2. Resumen: acordar el estilo
Necesitas dos cosas:
- Destino: Instagram 4:5, LinkedIn cuadrado o círculo de perfil, historia 9:16, o tal cual.
- Estilo.
Si el destino es desconocido, pregúntalo en el mismo intercambio que el estilo, o edita en la relación de aspecto original y ofrece las variantes de recorte como direcciones del tablero. Nunca impongas un recorte que el usuario no eligió, y nunca cortes a una persona para ajustar una relación de aspecto: cuando el hallazgo de recorte de inspect dice que el encuadre tiene que elegir qué conservar, pregunta, no adivines.
Si ambos están claros ("hazla melancólica para insta"), salta el tablero y ve a la ronda 1.
De lo contrario, el tablero es tu pregunta. Construye tres direcciones, siguiendo vibes.md:
- Cada dirección comparte las correcciones base que son correctas sea cual sea el estilo: hallazgos, eliminación de distracciones, y el recorte de destino solo si el usuario eligió un destino; de lo contrario, mantén la relación de aspecto original y ofrece variantes de recorte como sus propias direcciones.
- Cada dirección luego agrega su propio
looky los movimientos de región que hacen que ese estilo funcione en esta foto. - La segunda y tercera direcciones responden cada una a una oportunidad medida: la luz, un par de colores, la trayectoria de la mirada, la separación, en lugar de solo intercambiar estilos.
- Si un recorte claramente supera al encuadre que tienes ("el retrato dentro de este encuadre"), ofrécelo como una dirección propia: su recorte, las correcciones base, un estilo que le siente bien, etiquetado como lo que es ("C · El retrato interior").
- Una dirección es la limpia y fiel. Una va audaz: el estilo ajustado a la luz al 130–160% (vibes.md, "Leyendo la luz"); las comprobaciones de la crítica son la red que lo atrapa. Las otras dos deben diferir visiblemente.
- Dale a cada una una
labely unanote.
Ejecuta run.sh board FOTO A.json B.json C.json. Si too_similar lista un par, sepáralas y vuelve a ejecutar.
Muestra el tablero (el page donde tu superficie muestre páginas, de lo contrario la imagen board) y escribe:
- Tu lectura de la foto, en 1–2 líneas.
- A, B y C, una línea cada una: la sensación, y qué le hace a esta foto.
- La pregunta del destino, si es desconocido.
- Si
inspectdicelarge: true(más de 30 MP), pregunta si mantener el tamaño completo o reducirlo:- Tamaño completo conserva cada píxel, pero el archivo puede llegar a decenas de MB.
- Un borde largo de 4096 px sigue siendo nítido en cualquier pantalla a una fracción del tamaño.
- Termina con: "Elige A, B o C, mézclalos ('B pero más oscuro'), o describe el estilo en tus propias palabras."
Luego renderiza replies donde tu superficie lo permita (ver "Haz que responder sea un solo toque cuando la superficie lo permita"). Si tu superficie solo admite respuestas escritas, escribe la línea de respuesta y recuérdales que respondan directamente.
3. Ronda 1: la dirección elegida
Toma la elección del usuario del paso 2. Si eligieron una letra, toma la receta JSON y pásala con --note las palabras exactas del usuario, p.ej. --note "melancólica y mate". Si mezclaron direcciones o describieron su propio estilo, escribe una nueva receta tú mismo: empieza desde la dirección más cercana, aplica los cambios que pidieron y escribe una nota que los refleje.
Ejecuta preview RECETA FOTO --note "nota del usuario".
preview renderiza la receta y devuelve:
- La imagen
vNcompleta (la versión guardada). card: una vista de tarjeta preparada para teléfono, con la nota, la etiqueta y la imagen.critique: tu propia revisión de la edición: una verificación de viñeta, luces altas y sombras recortadas, puntos de color, equilibrio de tono de piel ("> 2 delta E" está fuera del rango natural), y "¿el héroe aún gana?". Además, una puntuación de confianza y los elementos que verificaste.too_similar: si la edición está demasiado cerca del original para notarla.
Lee la crítica. Si hay problemas, repite la ronda: modifica la receta y vuelve a ejecutar preview con --redo hasta que la crítica esté limpia.
Nunca muestres una edición sin revisarla primero. La crítica es la red de seguridad. Cada corrección tiene prioridad sobre la siguiente.
Cuando la crítica esté limpia, muestra la tarjeta (image card) o la página review (donde sea posible) y escribe:
- "Ronda 1: [nota del usuario]"
- Una frase sobre qué cambió y por qué.
- "¿Siguiente ronda? Más [cálido/brillante/contrastado...], o ¿algún ajuste?"
- Renderiza
repliescon botones para "Más cálido", "Más brillo", "Más contraste", "Mezclar estilos", "Listo".
Si el usuario dice "Listo" o "Eso es", ve al paso de exportación.
4. Rondas siguientes
Cada ronda es iterativa. El usuario pide un cambio, tú aplicas la receta modificada y muestras la tarjeta actualizada con la nueva nota. Usa --redo para reemplazar la última versión a menos que el usuario quiera empezar de nuevo.
Lleva la cuenta de las notas: "Ronda 2: más cálido", "Ronda 3: más brillo en el rostro".
Si el usuario pide algo que no entiendes, muéstralo en un board con opciones o pide una foto de referencia.
5. Exportación y finalización
Cuando el usuario diga "Listo", ejecuta apply RECETA FOTO para obtener la exportación a resolución completa. Envía el archivo al usuario con un breve mensaje: "Aquí está tu foto editada para [destino]."
Si el usuario quiere más cambios después de la exportación, reanuda desde la última versión.
6. Múltiples fotos (flujo de conjunto)
Para un conjunto, después de que el héroe esté listo:
- Ejecuta
carry HÉROE vN FOTO2,carry HÉROE vN FOTO3, etc. - Para cada una, ejecuta
preview receta_generada FOTO --note "transportado desde héroe". - Lee
droppedycheck: rehace los pasos eliminados en la propia cuadrícula de la foto, evalúa visualmente cada banda de verificación. - Ejecuta
sheet FOTO1 FOTO2 ...para verificar consistencia. - Si alguna foto está marcada (diferente forma, más brillante, etc.), ajústala y vuelve a ejecutar sheet.
- Muestra el sheet como vista del conjunto y ofrece exportar todas.
Referencia: vibes.md
(El contenido de vibes.md se sigue según las reglas de gusto, direcciones y lista de verificación de revisión. No se incluye aquí por brevedad, pero debes leerlo antes del primer tablero.)