Create All Cg Save

io.github.xixi048由 GitHub 帳號 xixi048 發布v1.3.0更新於 Nov 2, 2026

Byte-patch CG unlock flags in offline single-player game saves, with backup and rollback.

發布方自己的服務:Feeling Search — Art Style Reference & Prompt Encyclopedia

已驗證STDIO僅桌面檔案與儲存開發者工具

概覽

AI 產生的概覽

在本機執行的 MCP 伺服器,可尋找離線單機遊戲存檔並以位元組層級修改 CG 解鎖旗標,支援試跑、備份與回復。

可以做什麼
  • 掃描本機常見存檔位置,找出候選存檔並辨識遊戲引擎
  • 檢查 RPG Maker 等格式的存檔結構與目前開關狀態
  • 透過翻轉開關編號,或比對修改前後存檔擬合 start + stride 旗標陣列,產生解鎖方案
  • 執行、驗證與回復方案,每次寫入前自動備份
適用情境
適合想在自己合法擁有的離線單機存檔中解鎖全部 CG、圖鑑或回想房間,而不下載他人存檔的情況。也適合希望做最小幅度、可回復的修改,並能自行試跑與驗證的使用者。
執行需求
以本機 stdio 程序執行,需要 Python 3.8+(僅標準函式庫,無第三方相依套件)。需要存取本機存檔檔案;僅存在雲端的存檔須先同步到本機。在舊代碼頁的 Windows 主控台可能需要 chcp 65001 或 PYTHONIOENCODING=utf-8 才能正常顯示輸出。
安裝前請注意
會寫入遊戲存檔檔案,務必先試跑並保留自動備份。會改變檔案長度的修補預設會被拒絕,除非明確允許。解鎖全部開關可能觸發劇情分支或遊戲結束條件,推斷出的 stride 配置也可能有歧義。僅限用於自己合法擁有的離線單機遊戲,不應用於線上或多人遊戲。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Create All Cg Save,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

create-all-cg-save

[License: MIT] [Python]

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 + stride array, and extrapolates to the whole gallery
  • Emits 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.

Two routes

RouteWhenMechanism
Engine fast pathSave format is known and parseableSemantic parsing — jump straight to switch[N] / variable[N]
Generic diff pathPrivate binary, unknown structureByte diff → fit start + stride array → extrapolate

Decision tree lives in skills/create-all-cg-save/SKILL.md.

Quick start

bash
# 1. Find the save filepython skills/create-all-cg-save/scripts/save_scout.py --game <game name>
# 2. RPG Maker VX / VX Ace / XP: inspect structure and current switch statepython 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-runpython skills/create-all-cg-save/scripts/apply_plan.py plan.jsonpython skills/create-all-cg-save/scripts/apply_plan.py plan.json verify
# Roll back if anything looks wrongpython skills/create-all-cg-save/scripts/apply_plan.py plan.json rollback

Unknown engine? Go through the diff path:

bash
python skills/create-all-cg-save/scripts/save_diff.py A.save B.save --json ab.diff.jsonpython skills/create-all-cg-save/scripts/infer_plan.py ab.diff.json \    --target A.save --stride 4 --count 128 --out unlock-plan.json

--stride / --start matter. 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_header for the load menu, stream 2 is the 11-key make_save_contents hash)
  • :switches → @data is 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 byte
  • Result: 59 switch slots flipped ON, size 617,987 → 617,987 bytes, re-parsed as genuinely true, and rollback restored 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 lines

Install as a skill

Straight from the public repo (no clone needed):

bash
npx skills add xixi048/create-all-cg-save           # skills.sh / `npx skills` CLI
text
/plugin marketplace add xixi048/create-all-cg-save  # Claude Code plugin marketplace

Or 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 for skills/<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.md are relative to the skill directory, not your working directory. cd into 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:

json
{  "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:

text
https://xixi048.github.io/create-all-cg-save/.well-known/agent-skills/index.json

Requirements

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 overwrite
  • sha256_before is verified before patching; a plan built for a different save is refused
  • Patches that would change the file length are refused unless --allow-resize is passed
  • Always 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.

來源:README.md,提交 9744e65

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

1
  1. v1.3.0最新Oct 26, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Xiximm 整合