{"id":"dac7de9f-d7aa-4a11-bf6d-e64439d035d0","shortId":"7wDsyh","kind":"skill","title":"sprite-animation-assets","tagline":"Plan, generate, QA, and package continuous raster animation frame sets, GIF previews, and transparent spritesheet atlases. Use when the user asks for a GIF animation, animation frames, sprite rows, web/game animation assets, or reusable visual animation materials.","description":"# Sprite Animation Assets\n\n## 核心判断\n\n动画素材的关键不是“单张图好看”，而是同一个角色或物体在每一帧里保持身份一致、尺寸一致、背景透明、动作能循环。先定义帧规格和状态，再逐组生图，最后用脚本组装和验收。\n\n适合输出：连续帧 PNG、单状态 GIF、透明 spritesheet、固定网格 atlas、网页/游戏动画素材。\n\n不适合输出：单张透明素材；这类转给 `$transparent-visual-assets`。\n\n## 工作流\n\n1. 定义规格：状态名、每个状态帧数、画布尺寸、输出格式。\n2. 生成或确认一张 canonical base image，作为所有帧的身份锚点。\n3. 分状态生成连续帧；每组帧都要使用同一角色参考和同一纯色背景或透明背景策略。\n4. 目视 QA：身份一致、动作连贯、无漂浮杂点、无文字、无阴影地面、无裁切。\n5. 如需要，先用 `$transparent-visual-assets` 把每帧处理成透明 PNG。\n6. 用 `scripts/compose_sprite_set.py` 组合 atlas，并可导出每个状态的 GIF 预览。\n7. 检查 `sprite-set-report.json`，再打开 atlas/GIF 做最终验收。\n\n## 生图提示词要点\n\n每组动画都要锁定身份：\n\n```text\nCreate <frame_count> separated frames of the same <subject> for a looping sprite animation.\nKeep the same silhouette, proportions, face, palette, outline style, and accessories in every frame.\nUse a flat removable background color <background_color>, with no shadows, text, scenery, motion trails, frame numbers, grid lines, or detached decorative effects.\nEach pose must be fully visible, separated from the next pose, and safe to crop into a transparent frame.\nAction: <state_action>.\n```\n\n如果需要兼容 Codex 自定义宠物的 atlas 规格，先读 `references/sprite-atlas-layouts.md`，使用官方 `hatch-pet` 拆出的 8x9、192x208、9 行状态口径。\n\n## 组装脚本\n\n准备 manifest：\n\n```json\n{\n  \"cell_width\": 192,\n  \"cell_height\": 208,\n  \"columns\": 8,\n  \"states\": [\n    {\n      \"name\": \"idle\",\n      \"row\": 0,\n      \"frames\": [\"idle_000.png\", \"idle_001.png\"],\n      \"durations_ms\": [120, 120]\n    }\n  ]\n}\n```\n\n运行：\n\n```bash\npython \"${CODEX_HOME:-$HOME/.codex}/skills/sprite-animation-assets/scripts/compose_sprite_set.py\" \\\n  --manifest /absolute/path/manifest.json \\\n  --frames-dir /absolute/path/frames \\\n  --output-atlas /absolute/path/spritesheet.png \\\n  --output-dir /absolute/path/qa \\\n  --gif\n```\n\n脚本会：\n\n- 把每帧居中放入固定 cell。\n- 保持未使用 cell 全透明。\n- 输出 `sprite-set-report.json`。\n- 使用 `--gif` 时，为每个状态导出一个 GIF 预览。\n\n## 验收标准\n\n- 每个状态帧数符合 manifest。\n- 同一角色/物体在所有帧里保持同一身份，不变物种、不变脸、不变配色。\n- 所有帧都是透明背景或可干净抠透明背景。\n- 动作能循环，首尾不明显跳变。\n- spritesheet 未使用格子必须完全透明。\n- GIF 只是预览；最终网页/游戏素材优先交付 PNG 帧或透明 atlas。","tags":["sprite","animation","assets","codex","visual","asset","skills","dwdestiny","agent-skills","gif","hatch-pet","spritesheet"],"capabilities":["skill","source-dwdestiny","skill-sprite-animation-assets","topic-agent-skills","topic-codex","topic-gif","topic-hatch-pet","topic-spritesheet","topic-transparent-background"],"categories":["codex-visual-asset-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/DwDestiny/codex-visual-asset-skills/sprite-animation-assets","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add DwDestiny/codex-visual-asset-skills","source_repo":"https://github.com/DwDestiny/codex-visual-asset-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (2,021 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:41.788Z","embedding":null,"createdAt":"2026-05-18T13:22:11.830Z","updatedAt":"2026-05-18T19:14:41.788Z","lastSeenAt":"2026-05-18T19:14:41.788Z","tsv":"'/absolute/path/frames':242 '/absolute/path/manifest.json':238 '/absolute/path/qa':250 '/absolute/path/spritesheet.png':246 '/skills/sprite-animation-assets/scripts/compose_sprite_set.py':236 '0':222 '1':74 '120':228,229 '192':212 '192x208':203 '2':80 '208':215 '3':86 '4':89 '5':98 '6':107 '7':115 '8':217 '8x9':202 '9':204 'accessori':145 'action':189 'anim':3,12,29,30,35,40,43,134 'ask':25 'asset':4,36,44,72,104 'atlas':20,63,111,193,245,285 'atlas/gif':119 'background':153 'base':83 'bash':231 'canon':82 'cell':210,213,254,256 'codex':191,233 'color':154 'column':216 'continu':10 'creat':124 'crop':184 'decor':168 'detach':167 'dir':241,249 'durat':226 'effect':169 'everi':147 'face':140 'flat':151 'frame':13,31,126,148,162,188,223,240 'frames-dir':239 'fulli':174 'generat':6 'gif':15,28,59,113,251,261,264,279 'grid':164 'hatch':199 'hatch-pet':198 'height':214 'home':234 'home/.codex':235 'idl':220 'idle_000.png':224 'idle_001.png':225 'imag':84 'json':209 'keep':135 'line':165 'loop':132 'manifest':208,237,268 'materi':41 'motion':160 'ms':227 'must':172 'name':219 'next':179 'number':163 'outlin':142 'output':244,248 'output-atla':243 'output-dir':247 'packag':9 'palett':141 'pet':200 'plan':5 'png':57,106,283 'pose':171,180 'preview':16 'proport':139 'python':232 'qa':7,91 'raster':11 'references/sprite-atlas-layouts.md':196 'remov':152 'reusabl':38 'row':33,221 'safe':182 'sceneri':159 'scripts/compose_sprite_set.py':109 'separ':125,176 'set':14 'shadow':157 'silhouett':138 'skill' 'skill-sprite-animation-assets' 'source-dwdestiny' 'sprite':2,32,42,133 'sprite-animation-asset':1 'sprite-set-report.json':117,259 'spritesheet':19,61,277 'state':218 'style':143 'text':123,158 'topic-agent-skills' 'topic-codex' 'topic-gif' 'topic-hatch-pet' 'topic-spritesheet' 'topic-transparent-background' 'trail':161 'transpar':18,70,102,187 'transparent-visual-asset':69,101 'use':21,149 'user':24 'visibl':175 'visual':39,71,103 'web/game':34 'width':211 '不变物种':271 '不变脸':272 '不变配色':273 '不适合输出':66 '为每个状态导出一个':263 '作为所有帧的身份锚点':85 '使用':260 '使用官方':197 '保持未使用':255 '做最终验收':120 '先定义帧规格和状态':52 '先用':100 '先读':195 '全透明':257 '再打开':118 '再逐组生图':53 '准备':207 '分状态生成连续帧':87 '动作能循环':51,275 '动作连贯':93 '动画素材的关键不是':46 '单张图好看':47 '单张透明素材':67 '单状态':58 '只是预览':280 '同一角色':269 '固定网格':62 '如果需要兼容':190 '如需要':99 '定义规格':75 '尺寸一致':49 '工作流':73 '帧或透明':284 '并可导出每个状态的':112 '所有帧都是透明背景或可干净抠透明背景':274 '把每帧处理成透明':105 '把每帧居中放入固定':253 '拆出的':201 '无文字':95 '无漂浮杂点':94 '无裁切':97 '无阴影地面':96 '时':262 '最后用脚本组装和验收':54 '最终网页':281 '未使用格子必须完全透明':278 '核心判断':45 '检查':116 '每个状态帧数':77 '每个状态帧数符合':267 '每组动画都要锁定身份':122 '每组帧都要使用同一角色参考和同一纯色背景或透明背景策略':88 '游戏动画素材':65 '游戏素材优先交付':282 '物体在所有帧里保持同一身份':270 '状态名':76 '生图提示词要点':121 '生成或确认一张':81 '用':108 '画布尺寸':78 '目视':90 '组合':110 '组装脚本':206 '网页':64 '而是同一个角色或物体在每一帧里保持身份一致':48 '背景透明':50 '脚本会':252 '自定义宠物的':192 '行状态口径':205 '规格':194 '身份一致':92 '输出':258 '输出格式':79 '运行':230 '这类转给':68 '连续帧':56 '适合输出':55 '透明':60 '预览':114,265 '首尾不明显跳变':276 '验收标准':266","prices":[{"id":"f7d2899e-e5ec-4a25-8321-40db78458c1f","listingId":"dac7de9f-d7aa-4a11-bf6d-e64439d035d0","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"DwDestiny","category":"codex-visual-asset-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:11.830Z"}],"sources":[{"listingId":"dac7de9f-d7aa-4a11-bf6d-e64439d035d0","source":"github","sourceId":"DwDestiny/codex-visual-asset-skills/sprite-animation-assets","sourceUrl":"https://github.com/DwDestiny/codex-visual-asset-skills/tree/main/skills/sprite-animation-assets","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:11.830Z","lastSeenAt":"2026-05-18T19:14:41.788Z"}],"details":{"listingId":"dac7de9f-d7aa-4a11-bf6d-e64439d035d0","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"DwDestiny","slug":"sprite-animation-assets","github":{"repo":"DwDestiny/codex-visual-asset-skills","stars":6,"topics":["agent-skills","codex","gif","hatch-pet","spritesheet","transparent-background"],"license":"mit","html_url":"https://github.com/DwDestiny/codex-visual-asset-skills","pushed_at":"2026-05-07T09:36:20Z","description":"Codex skills for transparent image assets and animation sprite sets","skill_md_sha":"b8e5c65023d6687d2931679c79585a7cc3a3d038","skill_md_path":"skills/sprite-animation-assets/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/DwDestiny/codex-visual-asset-skills/tree/main/skills/sprite-animation-assets"},"layout":"multi","source":"github","category":"codex-visual-asset-skills","frontmatter":{"name":"sprite-animation-assets","description":"Plan, generate, QA, and package continuous raster animation frame sets, GIF previews, and transparent spritesheet atlases. Use when the user asks for a GIF animation, animation frames, sprite rows, web/game animation assets, or reusable visual animation materials."},"skills_sh_url":"https://skills.sh/DwDestiny/codex-visual-asset-skills/sprite-animation-assets"},"updatedAt":"2026-05-18T19:14:41.788Z"}}