After you get the basic implementation into a working state, move on to the more challenging requirements: the complete list of skill types and data security.
To get the complete list of types, use the metadata methods to query the values of the
Skill__c.Type__c picklist. Iterate over the values, checking for the presence of corresponding Skill records for the contact. Create Skill records where they are missing.
For data security, you cannot rely on built-in Force.com record-level security alone. It operates on the
OwnerId field, the unique identifier of the user who has ownership rights to a record. In the Skills Matrix, ownership of a contact record does not determine who is allowed to edit or view its skills. An administrator ...