name: skill-reviewer
description: "Skill 质量审查与规范脚手架。审查 Claude/Cursor Agent Skill 是否符合高质量规范(渐进式加载、description 关键词、工作流 checklist、确认节点、脚本封装、参数系统、references 组织、Pre-Delivery、CLI+Skill 模式、反 Slop),并按 P0–P3 分级输出报告;也能 --template 生成符合规范的 Skill 骨架。Use when the user says 'review this skill' / 'audit my skill' / 'lint SKILL.md' / 'check skill quality' / 'skill scaffold' / 'skill template' / '帮我检查 skill' / '审查 skill' / '看看这个 skill 写得怎么样' / '生成 skill 模板' / '这个 skill 是不是 slop'. Trigger keywords: review skill, audit skill, check skill, lint skill, skill rubric, skill quality, SKILL.md, progressive disclosure, slop, skill template, skill scaffold, anti-slop."
argument-hint: "[
A Skill that reviews other Agent Skills against a 10-rule rubric, distilled from the article "高质量 Skill 的十个套路". It can also scaffold a new Skill that respects the rubric from day one.
Two operating modes:
| Mode | Trigger | Output |
|---|---|---|
| Review | path is supplied, no --template |
P0–P3 report (and optional fix plan) |
| Template | --template <name> |
New skill folder under .cursor/skills/<name>/ |
The rubric files live in references/. Do not load them all up front. Load
each one only when you reach the step that needs it — that is rule #1 of the
rubric, and this skill must walk the talk.
Parse $ARGUMENTS (if provided by a slash command) or the user's free-text
request into:
target — absolute or workspace path to a skill directory or to a
SKILL.md file. Required in review mode.--quick — skip soft rubric review, run only the lint script.--rules <ids> — comma-separated rubric IDs to focus on
(R1 … R10, see Rubric index below).--template <name> — switch to template mode and create
.cursor/skills/<name>/.--json — emit machine-readable report instead of prose.If the user invoked you without a clear path, ask them first (see Step 0).
Review mode:
- [ ] Step 0 Confirm mode & target ⚠️ REQUIRED
- [ ] Step 1 Run lint-skill.mjs (hard facts)
- [ ] Step 2 Soft review per rubric (per-step reference load)
- [ ] Step 3 Aggregate findings by P0–P3
- [ ] Step 4 Ask user how to proceed ⚠️ REQUIRED
- [ ] Step 5 Deliver report / apply fixes
- [ ] Step 6 Pre-delivery self-check
Template mode:
- [ ] Step T0 Gather skill intent ⚠️ REQUIRED
- [ ] Step T1 Generate scaffold from template-skeleton.md
- [ ] Step T2 Run lint on the new scaffold (self-verify)
- [ ] Step T3 Report scaffold + lint result
Before running anything, confirm with the user using AskQuestion:
SKILL.md file.Skip this step only if --quick is set and target was supplied
explicitly — in that case proceed directly to Step 1.
Use the Shell tool to run the bundled linter. It is zero-dependency Node:
node .cursor/skills/skill-reviewer/scripts/lint-skill.mjs <target> --json
The script returns JSON with:
summary.counts — P0/P1/P2/P3 counts.summary.verdict — BLOCKED | NEEDS_WORK | OK_WITH_NOTES | GOOD.facts — line count, frontmatter, references files, orphan refs, etc.findings — every hard-rule violation with id, severity, rule,
message, optional evidence.Treat every finding from the script as authoritative — do not soften or re-rank them. The script is the deterministic floor; the rubric review on top only adds findings.
If --quick is set, skip Step 2 and jump to Step 3.
For each rule the user did not exclude via --rules, perform this loop:
references/.{severity, rule,
message, evidence} shape as the lint script.Rubric index — load only when you reach the corresponding step:
| ID | File | Focus |
|---|---|---|
| R1 | references/rubric-progressive-loading.md |
Progressive Disclosure / file size |
| R2 | references/rubric-description.md |
description keyword density & triggers |
| R3 | references/rubric-workflow-checklist.md |
Workflow checklist quality |
| R4 | references/rubric-scripts-pattern.md |
Determinism via scripts/ |
| R5 | references/rubric-good-questions.md |
Concrete questions vs vague directives |
| R6 | references/rubric-confirmation.md |
Confirmation / BLOCKING nodes |
| R7 | references/rubric-pre-delivery.md |
Pre-delivery quality gate |
| R8 | references/rubric-arguments.md |
Parameter system & composability |
| R9 | references/rubric-references-org.md |
references/ organisation |
| R10 | references/rubric-cli-pattern.md |
CLI + Skill replacing MCP |
Stay disciplined: never read a rubric you are not currently evaluating.
Merge findings[] from the lint script with the soft-review findings. Sort by
severity then by rule id. Compute totals per severity.
Severity definitions live in references/severity-levels.md — load that file
once here.
Use AskQuestion with options:
Never edit files in the target skill before getting this confirmation. This mirrors the article's principle: don't let the model take action you didn't sign off on.
Use the format from references/report-template.md (load it here). The report
must contain, in order:
GOOD | OK_WITH_NOTES | NEEDS_WORK | BLOCKED).[rule-id] message → evidence →
suggested fix.When applying fixes:
StrReplace tool, not free-form rewrites.Before returning the report, verify each item below. Fail any of them → fix before responding.
--rules.rule (matches a lint rule or a R1–R10
ID).Ask the user:
name (kebab-case).Load references/template-skeleton.md. Create:
.cursor/skills/<name>/
├── SKILL.md
├── scripts/.gitkeep # only if user said yes to scripts
└── references/
└── .gitkeep
Apply each rubric while writing the scaffold:
⚠️ REQUIRED step.$ARGUMENTS, document each flag, set argument-hint.Run the lint script against the new scaffold. The verdict must be GOOD
or OK_WITH_NOTES. If not, patch the scaffold until it is.
Tell the user where the scaffold lives, what to fill in next, and what the linter said.
SKILL.md
here, re-run the linter on this folder.R1–R10 plus the hard rules
emitted by lint-skill.mjs.小葱技能站7w4.net,专业的AI技能分享平台。
rule field so the user can trace them back to
either the script (scripts/lint-skill.mjs) or a rubric file under
references/.