I would like to try make a constructive criticism.
Variable names are a bit cryptic.
Some examples:
Although for some, we might grasp some idea of what it actually is used for or we can assume.
However, we should avoid cryptic names by making them more clear, but above all, each and every variable name ( even if cryptic, shortened or minimized), MUST have a complete description, so that we can understand what it is used for, what are the units or range of the values being used, etc...
However, I checked each one I posted above, and they have no description associated with them.
If no description is given for each variable, we are forced to look for them in actual code to actually determine what and how they are used for, and that goes against the original idea of actually documenting the code.
NOTE: I have NOT used SchoolKit myself, yet.
But I believe variable, functions, etc.. can each have a description.
Some like "spell successful flag", which as nice name, as simple as it seems to be, needs further description to define which values are used, like: