with one click
generate-pixelart
ドット絵・ピクセルアートを生成。「ドット絵を生成」「ピクセルアートを作って」「GBA用の画像を作って」時に使用
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
ドット絵・ピクセルアートを生成。「ドット絵を生成」「ピクセルアートを作って」「GBA用の画像を作って」時に使用
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Cursor Agent CLI の Composer 2 系モデルへ実装作業を委譲し、push と Draft PR 作成までを detached な named tmux セッションで実行させる skill。Claude Code / Codex / Pi Agent から「Cursor Composer に任せたい」「別セッションで Cursor に実装させたい」「作業 branch で実装して Draft PR だけ作らせたい」ときに使う。PR description は委任元が作成し、Cursor には指定済み PR 本文ファイルを使わせる。merge、close、branch delete、force-push、amend、Jira やチケットへのコメントはさせない。
別の tmux ペイン(既定)または detached セッション(fallback)で Claude Code にタスクを委譲する。
Pi Agent へ実装作業を委譲し、push と Draft PR 作成までを tmux 右ペイン(既定)または detached セッション(fallback)で実行させる skill。Claude Code / Codex から「Pi Agent に任せたい」「別ペインで実装させたい」「作業 branch で実装して Draft PR だけ作らせたい」ときに使う。PR description は委任元が作成し、Pi Agent には指定済み PR 本文ファイルを使わせる。merge、close、branch delete、force-push、amend、Jira やチケットへのコメントはさせない。
一日の Claude Code / Codex / Pi agent / Cursor セッションをローカルセッションファイルから振り返り、設定・rules・skills・フック・運用を改善する。終業時の振り返り、session retro、daily AI review、Claude/Codex の設定見直し、rules 改善、プロンプト改善をしたい時に使用
Git管理外のファイルをcodex CLIでレビュー。「このファイルをcodexでレビュー」「設定ファイルをレビュー」時に使用
Git管理下のコードをcodex CLIでレビュー。「codexでレビュー」「PRをレビュー」「変更をレビュー」時に使用
| name | generate-pixelart |
| description | ドット絵・ピクセルアートを生成。「ドット絵を生成」「ピクセルアートを作って」「GBA用の画像を作って」時に使用 |
| argument-hint | <プロンプトまたは説明> |
AI画像生成 → ドット絵風再生成 → true pixel art変換の3ステップでドット絵を生成します。
【重要】generate-imageスキルの呼び出し時は、必ず -m gemini-3-pro-image-preview -s 1K を指定してNano Banana Proモデルを使用すること。 デフォルトのNano Banana(gemini-2.5-flash-image)は参照画像ベースのスタイル変換(Step 2)が効かないため、ドット絵パイプラインには不向き。
$ARGUMENTS: 生成したいドット絵の説明(日本語可)/tmp 配下に出力することgenerate-imageスキルを使い、まず高品質なイラストを生成する。
-m gemini-3-pro-image-preview -s 1K を必ず指定すること/tmp 配下にすること(例: /tmp/pixelart_step1.png)generate-imageスキルを使い、Step 1の出力を参照画像として、ドット絵スタイルで再度生成する。
GBA-style pixel art character bust-up for 128x85 screen. True pixel art, crisp 1px edges, no anti-aliasing, no gradients, 256-color palette, optional subtle dithering.16-bit pixel art style, limited color palette, no anti-aliasing, clean pixel edges-m gemini-3-pro-image-preview -s 1K を必ず指定すること/tmp 配下にすること(例: /tmp/pixelart_step2.png)AI生成画像はグリーン背景を指定してもピクセルごとに微妙な色ブレが生じる。ppa変換前にグリーン系のピクセルを完全な単一色 #00FF00 に統一しておくことで、変換後の背景色ムラを防ぐ。
convert <step2-output> -fuzz 35% -fill '#00FF00' -opaque '#00FF00' <unified-output>
-fuzz 35% でグリーンに近い中間色も含めて #00FF00 に統一する。前景のグリーン系の色まで置換されてしまう場合は値を下げて調整する/tmp 配下にすること(例: /tmp/pixelart_step2_unified.png)proper-pixel-artでダウンサンプル+量子化を行い、true pixel artに変換する。
uvx --from proper-pixel-art ppa <unified-output> -o <final-output> -c <colors> -w <pixel-width> -u 1
-c: 量子化色数(デフォルト256、GBA BG向けなら256、GBAスプライト向けなら16など用途に応じて調整)-w: 入力画像の1ドット幅を手動指定する(必須)。AI生成のドット絵風画像はクリーンなピクセルグリッドを持たないため、自動検出では正しいドット幅を判定できない。入力画像の幅 / 目標解像度の幅 で計算する(例: 1K画像(1264px幅)でGBA BG 240px幅を狙う場合、1264 / 240 ≈ 5 → -w 5)-u 1: 初期アップスケールを無効化する(必須)。デフォルトでは入力画像が2倍にアップスケールされてから -w が適用されるため、-u 1 を指定しないと出力サイズが想定の2倍になる出力画像をReadツールで目視確認し、ユーザーに結果を伝える。
/tmp/pixelart_step1.png に生成(アスペクト比 3:2)/tmp/pixelart_step2.png に再生成(目標240x160だが、プロンプトには長辺128px上限の128x85を指定)convert /tmp/pixelart_step2.png -fuzz 35% -fill '#00FF00' -opaque '#00FF00' /tmp/pixelart_step2_unified.png
-w 5、-u 1で初期アップスケール無効化):
uvx --from proper-pixel-art ppa /tmp/pixelart_step2_unified.png -o final.png -c 256 -w 5 -u 1
final.png を目視確認キャラクターのバストアップBGを作る場合、1:1で生成するとキャラが小さくなりドット絵変換時に潰れやすい。 9:16の縦長で生成→ppa変換→頭頂部基準で正方形に切り出し することで、キャラを大きく描画できる。
-a 9:16 で縦長イラストを生成(グリーンバック)-a 9:16)-w は1:1の場合と同じ値を使う(例: 1:1で -w 4 なら縦長でも -w 4)
-w 4 → 192x344 の出力になるconvert <step3_full.png> -background '#00FF00' -gravity North -extent 256x256 <step3.png>
-gravity North で画像上部(頭)を基準に切り出すconvert <step3.png> -type Palette BMP3:<output.bmp>
このパターンを使うべき場面:
使わなくてよい場面:
複数のスプライトを1枚の画像にまとめて生成し、切り出し後に個別にppa変換する。 デザインの統一感を保つために、関連するスプライトは可能な限り1枚にまとめて生成する。
Step 1: generate-imageスキルで全スプライトを1枚の画像に並べて生成する
#00FF00)を指定Step 2: Step 1を参照画像としてドット絵風に再生成(同じアスペクト比)
Step 2.5: グリーン背景を単一色に統一
切り出し: ImageMagickで各スプライトを個別に切り出す
# 例: 1264x768の画像から3つのスプライトを切り出し
convert <step2_unified.png> -crop 420x768+0+0 +repage /tmp/sprite1_cut.png
convert <step2_unified.png> -crop 420x768+422+0 +repage /tmp/sprite2_cut.png
convert <step2_unified.png> -crop 420x768+844+0 +repage /tmp/sprite3_cut.png
identify -verbose や目視で確認する-flop を追加するStep 3: 切り出した各画像に対して個別にppa変換する
uvx --from proper-pixel-art ppa /tmp/sprite1_cut.png -o /tmp/sprite1_ppa.png -c 16 -w <pixel-width> -u 1
-c 16: GBAスプライトは4bpp(16色)-w: 切り出し画像の幅 / 目標スプライト幅 で計算BMP3変換: 各スプライトをBMP3 4bppに変換
convert <ppa.png> -type Palette -colors 16 BMP3:<output.bmp>
パレットindex 0修正(必須): ImageMagickの-colors 16量子化ではパレットの並び順が保証されず、index 0が#00FF00にならないことが多い。GBAスプライトではindex 0が透過色として扱われるため、BMP3変換後に必ずパレットindex 0を#00FF00に修正すること。
import struct
def fix_sprite_palette_index0(bmp_path):
with open(bmp_path, 'rb') as f:
data = bytearray(f.read())
w = struct.unpack_from('<i', data, 18)[0]
h = abs(struct.unpack_from('<i', data, 22)[0])
bpp = struct.unpack_from('<H', data, 28)[0]
data_offset = struct.unpack_from('<I', data, 10)[0]
n_colors = 1 << bpp
# Read palette and find green
pal = []
for i in range(n_colors):
off = 54 + i * 4
b, g, r = data[off], data[off+1], data[off+2]
pal.append((r, g, b))
green_idx = next((i for i, c in enumerate(pal) if c == (0, 255, 0)), None)
if green_idx is None:
# Find closest to green
green_idx = min(range(n_colors), key=lambda i: pal[i][0]**2 + (255-pal[i][1])**2 + pal[i][2]**2)
if green_idx == 0:
# Already at 0, ensure exact value
data[54], data[55], data[56] = 0, 255, 0
else:
# Swap palette entries
old0 = pal[0]
data[54], data[55], data[56], data[57] = 0, 255, 0, 0
offg = 54 + green_idx * 4
data[offg], data[offg+1], data[offg+2], data[offg+3] = old0[2], old0[1], old0[0], 0
# Swap pixel indices (4bpp packed: high nibble = even col, low nibble = odd col)
row_bytes = (w * bpp + 31) // 32 * 4
for row in range(h):
row_start = data_offset + row * row_bytes
for col in range(w):
byte_off = row_start + col // 2
hi = (data[byte_off] >> 4) & 0x0F
lo = data[byte_off] & 0x0F
if col % 2 == 0:
if hi == 0: hi = green_idx
elif hi == green_idx: hi = 0
data[byte_off] = (hi << 4) | lo
else:
if lo == 0: lo = green_idx
elif lo == green_idx: lo = 0
data[byte_off] = (hi << 4) | lo
with open(bmp_path, 'wb') as f:
f.write(data)
この関数を全スプライトBMPに対して実行する。省略するとGBA上でスプライトの透過が効かず、緑色の矩形が表示される。
一括生成の判断基準:
convert (ImageMagick) — 背景色の単一色統一uvx (uv) — proper-pixel-artの実行-fuzz 値を下げて調整uvx --from proper-pixel-art ppa --help で確認