Borrowing it
Nothing to install: this file belongs to andvolodko/html5-game-editor. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/andvolodko/html5-game-editor/master/.cursor/skills/add-asset-type/SKILL.mdgit clone --depth 1 https://github.com/andvolodko/html5-game-editorWrote 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/andvolodko/html5-game-editor/add-asset-type)<a href="https://agentmods.dev/skills/andvolodko/html5-game-editor/add-asset-type"><img src="https://agentmods.dev/badge/skills/andvolodko/html5-game-editor/add-asset-type/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/andvolodko/html5-game-editor/add-asset-type"><img src="https://agentmods.dev/badge/skills/andvolodko/html5-game-editor/add-asset-type.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.00065 | $0.02120 |
| Opus 5 | $0.00032 | $0.01060 |
| Sonnet 5 | $0.00013 | $0.00424 |
| Haiku 4.5 | $0.00006 | $0.00212 |
Grade A, and why
add-asset-type 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 10d 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 — 130 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add Asset Type
Canonical workflow for a new catalogue asset kind. Scenes store stable assetIds (asset_…), never filesystem paths.
Scenes are not assets. Scene JSON lives at games/<name>/assets/scenes/<fileId>.json and is loaded via SceneFileService / import.meta.glob. Prefabs and TileSets are catalogue assets.
There is no first-class spritesheet AssetType. Packed sheets today come from Aseprite (.generated/ PNG+JSON) or from ordinary texture files.
When to use this skill
- Adding a new
AssetType/ metadata kind. - Adding an importer (single file or multi-file bundle).
- Adding an editor-created catalogue document (pattern: prefab, tileset) rather than a file drop.
- Import succeeds but Browser / preview / Inspector / runtime cannot load it.
Do not use this for a new scene node that merely references an existing kind (that is .cursor/skills/add-node-type/SKILL.md).
Before changing code
- Confirm the kind does not already exist in
packages/assets/src/types.ts(AssetType). - Decide the creation path:
| Path | Examples | Mechanism |
|---|---|---|
| Per-file import | texture, audio, webfont, glb, aseprite | AssetImporter |
| Multi-file bundle | spine, bitmap font, multi-file glTF | AssetBundleImporter (runs first) |
| Editor workflow | prefab, tileset | editor-prefab-workflows.ts / editor-tileset-workflows.ts + project-server file service — no drop importer |
- Read
docs/assets.md. Aseprite-derived files:docs/aseprite.md. HTTP/path rules:.cursor/rules/server-security.mdcanddocs/project-server.md. - Copy the closest existing kind end-to-end. Do not add a stub
AssetTypewith no importer/metadata.
Current kinds: texture, spine, audio, gltf, aseprite, font, webfont, prefab, tileset.
Implementation workflow
1. Domain model
- Extend
AssetTypeandAssetMetadatainpackages/assets/src/types.ts. Invariant:record.type === metadata.kind. - Extend Zod in
packages/assets/src/schema.ts(assetTypeSchema, metadata union,assetRecordSchema). - Add
createXAssetRecordinpackages/assets/src/factories.ts. - Extension helpers live beside the others (
texture-extensions.ts,audio-extensions.ts,spine-extensions.ts,gltf-extensions.ts,aseprite-extensions.ts, …). - Keep
ASSET_SCHEMA_VERSIONat 1 unless the manifest shape is incompatible — prefer optional fields / Zod.default()(seegltfanimations).
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.
- 10d ago First seen · 130 lines · 65 tokens per session scan A fdaea6d5aac6
add-asset-type is a skill published in the GitHub repository andvolodko/html5-game-editor (6 stars, last pushed 2d ago), licensed MIT. It adds 65 tokens to every session and 2,120 once invoked, about $0.0003 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
self-evolve
Capture reusable patterns from a finished project and lift them into framework-level priors (contracts, modules, skeletons) that future projects inherit. Run only when the user explicitly requests self-evolution; the orchestrator executes the workflow.
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.
vibegame-build
Run VibeGame's standard end-to-end game development workflow with reviewer gates. Use when the user wants to create a game from zero or evolve an existing game across multiple stages.
vibegame-start
Resume a VibeGame orchestrator session after vibegame start. Use at the beginning of a Claude or Codex session to inspect team runtime state, repair missing persistent members, load goal and GDD context, inspect tasks, and ask the user what to do next.
design-npc
Use when the user wants to design an enemy, NPC, boss, companion, civilian, or wave-spawned mob's behavior. Walks perception, personality knobs, intent layer, action state machine, telegraphs, defeat handling, and group emergence — outputs a state-machine GDScript stub plus the recommended node tree. Trigger on…
fps-controller
Use when building an FPS, first-person movement, or a 3D character that walks, jumps, and reacts to external forces — production-quality first-person controller with WASD, mouse look, jump, coyote time, jump buffering, air control, and external-velocity handling. Trigger on "FPS", "first-person", "WASD", "character…