Skip to main content

skillock 🔒

Security-first package manager for AI agent skills.
Like npm for skills — with audit built into install.

Features

  • 🔒 Scan-before-install — 19 security rules (9 P0, 6 P1, 4 P2) check every file
  • 🔐 Supply-chain integrity — TOML lockfile with SHA-256 of every file
  • 🚫 Zero trust — P0 rules block install; P1 prompts; P2 notes only
  • 🔄 Symlink deploy — clean, reversible installation into agent directories
  • 🏷️ Pinned versions — resolves tags/commits/branches to immutable SHA
  • 🧩 Multi-agent — supports Claude, Codex, Agents, Cursor (or --agents all)
  • 📦 Zero runtime deps — Python ≥3.11, stdlib only (tomllib, hashlib, subprocess, pathlib)
  • 🛡️ MIT licensed

Install

# one-off (no install needed)
uvx skillock add owner/repo --skill my-skill --agents claude,codex

# or install globally
uv tool install skillock

Commands

Command Description
add owner/repo[@tag] resolve → clone → scan → gate → deploy → lock
list installed skills, pinned refs, scan verdicts
update [skill] rescan + unified diff of every changed file, then upgrade
remove <skill> delete symlinks, store copy, lock entry
audit re-scan everything + verify SHA-256 of every installed file

What Gets Blocked (P0 — Install Refused)

  • curl-pipe-shellcurl ... | sh, wget ... | bash
  • destructive-rmrm -rf /, rm -fr, rm -Rf
  • sudo / privilege escalationsudo, su, doas
  • code executioneval(), exec(), Function(), os.system(), subprocess(..., shell=True)
  • pickle deserializationpickle.load(), pickle.loads()
  • credential reads.env, ~/.ssh/, AWS_SECRET, GH_TOKEN, etc.
  • hardcoded secrets — API keys, tokens, passwords in source

P1 warns and asks for confirmation; P2 prints notes only.
Full rule table: docs/spec.

Quick Demo

# This skill reads .env and uses exec() — BLOCKED (18 P0 findings)
uvx skillock add obra/superpowers --skill brainstorming --agents agents --yes

# Clean skill — installs successfully
uvx skillock add obra/superpowers --skill test-driven-development --agents agents --yes

How It Works

  1. Resolve — GitHub repo + tag/commit/branch → pinned commit SHA
  2. Clone — shallow clone at pinned ref
  3. Scan — every file checked against 19 security rules (9 P0, 6 P1, 4 P2)
  4. Gate — P0 blocks install; P1 prompts; P2 notes
  5. Deploy — symlinks into agent directories (~/.claude/skills/, ~/.codex/agents/, etc.)
  6. Lock — TOML lockfile with SHA-256 of every file for integrity verification

Supported agents: claude, codex, agents, cursor (or --agents all)

Why

Real incidents show skills are untrusted code:

Skills are prompts your agent executes — treat them like untrusted code.

Architecture

  • Zero runtime dependencies — Python ≥3.11, stdlib only (tomllib, hashlib, subprocess, pathlib)
  • POSIX — Linux, macOS, WSL
  • MIT license

Links

Badges

PyPI Python License CI

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skillock-0.1.2.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skillock-0.1.2-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file skillock-0.1.2.tar.gz.

File metadata

  • Download URL: skillock-0.1.2.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for skillock-0.1.2.tar.gz
Algorithm Hash digest
SHA256 eb6a9a2a4148bfc599cf7f340e06edde1c432577cd4f7b066168bf9451b8e9b2
MD5 40cf38f7e021ae48390aa951f532744f
BLAKE2b-256 dfc2ac7b8b757da0ac9eea9ce1bb03c34bcf5144fb2d8dd9c74224f9ca7c57df

See more details on using hashes here.

File details

Details for the file skillock-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: skillock-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for skillock-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 33b509feec419e759999a42047b9dabb558bd6b1a6203f28384d5cbfa51fea5e
MD5 24c67c18bc6d47f4b24f39de0626a7f4
BLAKE2b-256 408f1f4c443bf7b3188edaa6e49b37f723f963f044272027406a78001dbcf95a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page