aavegotchi-sprites-generator-skill
This skill generates Aavegotchi game sprites by wrapping the official gotchi-generator package from aavegotchi/aavegotchi-game-sprites.
When to use it
Use this skill when the user wants:
- game sprite style gotchi art
- sprite PNG output
- animated sprite GIF output
- trait-layer compositing based on official sprite assets
- retro or battle-sprite style gotchi output
- batch sprite generation from gotchi JSON payloads
Do not use this skill when the user wants:
- OG onchain SVG style output
- 3D gotchi renders
Chat-first behavior
For Telegram or normal chat replies, prefer:
bash ./scripts/show-gotchi-sprite.sh ...
That helper prints:
SPRITE_MEDIAGIF_MEDIACAPTION_SPRITECAPTION_GIFSUMMARY
and always uses a fresh output folder so chat replies do not reuse stale files.
For Telegram delivery:
- animated sprite GIF requests should send
GIF_MEDIAas a downloadable file/document usingfilePath - static sprite replies can still send
SPRITE_MEDIAas normalmedia - do not send animated GIF replies as Telegram animated media if the goal is to preserve the actual
.giffile
Background logic
Background logic matches the gotchi SVG skill:
- default background:
common - explicit
transparent: transparent output - explicit
uncommon,rare,legendary,mythical,godlike: use that exact rarity color
Official colors:
common->#806AFBuncommon->#20C9C0rare->#59BCFFlegendary->#FFC36Bmythical->#FF96FFgodlike->#51FFA8
GIF behavior
- GIFs are generated by default
- GIFs are the default chat output
- default GIF row sequence:
idle(row 0) - default FPS:
12 - default GIF scale:
1x - default canvas size:
250x250 - default body placement: centered on the canvas vertical axis and anchored
3pxupward - default gotchi zoom:
100% - supported zoom sizes:
25%,50%,100%
Supported row presets:
idleflythrowattackhurtdeathall- or a custom numeric list like
0,2,3
Natural-language mapping
The wrapper accepts friendly aliases.
Collateral aliases
ETH->aWETHDAI->aDAIUSDC->aUSDCUSDT->aUSDTAAVE->aAAVELINK->aLINKTUSD->aTUSDWBTC->aWBTCUNI->aUNI
Eye presets
Use the closest sprite preset for plain-language eye requests:
common eyes->--eye-shape common --eye-color commonuncommon high eyes->--eye-shape uncommon_high --eye-color uncommon_highuncommon low eyes->--eye-shape uncommon_low --eye-color uncommon_lowrare high eyes->--eye-shape rare_high --eye-color rare_highrare low eyes->--eye-shape rare_low --eye-color rare_lowmythical high eyes->--eye-shape mythic_high --eye-color mythical_highmythical low eyes->--eye-shape mythic_low --eye-color mythical_low
If the user only says common, uncommon, rare, or mythical, use the closest high variant by default.
Commands
Full JSON request
node ./scripts/render-gotchi-sprite.mjs \
--input ./Requests.sample.json \
--output-dir ./output/sample
Slot-based request
node ./scripts/render-gotchi-sprite.mjs \
--id 999001 \
--collateral ETH \
--eye-shape common \
--eye-color common \
--body "Witchy Cloak" \
--background mythical \
--gif-rows all \
--frame-size 80 \
--output-dir ./output/custom
Chat helper
bash ./scripts/show-gotchi-sprite.sh \
--collateral ETH \
--eye-shape common \
--eye-color common \
--body "Witchy Cloak" \
--background common
Response format
When using this skill, report:
- sprite PNG path
- sprite GIF path when available
- manifest JSON path
- whether generation succeeded
- any missing layer warnings
Implementation notes
- The upstream package expects Node.js and filesystem access.
- The wrapper script loads the package config from
getPackageBasePath(). - If generation fails because trait values do not match asset names, return the missing layer details instead of guessing.
Frame crop behavior
- default source frame size:
100x100 - default output canvas:
250x250 --frame-size 80crops each source sprite frame to80x80before layout--canvas-size 250controls the final output canvas per frame- hands and pets do not shift the body anchor used for placement
- Telegram/chat prompts can say
80x80 cropped canvasortight cropwhen they want a tighter source crop
Zoom behavior
- default zoom:
100% --zoom 50centers the gotchi at half-size in each sprite frame--zoom 25centers the gotchi at quarter-size in each sprite frame- Telegram/chat prompts can say
25% zoomor50% zoom