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 ui-graphicsgit 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/ui-graphics)<a href="https://agentmods.dev/skills/ouzlifaneyassine1-dot/onyx-engine/ui-graphics"><img src="https://agentmods.dev/badge/skills/ouzlifaneyassine1-dot/onyx-engine/ui-graphics/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/ui-graphics"><img src="https://agentmods.dev/badge/skills/ouzlifaneyassine1-dot/onyx-engine/ui-graphics.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.00082 | $0.02983 |
| Opus 5 | $0.00041 | $0.01491 |
| Sonnet 5 | $0.00016 | $0.00597 |
| Haiku 4.5 | $0.00008 | $0.00298 |
Grade A, and why
ui-graphics 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 — 211 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ui-graphics — Icons, Buttons, Panels, HUD
This skill generates flat, game-UI-style graphics: icons (skill / item / status), buttons (idle / hover / pressed states), panels and frames (NinePatch-friendly), HUD widgets (health frames, minimaps, badges). Output is transparent PNG by default and wires via Godot's TextureRect, NinePatchRect, or AtlasTexture.
UI graphics succeed or fail on two specific things: a clean transparent background (no checkerboard residue) and a consistent visual language across the set (all icons share line weight, color treatment, lighting). This skill encodes both.
When to use
- "Generate a fire-spell icon for the ability bar."
- "I need a parchment panel background for the inventory."
- "Make a set of 8 status-effect icons (poison, burn, freeze, stun, ...)."
- "Create a button frame I can NinePatch."
- "HUD frame for the health bar."
When NOT to use
- The user wants a character portrait →
onyx:2d-assets/character-portrait. - The user wants pixel-art UI →
onyx:2d-assets/pixel-art(UI in pixel style needs a different prompt pattern). - The user wants a 3D HUD element → that's a 3D mesh job; route to
onyx:asset-pipeline/asset-strategy. - The user wants a font → fonts aren't generated; use a
.ttf/.otfand import viaFontFile.
Steps
1. Lock the UI style anchor
Check .onyx/ui-anchor.md. If it doesn't exist, define it on the first UI asset and re-use:
## UI anchor
style: flat design with subtle gradient, soft inner shadow
line: 2px outline in deep navy (#1a2332)
fill palette: gold (#d4a24c), parchment (#f5e6c4), dark teal accent (#2c5f5d)
shape language: rounded rectangles, no sharp 90deg corners
mood: warm fantasy, slightly weathered
background: transparent PNG
Every icon / button / panel re-uses this anchor verbatim. Skipping this step produces the most common UI failure: 12 icons that all look like they came from 12 different games.
2. Search before generating
onyx_search_assets(query="<subject> icon", filter={ kind: "image" })
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 · 211 lines · 82 tokens per session scan A d2a7e6f904ef
ui-graphics is a skill published in the GitHub repository ouzlifaneyassine1-dot/onyx-engine (0 stars, last pushed 3mo ago), licensed MIT. It adds 82 tokens to every session and 2,983 once invoked, about $0.0004 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".