No more blind installs to keep up with your agents. Your skills now carry signed proof of what they touch — exactly where you install them.

No matter whether you install from GitHub, a registry, or a vendored copy. One signed record says what a skill touches and whether it survived the last model bump.
Scan your way to a manifest.
Across every skill you install.
Diff your way to safe updates.
In the same PR where you review.
Single-prompt attest setup and you're done.
Start gating installs in no time.
A preview of the manifest viewer — one pane per capability, signed and synced.
networkOutbound domains and how they are reached.curl → evil.example.com
execShell access and interpreters a skill can invoke.shell: true · bash, python3
filesystemPaths a skill reads and where it may write.reads ~/** · writes ./reports/**
secretsEnvironment variables and credentials in reach.GITHUB_TOKEN, AWS_SECRET…
agentsWhether a skill spawns subagents, and which kinds.spawns research agents
mcpMCP servers a skill connects to.servers: []
skillproof scan derives all six from SKILL.md, scripts, hooks and MCP configs — then cross-checks them against what the skill declares, so honest authors get verification for free.
Don't be locked into one registry. Any host, harness, or CI can fetch the attestation and gate on the diff — keyed by content hash, never by name.
And any other host or harness that fetches attestations by content hash.
skills.sh proof pages, sync, and author Action
Checked-in capability proofs at /skill/ with raw JSON, OG metadata and a badge; bounded trending/hot sync every 6 hours; a GitHub Action skill authors can run; verify skills-sh: and proof-url commands.
Read-only skills.sh commands
skills-sh search, inspect and proof: fetch a skill snapshot, scan it, reconcile the upstream hash, and print the local proof. Exit 2 on hash mismatch, fail-closed errors without a token.
Scanner reports real values, real hashes
Placeholders are gone: domains, interpreters, paths and env names are extracted from content; content_hash is a real sha256; frontmatter supplies name and version; diff exits 2 on changed values; verify fails closed on unknown hashes.
With skills versioned, scripted, and installed from third parties, a new verification standard is being born. Proof-first review is the way to ship skills.
Manually read every SKILL.md, script, and hook — one at a time, on every update.
Diff versions by eye and hope no new domain, secret, or exec slipped in.
Open the repo, scroll for the install script, and guess whether it changed.
Re-run every skill by hand after each model update, one by one.
Manually keep a spreadsheet of which skills you installed, consuming precious time.
Read nothing by hand — the scanner derives the manifest from the skill itself.
Ask the diff what changed. It reorders, highlights, and fails CI on new privileges.
Fetch the Sigstore attestation — who signed it, and which scanner version checked it.
Publish the eval delta once. Know which of your 40 skills degraded last Tuesday.
Gate every install in one bulk check.
Attestations prove what was analysed, and by which scanner version. They never certify safety — and neither do we. Start with core concepts, then scan your first skill.
For your agent
Onboard your agent
Paste this prompt into your coding agent. It points at the agent instructions rather than repeating them, so it cannot go stale here.
You are working in the SkillProof repository (github.com/RavaniRoshan/skillproof). Read AGENTS.md before you touch anything: it carries the build and test commands, the conventions, the two invariants that must not be weakened (content addressing beats names; evidence never guarantees safety), and a status section that names every v0.1 stub next to the file that causes it. Then run npm install, npm run build and npx vitest run, and confirm the baseline is green before you change anything.It reads a skill directory and produces a machine-readable capability manifest: the network domains, shell interpreters, filesystem paths, secrets, subagents and MCP servers the skill reaches for. It then diffs two versions of that manifest and publishes a signed record to a public ledger.
No. Skills stay in git, where they already live. The ledger stores roughly one kilobyte of JSON per attestation — manifests and eval results only, never skill code.
A registry decides what you can install. SkillProof answers a different question: what does the thing you already installed actually touch, and did that change? Any registry, harness or CI can consume the records without asking us.
Skills are forked, vendored and renamed constantly. A name is a weak identity that can be squatted; the hash of the skill directory is a strong one. Copies and forks share a single identity automatically.
No, and we never claim it does. An attestation proves what was analysed and by which scanner version. Treat it as evidence you can audit, not a safety certificate.
Detection will never be complete — that is a stated limitation, not a bug to be hidden. The durable promise is the diff: a capability that appears between two versions is reported even if nobody read the code carefully.
Anything that can fetch a manifest by hash, because the records are plain JSON with no vendor binding. The field is moving quickly, so the integration list on this page is illustrative rather than exhaustive.
The core is MIT and the ledger is public, forever. If the project ever commercialises, it will be hosted conveniences such as scheduled evals and SLAs around a standard that stays open and free.
The intent is keyless signing from CI, so the signature binds to an OIDC identity and a workflow rather than a stored key. Keyless signing is not wired up yet — signature work is the next v0.1 milestone.
Not yet. v0.1 is a working scaffold: the CLI surface, schemas and docs are real, while the scanner's findings are placeholders and signing is unimplemented. AGENTS.md lists exactly what is stubbed.
SkillProof packs all six capability classes into one signed record — from quick scans to detailed organization.
All through keyless Sigstore signing or the always-synced public ledger.