SkillSpec security quickstart

July 29, 2026 · View on GitHub

The critical commands to analyze a skill's security, enforce a policy on your harness, and install skills safely — with SkillSpec run locally.

Everything here is static analysis: nothing inside a skill is executed by the analysis. A <target> is a local folder or a public git URL on any host (GitHub, GitLab, Bitbucket, self-hosted), for example ./my-skill or https://github.com/owner/repo/tree/main/skills/example.

Install the CLI

curl -fsSL https://skillspec.sh/install.sh | sh   # prebuilt binary
# or, with Rust installed:
cargo install skillspec

1. Analyze what a skill can reach

skillspec boundary map <target>            # Structure: skills, resources, orphan files, cross-references
skillspec boundary assess <target>         # Security: what each skill reaches, ranked by severity
skillspec boundary assess <target> --json  # machine-readable; each finding carries a resolved `link`

assess is the main command. It is scope-aware (a skill confined to its own directory is low risk; reaching outside it — a home or absolute path, the network, another skill's files — is what earns review), ranks findings critical / high / medium / low, qualifies documentation examples rather than counting them as live effects, and links each finding to the exact line.

Gate a skill in CI:

skillspec boundary check <skill>                    # exit 1 if it reads a secret or reaches the network
skillspec boundary check <skill> --against HEAD~1   # exit 1 only if the capability envelope grew (updates)
skillspec boundary diff  <skill> --against v1.0.0   # show what capability changed since a revision

Exit codes: 0 clean · 1 concerning / drift · 2 incomplete or not comparable · 3 error.

2. Guard your harness by policy

skillspec boundary emit <skill> --format skillspec   # compile a deny-by-default least-privilege policy
skillspec boundary guard install                     # install the managed PreToolUse hook (observe mode)
skillspec boundary guard add <skill>                 # approve a skill's proposal as a stored policy
skillspec boundary guard log                          # watch which tool calls a policy covers
skillspec boundary guard mode enforce                # deny effects no approved policy covers
skillspec boundary guard status                       # mode, managed hooks, stored policies
skillspec boundary guard uninstall                    # remove only the managed hook

Recommended path: guard install (starts in observe, blocks nothing) → guard add your skills → watch guard log against real usage → guard mode enforce. Modes escalate observe → prompt → enforce.

3. Install skills safely through SkillSpec

skillspec pull <target>                         # assess, show the tree + risk, install only on approval
skillspec pull <target> --into ~/.claude/skills # place skill folders into a skills directory
skillspec pull <target> --harness claude        # force the Claude/Codex plugin-marketplace CLI proxy
skillspec pull <target> --plugin <name> --yes   # pick a marketplace plugin; skip the prompt (scripts)
skillspec update <target>                        # re-pull; show capability drift before replacing

Or gate any install command you already use:

skillspec boundary gate <target> --then 'claude plugin install pack@marketplace'

pull and gate refuse (exit 2) when there are findings and no terminal is attached to confirm; pass --yes to proceed in a script.

End to end

skillspec boundary map    https://github.com/owner/skills   # orient
skillspec boundary assess https://github.com/owner/skills   # decide
skillspec pull            https://github.com/owner/skills   # install safely on approval
skillspec boundary emit <skill> --format skillspec          # compile a policy
skillspec boundary guard install && skillspec boundary guard mode enforce   # enforce going forward

Full reference: docs/boundary-guide.md.