---
title: "SkillDoctor · Linter and security scanner for agent skill"
description: "Linter and security scanner for agent skill files. Lints Claude Code SKILL.md, AGENTS.md, and subagent files: 25 rules, an A–F grade, prompt-injection and"
canonical: "https://matthiasmeyer.tech/repos/skilldoctor"
language: "en"
last_updated: "2026-08-21"
markdown_versions: ["https://matthiasmeyer.tech/repos/skilldoctor.md", "https://matthiasmeyer.tech/de/repos/skilldoctor.md", "https://matthiasmeyer.tech/es/repos/skilldoctor.md"]
image: "https://matthiasmeyer.tech/api/og/repo/skilldoctor?lang=en"
publisher: "Matthias Meyer, https://matthiasmeyer.tech (llms.txt: https://matthiasmeyer.tech/llms.txt)"
---

security stable TypeScript

# SkillDoctor

Linter and security scanner for agent skill files

Lints Claude Code SKILL.md, AGENTS.md, and subagent files: 25 rules, an A–F grade, prompt-injection and secret-leak detection, --fix, SARIF, and a GitHub Action. The CLI command is skilldoctor (the npm package is scoped). 91 tests, MIT, TypeScript.

[View on GitHub →](https://github.com/studiomeyer-io/skilldoctor)[npm](https://www.npmjs.com/package/@studiomeyer-io/skilldoctor)

## What it solves

Agents now install skill and instruction files the way software installs packages, and nothing checks them. A skill file is plain text that an agent will treat as instructions, which means an injected line inside one is not a code smell, it is an executed command. There was no eslint for this.

## How it works

It reads the skill, agent and subagent files in a directory and reports findings with line and column, the way a linter does, then grades each file. The rules cover two sides: the formal ones, such as an invalid name, and the security ones, such as text shaped like an instruction override or an outbound network call sitting next to secrets and environment values. It runs straight from npx with no install.

## When to use it

Run it over any skill directory you did not write yourself, and put it in CI for the ones you did. A skill that arrives from outside deserves the same scrutiny as a dependency, and this is the cheapest way to give it that.

## When not to use it

It reads text, so it recognises shapes rather than intent. A carefully worded instruction that looks like ordinary documentation will pass, and a legitimate skill that happens to describe an attack pattern may be flagged. Read the findings, do not gate blindly on the grade.

Stars

★ 1

installs

↓ 576

Clones (14d)

⊟ 50

Language

TypeScript

Updated

2026-08-21

## Install

```
npx -y @studiomeyer-io/skilldoctor
```

## Related repos

- Agent Fleet

    → lints the skill files of

    →

    https://matthiasmeyer.tech/repos/agent-fleet

- MCP Armor

    → static-scan sibling of

    →

    https://matthiasmeyer.tech/repos/mcp-armor

## Sitemap

Every page of this site as Markdown: [sitemap](https://matthiasmeyer.tech/sitemap.md). Curated entry point: [llms.txt](https://matthiasmeyer.tech/llms.txt).
