Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ouzlifaneyassine1-dot/onyx-engine --skill instantiate-asset-packgit clone --depth 1 https://github.com/ouzlifaneyassine1-dot/onyx-engineWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ouzlifaneyassine1-dot/onyx-engine/instantiate-asset-pack)<a href="https://agentmods.dev/skills/ouzlifaneyassine1-dot/onyx-engine/instantiate-asset-pack"><img src="https://agentmods.dev/badge/skills/ouzlifaneyassine1-dot/onyx-engine/instantiate-asset-pack/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ouzlifaneyassine1-dot/onyx-engine/instantiate-asset-pack"><img src="https://agentmods.dev/badge/skills/ouzlifaneyassine1-dot/onyx-engine/instantiate-asset-pack.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00131 | $0.02892 |
| Opus 5 | $0.00066 | $0.01446 |
| Sonnet 5 | $0.00026 | $0.00578 |
| Haiku 4.5 | $0.00013 | $0.00289 |
Grade A, and why
instantiate-asset-pack scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 246 lines — stays where its author put it; the contents beside it link to each section on GitHub.
instantiate-asset-pack — Instantiate Asset Pack into Scene
A pack ArtAsset (produced by onyx:2d-assets/create-asset-sheet) is a bundle of cropped slice PNGs with per-slice metadata. This skill is the runtime side: given a pack, lay its slices into the current scene as a correctly-grouped, correctly-layered set of nodes.
For wiring individual widget slices (9-slice panels, progress bars, toggles), this skill delegates to onyx:2d-assets/use-widget-asset. This skill handles the pack-level layout: grouping composites, paint order, spatial offset, naming.
When to use
- "Import the dungeon UI pack."
- "Spawn the settings panel from that asset sheet I just made."
- "Bring the whole biome pack into this scene."
- "Add the card frame composite from pack X."
- User has a pack ArtAsset in their library and wants it placed in the scene, not just imported as files.
When NOT to use
- User wants a single slice → import it directly as a
Sprite2D(oronyx:2d-assets/use-widget-assetif it's a UI widget). - User wants to generate a new pack →
onyx:2d-assets/create-asset-sheet. - User wants to apply a slice as a material/texture on a 3D mesh → not the pack flow; see
asset_pipeline.json.
Pack JSON shape
Full schema: publicOnyxEngine/public/knowledge/asset_pack_schema.json.
The per-slice fields this skill cares about:
| Field | Used for |
|---|---|
name |
Node name |
url |
Texture path (after onyx_import_from_url) |
bbox |
Spatial offset of composite children relative to parent |
zOrder |
z_index on the Sprite2D; sort children by this ascending |
isComposite |
Filter out parent slices (flat previews, not runtime assets) |
parentSliceIndex |
Group children to their composite parent |
pairWith |
Toggle ON/OFF pair link |
widget |
Wrap in NinePatchRect / TextureProgressBar via use-widget-asset |
category |
Decide wrapper type — ui → Control tree, else Node2D/Sprite2D |
Legacy fallback: slice.zOrder ?? slice.layerIndex ?? packFileIndex, slice.isComposite ?? slice.isReference ?? false. packFileIndex is the iteration counter when looping packFiles[], not a stored field.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 246 lines · 131 tokens per session scan A 91238d05684c
instantiate-asset-pack is a skill published in the GitHub repository ouzlifaneyassine1-dot/onyx-engine (0 stars, last pushed 3mo ago), licensed MIT. It adds 131 tokens to every session and 2,892 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
skybox-panorama
Use when generating a 360° panoramic sky image for use as a Sky resource (PanoramaSkyMaterial) in a 3D scene. Equirectangular projection, 2:1 aspect. Wires into WorldEnvironment.sky. Trigger on "skybox", "sky panorama", "360 background", "environment sky", "HDRI sky", "panoramic background", "panorama sky".
sprite-sheet
Use when generating animated 2D character sprites laid out as a sprite sheet (grid of frames) — walk cycle, attack frames, idle bob, death sequence. Wires into AnimatedSprite2D / SpriteFrames. Trigger on "sprite sheet", "walk cycle", "attack frames", "animated sprite", "frame-by-frame animation", "2D character…
tileable-texture
Use when generating a seamless tileable texture for walls, floors, terrain, ceilings — square tile that repeats cleanly on all four edges. Wires onto PlaneMesh / CSGBox3D / MeshInstance3D as a StandardMaterial3D albedo. Trigger on "tileable texture", "seamless texture", "wall texture", "floor texture", "ground…
character-portrait
Use when generating a single, polished bust/portrait of a character for dialogue UI, character-select screens, lore cards, or codex entries. One character, locked composition, VN-style. Trigger on "character portrait", "dialogue portrait", "VN portrait", "character bust", "headshot", "character select image", "lore…
instantiate-asset-pack
Use when the user wants to import or spawn an entire asset pack (the multi-slice ArtAsset produced by create-asset-sheet) into the current scene — not a single slice, the whole pack. Reads the pack's per-slice metadata (zOrder, isComposite, parentSliceIndex, widget, bbox), groups composites, sorts children by paint…
pixel-art
Use when generating pixel-art assets — sprites, items, tiles, portraits in a pixel style at a specific resolution (32×32, 64×64, 128×128). Pixel-perfect grid, limited palette, retro feel. Trigger on "pixel art", "8-bit art", "16-bit sprite", "pixel sprite", "retro tileset", "pixel icon", "pixel portrait".