I've been writing them using the internal docs from 1.6 as a reference.
What I do in TurboSphere is parse each component so that a script in the Turbo runtime, format.js can create objects from a RawFile and these schemes.
As an example:
Turbo.FontScheme = Turbo.LoadSystemScheme("font.json");
var font_header = Turbo.ReadBinaryObject(stream, Turbo.FontScheme.header);
// Now font_header has all the properties from the font.json's `header' array, loaded from the ByteArray reader `stream'.
if(font_header.signature != Turbo.FontScheme.signature)
throw "Bad signature. Should be " + Turbo.FontScheme.signature + " instead of " + font_header.signature;
var characters = new Array(font_header.num_characters);
//...
It's mostly just to automate loading from a specific binary layout into a JS object with specified property names. If you aren't loading the files in script, or don't have a good way to load JSON in native, it won't really help much.