CommunityImagengithub.com

parthbatra99/feedready

Edita una foto como un fotógrafo profesional de Lightroom. Lee la imagen, acuerda el estilo, muestra las direcciones editadas una al lado de la otra y edita en rondas (renderizar, auto-revisar, mostrar, tomar notas) hasta que la foto alcance el estilo deseado, y entrega la imagen final para Instagram, LinkedIn o una historia. Cubre gradaciones y estilos, exposición, color, recorte, ediciones regionales (rostro, ojos, cielo, montañas, persona, fondo, cualquier objeto) y eliminación de objetos. Úsalo cuando el usuario comparta una foto y pida ediciones o un estilo...

¿Qué es feedready?

feedready es una habilidad de agente de IA especializada en la edición profesional de fotografías, diseñada para imitar el flujo de trabajo de un fotógrafo de Lightroom. El agente lee la foto para comprender su contenido, acuerda el 'estilo' o 'vibe' deseado con el usuario en un intercambio, y luego presenta opciones de edición visualmente (no solo describiéndolas) a través de tableros de comparación lado a lado. La edición se realiza en rondas iterativas que incluyen renderizado, auto-revisión (crítica) y toma de notas, hasta que la foto cumple con el estilo acordado. Es compatible con múltiples plataformas: en un Mac con Apple Silicon, utiliza un motor Swift nativo con Core Image para ajustes y Vision para máscaras; en claude.ai o cualquier otra máquina, usa scripts de Python con modelos portátiles (YuNet, U²-Net-p, EdgeTAM, MI-GAN) que se instalan mediante bootstrap. La habilidad maneja gradaciones de color, exposición, recorte, ediciones regionales (rostro, ojos, cielo, montañas, personas, fondo, objetos) y eliminación de objetos. El agente sigue pautas estrictas de comunicación: muestra un elemento por ronda, utiliza tarjetas o páginas de revisión HTML (artefactos) según la superficie, y ofrece botones de respuesta de un solo toque cuando es posible. Para conjuntos de fotos (hasta 12 por chat), puede aplicar un estilo unificado usando un héroe y luego 'transportar' la receta a las demás fotos, ajustando recortes y balances.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/parthbatra99/feedready/tree/HEAD/skills/feedready

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿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:

superficieimágenesrespuesta
claude.ai web, app de escritorio Claudela página del artefactodespués de tu mensaje, renderiza replies literalmente como un elemento visual en línea
apps de Claude iOS y Androidla página del artefactoescrita; los elementos visuales en línea no se renderizan allí
Claude Code, otros agentesreview o cardescrita

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:

comandoqué hace
doctorversion, nivel, capabilities, y cómo obtener cualquier missing
probequé 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 --fetchdescarga 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 FOTOhoja 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 FOTOla exportación a resolución completa, con un recorte al 100% como prueba
carry HÉROE vN FOTOel 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:

capacidadproporciona
peoplemá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)
segmentmáscaras de segment y sky, más hallazgos conscientes de la escena
objectmáscaras de object
healel ajuste heal
heicfotos HEIC
opencvrefinamiento 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 missing lista el motor, ejecuta <base>/setup.sh antes 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 de subject y object, 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 error MissingCapability. 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.
  • unlock en inspect significa 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[].ok es falso, o bootstrap informa fallback), ejecuta probe y 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 en still_needed al chat y vuelves a ejecutar con --from la carpeta de subidas (/mnt/user-data/uploads en 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 FOTO para cada otra foto y previsualiza su recipe. 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 paso match the set. Rehace cada paso dropped que esta foto necesite en su propia cuadrícula, evalúa visualmente cada banda check, y lee notes: dice cuando hubo muy pocos grises para igualar el balance de blancos. Luego ejecuta sheet sobre 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 cualquier crop_flag como 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 tiene evidence medido y un step listo) más lo que las mediciones no pueden juzgar: distracciones, armonía de color, el recorte.
  • Qué podría hacerla especial. opportunities está 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 tiene evidence y un move_hint. De aquí viene el "wow".
  • Las otras fotos dentro de ella. recrops lista 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 de crop listo 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 look y 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 label y una note.

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 inspect dice large: 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 vN completa (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 replies con 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:

  1. Ejecuta carry HÉROE vN FOTO2, carry HÉROE vN FOTO3, etc.
  2. Para cada una, ejecuta preview receta_generada FOTO --note "transportado desde héroe".
  3. Lee dropped y check: rehace los pasos eliminados en la propia cuadrícula de la foto, evalúa visualmente cada banda de verificación.
  4. Ejecuta sheet FOTO1 FOTO2 ... para verificar consistencia.
  5. Si alguna foto está marcada (diferente forma, más brillante, etc.), ajústala y vuelve a ejecutar sheet.
  6. 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.)

Skills relacionados