Install Console Saves
Pick your agent. Every command is ready to paste.
npx skills add Jakeschincariol/console-skill --skill console-savesThe open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.
01
Install it
Run the command above, or upload the folder in Claude.
02
Ask naturally
Describe the task. Your agent loads console-saves when the request matches its description.
03
Name it if needed
If it does not trigger, say “use the console-saves skill”. In Codex, type $console-saves.
console-saves
The Save Manager moves your progress into the port and keeps it safe. The PS2Recomp runtime does not
use a card image: it keeps memory card slot 1 as plain folders in mc0 next to the game's ELF, one
folder per save, exactly as the game names them (mc0/BASLUS-20312GAME/...), and slot 2 in the sibling
folder mc1 (ps2xRuntime/src/lib/Kernel/Stubs/MemoryCard.cpp, getMcRootPath). memcard.py reads
your old card, writes those folders, and then backs them up and syncs them.
Honest limits: card images are read only (writing them back needs ECC and is out of scope; PCSX2's own
memory card manager can import a .psu). Saves from other formats (.max, .cbs, .xps) need a
converter first. A save copied to another region's version of a game usually will not load. Whether the
port loads a given save depends on how far the port is: test it.
${CLAUDE_SKILL_DIR} below is this skill's folder (where this SKILL.md lives).
python3 "${CLAUDE_SKILL_DIR}/memcard.py" ls ~/Documents/PCSX2/memcards/Mcd001.ps2 # saves, titles, serials
python3 "${CLAUDE_SKILL_DIR}/memcard.py" export Mcd001.ps2 --to console/disc/mc0 --only BASLUS-20312GAME
python3 "${CLAUDE_SKILL_DIR}/memcard.py" psu import BASLUS-20312GAME.psu --to console/disc/mc0
python3 "${CLAUDE_SKILL_DIR}/memcard.py" psu export console/disc/mc0/BASLUS-20312GAME --out console/saves/game.psu
python3 "${CLAUDE_SKILL_DIR}/memcard.py" backup console/disc/mc0 # console/saves/backups/
python3 "${CLAUDE_SKILL_DIR}/memcard.py" sync console/disc/mc0 --cloud "$HOME/Library/Mobile Documents/com~apple~CloudDocs/console-saves/SLUS-20312"
Other commands and flags: info <card> (format, ECC, free space), ls --files, restore <zip> --to mc0 [--force], export --force and psu import --force (replace, after a backup), backup --keep N --label NAME, sync --push | --pull, sync --prefer local|cloud|newest, sync --dry-run, --json.
Exit codes: 0 ok, 1 needs attention (a conflict, a save already there, a damaged save skipped, a cloud
file not downloaded), 2 bad input (not a card, truncated, damaged directories, an unsafe name).
What it reads and writes
| path | what |
|---|---|
*.ps2, *.mcd, *.bin card image |
read only: superblock, FAT, directories (8 MB = 8,388,608 bytes plain or 8,650,752 with ECC) |
| a PCSX2 folder card | read only; its _pcsx2_* metadata files are skipped |
<elf dir>/mc0/<SAVE>/<file> |
the port's memory card slot 1 (slot 2: <elf dir>/mc1) |
*.psu |
one save folder: written by psu export, read by psu import and psu ls |
console/saves/backups/<game>-mc0-<UTC time>.zip |
backups; the newest 20 per card are kept |
<elf dir>/.console-sync.json |
what the last sync saw, per mc0 and cloud folder (kept out of mc0) |
<cloud>/.console-conflicts/<time>-<device>/ |
both versions of every conflict (here/ and cloud/) |
Card format, .psu layout and the runtime's folder card in detail:
reference/memcard-format.md. Cloud folders per device, the sync rules
and settling conflicts: reference/cloud-sync.md.
The method
- Find your saves. PCSX2 keeps cards in its
memcardsfolder (Mcd001.ps2,Mcd002.ps2, or a folder per card when folder cards are on). From a real PS2, copy the card with homebrew you already run (uLaunchELF copies a save folder to USB as a.psu), or use the image file an SD-card memory card adapter keeps.lsthe card: each row shows the folder, size, date, the serial in the folder name (BASLUS-20312...is SLUS-20312, USA) and the title fromicon.sys. - Match the game. The save folder's serial must match the disc the port runs (
console/STATE.mdor/console-reverse'siso.py boot). Another region's save usually will not load. - Close the port. Never write into mc0 while the game runs.
- Bring it over.
export <card> --to <elf dir>/mc0 [--only SAVE], orpsu import <x.psu> --to <elf dir>/mc0. Both refuse to replace a save that is already there;--forcereplaces it after zipping the whole mc0 intoconsole/saves/backups/. - Back up.
backup <elf dir>/mc0before every session that matters, and before any change by hand.restore <zip> --to mc0puts one back (it backs up what is there first and needs--forceto replace a non-empty mc0). - Sync (optional).
sync <elf dir>/mc0 --cloud <a folder your cloud app syncs>. First run on the device with the saves; then on every other device. Use one cloud folder per game. Read the summary: a conflict means both sides changed since the last sync; nothing was overwritten, both versions are in.console-conflicts, and--prefer local|cloud|newestsettles it. - Playtest. Start the port and load the save (/console-tester). Write one line in
console/STATE.md: which save, from where, backup name.
Guard rails
- Bring your own game. Saves go with a game you own and dumped yourself. Never download ISOs, ELFs or BIOS files, never help find them, never ask for them.
- Nothing from the game gets published. The disc, ELF, IRX modules and recompiled C++ stay on your machine. Your saves are yours: keep the cloud folder private, never a public share link.
- Back up before every change.
export --force,psu import --force,restore --forceand anysyncthat writes into mc0 make a zip first. Do the same before editing saves by hand. - Formatting deletes mc0. In the port, a game's "format memory card" option removes the whole mc0
folder (
sceMcFormatandsceMcUnformatcallremove_allon it). Back up before letting a game format a card. - Card images are read only. This tool never writes a
.ps2or.mcd. - Not affiliated with Sony. PlayStation is a trademark of Sony Interactive Entertainment.
Hands off to
- /console-tester to boot the port and check the save loads.
- /console-backend when the game cannot save or load in the port (
Kernel/Stubs/MemoryCard.cpp, thesceMc*handlers, andps2xIOP/src/modules/mcserv.cppfor games that talk to MCSERV over RPC). - /console-anywhere to run the same port on another device; then
syncthere.
Tips for Console Saves
- • Start a fresh session after installing so your agent picks up the new skill.
- • This skill ships scripts. Read them before the first run, and run it in a project without secrets first.
- • It bundles reference files. The agent reads them only when needed, so they cost no context until then.
- • It is part of a pack with 11 skills. Install only the ones you need with --skill to keep triggers precise.
- • If two skills overlap, mention the one you want by name.
Questions about Console Saves
What does the Console Saves skill do?
Save Manager. Brings your old memory card saves over, backs them up and syncs them to the cloud so you continue on any device. Reads PS2 memory card images (PCSX2 .ps2 and .mcd, raw 8 MB dumps, with or without ECC) and PCSX2 folder cards, lists every save with its title, copies saves into the port's folder memory card (mc0 next to the game's ELF), imports and exports single saves as .psu, makes timestamped zip backup
How do I install Console Saves?
Run "npx skills add Jakeschincariol/console-skill --skill console-saves" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.
Does Console Saves work in Cursor and Codex?
Yes. Console Saves uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.
Is Console Saves free?
Console Saves is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.
Who made Console Saves?
Console Saves is published by Jakeschincariol in the Jakeschincariol/console-skill repository, together with 10 other skills.





