pixel-art-studio について
pixel-art-studioは、ピクセルアート制作者やゲームアーティスト向けのスキルです。再生成可能なPythonスクリプトと、プレビュー・批評・修正の反復を軸に、アニメーションや画像のクリーニングにも対応します。
主な機能
- 01Pythonスクリプトでピクセルアートを描画
- 02作品をプレビューして反復確認
- 03パレット、レイヤー、フレームを管理
- 04PNG、GIF、スプライトシートを出力
- 05読み込んだ画像をクリーニング
活用シーン
- 01再生成可能なピクセルキャラクターの制作
- 02アニメーションフレームとゲーム用スプライトシートの作成
- 03生成画像や乱雑な画像の整理
- 04参考画像から画風を学習
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gamezxz/ pixel-art-studio --skill pixel-art-studioインストール後、Claude Code で/pixel-art-studioを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.md.gitignoredocs/index.htmldocs/assets/knight_sheet.jsonexamples/capybara-4dir.pyanime-cast.pyknight-walkcycle.pyknight-anim.pyslime-bounce.pyslime-build.pytactical-verdant-oracle.pytall-iron-man-repulsor.pypixel-art/anime-cast/build.pypixel-art/capybara-4dir/build.pyspritesheet.jsonpixel-art/catmage-lpc/build.pycatmage_lpc.jsonpixel-art/knight-spear-lpc/build.pyknight_spear_lpc.jsonpixel-art/tactical-verdant-oracle/tactical_oracle_validation.jsontactical_oracle_sheet.jsonpixel-art/tall-iron-man-repulsor/tall_iron_man_validation.jsontall_iron_man_beam_sheet.jsonreferences/animation.mdcleanup.mdexport.mdreferences/learned/001-chibi-jrpg-cast.md002-dynamic-attack-canvas.md003-dramatic-chibi-swordsman.md詳細
ピクセルアートスタジオ
自己完結型のスタジオです。scripts/pixelstudio.py(Pillow のみ)を使ってすべてのピクセルを描くビルドスクリプトを作成し、プレビューをレンダリングして、自分の目で確認し、批評して修正する。これを繰り返します。この「確認→批評→修正」のループこそが、品質を高める仕組みのすべてです。決して省略しないでください。あなたがアーティストであり、ライブラリは単なる道具です。
要件:python3 -c "import PIL" — 見つからない場合は、pip3 install --user pillow を実行します。
ループ
-
概要 — キャンバスサイズ、パレット(色数の厳格な上限を設定)、スタイル、輪郭線のルール、光の方向を決めます。
references/patterns.mdとreferences/palettes.mdを参照し、参考にしたスタイルが合うかどうか、references/learned/INDEX.mdを確認します。 -
ビルドスクリプト — 作業ディレクトリに
pixel-art/<slug>/build.pyを作成します。このスクリプトが作品の唯一の信頼できる情報源であり、実行するたびにすべてを再生成します。ピクセルを毎回すべてハードコードするのではなく、図形をパラメーター化(位置、つぶし具合、フレームのオフセット)します。アニメーションの各フレームは関数呼び出しにできます。import sys; sys.path.insert(0, "/Users/game/Projects/.claude/skills/pixel-art-studio/scripts") from pixelstudio import Sprite, PALETTES, ramp, mix BODY = ramp("#38b764", 5) # hue-shifted 5-step ramp from a base color s = Sprite(32, 32, palette=BODY + ["#1a1c2c", "#f4f4f4"]) def draw_slime(squash=0): # parametric → reuse for every frame s.ellipse(6, 12 + squash, 25, 27, BODY[0]) # darkest first s.ellipse(6, 11 + squash, 24, 26, BODY[2], only="opaque") # restack lighter, shifted to light s.outline(BODY[0], where="inside") # selout draw_slime() s.preview("preview.png", scale=10) # LOOK at this file s.stats() # and read these numbers -
実行 —
cd pixel-art/<slug> && python3 build.py -
確認 —
preview.pngを読み込みます(判断に迷ったらs.save_silhouette()やs.zoom()も使います)。references/validations.mdのチェックリストに照らし合わせ、項目ごとに正直に批評します。 -
修正 — build.py を編集して、再実行します。ユーザーに見せる前に、最低でもループを 2~3 回繰り返します。
-
納品 — マスター PNG を 1x と表示用の倍率(4~8x)で書き出します。アニメーションの場合は GIF/スプライトシートも書き出し、その後、出力ファイルを
openします(ユーザーの設定に従います)。
常に本来のピクセルサイズで作業します。拡大縮小は書き出し時に行い、整数倍のみとします。
API — scripts/pixelstudio.py
色の指定方法:"#hex" | (r,g,b[,a]) | パレットのインデックス(int) | None = 消去。
ほとんどの操作では、only= を使って描画範囲を制限できます。色を指定するとその色の上だけに描画し、"opaque" は不透明部分のみ、"empty" は空の部分のみを対象にします。これはマスキングの仕組みです。references/techniques.md の、図形をずらして陰影を付ける方法もこれを利用しています。
| 領域 | 呼び出し |
|---|---|
| キャンバス | Sprite(w, h, palette=None, snap=True) · s.layer(name) · s.frame(i) · s.use(frame=, layer=) |
| 描画 | px line rect(fill=) circle(cx,cy,r,fill=)(ピクセルパーフェクト) ellipse polygon contour fill(x,y) clear get(x,y) paste_png |
| ピクセルアート操作 | outline(c, where="outside"/"inside") · mirror_x mirror_y · shift(dx,dy,wrap=) · replace(old,new) · dither(box,c1,c2,mix,pattern) · gradient_dither(box,colors) · noise(box,c,density,seed) |
| 色 | ramp(base, steps, hue_shift) · mix(c1,c2,t) · PALETTES · s.set_palette(p, remap=) · s.to_palette(p, dither=) · s.quantize(n) |
| クリーンアップ(生成画像/乱雑なアート) | s.harden_alpha(threshold, steps) · s.despeckle(min_cluster) · s.dedupe_colors(tol) · s.dehalo() · s.clean(palette=, max_colors=, ...) · s.before_after(path) |
| アニメーション | s.add_frame(copy=True) · s.set_duration(ms, frames) · s.tag(name, from, to, direction) · s.copy_cel(layer, from_frame, to_frames, link=) · s.del_frame |
| 確認 | s.preview(path, scale, grid=, labels=) · s.zoom(path, x0,y0,x1,y1) · s.save_silhouette(path) · s.stats() · s.save_swatch(path) · s.used_colors() |
| 書き出し | s.save_png(path, frame, scale, bg) · s.save_gif(path, scale, tag, bg) · s.save_spritesheet(path, layout, scale, padding)(+エンジン用 JSON) · s.save_project / Sprite.load_project / Sprite.from_png(path, scale="auto", strip_bg=) |
ナレッジの参照先
| タスク | 参照先 |
|---|---|
| 新しいアートワーク全般(サイズ、ちび/ヒロイック/縦長タクティカルのプロポーション、シルエット優先の順序、タイル) | references/patterns.md |
| カラ―ランプ、シェーディング、ディザリング、AA、アウトライン、テクスチャ | references/techniques.md |
| アニメーション(フレーム数、タイミング、パペット操作、大型の攻撃セル、安定したピボット) | references/animation.md |
| 人型キャラクター(腕2本+脚2本)— 全移動セット(歩行/斬撃/突き/魔法詠唱/射撃/被ダメージ) | references/lpc.md + scripts/lpc.py — フレームをLPCユニバーサルシート(エンジン対応レイアウト)に組み立てます |
| パレットの選択、予算、プリセット、学習したパレット | references/palettes.md |
| エクスポート形式、エンジン(Unity/Godot/Phaser) | references/export.md |
| AI生成アート/乱雑なアートのクリーニング、パレットの固定、ハイブリッドパイプライン | references/cleanup.md |
| 既知の失敗パターン — 仕上げる前に確認してください | references/sharp_edges.md |
| 反復ごとの批評チェックリスト | references/validations.md |
| ユーザー提供アートから学習したスタイル | references/learned/INDEX.md |
ユーザー提供アートから学習する
ユーザーが学習用のピクセルアートファイル(เรียนรู้/ศึกษาไฟล์นี้)を送った場合:
永続化ルール: 学習内容はスキルプロジェクト自体を変更します。<skill> はこの SKILL.md を含むディレクトリに解決し、永続的な知識はそのディレクトリ内だけに書き込んでください。呼び出し元の作業ディレクトリ、./pixel-art/、クリップボードのパス、<file>_study/ はソースまたは一時的な分析場所であり、ナレッジベースではありません。完了した調査をこれらの場所だけに残さないでください。
python3 <skill>/scripts/study.py <file> [--save-palette <name>]→<file>_study/にzoom.png、swatch.png、silhouette.png、report.jsonが生成されます。- zoom.png と swatch.png を読んでください — レポートには数値(実際のサイズ、パレット、ランプ、ディザリング率、アウトラインの暗さ)が示されます。目視で抽出するのは技法です。クラスターの形、AAの配置、ディザリングの位置、ランプが形状にどう対応しているか、明るい側でのアウトラインの挙動を確認してください。
<skill>/references/learned/TEMPLATE.mdをもとに、学習カード<skill>/references/learned/NNN-<slug>.mdを作成します — ピクセル単位の観察と命令形のルールを記録し、感覚的な印象は記録しないでください。- 同じ変更で、
<skill>/references/learned/INDEX.mdに1行追加します。 - 学びが1つのビジュアルスタイルを超えて応用できる場合(アニメーション、エクスポート、検証、クリーニングなど)、関連する
<skill>/references/*.mdのルールファイルとナレッジの参照先も更新してください。 --save-palette <name>を指定すると、パレットをSprite(palette="<name>")としていつでも使えるようになります。保存したパレットデータも入力ファイルの隣ではなく、<skill>内にあることを確認してください。- 完了前に、新しく学習した永続ファイルがすべて
<skill>内にあることを確認してください。
後で学習したスタイルのアートを作成するときは、該当するカードを開いて、そのルールに従ってください。
ハイブリッドパイプライン — 生成アート/乱雑なアートからの作成(「B」パス)
ユーザーが画像モデル(codex-imagegen、SD+LoRA、FLUX、PixelLabのエクスポート、スクリーンショット、または乱雑なPNG)からのピクセルアートを求めている場合、このスキルは決定論的なクリーニング+固定+アニメーションのレイヤーとして機能します。手順の全容は references/cleanup.md を参照してください。次の1コマンドでインポートからクリーニングまでを一括実行できます。
python3 <skill>/scripts/pixelpipe.py <gen.png> --strip-checker --max-colors 24 --display 6
# lock to a shared game palette for cross-asset consistency:
python3 <skill>/scripts/pixelpipe.py <gen.png> --palette my_game
# learn the style while cleaning:
python3 <skill>/scripts/pixelpipe.py <gen.png> --strip-checker --study knight_style
元のグリッドを復元し(粗雑な拡大にはブロックサンプリングを使用)、画像に焼き込まれたチェッカーボードを除去し、アルファを強化し、孤立ピクセルを除去し、色を重複排除して、パレットを固定し、clean.png と、引き続き編集する再生成可能な build.py を出力します。クリーニング後は通常のループ(編集/アニメーション化/パレットの入れ替えを決定論的に実行)に戻ってください。ここでスキルの能力がジェネレーターを上回ります。
規約
- アートワークは
./pixel-art/<slug>/に保存します(build.py とすべての出力をまとめます)。 - エクスポートしたPNGを手動で編集しないでください。build.py を編集して再実行します。
- ランダム性を使う場合は
noise(seed=)のみ使用します。レンダリングは決定論的でなければなりません。 - 成果物は完成時に
openし、レポートには1xマスターのパスを含めます。