Skip to content

Quickstart

This walks the full enforcement loop end to end: connect → try → install the hook → pull → audit. It assumes the skillsvault CLI is on your machine. You don't need an account or organisation first: skillsvault login creates both the first time you sign in.

No CLI yet?

curl -fsSL https://skillsvault.io/install.sh | sh installs it on macOS and Linux. See Install & connect for building from source. The rest of this page assumes skillsvault is on your PATH.

Optional: see what your agents already have

Before connecting anything, take stock. scan (CLI 0.3.0 and later) needs no account and sends nothing over the network:

skillsvault scan

It lists every skill, subagent, command and rule file across the agents on this machine and the current project, marks which are unmanaged, and flags risky patterns like curl | sh or allowed-tools: Bash. See scan for the flags and --json output.

Connect this machine

The interactive flow opens your browser, signs you in, and authorizes the machine — no key to copy and paste. New to skillsvault? The same browser visit creates your account and your organisation, then approves the machine:

skillsvault login

To bring what scan found into the console, connect with skillsvault login --import-scan instead. It uploads metadata only — names, kinds, risk flags and content hashes, no file contents unless you add --with-content. See Importing a scan for exactly what is sent.

For CI or headless machines, connect non-interactively with an org slug and an agent key from Settings → API keys:

skillsvault configure --org acme --key skillsvault_ak_…

Either way, the CLI fetches and pins skillsvault's Ed25519 public signing key (one key for the whole deployment, the same for every organisation), so every bundle it later loads must carry a valid skillsvault signature. Then it syncs the signed policy bundle — there is no separate sync step — and prints your next command:

✓ authorized · org acme
✓ bundle v1750848000 verified & synced · 4 skills · 3 active policies
  → next: skillsvault try — watch a banned skill get blocked here
  → then: skillsvault install-hook — enforce it in Claude Code

A bundle that fails signature verification is rejected. If your org doesn't ban anything yet, the hint is skillsvault pull --all instead: ban a skill in the console — open it and choose Ban skill, or click Add a demo skill and block it on the dashboard — to have something to try.

Watch a banned skill get blocked

skillsvault try

try (CLI 0.4.0 and later) re-syncs, picks a skill your org banned, and gates it exactly as an agent on this machine would — the same decision your agents will get, with the audit event shipped:

▸ skillsvault try gating acme/demo-unsafe-deploy as an agent on this machine would…

⛔ BLOCKED  acme/demo-unsafe-deploy@0.1.0
   Skill version is banned by the organisation.

This is what your agents will see.
  audit: https://skillsvault.io/acme/audit
  → skillsvault install-hook — enforce it in Claude Code

try always exits 0 — it is a demonstration. Use skillsvault gate --skill <name> where an exit code must veto something: 0 allow/warn, 2 block.

Turn on the gate in Claude Code

skillsvault install-hook

It prints a hooks block — a PreToolUse hook for skills and subagents (matcher Skill|Agent|Task) and a UserPromptExpansion hook for typed /commands. Paste it into ~/.claude/settings.json (every project) or a project's .claude/settings.json. From then on Claude Code asks the gate before each one runs, and a banned skill is denied with your org's reason. See Harness coverage.

Install the org's approved skills

skillsvault pull --all

pull installs every approved skill into each AI agent it detects on the machine, and removes any banned skill from the folder skillsvault installs into for each agent — that removal is the governance action, and the only one available in agents without a vetoing hook. Copies elsewhere on disk, such as in a project's own skills folder, aren't deleted; from CLI 0.6.7, pull lists each one so you can remove it. Target a single harness with --harness claude_code, or a raw directory with --dir ./skills.

▶ claude_code /Users/me/.claude/skills
  ✓ acme/hubspot-crm-entry@1.3.0
  ⛔ removed banned acme/teamleader-crm-entry
  1 installed · 1 banned removed (1 banned total)

Later, skillsvault sync picks up policy changes and skillsvault pull --all brings installs in line with them.

Confirm the audit trail

Every gate decision is shipped to the control plane. Open Audit in the console and you'll see the allowed / warned / blocked event with the skill, version, machine, harness, and matched policy. The audit log is append-only and hash-chained.

What just happened

skillsvault login        → pinned the signing key, received an agent key,
                           fetched + verified the signed bundle
skillsvault try          → gated a banned skill locally: BLOCKED, audit event shipped
skillsvault install-hook → printed the hook that makes Claude Code ask the gate
skillsvault pull --all   → installed approved skills, removed banned ones

The cloud was on the distribution path (login, sync, pull) but never in the decision (gate) — the verdict comes from the bundle on the machine, so it works offline. Next, learn the full command set or how to author and publish a skill.