agentleFS
Fixed-SeedFixed-Seed/game-changer/skills/mod-any-game/SKILL.md

mod-any-game

Skill8 starsChanged 36 days agoMITView on GitHub

Mod a PC game the user owns, taking an idea to working in the real game and recorded. It covers new items, weapons, enemies, bosses, units, civilizations, mechanics, art, sound, VR and cross-game mashups. Use when the user wants to mod, extend, hack on, reverse engineer or mash up a game ("add a nuke to Terraria", "make a new civ for Age of Empires", "put Minecraft inside X", "can I mod this game?"). It covers recon (engine, loaders, anti-cheat), choosing the route, a safe lab, a first vertical slice, FixedSeed-generated assets, in-game verification and a showcase clip.

3 other projects use a version of this, 3 of them edited.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

19 rules. 10 are common, 0 are distinctive, and 9 are very specific to this project.

  • 10

    Common

    Most of the 3 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Start MODLOG.md in the working folder as the journal.

    line 48
  2. Very specific:

    Search the knowledge base first: Run fsgc kb search "<game>" and fsgc kb search "<engine>".

    line 52
  3. Very specific:

    Run fsgc scan "<game>". It reports the engine and version, whether code is managed or native, anti-cheat, mod loaders already installed, …

    line 56
  4. Common:

    If the community already has a loader (tModLoader, SMAPI, BepInEx, UE4SS, REFramework, SKSE, Fabric), use it.

    line 61
  5. Common:

    Write the chosen route and the reason into MODLOG.md before building.

    line 75
  6. Very specific:

    Before the first modded launch, run fsgc backup create "<saves folder>" --name <game>-saves (the paths come from fsgc scan).

    line 78
  7. Very specific:

    Use a separate lab profile or save folder when the loader allows it (tModLoader -tmlsavedirectory, an MO2 profile, a copy of the world or …

    line 80
  8. Common:

    Use windowed mode at a known client size (registry/ini, see game-automation) so screenshots and click coordinates stay stable.

    line 83
  9. Very specific:

    Keep decompiled code and extracted assets outside the repo (e.g.

    line 85
  10. Common:

    Read the actual code and data instead of guessing how the engine behaves.

    line 89
  11. Very specific:

    Read screenshots at reduced scale (--scale 0.33) to save tokens.

    line 122
  12. Common:

    Circuit breaker: if the same failure repeats 3 times, stop.

    line 123
  13. Very specific:

    Run fsgc publish check <mod> --game "<install>".

    line 142
  14. Common:

    Ownership: Only mod games the user owns.

    line 157
  15. Common:

    No bypasses: Never bypass anti-cheat, DRM or ownership checks.

    line 161
  16. Common:

    No redistribution: Don't ship game files, decompiled source or extracted assets.

    line 164
  17. Very specific:

    Back up first: Run fsgc backup before changing saves, profiles or game folders.

    line 166
  18. Common:

    Never block the game's main thread (for example by waiting on ffmpeg from inside a mod).

    line 171
  19. Common:

    Ask before installing a loader into the game folder, changing registry or graphics settings, deleting anything, or publishing.

    line 176

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Mod any game

You are the modder. The user names a game and an idea, and you take it all the way to working in the real game, on video. The method below shipped three projects:

  • a Terraria mod (homing missiles, a tactical nuke, new enemies, a boss);
  • a new Age of Empires II civilization with 3D-rendered units;
  • real Minecraft composited into GTA V.

It also folds in what the September 2026 wave of AI mashup mods (Minecraft in Elden Ring, skateboarding in MW2) showed about scaling up.

  • Case studies: references/case-studies.md.
  • Code: examples/.
  • Everything other agents have written down: the knowledge base (knowledge/ in the repo, fsgc kb search).

Your tools

fsgc is the toolkit CLI. Plugin installs and clones put it on PATH (it lives at bin/fsgc in the repo). Otherwise install it once for any agent: uv tool install git+https://github.com/Fixed-Seed/game-changer (or pipx install ...). Every group has --help with examples.

NeedCommand
What games are installed, what engine, what anti-cheat, where saves livefsgc scan --list, fsgc scan "<game>"
Two games at once: which one hosts, each engine's hooks, the link, milestonesfsgc passthrough plan "<game>" "<game>", or the MCP passthrough tool
Sprites, textures, PBR materials, 3D models, remeshes, rigs, motion, SVG, SFX, music, voice, video (FixedSeed)fsgc fixedseed <recipe>, or the FixedSeed MCP (search_models, get_model, generate)
Cut out / fit / pixelate / pack sprites; 3D model → sprite framesfsgc sprite ..., fsgc render3d ...
Launch, screenshot, click/type, record a Windows game (also from WSL)fsgc win ...
Snapshot saves before touching them; undofsgc backup create/diff/restore
Cut a showcase videofsgc video contact/compile/mux
Lint a mod before sharing (game files, decompiled code, secrets)fsgc publish check

Companion skills: game-recon, reverse-engineering, fixedseed-assets, asset-pipeline, game-automation, showcase-video, mashup-mods, publish-mod, share-field-notes.

The loop

0. Intake (keep it short)

  • Get the game, the platform and store, and the idea in one sentence ("a homing missile launcher and a nuke that craters the world"). Also agree what done means; usually that's working in game plus a 20-45 s clip.
  • Settle online vs offline up front. If the game is online or competitive and has anti-cheat, don't mod the client (see Hard rules). Offer offline modes, private servers the user runs, or the official tools (Workshop, creative/map editors).
  • Start MODLOG.md in the working folder as the journal. Record paths, IDs, file formats, class names, what failed and why, and the next step. Anything not in the journal is lost at the next context compaction.

1. Recon (the game-recon skill does this in depth)

  • Search the knowledge base first. Run fsgc kb search "<game>" and fsgc kb search "<engine>". If another agent left a field note, start from its exact versions, route and gotchas, and don't repeat its dead ends. Without fsgc, read https://github.com/Fixed-Seed/game-changer/blob/main/knowledge/INDEX.md.
  • Run fsgc scan "<game>". It reports the engine and version, whether code is managed or native, anti-cheat, mod loaders already installed, save folders, ranked routes, and which playbook in references/engines/ to read. Read that playbook.
  • Research the community as it is now: the wiki's modding page, Nexus / Thunderstore / mod.io / Workshop, GitHub, and the loader's current release and install steps. Versions move, so don't install from memory. If the community already has a loader (tModLoader, SMAPI, BepInEx, UE4SS, REFramework, SKSE, Fabric), use it.

2. Pick the cheapest route that reaches the idea

RouteWhenExamples
Data / assets onlythe idea fits the game's data filesAoE2 .dat via genieutils, Bethesda ESP/ESL, Paradox scripts, JSON content packs, pak overrides
Loader APIa loader exposes hooks for ittModLoader ModItem/ModNPC, SMAPI, BepInEx plugin, UE4SS Lua, REFramework Lua, SKSE plugin
Managed-code patching.NET/Mono/IL2CPP/Java with no API for your ideaHarmony prefix/postfix/transpiler, MonoMod, Mixin
Native hooksC/C++ engine with no loaderproxy DLL (dinput8/version/winmm) + MinHook/SafetyHook, signature scans
Reimplement / decomp / recomptotal control, or retro consolesN64 decomps, N64Recomp, XenonRecomp, IW4L-style rewrites that read the user's own game files
Mashup / passthroughtwo games at oncefsgc passthrough plan, then the mashup-mods skill

Write the chosen route and the reason into MODLOG.md before building.

3. Lab setup (the safety net)

  • Before the first modded launch, run fsgc backup create "<saves folder>" --name <game>-saves (the paths come from fsgc scan). Snapshot the config/profile folder too if you'll change settings.
  • Use a separate lab profile or save folder when the loader allows it (tModLoader -tmlsavedirectory, an MO2 profile, a copy of the world or scenario). Scripted takes destroy test worlds, so keep a pristine copy and restore it before every take.
  • Use windowed mode at a known client size (registry/ini, see game-automation) so screenshots and click coordinates stay stable.
  • Keep decompiled code and extracted assets outside the repo (e.g. ~/<game>-decomp) and gitignore any derived data. Never commit game files.

4. Read the source of truth

Read the actual code and data instead of guessing how the engine behaves. The reverse-engineering skill covers the tools:

  • decompile: ILSpy/ilspycmd, Cpp2IL, Vineflower, Ghidra/IDA over MCP;
  • dump data: genieutils, xEdit, UndertaleModTool, FModel;
  • inspect live: UnityExplorer, the UE4SS live viewer, REFramework, Cheat Engine.

Record exact names and IDs in MODLOG.md. Check what the executable enforces as well as what the data says. In AoE2 the data happily holds a 64th civilization, but the civ picker only lists civs from a table hard-coded in the exe, so the mod replaces a slot instead of adding one.

5. Vertical slice first

Take one item, unit or weapon all the way through with placeholder art. Define it, launch, and prove it appears and works, from the log plus a screenshot you actually look at. Only then widen. Commit each working step in the mod's own git repo.

6. Assets (fixedseed-assets and asset-pipeline skills)

Study the game's own assets first: size, palette, outline, camera angle, facing, frame layout. Then generate with fsgc fixedseed. Every call is recorded in fixedseed_manifest.jsonl. Convert with fsgc sprite / fsgc render3d into exactly what the engine loads.

  • Consistency across many angles and frames: generate one concept, turn it into 3D (fsgc fixedseed model3d), then render every heading from the game's camera (fsgc render3d --preset aoe2).
  • Pixel-art games: generate on a flat background or with transparency, cut out, then do one nearest-neighbour fit to the frame size. Ready-made recipes: fsgc fixedseed item (a game item as true pixel art, Terraria's 2x style or plain) and fsgc fixedseed block (Minecraft block textures with their model files).
  • Before spending: fsgc fixedseed estimate prices a plan; fsgc fixedseed batch plan.json --max-cents N (MCP generate_batch) makes every asset at once under a cap, and running it again resumes.

7. Verify in the real game (build an oracle)

The running game is the oracle; your reading of the code is not.

  • Make the test repeatable: a mod-side chat command or timeline, a scenario with triggers, or a test world. Drive the launch → menus → scene path with fsgc win launch/drive, and check it with fsgc win shot plus the game's log files.
  • Read screenshots at reduced scale (--scale 0.33) to save tokens; multiply coordinates back when clicking.
  • Circuit breaker: if the same failure repeats 3 times, stop. Write down what you know, then change approach or ask the user.
  • Common log locations:
Game / loaderLog
tModLoaderclient.log
BepInExBepInEx/LogOutput.log
UE4SSUE4SS.log
UnityPlayer.log in AppData/LocalLow/<company>/<product>/
SKSEDocuments/My Games/<game>/SKSE/
Minecraftlogs/latest.log

8. Showcase (the showcase-video skill)

Script the take so it's repeatable. Record the game window with the game's own audio (fsgc win record). Choose moments from a contact sheet, then cut 20-45 s with one-line titles and a fade-out (fsgc video compile).

9. Package and publish (the publish-mod skill)

Run fsgc publish check <mod> --game "<install>". Write a README with install steps. Credit tools, loaders and FixedSeed-generated assets, and be honest that it was built with AI. Ship no game files.

10. Leave a field note (the share-field-notes skill)

Turn MODLOG.md into a knowledge-base note (fsgc kb new ..., then fsgc kb check). Cover:

  • exact versions;
  • the route;
  • what the engine really does;
  • how you verified it;
  • numbered gotchas.

With your human's OK, open a PR (fsgc kb pr <note> --yes). Do this even if the mod isn't finished: a documented dead end saves the next agent hours.

Hard rules

  • Ownership. Only mod games the user owns.
  • Online play. Stay in single-player/offline, or on servers the user controls. Never touch the client of an online game protected by anti-cheat (EasyAntiCheat, BattlEye, Vanguard, VAC on official servers, Ricochet, ACE). Never write cheats (aimbots, ESP, speedhacks) for multiplayer.
  • No bypasses. Never bypass anti-cheat, DRM or ownership checks. tModLoader refuses to start unless the free tModLoader app is in the user's Steam library: add it, don't patch the check. If a game needs its anti-cheat off for mods, use only the official offline launch option.
  • No redistribution. Don't ship game files, decompiled source or extracted assets. Ship your own code and assets, or patches and converters that run on the user's own install ("bring your own game files").
  • Back up first. Run fsgc backup before changing saves, profiles or game folders. Keep the restore path written in MODLOG.md.
  • Process hygiene.
    • Kill by exact PID (fsgc win kill <pid>). Never use pkill -f (it matches your own shell) or wildcard kills.
    • Never block the game's main thread (for example by waiting on ffmpeg from inside a mod).
    • Clear crash reporters (BugSplat etc.) by PID when Steam refuses to relaunch.
  • The user's machine.
    • Driving input takes over their mouse and keyboard. Check fsgc win drive --proc X idle and ask before long automated sessions while they're at the PC.
    • Ask before installing a loader into the game folder, changing registry or graphics settings, deleting anything, or publishing.

References

  • references/engines/:
    • big engines: unity.md, unreal.md, godot.md, source.md, native.md;
    • families and frameworks: dotnet-xna.md (Terraria, Stardew, Celeste), bethesda.md, big-frameworks.md (RE Engine, FromSoft, GTA, Cyberpunk, BG3), misc-engines.md (GameMaker, RPG Maker, Ren'Py, Paradox, Doom, HTML5, LÖVE, Java);
    • single games and retro: minecraft.md, genie-aoe2.md, retro-decomp.md.
  • references/case-studies.md: Terraria, AoE2 and Minecraft × GTA V end to end, every non-obvious fact.
  • The knowledge base (knowledge/ at the repo root; fsgc kb search): field notes by many agents, per game and per technique.
  • references/safety.md: the rules with their reasons, anti-cheat and legal hygiene.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.