voxel-icon について
voxel-icon は、テーマをもとにコンパクトなアイソメトリックのボクセルイラストを生成するスキルです。標準では題材本来の色の関係を保ち、明示的な指定があれば別のパレットモードを使います。スタイル調整、画像確認、背景の正規化を行い、要望に応じてループアニメーションも作成します。
主な機能
- 01テーマからアイソメトリックのボクセルアイコンを生成
- 02標準では題材本来の色の関係を維持
- 03明示指定によるパレットモードに対応
- 04構図・ボクセル構造・縮小表示を確認
- 05背景を単色にした RGB PNG に正規化
- 06要望に応じてループアニメーションのフレームを作成
活用シーン
- 01テーマや概念を表す簡潔なアイコンの作成
- 02シリーズで視点とモジュール寸法を統一
- 03指定パレットによる配色バリエーションの作成
- 04ループするアニメーションアイコンの制作
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ biasia/ voxel-icon --skill voxel-iconインストール後、Claude Code で/voxel-iconを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/loop-animation.mdoreo-palette-library.mdpalette-standard-aggressive.mdpalette-standard.mdstyle-spec.mdscripts/build-generated-loop.pynormalize-gray-background.pyrequirements.txt詳細
Voxel Icon
ユーザーのトピックをもとに、新しいビットマップイラストを作成します。同梱の内部生成リファレンスに基づいて調整された構成、カメラ、ライティング、グラフィックの簡潔さを維持し、そこに描かれた題材をそのまま推測してはいけません。
必読資料
必ず references/style-spec.md と references/palette-standard.md を読みます。パレットモードが directed または directed-aggressive の場合に限り、references/oreo-palette-library.md を読みます。directed-aggressive の場合に限り、references/palette-standard-aggressive.md を読みます。ユーザーがループ、アニメーション、GIF、アニメーション WebP、または4フレームの動きを明示的に要求した場合に限り、references/loop-animation.md を読みます。カメラ、顔のライティング、グラフィックの色の振る舞いを確認するため、内部生成された assets/reference-sheet.png を読み込みます。ブロックの密度、大きな直方体の構成、継ぎ目の簡潔さを確認するため、内部生成された assets/macro-block-reference.png を読み込みます。ユーザーが求めない限り、同梱の題材を推測してはいけません。
設定
生成前に、パレットモードを記録します。
palette_mode: native
palette_preset: null
output_mode: still
nativeは厳格なデフォルトです。元のオブジェクトまたは絵文字の、認識可能な主要色、補色、アクセント色、黒、白、素材色の関係をすべて維持します。nativeに固定の色相許容リストはなく、題材を繰り返し使う赤・黄・青のセットに押し込んではいけません。nativeの色を Oreo のプリセットやキャリブレーションシートの色に置き換えてはいけません。directedはオプトインです。ユーザーが指向色または Oreo 由来の色を求める、パレットの一致を要求する、またはプリセットを指定した場合に限り有効にします。palette_presetが明示的に固定されていない場合は、レジストリ全体を検索します。directed-aggressiveはオプトインです。ユーザーがプリセットの積極的、表現豊かな、重層的な適用、または比較を明示的に求めた場合に限り有効にします。- Oreo プリセットが名前で指定された場合は
directedを意味し、directed-aggressiveではありません。 - 一致するプリセットが存在するだけで
directedモードを推測してはいけません。指定のないリクエストは常にnativeのままです。 - 出力のデフォルトは
stillです。動きをユーザーが明示的に要求した場合に限りloopを使用し、references/loop-animation.mdに従います。
ワークフロー
- 主題、用途、アスペクト比、指定された正確なテキスト、出力がシリーズの一部かどうか、指定されている場合は明示的なパレットモードを抽出します。デフォルトは、テキストなしの正方形 RGB PNG 1 枚、
palette_mode: native、最終背景色を厳密に#F4F4F4とします。 - 提供された画像はユーザー入力として扱い、自己完結型の同梱シートは調整用の参考資料として扱います。ユーザーが明示的に編集を依頼していない限り、編集対象にはしません。
- 抽象的なトピックを、簡潔で認識しやすいオブジェクトまたは関係性 1 つに落とし込みます。識別の手掛かりは 2 つか 3 つだけに絞ります。
- 主題を 1 つの粗い基本モジュールのグリッドに変換します。基本モジュールの整数倍の寸法を持つ、大きなボクセルブロックを少数使って構築します。隣接するセルは整った直方体にまとめ、内部の継ぎ目を目立たなくします。滑らかな形状ではなく、段差のあるシルエットを使います。シリーズの場合は、投影された基本モジュールのサイズとカメラのズームを固定し、グリッドを細かくせず、複雑な主題を簡略化します。
references/palette-standard.mdに基づいて、モード固有のカラープランを記述します。nativeでは、抽出したネイティブの色の特徴を各コンポーネントに直接割り当てます。directedでは、B/D 形式の構造的な配色、選択したプリセット全体、プリセット全体のトーン調整、トークンの割り当ても加えます。directed-aggressiveでは、さらに離散レイヤーのルールも適用します。- 以下の仕様に沿って構造化されたプロンプトを作成し、組み込みの画像生成ツールを、必要最小限の参照資料とともに呼び出します。シリーズの最初のアセットが承認された後、以降のアセットでは、同じシリーズから承認済みの出力を 1 つ選び、素材、基本モジュール、カメラの調整用参考資料として含めます。主題はコピーしません。
- 結果を原寸とサムネイルの両方で確認します。滑らかなメッシュ、丸みを帯びたブロック、密集したタイル状の表面、2D ピクセルアート、煩雑な背景、不整合な遠近法、主題の認識しにくさ、記録されたパレットモードやカラープランに一致しない色があれば却下します。
- 編集する前に、反復時のフィードバックを分類します。フィードバックが色、影、素材、背景のみに関するものであれば、現在の出力を編集対象として使用し、シルエット、ボクセルのトポロジー、コンポーネント数、コンポーネントの位置、カメラ、スケール、フレーミングを明示的に固定します。パレットの修正中にオブジェクトを再設計してはいけません。
- 修正は、対象を絞ったものを 1 つだけ適用して反復します。色、影、素材、背景を修正する間、承認済みのオブジェクトは変更しません。
- 採用したレンダーに対して
scripts/normalize-gray-background.py INPUT.png OUTPUT.pngを実行します。これにより、主題を再レンダリングすることなく、モデル上でわずかにずれた灰色を正確な#F4F4F4の最終背景に置き換えます。 - 最終出力が不透明な RGB PNG であること、背景の均一な領域がすべて
#F4F4F4として計測されること、主題の形状、ピクセル、スケール、フレーミング、エッジ品質が変わっていないことを確認します。 output_mode: loopの場合は、まず実際のオブジェクトを特定し、references/loop-animation.mdの要件に従って、その物理的な動きのモデル、剛体グループ、可動部品、固定された接続部、前進・後退の状態を記述します。採用済みの静止画から、完全なポーズ画像を 2 枚生成します。目に見えて変化する意味上の領域を少なくとも 2 つ指定します。それらは独立して動いても、信頼できる剛体または関節運動の結果として一緒に変化してもかまいません。関節を新たに作ったり、固定された部品を切り離したり、新たに生成した 3D ポーズの代わりにフレーム全体を 2D 変換したりしてはいけません。生成した完全なフレームは、マスク、局所合成、インペインティング、背景の正規化、色合わせ、剛体の後処理変換を使わずに、そのまま組み立てます。
directed-aggressive では、すべての構造上の不変条件を維持し、references/palette-standard-aggressive.md を使用します。明示的な指定なしに有効化してはいけません。
背景の正規化
すべての作業用レンダーと最終アセットに、同じニュートラルな背景を使用してください。モデルに渡すプロンプトと最終画像のどちらにも、完全に均一な #F4F4F4 の背景を使用します。測定された隅の値、色かぶり、グラデーション、ビネット、アルファチャンネル、画像ごとのグレーのばらつきは、すべて欠陥として扱ってください。
採用したレンダーを決定論的に正規化します。
python scripts/normalize-gray-background.py INPUT.png OUTPUT.png
このスクリプトは均一な外周の境界部分をサンプリングし、境界につながった背景のみを分離して、囲まれた白い領域を保持したまま、変更していない被写体を正確な #F4F4F4 に合成します。不透明な RGB PNG を1つ出力します。不均一な境界部分や端に接する被写体を理由に処理を拒否した場合は、コンテンツが消えるまで許容値を上げるのではなく、レンダーを修正してください。
コンセプトの簡略化
- 具体的な物体では、そのシルエット、1つの色の特徴、1つの決め手となる特徴を保ちます。
- 抽象的なテーマでは、細部を加える前に、なじみのある物理的な比喩を選びます。
- 物体は1つを基本とします。デザインを表す鉛筆と定規、市場を表す棒と矢印のように、概念を伝える場合に限り、小さな2つの要素の組み合わせを認めます。
- 認識しやすさの代わりにテキストを使わないでください。文字を加えるのは、ユーザーが正確なテキストを指定した場合に限ります。
- ユーザーの指定にない目、顔、記号、アクセントタイル、内部のマークを作らないでください。
- 付属部分は、少なくともベースモジュール1つ分の太さを保ち、サムネイルサイズでも判別できるようにします。
- 主となる認識可能なパーツに、最も重要な役割を割り当てます。添える要素、アクセント、黒、白の役割は、ピクセル面積の測定値ではなく、意味に基づいて選びます。
- プロンプトを作成する前に、色の単位を定義します。形状とは、物理的につながった1つの塊、またはまとまりのある1つの付属物です。上面、正面、側面、模様、内部領域も、同じ形状に含まれます。
- 色を割り当てる前に、元の絵文字または実物が持つ、認識に必要な完全な色の特徴を抽出します。意味の異なる各パーツの色や、機能上の黒や白もすべて含めます。
nativeでは、元の色の関係をそのまま保ちます。茶色、オレンジ、緑、ティール、紫、ピンク、シアン、金属的なグレー、クリーム色など、元の色相はすべて使用できます。各色相の彩度を保ち、面の値が一貫するように意味に基づく OKLCH 補正を行ってください。ただし、より小さな推奨パレットに置き換えてはいけません。directedでは、B または D の色相を引き継がずに B/D 方式の割り当てロジックを使い、Oreo の40種類すべてのプリセットを検索して、選んだ完全なプリセットを本物のパーツに割り当てます。directed-aggressiveでは、同じプリセットのトークンを、実在する別々のレイヤーまたは段状のブロックに最大3つまで使用できます。連続した1つの平面に複数の色を配置してはいけません。- 指定した色調の変更は、プリセット全体に適用します。相対的な sRGB 彩度
Crをスケーリングし、絶対的な OKLCHCはスケーリングしないよう、色相を一貫してシフトしてください。 - どのモードでも、まとまりのある形状ごとに、支配的な有彩色の関係を1つ保ちます。これは形状ごとの一貫性に関するルールであり、アイコン全体の色相の範囲を制限するものではありません。黒、白、明度から導いた面は、この関係を補助できます。
- 元の絵文字または実物にその関係が含まれている場合は、色の異なる、実際に分離したパーツごとに、それぞれの元の色系統を保てます。バッチ全体に共通のパレットを適用したり、アイコンごとの色系統を1つまたは2つに制限したり、以前に生成した被写体から色を借用したりしてはいけません。
- 補助色を加える前に、黒に近い色や明るいニュートラルカラーで、より明確に役割を果たせないかを検討してください。構造や認識には黒を、支持部分、切り抜き、翼、顔、開いた面には白を使用します。
プロンプトの要件
次の簡潔な構成を使い、角括弧内のテキストを置き換えます。
Use case: stylized-concept
Asset type: isolated isometric voxel icon
Primary request: Build [topic] as [single object or compact relationship].
Input image: internally generated bundled reference sheet used only for voxel construction, camera, material, lighting, and visual density; do not infer its subjects or copy its composition.
Scene/backdrop: perfectly flat neutral light-gray #F4F4F4 background with generous empty space; uniform edge to edge, no warm tint, gradient, vignette, environment, horizon, or floor.
Output handling: the final canvas remains opaque RGB with exact #F4F4F4 in every clean background region; no transparency or alpha background.
Palette mode: [native | directed | directed-aggressive]. Default to native when the user does not explicitly select another mode.
Subject: one compact focal object assembled from a small number of large rectilinear blocks aligned to one coarse base module; retain [two or three identity cues].
Construction: low-density macro-voxel geometry on one coarse base-module grid. Use about 12–30 visible rectangular blocks, normally no more than 40. Make every block dimension an integer multiple of the base module. Prefer large 2×1×1, 2×2×1, or larger cuboids for body masses and hide internal coplanar seams; no smooth base mesh.
Series voxel scale: keep the projected base module at about 5–7% of the canvas short side; on a 1254×1254 image target roughly 63–88 px. Build the dominant span from about 7–12 base modules, with a hard range of 6–14. Reuse the same base module and camera zoom across the series; never introduce a finer grid for small details. Simplify or merge the subject rather than adding blocks.
Camera: orthographic three-quarter isometric view, slightly elevated, showing top, front, and one side consistently.
Composition/framing: [aspect ratio], centered suspended object occupying roughly 55–72% of the frame; preserve clear empty background beneath it.
Lighting/mood: even high-key illumination expressed as whole-face value steps plus a restrained broad area-light reflection: every top face is uniformly brighter across its full area, every front face uses one uniform middle tone, and every side face uses one uniform darker tone. The source-facing plane may catch a clean mirror-like lift across most or all of the plane, never only along its edges. Keep external shadows extremely faint and diffuse, with no readable grounding patch or colored spill.
Color system: first extract this subject's complete source-native color signature, including all semantically distinct component colors plus functional black and white. In native mode, use those colors directly without a fixed hue whitelist, batch-wide palette, or convergence toward red-yellow-blue; correct only each source hue's OKLCH saturation and face values. The one-main-color rule applies separately to each coherent shape and does not limit the whole icon's color range. In directed mode, search all 40 complete Oreo presets and map one selected relationship onto the subject's roles. In directed-aggressive mode, use that same preset with discrete layer allocation. In every mode, keep each continuous visible plane spatially uniform, preserve functional black and white, and change color only at a real layer, step, seam, or separate component.
Materials/textures: solid opaque cast-acrylic blocks with fully covering saturated body color and a restrained polished surface. Give each visible plane one clean, nearly uniform tone; the source-facing whole plane carries the broad specular highlight and mild mirror-like sheen. Keep planar faces crisp and necessary seams subtle. No background, rear edge, or neighboring block is visible through a block. No edge highlight, rim light, bright outline, point hotspot, narrow reflection stripe, strong gradient within a face, transmission, refraction, internal overlap, grain, mottling, texture map, bevel, glass, waxy plastic, or chrome-like reflection.
Text (verbatim): "[exact text]" or none.
Constraints: preserve the shared coarse base module, integer-multiple block dimensions, coherent isometric axes, simple silhouette, and thumbnail readability.
Avoid: silently switching native mode to a named preset, unnecessary second or third chromatic families when black or white can carry the role, decorative rainbow palettes, inconsistent base-module scale across a series, refining the grid to fit detail, obvious cast shadow, contact shadow, grounding patch, reflected light spill, floor plane, pedestal, gray-background drift, transparent canvas, warm background, cream tint, gradient, vignette, 2D pixel art, Minecraft environment, toy-brick studs, rounded voxels, smooth mesh, low-poly triangles, outlines, transparent or translucent object material, glass, internal transmission, edge highlights, rim highlights, white block outlines, point highlights, narrow reflection streaks, cloudy frosted resin, waxy toy plastic, chrome or metallic reflections, surface texture, scenery, dense detail, logo, watermark.
品質ゲート
以下の条件をすべて満たす場合にのみ採用します。
- 目に見えるすべての形状は、1つの粗いベースモジュールグリッドに沿って配置された、大きな直方体のボクセルブロックの小さな集合体として表現します。
- すべてのブロックの寸法は、共通のベースモジュールの整数倍とします。局所的な微細ボクセルグリッドは使用できません。
- 大きな塊は、内部の同一平面上の継ぎ目を隠した、結合された直方体で構成します。タイル状にキューブを並べた表面には見えないようにします。
- シリーズ内では、投影されたベースモジュールのサイズを固定されたスケールのおおむね±10%以内に保ち、カメラのズームも一貫させます。
- 主な広がりには通常7~12個のベースモジュールを使用し、絶対範囲である6~14個を超えないようにします。
- 対象には通常、見えるブロックを12~30個使用し、ユーザーの明示的な承認なしに40個を超えないようにします。
- 対象全体に同じ3つのアイソメトリック軸を適用します。
- シルエットは段状でコンパクトにし、テキストなしでも認識できるようにします。
- 内部のマークはすべて、要求された識別の手がかりを補強するものにします。意図せず顔のように見えるアクセントは加えません。
- 上面、正面、側面では、色相を保った明度差を一貫して付けます。鏡面反射の明るさを加える場合は、広範囲で控えめにし、光源側を向いた面の大部分または全体を覆うようにします。
- ブロックは、不透明で磨かれたキャストアクリルとして表現します。本体は背景と背後の形状を完全に遮ります。縁の輝きではなく、面全体に控えめなエリアライトの反射を加え、明瞭で鏡のような表面仕上げを表現します。
- 記録された
palette_modeはリクエストに一致させます。指定がない場合はnativeを使用します。 nativeでは、元の絵文字または実物の、認識可能な構成要素の色の関係を直接的な色の基準として維持します。名前付きプリセット、固定された色相の候補、キャリブレーション用の対象のパレット、バッチ用パレットで置き換えてはいけません。directedでは、ユーザーが指定した場合を除き、名前付きの完全なプリセットを1つ選び、全40種類のプリセットレジストリから選択して、色を持つ構成要素全体に適用します。directed-aggressiveでは、同じプリセットのトークンを最大3つまで使用できます。ただし、実在する別個のボクセル層、段差、継ぎ目、または構成要素にのみ適用します。- 形としてまとまりのある部分には、それぞれ支配的な色の関係を1つだけ適用し、連続する各平面の色は均一にします。機能上必要な黒と白は、これらを補助できます。
- 連続する各平面の色は均一にします。パレットの変更は、実在するボクセル層、段差、継ぎ目、または別個の構成要素の位置に限ります。
- 1つの形状に複数の色の領域を設ける場合は、選択したモードに従い、構造上異なる層に配置する必要があります。そうでなければ、支配的な色系統を維持するか、機能上必要な黒または白に置き換えます。デザイン、パレット、グラフ、虹などの意味的なテーマが、この制限に優先することはありません。
- 黒は構造または認識に関する情報を担い、白は開放された面または支持面を担います。どちらも、根拠のない装飾として使用しません。
- 派生した面の色は、ベースカラーからの色相差を約3°以内に保ち、追加の色系統として数えません。
- 色のある面は、
nativeでは元の色系統の彩度を維持します。directedモードでは、プリセットのトークンに対する相対sRGB彩度Crのおおむね92~105%以内に保ちます。側面が灰色になったり、濁った色になったりしないようにします。 - 認識の主要な手がかりとなる構成要素には、認識のために意図的な例外が必要な場合を除き、支配的な色系統を適用します。
- 対象の面積、背景の面積、またはパレットの面積の割合を計算したり、生成の判定条件にしたりしてはいけません。
- 最終的なRGB PNGでは、きれいな背景部分すべてに正確な
#F4F4F4を使用します。暖色かぶり、ビネット、画像ごとのグレーのずれ、アルファチャンネルは使用しません。 - 対象は、下に何もない背景がはっきり見える状態で浮かせます。外側に影を付ける場合は、きわめて薄く拡散させ、接地や接触を示す影として認識できないようにします。
- ピクセルの検査が実用的な場合は、汚れのない四隅のパッチと対象の下にあるきれいなパッチを比較します。各チャンネルの平均RGB値の差を3階調以内に保ち、背景の赤と青の差も3階調以内に保ちます。
- 小さなアイコンとしても、構図が明瞭に伝わるようにします。
- パレットのみを変更する場合は、編集対象のシルエット、占有するボクセルセル、構成要素間の関係、カメラ、フレーミングを変更しません。
- ユーザーが要求した場合を除き、同梱されたキャリブレーション用の対象を再現しません。
重点修正
- 仕上がりがボクセルテクスチャの滑らかなモデルになった場合は、粗いベースモジュールに沿った大きな直交ブロックからジオメトリを再構築するよう指定します。
- 2D ピクセルアートのように見える場合は、高い位置からの正投影ビューに戻し、3 つの面の方向が見えるようにします。
- Minecraft のように見える場合は、地形、空、プロップ、ピクセルテクスチャ、ゲーム世界のライティングを取り除きます。
- 形状がノイズっぽい、または格子状に見える場合は、隣り合うセルをより大きな直方体にまとめ、同一平面上の継ぎ目を隠し、二次的なブロックを取り除き、内部の模様を簡略化します。
- アセット間でベースモジュールのサイズが異なる場合は、すべてのアセットを固定された投影モジュールとカメラズームに戻します。より複雑なオブジェクトは、格子を細かくするのではなく、ブロックの数を減らしてサイズを大きくして再構築します。
- 全体の幅が 14 モジュールを超える場合、または見えるパーツが 40 個を超える場合は、再生成する前に構造を縮小します。
- 識別しにくい場合は、全般的なディテールを追加するのではなく、特徴を決める 2 つの要素だけを強調します。
- つや消し、またはワックスのようなプラスチックに見える場合は、ボディを不透明に保ち、光源側を向いた平面の大部分または全体に、控えめで幅広い面光源の反射を加えます。エッジの輝き、細い反射線、強いグラデーション、成形されたベベルは加えないでください。
- 透明、半透明、またはガラスのように見える場合は、透過、屈折、背面エッジの可視化、背景の透けをすべてなくします。外側の表面にだけ、明確な光沢を残します。
- 各ブロックの縁や角が明るく光っている場合は、それを取り除きます。各面を 1 色のフラットな色調に戻し、上面・正面・側面の面全体にライティングの違いを表現します。
- 地面に接地して見える場合は、すべての接地影を取り除き、残った影も床を定義できないほどかすかで柔らかいものにします。
- 元の色がくすんで見える場合は、ネイティブカラーの
Lとhを保ったまま、色域内で色相ファミリーの彩度を約 25~40% 高めます。指定色がくすんで見える場合は、プリセット全体の相対 sRGB 彩度スケールを0.08–0.15高め、Cr = 1を上限とします。明るさを上げて補正しないでください。 - 彩度のみを修正する場合は、大きな各面の
ΔL ≤ 0.02と、編集対象からの色相のずれを±2°以内に保ちます。黒と白は変更しないでください。 - ひとつのまとまった形状に、ソースにない無関係な色相ファミリーが複数含まれている場合は、意味のある元来の色相ファミリーを残し、追加された色相だけを黒、白、または明度由来の面色に置き換えます。ソースに由来する色を、実際に別個のコンポーネントから取り除いてはいけません。
- 連続した面にグラデーションがある場合は、トークン由来の単色に量子化します。意図した色の変化は、ジオメトリを変えずに、別個のボクセルレイヤーまたは段差のあるブロックに移します。
- 仕上がりが単調、または輪郭が弱い場合は、エッジ、縞、矢印、瞳、ツールの先端に黒を加えます。キャリア、パネル、翼、切り抜き、広く落ち着いた面には白を加えます。
- 色に関するフィードバックによって新しいシルエットやコンポーネントが追加されたり、コンポーネントが削除されたり、レイアウトが変わったりした場合は、その修正版を破棄し、直前の出力に対する厳密な色変更としてやり直します。
- 最終的な背景が
#F4F4F4からずれている場合は、採用済みのレンダリングにグレー正規化処理を実行します。オブジェクトを再生成したり、色を変更したりしないでください。