Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jame581/save-load
Use when implementing save/load systems — ConfigFile, JSON, Resource serialization, save game architecture
Passed 21 of 22 test cases with the skill, and 19 of 22 without it.
and 1 more in the full report
2 fixed19 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/20/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 2 test cases the skill fixed. Same model, same prompt, with and without the skill.
I have automated test scripts that check Godot 4 save file integrity by hashing the byte content of pretty-printed JSON files generated by `JSON.stringify(data, " ")`. In Godot 4.7+, how is an empty `Dictionary` field formatted during indented serialization, and why might strict byte-comparison tests break?
| Checked | Without skill | With skill |
|---|---|---|
| State that Godot 4.7 formats empty dictionaries as compact {} even with indentation enabled | Missed | Passed |
| Note that byte-for-byte diffs of formatted JSON must accommodate this output format change | Passed | Passed |
The instructions your model reads when the skill loads.
Choose the right serialization strategy for your data type. All examples target Godot 4.3+ with no deprecated APIs.
Related skills: resource-pattern for custom Resource data containers, inventory-system for inventory serialization patterns, godot-project-setup for SaveManager autoload setup, popochiu for adventure-framework saves.
| Strategy | Best For | Readable | Editor Support | Notes |
|---|---|---|---|---|
| ConfigFile | Settings, simple key-value data | Yes | No | Built-in INI-style, no extra deps |
| JSON | Game saves, flexible structures | Yes | No | Cross-platform, version-migratable |
| Resource .tres | Editor-integrated data | Yes | Yes | NOT secure — never load untrusted files |
| Resource .res | Fast binary data | No | Yes | NOT secure — never load untrusted files |
When you recommend a strategy, name the one you rejected and the factor that decided it — "JSON, not Resource files, because saves are user-writable and loading a Resource can run code". A format picked without a named alternative cannot be overruled.
Security warning: Loading
.tresor.resfiles executes arbitrary GDScript embedded in the resource. Never load Resource files from untrusted sources (user-uploaded files, downloaded mods). Use ConfigFile or JSON for user-generated save data.
ConfigFile writes INI-style sections — ideal for audio / video / controls settings (small, designer-debuggable). Use set_value(section, key, value) then save(path); load with load(path) and get_value(section, key, default).
See references/configfile.md for the full GDScript + C# settings save/load + typical settings-menu wiring.
JSON.stringify(dict) to serialize, JSON.parse_string(text) to deserialize. Read/write through FileAccess. Best for game saves where you want human-readable files. Build a Dictionary that captures all gameplay state (player position, inventory, world flags), serialize, write to user://save_<slot>.json.
See references/json-saves.md for the full GDScript + C# save/load implementation, including FileAccess wrapping and error handling.
⚠️ Changed in Godot 4.7:
JSON.stringify(data, indent = "", sort_keys = true, full_precision = false)now serializes an emptyDictionarycompactly as{}even when anindentis passed (GH-115883). Save files written with an indent change formatting for empty-dict fields after upgrading — anything that diffs or hashes save output byte-for-byte must tolerate the new form. Parsing is unaffected.
test cases passed, vs 19 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.