skilllint

Lints an agent skill before you install it: manifest, declared capabilities and instructions checked for contradictions. Remote MCP server.

Hosted MCP Server

npx add-mcp 'https://rta.lat/skilllint/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

skilllint

Private lint of agent skills (SKILL.md). Nothing leaves the machine.

Existing scanners (for example NVIDIA SkillSpector - 71 patterns, AST, YARA, CVE lookup) answer "is this artifact dangerous", and they ship the inspected content to their provider. We do something narrower and complementary:

  • privacy - the check runs locally; only a verdict, a score and a hash go out;
  • reproducibility - the verdict is bound to a sha256 of the file, so it can be signed and verified later;
  • comparison - rank several candidates from different registries instead of scanning one artifact at a time.

Rules

idseveritycheck
R-001criticalfrontmatter missing
R-002highname missing or invalid
R-003highdescription missing or too long
R-004mediumno trigger ("when to use") in description
R-005mediumdead instructions (TODO / deprecated / placeholder)
R-006criticalsecret-shaped literals
R-007criticalprompt-injection / exfiltration markers
R-008mediumreferences to files that do not exist
R-009lowfile larger than 60 KB
R-010highworld-writable scripts
R-011mediumunbounded autonomy instructions

Verdict: PASS (>=80, no critical) | WARN | FAIL (any critical).

Use it

python3 mcp_server.py                            # stdio
python3 mcp_server.py --http 8191                # streamable http
npx -y mcp-remote https://rta.lat/skilllint/mcp  # hosted

Tools: lint_skill(path) | compare_skills(paths) | lint_rules()

Signed verdicts

lint_skill returns {verdict, score, sha256, findings[]}. That hash is what attest signs and drift enforces as an allowlist - see Verified Tool Registry.

Locales: en, hi. India (Bharata) is supported from day one; legal claims require official sources, otherwise report pending.

License: MIT