README.md

August 30, 2026 ยท View on GitHub

skillsaw logo

skillsaw

Keep your skills sharp.

A linter for the files that steer AI coding agents.

PyPI version PyPI Downloads Tests codecov License

Agent instructions behave like code, but most teams still review them like prose. skillsaw gives them a linter. It secures agent context against prompt injections and supply-chain attacks, validates structure across every major AI coding ecosystem, and eliminates content dead zones with deterministic autofixes.

It understands Agent Skills, Agent Plugins v1, Claude Code plugins, OpenAI Codex plugins and marketplaces, CLAUDE.md, AGENTS.md, GEMINI.md, QWEN.md, Cursor, Copilot, Cline, Devin, Kiro, OpenCode, hooks, agent configuration, MCP Registry server.json publisher metadata, Vercel skills CLI lockfiles, and evals. Safe structural fixes can be applied automatically; everything else comes with precise, agent-friendly guidance.

Content installed under APM's apm_modules/ and skills installed from external skills-lock.json sources are tracked as external in the lint tree. They are linted by default but never rewritten by skillsaw fix; projects can set lint-external-content: false to lint only content whose source they directly control.

Get started | Browse the rules | Read the documentation

See it work

Watch an AI agent grade, fix, and configure a repository from scratch.

Watch the skillsaw onboarding demo

Try it

Paste this into your coding agent to onboard skillsaw now:

Read and follow the instructions at
https://raw.githubusercontent.com/stbenjam/skillsaw/refs/heads/main/skills/skillsaw-onboard/SKILL.md
to onboard this repo to skillsaw.

Or run it yourself. No installation is required with uvx:

uvx skillsaw tree      # See what skillsaw detects
uvx skillsaw           # Lint the current repository
uvx skillsaw fix       # Apply safe, deterministic fixes
uvx skillsaw baseline  # Accept existing findings and fail only on new ones

What it catches

  • Security & supply chain (highest priority):
    • Dangerous lifecycle hooks: blocks arbitrary remote code execution, download-and-execute (curl | sh, wget | bash), and script obfuscation (eval) in hooks.json and settings.
    • Prohibited & unvetted MCP servers: enforces strict MCP allowlists across root, plugin, and custom agent configurations.
    • Prompt injection & stealth payloads: detects invisible Unicode (ASCII smuggling, zero-width tags, bidi overrides), high-entropy encoded payloads (base64/hex), and hidden instructions in comments and code fences.
    • Environment & context security: flags dangerous environment overrides (LD_PRELOAD, NODE_OPTIONS, PYTHONPATH), unallowlisted dynamic context injection, and embedded credentials.
  • Multi-ecosystem structure & compatibility: schema, frontmatter, and manifest validation for Agent Skills (SKILL.md), Claude Code, OpenAI Codex (plugins & marketplaces), Agent Plugins v1 (plugin.json, mcp.json), GitHub Copilot & VS Code custom agents (.github/agents/), OpenCode configuration, APM packages, MCP server maps, and MCP Registry metadata.
  • Deterministic autofixes: safe, instant automated fixes for invalid frontmatter, broken headings, missing manifests, unclosed code fences, and schema keys via skillsaw fix.
  • Content quality & token economy: research-backed rules detecting instruction drift across duplicate files, lost-in-the-middle attention dead zones, cognitive overload, section length violations, weak language, contradictions, and repetitive inline tool-call examples.
  • Discovery & repository integrity: unreferenced bundled files, broken internal file references, inconsistent terminology, missing stop conditions, and stale baselines.

skillsaw detects repository types automatically and lints multiple formats in the same project. See supported repository types and the complete rule reference for details.

Built for real workflows

skillsaw works locally, in CI, and inside coding-agent workflows. It provides line-level findings, explanations for every rule, deterministic autofixes, baselines for gradual adoption, GitHub and GitLab integration, and text, JSON, SARIF, HTML, and Code Climate output. Rules are configurable, and projects can add local rules or install rule plugins. Typo'd or wrong-typed rule options in .skillsaw.yaml are reported with did-you-mean suggestions instead of being silently ignored.

GoalDocumentation
Install and run skillsawGetting Started
Tune rules and exclusionsConfiguration
Adopt it without fixing everything at onceBaselines
Review the security modelSupply Chain Protection
Supported ecosystems and toolsRepository Types
Add checks to pull requests & CICI Integration
Understand and apply fixesAutofixing
Convert plugins to Agent Plugins v1Porting to Agent Plugins
Create project-specific checksCustom Rules
Publish reusable rule packagesRule Plugins
Inspect the typed parse treeLint Tree
Look up commands and flagsCLI Reference
Feed the docs to an AI agentllms.txt index, llms-full.txt full docs

Measure the result

Every run produces a letter grade based on weighted violation density. The same data can be rendered as a self-contained report card for a README or project dashboard.

skillsaw report card

skillsaw's own report card, generated with skillsaw badge --large.

Learn how to generate a grade badge and report card for your project.

Contributing

Contributions are welcome. See CONTRIBUTING.md for the project guidelines and DEVELOPMENT.md for the local setup.

Questions and bug reports belong in GitHub Issues. For a shareable diagnostic bundle, run skillsaw feedback in the affected repository and review the ZIP before attaching it to an issue โ€” files you add with --include are copied in verbatim. skillsaw is licensed under the Apache License 2.0.

Thank you to our contributors

skillsaw is better because people contribute code, bug reports, and ideas. Thank you!

Contributors
@alSergey @amy @btiernay @cblecker
@cgwalters @ehelms @EmilienM @jeffreylo
@jfchevrette @kannon92 @nyechiel @rajusem
@skyth3r @tchughesiv @tyraziel