From fxgl-skills
Source freely available third-party assets for an FXGL game, but only when the license clearly allows commercial use and modification. Download approved assets, organize them into the correct FXGL asset folders, and generate reusable provenance and attribution records for release compliance and optional in-game credits. Use this skill when you need spritesheets, portraits, UI icons, tiles, backgrounds, sound effects, or music from online sources without losing track of legal obligations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fxgl-skills:fxgl-asset-sourcing-attributionThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to bring **third-party** assets into an FXGL project safely:
Use this skill to bring third-party assets into an FXGL project safely:
This skill is about asset intake. It is not a generic FXGL asset loader tutorial, and it is not for AI-generated images.
Accept by default only assets whose license is explicitly shown and clearly allows:
| License / policy | Use by default? | Notes |
|---|---|---|
CC0 / public domain | Yes | Preferred; attribution still worth recording |
CC BY 4.0 (or equivalent attribution-required permissive license) | Yes | Capture exact attribution text / URL |
| Source-specific commercial-use license with explicit modification rights | Yes | Keep the source URL and the license text |
CC BY-SA, CC BY-NC, CC BY-ND | No | Skip by default; obligations are too risky for automated intake |
| "Free for personal use" | No | Not commercial-safe |
| Missing / unclear license | No | Reject and keep searching |
If the license is ambiguous, do not download into the project.
See references/free-asset-sources.md for the short list. Prefer sources whose asset pages expose license terms clearly and consistently.
Place approved files under src/main/resources/assets/ using FXGL's actual asset-loading
conventions.
src/main/resources/assets/
├── textures/
│ ├── sprites/
│ ├── portraits/
│ ├── ui/
│ ├── tiles/
│ └── backgrounds/
├── sounds/ # WAV only; short interactive SFX
├── music/ # MP3 only; long-form music / loops
└── data/
└── attribution.csv # optional runtime-friendly credits file
forest-tileset.png, not kenney_pack_02.pngFor each imported asset, record:
Default to a project-root file named THIRD_PARTY_ASSETS.md.
Why this default:
If the game needs a runtime credits screen, also generate:
src/main/resources/assets/data/attribution.csvTHIRD_PARTY_ASSETS.md Entry## forest-tileset.png
- Title: Forest Tileset
- Creator: Kenney
- Source: https://kenney.nl/assets/...
- License: CC0 1.0
- License URL: https://creativecommons.org/publicdomain/zero/1.0/
- Local Path: src/main/resources/assets/textures/tiles/forest-tileset.png
- Modifications: cropped into gameplay tile variants
- Downloaded: 2026-06-04
attribution.csvtitle,creator,source_url,license,license_url,local_path,modifications,downloaded
Forest Tileset,Kenney,https://kenney.nl/assets/...,CC0 1.0,https://creativecommons.org/publicdomain/zero/1.0/,src/main/resources/assets/textures/tiles/forest-tileset.png,cropped into gameplay tile variants,2026-06-04
mkdir -p src/main/resources/assets/textures/{sprites,portraits,ui,tiles,backgrounds}
mkdir -p src/main/resources/assets/{sounds,music,data}
// Images from assets/textures/
var portrait = getAssetLoader().loadTexture("portraits/npc-merchant.png");
var button = getAssetLoader().loadTexture("ui/sword-icon.png");
var tiles = getAssetLoader().loadTexture("tiles/forest-tileset.png");
// Spritesheet placeholder or third-party strip from assets/textures/sprites/
var walk = getAssetLoader()
.loadTexture("sprites/player-walk.png")
.toAnimatedTexture(8, Duration.seconds(0.8));
// Audio — FXGL uses different directories and loaders
var coinSFX = getAssetLoader().loadSound("coin.wav"); // assets/sounds/coin.wav
var theme = getAssetLoader().loadMusic("theme.mp3"); // assets/music/theme.mp3
assets/sounds/ → WAVassets/music/ → MP3If the downloaded file format does not match the FXGL target folder, convert it before committing it into the project.
When using this skill, the agent should:
loadSound() uses /assets/sounds/ and expects WAV — placing MP3 files there causes
load failures because FXGL routes by asset type, not by your intent.loadMusic() uses /assets/music/ and expects MP3 — do not place short gameplay SFX in
the music folder.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub johannesrabauer/fxgl-skills --plugin fxgl-skills