Tes5Mod:Mod File Format/CLAS
CLAS records contain information about NPC and creature classes.
C  Field  Name  Type/Size  Info 

+  EDID  editorID  zstring  Corresponds with Class EditorID 
+  FULL  Name  lstring  Corresponds with Class Name (All resolved to ilstrings) 
+  DESC  Description  lstring  Description (always 0 in base files but can be present in mods) 
  ICON  Description  zstring  Menu image 
+  DATA  Data  struct[36]  

uint32  Possibly flags, but not displayed in CK  

uint8  Trainer classes store a skill here. Skill is provided using an actor value index  6  

uint8  The skill level to which the NPC will provide training. 0 if class is not used for trainers  

uint8[18]  Each byte provides the weight assigned to one skill. The skills are provided in actor value index order (skill at byte 06 is Onehanded; at byte 17, Enchanting)
The weight is a value that normally ranges from 0 to 3, although values as high as 9 occur in some cases. The weights are used to distribute the fixed 8 skill points per level among the various skills. Skills with a weight of zero never increase. See Skills for further information. 


float  

uint32  

uint8  Each byte provides the weight assigned to that attribute. The weights are used to distribute the fixed 10 attribute points per level among the three attributes. Note that health always receives an additional 5 point/level increase, independent of its weight. See Attributes for details.  

uint8  

uint8  

uint8  0x1 seems to indicate guard 
Weight Calculations[edit]
Skills[edit]
The approximate formula for an NPC's skill at a given level is:
Skill = 15 + [Racial bonus] + 8*(Level1)/(Sum of class' skill weights)*[Skill weight]
This formula will generally only be accurate to within a couple points, however, because of the details of how the weighting system assigns values. Furthermore, once any skill reaches 100, this formula is no longer applicable.
The exact method used to assign values is to first assign all complete sets of points, namely:
Sets = floor(8*(Level1)/(Sum of class' skill weights))*[Skill weight]
Then the leftover skill points (the number necessary so that (Sum of skill bonuses)=8*(Level1)
) are assigned one at a time by looping over all the skills in order. Skills are ordered first by their weight (higher skills ordered first) and second by their actor value index (lower indices are ordered first). Skills are only incremented if their maximum delta (i.e., their weight value) has not yet been reached.
To provide an example of how this works, take the TrainerRestorationMaster Priest class. The (Sum of class' skill weights)
is 15. The skills are incremented in the following order:
Skill  AVIF  Weight  Round 1  Round 2  Round 3  Round 4  

Restoration  22  4  1  1  1  1  
Speech  17  3  1  1  1  
Enchanting  23  2  1  1  
Illusion  21  2  1  1  
Alchemy  16  2  1  1  
Smithing  10  2  1  1 
However, once any one skill reaches 100, the skill assignment system changes. Presumably the weighting system is attempting to adjust by reassigning the skill points from the skill(s) that have reached 100. The total number of skill points is no longer a fixed 8 points per level. The equation used is actually simplified in some ways, because the skill points are a fixed function of Sets
 meaning that either all of the skills are increased when an NPC levels up, or else none of them are. However, the full details of the equations used at this point have not yet been worked out.
Attributes[edit]
The approximate formula for an NPC's magicka or stamina at a given level is:
Attribute = [Racial bonus] + [NPC offset] + 10*(Level1)/(Sum of class' attribute weights)*[Attribute weight]
The only difference for health is that health always receives an additional 5 points per level, regardless of the class weights:
Health = [Racial bonus] + [NPC offset] + 5*(Level1) + 10*(Level1)/(Sum of class' attribute weights)*[Health weight]
As with the skills, this formula will generally only be accurate to within a couple points because of the weighting system details. However, there is no upper limit beyond which the equation ceases to be valid.
If the autocalc flag for an NPC isn't set, all attributes are calculated just as:
Attribute = [Racial bonus] + [NPC offset]
The exact method used to assign values is the same as that used with skills. So leftover points are assigned one at a time by looping over the attributes. The attributes are ordered first in decreasing order of weight. If any attributes have the same weight, they are ordered in reverse actor value index order (stamina, magicka, then health).