skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
extreez/gcv-creative1 installs

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 creative
view source ↗

Is 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
Имена и значения полей JSONpriceBasis: "exact", known: false
Команды и флагиgcv-kie generate --max-cost 20
Коды ошибокBUDGET_EXCEEDED, VALIDATION
Термины APItaskId, 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 ещё нет. Идемпотентно: существующие файлы не трогать, создавать только отсутствующее.

  1. Нет ~/.creative/settings.json → скопировать из assets/settings.default.json

  2. Нет ~/.creative/profile.md → скопировать из assets/profile.template.md

  3. Создать пустые директории под слои промптинга, даже если пользователь пока ничего туда не положит — они уже должны существовать, а не появляться только при первом файле:

    mkdir -p ~/.creative/prompts/models
    

    Это создаёт и ~/.creative/prompts/, и ~/.creative/prompts/models/ — ровно то, что ждут settings.prompting.modalityDir/modelDir по умолчанию (см. references/prompting.md). Пустая директория не мешает: отсутствующий слой пропускается молча

  4. 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 (retryskip по умолчанию). Правила в 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 не пишется журнал трат и не работают предохранители.

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>