Skip to content
Open app

Required-skill coverage

Required skills are the governance baseline your org expects every agent to have — the skills that should be published, present, and switched on across your estate. Coverage answers a single question about that baseline: are we actually covered, and where are we drifting?

Coverage grades each required skill through three progressively stronger layers. A skill can be published but never covered, or covered but never activated — the gap between layers is what governance cares about.

LayerMeaningSignal
publishedThe skill exists in the registry and is installableA matching registry entry
coveredIt is actually present in your scanned inventory and/or curated into a projectSkill inventory matches or project curation
activatedAgents have turned it onTelemetry activation events

Drift is the shortfall: a required skill that is not covered — it exists nowhere in your scanned repos and no project curates it. Drift is the first thing to fix.

Required skills are the input to coverage. Owners manage the baseline; any viewer can read it.

GET /v1/orgs/{orgId}/required-skills
POST /v1/orgs/{orgId}/required-skills
DELETE /v1/orgs/{orgId}/required-skills/{id}

Add a skill by its registry orgSlug and skillRepo:

// POST /v1/orgs/{orgId}/required-skills (owner only)
{ "orgSlug": "skillist", "skillRepo": "sql-review" }

Two read-only helpers support CI enforcement:

GET /v1/orgs/{orgId}/required-skills/check?installed=org/repo,org/repo
GET /v1/orgs/{orgId}/required-skills/workflow

check compares a comma-separated installed list against the baseline and returns { required, installed, missing, compliant }. workflow returns a ready-to-commit GitHub Actions YAML that installs each required skill and runs skillist required-skills check. The CLI exposes the same check as skillist required-skills check --org <slug>.

GET /v1/orgs/{orgId}/coverage

Returns a summary, a per-skill breakdown, and the drift list:

{
"summary": {
"required": 8,
"published": 8,
"covered": 6,
"activated": 4,
"drifted": 2,
"coveragePct": 75
},
"skills": [
{
"ref": "skillist/sql-review",
"orgSlug": "skillist",
"skillRepo": "sql-review",
"published": true,
"inventoryCount": 3,
"projectCount": 1,
"covered": true,
"installs": 12,
"activations": 5,
"activated": true,
"lastActivatedAt": "2026-07-10T09:00:00.000Z"
}
],
"drift": ["acme/deploy-guard"]
}

coveragePct is the share of required skills that reached the covered layer (rounded). An org with no required skills reports coveragePct: 100 and empty skills/drift.

FieldMeaning
requiredTotal required skills in the baseline
publishedHow many exist in the registry
coveredHow many are present in inventory and/or a project
activatedHow many have at least one activation event
driftedRequired but not covered (length of drift)
coveragePctcovered ÷ required, as a rounded percentage
FieldTypeMeaning
refstringorgSlug/skillRepo identity
publishedbooleanHas a registry entry
inventoryCountnumberDistinct scanned repos carrying this managed skill
projectCountnumberDistinct projects in this org curating it
coveredbooleaninventoryCount > 0 or projectCount > 0
installsnumberInstall telemetry events
activationsnumberActivation telemetry events
activatedbooleanactivations > 0
lastActivatedAtstring | nullTimestamp of the most recent activation

The same computation backs the platform agent’s get_coverage tool, so an “are we covered?” chat answer and this endpoint always agree.