Review a SKILL.md file for adherence to Anthropic's official agent-skill best practices. Use when the user asks to "review a skill", "check skill quality", "audit skill", "validate skill quality", or before merging a PR that adds or modifies a skill in skills/. Complements the deterministic structural validator (validate_skills.py) by judging content quality — concision, description discoverability, naming, freedom calibration, progressive disclosure.
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill to evaluate a SKILL.md file against Anthropic's agent-skill best practices. This is a content-quality review — token efficiency, discoverability, calibration. It is NOT a structural validator (the deterministic R1–R7 checks live in scripts/build/validate_skills.py and run in CI).
skills/<name>/SKILL.md file in mulesoft/mulesoft-dx.Do NOT use this skill for:
make validate-skills.api-spec-validator.references/anthropic-best-practices.md (vendored Anthropic doc, ~1100 lines) — generic agent-skill best practices, source of truth for dimensions 1-8.docs/job-template.md and docs/jobs-readme.md from the repo root — repo-specific JTBD conventions.skills/skills-metadata.yaml — declares which skills are jtbd vs prose. Determines which extra rules apply.skills/omni-gateway/install-omni-gateway/SKILL.md) or a list of paths. If the caller asks to review every skill changed in the current branch, resolve the list with git diff --name-only <base>... -- 'skills/**/SKILL.md'.skills-metadata.yaml (or the parent bundle's): jtbd (default) or prose (override). The type drives which extra checks apply (see "Type-specific dimensions" below).references/, scripts/) — progressive disclosure means a top-level SKILL.md is only half the picture.For each, cite the exact best-practices section and quote the offending text from SKILL.md. Do not invent rules — if a check isn't grounded in the reference doc, don't include it.
references/ files that load on demand?anthropic, claude.processing-pdfs) or noun phrases (pdf-processing); flag helper, utils, tools.name: field must match the directory.mvn deploy skill that says "use whatever flags seem right".references/foo.md, loaded on demand.scripts/, executed not loaded.This repo classifies skills as jtbd (default) or prose in skills/skills-metadata.yaml (or the bundle-level <bundle>/skills-metadata.yaml). Apply only the dimensions that match the declared type. Type↔structure coherence (does the content match the type?) is already enforced by R7 of the deterministic validator — flag here only when the AI reading detects subtler drift.
Scope reminder: the deterministic validators (
validate_skills.py,validate_jtbd.py) already enforce structural correctness — step numbering gaps, frontmatter parseability, kebab-case names, bundle metadata,urn:resolution, step dependency order, type-vs-structure coherence. Do not re-check those. If a finding can be expressed as a regex/AST rule, it belongs in the deterministic layer, not here. Below are only judgment calls.
type: jtbd)validate-imperative-format does for API descriptions.inputs: / outputs: capture the real dependency, not just the obvious ones — if Step 7's prose says "use the GAV from Step 4", but Step 4 declares no outputs.gav and Step 7 declares no inputs.gav, the data flow is invisible to the agent. Determinístic checks see the YAML structure but can't read the prose to detect the mismatch.type: prose)### Step N headings with bash commands and explicit ordering, it should probably be type: jtbd. R7 only flags binary mismatches (has steps / has none); the gradual slippage requires reading.omni-gateway/SKILL.md), the root should route the agent to sub-skills via a decision table or mermaid flowchart. A bundle-root prose skill that's just a paragraph of "this bundle does X, Y, Z" without routing wastes the entry point.```mermaid (not in YAML frontmatter) and that node references match labels. Mermaid in frontmatter is the bug we hit on PR #129.SKILL.md (root) actually adds value — if it's just a list of sub-skill names, the agent could discover those from descriptions alone. The root should help disambiguate, route, or set shared context.Return findings as a markdown block per skill reviewed, using this exact structure. The block goes in the response to the caller; do not write it to a file.
### Quality review — `<path/to/SKILL.md>`
**Blocking findings**
- **<short title>** — Best-practice violated: *<section name>*. Quote: "<offending text>". Why it harms the agent: <1 sentence>. Suggested fix: <1 sentence>.
**Should fix**
- (same shape)
**Optional polish**
- (same shape, only if non-trivial)
**Verdict**: Approve / Approve with comments / Request changesWhen reviewing more than one skill in the same call, emit one such block per skill, in the order they were named.
Keep findings action-oriented. A finding like "the prose feels long" is not actionable; "lines 40-90 explain what XML namespaces are — Claude knows. Cut to one line referencing the canonical XSD section" is actionable.
references/anthropic-best-practices.md. If something feels wrong but doesn't violate a documented principle, don't flag it as a finding — at most note as optional polish with that caveat.references/anthropic-best-practices.md — vendored copy of Anthropic's official agent-skill best-practices doc (fetched 2026-06-10). Re-fetch with defuddle parse <url> --md if Anthropic publishes updates.docs/job-template.md — repo-canonical JTBD template; new JTBD skills should structurally match it.docs/jobs-readme.md — guide explaining the JTBD format and its triple purpose (AI skill, doc, executable spec).docs/x-jobs-to-be-done-schema.md — JTBD schema reference.skills/skills-metadata.yaml (and per-bundle <bundle>/skills-metadata.yaml) — declares type: jtbd (default) or type: prose per skill. Drives type-specific review dimensions.scripts/build/validate_skills.py — deterministic R1–R7 structural validator (R1: name↔dir, R2: kebab-case, R3: uniqueness, R4: required metadata, R5: cross-refs, R6: type resolvable, R7: type↔structure). This skill complements those checks; it does not duplicate them.scripts/build/validate_jtbd.py — deterministic JTBD-format validator (frontmatter, step numbering, YAML step blocks, dependencies). Run before this skill — fix structural errors first..claude/skills/validate-imperative-format/SKILL.md — sibling skill that validates API info.description imperative voice. Same principle applies to JTBD step titles; reuse its criteria there.4cf0cf6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.