create-all-cg-save
Identifies saves from games built with the Ren'Py visual novel engine and reconstructs unlock flags via byte-diffing before/after saves to extrapolate an all-CG unlock plan.
Fingerprints Unity-engine save files as a candidate target and applies the generic byte-diff method to infer and flip gallery/CG unlock flags in opaque Unity save binaries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@create-all-cg-savefind my game save and unlock all CGs, dry-run before applying"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
create-all-cg-save
Create an all-CG save — unlock every CG, gallery, and recollection room in your own offline single-player saves.
An agent skill (plus a small zero-dependency Python toolkit) that turns "I want all CGs unlocked" into a precise, reversible byte patch instead of a downloaded stranger's save file.
中文说明见 README.zh-CN.md.
What it does
Scans the usual save locations on this machine and finds candidate save files for a game
Identifies the engine (RPG Maker, Ren'Py, Kirikiri, Unity, Siglus, BGI, …)
For parseable formats (e.g. RPG Maker's Ruby Marshal) it computes the exact byte offset of every unlock flag
For opaque private binaries it reconstructs the unlock flags by diffing a "before" and an "after" save, fits the
start + stridearray, and extrapolates to the whole galleryEmits a human-readable unlock plan with dry-run, verification, automatic backup, and one-command rollback
It never downloads the game, never touches CG images or game assets, and never replaces your save with someone else's — it only makes a minimal, surgical edit to a save you already own.
Related MCP server: Universal Game Modder
Two routes
Route | When | Mechanism |
Engine fast path | Save format is known and parseable | Semantic parsing — jump straight to |
Generic diff path | Private binary, unknown structure | Byte diff → fit |
Decision tree lives in skills/create-all-cg-save/SKILL.md.
Quick start
# 1. Find the save file
python skills/create-all-cg-save/scripts/save_scout.py --game <game name>
# 2. RPG Maker VX / VX Ace / XP: inspect structure and current switch state
python skills/create-all-cg-save/scripts/engines/rgss_save.py inspect "Save01.rvdata2"
# 3. Build an unlock plan (flip the given switches ON)
python skills/create-all-cg-save/scripts/engines/rgss_save.py plan-switches \
"Save01.rvdata2" --ids 1,3,5-40 --out plan.json
# 4. Dry-run → apply → verify (apply backs up automatically)
python skills/create-all-cg-save/scripts/apply_plan.py plan.json --dry-run
python skills/create-all-cg-save/scripts/apply_plan.py plan.json
python skills/create-all-cg-save/scripts/apply_plan.py plan.json verify
# Roll back if anything looks wrong
python skills/create-all-cg-save/scripts/apply_plan.py plan.json rollbackUnknown engine? Go through the diff path:
python skills/create-all-cg-save/scripts/save_diff.py A.save B.save --json ab.diff.json
python skills/create-all-cg-save/scripts/infer_plan.py ab.diff.json \
--target A.save --stride 4 --count 128 --out unlock-plan.json
--stride/--startmatter. With only one or two observed flag positions the fitted stride is ambiguous (a stride-4 array where slots 0 and 5 were unlocked makes GCD report 20). The script warns loudly; pin the layout explicitly when you can.
Verified target
RPG Maker VX Ace (RGSS3) — e.g. Save0X.rvdata2:
The save is Ruby Marshal with two concatenated Marshal streams (stream 1 is
make_save_headerfor the load menu, stream 2 is the 11-keymake_save_contentshash):switches→@datais a boolean array;'T'/'F'/'0'(nil) are one byte each, so the patch is an equal-length replacement — file size not changed by a single byteResult: 59 switch slots flipped ON, size 617,987 → 617,987 bytes, re-parsed as genuinely
true, androllbackrestored the file byte-for-byte
Repository layout
create-all-cg-save/ # repository
├── .claude-plugin/
│ └── marketplace.json plugin-marketplace manifest (`/plugin marketplace add`)
└── skills/
└── create-all-cg-save/ the skill itself (auto-indexed by skills.sh & friends)
├── SKILL.md skill entry point (the workflow an agent reads)
├── scripts/
│ ├── save_scout.py locate candidate saves + engine fingerprinting
│ ├── save_diff.py byte-level diff of two saves
│ ├── infer_plan.py infer the flag array → unlock plan
│ ├── apply_plan.py apply / verify / roll back
│ ├── common.py backup, atomic write, hashing
│ └── engines/
│ ├── ruby_marshal.py dependency-free Ruby Marshal parser + encoders
│ └── rgss_save.py RPG Maker RGSS save adapter
└── references/
├── engines.md per-engine save locations and formats
├── diff-method.md the full diff-method manual
├── unlock-plan-schema.md diff / plan JSON schemas
└── safety.md backup, integrity, and compliance red linesInstall as a skill
Straight from the public repo (no clone needed):
npx skills add xixi048/create-all-cg-save # skills.sh / `npx skills` CLI/plugin marketplace add xixi048/create-all-cg-save # Claude Code plugin marketplaceOr copy the folder into your agent's skills directory:
Drop the whole skills/create-all-cg-save/ directory into your agent's skills directory:
User level:
~/.workbuddy/skills/create-all-cg-save/Project level:
<repo>/.workbuddy/skills/create-all-cg-save/
The directory name must match the name field in SKILL.md frontmatter (create-all-cg-save).
The frontmatter follows the standard agent-skill shape: name, description (what + when, with
Chinese and English trigger keywords), license, and metadata.
Why the extra
skills/level? Directory sites that crawl GitHub (skills.sh, SkillsMP,npx skills, and Claude Code's plugin marketplaces) only look forskills/<name>/SKILL.md. A skill folder sitting at the repo root is never discovered, no matter how good it is.
Note: all relative paths inside
SKILL.mdare relative to the skill directory, not your working directory.cdinto it first, or prefix the commands with the absolute skill path.
Use as an MCP server
The whole toolkit is also exposed over MCP (stdio, zero dependencies), so any MCP-capable agent can drive it without knowing the repo layout:
{
"mcpServers": {
"create-all-cg-save": {
"command": "python",
"args": ["C:/path/to/create-all-cg-save/mcp/server.py"]
}
}
}Tools: save_scout · engine_inspect · plan_unlock_switches · diff_saves · infer_unlock_plan · apply_plan
(apply_plan takes action: dry_run | apply | verify | rollback; apply always backs up first).
Machine-discoverable index:
https://xixi048.github.io/create-all-cg-save/.well-known/agent-skills/index.jsonRequirements
Python 3.8+, zero third-party dependencies (standard library only).
On a Windows console with a legacy code page you may need chcp 65001 (or
PYTHONIOENCODING=utf-8) for the Chinese progress output to render correctly.
Safety model
Every write is backed up first as
<save>.allcg-bak-<timestamp>— never an in-place overwritesha256_beforeis verified before patching; a plan built for a different save is refusedPatches that would change the file length are refused unless
--allow-resizeis passedAlways dry-run before applying, and always load the game afterwards to confirm
See references/safety.md for the full list.
Known limits
RPG Maker XP / VX / VX Ace has full automation; MV / MZ is easy when the save is plain JSON
Ren'Py, Kirikiri, Unity, Siglus, BGI etc. usually need the diff method, and some saves are compressed/encrypted end-to-end, where plain diffing simply fails
Cloud-only saves must be synced locally first
Unlocking every switch can also trip story branches or game-over conditions — start with the IDs you have verified inside the game
Disclaimer
This tool is for personal research and modification of offline single-player games you legally own. Do not use it on online / multiplayer games, leaderboards, or anything where it could affect other people. You are responsible for whatever happens to your save — every write is backed up, though.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Manage portable AI agent playbooks, Agent Skills, MCP configurations, personas, and memory.
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
Remote MCP utilities for agents: structured data, commerce checks, and x402 paid API discovery.
Related MCP Servers
- AlicenseCqualityCmaintenanceProvides 46 local MCP tools to inspect and automate the Fallout 3 GECK editor, covering diagnostics, cell/object navigation, plugin inspection and backups, and file-level placement corrections. It enables AI assistants to plan and safely edit plugin records with atomic file operations and rollback support.46MIT
- AlicenseCqualityBmaintenanceEnables an AI agent to auto-detect a game's engine (Unity, Unreal, Godot, Java, or native) from its files and then inspect, search, and patch the underlying binaries with in-process PE analysis, hex editing, pattern scanning, string extraction, checksums, diffing, and disassembly. Everything runs locally and offline with no cloud dependency or telemetry.1010022 npm5MIT
- AlicenseAqualityCmaintenanceThis MCP server enables AI agents to act as native Ren'Py visual novel development assistants, covering code reading and writing, offline documentation search, compilation and lint verification, automatic bug fixing, asset management, save handling, and translation diagnostics. It lets agents inspect project labels and references, inject code, run SDK commands, and repair common issues such as return values, missing from clauses, BOM inconsistencies, stale saves, and incomplete translation blocks.19MIT
- AlicenseBqualityCmaintenanceEnables an MCP-capable assistant to search and cite Metal Gear Solid V modding documentation, browse catalogued upstream source at pinned commits, and inspect file headers and hashes. It also stages copies of files into isolated job folders to run supported, separately installed archive, texture, language and animation converters, recording commands, logs and changed-file hashes for review.25GPL 3.0