creative
Создание креативов (изображения, видео, аудио) через агрегаторы с оплатой по факту — kie.ai, fal.ai, wavespeed.ai. Пайплайн бриф → план → смета → генерация → галерея с двумя точками утверждения и контролем бюджета. Используй, когда пользователь просит сгенерировать картинки, обложки, иллюстрации, видео, музыку или озвучку, а также по командам /creative, /creative settings, /creative spend.
How do I install this agent skill?
npx skills add https://github.com/extreez/gcv-creative --skill creativeIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is a professional pipeline for creative asset generation that emphasizes financial safety and user control. It implements mandatory human-in-the-loop approvals for both generated prompts and budget estimates, preventing unauthorized spending or unintended outputs. All external tool interactions are funneled through specific vendor-owned CLI tools rather than direct API calls, following security best practices.
- Socketwarn
1 alert: gptAnomaly
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
/creative
Пайплайн создания креативов. Тратит реальные деньги, поэтому построен вокруг двух точек утверждения и предохранителей.
Язык
Провайдерские CLI (gcv-kie и остальные) говорят по-английски: справка, тексты
ошибок, заголовки таблиц. Это интерфейс инструмента, а не язык общения.
С пользователем говори на языке из settings.output.language, а если он не
задан — на языке, которым пользователь написал запрос. План, смета, отчёт,
вопросы в брифе — всё это его язык.
Что не переводится никогда, даже в русском отчёте:
| Приводится как есть | Пример |
|---|---|
| Слаги и названия моделей | google/nano-banana, bytedance/seedance-2-5 |
| Имена и значения полей JSON | priceBasis: "exact", known: false |
| Команды и флаги | gcv-kie generate --max-cost 20 |
| Коды ошибок | BUDGET_EXCEEDED, VALIDATION |
| Термины API | taskId, credits, aspect_ratio |
| Имена файлов и пути | run.json, ~/.gcv/output |
Переводится смысл: что произошло, сколько стоит, что делать дальше. Английский вывод CLI не пересказывай дословно и не вставляй в ответ целиком.
Промпты для моделей пишутся по-английски независимо от языка диалога — модели генерации на нём работают заметно стабильнее. Пользователь описывает задачу на своём языке, ты переводишь её в английский промпт и показываешь оба в плане (шаг 5): исходную формулировку и итоговый промпт. Скрытая подмена промпта недопустима, показанная — норма.
Команды
| Команда | Что делает |
|---|---|
/creative <запрос> | Основной пайплайн |
/creative settings | Настройки: что спрашивать, лимиты, политики |
/creative onboarding | Первичная настройка: ключи, профиль, каталоги |
/creative profile | Редактировать профиль предпочтений |
/creative catalog | Обновить модели и цены у всех провайдеров |
/creative estimate <запрос> | Только смета, без генерации |
/creative spend [период] | Отчёт по тратам |
/creative gallery [ran] | Пересобрать HTML-галерею |
/creative retry <run-id> | Повторить неудавшиеся задачи рана |
/creative doctor | Проверка всех провайдеров |
Без аргументов /creative — короткая справка и статус (провайдеры, балансы,
свежесть каталога).
Онбординг
/creative onboarding — и автоматически при самом первом запуске /creative,
если ~/.creative/settings.json ещё нет. Идемпотентно: существующие файлы не
трогать, создавать только отсутствующее.
-
Нет
~/.creative/settings.json→ скопировать из assets/settings.default.json -
Нет
~/.creative/profile.md→ скопировать из assets/profile.template.md -
Создать пустые директории под слои промптинга, даже если пользователь пока ничего туда не положит — они уже должны существовать, а не появляться только при первом файле:
mkdir -p ~/.creative/prompts/modelsЭто создаёт и
~/.creative/prompts/, и~/.creative/prompts/models/— ровно то, что ждутsettings.prompting.modalityDir/modelDirпо умолчанию (см. references/prompting.md). Пустая директория не мешает: отсутствующий слой пропускается молча -
gcv-kie doctor --json(или у другого настроенного провайдера) — есть ли ключ и наполнен ли каталог. Не настроено — сказать явно, что делать (npm install -g gcv-kie, затемgcv-kie init), не пытаться настраивать ключ самостоятельно
Итог онбординга — короткий статус: что создано, что уже было, чего не хватает (ключ, каталог). Не переспрашивать про способ подключения своих материалов промптинга здесь — это отдельная тема, см. «Свои источники сверх конвенции» в references/prompting.md.
Пайплайн
0. Каталог фон: кэш моделей и цен. Не шаг, не спрашивает
1. Бриф что нужно. Читает профиль, спрашивает ТОЛЬКО недостающее
2. Промпты слои промпт-инженерии пользователя
3. Роутинг (провайдер, модель) под каждую задачу
4. Preflight лимиты, ключи, баланс, референсы — бесплатно
5. ПЛАН таблица без цен ⛔ УТВЕРЖДЕНИЕ 1
6. СМЕТА цены, % от баланса ⛔ УТВЕРЖДЕНИЕ 2
7. Ран генерация, прогресс в чат
8. Отчёт таблица + сохранение + галерея
Шаги 1-6 денег не стоят. Единственное место траты — шаг 7.
Шаг 0. Каталог
Перед планированием убедись, что каталог не пустой и не протух:
gcv-kie models --json
Если staleness.seeded: true или isStale: true — обнови:
gcv-kie sync
Занимает около минуты, тянет цены и схемы моделей машинно с сервиса. Это фоновое действие, пользователя спрашивать не нужно.
Без цен в каталоге смета невозможна — тогда честно скажи об этом на шаге 6, а не подставляй приблизительные числа.
Подобрать модель под задачу и бюджет:
gcv-kie pick image --quality draft --budget 100 --json
Шаг 1. Бриф
Читай профиль пользователя: ~/.creative/profile.md (или .creative/profile.md
в проекте — проектный приоритетнее). Формат — assets/profile.template.md.
Из профиля берётся всё, что там есть. Спрашивай только то, чего нет ни в профиле, ни в запросе. Что нужно собрать:
| Поле | Обязательно | Откуда |
|---|---|---|
| Что генерируем | да | запрос |
| Модальность (image/video/audio) | да | запрос |
| Количество | да | запрос или профиль |
Качество: draft / good / best | да | запрос → профиль → default good |
| Бюджет | настраивается | запрос → профиль → settings |
| Предпочитаемые модели | нет | профиль |
| Формат, соотношение сторон | нет | запрос → профиль |
| Референсы | нет | запрос |
Правила спрашивания в references/brief.md. Коротко: один
вопрос со всеми недостающими полями сразу, не по одному. Если settings.brief.askBudget: false — про бюджет не спрашивать, но если пользователь явно просит уточнить
бюджет, спросить всё равно: явная просьба всегда побеждает настройку.
Шаг 2. Промпт-слои
Промпт собирается наложением слоёв в фиксированном порядке:
глобальные правила пользователя (~/.creative/prompts/global.md)
→ правила модальности (~/.creative/prompts/image.md)
→ правила модели (~/.creative/prompts/models/<model>.md)
→ сам запрос
Слой, которого нет, пропускается молча. Порядок и пути настраиваемые:
пользователь может переставить settings.prompting.* на свою директорию, дать
в profile.md указатель на произвольную директорию/файл без переименования, или
вовсе описать свою иерархию вместо этой — см. «Свои источники сверх конвенции»
в references/prompting.md.
Шаг 3. Роутинг
Политика из settings.routing.policy:
| Политика | Поведение |
|---|---|
sticky | Один провайдер по порядку из settings.routing.order, следующий — только если предыдущий не отвечает. Экономит токены и время |
cheapest | Обойти каталоги всех провайдеров, выбрать минимальную цену под требуемое качество |
best | Максимальное качество в рамках бюджета |
manual | Пользователь называет провайдера и модель |
Default — sticky. Логика выбора модели под качество — в
references/routing.md.
Шаг 4. Preflight
Бесплатные проверки, до любых трат:
gcv-kie generate --model <M> --prompt "..." --count N --dry-run --json
--dry-run прогоняет валидацию лимитов и считает смету, не обращаясь к платному
API. Провал — exit 11, в error.details причина. Чини план и прогоняй снова.
Проверить надо: наличие ключа у каждого задействованного провайдера, лимит референсов, соотношение сторон, длительность, длину промпта, достаточность баланса на всю пачку.
Шаг 5. ПЛАН — утверждение 1
Таблица без цен. Здесь утверждается творческая часть.
№ Что Провайдер Модель Кол-во Промпт (кратко) Ограничения
1 Обложка, гориз. kie google/nano-banana 3 рыжий кот в скафандре… 16:9, до 5 реф.
2 Аватар, квадрат kie z-image 2 тот же кот, портрет… 1:1
Под таблицей — полные промпты после наложения слоёв, чтобы их можно было поправить до генерации.
Спроси: утвердить, поправить или отменить. Дальше не идти без ответа.
Если settings.approvals.plan: false — шаг пропускается, план показывается
вместе со сметой.
Шаг 6. СМЕТА — утверждение 2
Та же таблица плюс деньги:
№ Модель Кол-во Цена/шт Итого
1 google/nano-banana 3 40 кр. 120 кр.
2 z-image 2 15 кр. 30 кр.
ИТОГО: 150 кр. ≈ $0.06
Списание по сервисам:
kie.ai 150 кр. из 4200 → 3.6% баланса
Обязательно показывать: сумму по каждому сервису, остаток, процент от баланса.
Цена-диапазон — сначала пытаться свести к точной
У части моделей цена зависит от параметров запроса (разрешение, наличие
референса на входе). Прежде чем показать диапазон в смете, вызови estimate с
теми же --input/--ref, что реально пойдут в генерацию — план уже
содержит промпты и параметры к этому моменту, так что это не лишний шаг, а
уточнение уже собранного плана.
Если priceBasis в ответе — "exact", показывай одно число, без диапазона
и без пометок:
№ Модель Кол-во Цена/шт Итого
1 qwen3/pro-text-to-image 4 12 кр. 48 кр. ≈ $0.24
Если резолвить не удалось, но в ответе есть missingFields — значит один
конкретный параметр решил бы вопрос. Не показывай диапазон молча — предложи
пользователю значение прямо в диалоге плана («укажи разрешение: 1K или 2K») или
подставь разумное по умолчанию и покажи, что смета зависит от этого выбора.
Только если модель в принципе не резолвится (нет missingFields, isRange
остался true) — показывай диапазон:
№ Модель Кол-во Цена/шт Итого
1 seedream/5-pro-text-to-image 4 7–14 кр. 28–56 кр. ≈ $0.14–$0.28
ИТОГО ДО: 56 кр. ≈ $0.28
Строка «ИТОГО ДО» обязательна для диапазона: пользователь утверждает
верхнюю границу, по ней же выставляется --max-cost. Показывать только
нижнюю — значит занизить смету, а это ровно та ошибка, ради которой весь этот
пайплайн и строится.
Если у модели есть inputSurchargeCredits — доплата за референсы уже включена в
смету; упомяни её отдельной строкой, чтобы число не выглядело странным.
Если цена хотя бы одной модели неизвестна (known: false) — так и скажи: «смету
по модели X построить нельзя, цены нет в каталоге». Не подставляй оценку по
памяти. Варианты для пользователя: обновить каталог (gcv-kie sync), заменить
модель или явно согласиться на генерацию с неизвестной стоимостью.
Если смета превышает бюджет из брифа — не запускать. Предложить: урезать количество, взять модель дешевле, поднять бюджет.
Генерация только после явного «да». Это утверждение отменить настройками нельзя.
Шаг 7. Ран
Сгенерируй runId вида run_20260811_143000 и передавай его во все вызовы
(--run-id) — по нему собирается отчёт и работает /creative retry.
gcv-kie generate --model google/nano-banana --prompt "..." --count 3 --out "<runDir>/files" --wait --max-cost 200 --run-id run_20260811_143000 --json
--max-cost ставь всегда, равным утверждённой смете по этой строке плюс 10% на
округление. Это защита от расхождения каталога с реальной ценой.
Сообщай прогресс в чат по мере готовности, не молчи до конца.
При сбое действуй по settings.execution.onFailure (retry → skip по
умолчанию). Правила в references/routing.md.
Молчаливое сокращение объёма запрещено. Если из 10 картинок вышло 7 — в отчёте назови 3 несделанные и причину каждой.
Шаг 8. Отчёт и сохранение
Структура рана:
<vault>/creatives/2026-08-11/run_20260811_143000/
files/ результаты
run.json манифест: бриф, план, промпты, модели, смета, факт
index.html автономная галерея
prompts.md промпты в читаемом виде
<vault> — из settings.storage.vault, по умолчанию папка проекта.
Собери run.json по схеме references/run-schema.md,
затем построй галерею — детерминированным скриптом, не руками:
node <путь-к-скиллу>/scripts/gallery.mjs <runDir>
В чат выведи таблицу: результат, модель, смета, факт, промпт. Расхождение сметы и факта показывай явно.
Настройки
~/.creative/settings.json, дефолты — assets/settings.default.json,
описание каждого ключа — references/settings.md.
Ключевой принцип: любой пункт настраивается заранее, но явная просьба пользователя в запросе всегда побеждает настройку. Отключённый вопрос про бюджет включается обратно фразой «спроси про бюджет».
/creative settings — показать текущие значения и дать поправить. Не вываливай
весь JSON: покажи человеческую таблицу и спроси, что менять.
Границы
- Не вызывай API провайдеров напрямую — только через
gcv-{provider}CLI. Иначе не пишется журнал трат и не работают предохранители - Не запускай генерацию без утверждения сметы
- Не выдумывай цены и слаги моделей
- Не повторяй упавшую задачу молча — каждая попытка платная
- Провайдер, для которого нет CLI, не используется. Создать его — скилл
gcv
Если ничего не установлено
/creative работает сразу с настройками по умолчанию, но нужен хотя бы один
провайдер. Проверка:
gcv-kie doctor --json
Нет CLI — скажи, что поставить:
npm install -g gcv-kie
gcv-kie init
Нет ключа — doctor покажет, куда его положить. Не обходи отсутствие
инструмента прямыми HTTP-запросами: мимо CLI не пишется журнал трат и не
работают предохранители.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/extreez/gcv-creative/creative">View creative on skillZs</a>