codeart2d について
codeart2dは、テキスト仕様とスクリプトで2Dアートを制作するスキルです。コード描画を明示的に求める場合や画像生成ルートがない場合に使い、ピクセルアート、SVG、リグ、エフェクト、マップ、パララックスをプレビューと品質検査付きで生成します。
主な機能
- 01PixelSpecとポータブルSVGの描画
- 02アニメーションリグとエフェクトの構築
- 03オートタイルセットとプレイ可能なマップの作成
- 04パララックス背景と環境モーションの生成
- 05プレビューと品質検査を含む成果物のパッケージ化
活用シーン
- 01パレット違いのピクセルスプライトを描画
- 02リグ付きキャラクターアニメーションを制作
- 03継ぎ目検査付きの地形タイルを生成
- 04衝突判定とナビゲーションを備えた俯瞰マップを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 0x0funky/ agent-sprite-forge --skill codeart2dインストール後、Claude Code で/codeart2dを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/dirt-path.material.jsonhero.anim.jsonhero.rig.svgmeadow-layout.jsonpalette.jsonparallax-gen.jsonplate-effects.jsonpotion-icons.svgslash.fx.jsonslime.pixelspec.jsonwalker16x24.pixelspec.jsonwater-grass.material.jsonreferences/fx-language.mdfx-runtime-contract.mdlayouts-and-parallax.mdpixelspec.mdrasterizers.mdrig-animation.mdstyle-envelope.mdsvg-profile.mdtiles-and-maps.mdreferences/runtime/fx-template.mjsreferences/schemas/codeart.schema.jsoncommon.schema.jsonmap.schema.jsonsprite.schema.jsonscripts/ambient_bake.pyautotile_build.pycodeart_core.py詳細
コードアート 2D
アートはテキスト(PixelSpec JSON、ポータブル SVG、リグ、FX、マテリアル、レイアウト、パララックスの各仕様)で記述し、スクリプトでレンダリング、チェック、パッケージ化します。画像モデルは使用しません。これは宣言されたアートソース(art_source: "code")であり、プレースホルダーではありません。
使用する場合
- ユーザーがコードで描画するアートを明示的に求めている場合:PixelSpec または SVG スプライト、コードで描画するパレットのバリエーション、コードリグ、コード FX、継ぎ目を検証済みのオートタイルセット、コードで作成するレイアウト、様式化されたパララックスやアンビエントループ。
route_media.pyがno-route(終了コード 3)を出力する場合:API キーが設定されておらず、ローカルの画像または動画ルートもありません。その旨を伝え、キーや CLI の追加も提案してください。- 画像モデルを支援するポーズやレイアウトのガイド(最終アートではなく、補助素材)。
使用しない場合
- 画像または動画ルートが存在し、ユーザーがコードアートを求めていないあらゆるアートリクエスト:generate2dsprite、generate2dmap、video2dspriteで生成します。
- 絵画調、有機的、または個性を強く表すアート、似顔絵、ポートレート、HD-2D の背景、テクスチャ付き地形、リアルな炎、煙、水。
- ライセンスされたキャラクターを仕様にトレースすることは絶対に避けてください。
機能の確認(セッションごとに 1 回)
python "<skill-dir>/../generate2dmedia/scripts/route_media.py" resolve --kind image(または --kind video)を実行します。ルート名が表示された場合、ユーザーがコードアートを求めていない限り、画像または動画スキルがリクエストを処理します。同じフォルダー内の forge_doctor.py で全体像を確認できます。encoding.stdout で失敗した場合は、PYTHONUTF8=1 を設定します。SVG を扱う場合は、マシンごとに 1 回、svg_render.py doctor --report <new.json> も実行してください。
アートソース
このスキルは、ルートの順序における明示的な最終手段です。キーが設定されている場合は API、次にローカル画像ツール、その後にコードアートを使用します。コードアートを使うのは、ユーザーが求めた場合、またはルートが存在しない場合に限ります。生成アートの代わりとして、黙って使用してはいけません。描画する前に、style-envelope.mdでコードアートでうまく描画できるものとできないものを確認してください(この表は強みを示すもので、ルートの順序ではありません)。リクエストに画像モデルが必要な場合は、ユーザーに伝えてください。すべての結果について、「コード描画、画像モデル不使用」と明示してください(codeart-meta.json に "art_source": "code" が記録されます)。画像モデルの出力として提示してはいけません。
ホストに関する注意事項
- **Codex:**このスキルは明示的なリクエストがあった場合のみ使用します。ユーザーがコードアートを求めていない限り、アートは
image_genとroute_media.pyで作成します。レビューシートはview_imageで確認してください。 - **Claude Code:**リクエストがあった場合、または
no-routeの後に限り使用します。報告する前に、すべてのpreview-*.pngとreview/*.pngを Read で確認してください。ツールは Bash で実行します。<skill-dir>は${CLAUDE_SKILL_DIR}です。 - **Grok:**同じ Python ツールを実行します。ユーザーがコードアートを求めていない限り、アートはネイティブ画像ツールで作成します。
コマンド
各ツールは、ユーザーのプロジェクトルートから 1 行のコマンドとして実行します:python "<skill-dir>/scripts/<tool>.py" ...。<skill-dir> はこのスキルのフォルダーです。兄弟スキルはその隣にあります(--build-clips は <skill-dir>/../generate2dsprite/scripts/build_animation_clips.py を呼び出します)。仕様と出力はプロジェクト内に保管してください。すべてのツールは新しい --output-dir に書き込みます。既存のディレクトリーは拒否し、完全な結果だけを公開します。--strict-qc を指定した場合、チェックに失敗すると何も公開しません。成功時は JSON の 1 行を出力し、エラー時は error: ... を出力して終了コード 1 で終了します。使用方法のエラーは終了コード 2 で終了します。コピーして使える例は examples/ にあります。
依存関係:すべての処理に numpy と Pillow が必要です。PixelSpec のレンダリングと pixel_qa.py には、それ以外の依存関係はありません。SVG アートには、次のいずれかのラスターライザーも必要です:resvg-py(python -m pip install "resvg-py>=0.5,<0.6"、推奨)、PATH 上の resvg-js CLI、または Chrome/Edge(CHROME_PATH を設定)(rasterizers.md)。PyMuPDF、skia-python、cairosvg は絶対に使用しないでください。crispEdges、<style>、clipPath、グラデーションが黙って無視されます。fx_verify.mjs には node が必要です。
こんにちは、スプライト
gem.pixelspec.jsonを作成します(pixelspec.md の「Hello sprite」ブロックを参照)。python "<skill-dir>/scripts/render_pixelspec.py" --spec gem.pixelspec.json --output-dir out/gem-v1 --preview-scale 8 --strict-qcを実行します。out/gem-v1/preview-x8.pngを開きます。フレームはout/gem-v1/<variant>/frames/にあります。- コードで描画されていること(画像モデルは使用していないこと)をユーザーに伝えます。
パイプライン
| 必要なもの | 方法 |
|---|---|
| パレットバリアントに対応したピクセルキャラクター、プロップ、またはエフェクト | PixelSpec(pixelspec.md)を作成し、続けて render_pixelspec.py --spec <spec> --output-dir <new> --build-clips --strict-qc を実行します。pixel_qa.py で確認します |
| フラットなベクターキャラクター、プロップ、UI、またはアイコンセット | パレットクラスを使ったポータブル SVG(svg-profile.md)を作成し、続けて svg_render.py render --svg <svg> --palette <palette.json> --output-dir <new> --zoom N を実行します |
| SVG 図形で描いた鮮明なピクセルアート | svg_render.py render --crisp --zoom N --strict-qc |
| レンダリング前の SVG の確認 | svg_render.py lint --svg <svg> --profile portable(--compile --palette <p> を追加します) |
| 足を地面につけたまま歩く、待機する、または攻撃する小型キャラクター | リグ SVG と rig_anim.v1 ファイル(rig-animation.md)を作成し、続けて rig_animate.py --rig <svg> --anim <json> --output-dir <new> --build-clips --strict-qc を実行します。review/*.png を確認します |
| 斬撃、火花、衝撃リング、ヒットフラッシュ、ほこり、飛び道具 | fx.v1 仕様(fx-language.md)を作成し、続けて fx_build.py --spec <json> --output-dir <new> --build-clips --export-runtime を実行します。ピクセルゲーム用のベイク済みフレーム、またはゲームプレイのタイミングに合わせるエフェクト用の fx-runtime.mjs を使用します(fx-runtime-contract.md) |
| fx.v1 ランタイムの確認 | node "<skill-dir>/scripts/fx_verify.mjs" <module.mjs> --report <file> |
| 地形の遷移、水辺に接する道路、地面を通る小道、壁、段差 | マテリアル仕様を作成し、続けて autotile_build.py --material-spec <json> --output-dir <new> --strict-qc を実行します(Wang-16、3 種類のマテリアル、blob-47、ベベル。tiles-and-maps.md を参照) |
| 正確なタイルマスク内に収まる画像ツールのテクスチャ | autotile_build.py --material-texture NAME=PATH --quantize-textures(継ぎ目なくつながるタイルを 1 つ作成します) |
| プレイ可能なトップダウンマップ:道路、プロップ、出口、衝突判定、到達可能性 | layout_build.py --spec <layout.json> --output-dir <new> --preview --strict-qc を実行します(実際のタイルを使用する場合は --tiles <tileset manifest>)。debug.png を開きます(layouts-and-parallax.md) |
| スタイライズされたパララックス背景 | parallax_build.py --spec <parallax.json> --output-dir <new> --validate --sweep-frames 49 を実行します。sweep-sheet.png を確認します |
| 静止画上のアンビエントモーション | ambient_bake.py --plate <png> --spec <effects.json> --output-dir <new> --preview --strict-qc を実行し、generate2dmap scene_motion.py でエンコードします |
| ピクセルフレームの QA | pixel_qa.py --input "<glob>" --palette <palette, spec or codeart-meta.json> --review <new.png> --onion --strict --report <new.json> |
受け渡し:クリップは generate2dsprite export_engine.py に渡します(generate2dsprite.py process は使用しないでください)。レイアウトの map_bundle.v2 は generate2dmap map_bundle.py validate、map_nav.py check、および export_tiled.py/export_godot.py/export_ldtk.py に渡します。
ルール
- SVG(ポータブルプロファイル。リンターで強制):ルートの幅と高さは整数の
viewBoxに合わせます(1 単位=論理ピクセル)。色にはclass="c-NAME"を使用します。ボーンはtransform="rotate(a cx cy)"で回転させます。<text>、<image>、feTurbulence、feDisplacementMap、mix-blend-mode は使用しません。ピクセルアートではshape-rendering="crispEdges"を追加し、グラデーション、マスク、フィルター、opacity は使用しません。 - タイルセットは公開前に継ぎ目のないことを証明します。アトラスから組み立てたタイルを、セットで許可されるすべての隣接パターンについて、独立したグローバルレンダーとピクセル単位で比較します。この証明なしに
--strict-qcが合格することはありません。 - クリップをビルドする前に、空の FX 末尾フレームを削除します。ビルダーは完全に透明なフレームを拒否します。
- 横視点の歩行・走行サイクル:手前と奥の脚には、はっきりとした明度差をつけます(奥の脚は 2 段階以上暗くし、同じように見える暗色を 2 色使わないでください)。腕または前脚は見える状態に保ちます(スカーフ、マント、バッグの下に隠さないでください)。
render_pixelspec.pyは、歩行・走行クリップのフレーム i と i+n/2 のシルエットが一致する場合(IoU >= 0.95)、half_cycle_duplicatesの警告を出します。脚を修正するか、レビューシートで歩幅が読み取れることを確認した後に限り、--allow-duplicate-half-cycleを渡してください。 - コード描画フレーム(
art_source=code)に対する generate2dspritesheet_qc.py frames:identity_residualとtorso_driftは参考情報です。頭部とルートはコードで固定されているため、目視で評価してください。near_duplicatesとleg_alternationは実際の問題として扱ってください。
受け入れ条件
報告する前に、ゲームサイズと 1x でプレビューとレビューシートを確認してください(レビュー手順は style-envelope.md を参照)。JSON サマリーから QA ステータスと失敗したチェックを引用してください。公開された各 QA エンベロープについて、WARN または FAIL のチェックをすべて(id、value、threshold、files)原文どおりに報告してください。公開されたエンベロープに WARN が 1 つでもある場合、「すべてのチェックに合格しました」とは決して記載しないでください。仕様、レンダリング済みフレームまたはタイル、クリップまたはバンドル、codeart-meta.json、開示文を納品してください。データ契約は references/schemas/codeart.schema.json にあります。