跳到正文
cccskills
免费在 GitHub 公开

codeart2d

Explicit-only last resort. Draws game art from code, with no image model - pixel sprites from a PixelSpec, flat vector props, UI and icons from portable SVG, rigged characters with planted feet, FX with a JS runtime, seam-proven autotiles, playable top-down layouts with collision, stylized parallax and ambient plate motion - palette-exact, with QA and review sheets. Use only when the user explicitly asks for code-drawn art, or when generate2dmedia route_media.py finds no image or video route (no-route, exit 3). Never the default - image generation (generate2dsprite, generate2dmap, video2dsprite) comes first for characters, props, maps and FX. Not for painterly, detailed or likeness art, HD-2D plates or realistic fire, smoke or water. Always disclose the result as code-drawn.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(42)

  • SKILL.md9.6 KB
  • agents/openai.yaml364 B
  • examples/dirt-path.material.json2.0 KB
  • examples/hero.anim.json2.2 KB
  • examples/hero.rig.svg3.2 KB
  • examples/meadow-layout.json12.9 KB
  • examples/palette.json447 B
  • examples/parallax-gen.json1.4 KB
  • examples/plate-effects.json1.1 KB
  • examples/potion-icons.svg3.2 KB
  • examples/slash.fx.json2.0 KB
  • examples/slime.pixelspec.json3.3 KB
  • examples/walker16x24.pixelspec.json5.1 KB
  • examples/water-grass.material.json1.4 KB
  • references/fx-language.md9.5 KB
  • references/fx-runtime-contract.md7.3 KB
  • references/layouts-and-parallax.md20.4 KB
  • references/pixelspec.md10.8 KB
  • references/rasterizers.md4.9 KB
  • references/rig-animation.md18.1 KB
  • references/runtime/fx-template.mjs13.0 KB
  • references/schemas/codeart.schema.json52.3 KB
  • references/schemas/common.schema.json12.9 KB
  • references/schemas/map.schema.json128.5 KB
  • references/schemas/sprite.schema.json65.5 KB
  • references/style-envelope.md5.1 KB
  • references/svg-profile.md8.4 KB
  • references/tiles-and-maps.md15.4 KB
  • scripts/ambient_bake.py32.5 KB
  • scripts/autotile_build.py102.7 KB
  • scripts/codeart_core.py118.8 KB
  • scripts/forge_core.py78.3 KB
  • scripts/forge_nav.py95.5 KB
  • scripts/forge_schema.py26.1 KB
  • scripts/fx_build.py49.3 KB
  • scripts/fx_verify.mjs29.7 KB
  • scripts/layout_build.py106.6 KB
  • scripts/parallax_build.py46.7 KB
  • scripts/pixel_qa.py21.5 KB
  • scripts/render_pixelspec.py43.0 KB
  • scripts/rig_animate.py118.1 KB
  • scripts/svg_render.py26.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Code Art 2D

You write the art as text (PixelSpec JSON, portable SVG, rig, FX, material, layout or parallax specs); the scripts render, check and package it. No image model is involved. It is a declared art source (art_source: "code"), not a placeholder.

Use when

  • The user explicitly asks for code-drawn art: a PixelSpec or SVG sprite, palette variants drawn in code, a code rig, code FX, a seam-proven autotile set, a code-made layout, stylized parallax or ambient loops.
  • route_media.py prints no-route (exit 3): no API key is configured and no local image or video route exists. Say so, and offer to add a key or a CLI as well.
  • Pose and layout guides that help an image model (support material, not final art).

Do not use when

  • Any art request while an image or video route exists and the user did not ask for code art: generate2dsprite, generate2dmap or video2dsprite generate it.
  • Painterly, organic or identity-rich art, likenesses, portraits, HD-2D plates or textured terrain; realistic fire, smoke or water.
  • Never trace licensed characters into specs.

Capability check (once per session)

Run python "<skill-dir>/../generate2dmedia/scripts/route_media.py" resolve --kind image (or --kind video): when it names a route, the image or video skill takes the request unless the user asked for code art. forge_doctor.py in the same folder shows the full picture. If encoding.stdout fails, set PYTHONUTF8=1. For SVG work also run svg_render.py doctor --report <new.json> once per machine.

Art source

This skill is the explicit-only last resort of the route order: the API when a key is configured, then the local image tools, then code art, only when the user asks for it or no route exists. Never substitute it silently for generated art. Before you draw, check what code art can and cannot draw well in style-envelope.md (its table describes strengths, not the route order), and tell the user when a request needs an image model. Disclose every result: "code-drawn, no image model" (codeart-meta.json records "art_source": "code"); never present it as image-model output.

Host notes

  • Codex: this skill is explicit-only; image_gen and route_media.py make the art unless the user asks for code art. Look at review sheets with view_image.
  • Claude Code: use it only on request or after no-route. Look at every preview-*.png and review/*.png with Read before you report; run tools with Bash; <skill-dir> is ${CLAUDE_SKILL_DIR}.
  • Grok: runs the same Python tools; its native image tools make the art unless the user asks for code art.

Commands

Run each tool as one line from the user's project root: python "<skill-dir>/scripts/<tool>.py" .... <skill-dir> is this skill's folder; sibling skills sit beside it (--build-clips calls <skill-dir>/../generate2dsprite/scripts/build_animation_clips.py). Keep specs and outputs inside the project. Every tool writes a new --output-dir: it refuses an existing one and publishes only a complete result; with --strict-qc a failed check publishes nothing. Success prints one JSON line; errors print error: ... and exit 1; usage errors exit 2. Examples to copy: examples/.

Dependencies: numpy and Pillow for everything; PixelSpec rendering and pixel_qa.py need nothing else. SVG art also needs one rasterizer: resvg-py (python -m pip install "resvg-py>=0.5,<0.6", preferred), the resvg-js CLI on PATH, or Chrome/Edge (set CHROME_PATH) (rasterizers.md). Never PyMuPDF, skia-python or cairosvg: they silently ignore crispEdges, <style>, clipPath or gradients. fx_verify.mjs needs node.

Hello sprite

  1. Write gem.pixelspec.json (the "Hello sprite" block in pixelspec.md).
  2. python "<skill-dir>/scripts/render_pixelspec.py" --spec gem.pixelspec.json --output-dir out/gem-v1 --preview-scale 8 --strict-qc
  3. Open out/gem-v1/preview-x8.png; the frames are in out/gem-v1/<variant>/frames/.
  4. Tell the user it is code-drawn (no image model).

Pipeline

NeedRoute
Pixel character, prop or FX with palette variantsPixelSpec (pixelspec.md), then render_pixelspec.py --spec <spec> --output-dir <new> --build-clips --strict-qc; review with pixel_qa.py
Flat vector character, prop, UI or icon setportable SVG with palette classes (svg-profile.md), then svg_render.py render --svg <svg> --palette <palette.json> --output-dir <new> --zoom N
Crisp pixel art drawn with SVG shapessvg_render.py render --crisp --zoom N --strict-qc
Check an SVG before renderingsvg_render.py lint --svg <svg> --profile portable (add --compile --palette <p>)
Small character that walks, idles or attacks with planted feetrig SVG plus a rig_anim.v1 file (rig-animation.md), then rig_animate.py --rig <svg> --anim <json> --output-dir <new> --build-clips --strict-qc; look at review/*.png
Slash, sparks, impact ring, hit flash, dust, projectilefx.v1 spec (fx-language.md), then fx_build.py --spec <json> --output-dir <new> --build-clips --export-runtime; baked frames for pixel games, fx-runtime.mjs for gameplay-timed FX (fx-runtime-contract.md)
Check an fx.v1 runtimenode "<skill-dir>/scripts/fx_verify.mjs" <module.mjs> --report <file>
Terrain transitions, roads meeting water, paths over ground, walls and ledgesmaterial spec, then autotile_build.py --material-spec <json> --output-dir <new> --strict-qc (Wang-16, three materials, blob-47, bevel; tiles-and-maps.md)
An image-tool texture inside exact tile masksautotile_build.py --material-texture NAME=PATH --quantize-textures (one tile that wraps)
Playable top-down map: roads, props, exits, collision, reachabilitylayout_build.py --spec <layout.json> --output-dir <new> --preview --strict-qc (--tiles <tileset manifest> for real tiles); open debug.png (layouts-and-parallax.md)
Stylized parallax backgroundparallax_build.py --spec <parallax.json> --output-dir <new> --validate --sweep-frames 49; review sweep-sheet.png
Ambient motion on a static plateambient_bake.py --plate <png> --spec <effects.json> --output-dir <new> --preview --strict-qc; encode with generate2dmap scene_motion.py
QA any pixel framespixel_qa.py --input "<glob>" --palette <palette, spec or codeart-meta.json> --review <new.png> --onion --strict --report <new.json>

Hand-offs: clips go to generate2dsprite export_engine.py (never generate2dsprite.py process); a layout's map_bundle.v2 goes to generate2dmap map_bundle.py validate, map_nav.py check and export_tiled.py / export_godot.py / export_ldtk.py.

Rules

  • SVG (portable profile, enforced by lint): root width and height equal an integer viewBox (1 unit = 1 logical pixel); colours via class="c-NAME"; bones rotate with transform="rotate(a cx cy)"; no <text>, <image>, feTurbulence, feDisplacementMap or mix-blend-mode; pixel art adds shape-rendering="crispEdges" and no gradients, masks, filters or opacity.
  • Tilesets are seam-proven before they are published: tiles assembled from the atlas are compared pixel for pixel with an independent global render over every adjacency the set allows. --strict-qc never passes without that proof.
  • Fold empty FX tail frames before building clips; the builder refuses fully transparent frames.
  • Side-view walk and run cycles: give the near and far legs a clear value contrast (the far leg two or more shades darker, never two darks that read alike) and keep the arms or forelegs visible (not hidden under a scarf, cape or bag). render_pixelspec.py warns half_cycle_duplicates when frame i and i+n/2 of a walk/run clip share a silhouette (IoU >= 0.95); fix the legs, or pass --allow-duplicate-half-cycle only after the review sheet shows the stride reads.
  • generate2dsprite sheet_qc.py frames on code-drawn frames (art_source=code): identity_residual and torso_drift are advisory, since the head and root are fixed in code; judge them by eye, and treat near_duplicates and leg_alternation as real.

Acceptance

Look at the preview and review sheets at game size and 1x before reporting (style-envelope.md has the review loop). Quote the QA status and failed checks from the JSON summary. Report every WARN or FAIL check verbatim (id, value, threshold, files) from each published QA envelope; never say "all checks passed" when any published envelope has a warn. Deliver specs, rendered frames or tiles, clips or bundles, codeart-meta.json and the disclosure line. Data contracts: references/schemas/codeart.schema.json.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Plan and build 2D game maps and scenes - top-down and side-scrolling levels, tilemaps, prop packs, parallax backgrounds and HD-2D battle or story plates - with collision, navigation and reachability checks, environment motion, a playable HTML preview and export to Tiled, Godot 4 or LDtk. Map art (terrain, tiles, props, plates, parallax layers) is image generation by default, through generate2dmedia route_media.py (the API when a key is configured, else the local Codex or Grok CLI); map data (layout, collision, exits, spawns) is written as data. Use for any map, level, room, scene, background, terrain or prop-kit request. Not for characters, creatures, items or FX (generate2dsprite), character animation (video2dsprite), code-drawn tiles or maps (codeart2d, only on request) or calling an image or video API by itself (generate2dmedia).

中文简介正在准备中。当前显示原文说明。

0x0funky/agent-sprite-forge45052026年10月6日 更新

The art-route layer of the Forge skills. route_media.py is the one command that generates an image or an image-to-video clip - through the paid API of any provider whose key is configured (OpenAI, Google Gemini, xAI, BytePlus ModelArk, fal.ai; the configured key is the owner's consent), else through the user's own signed-in Codex or Grok CLI - and prints one JSON line with the route, artifact, sha256 and cost estimate; with no route it answers no-route (codeart2d is then the last resort). Also the capability check (forge_doctor), API key configuration, the spend ledger, resume and Codex image adoption. Use when a Forge skill sends a generation here, for the capability check, or when the user asks about keys, routes or spend. Not for planning, processing or QA of sprites, video frames or maps (generate2dsprite, video2dsprite, generate2dmap) or for code-drawn art (codeart2d).

中文简介正在准备中。当前显示原文说明。

0x0funky/agent-sprite-forge45052026年10月6日 更新

Make game-ready 2D characters, creatures, props, icons and FX as master stills, sprite sheets or animation clips. Plan size, motion and finish; generate the art (image generation is the default, through generate2dmedia route_media.py - the API when a key is configured, else the local Codex or Grok CLI); approve one master still per character; then key, slice, register, scale, palette, QA and export frames for a game engine (Aseprite JSON, Godot SpriteFrames or Sprite3D). HD finish by default, pixel finish on request. Character animation is one image-to-video clip per action from the master (video2dsprite); sheets are for FX, icons and props. Use for sprites, masters, sheets, frame-by-frame animation and packaging frames from any source. Not for maps, tiles or backgrounds (generate2dmap), video clips (video2dsprite), code-drawn art (codeart2d, only on request) or calling an image or video API by itself (generate2dmedia).

中文简介正在准备中。当前显示原文说明。

0x0funky/agent-sprite-forge45052026年10月6日 更新

Turn one approved master still into a character's whole animated sprite set - one image-to-video clip per action (idle, walk, run, attack, jump, hurt, cast and so on), all from that still, generated through generate2dmedia route_media.py (the xAI API when a key is configured, else the local Grok CLI) - then gate each take, key it with a soft matte, register it to the master, pick loops or retime actions, finish (HD by default, pixel on request) and package fixed-canvas frames, alpha WebM, packed MP4 for iPhone and a PNG fallback with engine metadata and a JS runtime. Also processes a supplied clip. Use for character and creature animation, fluid motion and any video-to-sprite work. Not for FX, icon or prop sheets (generate2dsprite), maps or plate loops (generate2dmap), code-drawn animation (codeart2d, only on request) or calling a video API by itself (generate2dmedia).

中文简介正在准备中。当前显示原文说明。

0x0funky/agent-sprite-forge45052026年10月6日 更新

查看 0x0funky 的全部技能

报告此技能的问题