validate-skills

validate-skills is a skill for Claude Code from pdugan20/claudelint. It costs 74 tokens per session (1,048 once invoked), scanned B, original, MIT.

A checker for Claude Code skill directories and their SKILL.md files. It checks metadata, names, permitted tools, referenced files, directory layout, and shell commands.

In plain words
What is it for?
Use it to validate all skills, or inspect one skill by name or path, with optional detailed output and stricter warning handling.
Why use it?
It helps find problems that prevent a skill from loading or running, including naming mismatches, missing files, and potentially dangerous commands.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions CLAUDE.md; mentions Claude Code.

Part of the claudelint plugin — 10 skills, 1 agent, 1 hook shipped together

Good fit Use it to validate all skills, or inspect one skill by name or path, with optional detailed output and stricter warning handling.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/pdugan20/claudelint/validate-skills
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add pdugan20/claudelint --skill validate-skills
Clone the repo
git clone --depth 1 https://github.com/pdugan20/claudelint

Made for: Claude Code.

Or install claudelint, the plugin that ships this one along with the rest of its 10 skills, 1 agent, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for validate-skills

README.md
[![agentmods](https://agentmods.dev/badge/skills/pdugan20/claudelint/validate-skills/github.svg)](https://agentmods.dev/skills/pdugan20/claudelint/validate-skills)
Your own site
<a href="https://agentmods.dev/skills/pdugan20/claudelint/validate-skills"><img src="https://agentmods.dev/badge/skills/pdugan20/claudelint/validate-skills/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for validate-skills

Your own site · 80×15
<a href="https://agentmods.dev/skills/pdugan20/claudelint/validate-skills"><img src="https://agentmods.dev/badge/skills/pdugan20/claudelint/validate-skills.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 74 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,048 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00074 $0.01048
Opus 5 $0.00037 $0.00524
Sonnet 5 $0.00015 $0.00210
Haiku 4.5 $0.00007 $0.00105

Measured 10d ago against content hash 4ecd6776879b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade B, and why

validate-skills scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (validate-skills.sh), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletemediumDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

**User says**: "Pre-commit hook is failing on my cleanup skill with 'dangerous command detected: rm -rf'"

Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.

skills/validate-skills/SKILL.md · 141 lines

How it starts

The opening of the file, as written. The whole thing — 141 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Validate Claude Code Skills

Runs claudelint validate-skills to validate Claude Code skill directories.

Usage

claudelint validate-skills $ARGUMENTS

Options

  • --path <path> - Custom path to skills directory
  • --skill <name> - Validate specific skill
  • --verbose - Show detailed output
  • --warnings-as-errors - Treat warnings as errors

Examples

Example 1: Skill appears in slash menu but won't execute

User says: "I see my skill /deploy-app in the menu but when I run it, Claude says it can't find it" What happens:

  1. Checks directory name is deploy-app/ but SKILL.md has name: deployApp
  2. Shows mismatch: directory uses kebab-case, frontmatter uses camelCase
  3. Explains skill names must match directory name exactly
  4. Shows fix: change frontmatter to name: deploy-app

Result: Skill executes correctly after fixing name mismatch

Example 2: Claude won't use Bash tool even though it's needed

User says: "My skill script.sh needs to run bash commands but Claude says 'Tool Bash not allowed'" What happens:

  1. Checks SKILL.md frontmatter has allowed-tools: ["bash", "read"]
  2. Shows tool names are case-sensitive - found lowercase "bash" instead of "Bash"
  3. Lists all valid tool names with correct capitalization
  4. Shows fix: allowed-tools: ["Bash", "Read"]

Result: Claude can now execute bash commands in the skill

Example 3: Skill validation blocks git commit with "dangerous command"

User says: "Pre-commit hook is failing on my cleanup skill with 'dangerous command detected: rm -rf'" What happens:

  1. Scans cleanup.sh script, finds rm -rf $TEMP_DIR
  2. Flags it because $TEMP_DIR could be empty or / (dangerous)
  3. Suggests safer alternative: validate directory first, use explicit path
  4. Shows fixed version: [[ -n "$TEMP_DIR" && "$TEMP_DIR" != "/" ]] && rm -rf "$TEMP_DIR"

Result: Skill now validates paths before deletion, commit succeeds

Command Examples

Validate all skills:

Read the full file on GitHub · 141 lines

Files

What ships with it

4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 141 lines · 74 tokens per session scan B 4ecd6776879b

Subscribe to this mod's changes

validate-skills is a skill published in the GitHub repository pdugan20/claudelint (12 stars, last pushed yesterday), licensed MIT. It adds 74 tokens to every session and 1,048 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it B with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

migrate-oxlint

Guide for migrating a project from ESLint to Oxlint. Use when asked to migrate, convert, or switch a JavaScript/TypeScript project's linter from ESLint to Oxlint.

oxc-project/oxc · 44 tokens

performance-lint-rules

Performance review guidance for Oxc linter rule implementations. Use only when reviewing Rust rule code under crates/oxclinter/src/rules/ or when explicitly auditing those rules for performance improvements.

oxc-project/oxc · 45 tokens

ultracite

Ultracite is a zero-config linting and formatting preset for JavaScript/TypeScript projects. Use when: (1) Setting up or initializing Ultracite in a project (ultracite init), (2) Running linting or formatting commands (check, fix, doctor), (3) Writing or reviewing JS/TS code in a project that uses Ultracite — to…

haydenbleasel/ultracite · 142 tokens

dd-code-generation

Use pup CLI for immediate Datadog operations or generate code for integration into applications.

DataDog/pup · 16 tokens

ship-safe-red-team

Run a multi-agent red team scan — 29 specialized security agents scan for 80+ attack classes including injection, auth bypass, SSRF, supply chain, Supabase RLS, MCP security, agentic AI, RAG poisoning, PII compliance, and more. Use when the user wants a deep security analysis beyond just secrets.

asamassekou10/ship-safe · 73 tokens

video-production

Produce programmable videos with Remotion using scene planning, asset orchestration, and validation gates for automated, brand-consistent video content.

Marve10s/Better-Fullstack · 29 tokens