Skills & Competencies
The skills framework lets you build a taxonomy of competencies for your organization, tag courses with the skills they teach, and give learners a live gap analysis showing which skills they still need to develop.
It has six parts:
- Skills Library — domains and skills, each with up to four proficiency-level descriptions.
- Course–skill mapping — link a skill (with a target level) to each course that teaches it.
- Assessment evidence — link a quiz to the skills it proves; passing the quiz records the level.
- Self-assessment and validation — learners claim a level; their manager (or an admin) validates or rejects it.
- The per-person skills report — the levels a person’s job roles require against the levels they hold, coloured by the gap, on Achievements → Skills, on the user page, on the learner home page, and as a downloadable skills record.
- Job roles — the skill levels a job requires, assigned to people by hand, by CSV, or from a dropdown profile field.
Prerequisites
- Plan: Starter or higher. On the Free plan the Skills Library, course and quiz skill mapping, each person’s skill sheet and self-assessment validation show an upgrade screen instead. Completions and passed quizzes keep recording skill levels on Free, and learners still see the levels they hold, so nothing is lost when you upgrade. See Billing §2b.
- Role: Admin or Manager (any role with the
course:createpermission can manage the library and course mappings) - The Skills sidebar item (it opens on the Skills Library tab) is visible to roles holding
skill:view
Proficiency levels
Every skill uses the same four-level scale, ranked lowest to highest:
| Level | Rank | Typical meaning |
|---|---|---|
| Awareness | 1 | Knows the concept exists and its basic vocabulary |
| Developing | 2 | Can apply it with guidance |
| Proficient | 3 | Works independently — the most common course target |
| Expert | 4 | Can teach it and handle edge cases |
You can (optionally) write your own description of what each level means for each individual skill — these descriptors appear in the library so admins mapping courses share the same yardstick.
Build the Skills Library
- In the left sidebar, open Skills → Skills Library (
/<locale>/admin/skills/library). - Click Add domain and fill in:
| Field | Description |
|---|---|
| Domain name | Required, max 100 characters (e.g. “Data & Analytics”, “Leadership”) |
| Description | Optional, max 500 characters |
- Click Save. The domain appears as an expandable panel with a skill count.
- Expand the domain and click Add skill:
| Field | Description |
|---|---|
| Skill name | Required, max 150 characters |
| Description | Optional, max 1000 characters, in every language |
| Level descriptions | Optional — one free-text descriptor per level (Awareness → Expert), max 300 characters each |
| Valid for (months) | Optional, 1 to 240. Leave empty if the skill never expires. A level recorded from then on stops counting that many months after it was earned (see Validity and expiry, below). Changing it does not re-date levels already recorded |
| Critical skill | Optional. A critical skill’s gaps rank first in the skills gap list (Growth plan and above), and its column in the team skills matrix is marked Critical |
- Click Save. Repeat for each skill in the domain.
Skills in more than one language
Every skill, domain and job role can carry its text in each language your people use. The editors work like the course editor’s language tabs:
- Open a skill or domain for editing. The first tab is the base language, which is your organization’s default language (Settings → General). It holds the text you entered above.
- Each other tab is one language. Select it to enter that language’s name, description and level descriptions. The tab is laid out like the base tab, with each level’s coloured badge beside its description, and the original text is shown under each field, so you translate beside the source. The validity period and the critical flag appear greyed out: they are the same in every language and are changed on the base tab.
- Select + Add a language to add one. Pick it from the list, or type a language code such as
esorpt-BR. - Click Save. A field you leave empty shows the base text to learners; it never shows as blank.
The list of languages is shared by the whole library: a language added on one skill appears as a tab on every skill, domain and job role, with a count of how many fields are translated so you can see what is left. Learners and managers see each skill in the language of their interface, falling back to the base text where a translation is missing.
If you change the organization’s default language, the vocabulary follows it: the base text moves under the old language, and each skill, domain or job role that already has text in the new language switches to it. Those without one keep their current text on the base tab until you translate it. The settings page shows these counts before you confirm, and nothing learners see changes.
See what is left to translate
When the library has a language other than the base, anything still missing text in that language is flagged in red:
- At the top of the Skills Library, a Some translations are incomplete box counts the skills and domains that need translating. The Job roles tab has the same box for job roles.
- Under each skill, a red line names each incomplete language and how many of the skill’s fields are missing, for example “French Canadian (fr-CA): 2 of 4 fields missing”.
- Under each domain’s name, a red line covers the domain’s own fields and says how many of its skills need translating, even while the domain is collapsed. Expand it to see which ones.
- In the job role list, the same red line sits under each role’s name.
Only fields that have text in the base language count, and deactivated skills and job roles are never flagged. A language is flagged only once translation into it has started, meaning at least one active skill, domain or job role has text in it, on a field that also has text in the base language. A language that only your courses use still gets its own tab, with a grey count, but nothing turns red until someone starts translating into it. The count on each language tab covers the whole library: it is red while anything in a started language is incomplete, anywhere in the library, and green once everything is translated. A translation is kept once you select Save on its item. A line disappears as soon as you save the last missing field.
Draft translations with AI
When AI translation is turned on for your organization, open a skill, domain or job role, select a language tab and select Draft with AI. The empty fields of that language fill in, each marked AI draft. Drafts only fill fields that are empty; they never replace text you wrote. Read them, edit what needs it (editing a field removes its mark), then click Save. Nothing is saved before you do.
Drafts are written by an AI model hosted in Canada. They are a starting point: review each one before saving. Every draft request is recorded in the audit log, and every save is audited like any other edit.
Edit, deactivate, and delete
- Edit a domain or skill inline from its row.
- Deleting a skill deactivates it (soft-delete): it disappears from pickers and stays out of new mappings, but its history — including learner attainment — is preserved. Deactivated skills show as Inactive in the library.
- Deleting a domain is blocked while it still contains active skills. Deactivate or move its skills first; the error message tells you how many active skills remain.
- All create/update/deactivate actions are written to the audit log (SOC 2).
Map skills to a course
- Open the course in Courses, then open its Skills page (
/admin/courses/{course}/skills— the breadcrumb links back to the Skills Library). - Click Add skill, pick a skill from the library, and choose the target level the course brings learners to (defaults to Proficient).
- Click Add. The mapping appears with its domain and target-level badge.
| Setting | Description |
|---|---|
| Skill | Any active skill from the library |
| Target level | Awareness / Developing / Proficient / Expert |
| Re-adding a mapped skill | Updates the existing mapping’s target level (no duplicate rows) |
| Remove | Unlinks the skill from the course; the skill itself is untouched |
The per-person skills report
Each person’s skills report compares the level their job roles require (see Job roles, below) with the level they hold. Learners read it on Achievements → Skills (/achievements?tab=skills, see Your skills and what your role requires); admins and managers read the same statuses on the person’s Skills panel under Users.
What sets the requirement:
- By default, the person’s job roles. When several roles require the same skill, the highest level wins and the row names the role that set it.
- With a learning-path filter (
?learningPathId=…, e.g. linked from a path page) the path’s course targets instead. - A person with no job role and no path sees No requirement set yet above the levels they hold. The report never measures anyone against every course in the catalogue.
Every skill gets one status, the same everywhere (the learner tab, the user page, the home widget and the exports):
| Status | Rule |
|---|---|
| Two or more levels below | Held at least two levels under the requirement |
| One level below | Held one level under |
| Not assessed | Required, but no level held |
| Meets | Held at exactly the required level (green check) |
| Exceeds | Held above the required level (same green check) |
| Not required | Held, but no role requires it |
The cell’s colour is never the only signal: a small circle fills by quarter for the level held, with a tick at the required level, and screen readers hear a full sentence (Forklift: Developing, required Proficient, one level below). A dashed outline marks a self-assessment still waiting for validation; it closes nothing.
Above the table, the statuses double as a filter (click one, or Show all), and the Gap / Attained / Required switch changes what the cell shows. On the learner tab, the arrow at the end of a row opens its details: where the level came from, the role that requires it, the learner’s self-assessment and the courses that raise the skill. The home page’s Skill coverage widget shows the same report in short.
On the Free plan the requirement side is locked: learners see the levels they hold and where each came from, with no required level and no colours.
The skills record (export)
Learners download their own record from the bottom of Achievements → Skills; admins and managers download a person’s from the Skills panel on the user page with Download skills record. Three formats:
| Format | Content |
|---|---|
| Tenant-branded, like the certificate and the transcript: the person, their job roles, a summary and one row per skill | |
| CSV | One row per skill: domain, skill, required level, required by, attained level, status, source, evidence, date recorded, pending self-assessment, valid until. Opens in Excel with French accents intact |
| JSON | The same rows with fixed English field names, for moving the record to another system |
| Rule | Behaviour |
|---|---|
| Who | Anyone, for their own record. For someone else: holders of Assign skills (skill:assign) over that person, a Manager for their report chain and an Owner/Admin for everyone. Asking for someone outside your scope is refused; it never returns your own record instead |
| Plans | Every plan. On Free the record holds the levels held only |
| Audit | Every download is logged (who, whose record, which format), never its content |
How attainment is recorded
Attained levels are evidence: every grant below is kept as its own record (its source, evidence note, date and, when the skill has one, its validity), and the level a person holds is the highest of those records that is still valid. Nothing is ever deleted: a correction marks records as no longer counting, and an expired record simply stops counting. Six things record a level — every one of them audited:
- A course completion — automatically. When a learner completes a course (every required module done, by any route: video, document, quiz, SCORM, cmi5, AICC, ILT attendance, Mark complete), each active skill mapped to that course is recorded at the mapping’s target level. The rules:
- Upgrade-only. A completion only ever moves a level up. If the learner already holds the skill at the same or a higher level — from an earlier course or set by hand — nothing changes.
- Idempotent. Completing the same course again (for example after a forced re-enrolment on a new course version, or a recertification) grants nothing new.
- Audited. Every level a completion raises writes an audit entry with actor
system, the before/after level and the enrollment it came from. - Not retroactive. Completions recorded before this shipped (2026-09-23), completions imported from a CSV file, and completions from legacy ILT sessions that belong to no session series do not grant skills. Set those levels by hand (next section).
- A passed assessment — automatically (LMS-589). See Link an assessment to a skill, below. Upgrade-only, like a completion.
- A validated self-assessment (LMS-589). See Self-assessment and manager validation, below. Upgrade-only.
- The API (
skill.upsertProfile) — an upgrade-only raise for integrations; it needs Assign skills and never lets anyone raise their own level. - An observed sign-off (LMS-1195): a manager or admin records a level they saw the person apply on the job. See Record an observed sign-off, below. Upgrade-only, like a completion.
- An administrator or manager, by hand — see the next section. A manual entry may set a level up or down: it is an override, meant for prior certifications and correcting a mis-recorded level.
Each held level shows its source to the learner (Earned by completing a course / Earned by passing an assessment / Validated by your manager or an administrator / Observed on the job by your manager or an administrator / Set by your manager or an administrator, with the evidence note) and to admins (who set it, when).
Set or override a person’s level by hand
- Open Users → the person’s profile and scroll to Skills (below Job roles). Every active skill is listed by domain, with its status against the person’s job roles, the level required and the role that set it, the level held (or Not held), its source and evidence.
- Click Set level (or Override on a held skill), choose the level, type the evidence (optional, up to 500 characters — e.g. observed on the floor, 2026-09 or prior certification), and Save.
- Remove withdraws the held level. Its records stop counting; if the person has a lower level still on record (an earlier course, say), that level applies again, otherwise they show as not assessed.
| Rule | Behaviour |
|---|---|
| Who | Holders of Assign skills (skill:assign): Owner, Admin — and Manager, for the people in their report chain only. Group admins and instructors do not hold it by default; a custom role can. |
| Scope | Enforced on the server: a manager setting a level for someone outside their chain is refused. |
| Direction | Up or down. Setting a lower level marks every record above it as no longer counting (a mis-recorded Expert never comes back through a later course) and records a manual entry at the new level. |
| Audit | Every set, override and removal is logged with actor, before/after level, source and evidence. |
| Gap analysis | Updates immediately — the learner’s Achievements → Skills and the manager’s team view read the same profile. |
Record an observed sign-off
Use this when you have watched the person do the work — on the job, in mentoring or in coaching — and want it on their record as evidence, the way a course completion is.
- Open Users → the person’s profile → Skills and click Sign off on the skill.
- Fill in the dialog and click Record sign-off.
| Field | Description |
|---|---|
| Level observed | Awareness, Developing, Proficient or Expert |
| Date observed | The day you observed it. Not in the future, and not more than ten years ago. The validity of the skill (if it has one) counts from this date |
| What you observed | Required, up to 500 characters. Shown to the person beside the level |
| Reference (optional) | Up to 500 characters: a checklist number, a document link or a file name, if you keep one. Kept with the record and in the audit log |
| Rule | Behaviour |
|---|---|
| Who | The same as setting a level by hand: Assign skills (skill:assign) over the person — a Manager for their report chain, an Owner/Admin for everyone. Never your own record. |
| Direction | Upgrade-only. A sign-off below the level already held is kept on record but does not lower it; the confirmation says so. |
| Source | Shown as Observed on the job by … on the user page and Observed on the job by your manager or an administrator to the person. |
| Plans | Starter or higher, like every skills write. |
| Audit | Logged with the observer, the level, the date and the reference. |
Validity and expiry
A skill can be given a validity in the Skills Library (Valid for (months)). Every level recorded for it from then on — by a course, an assessment, a validation, a sign-off or by hand — is valid until that many months after it was earned.
| Situation | What happens |
|---|---|
| The validity ends within the recertification window (30 days by default, the same window as expiring certificates) | The level carries the expiring mark in the skills cell and the date (Expires …) on the user page and on the person’s Achievements → Skills. The person receives one Skill level expiring notification (in-app and email, in their language) per record |
| The validity ends | The record stops counting the next morning (a daily check at 06:10 UTC). The person falls back to the next valid level on record — an indefinite Proficient survives the expiry of a later Expert certificate — or shows as not assessed |
| The person renews (completes the course again, passes the assessment, is signed off again) | A new record with a new validity; the next expiry notice is for that record |
Nothing is deleted when a level expires; the history stays on record and in the audit log. The validity date is also in the skills record export (CSV column Valid until, JSON validUntil). People can turn the Skill level expiring notification on or off in their notification preferences.
Development targets
A development target is the level a person is working towards in a skill, with a due date. It is the third level on the sheet, beside the level their job role requires and the level they hold. A target never changes either of those, so it never changes a status colour: it is a plan, not a requirement and not a result.
Set a target for someone
- Open Users, then the person, and scroll to the skills sheet.
- On the skill’s row, select Set a target (or Edit the target when one exists).
- Choose the Target level, the Due date and, if you like, a Note. The person sees the note.
- Select Save the target.
The Target column then shows the level and the date, with In progress, Overdue (the date has passed and the level is not held yet) or Reached (the person holds the level, whatever the date). To remove a target, open it and select Clear the target.
You can also set one target for several people at once from the skills gap list: select their gaps in one skill, then Set a target. An existing target in that skill is replaced.
Who can set a target
| Who | On whom |
|---|---|
| Owners and Admins | Anyone in the organization |
| Managers and Group Admins | The people they manage or whose groups they administer (Assign skills) |
| Anyone | Themselves, only when People may set their own development targets is on (Settings → Skills planning → Development targets). Off by default. A person can change or clear only a target they set themselves: a target their manager set stays the manager’s |
Nobody sets a target on themselves while that setting is off, administrators included. When you set a target for a selection in the gap list that includes your own row, your row is skipped and the others are saved.
What a target does
- Visible to the person: on Achievements → Skills, in the Target column, with who set it and the note.
- Recommendations: the person’s home page recommends first a course that reaches the target level, soonest due date first, then the courses for their role’s gaps.
- Reminder: 14 days before the due date, while the level is not held, the person receives one reminder (in the app and by email, in their language). Changing the level or the date sends a new one when the new date nears.
- Matrix: the cell detail in the team skills matrix shows the target, flagged when overdue.
One target per person and skill. Changing it replaces it, and every set, change and removal is recorded in the audit log.
Link an assessment to a skill (assessment evidence)
A quiz can prove a competency. Link it once, and every learner who passes that quiz is recorded at the level you choose.
- Open the course’s Skills page (Courses → course → Skills).
- Scroll to Assessment evidence. Every quiz module of the course is listed.
- On a quiz, click Link a skill, choose the skill and the level a pass proves, then click Link a skill again to save.
- Remove unlinks it. Levels already earned stay earned.
| Rule | Behaviour |
|---|---|
| Who | Holders of course:update — Owner, Admin, and Instructors on the courses assigned to them. An instructor on another course is refused. |
| What counts as passing | The quiz’s own passing score. There is no second threshold. A manually graded quiz counts once its grading is finalised as a pass. A failed attempt records nothing. |
| Level written | Upgrade-only, source assessment. A higher level already held is kept. Retakes grant nothing new. |
| Module types | Quiz modules only — SCORM, video and document modules cannot evidence a skill. |
| Course versions | Links belong to the quiz as it stands in a version. While a draft exists you edit the draft’s links, and they take effect when the draft is published. Publishing copies the links forward, so a re-published course keeps granting skills. |
| Audit | Every link, change and removal, and every level a pass raises (actor system, with the quiz attempt), is in the audit log. |
Self-assessment and manager validation
Learners can claim a level on any skill in their Achievements → Skills tab (see Rate your own skills). A claim is not an attained level.
Design choice — a claim counts for nothing until it is validated. A self-assessed level does not change the learner’s skill profile, does not close a gap, does not appear in the gap analysis totals and does not feed recommendations. It is shown beside the level held, as You claimed … — waiting for validation. Only a validation writes it.
Validate or reject a claim
- Open Call to Action in the left menu and go to its Skill Validations section (managers — see Validate your team’s skills).
- Each row shows the person, the skill, the level they hold, the level they claim, their note and the date.
- Validate — confirm the claimed level, or a lower one, with an optional note. The level is written to their profile (source validated, your name as the setter, your note as evidence).
- Reject — with a note they will see. Nothing is written to their profile.
| Rule | Behaviour |
|---|---|
| Who decides | By default, holders of Assign skills (skill:assign), within their scope: a Manager for their full report chain (direct and indirect), an Owner/Admin for everyone, a custom role for the people its scope reaches. With An administrator only (below), Owners and Admins only. Enforced on the server — a manager validating someone outside their chain, or any manager in administrator-only mode, is refused and nothing is written. |
| Own claims | Nobody validates their own claim — not even an Owner. |
| Level confirmed | The claimed level or lower, never higher. Upgrade-only: a higher level already held is kept. |
| One open claim | A learner has at most one pending claim per skill. Re-claiming while it waits updates it; Withdraw cancels it. |
| Claims | Only a level above the one held can be claimed. |
| History | A decided claim is kept (validated / rejected / withdrawn) with the reviewer, the date and the note. A new claim is a new record. |
| Pending on the user page | An admin or manager also sees a pending claim on the person’s Skills panel (Claims … — awaiting validation). |
| Audit | Every claim, update, withdrawal, validation and rejection is logged with before/after. |
Turn self-assessment off, or choose who decides
Go to Settings → Skills planning → Self-assessment (Owners and Admins; Starter and up). Each change saves at once and is recorded in the audit log.
| Setting | Default | What it does |
|---|---|---|
| People may rate their own skill levels | On | Off: the Self-assess button disappears from every learner’s Skills tab, a new claim is refused, and the skills gap list no longer offers Ask for a self-assessment. Claims already waiting stay in the queue and can still be decided or withdrawn. |
| Who decides a rating → The person’s manager | Selected | Managers decide for the people they manage; Owners and Admins can decide for anyone. |
| Who decides a rating → An administrator only | Only Owners and Admins decide. Managers no longer see claims in Call to Action, and the section tells them why. |
Nobody decides their own claim, whichever option you choose.
Job roles (required levels)
A job role says what a person’s work needs: the skills it requires and at what level, for example Site supervisor or Payroll clerk. It is not a permission role. Permission roles (Owner, Admin, Manager, Learner and so on) decide what a person may do in EmbayLMS; a job role decides what their job requires them to know. In French the interface calls it a « fonction ».
Job roles are part of skills management, included from the Starter plan.
Create a job role
- Open Skills in the left menu and go to the Job roles tab.
- Click New job role, enter its name and, optionally, a description. To name it in another language, open that language’s tab (or + Add a language) above the fields, as in Skills in more than one language. Then click Create job role.
- On the role’s page, under Required levels, choose a skill in Add a skill, pick the level the role requires, and click Add. Repeat for each skill.
- Change a level at any time from the table. Each row shows when it was last reviewed. When you have checked that a role’s requirements are still right, click Mark all as reviewed.
To stop using a role without losing it, turn off Active: the people keep it, but it sets no requirement and cannot be assigned. Delete job role removes it, its required levels and every assignment.
A role that comes from imported content (for example an Embay Academy curriculum) cannot be deleted. The next import finds it by its content key and updates its name, description and required levels, but leaves Active exactly as you set it. Its page has no Delete job role button and says so; turn off Active to stop using it.
Assign job roles to people
There are three ways, and a person can hold the same role through more than one:
| Source | How | What removes it |
|---|---|---|
| Assigned by hand | Open the person’s page under Users, find the Job roles panel, choose a role in Add a job role and click Assign | Remove on that panel |
| Imported | The job_roles column of the users CSV import (see Data import) | The next import that lists other roles for the person, or Remove |
| From a profile field | A dropdown custom field promoted to job roles (below) | Changing the person’s value in that field |
A person holds a role as long as at least one source remains. Removing a role on the user page removes the hand-assigned and imported parts only; if the role also comes from a profile field, it stays and the panel says so.
The required level a person needs
When a person holds several job roles that require the same skill, the highest level wins. The Job roles panel on the user page lists each required skill with the level and the role that set it. Retired skills and inactive or deleted roles set no requirement.
Promote a dropdown field to job roles
If you already record job titles in a dropdown custom field, you do not have to assign roles one by one.
- Go to Users, open the custom fields page and find the dropdown field (for example Job title).
- Click Promote to job roles and confirm.
- EmbayLMS creates one job role per option (it reuses an existing role with the same name), and assigns each person the role that matches their current value. The field then shows a Job roles badge.
On a large organization the assignments are made in the background: the confirmation says so, and the people appear on the roles within a minute. Renaming or removing an option, or deleting the field, is applied the same way.
From then on the roles follow the field:
| Change to the field | Effect on job roles |
|---|---|
| A person’s value changes (on their page, their own profile, a CSV import or the API) | Their field-derived role changes with it |
| An option is renamed in place | Stored values and the role link follow the new name; people keep their role. You confirm the rename first |
| An option is removed | The people who held the role through that option lose it; roles assigned by hand or imported stay. You see how many people first |
| The field is deleted | Same as removing every option |
The field’s type cannot be changed once it exists. A nightly check also recomputes every field-derived role from the current values, so a missed update corrects itself.
| Rule | Behaviour |
|---|---|
| Who defines roles | Holders of user:update (Owner, Admin), the same as custom field definitions |
| Who assigns roles | Holders of Assign skills (skill:assign) within their scope: a Manager for their report chain, an Owner/Admin for everyone |
| Names | A role name is unique among live roles, ignoring case; a name in another language, entered on that language’s tab, is shown to people using that language |
| Audit | Every create, edit, deletion, required level, review, assignment, removal and promotion is logged |
Configuration reference
| Item | Where | Limits / behavior |
|---|---|---|
| Domain | Skills → Skills Library | Name ≤ 100 chars; description ≤ 500; deletable only when empty of active skills |
| Skill | Skills → Skills Library, inside a domain | Name ≤ 150 chars; description ≤ 1000 chars (the base and each translation); four optional level descriptors ≤ 300 chars each; delete = deactivate |
| Course mapping | Course → Skills page | One row per course+skill; carries a target level; upsert on re-add |
| Attained level | User skill profile | Granted on course completion (target level) and on a passed linked assessment, raised by a validated self-assessment — all upgrade-only; set or overridden by hand from the user page |
| Assessment link | Course → Skills → Assessment evidence | One row per quiz module + skill; carries the level a pass proves; version-scoped (copied at publish) |
| Self-assessment | Learner → Achievements → Skills | One pending claim per learner + skill; note ≤ 500 chars; a claim is never an attained level until validated |
| Self-assessment switches | Settings → Skills planning → Self-assessment | People may self-assess (on by default); who decides (the person’s manager by default, or an administrator only); Owners and Admins; Starter and up; audited |
| Job role | Skills → Job roles | Name ≤ 150 chars, unique among live roles (case-insensitive); a name and description per language through the language tabs; description ≤ 1000 chars; delete removes its required levels and assignments |
| Required level | Skills → Job roles → a role | One row per role + skill; carries the level and the date last reviewed |
| Job role assignment | User page → Job roles; CSV job_roles; a promoted dropdown field | One row per person + role + source; the person holds the role while any source remains |
| Skills record | Learner → Achievements → Skills; User page → Skills | PDF, CSV or JSON; one’s own always, others with Assign skills in scope; every download audited |
| Development target | User page → Skills; the skills gap list; Achievements → Skills (own, when allowed) | One per person + skill; level, due date (today to five years ahead), note ≤ 500 chars; reminder 14 days before; Starter and up |
| People may set their own targets | Settings → Skills planning → Development targets | Off by default; Owners and Admins; audited |
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| ”Cannot delete domain: N active skill(s)…” | The domain still contains active skills | Deactivate (delete) each skill first, then delete the domain |
| A skill is missing from the course’s Add-skill picker | The skill was deactivated | Re-activate it by editing the skill, or create a replacement |
| A learner sees No requirement set yet | No job role is linked to them | Assign a job role on their user page, by CSV, or from a promoted profile field |
| Learner’s Skills tab is empty | No job role, no level held yet, or (with a path filter) no skill mapped on the path’s courses | Assign a job role, or map skills with target levels on the path’s courses |
| The Skills panel is missing on a user’s profile | You lack Assign skills, the person is outside your scope (a manager’s chain), or no skills exist yet | Ask an Owner/Admin, or build the Skills Library first |
| A completion recorded a level higher than the one I set | The engine path only raises levels; it re-applied on the next completion | Override again with the evidence — the manual entry wins until the next completion records a higher level |
| Every skill shows “Not started” | The learner has not completed a course with mapped skills since auto-attainment shipped, or their completions were imported | Map skills on the courses they complete, or set the levels by hand from the user page |
| A course was completed but no level appeared | The skill was mapped after the completion, the skill is inactive, or the learner already held it at the same or a higher level | Completion only grants at the moment it happens and never lowers — set the level by hand if needed |
| A learner passed a quiz but no level appeared | The link was added to the draft and the draft is not published yet, the skill is inactive, or they already held that level or higher | Publish the draft, or check the link on the live version |
| The Skill Validations section is missing from a manager’s Call to Action | The role lacks Assign skills. The Call to Action item is hidden entirely when a role holds none of its three permissions | Managers hold it by default; check any custom role |
| A manager cannot see a claim | The learner is not in their report chain (their manager field points elsewhere), or your organization chose An administrator only | Fix the learner’s manager on their profile, or let an admin decide |
| Learners have no Self-assess button | Self-assessment is turned off under Settings → Skills planning | Turn People may rate their own skill levels back on |
| A learner’s claim does not close the gap | Working as designed — a claim counts once it is validated | Validate it from Call to Action → Skill Validations |
| The Skills page, a course’s skill mapping or a person’s skill sheet shows an upgrade screen | Your organization is on the Free plan; skills management is included from Starter | Upgrade from the billing page. Levels recorded meanwhile are all kept |
| A learner on the Free plan sees their levels but no target or status | Required levels are a Starter capability, so Free shows held levels only | Expected; upgrading shows targets and gaps |
| A role cannot be removed from a person | The role comes from a promoted profile field | Change the person’s value in that field, or remove the option from the field |
A CSV row fails on job_roles | A name does not match a live, active job role | Create the role under Skills → Job roles first, or fix the spelling (names are matched ignoring case) |
| A CSV row fails with “Job roles are included from Starter” | The row adds or removes a job role, and the plan does not include skills management | Keep the person’s current roles in the job_roles cell (as the users export writes them) or leave it empty, or upgrade to Starter or higher |
| A job role has no Delete job role button | The role comes from imported content | Turn off Active to stop using it |
| The Promote to job roles link is missing on a field | The field is not a dropdown, has no options, is already promoted, or the plan does not include skills management | Use a dropdown field with options, on Starter or higher |
| A required level is higher than one role sets | Another of the person’s roles requires the same skill at a higher level; the highest wins | Expected. The row names the role that set it |
| A skills record download answers 403 | You asked for someone outside your scope, or your role lacks Assign skills | Ask an Owner/Admin, or check the person’s manager field |
Need help? Contact your EmbayLMS onboarding team or open a support ticket.