Checking Nonessential
saves everything you need to JSON to be able to import back into (the same version of) Spine and have everything that is important be there. Admittedly a few cosmetic or less important things don't make it, mainly editor specific information like the tree expand/collapse state, export settings, most recently used paths, etc.
Unfortunately it is not as simple as just writing a JSON file instead of a binary project file. The binary project file format is extremely complex and JSON (or another text format) doesn't have the features necessary to store the information (eg references). The binary project file format is a big part of Spine's technology that allows us to do rapid development and has other important features, like supporting backward compatibility (reading projects files saved with older versions of Spine).
Exporting to JSON is as close as you can get to storing the project file in a human readable format. You have a good point about the Export
checkboxes on attachments, skeletons, animations, and skins not being compatible with this approach. Maybe we could have a setting for ignoring those when exporting JSON.
I would still recommend keeping your project files, otherwise you'll have to import the JSON into a project file (using the same major.minor
version that exported the JSON) so you can open the project file in a newer version of Spine, when/if you choose to upgrade. You could version both the project file and JSON file, but then you may have problems where someone forgets to update the JSON file. It may be best to version only the project file and generate the JSON file from it only when you need to do diffs between project files. This works but is a bit inconvenient. Sorry I don't have a better answer!