Enrutamiento por costo, aprobación antes de gastar, libro contable y el prompt guardado junto a cada archivo.

Una skill es una carpeta de archivos Markdown que funciona como manual operativo: el agente la vuelve a leer en cada uso, así que las reglas escritas una vez se aplican siempre. Esta cubre imágenes y video y, sobre todo, lo que suele salir mal a su alrededor.
Elige la ruta más barata que resuelva la tarea e indica cuál usó. Los precios están en un archivo con fecha, no en una suposición del agente.
Cotiza en dólares y espera el «sí». Una aprobación equivale a una ejecución. Límite mensual acumulado, porque un control por ejecución deja pasar treinta gastos pequeños.
Biblioteca plana, un JSON junto a cada archivo con el prompt, el modelo, los parámetros y el costo. Incluso tres meses después puedes saber qué generó esa imagen.
El flujo no cambia entre las dos versiones. Lo que cambia es a dónde apunta el paso 1.
Elige el modelo y el proveedor, y lee la receta de ese modelo antes de llamar: endpoint, autenticación, formato del cuerpo y dónde aparece el archivo en la respuesta.
El logotipo, el rostro y el estilo vienen de archivos en refs/. Describir un logo con palabras siempre devuelve un logo incorrecto — si el archivo no existe, la skill se detiene y lo solicita.
El modelo de video devuelve un id de job; la skill consulta el estado y lo descarga de inmediato, porque la URL del resultado vence en unas horas. El id queda guardado para reanudar sin volver a pagar.
Sin subcarpetas. Parece desorden, pero es todo lo contrario: cualquier galería, script o búsqueda lee toda la biblioteca sin configuración.
Archivo JSON con el mismo nombre base junto al archivo, más una línea en el libro de cuentas. El cargo se registra cuando el proveedor acepta el job, no cuando llega el archivo.
Un modelo nuevo es una receta Markdown de diez minutos. Nada más cambia: eso es lo que hace que el sistema sobreviva al cambio mensual de modelos.
En una máquina que ejecuta un modelo local, la ruta más barata es gratuita y el control de costos casi nunca se activa. Sin eso, cada generación tiene un costo y el control se vuelve el corazón de la skill.
| generate-local | generate-api | |
|---|---|---|
| Para | máquina con el modelo ejecutándose en ella | cualquier máquina, todo a través de la API |
| Ruta más económica | local, $0 (flux2-klein en la GPU) | modelo económico de pago, ~$0,02 |
| Modelo de cobro | hardware ya pagado, costo marginal cero | pago por uso, por llamada |
| Ruta de pago | excepción — solo dos razones | es el único camino |
| Imagen con texto legible | ruta de pago (el modelo local se equivoca con las letras) | modelo de primera categoría, de pago |
| Video predeterminado | renderizado 2.5D local, $0 | generativo, $0,20–0,35/s |
| Control de costos | existe, casi nunca se activa | se activa en cada ejecución |
| Borrador económico / acabado costoso | no tiene sentido — es el mismo modelo | es la regla que más ahorra |
| Depende de | servidor de imágenes local en funcionamiento | FAL_KEY + KIE_API_KEY en un .env |
Elige una de las dos versiones por workspace — las dos declaran name: generate.
Los scripts usan solo la biblioteca estándar. No hay dependencias que instalar.
# revisa python3 --version
La skill verifica que todo funcione antes de generar y, si no es así, falla indicando cómo ponerlo en marcha — en vez de recurrir en silencio a una ruta paga.
# debe responder con estado ok curl localhost:8000/health
Los agregadores ofrecen decenas de modelos con una sola clave y una sola factura. Agrega .env al .gitignore el primer día.
# .env FAL_KEY=sua_chave KIE_API_KEY=sua_chave
Comandos reales. La versión local genera gratis; la versión API nunca llama a la API sin una aprobación explícita en el comando.
Las dos versiones están en carpetas separadas, cada una con un README.
git clone https://github.com/inematds/generator-skill cd generator-skill
Una por workspace. Si instalas las dos con el mismo nombre, entran en conflicto.
# máquina con modelo local en ejecución cp -r generate-local ~/.claude/skills/generate # máquina sin modelo local — todo por API paga cp -r generate-api <workspace>/.claude/skills/generate
Elige la carpeta de la biblioteca y el límite mensual de aviso. Consejo sobre el límite: carga poco crédito en el primer pago — el proveedor no puede gastar lo que no tiene.
# _config.json, creado en la primera ejecución { "pasta": "~/generations", "teto_mensal_usd": 50 }
Costo cero, pocos segundos. Sin costo marginal, el borrador y el resultado final usan el mismo modelo: cambia la semilla cuanto quieras.
python3 scripts/gerar-local.py \ --prompt "capa de curso, formas geométricas, fundo escuro" \ --projeto capa-curso --desc hero -n 3 # OK ...capa-curso_hero_1785563764.png (6.2s, $0)
--estimar muestra la cotización y termina sin gastar. Es lo que se le muestra a la persona antes de pedir el «sí».
python3 scripts/gerar.py --rota fal --model <id> \ --prompt "..." --projeto capa --desc hero \ --custo 0.04 --estimar # COTIZACIÓN costo $0.04 · mes $0.00 de $50 -> quedaría $0.04 # No se gastó nada.
Sin --confirmar el script se niega a llamar a la API. La autorización queda en el comando, no en la memoria de quien lo ejecuta.
python3 scripts/gerar.py ... --confirmar # video asíncrono: envía, consulta el estado, descarga y guarda el task id python3 scripts/gerar.py ... --custo 1.75 --async --confirmar
El cargo se registra cuando el proveedor acepta el job. Si la generación falla después de eso, el dinero ya se descontó y queda marcado como pendiente, en lugar de desaparecer.
python3 scripts/registrar.py --saldo # 2 ejecución(es) cobradas sin archivo guardado: # ...1f5462ee incompleto $0.40 # ...fb8bb889 falló $2.00 task T3 # cuando llegue la factura, corrige el valor python3 scripts/registrar.py --corrigir <run_id> --cost 1.9
Copia la plantilla de receta, complétala con la documentación del proveedor y agrega la línea a la tabla de precios con la fecha. Diez minutos y nada más cambia.
cp models/_template.md models/meu-modelo.md # completa: model id, método (sync/async), endpoint, auth, # cuerpo de la solicitud y dónde aparece el archivo en la respuesta
El flujo completo y la decisión de ruta que está detrás de la separación en dos versiones.


Lo que se verificó mediante una ejecución real está marcado como tal; el resto aparece marcado como no verificado en las propias recetas.