Skilldoctor banner
studiomeyer-io studiomeyer-io

Skilldoctor

Security community

Description

A linter + security scanner for AI-agent skill files — validate Claude Code SKILL.md / AGENTS.md / subagent frontmatter, catch prompt-injection & data-exfil in installed skills, A–F grade, --fix, SARIF + GitHub Action.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

**Part of the [StudioMeyer MCP Stack](https://studiomeyer.io)** — Built in Mallorca 🌴 · ⭐ if you use it

skilldoctor

**A linter and security scanner for AI-agent skill & instruction files.** Think `eslint`, but for the `SKILL.md`, `AGENTS.md`, and subagent files that agents now install like packages.

[![CI](https://github.com/studiomeyer-io/skilldoctor/actions/workflows/ci.yml/badge.svg)](https://github.com/studiomeyer-io/skilldoctor/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/@studiomeyer-io/skilldoctor.svg)](https://www.npmjs.com/package/@studiomeyer-io/skilldoctor) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/studiomeyer-io/skilldoctor/badge)](https://scorecard.dev/viewer/?uri=github.com/studiomeyer-io/skilldoctor) [![license](https://img.shields.io/npm/l/@studiomeyer-io/skilldoctor.svg)](./LICENSE)

npx @studiomeyer-io/skilldoctor check .claude/skills
my-skill/SKILL.md [skill]  F (0/100)
  2:1  ✖ error  `name` "My_Skill" is invalid. Use 1-64 lowercase chars …  skill/invalid-name
  6:1  ✖ error  Contains "ignore previous instructions"-style injection.   sec/prompt-injection
  7:11 ✖ error  Outbound network call near secret/env values — possible …  sec/data-exfiltration

Why this exists

In 2026, "skills" exploded as the way to extend coding agents. Claude Code reads `SKILL.md` files; **`AGENTS.md`** became a cross-tool convention (adopted by Cursor, Codex, Gemini CLI, Copilot, and [dozens of other agents](https://agentskills.io/clients)); subagents carry their own YAML frontmatter. The [Agent Skills](https://agentskills.io) format is now an open standard.

These files are **shared and installed like packages** — copied from a gist, cloned from a repo, pulled from a marketplace. That creates two gaps with no off-the-shelf tooling:

  1. No linter. Nothing validates the frontmatter, catches an over-bro