add-emulator-platform
Skill1.1k starsChanged 3 months agoMITView on GitHub
Add or review a new emulator platform, game system, libretro core, ROM extension mapping, or core build target in Stable Retro. Use for platform ports and core integrations, not ordinary game integrations.
Trending
Quiet since August.thin dataabout the whole repository
Who's talking about Farama-Foundation/stable-retro
- NetHack-LE/nle“Building manylinux wheels”GitHub · Jun 8, 2024 · 2 reactions
- sail-sg/envpool“Survey candidate RL environment suites not yet covered by EnvPool”GitHub · Apr 8, 2026 · 1 reactions
- libretro/parallel-n64“Loading a state resets the game”GitHub · Aug 16, 2023 · 1 reactions
- DLR-RM/rl-baselines3-zoo“Move packaging setup to pyproject.toml, integrate requirements.txt as an extra”GitHub · Aug 3, 2026
- Fernando-crz/Bomberman-RL“Investigate how Stable Retro works and verify if it can run emulator games”GitHub · Dec 13, 2025
The biggest 5 of 10 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 10
Talked about on GitHub (10 times).
On GitHub · 10
- Jun 8, 2024Building manylinux wheels — NetHack-LE/nle2 reactions · 31 comments
- Apr 8, 2026Survey candidate RL environment suites not yet covered by EnvPool — sail-sg/envpool1 reaction · 3 comments
- Aug 16, 2023Loading a state resets the game — libretro/parallel-n641 reaction
- Aug 3, 2026Move packaging setup to pyproject.toml, integrate requirements.txt as an extra — DLR-RM/rl-baselines3-zoo0 reactions · 8 comments
- Dec 13, 2025Investigate how Stable Retro works and verify if it can run emulator games — Fernando-crz/Bomberman-RL0 reactions
5 more on GitHub
- Feb 25, 2025stable-retro support — dvalenciar/ReinforceUI-Studio0 reactions · 3 comments
- Dec 12, 2023Integrate Mario Kart into stable-retro — arvganesh/super-mario-kart-ppo0 reactions
- Aug 23, 2023broken-link-checker seems to return a false negative — stevenvachon/broken-link-checker0 reactions
- Jul 25, 2023Integrating n64 into stable-retro — bzier/gym-mupen64plus0 reactions · 1 comment
- Jul 24, 2023Checklist for Maturity — Farama-Foundation/MiniWoB-plusplus0 reactions
In this repositoryOne other file it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 2 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Use this workflow for a new emulated system or libretro core.
- Very specific: line 26
Ensure the core's Makefile produces <core_name>_libretro with the host shared-library suffix.
- Very specific: line 28
Keep buttons and keybinds aligned to libretro joypad IDs.
- Very specific: line 35
Add add_core(<platform> <core_name>) in CMakeLists.txt.
- Very specific: line 36
Add only required deterministic core options to s_envVariables in src/emulator.cpp.
- Very specific: line 37
Add the platform suffix to setup.py only when packaged game integrations use that suffix.
- Very specific: line 38
Update tests/emulator.cpp with manifest loading and an emulator smoke parameter when a redistributable fixture exists.
- Very specific: line 39
Update docs/supported_emulators.md and, when users can import games for the system, the supported ROM types in docs/integration.md.
- Distinctive: line 56
Run relevant Python tests and repository checks:
- Distinctive: line 63
Use the completion checklist before finishing.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Add an Emulator Platform
Use this workflow for a new emulated system or libretro core. A game integration only adds data under stable_retro/data/ and should follow docs/integration.md instead.
Gather requirements
Before editing, establish:
- Stable Retro platform identifier and game-directory suffix.
- Core directory slug and expected libretro library basename.
- Upstream repository, pinned revision, license, and redistribution terms.
- ROM extensions, libretro joypad layout, RAM regions, serialization behavior, and BIOS needs.
- Supported host matrix: Linux, Windows, macOS x86_64, and macOS arm64.
- A legally redistributable smoke-test ROM, or a documented manual-test substitute.
Compare one nearby simple platform manifest and one platform with similar rendering, BIOS, or architecture constraints. Do not assume a core's standalone defaults are suitable for deterministic, headless reinforcement learning.
Implement the platform
- Vendor the pinned core under
cores/<platform>/. Preserve upstream licensing and avoid unrelated source edits. - Ensure the core's Makefile produces
<core_name>_libretrowith the host shared-library suffix. The top-leveladd_corefunction expects this exact name. - Copy the manifest template to
cores/<platform>.jsonand adapt it. The top-level key is the public platform identifier;libis<core_name>from CMake. - Keep
buttonsandkeybindsaligned to libretro joypad IDs. Usenullfor unsupported positions and list only valid button names inactions. Validate the manifest before compiling:
python .github/skills/add-emulator-platform/scripts/validate_manifest.py cores/<platform>.json- Add
add_core(<platform> <core_name>)inCMakeLists.txt. Guard it when host support or system libraries are conditional. - Add only required deterministic core options to
s_envVariablesinsrc/emulator.cpp. Prefer software rendering unless the core truly requiresENABLE_HW_RENDER. - Add the platform suffix to
setup.pyonly when packaged game integrations use that suffix. Core JSON and shared-library packaging is already generic. - Update
tests/emulator.cppwith manifest loading and an emulator smoke parameter when a redistributable fixture exists. Otherwise add lower-level mapping coverage and record manual load, frame, audio, reset, and serialization evidence. - Update
docs/supported_emulators.mdand, when users can import games for the system, the supported ROM types indocs/integration.md.
Validate incrementally
Build the new core first:
cmake -DCMAKE_DISABLE_FIND_PACKAGE_CapnProto=TRUE .
cmake --build . --target <platform> -- -j2Then run the native suite:
CMAKE_BUILD_PARALLEL_LEVEL=2 scripts/test-cpp.shRun relevant Python tests and repository checks:
scripts/test-python.sh
python -m pre_commit run --files <changed-files>Use the completion checklist before finishing. Clearly report any host platform or hardware path that was not tested.
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
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.

