Sprite Gen
aldegad/sprite-gen
Generates images and game sprites through GPT or Grok with guided provider choices, separate saved defaults, automatic cleanup and optional curation.
Create, repair, validate, visually QA, and package MyAgents/Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual…
$ npx skills add hAcKlyc/MyAgents --skill hatch-pet -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hAcKlyc/MyAgents hatch-pet --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hAcKlyc/MyAgents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/bundled-skills/hatch-pet .claude/skills/hatch-pet && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "hatch-pet" agent skill from https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-pet into .claude/skills/hatch-pet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hatch-pet", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-petType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hAcKlyc/MyAgents --skill hatch-pet -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hAcKlyc/MyAgents hatch-pet --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hAcKlyc/MyAgents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/bundled-skills/hatch-pet .agents/skills/hatch-pet && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hatch-pet" agent skill from https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-pet into .agents/skills/hatch-pet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hatch-pet", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hAcKlyc/MyAgents --skill hatch-pet -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hAcKlyc/MyAgents hatch-pet --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hAcKlyc/MyAgents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/bundled-skills/hatch-pet .cursor/skills/hatch-pet && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hatch-pet" agent skill from https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-pet into .cursor/skills/hatch-pet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hatch-pet", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hAcKlyc/MyAgents.git --path bundled-skills/hatch-pet--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hAcKlyc/MyAgents --skill hatch-pet -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hAcKlyc/MyAgents hatch-pet --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hAcKlyc/MyAgents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/bundled-skills/hatch-pet .gemini/skills/hatch-pet && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hatch-pet" agent skill from https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-pet into .gemini/skills/hatch-pet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hatch-pet", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hAcKlyc/MyAgents hatch-petInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hAcKlyc/MyAgents --skill hatch-pet -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hAcKlyc/MyAgents.git skills-src && mkdir -p .github/skills && cp -r skills-src/bundled-skills/hatch-pet .github/skills/hatch-pet && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hatch-pet" agent skill from https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-pet into .github/skills/hatch-pet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hatch-pet", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hAcKlyc/MyAgents --skill hatch-pet -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hAcKlyc/MyAgents hatch-pet --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hAcKlyc/MyAgents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/bundled-skills/hatch-pet .opencode/skills/hatch-pet && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hatch-pet" agent skill from https://github.com/hAcKlyc/MyAgents/tree/main/bundled-skills/hatch-pet into .opencode/skills/hatch-pet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hatch-pet", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hatch-petCreate, repair, validate, visually QA, and package MyAgents/Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual…
Hatch Pet is an agent skill from hAcKlyc/MyAgents. Create, repair, validate, visually QA, and package MyAgents/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 desktop 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…
Its SKILL.md is about 9.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including scripts and reference files (for example `agents/openai.yaml`, `references/animation-rows.md` and `references/codex-pet-contract.md`).
It sits in Game Development, covering Sprites and pixel art and Image generation. The repository describes itself as: MyAgents - 优雅、易用的 Agent 桌面端 ,一站式 Agent 工作台与任务中心. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f873ca3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 8 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hatch Pet loads about 9.5k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 148 tokens; SKILL.md has 3,758 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from hAcKlyc/MyAgents at commit f873ca3, republished under its Apache-2.0 licence (© hAcKlyc). 3,758 words, ~9,452 tokens.
.claude/skills/hatch-pet/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.Create a MyAgents/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.
Use $imagegen for all normal visual generation.
Before generating base art, row strips, or repair rows, load and follow the installed image generation skill:
${CODEX_HOME:-$HOME/.codex}/skills/.system/imagegen/SKILL.mdDo 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.
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 or ${MYAGENTS_HOME:-$HOME/.myagents}/generated_images. Deleting files later reduces filesystem use, but it does not shrink an already-written rollout. Keep image generation isolated and bounded:
selected_source=... and qa_note=...; they must not include Markdown image previews, base64, or extra visual attachments in their final response.decoded/, remove the selected original from ${CODEX_HOME:-$HOME/.codex}/generated_images or ${MYAGENTS_HOME:-$HOME/.myagents}/generated_images when it lives there, then remove its now-empty generation directory if possible.$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.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:
Generation handoff section containing only brand_name, brand_brief, avatar_seed, avoid, and brand_sourcesUse this discovery worker prompt:
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 MyAgents/Codex pet 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.
Default style is auto: infer the pet's style from the user's prompt and references, then preserve that style across every row. If the user names a style, honor it. Supported style presets include pixel, plush, clay, sticker, flat-vector, 3d-toy, painterly, brand-inspired, and auto.
Any style is acceptable when it remains pet-safe:
192x208 cellNon-pixel styles are first-class. Plush, clay, sticker, vector, 3D toy, painterly mascot, ink, and brand-inspired looks should be accepted when they satisfy the atlas and readability constraints.
Pet rows are processed into transparent 192x208 cells, so every generated pixel must either belong to the pet sprite or be cleanly removable chroma-key background. Prefer pose, expression, and silhouette changes over decorative effects.
The deterministic raster pipeline owns the transparency invariant: pixels that become fully transparent are normalized so they do not retain hidden RGB residue, and atlas validation should fail if exported files violate that invariant. Do not paper over colored halos or transparent-pixel residue by accepting visually inconsistent outputs.
Allowed effects must satisfy all of these conditions:
192x208 without clutter.Avoid these by default because they usually break transparent-background cleanup or component extraction:
State-specific guidance:
idle: keep this calm and low-distraction. Use only subtle breathing, a tiny blink, a slight head or body bob, a very small material sway, or another quiet persona-preserving motion. The loop must still contain visible micro-variation; do not accept six effectively identical copies. Do not show waving, walking, running, jumping, talking, working, reviewing, emotional reactions, large gestures, item interactions, or new props.waving: show the wave through paw, hand, wing, or limb pose only. Do not draw wave marks, motion arcs, lines, sparkles, symbols, or floating effects around the gesture.jumping: show vertical motion through body position only. Do not draw shadows, dust, landing marks, impact bursts, bounce pads, or floor cues.failed: tears, attached smoke puffs, or attached stars are allowed if they obey the allowed-effects rules; do not use red X marks, floating symbols, detached smoke, detached stars, or separate tear droplets.waiting: show that Codex needs approval, help, or user input through an expectant asking pose. Keep it distinct from ordinary idle and review.running: show active task work, processing, thinking, scanning, typing, or focused effort. Do not show literal foot-running, jogging, sprinting, treadmill motion, raised knees, long steps, pumping arms, directional travel, speed lines, dust clouds, floor shadows, motion trails, or detached motion effects.review: show focus through lean, blink, eyes, head tilt, or paw/hand position. Do not add magnifying glasses, papers, code, UI, punctuation, symbols, or other new props unless they already exist in the base pet identity.running-right and running-left: show directional drag movement through body, limb, and prop movement only. running-right must face and travel right; running-left must face and travel left. Their cadence must visibly alternate across the loop rather than repeating one nearly static stride. Do not draw speed lines, dust clouds, floor shadows, motion trails, or detached motion effects.For every pet run, keep a visible checklist so the user can see where the work is up to. Create the checklist before starting, keep one step active at a time, and update it as each step finishes.
Use this checklist for a normal pet run, replacing <Pet> with the pet's name or your pet:
<Pet> ready.<Pet>'s main look.<Pet>'s poses.<Pet>.What each step means:
Getting <Pet> ready. Choose or confirm the pet name, description, source images, style preset, style notes, and working folder. For bare brand/product/company requests, first run the brand discovery worker and capture the compact brand brief, source URLs, and avatar seed.Imagining <Pet>'s main look. Generate the pet's main reference image. This becomes the visual source of truth.Picturing <Pet>'s poses. Generate pose rows through lightweight workers, starting with idle and running-right to confirm identity and gait. Only mirror running-left if running-right clearly works when flipped.Hatching <Pet>. Turn the approved poses into final pet files, review the contact sheet, previews, and validation results, fix any broken parts, save pet.json and spritesheet.webp, then report the output paths.Only mark a step complete when the real file, image, or decision exists. If this is a repair run, start from the first relevant step instead of restarting the whole checklist.
MYAGENTS_HOME="${MYAGENTS_HOME:-$HOME/.myagents}"
SKILL_DIR="${HATCH_PET_SKILL_DIR:-$MYAGENTS_HOME/skills/hatch-pet}"
python "$SKILL_DIR/scripts/prepare_pet_run.py" \
--pet-name "<Name>" \
--description "<one sentence>" \
--reference /absolute/path/to/reference.png \
--output-dir /absolute/path/to/run \
--pet-notes "<stable pet description>" \
--brand-discovery-file /absolute/path/to/brand-discovery.md \
--brand-name "<optional researched brand name>" \
--brand-brief "<optional compact researched brand cue sentence>" \
--brand-source "https://example.com/source" \
--style-preset auto \
--style-notes "<optional freeform style notes>" \
--forceAll arguments above are optional except any flags needed to express user constraints. For text-only requests, pass the concept through --pet-notes and omit --reference; prepare_pet_run.py will infer a name, description, chroma key, and output directory as needed.
For brand-only requests, run the discovery worker first, save the markdown brief, then pass the brief path through --brand-discovery-file, avatar_seed through --pet-notes, brand_name through --brand-name, brand_brief through --brand-brief, and each source URL through repeated --brand-source.
imagegen-jobs.json for the next ready $imagegen jobs. A job is ready when its status is not complete and every id in depends_on is already complete. Prefer reading the manifest directly with jq or the editor instead of adding helper scripts for status display:jq '.jobs[] | {id, kind, status, depends_on, prompt_file, retry_prompt_file, input_images, output_path, derivation_policy}' /absolute/path/to/run/imagegen-jobs.jsonbase first, using a lightweight base worker.idle and running-right next as the identity and gait check, using one lightweight worker per row.running-right; mirror running-left only when visual identity, prop placement, markings, lighting, and direction semantics remain correct.running-left normally with a lightweight worker when mirroring would change meaning or identity.For each ready visual job, invoke $imagegen with the prompt file listed in imagegen-jobs.json, every listed input image with its role label, and the default built-in image_gen path unless $imagegen itself routes otherwise. The parent agent must keep its own image handling minimal: do not open every generated base or row in the parent rollout. Workers return only the selected source path and a one-sentence QA note; the parent records the selected source path in the manifest.
prepare_pet_run.py creates 9 row-specific layout guide images under references/layout-guides/, one per animation state. Row jobs attach the matching guide as a layout-only input so the model can follow the correct frame count, spacing, centering, and safe padding. Treat these guides as invisible construction references: the generated row strip must not include visible boxes, borders, center marks, labels, guide colors, or the guide background.
When generating row strips, keep the identity lock in the row prompt authoritative. Preserve the same style, face, markings, palette, materials, prop design, body proportions, and silhouette from the canonical base. Row jobs attach the layout guide and canonical base by default; the decoded base is kept in the run folder for deterministic processing rather than sent as a redundant generation input.
If $imagegen returns a transport-level Bad Request for a row, retry that same row once with its generated retry_prompt_file. The retry prompt preserves the row id, frame count, chroma key, canonical-base identity, and state action. Keep the canonical base attached. If the retry still fails, stop and report the failing row and prompt paths instead of switching to any other generation path.
base, also create the canonical identity reference:RUN_DIR=/absolute/path/to/run
JOB_ID=<job-id>
SOURCE=/absolute/path/to/generated-output.png
OUTPUT_REL=$(jq -r --arg id "$JOB_ID" '.jobs[] | select(.id == $id) | .output_path' "$RUN_DIR/imagegen-jobs.json")
mkdir -p "$(dirname "$RUN_DIR/$OUTPUT_REL")"
cp "$SOURCE" "$RUN_DIR/$OUTPUT_REL"if [ "$JOB_ID" = "base" ]; then mkdir -p "$RUN_DIR/references"; cp "$RUN_DIR/$OUTPUT_REL" "$RUN_DIR/references/canonical-base.png"; fiUPDATED_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
TMP_MANIFEST=$(mktemp)
jq --arg id "$JOB_ID" --arg source "$SOURCE" --arg at "$UPDATED_AT" '(.jobs[] | select(.id == $id)) += {status: "complete", source_path: $source, completed_at: $at}' "$RUN_DIR/imagegen-jobs.json" > "$TMP_MANIFEST"
mv "$TMP_MANIFEST" "$RUN_DIR/imagegen-jobs.json"If the copied source is under a known generated-images directory, delete the original generated file after the decoded copy exists:
for GENERATED_ROOT in "${MYAGENTS_HOME:-$HOME/.myagents}/generated_images" "${CODEX_HOME:-$HOME/.codex}/generated_images"; do
case "$SOURCE" in
"$GENERATED_ROOT"/*)
rm -f "$SOURCE"
rmdir "$(dirname "$SOURCE")" 2>/dev/null || true
;;
esac
donerunning-left only when it is visually safe:python "$SKILL_DIR/scripts/derive_running_left_from_running_right.py" \
--run-dir /absolute/path/to/run \
--confirm-appropriate-mirror \
--decision-note "<why mirroring preserves this pet's identity>"That script mirrors each generated frame slot in place so the leftward row preserves the rightward row's temporal order. Do not replace it with a whole-strip mirror that reverses animation timing.
RUN_DIR=/absolute/path/to/run
mkdir -p "$RUN_DIR/final" "$RUN_DIR/qa"python "$SKILL_DIR/scripts/extract_strip_frames.py" \
--decoded-dir "$RUN_DIR/decoded" \
--output-dir "$RUN_DIR/frames" \
--states all \
--method autopython "$SKILL_DIR/scripts/inspect_frames.py" \
--frames-root "$RUN_DIR/frames" \
--json-out "$RUN_DIR/qa/review.json" \
--require-componentspython "$SKILL_DIR/scripts/compose_atlas.py" \
--frames-root "$RUN_DIR/frames" \
--output "$RUN_DIR/final/spritesheet.png" \
--webp-output "$RUN_DIR/final/spritesheet.webp"python "$SKILL_DIR/scripts/validate_atlas.py" \
"$RUN_DIR/final/spritesheet.webp" \
--json-out "$RUN_DIR/final/validation.json"python "$SKILL_DIR/scripts/make_contact_sheet.py" \
"$RUN_DIR/final/spritesheet.webp" \
--output "$RUN_DIR/qa/contact-sheet.png"python "$SKILL_DIR/scripts/render_animation_previews.py" \
--frames-root "$RUN_DIR/frames" \
--output-dir "$RUN_DIR/qa/previews"If the preview GIFs show size popping or baseline jumps caused by per-frame fit-to-cell extraction, and the original row strip itself had stable scale and placement, rerun frame extraction with the explicit row-stability mode and then re-run inspection, atlas composition, validation, contact sheet generation, and previews:
python "$SKILL_DIR/scripts/extract_strip_frames.py" \
--decoded-dir "$RUN_DIR/decoded" \
--output-dir "$RUN_DIR/frames" \
--states all \
--method stable-slotspython "$SKILL_DIR/scripts/inspect_frames.py" \
--frames-root "$RUN_DIR/frames" \
--json-out "$RUN_DIR/qa/review.json" \
--require-components \
--allow-stable-slotsUse stable-slots as a deliberate QA-driven correction, not the default. It should reduce extraction-induced motion pops without hiding clipped wide poses or bad source strips.
Expected output before cleanup:
run/
pet_request.json
imagegen-jobs.json
prompts/
decoded/
frames/frames-manifest.json
final/spritesheet.webp
final/validation.json
qa/contact-sheet.png
qa/previews/*.gif
qa/review.json
qa/run-summary.jsonPackage output is written outside the run directory by default. In MyAgents, write custom pets to ${MYAGENTS_HOME:-$HOME/.myagents}/pets so the desktop pet picker can load them directly. The same package shape is compatible with Codex if copied under ${CODEX_HOME:-$HOME/.codex}/pets.
${MYAGENTS_HOME:-$HOME/.myagents}/pets/<pet-name>/
pet.json
spritesheet.webpPackage with shell and jq:
RUN_DIR=/absolute/path/to/run
PET_ID=$(jq -r '.pet_id' "$RUN_DIR/pet_request.json")
DISPLAY_NAME=$(jq -r '.display_name' "$RUN_DIR/pet_request.json")
DESCRIPTION=$(jq -r '.description' "$RUN_DIR/pet_request.json")
MYAGENTS_HOME="${MYAGENTS_HOME:-$HOME/.myagents}"
PET_DIR="$MYAGENTS_HOME/pets/$PET_ID"
mkdir -p "$PET_DIR"
cp "$RUN_DIR/final/spritesheet.webp" "$PET_DIR/spritesheet.webp"
jq -n --arg id "$PET_ID" --arg displayName "$DISPLAY_NAME" --arg description "$DESCRIPTION" '{id: $id, displayName: $displayName, description: $description, spritesheetPath: "spritesheet.webp"}' > "$PET_DIR/pet.json"Write qa/run-summary.json after packaging:
jq -n --arg run_dir "$RUN_DIR" --arg spritesheet "$RUN_DIR/final/spritesheet.webp" --arg validation "$RUN_DIR/final/validation.json" --arg contact_sheet "$RUN_DIR/qa/contact-sheet.png" --arg review "$RUN_DIR/qa/review.json" --arg package "$PET_DIR" '{ok: true, run_dir: $run_dir, spritesheet: $spritesheet, validation: $validation, contact_sheet: $contact_sheet, review: $review, package: $package}' > "$RUN_DIR/qa/run-summary.json"After deterministic image processing, inspect qa/contact-sheet.png and qa/previews/*.gif with a lightweight visual QA worker before accepting the pet. Deterministic validation is necessary but not sufficient. Block acceptance if any row changes species/body type, face, markings, palette, material, prop design, style, prop side unexpectedly, or overall silhouette. Motion previews must also reject unintended size popping, reversed or stagnant directional cadence, wrong facing direction, and idle loops that are technically different but visually inert.
After model visual QA accepts the contact sheet, remove intermediate run artifacts:
Keep pet_request.json, final/spritesheet.webp, final/validation.json, qa/contact-sheet.png, qa/previews/, qa/review.json, and qa/run-summary.json. Remove generated prompt files, layout guides, decoded row strips, extracted frames, final/spritesheet.png, and the imagegen job manifest. Skip cleanup when the user wants debug artifacts or the run still needs repair.
Use lightweight subagents for image-heavy work by default. This bounds each $imagegen rollout to one selected image, keeps contact-sheet vision payloads out of the parent thread, and reduces cost while preserving the full 9-state app contract.
Unless explicitly forbidden by the user, use subagents for this run. If the user has not allowed the use of subagents, or the intent on subagent use is vague, then ask the user for permission to spawn subagents for parallel lanes of work.
Parent responsibilities:
imagegen-jobs.jsonimagegen-jobs.jsonreferences/canonical-base.png from the selected base outputrunning-left mirror derivation when appropriateBase worker responsibilities:
base jobprompts/base-pet.md and use any listed reference images$imagegen onlyselected_source=/absolute/path/to/selected-output.png and qa_note=<one sentence>Row worker responsibilities:
$imagegen only; do not draw, edit, tile, or synthesize sprites locallywaving, no speed lines or dust for directional running rows, no literal foot-running for the non-directional running row, and only attached opaque sprite-like tears/smoke/stars when allowed by the state promptselected_source=/absolute/path/to/selected-output.png and qa_note=<one sentence>Final visual QA worker responsibilities:
qa/contact-sheet.png plus the row GIFs under qa/previews/, with qa/review.json and final/validation.json as text context when usefulvisual_qa=pass or visual_qa=fail, plus row-specific repair notes when failingModel choice for workers:
gpt-5.4-mini with medium reasoning, when model override is available.Use this base worker prompt:
Generate the hatch-pet base image.
Run dir: <absolute run dir>
Job id: base
Prompt file: <absolute base prompt file>
Input images:
- <absolute path> — <role>
Use $imagegen only. Read the base prompt and attach every listed input image. If the prompt contains brand inspiration, use it only as broad mascot-safe guidance; do not copy logos, readable marks, UI screenshots, slogans, or text. Before returning, visually check that the result is one centered full-body pet on a flat chroma background, with no text, scenery, shadows, or detached effects.
Do not edit manifests, copy into decoded, mark jobs complete, generate rows, run image-processing scripts, repair, package, or open unrelated files.
Do not include Markdown image previews, base64, or extra attachments in the final response.
Return exactly:
selected_source=/absolute/path/to/selected-output.png
qa_note=<one sentence>Use this row worker prompt:
Generate one hatch-pet row.
Run dir: <absolute run dir>
Row id: <row-id>
Prompt file: <absolute prompt file>
Retry prompt file: <absolute retry prompt file>
Input images:
- <absolute path> — <role>
- <absolute path> — <role>
Use $imagegen only. Read the row prompt and attach every listed input image. If imagegen returns Bad Request, retry once with the retry prompt and the same input images.
Before returning, visually check: exact frame count, same pet identity as canonical base, flat chroma background, complete separated unclipped poses, and no detached effects or guide marks. The prompt's transparency and effects rules are mandatory: no detached effects, no wave marks for `waving`, no speed lines or dust for directional running rows, no literal foot-running for the non-directional `running` row, and only attached opaque sprite-like tears/smoke/stars when allowed by the state prompt.
Do not edit manifests, copy into decoded, mark jobs complete, mirror rows, run image-processing scripts, repair, package, or open unrelated files.
Do not include Markdown image previews, base64, or extra attachments in the final response.
Return exactly:
selected_source=/absolute/path/to/selected-output.png
qa_note=<one sentence>Use this final visual QA worker prompt:
Visually QA one finalized hatch-pet contact sheet.
Run dir: <absolute run dir>
Contact sheet: <absolute run dir>/qa/contact-sheet.png
Preview dir: <absolute run dir>/qa/previews
Review JSON: <absolute run dir>/qa/review.json
Validation JSON: <absolute run dir>/final/validation.json
Inspect the contact sheet and the preview GIFs visually. Confirm the same pet identity, style, palette, silhouette, face, proportions, and props across all rows:
0 idle, 1 running-right, 2 running-left, 3 waving, 4 jumping, 5 failed, 6 waiting, 7 running, 8 review.
Fail rows with identity drift, missing/blank frames, copied guide marks, white/nontransparent backgrounds, cropped bodies, slot overlap, detached effects, shadows/glows/smears/dust, chroma-key artifacts, motion that does not match the row state, unintended size popping, wrong facing direction, reversed or non-alternating gait, or idle loops that are effectively static.
Do not edit files, queue repairs, package, clean up, or inspect unrelated files.
Return exactly:
visual_qa=pass|fail
qa_note=<one sentence summary>
repair_rows=<comma-separated row ids, or none>
repair_notes=<short row-specific notes, or none>If frame inspection or final visual QA fails, read qa/review.json, regenerate the smallest failing scope, copy the replacement row into the same decoded output path, and keep that job marked complete with the new source_path and completed_at. Repair the failed row, not the whole sheet.
For identity repairs, use the canonical base image, original references, contact sheet, and exact row failure note as grounding context. Give the row worker the existing row prompt plus a compact repair note from qa/review.json; preserve the canonical pet identity and chosen style.
For extraction-induced motion popping, do not regenerate imagery first. If the source strip already preserves row-level scale and baseline, rerun the deterministic pipeline with --method stable-slots, inspect with --allow-stable-slots, then re-check the preview GIFs. Regenerate the row only when the original strip itself is clipped, unstable, or semantically wrong.
$imagegen as the primary generation layer.$imagegen as the only visual generation layer. Do not invoke image APIs, image CLIs, local raster generators, or one-off generation scripts from this skill.$imagegen whenever the chosen path supports references.references/layout-guides/<state>.png image to every row-strip job as a layout-only guide, and do not accept outputs that copy guide pixels.$imagegen: base plus all row strips that are not explicitly approved running-left mirror derivations.running-right before deciding whether running-left can be mirrored.running-left is mirrored, preserve frame order and timing semantics; derive it through the deterministic script instead of mirroring an entire strip wholesale.waiting, running, failed, review, jumping, or waving from another state; each has distinct app semantics and must be generated as its own row.$imagegen outputs.pet_request.json; do not force a fixed green screen.qa/review.json and final/validation.json have no errors.qa/review.json errors as blockers. Warnings require visual review.1536x1872, transparent-capable, and based on 192x208 cells.references/animation-rows.md.qa/review.json has no errors.${MYAGENTS_HOME:-$HOME/.myagents}/pets/<pet-name>/pet.json and ${MYAGENTS_HOME:-$HOME/.myagents}/pets/<pet-name>/spritesheet.webp are staged together for custom pets.© hAcKlyc, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 13 other files (scripts, references) in bundled-skills/hatch-pet of hAcKlyc/MyAgents.
Open the folder on GitHubat commit f873ca3
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in hAcKlyc/MyAgents, which our catalogue first saw on October 7, 2026.
Hatch Pet next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hatch Pet this skillhAcKlyc/MyAgents | 915 | 1 repos | ~9.5k | Automated safety check: Pass | Apache-2.0 | |
| Sprite Genaldegad/sprite-gen | 2.6k | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| 2D Sprite Generator0x0funky/agent-sprite-forge | 4.3k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Img Gen Avatar4thfever/cultivation-world-simulator | 2.1k | — | ~641 | Automated safety check: Pass | Custom licence | |
| Hatch Petnexu-io/open-design | 100k | — | ~6k | Automated safety check: Pass | Apache-2.0 | |
| Retro Diffusionchongdashu/vibejam-starter-pack | 149 | — | ~3.4k | Automated safety check: Pass | None |
aldegad/sprite-gen
Generates images and game sprites through GPT or Grok with guided provider choices, separate saved defaults, automatic cleanup and optional curation.
0x0funky/agent-sprite-forge
Produces game-ready 2D characters, creatures, props, icons and effects as master stills, sheets or clips, and exports frames for common game engines.
4thfever/cultivation-world-simulator
A skill your agent uses when working on tools/imggen avatar image generation, OpenAI-compatible image API config, human or yaoguai portrait prompts, qi-refining base generation, image-to-image realm…
nexu-io/open-design
Create, repair, validate, preview, and package Codex-compatible animated pet spritesheets from character art, screenshots, generated images, or visual references.
chongdashu/vibejam-starter-pack
Use Retro Diffusion for pixel-art image generation, img2img edits, spritesheets, and animation experiments such as platformer walk cycles, turnarounds, and action sheets from reference images.
htdt/godogen
Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.
hAcKlyc/MyAgents
Find and download virtually any digital resource from the internet — ebooks, academic papers, movies, TV shows, music, software, images, fonts, courses, and more.
hAcKlyc/MyAgents
仅当系统或用户明确指定完整名称 myagents-memory-gardener 时使用; 不要根据任务语义或相似表述自行触发。
hAcKlyc/MyAgents
仅当系统或用户明确指定完整名称 myagents-memory-molt 时使用; 不要根据任务语义或相似表述自行触发。
hAcKlyc/MyAgents
MyAgents 本地问题诊断、恢复与反馈升级流程。用户描述报错、崩溃、无响应、配置后仍不可用、状态或结果不符合预期、 Task/Goal/Channel/Provider/Runtime/MCP/Plugin/附件/Agent 网络/协作空间等功能异常,或者前端“小助理诊断/问题反馈”注入诊断上下文时使用。
hAcKlyc/MyAgents
Methodology for writing or improving prompts and system prompts that drive any LLM.
hAcKlyc/MyAgents
让 Agent 建立 MyAgents Task 的完整产品心智模型,并创建、验证和治理需要持久追踪、独立 Session 或未来触发的工作:理解 Task 与立即执行/Record/Goal 的边界,以及 once/scheduled/recurring、Session routing、结束条件和 command Detector。用户提到创建…
Categories
Create, repair, validate, visually QA, and package MyAgents/Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual…. Hatch Pet is an agent skill from hAcKlyc/MyAgents. Create, repair, validate, visually QA, and package MyAgents/Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references.
Hatch Pet fits situations like: A user wants a lightweight-worker desktop pet workflow; A non-pixel custom pet style; company mascot pet; A full 8x9 animated pet atlas with transparent unused cells.
Run `npx skills add hAcKlyc/MyAgents --skill hatch-pet -a claude-code`. Or copy the skill folder (bundled-skills/hatch-pet in hAcKlyc/MyAgents) into .claude/skills/hatch-pet in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hAcKlyc/MyAgents --skill hatch-pet -a codex`. Or copy the skill folder (bundled-skills/hatch-pet in hAcKlyc/MyAgents) into .agents/skills/hatch-pet in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hAcKlyc/MyAgents --skill hatch-pet -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hatch-pet, .gemini/skills/hatch-pet, .github/skills/hatch-pet and .opencode/skills/hatch-pet in your project.
Going by SKILL.md and its folder, Hatch Pet needs Python for the scripts in its folder and the command-line tools its instructions call (python and jq). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Hatch Pet is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.5k tokens (SKILL.md is roughly 38k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Hatch Pet: Sprite Gen (aldegad/sprite-gen, 2.6k stars), 2D Sprite Generator (0x0funky/agent-sprite-forge, 4.3k stars), Img Gen Avatar (4thfever/cultivation-world-simulator, 2.1k stars) and Hatch Pet (nexu-io/open-design, 100k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hAcKlyc (a GitHub user) maintains it in hAcKlyc/MyAgents, which has 915 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 7, 2026.
Source: hAcKlyc/MyAgents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.