AI SummaryCreate a Codex-compatible animated pet from a concept, brand cue, company/prospect name, one or more reference images, or any combination of those inputs. This workflow keeps the deterministic hatch-pet pipeline for atlas geometry, validation, visual QA, and packaging, while using concise state-spec
Install
Copy this and paste it into Claude Code, Cursor, or any AI assistant:
I want to install the "hatch-pet" skill in my project. Please run this command in my terminal: # Install skill into your project (14 files) mkdir -p .claude/skills/hatch-pet && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/SKILL.md "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/SKILL.md" && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/LICENSE.txt "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/LICENSE.txt" && mkdir -p .claude/skills/hatch-pet/agents && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/agents/openai.yaml "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/agents/openai.yaml" && mkdir -p .claude/skills/hatch-pet/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/references/animation-rows.md "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/references/animation-rows.md" && mkdir -p .claude/skills/hatch-pet/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/references/codex-pet-contract.md "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/references/codex-pet-contract.md" && mkdir -p .claude/skills/hatch-pet/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/references/qa-rubric.md "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/references/qa-rubric.md" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/compose_atlas.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/compose_atlas.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/derive_running_left_from_running_right.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/derive_running_left_from_running_right.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/extract_strip_frames.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/extract_strip_frames.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/inspect_frames.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/inspect_frames.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/make_contact_sheet.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/make_contact_sheet.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/prepare_pet_run.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/prepare_pet_run.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/render_animation_previews.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/render_animation_previews.py" && mkdir -p .claude/skills/hatch-pet/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/hatch-pet/scripts/validate_atlas.py "https://raw.githubusercontent.com/openai/skills/main/skills/.curated/hatch-pet/scripts/validate_atlas.py" Then restart Claude Code (or reload the window in Cursor) so the skill is picked up.
Description
Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.
Overview
Create a Codex-compatible animated pet from a concept, brand cue, company/prospect name, one or more reference images, or any combination of those inputs. This workflow keeps the deterministic hatch-pet pipeline for atlas geometry, validation, visual QA, and packaging, while using concise state-specific prompts and allowing any pet-safe visual style. User-facing inputs are optional. If the user omits a pet name, infer one from the concept, brand, company, or reference filenames; if that is not possible, choose a short friendly name. If the user omits a description, infer one from the concept or references. If the user omits reference images, generate the base pet from text first, then use that base as the canonical reference for every animation row.
Generation Delegation
Use $imagegen for all normal visual generation. Before generating base art, row strips, or repair rows, load and follow the installed image generation skill: `text ${CODEX_HOME:-$HOME/.codex}/skills/.system/imagegen/SKILL.md ` Do not call the Image API, image CLI, or any other image-generation path directly. Let $imagegen choose its own built-in-first path and fallback rules. If $imagegen says a fallback requires confirmation, ask the user before continuing. When invoking $imagegen, pass the generated pet prompt as the authoritative visual spec. Pet prompts should stay concise, state-specific, sprite-production oriented, and grounded in the listed input images. Keep longer policy and QA rules in this skill and the deterministic review scripts rather than expanding them into every image prompt. Do not wrap prompts in the generic $imagegen shared prompt schema. Use this skill's scripts for deterministic image work only: preparing layout guides and prompts, mirroring approved running-left, extracting frames, validating rows, composing the final atlas, and creating contact-sheet plus motion-preview QA media. Parent-owned shell/jq steps handle manifest updates, packaging, and cleanup.
Storage Controls
The built-in $imagegen path stores generated PNG bytes in the rollout that invokes it, even when it also writes a file under ${CODEX_HOME:-$HOME/.codex}/generated_images. Deleting files later reduces filesystem use, but it does not shrink an already-written rollout. Keep image generation isolated and bounded: • Use one lightweight generation worker per visual job. Do not batch multiple base/row jobs into the same worker. • Workers must return only selected_source=... and qa_note=...; they must not include Markdown image previews, base64, or extra visual attachments in their final response. • The parent must not open every generated PNG visually. Use worker QA for each job and inspect only the final contact sheet. • After copying the selected generated output into decoded/, remove the selected original from ${CODEX_HOME:-$HOME/.codex}/generated_images when it lives there, then remove its now-empty generation directory if possible. • For storage-sensitive full runs, ask the user whether to use the $imagegen CLI fallback when available. That path requires local API credentials and explicit user confirmation, but it can avoid built-in image payloads being embedded in rollout events.
Brand Discovery
If the user provides a brand, company, product, or prospect name rather than a concrete avatar description or reference image, run a lightweight discovery subagent before preparing the pet run. The discovery worker must use web search and prefer official sources such as the brand site, product pages, docs, about pages, press pages, or brand pages. Use reputable secondary sources only when official pages are too thin. Keep the search narrow: enough to extract visual and personality cues, not a market-research brief. Skip discovery when the user already provides a concrete mascot/avatar description or reference images, unless the user explicitly asks for brand research. Discovery worker responsibilities: • search the web for 2-4 relevant sources, preferring official pages • write an adaptive markdown brief rather than a rigid field dump • cover identity/category, audience/use context, visual system, personality/tone, product/domain motifs, mascot translation cues, avoidances, and evidence/confidence • mark mascot guidance that is inferred from sources as inference • avoid copying logos, readable marks, UI screenshots, slogans, or text • end with a compact Generation handoff section containing only brand_name, brand_brief, avatar_seed, avoid, and brand_sources • do not generate images, prepare run folders, or edit unrelated files Use this discovery worker prompt: `text Research a brand for hatch-pet mascot creation. Brand/product/prospect: <brand name> User context: <short user request> Output file: <absolute path to brand-discovery.md> Use web search. Prefer official brand, product, docs, about, press, or brand pages. Use reputable secondary sources only if official sources are too thin. Write an adaptive markdown brief to the output file. Headings may flex by brand, but the brief must cover: • identity/category: canonical name, product type, what it does • audience/use context: who it serves and where it appears • visual system: palette, shapes, line quality, materials, typography feel, iconography, patterns • personality/tone: emotional traits, energy, formality, playfulness • product/domain motifs: objects, workflows, verbs, metaphors, environments • mascot translation cues: candidate forms, signature traits, props, what must read at pet size • avoidances: logos/text, trademark-sensitive elements, misleading cues, competitor confusion, poor mascot fits • evidence/confidence: source URLs plus notes where evidence is weak or inferred Do not copy logos, readable marks, UI screenshots, slogans, or text. Clearly label mascot guidance that is inferred rather than directly sourced. End the brief with a Generation handoff section containing exactly: • brand_name=<canonical brand/product name> • brand_brief=<one sentence, max 45 words, covering palette/tone/domain motifs/personality> • avatar_seed=<short mascot-safe visual idea, no logo copying> • avoid=<short comma-separated list> • brand_sources=<comma-separated source URLs> Return exactly: brand_discovery_file=<absolute output file path> brand_name=<canonical brand/product name> brand_brief=<same compact sentence from Generation handoff> avatar_seed=<same short seed from Generation handoff> avoid=<same short avoid list from Generation handoff> brand_sources=<same comma-separated URLs from Generation handoff> ` The parent should save the markdown brief before preparing the run, then pass it to prepare_pet_run.py as --brand-discovery-file together with --brand-name, --brand-brief, repeated --brand-source, and a concise --pet-notes value based on avatar_seed when the user did not provide a better avatar description. Keep the full brief for review; only the compact handoff fields should shape prompts. If web search is unavailable and the user gave only a bare brand name, ask for brand cues before generating. For a normal pet run, expect up to 10 visual generation jobs: 1 base pet plus 9 row-strip jobs. The Codex app contract currently uses all 9 states: idle, running-right, running-left, waving, jumping, failed, waiting, running, and review. The only deterministic visual derivation is running-left, which may be produced by mirroring running-right only after running-right has been generated, visually inspected, and explicitly approved as safe to mirror. If mirroring is not appropriate, generate running-left as a normal grounded $imagegen row. After selecting a visual output, the parent agent copies that exact image into the job's decoded/ path and marks the job complete in imagegen-jobs.json. Do not write helper scripts that populate row outputs. The deterministic Python scripts may only process already-generated visual outputs. Only the base job may be prompt-only. Every row-strip job generated through $imagegen must use the input images listed in imagegen-jobs.json, including the canonical base reference created after the selected base output is copied. Treat any row generation without attached grounding images as invalid.
Discussion
Health Signals
My Fox Den
Community Rating
Sign in to rate this booster