codex-petкастомный питомец Codex

agentspace-so/runcomfy-agent-skills

Создаёт персонализированного Codex Pet без подписки Codex Pro или доступа к $imagegen. Чистая альтернатива через RunComfy CLI.

Установка

npx -y skills add agentspace-so/runcomfy-agent-skills --skill codex-pet --agent claude-code

Codex Pet — Pro Pack на RunComfy

Генератор Codex Pet на RunComfy. Превратите одно исходное изображение в кастомного Codex Pet — pet.json + spritesheet.webp — поместите в ${CODEX_HOME:-$HOME/.codex}/pets/<name>/, и Codex подхватит его рядом с 8 встроенными питомцами.

runcomfy.com · Документация

npx skills add agentspace-so/runcomfy-agent-skills --skill codex-pet -g

Что такое Codex Pet

OpenAI Codex Pets (выпущены май 2026) — пиксельные анимированные компаньоны, плавающие на рабочем столе пока Codex кодирует. Реагируют на взаимодействие мышью и статус Codex (чешут голову при обдумывании, показывают речевой пузырь при завершении задачи). Codex поставляется с 8 встроенными питомцами и поддерживает кастомных.

Каждая папка питомца содержит ровно два файла:

  • pet.json — манифест с id, displayName, description, spritesheetPath
  • spritesheet.webp — атлас спрайтов 1536×1872, 8 столбцов × 9 строк по 192×208 пикселей, прозрачный фон

Зачем этот скилл вместо официального hatch-pet

Официальный hatch-pet требует внутренней системы Codex $imagegen (требует Codex Pro). Этот скилл — альтернатива через RunComfy CLI: только RUNCOMFY_TOKEN + runcomfy и magick. Выходной артефакт идентичен — тот же pet.json, тот же атлас 1536×1872, те же 9 строк анимации.

Выбирайте этот скилл когда:

  • Нет Codex Pro / $imagegen
  • Нужна генерация через RunComfy Model API
  • Нужна пакетная генерация из папки исходных изображений
  • Участвуете в конкурсе OpenAI Codex Pet с другой моделью

Строки анимации

СтрокаСостояниеКадрыПоведение питомца
0idle6спокойное дыхание/моргание; первый кадр при reduced-motion
1running-right8движение вправо
2running-left8зеркальное движение влево
3waving4приветствие / жест внимания
4jumping5замах, подъём, пик, спуск, приземление
5failed8реакция ошибки / грусть
6waiting6терпеливый вариант idle
7running6активная работа / цикл in-progress
8review6сосредоточенность / обдумывание

Визуальный стиль

  • Утрированные чиби-пропорции: голова занимает ~60% высоты фигуры; тело и ноги короткие и маленькие
  • Пиксель-арт, массивный силуэт, жирный тёмный контур 1–2 px
  • Ограниченная палитра, плоская заливка, выразительное лицо, крошечные конечности
  • Прозрачный фон

Избегайте: следов движения, теней, свечения, блёсток, текста, белых/чёрных фонов.

Требования

  1. RunComfy CLInpm i -g @runcomfy/cli
  2. Аккаунт RunComfyruncomfy login. Для CI: RUNCOMFY_TOKEN=<token>
  3. ImageMagickbrew install imagemagick (macOS) или apt-get install imagemagick (Linux)
  4. URL исходного изображения — публично доступный HTTPS, JPEG/PNG/WebP

Пайплайн (1 вызов GPT Image 2, ~2 мин)

  1. Канонический Codex Pet — один вызов runcomfy run openai/gpt-image-2/edit с чиби-позой на пурпурном chroma-key фоне
  2. Нормализация ячейки — пурпурный → alpha 0, обрезка, вписать в 192×208
  3. 9 строк, программно — ImageMagick micro-transforms (смещение, зеркало, поворот) канонической ячейки
  4. Атлас — 9 строк сложить вертикально в 1536×1872
  5. WebP — конвертировать PNG в WebP
  6. Манифест + установка — записать pet.json, скопировать оба файла в ~/.codex/pets/<name>/

Шаг 1: Генерация канонического Codex Pet

PET_NAME="my-pet"
SOURCE_URL="https://.../source.png"
RUN_DIR="./codex-pet-run/${PET_NAME}"
CHROMA="#FF00FF"
mkdir -p "${RUN_DIR}"

runcomfy run openai/gpt-image-2/edit \
  --input "{
    \"prompt\": \"Generate one canonical Codex digital pet sprite based on the input image. EXAGGERATED chibi proportions: the head occupies about 60 percent of the total figure height; body and legs are tiny stubby and short. The whole pet figure must fit within a near-square bounding box. Pixel-art-adjacent low-resolution mascot, chunky silhouette, thick dark 1-2 px outline, limited palette, flat cel shading, simple expressive face. Centered. Background: solid flat magenta ${CHROMA} chroma-key. The pet must not use the chroma-key color. No gradients, no shadows, no scenery, no text.\",
    \"images\": [\"${SOURCE_URL}\"],
    \"size\": \"1024*1024\"
  }" \
  --output-dir "${RUN_DIR}/decoded/"

BASE=$(ls "${RUN_DIR}/decoded/"*.png | head -1)

Шаг 2: Нормализация в ячейку 192×208

magick "${BASE}" \
  -fuzz 18% -transparent "${CHROMA}" \
  -alpha set -trim +repage \
  -resize 192x208 \
  -gravity center -background none -extent 192x208 \
  "${RUN_DIR}/cell.png"

Шаг 3: Построение 9 строк программно

SRC="${RUN_DIR}/cell.png"
mkdir -p "${RUN_DIR}/cells"

shift_cell() { magick "$SRC" -background none -roll "+${1}+${2}" -alpha set "$3"; }
rotate_cell() { magick "$SRC" -background none -distort SRT "$1" -alpha set "$2"; }
make_blink() { magick "$SRC" -region 80x6+56+82 -fill "#f4e6d8" -colorize 70% -blur 0x0.5 +region "$1"; }
blank_cell()  { magick -size 192x208 xc:none -alpha set "PNG32:$1"; }

build_row() {
  local row=$1; shift; local i=0
  for spec in "$@"; do
    local out="${RUN_DIR}/cells/row${row}-frame${i}.png"
    case "$spec" in
      base)      cp "$SRC" "$out" ;;
      blink)     make_blink "$out" ;;
      shift:*)   IFS=':' read -r _ x y <<< "$spec"; shift_cell "$x" "$y" "$out" ;;
      rotate:*)  IFS=':' read -r _ ang <<< "$spec"; rotate_cell "$ang" "$out" ;;
    esac
    i=$((i+1))
  done
  while [ "$i" -lt 8 ]; do blank_cell "${RUN_DIR}/cells/row${row}-frame${i}.png"; i=$((i+1)); done
  magick "${RUN_DIR}/cells/row${row}-frame"*.png +append -alpha set "${RUN_DIR}/cells/row${row}-strip.png"
}

build_row 0 base base blink base base blink
build_row 1 base shift:1:0 shift:2:-1 shift:1:0 base shift:-1:0 shift:-2:-1 shift:-1:0
build_row 3 base shift:0:-1 base shift:0:-1
build_row 4 shift:0:2 base shift:0:-8 shift:0:-2 base
build_row 5 base shift:0:1 rotate:1 shift:0:1 shift:0:2 shift:0:1 rotate:-1 base
build_row 6 base base shift:0:-1 base base shift:0:1
build_row 7 base shift:0:-1 base shift:0:-1 base shift:0:-1
build_row 8 base rotate:-2 base rotate:2 base base
magick "${RUN_DIR}/cells/row1-strip.png" -flop -alpha set "${RUN_DIR}/cells/row2-strip.png"

Шаги 4–6: Атлас, WebP, манифест, установка

# Атлас
magick "${RUN_DIR}/cells/row"{0..8}"-strip.png" -append -alpha set "${RUN_DIR}/spritesheet.png"
magick "${RUN_DIR}/spritesheet.png" "${RUN_DIR}/spritesheet.webp"

# Манифест
cat > "${RUN_DIR}/pet.json" <<EOF
{"id":"${PET_NAME}","displayName":"${PET_NAME}","description":"...","spritesheetPath":"spritesheet.webp"}
EOF

# Установка
DEST="${CODEX_HOME:-$HOME/.codex}/pets/${PET_NAME}"
mkdir -p "${DEST}"
cp "${RUN_DIR}/pet.json" "${RUN_DIR}/spritesheet.webp" "${DEST}/"
echo "Codex Pet установлен: ${DEST}"

Советы по промптингу

  • Сразу фиксируйте чиби-пропорции: «голова ~60% высоты фигуры» — ключевое отличие от вытянутого персонажа
  • Явно требуйте магентовый #FF00FF chroma-key: GPT Image 2 выводит только RGB без альфа-канала
  • Запрещайте chroma-key цвет в самом питомце
  • Фиксируйте стиль: «pixel-art-adjacent, chunky silhouette, 1-2 px outline, limited palette, flat cel shading»
  • Запрещайте неправильные стили: «No polished illustration, no painterly render, no anime key art, no 3D render»

Настройка микро-анимации

Для усиления анимации увеличивайте дельты (максимум ≤4 px или ≤4°):

  • Более заметное покачивание в idle: shift:0:-2 вместо shift:0:-1
  • Быстрый цикл бега: увеличьте горизонтальные смещения строки 1
  • Более высокий прыжок: shift:0:-12 вместо shift:0:-8
  • Более заметный наклон головы: rotate:-4 / rotate:4 вместо ±2

Ограничения

  • Одна каноническая поза — анимация через ImageMagick, не multi-frame генерация
  • GPT Image 2 не выводит альфа-канал — магентовый chroma-key обязателен
  • Возможен дрейф идентификации при сильной стилизации исходника
  • Без звука — Codex Pets только визуальные

Коды выхода

КодЗначение
0успех
64неверные аргументы CLI
65неверный JSON / несоответствие схемы
69ошибка сервера (5xx)
75таймаут / 429
77не авторизован

Из того же репозитория

video-editредактирование видео через RunComfy
agentspace-so/runcomfy-agent-skills
Маршрутизирует правки видео между тремя моделями RunComfy: Wan 2.7 для ресайла, HappyHorse для стилизации, Seedance для lip-sync. Выбор модели по задаче.
11177.5k установок
image-editредактирование изображений RunComfy
agentspace-so/runcomfy-agent-skills
Маршрутизирует правки изображений между четырьмя моделями RunComfy: пакетные правки, замена фона, сохранение идентичности или точные правки через Flux Kontext.
11177.1k установок
image-to-videoанимация изображений в видео
agentspace-so/runcomfy-agent-skills
Маршрутизатор image-to-video на RunComfy: выбирает модель по намерению пользователя — анимация персонажей, сцен или реалистичное движение.
11177k установок
flux-kontextточное редактирование фото Flux Kontext
agentspace-so/runcomfy-agent-skills
Оборачивает Flux 1 Kontext Pro от Black Forest Labs через RunComfy API для локального редактирования изображений с высокой точностью сохранения деталей.
11176.8k установок
happyhorse-1-0генерация видео HappyHorse
agentspace-so/runcomfy-agent-skills
Оборачивает HappyHorse 1.0 — текст-в-видео модель, лидирующую на Artificial Analysis Video Benchmark — через RunComfy CLI для генерации высококачественного видео.
11176.7k установок
nano-banana-2генерация фото Gemini Flash
agentspace-so/runcomfy-agent-skills
Обёртка Google Gemini 3.1 Flash Image Preview через inference.sh CLI: до 4 изображений за раз, создание и редактирование с паттернами промптов для стабильных результатов.
11176.5k установок