Communitygithub.com

Fitnessnlp/nonelinear-skills

Habilidades oficiales de NoneLinear Agent para generación, edición y fusión de imágenes.

¿Qué es nonelinear-skills?

Este skill proporciona un pipeline completo para generación, edición y fusión de imágenes mediante un script Node.js autónomo y sin dependencias externas, diseñado para agentes como Claude Code, Cursor o Codex. Permite a los desarrolladores solicitar transformaciones de imágenes de forma precisa y segura, sin exponer datos binarios en el contexto del agente: las imágenes locales se pasan como rutas de archivo y el script se encarga de su codificación, carga y procesamiento. Soporta modelos avanzados como `gemini-2.5-flash-image`, `gpt-image-2` y `doubao-seedream-5-0-pro-260628`, con parámetros opcionales de relación de aspecto, tamaño, calidad, formato de salida, fondos transparentes y marcas de agua. El skill gestiona credenciales de forma segura (claves API, variables de entorno) y devuelve resultados estructurados (JSON con enlaces a las imágenes generadas). Está especialmente indicado para flujos de trabajo que requieran alta calidad visual, control de costos y manipulación segura de archivos locales.

Compatible con✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add Fitnessnlp/nonelinear-skills

Preguntar en tu IA favorita

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

Documentación

NoneLinear Image

Genera o transforma imágenes ejecutando el script Node.js integrado, sin dependencias externas. No invoques la CLI nonelinear o nl, y no uses el generador de imágenes nativo del agente anfitrión para una solicitud NoneLinear.

Flujo de trabajo

  1. Trata una solicitud explícita de generar o transformar una imagen como autorización para realizar una solicitud facturable a la API. No realices una solicitud API cuando el usuario solo pregunte por capacidades o configuración.
  2. Selecciona la operación según la intención del usuario:
    • generate: sin imágenes de referencia.
    • edit: exactamente una ruta de imagen local o URL de imagen de referencia HTTPS pública.
    • fuse: al menos dos rutas locales o URLs de imágenes de referencia HTTPS públicas.
  3. Extrae el prompt y, opcionalmente, el modelo, la relación de aspecto, el tamaño, la calidad y la cantidad. Si el usuario solicita una imagen transparente, aplica el preset de imagen transparente a continuación. Para gpt-image-2, la calidad por defecto es low a menos que el usuario solicite otro valor compatible.
  4. Por defecto, otras solicitudes usan gemini-2.5-flash-image. Siempre solicita la salida como URL.
  5. Lee references/models.md y, cuando los límites exactos importen, references/model-capabilities.json antes de seleccionar un modelo no predeterminado o añadir parámetros específicos de modelo. Nunca inventes un ID de modelo o un parámetro no compatible.
  6. Localiza scripts/generate-image.mjs relativo a este SKILL.md e invócalo con Node.js 18 o superior. En Claude Code, ${CLAUDE_SKILL_DIR} es el directorio del skill. En otros anfitriones, usa el directorio absoluto desde el que se cargó este skill.
  7. Analiza el objeto JSON único escrito en stdout. Declara éxito solo cuando status sea completed y images contenga al menos un campo url.
  8. Devuelve las URLs de las imágenes como enlaces cliqueables. Nunca devuelvas ni muestres datos de imagen en base64.

Imágenes transparentes

Trata cualquier solicitud de imagen transparente, fondo transparente, recorte o sin fondo como intención de salida transparente. El usuario no necesita nombrar parámetros de API. Internamente:

  • Usa gpt-image-2.
  • Pasa --background transparent y --output-format png.
  • Asegúrate de que el prompt solicite explícitamente un fondo transparente. Agrega esa redacción cuando la intención del usuario sea clara pero el prompt no la contenga.
  • Excluye la escena, el suelo, la base, el reflejo y la sombra cuando el usuario quiera un recorte limpio.

No afirmes que el modelo carece de transparencia basándote únicamente en un fondo de previsualización. Valida el canal alfa del PNG original descargado cuando se requiera verificación; los visores de imágenes pueden mostrar los píxeles transparentes como blanco o un patrón de tablero.

Cuando el usuario proporcione una ruta de archivo local, pásala directamente como --image-file. No uses Read, adjuntes la imagen, la inspecciones ni la codifiques en el agente. El script hijo lee y codifica en base64 el archivo en su propio proceso, lo sube al punto de subida fijo de NoneLinear y pasa solo la URL devuelta a la API de imágenes. Los bytes base64 nunca entran en stdout ni en el contexto del modelo.

Invocación del script

Texto a imagen con los valores predeterminados:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --prompt "白色陶瓷马克杯放在胡桃木桌面上,清晨自然光,真实摄影风格"

Especifica opciones compatibles solo cuando sean solicitadas o requeridas por el modelo elegido:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --model "gemini-2.5-flash-image" \
  --prompt "未来城市天际线,电影感广角摄影,日落自然光" \
  --aspect-ratio "16:9" \
  --response-format "url"

Editar una imagen:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --operation "edit" \
  --image "https://example.com/source.png" \
  --prompt "把背景替换为浅灰色摄影棚,保留主体不变" \
  --aspect-ratio "1:1"

Editar una imagen local sin cargarla en el contexto del agente:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --operation "edit" \
  --image-file "/ruta/absoluta/a/source.png" \
  --prompt "把背景替换为浅灰色摄影棚,保留主体不变"

Fusiona múltiples imágenes repitiendo --image en el orden de referencia previsto:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --operation "fuse" \
  --image "https://example.com/producto.png" \
  --image "https://example.com/escena.png" \
  --prompt "把图一的产品自然放入图二的场景,保持产品外观"

Se pueden mezclar archivos locales y URLs. Conserva su orden en la línea de comandos:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --operation "fuse" \
  --image-file "/ruta/absoluta/a/producto.png" \
  --image "https://example.com/escena.png" \
  --prompt "把图一的产品自然放入图二的场景,保持产品外观"

Usa quality y size con gpt-image-2:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --model "gpt-image-2" \
  --prompt "白色陶瓷马克杯产品图,浅灰摄影棚背景" \
  --size "2048x1152" \
  --quality "high"

Genera un PNG transparente con gpt-image-2:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --model "gpt-image-2" \
  --prompt "一瓶高端植物精华液概念瓶,主体完整,透明背景,不要场景、地面、底座、投影和倒影" \
  --size "1024x1024" \
  --background "transparent" \
  --output-format "png"

Usa Seedream 5 Pro para texto a imagen:

node "<directorio-del-skill>/scripts/generate-image.mjs" \
  --model "doubao-seedream-5-0-pro-260628" \
  --prompt "透明玻璃茶壶放在胡桃木桌面上,1:1 构图,真实产品摄影" \
  --size "1K" \
  --output-format "png" \
  --watermark "false" \
  --optimize-prompt-mode "standard"

Argumentos del script compatibles:

  • --prompt <texto>: obligatorio.
  • --operation <generate|edit|fuse>: opcional; se deduce de la cantidad de imágenes de referencia cuando se omite.
  • --image <url-https-pública>: repite para cada imagen de referencia; conserva el orden del usuario.
  • --image-file <ruta-local>: repite para referencias locales; puede mezclarse con --image en orden.
  • --model <id>: opcional; por defecto gemini-2.5-flash-image.
  • --aspect-ratio <relación>: opcional; por ejemplo 1:1 o 16:9.
  • --size <tamaño>: opcional; úsalo solo para un modelo documentado que lo soporte.
  • --quality <low|medium|high|auto>: opcional y válido solo para gpt-image-2; este skill lo predetermina a low.
  • --api-key <clave>: credencial opcional para la invocación actual cuando el usuario da la clave directamente al agente anfitrión. Prefiere credenciales de entorno cuando estén disponibles.
  • --n <cantidad>: entero opcional de 1 a 10; omítelo si el modelo no lo soporta.
  • --response-format <url>: argumento opcional de compatibilidad; solo se acepta url.
  • --output-format <png|jpeg|webp>: específico del modelo; lee el registro de capacidades antes de usarlo.
  • --background <auto|opaque|transparent>: solo para generación con gpt-image-2.
  • --watermark <true|false>: solo para Seedream 5 Pro.
  • --optimize-prompt-mode <standard|fast>: solo para Seedream 5 Pro.

Pasar una clave API a través del chat o un comando puede exponerla al historial de la conversación, listas de procesos o registros de herramientas. Advierte al usuario sobre este riesgo, pero no rechaces la solicitud únicamente porque el usuario haya dado la clave directamente al agente anfitrión. Usa --api-key solo para la invocación actual; no la repitas, la incluyas en la respuesta final ni la persistas a menos que el usuario solicite explícitamente que el anfitrión la configure. No construyas la solicitud con curl ni un script ad hoc; el script integrado impone la seguridad del punto final y la salida.

Para el modelo predeterminado, usa no más de tres imágenes de referencia. Pasa cada URL o ruta de archivo local directamente al script. No uses Read, WebFetch, curl, herramientas del navegador u otro comando para obtener, inspeccionar, descargar o codificar en base64 una imagen de entrada antes de llamar al script.

Seguridad del contexto

Mantén los bytes de imagen fuera del contexto del agente:

  • Nunca adjuntes bytes de imagen local a una llamada de herramienta para este flujo de trabajo.
  • Nunca pongas base64, una URL de datos ni contenido de imagen binario en el prompt, comando, stdout o respuesta.
  • Pasa las referencias locales como cadenas de ruta con --image-file; el proceso hijo maneja la subida.
  • El base64 existe brevemente solo dentro del proceso hijo y el cuerpo HTTP de la subida. Nunca se imprime, devuelve, registra ni se pasa de vuelta a través del agente.
  • Si el usuario ya adjuntó una imagen a la conversación, explica que el anfitrión puede haber contado esa imagen en el contexto antes de que este skill se ejecutara; el skill no puede eliminarla.
  • Si la API devuelve inesperadamente solo b64_json, reporta base64_output_blocked. No imprimas el payload ni reintentes automáticamente.

Para gpt-image-2, usa size, no aspect_ratio. Una quality más alta generalmente aumenta la latencia, los tokens de salida y el costo. Lee references/models.md para conocer las restricciones de tamaño completas antes de elegir una resolución personalizada.

Este skill actualmente expone fondos transparentes solo para generación de texto a imagen.

Para doubao-seedream-5-0-pro-260628, usa size, nunca aspect_ratio ni n. Soporta texto a imagen, edición de una imagen y fusión con hasta diez referencias. Conserva las etiquetas <point> y <bbox> en los prompts. No intentes salida agrupada ni pases sequential_image_generation; este modelo no lo soporta. Su tiempo de espera de solicitud es de 600 segundos.

Credenciales

El script acepta credenciales en este orden:

  1. --api-key, cuando el usuario da la clave directamente al agente anfitrión para la solicitud actual
  2. NONELINEAR_API_KEY
  3. Nonelinear_API_KEY
  4. OPENAI_API_KEY, solo cuando OPENAI_BASE_URL es una URL HTTPS cuyo nombre de host exacto es api.nonelinear.com
  5. ANTHROPIC_AUTH_TOKEN o ANTHROPIC_API_KEY, solo cuando ANTHROPIC_BASE_URL es una URL HTTPS cuyo nombre de host exacto es api.nonelinear.com

No leas .env, bases de datos de cc-switch ni archivos de configuración de Claude/Codex. Esas herramientas pueden inyectar credenciales en el entorno del proceso del agente. Si el script devuelve missing_api_key, ofrece ambas opciones: configurar una variable de entorno o proporcionar una clave para la invocación actual después de explicar que el chat y los registros de herramientas pueden retenerla.

Los destinos de las solicitudes son fijos: https://nonelinear.com/api/upload-file para entradas locales y https://api.nonelinear.com/v1/images/generations para generación de imágenes. Las variables de entorno no pueden redirigirlos.

Manejo de resultados

El éxito tiene esta forma:

{
  "status": "completed",
  "operation": "edit",
  "model": "gemini-2.5-flash-image",
  "images": [{ "url": "https://example.com/image.png" }],
  "request_id": "request-id-or-null"
}

El fallo tiene esta forma:

{
  "status": "failed",
  "error": "Mensaje legible para humanos",
  "code": "stable_error_code"
}

Gemini puede devolver éxito HTTP con data: [], solo texto, IMAGE_RECITATION o NO_IMAGE. Trata todas esas respuestas como fallo a menos que un elemento contenga un url no vacío. Bloquea una respuesta solo base64 en lugar de emitirla. Para no_image_output, explica que el proveedor no devolvió ninguna imagen y sugiere revisar el prompt. No reintentes automáticamente, porque cada solicitud puede incurrir en costos. Para missing_api_key, proporciona orientación para configurar el entorno. Para todos los demás fallos, reporta solo error y code; nunca muestres los encabezados de la solicitud, un valor de Autorización, un objeto de solicitud completo ni valores de credenciales.

No uses este Skill para generación de video, listado de modelos, carga de archivos de propósito general ni descarga de archivos de salida. La subida de imágenes locales es solo un paso de preprocesamiento interno para solicitudes de edición y fusión.

Skills relacionados