Skip to main content
certior-skill-audit is a pre-install / pre-load audit for skills. Given a SKILL.md and a parent Guard’s permission set, it proves the skill’s declared capability surface is a subset of the parent before the skill enters a pipeline. If the subset relation does not hold, the audit fails and the binary exits non-zero. Use it in pre-install hooks, CI, or release pipelines.

Install

The CLI ships with the certior package:

Audit one skill

Exits 0 if the skill’s metadata.certior.capabilities is a subset of the supplied permissions. Exits non-zero otherwise. Use --permission repeatedly to declare each parent capability.

Audit a directory of skills

Walks the directory and audits every SKILL.md found. Exits non-zero if any skill fails.

Pin a fingerprint

--expected-fingerprint NAME=SHA256 enforces that the skill’s content hash matches the pinned value. Use this to catch drift between a reviewed version and what is on disk at install time.

Allow undeclared capabilities

By default, a skill with no declared capability metadata fails the audit (you cannot prove a subset of an unknown set). --allow-undeclared admits such skills - useful when migrating an existing pipeline incrementally.

JSON output

Emits per-skill audit results as JSON for machine consumption.

Programmatic API

The CLI is a thin wrapper over certior.adapters.openclaw_skill_audit:
Each result carries the skill name, the declared capability set, the verdict, the reason on failure, and the skill fingerprint.

What this does not do

The audit is intentionally narrow. It does not scan the skill’s source code for dangerous patterns (regex SAST). That is a complementary tool’s job. Certior verifies that the declared capability surface fits inside the parent’s; tools like Semgrep or Bandit verify that the implementation does not exceed its declaration.

See also