Automated summary
Reviews agent SKILL.md files against a ten-rule quality rubric, outputs findings graded P0 to P3, and can scaffold a new skill from a template.
Strengths
- Runs a bundled zero-dependency Node linter to collect hard facts before any subjective review.
- Loads each rubric reference only at the step that needs it, walking the progressive-disclosure talk it checks for.
- Two modes (review, and scaffolding via --template) with --quick, --rules and --json flags for scoped or machine-readable output.
- Explicit confirmation steps and a pre-delivery self-check keep each run auditable.
Limitations
- Only encodes the ten rules distilled from a single reference article; other quality conventions are not assessed.
- The linter is invoked at a fixed path under .cursor/skills/, so it must be installed there and Node must be available.
- The document cuts off mid-Step 1, so the exact re-ranking and fix-application behaviour of later steps is only partly specified.
Use it when you want an existing SKILL.md audited or a new skill scaffolded to the same standard.
Don't use it to review code or documentation outside the Agent Skill format, or when Node isn't available to run the linter.
Security analysis
SafeThe skill instructs the agent to run a bundled Node.js lint script on a target path and optionally write scaffold files. It does not contain destructive commands, network exfiltration, obfuscation, or attempts to disable safety. The Shell tool is limited to node:* commands, and the script is part of the skill's own deterministic review process, not arbitrary user-supplied code execution. No risky actions beyond standard file operations are present.
No concerns found
How this analysis is madeExamples
Review the skill at .cursor/skills/pdf-tools/SKILL.md and give me the full P0–P3 report.Run a quick lint on .claude/skills/deploy-helper and show me only the hard-rule findings.Generate a skill template named release-notes under .cursor/skills so it passes the rubric from day one.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: "[<path-to-skill-or-SKILL.md>] [--quick] [--rules id1,id2] [--template <name>] [--json]" allowed-tools: "Read, Write, StrReplace, Glob, Grep, ReadLints, Shell(node:*), AskQuestion"
skill-reviewer
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.
Argument parsing
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 aSKILL.mdfile. 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).
Workflow checklist (copy and tick as you go)
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
Step 0 — Confirm mode & target ⚠️ REQUIRED
Before running anything, confirm with the user using AskQuestion:
- Mode: Review existing skill / Generate new skill template / Both (review then patch).
- Target path (review only): absolute path or workspace-relative path.
Accept either a skill directory or a
SKILL.mdfile. - Scope (review only): full rubric or only specific rule IDs.
Skip this step only if --quick is set and target was supplied
explicitly — in that case proceed directly to Step 1.
Step 1 — Run the hard-fact lint
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 withid,severity,rule,message, optionalevidence.
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.
Step 2 — Soft review per rubric (load on demand)
For each rule the user did not exclude via --rules, perform this loop:
- Load only that one rubric file from
references/. - Re-read the relevant slice of the target skill in light of that rubric.
- Append findings to the running list. Use the same
{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.
Step 3 — Aggregate findings
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.
Step 4 — Ask the user how to proceed ⚠️ REQUIRED
Use AskQuestion with options:
- Fix everything (P0 + P1 + P2 + P3).
- Fix only P0 and P1.
- Fix specific findings (let the user paste IDs).
- Report only — do not modify any file.
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.
Step 5 — Deliver report / apply fixes
Use the format from references/report-template.md (load it here). The report
must contain, in order:
- Verdict line (
GOOD | OK_WITH_NOTES | NEEDS_WORK | BLOCKED). - Counts table.
- Findings, grouped by severity, each with
[rule-id] message → evidence → suggested fix. - If the user opted in to fixes: a list of files you modified plus a brief diff summary.
When applying fixes:
- Use the
StrReplacetool, not free-form rewrites. - Re-run the lint script after edits and include the new verdict in the report.
- Never delete files the user wrote without confirmation.
Step 6 — Pre-delivery self-check
Before returning the report, verify each item below. Fail any of them → fix before responding.
- [ ] Lint script was actually executed and its JSON output was consumed.
- [ ] Every rubric ID the user asked for was loaded exactly once.
- [ ] No rubric file was loaded that the user excluded with
--rules. - [ ] All findings reference a real
rule(matches a lintruleor aR1–R10ID). - [ ] Verdict matches the highest severity present.
- [ ] No file in the target skill was modified without the user's explicit consent in Step 4.
Template mode (Step T0 – T3)
Step T0 — Gather intent ⚠️ REQUIRED
Ask the user:
- Skill
name(kebab-case). - One-sentence purpose.
- 5–10 trigger phrases users would actually say.
- Will it run scripts? generate output? need confirmation nodes?
Step T1 — Generate scaffold
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:
- R1: keep SKILL.md < 250 lines, push detail into references.
- R2: pack the description with the user's trigger phrases.
- R3: include a workflow checklist with at least one
⚠️ REQUIREDstep. - R6: add a confirmation step before any irreversible action.
- R7: include a pre-delivery checklist.
- R8: parse
$ARGUMENTS, document each flag, setargument-hint.
Step T2 — Self-verify
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.
Step T3 — Report
Tell the user where the scaffold lives, what to fill in next, and what the linter said.
Anti-Slop reminders (do not skip)
- This skill must respect every rule it enforces. If you change
SKILL.mdhere, re-run the linter on this folder. - Prefer asking the user a concrete question over guessing the intent.
- Never invent rubric IDs. The set is fixed:
R1–R10plus the hard rules emitted bylint-skill.mjs. - Cite findings with their
rulefield so the user can trace them back to either the script (scripts/lint-skill.mjs) or a rubric file underreferences/.
Design-to-Dev Specification Writer
Development
Translate your mockups into technical specifications for developers.
Exports & Barrel Files
Development
Defines conventions for module exports and barrel files: named exports only, no flat wildcards (except `export * as Name` for compound components), sectioned comments, types alongside values, and one export line per source file. Helps maintain consistent, tree-shakeable exports in portal apps using Turbopack or similar bundlers.
Write an Agent Skill
Development
Step-by-step guide to create a structured Agent Skill for coding agents, including directory structure, SKILL.md format, and design principles.