Install
$ agentstack add skill-summerengine-summer-engine-agent-create-asset-sheet ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
create-asset-sheet — Generate a coherent pack of 2D assets
This skill turns a single prompt into a categorized pack of isolated, named 2D assets ready to drop into a game. It exists because the alternative — generating each asset one-by-one, then losing visual coherence between them, then manually matting backgrounds in Photoshop — is the most-cited pain point from indie devs working with image models in 2026.
Pipeline:
- Generate a sheet of N isolated assets in one image-gen call.
- Remove background (fal/bria) so each asset can stand on its own.
- Detect + name + classify each asset in one vision call (Gemini 3 Pro outputs bbox + snake_case name + category per region).
- Crop each region with sharp.
- Optionally upscale any small slice via fal flux-2/edit i2i, preserving aspect.
- Save as a single pack ArtAsset with
packFiles: [{url, name, type}]andmetadata.sliceBboxes.
Categories the classifier outputs (used to route into downstream pipelines): character | terrain | nature | lighting | water | decorative | buildings | ui | vfx
When to use
- "Make me a Japanese village tileset."
- "Generate a sci-fi UI kit — buttons, panels, icons."
- "I need 12 fantasy props for a dungeon — chest, torch, skeleton, gold, etc."
- "Give me a character pack: 6 cute monsters."
- "Build a forest biome — trees, rocks, plants, ground tiles."
When NOT to use
- The user wants a single asset →
summer:2d-assets/pixel-artorsummer:2d-assets/character-portrait. - The user wants character animation (walk cycle, attack frames) →
summer:2d-assets/sprite-sheet. - The user wants 3D models of a planned pack → not yet supported in one shot; loop
summer:2d-assets/concept-art→ image-to-3D per item, or usesummer:asset-pipeline/asset-strategyto pick the right path. - The user wants terrain tiles that connect seamlessly (auto-tiling / Wang tiles) →
summer:2d-assets/tileable-textureis the right home for edge logic; this skill produces standalone tiles, not edge variants.
The cleanest path: the studio wizard
The fastest, most reliable way to invoke this flow today is the Create Asset Sheet wizard in the Summer studio:
https://summerengine.com/studio/create-tileset
Direct the user there if they're working in the browser. The wizard:
- Offers a 2D / 3D mode toggle (2D is the slice flow described here; 3D is a soft pointer to
summer:2d-assets/concept-art+ per-asset image-to-3D for now) - Surfaces six prompt templates (tile sheet, UI kit, menu, character pack, biome, freeform)
- Lets the user upload an existing sheet if they have one (skip generation)
- Shows variants in a grid with full-screen lightbox + arrow-key toggling
- Runs the full slice pipeline on click
- Has per-slice HD upscale + bulk "Upscale all"
- Saves as a pack ArtAsset visible in the user's library
If the user is in a chat / agent context and can't open the browser, fall back to the programmatic path below.
Programmatic path (chat / agent driving the engine)
The slicing + classification endpoints are not yet exposed as summer_* MCP tools. Until they are, the agent can replicate the flow manually:
- Generate the sheet. Call
summer_generate_imagewith a prompt like:
`` asset sheet: . Each item isolated with empty space around it, transparent or neutral background. ``
- Pick model by style: pixel art →
grok-imagine, painterly / illustrative / structured grids →gpt-image-2. - 1024x1024 is the sweet spot. Larger sheets fragment in the slicer when individual assets get below ~64px.
- Keep the asset list to 6–20 items per sheet. Past 20, model attention degrades and slices get muddy.
- Remove background. Call
fal-ai/bria/background/removeon the generated URL. Cost: $0.05.
- Detect + name + classify. Send the transparent PNG to a vision LLM (Gemini 3 Pro is currently the strongest at bbox + category in one shot). Use this system prompt structure:
``` Output strict JSON array, no prose: [{"name":"snakecasename","category":"character|terrain|nature|lighting|water|decorative|buildings|ui|vfx","x":,"y":,"w":,"h":}]
Coordinates are percentages of image dimensions, top-left origin. Names are 1-3 words, snakecase, specific (stonelantern, not lamp). ```
- Crop each region with sharp / PIL / equivalent. Pad bboxes by 4px to leave breathing room.
- Optional upscale. For any crop where longest side at high resolution. Preserve every detail, the exact pose, the exact style. Sharper edges, more detail. Transparent background. Single isolated asset, no scene.
```
- Scale longest side to 1024, preserve aspect ratio (FLUX requires multiples of 32).
- Don't blindly upscale everything — high-res slices get diminishing returns and you spend $0.04/slice.
- Save as a pack record in
art_assets:isPack: true,packFiles: [{url, name, type: "image/png"}],metadata.sliceBboxes,parentAssetIdpointing to the source sheet.
Prompt patterns that work
Tile sheet (terrain + props + buildings):
tile sheet: , , . Each item isolated with empty space around it.
UI kit:
game UI kit: round button, square button, panel background, slider, toggle switch, progress bar, icon set, banner header.
Menu screen:
main menu UI: title banner, Start Game button, Settings button, Quit button, , ornate frame, decorative element.
Character pack:
character pack, single front-facing frame each: , , ... . Each isolated.
Biome:
biome assets: , , . Each item isolated.
Common failure modes
| Symptom | Cause | Fix | |---|---|---| | Slicer returns 1 giant bbox covering the whole sheet | Items overlap / no gaps in the source | Re-prompt with "each item fully isolated, empty space around each item". Re-generate. | | Slicer misses items | Items too small in the source, classifier dropped them as noise | Generate at higher resolution (2048) or with fewer items per sheet | | Two items merge into one slice | Items touching in the source | Re-prompt with more isolation. Or accept and let the user split manually in step 2's review. | | Slice has a sliver of neighbor in it | Vision bbox is off by 5–15px | Expected. The slicer pads but doesn't snap-to-content yet. Live with it or upscale the slice (FLUX often cleans the edge) | | Upscaled slice looks invented | Source was too small / too ambiguous | Don't upscale slices below ~32×32. Or accept the hallucination and edit | | Detection returns wrong category | Model misjudged context | User can override in the review step; not a blocker |
What this skill does NOT do (yet)
- Per-asset planning + individual generation (the Codex-style flow where each asset is generated separately at full resolution). The planner endpoint exists (
POST /api/art/plan-asset-pack) but the per-asset gen loop is not wired into the wizard yet. - 3D pack assembly. The 3D mode in the wizard is a placeholder pointer to
summer:2d-assets/concept-art+ image-to-3D for now. - Character animation routing. Once a slice is classified as
character, the next step (sprite-sheet generation) is a separate skill that the user has to invoke manually. Auto-routing is on the roadmap. - Terrain auto-tiling / Wang-tile generation. Use
summer:2d-assets/tileable-texturefor that. - Level composition / scene assembly. Use
summer:level-design/design-level.
Honest cost estimate
Per 12-asset sheet, end to end through the wizard:
- Generate sheet: $0.04–0.10 (varies by model)
- Background removal: $0.05
- Vision detect + classify: $0.02–0.03
- Save pack: free
- Optional bulk upscale: ~$0.04 per slice ($0.48 for 12)
Without upscale: ~$0.12. With full upscale: ~$0.60. About a third of what a Photoshop hour would cost.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: SummerEngine
- Source: SummerEngine/summer-engine-agent
- License: MIT
- Homepage: https://summerengine.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.