Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/echoo19/hearthnpx agentmods add skills/echoo19/hearth/hearth-artWrote 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/echoo19/hearth/hearth-art)<a href="https://agentmods.dev/skills/echoo19/hearth/hearth-art"><img src="https://agentmods.dev/badge/skills/echoo19/hearth/hearth-art.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Data Exfiltration · line 141 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
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.00089 | $0.03366 |
| Opus 5 | $0.00044 | $0.01683 |
| Sonnet 5 | $0.00018 | $0.00673 |
| Haiku 4.5 | $0.00009 | $0.00337 |
Grade A, and why
hearth-art scanned grade A with 1 finding 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 8d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
# 1. Fetch (plain shell — curl/wget; respect the site's terms). How it starts
The opening of the file, as written. The whole thing — 212 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Art and sound in Hearth
This skill covers making the game look and sound real — sourcing, importing,
and using assets correctly. Where tiles get painted (tilemaps, autotile
binding) is the hearth-build skill; layered-sound design and juice are
hearth-feel; the operating loop (snapshot → change → validate → playtest) is
the core hearth skill.
Assets: import, slice, animate, sound
hearth import asset ./art/walk-sheet.png --name walk-sheet --json
hearth import asset ./art/tileset/ --recursive --json # atomic batch; check data.skipped
hearth create asset sprite hero --shape rectangle --color "#f4a460" --width 24 --height 24
hearth create asset slice walk-sheet --frame-size 16x16 --prefix walk --json
hearth create asset anim-from-sheet walk-cycle --sheet walk-sheet --frames walk_0,walk_1,walk_2,walk_3 --duration 0.12 --json
hearth create animation blink --frames sprite-a sprite-b --frame-duration 0.4 # multi-file flipbook
hearth create sound pickup --preset coin # presets: coin jump hit laser powerup explosion blip
Procedural sprites/sounds make a game playable and audible before real art
exists. Fonts: import a .ttf/.otf/.woff and reference it from Text.fontFamily
by the asset's name verbatim. Music is a separate channel — set
AudioSource.music:true, autoplay:true for a soundtrack that survives scene
switches. Full pipeline: docs/assets.md.
Never stretch pixel art — tile or slice it
A SpriteRenderer fills its width×height box one of three ways, set by
renderMode (default stretch):
stretch— scales one texture to the box. Only correct when the box keeps the texture's own aspect ratio at a whole-number scale (e.g. an 18×18 tile at 18×18, 36×36, 54×54). Any other size distorts the art — a smear.tile— repeats the texture at its native pixel size to fill the box. This is how a wide platform/floor/wall built from one small tile should render: connected tiles, no smear.hearth set "Level 1" Ground SpriteRenderer.renderMode tile.sliced— 9-slice:sliceinsets ({top,right,bottom,left}px) keep the corners un-stretched while edges/center scale. For panels, bars, and platforms with distinct end-caps.
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.
- 8d ago First seen · 212 lines · 89 tokens per session scan A d2d2a9855f22
hearth-art is a skill published in the GitHub repository echoo19/hearth (62 stars, last pushed 1mo ago), licensed MIT. It adds 89 tokens to every session and 3,366 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
artist-self-evolve
Distill stable art-generation patterns from a completed project, so future projects produce comparable assets without re-discovering the prompts. Lead-dispatched only — orchestrator invokes this skill from its self-evolve flow with a game-slug message; do not self-trigger.
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…
character-model
Use when generating a humanoid character ready for animation — player avatar, NPC, enemy, boss, companion. Generates a T-pose reference image, gates an un-rigged preview past the user, then runs the Meshy auto-rig pass and wires the result as a CharacterBody3D (movement) or Node3D (cinematic). Trigger on "make a…
animated-loop
Use when generating a short looping video clip — splash screen background, animated logo backdrop, idle title-screen footage, looping environment ambience. Output must loop seamlessly and is wired as a VideoStreamPlayer with autoplay and loop set true. Trigger on "looping background", "splash loop", "title screen…
cinematic-cutscene
Use when generating a non-interactive cutscene clip — opening scene, story beat, character intro, ending. Locks the look with a reference image, image-to-videos a 5-10s shot, optionally adds TTS dialogue, and wires it as a VideoStreamPlayer that fades in/out. Trigger on "cutscene", "intro cinematic", "opening scene"…
trailer-shot
Use when generating marketing or trailer footage — slow-mo combat, dramatic establishing shots, hero beats, splash screens, pitch-deck B-roll. Optimizes for maximum visual punch in 5-10 seconds. Trigger on "trailer", "marketing footage", "Steam capsule video", "splash screen", "hero shot", "pitch deck clip", "promo…