Skip to main content
Glama

vet-skills

Check agent skills and MCP servers before they run. Verdicts come from KillerSkills; the policy is yours or your org's.

npm i -g vet-skills                          # the CLI (Node 20+)
vet-skills hook install claude-code          # intercept every install in Claude Code
vet-skills check <skill>                     # or just ask before you add one
vet-skills publish ./my-skill                # org members: detonate + list in the private registry

Use it as an MCP server

Give any agent the verdicts directly, so it checks a skill or MCP server before installing it and can pick a verified alternative. Read-only, no account, no API key. Tools: check_skill (verdict, score, what the sandbox saw, top findings, last safe version) and search_skills (the index by keyword, with verdicts).

Claude Code

claude mcp add killerskills -- npx -y vet-skills mcp

Cursor: ~/.cursor/mcp.json (or .cursor/mcp.json in a project)

{
  "mcpServers": {
    "killerskills": { "command": "npx", "args": ["-y", "vet-skills", "mcp"] }
  }
}

Claude Desktop: Settings → Developer → Edit Config (claude_desktop_config.json)

{
  "mcpServers": {
    "killerskills": { "command": "npx", "args": ["-y", "vet-skills", "mcp"] }
  }
}

VS Code: .vscode/mcp.json

{
  "servers": {
    "killerskills": { "type": "stdio", "command": "npx", "args": ["-y", "vet-skills", "mcp"] }
  }
}

Windsurf: ~/.codeium/windsurf/mcp_config.json, same mcpServers block as Cursor. Codex: ~/.codex/config.toml

[mcp_servers.killerskills]
command = "npx"
args = ["-y", "vet-skills", "mcp"]

Then ask your agent: "Before you add that MCP server, check it with KillerSkills." Requires Node 20+. Index: 16,000+ skills and MCP servers from skills.sh, ClawHub, npm, PyPI, the Docker MCP Catalog and Claude Code plugin marketplaces, each run in a honeypot sandbox. Browse them at killerskills.ai.

Related MCP server: airlock

See what is already configured

vet-skills discover            # every MCP server, skill, plugin and hook on this machine, with verdicts

Reads Claude Code, Cursor, Windsurf, Claude Desktop, Gemini CLI and Codex configs locally. Only names leave the machine, and only when you are enrolled in an org.

What it does

Every skills add, claude plugin install, and claude mcp add is resolved to an artifact hash, looked up, and evaluated against your policy before it runs:

$ vet-skills check deploy-helper
Resolving deploy-helper …
vet-skills 0.7.1 · policy acme/default-strict

 BLOCKED  14/100 deploy-helper@2.3.1 · devtools-cloud · 4,210 installs

Observed in sandbox (3 scenarios, 38s):
  ✕ network    telemetry-cdn.xyz — undeclared
  ✕ memory     wrote agent memory (1)
  ✕ filesystem reads ~/.ssh/id_ed25519, ~/.aws/credentials, ~/.npmrc
  ! tools      shadows github.create_pr

Policy acme/default-strict:
  ✕ publisher blocked      devtools-cloud is on the block list

✕ Blocked deploy-helper@2.3.1 · publisher devtools-cloud is blocked by policy
Pin instead: deploy-helper@2.2.4 (score 88)

Decisions: allow, sandbox (install with restrictions), approval required (the install waits for a reviewer), block (with the last safe version named), defer (unscored: detonate first), observe (org enforcement off; logged only).

Fail-open

If the verdict API is unreachable and nothing is cached, the policy's offline rule applies. The default is allow with a warning: an outage on our side never stops your work. Set offline: block in your policy to fail closed.

Solo vs. org

Solo: a personal policy in ~/.vet-skills/policy.yaml (vet-skills policy show). Nothing is sent except verdict lookups (skill name, version, hash) and an anonymous client id.

Org: vet-skills join <org> --token <enroll token> --email you@company.com switches to the org policy. From then on the hook also reports installed skill names, versions, hashes, and decisions to your org dashboard. Never code, prompts, environment variables, or file contents. vet-skills leave reverts.

Commands

Command

What it does

check <skill>

Dry-run the decision. Exit 2 when blocked.

install <skill>

Check, then npx skills add. Prompts on caution.

detonate <skill|path>

Force a sandbox run.

why <skill>

Last decision and the rule behind it.

join <org> --token <t> --email <e> / leave

Org mode on / off.

policy show / policy set <file>

Personal policy.

block <skill> [--reason]

Personal block list.

status

Org, policy version, cache, pending approvals; syncs policy.

discover [--project] [--json]

Inventory agent config on this machine; report names to the org when enrolled.

mcp

Run as an MCP server over stdio (check_skill, search_skills).

hook install claude-code

Registers the PreToolUse hook in ~/.claude/settings.json.

hook eval

Called by the agent; reads hook JSON on stdin.

Environment: KILLERSKILLS_API (default https://killerskills.ai), VET_SKILLS_HOME (default ~/.vet-skills), NO_COLOR.

Available Tools

2 tools
check_skillCheck a skill or MCP serverA
Read-only

Look up the KillerSkills security verdict for an agent skill, MCP server or plugin BEFORE installing it. Returns the score (0-100), label (verified / caution / blocked), what the sandbox saw it do (network hosts contacted, credential files read, memory writes), the top findings, and the last safe version when the latest is blocked. Use the package name for npm/PyPI MCP servers (e.g. "@modelcontextprotocol/server-github" with registry "npm").

NameRequiredDescriptionDefault
nameYesSkill or package name: "name", "publisher/name", "@scope/pkg", optionally "@version".
registryNoRegistry, when known. Omit to search all public registries.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds substantial value by enumerating the return contents (score, label, sandbox actions, findings, last safe version), which is important behavioral context since no output schema exists. It omits error behavior and any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: purpose and timing first, then return details, then a parameter tip. Every sentence earns its place and the most critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup tool with full schema descriptions and annotations covering safety, the description is complete. It explains what is returned (crucial since no output schema) and provides a concrete name-format example. No essential information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, setting a baseline of 3. The description adds meaningful guidance: it clarifies that package names should be used for npm/PyPI servers with a concrete example ('@modelcontextprotocol/server-github' with registry 'npm'), which goes beyond the schema's field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Look up') and resource ('security verdict for an agent skill, MCP server or plugin'), making the tool's function clear. However, it does not explicitly distinguish itself from the sibling tool search_skills, which an agent might confuse for discovery vs. verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use it 'BEFORE installing' — a clear timing condition. It does not name alternatives or provide exclusions, but the context is unambiguous for a pre-install check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_skillsSearch vetted skillsA
Read-only

Search the KillerSkills index (every public agent skill and MCP server, each detonated in a sandbox) by keyword. Returns the most-installed matches with their verdicts, so you can pick a verified option instead of an unvetted one.

NameRequiredDescriptionDefault
queryYesKeywords, e.g. "postgres", "github mcp", "pdf".

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and open-world, and the description adds real value beyond them: results are ranked by install count and include sandbox verdicts, which tells the agent what kind of evidence to expect. It omits result-count limits or pagination, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the purpose front-loaded and the payoff second. Minor marketing flavor ('detonated in a sandbox') costs a little, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does carry the return-value burden and does so adequately by explaining that matches come with verdicts ranked by installs. Only edge details like result caps or empty-result behavior are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single query parameter is documented with examples. The description only repeats 'by keyword', adding essentially nothing beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: search the KillerSkills index by keyword, returning most-installed matches with verdicts. It is clearly distinct in spirit from a single-skill check, though it never names the check_skill sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear selection rationale — use this to pick a verified option rather than an unvetted one — which tells the agent when it's appropriate. It stops short of naming alternatives or stating exclusions, so it's a notch below explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • First observedcheck_skill
    • First observedsearch_skills

TDQS

A4/5.0

Scored across 2 tools

Disambiguation4/5

check_skill is an exact-name verdict lookup while search_skills is keyword discovery, so the boundary is clear. There is minor overlap because search results also return verdicts, which could make an agent unsure which to reach for first, but the descriptions disambiguate ('BEFORE installing' vs 'pick a verified option').

Naming Consistency5/5

Both names follow a clean verb_noun snake_case pattern (check_skill, search_skills). The singular/plural difference reflects the actual semantics (one package vs many results), which is a reasonable and readable variation.

Tool Count3/5

Two tools is thin for a server surface, even one this narrowly scoped to security verdicts. Both tools clearly earn their place, but the minimal surface leaves little room for related operations.

Completeness4/5

The core lifecycle of 'discover a candidate skill' (search_skills) and 'verify it before install' (check_skill) is covered, including version/sandbox detail in the verdict response. Minor gaps exist around bulk checks or retrieving full findings/history, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A security scanner that evaluates installed MCP servers for vulnerabilities by aggregating findings from 16 scanning engines into detailed trust scores. It enables users to scan their local AI agent configurations or specific repository URLs for potential security risks.
    4
    30 PyPI
    2
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    A security gate MCP server that audits agent extensions (skills, MCP servers, tools) by scanning for risks, adversarial analysis, and sandbox execution, returning a trust verdict of allow, quarantine, or block.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Security scanning for AI agent skills, MCP servers, and agent prompts, returning signed trust scores and detailed findings.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Scans remote MCP endpoints, manifests, and agent skills for security threats, providing deterministic scores, verdicts, and signed reports to verify agent infrastructure before trust or payments.
    1
    MIT