bustup-frame-gen
音声ポップアップの疑似Live2Dアニメーション用フレームセット(表情×5フレーム)を、 grokのimage_editで既存bustupから生成しPIL合成で揃える手順。Animaのボイスチャットで 口パク・瞬きを動かしたい、新しいanimaにアニメーションフレームを追加したい、…
ドット絵ワークスペース用のキャラクタースプライトを、codexのimage_genに指示して生成する手順。 承認済みシートを土台にしたidentity差し替え、10行の意味的一貫性、実画面プレビュー、 runtime反映前の承認までを扱う。Animaのpixel_sheet.pngを新規作成・差し替え・修復するとき、 Pixel Workspaceのキャラクターが細い、潰れる、行ごとに別人化する問題を直すときに使う。
$ npx -y skills add xuiltul/animaworks --skill pixel-asset-gen --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/pixel-asset-genContext preview
The summary Claude sees to decide when to auto-load this skill.
ドット絵ワークスペース用のキャラクタースプライトを、codexのimage_genに指示して生成する手順。 承認済みシートを土台にしたidentity差し替え、10行の意味的一貫性、実画面プレビュー、 runtime反映前の承認までを扱う。Animaのpixel_sheet.pngを新規作成・差し替え・修復するとき、 Pixel Workspaceのキャラクターが細い、潰れる、行ごとに別人化する問題を直すときに使う。
name: pixel-asset-gen description: >- ドット絵ワークスペース用のキャラクタースプライトを、codexのimage_genに指示して生成する手順。 承認済みシートを土台にしたidentity差し替え、10行の意味的一貫性、実画面プレビュー、 runtime反映前の承認までを扱う。Animaのpixel_sheet.pngを新規作成・差し替え・修復するとき、 Pixel Workspaceのキャラクターが細い、潰れる、行ごとに別人化する問題を直すときに使う。
ドット絵ワークスペース(`/app/workspace/pixel/`)のキャラクタースプライトを作る手順。 2026-07-29〜30にフリート全体で確立した方式を記録したもの。実プロンプト全文と後処理の詳細は同ディレクトリの `PIPELINE_reference.md` にある。
image_gen ツールを使う。SVG/HTML/CSSでの代替は不可」と明記しないと、勝手にSVGで代替される
行順は idle / working / thinking / talking / walk_down / walk_up / walk_side / sleeping / success / error(正本は `server/static/workspace/pixel/CONTRACT.md`)
(人間役は `<data_dir>/workspace_pixel/assets/chars/human.png`)
| 状況 | 方式 | | --- | --- | | 基準キャラを新しく作る(1体目・画風を決める) | ゼロから生成。1枚の種で画風の承認を取ってから10行に展開 | | 2体目以降・フリートへ展開する | **承認済みシートを土台にした「キャラ差し替え」** |
**2体目以降を独立生成してはいけない。** キャラごとに顔の大きさがバラバラになり、 オフィスに並べた瞬間に不揃いだと分かる(フリート全体で実際に失敗して作り直した)。
`~/.animaworks/animas/mio/assets/pixel_sheet.png` とする。開始時にSHA-256を記録する。
髪型、髪色、瞳、髪飾り、服装を1つのidentity仕様へ確定する。
承認済みシートを行ごとに切り出し、**全10行を例外なくPOINTで400%拡大し**、透明部分をマゼンタで埋めた 1536×384の画像**を編集対象にする。
magick <基準シートの行ストリップ>.png \ -filter point -resize 400% \ -background '#FF00FF' -alpha background -alpha remove -alpha off \ <作業dir>/base_row0_idle_x4_magenta.png
384×96のまま渡すと**モデルが顔・髪・体型を再解釈する**。idleだけでなく全10行で必ず400%版を渡す。 過去のMei生成では後半行が低解像度入力へ戻り、行ごとに長髪とボブが混在したため、低解像度入力は不合格とする。
1行につき1回呼ぶ。入力画像はこの順で3枚:
1. 上で作った400%+マゼンタの土台(=編集対象) 2. そのキャラの `avatar_chibi.png`(全身・服装の同定) 3. そのキャラの `avatar_bustup.png`(顔・色の同定)
プロンプトは `precise-object-edit` 構成で書く。全文は `PIPELINE_reference.md` にあるが、要点は:
スケール・シルエット・アニメーション・ピクセルグリッドは Image 1 のまま**
露出した顔の大きさ・顔の中心・目鼻口の位置と間隔**を維持。**顔や頭を大きくするな**
**顔(目・鼻・口・頬)に新しい暗色の点・影・輪郭・髪の毛・孤立ピクセルを重ねるな**。 暗い髪は顔の境界からはっきり分離させる
「Images 2 and 3のどちらかを自由に選ぶ」とは書かない
| 変えてよい | 1ドットも変えてはいけない | | --- | --- | | 髪型・髪の長さ・髪色・前髪・髪飾り | 顔(肌の露出部分)の大きさと位置、目鼻口の配置 | | 瞳の色、眉の形 | 頭頂の高さ、顔の中心x、肩の位置と幅、体の大きさ | | 服装(色・形・襟・アクセサリ) | 4コマそれぞれのポーズと動きの内容 | | 肌の色の微調整 | フレーム内の立ち位置、ドットの粒度、輪郭線の太さ |
「髪を増やしたので顔も大きくした」は不合格、と明記する。
抜き色は **`#FF00FF` 固定。緑背景は禁止**(despillで肌や淡色の服に緑が混ざる事故が起きた)。
暗色(黒髪・ダークネイビーのスーツ)が背景と誤判定されて欠損する事故も起きたので、 必ず次のガードを入れる。実装は `.claude/skills/pixel-asset-gen/scripts/process_generated_row.py` にある。
(透明化すると黒髪やスーツに穴が開く)。キャラ本来の緑眼などは中和しない
固定倍率にしない(モデル出力の寸法は一定でない)。基準シートの各コマの不透明bboxを取り、 生成スプライトを**BOXフィルタでそのbboxサイズに1回だけ縮小**して、同じ座標に整数配置する。 これで位置とサイズが基準に一致する。posterize等の色数削減後処理は禁止(顔が潰れる)。
生成後にシート全体または各フレームへ一律の横・縦補正を追加してはいけない。 特に非等方の `85%x100%` 等を最終検証後に掛けることを禁止する。寸法不良はその行を再生成して直す。
# 基準シートとの突き合わせ(キャラ差し替え方式ではこれが主) python3 .claude/skills/pixel-asset-gen/scripts/compare_to_reference.py <生成シート> <基準シート>
合否に使うのは次の3つ:
**顔の大きさは数値で測れない。** 色で肌を判定すると明るい髪色やクリーム色の服を肌と 誤検出する。土台を編集する方式なら自動的に揃うので、最終判断は比較画像の目視で行う。
そして最重要: **codexに各行の96px画像を `view_image` で自分の目で確認させる**。 「顔に黒い塊やゴミ画素が無いこと」は数値検査では検出できず、これで8体の不良を潰した。
機械検査の合格はidentityの合格を意味しない。全40フレームについて、確定した髪型・髪丈・ 髪飾りの側・瞳色・服色を原寸と400%で確認する。行ごとの一覧だけでなく、各行1コマ目を 順番に切り替える遷移GIFで「状態変更時に別人化・伸縮・ジャンプしないこと」を検査する。
最終候補は最初に `~/work/_tmp/YYYYMMDD_<name>アセット再生成/` へ保存し、比較シート、 全行GIF、遷移GIF、検査ログを添える。人間の目視承認前にruntimeの `pixel_sheet.png` を差し替えない。
1体あたり10回の画像生成で15〜25分が目安
セッションごとに後処理の実装が違い、品質差が出る
見たら、まず出力ファイルの検証をしてから再実行を判断する
エンジンは着席キャラを机の天板でクリップするため、**フレーム上端から78pxしか画面に出ない** (実測値。可視範囲 = クリップ線 − (spriteY − 96))。
手を机の高さに描くと隠れて静止画に見え、机より上に出すと宙に浮いて不自然になる
`office_bg_slots.json` の `front_rects` で指定する(CONTRACT.md参照)
候補完成後は実際のPixel Workspaceでも確認する。着席時はフレーム上端から約78pxしか見えないため、 workingの動作、thinkingの顎手、successの腕、errorの頬手が机のクリップ後も読めることを確認する。
Organization-as-Code for autonomous AI agents. Brain-inspired memory that grows, consolidates, and forgets. Multi-model (Claude/Codex/Gemini/Cursor/Ollama).
Repo: xuiltul/animaworks
音声ポップアップの疑似Live2Dアニメーション用フレームセット(表情×5フレーム)を、 grokのimage_editで既存bustupから生成しPIL合成で揃える手順。Animaのボイスチャットで 口パク・瞬きを動かしたい、新しいanimaにアニメーションフレームを追加したい、…