A governed skill is a kind: skill unit with an action_scope —
the tools, paths, and capabilities it may enact (KCP v0.26 §4.3a).
It fails closed: no explicit grant, no action. Edit the manifest below — or load a conformance vector —
and the actual lintManifest() from bin/lint.mjs runs on every keystroke.
action_scope is blocked — the fail-closed runtime proxy, playable. Edit the envelope above and the verdicts change.kind: skill manifest — fail-closed, minimal envelope — which drops into the editor above and lints live. Era V (generation) meeting Era IV (enforcement) in one box.id, path, and intent. (error)action_scope — the skill is ungoverned; declare its envelope. (warning)action_scope must be a mapping; each field an array of non-empty strings. (error)paths entries must be relative — no absolute paths, no .. traversal. (error)action_scope field — carried, not enforced. (warning)audience should include agent to be agent-selectable. (warning)capabilities empty/omitted — fail-closed default: the skill renders pointer-only. (info)intent should read as a question or task description. (warning)lintManifest() verbatim from
bin/lint.mjs — the same function the
repo's CI and any consumer's conformance suite run. The five vectors are the shipped
vectors/; loading one and clicking “run all” checks the
live verdict against each expected.json.