skillcrit
Run the CLI as a process and report what it prints. Do not guess about
installed skills, and do not import main from a scratchpad.
Which command
| The user wants to know |
Run |
| Which copies to review for cleanup (runtime selection remains unknown) |
skillcrit doctor [path] |
| Estimated context cost of the recommended set |
skillcrit doctor [path] |
| Every problem, with a fix per finding |
skillcrit lint [path] |
| What to delete, as a reviewable plan |
skillcrit lint [path] --fix |
| Whether one SKILL.md is spec-conformant |
skillcrit lint <skill-dir> |
| Where skills live on this machine |
skillcrit roots [path] |
| A flat list of what is installed |
skillcrit scan [path] |
| What a rule ID means |
skillcrit rules |
| Whether a skill pack helps |
skillcrit eval <pack-dir> — read the caveats below |
Add --user whenever the question is about the machine rather than one repo.
Without it only the project tree is read.
Add --json when you need to compute over the result. Print the text form when
the user is reading it.
When not to use this
- Authoring a new skill from scratch — skillcrit checks skills, it does not
write them.
- "Is this skill safe?" —
SC4xxx findings are signals for a human to read,
not a verdict. Say so explicitly rather than reporting a clean run as safe.
- Anything about tool permissions, MCP servers, or subagents. Out of scope.
Preflight
Skill/plugin installation provides instructions only; the CLI is a separate prerequisite.
Run skillcrit --version. If missing, explain that Node 22+ and
the CLI are required. Install the current release with
npm install -g skillcrit@0.6.0 --ignore-scripts.
Version 0.6.0 is distributed through npm and GitHub. Verify the
installed version before auditing. Do not substitute an older build for file export.
With an authorized source checkout, build it using npm ci and npm run build,
then use its dist/cli.js directly or install it with npm install -g ..
Obtain approval before installing software; npm downloads packages. After installation, verify the
version and run skillcrit doctor . from the project being audited.
For cleanup plans, prefer --fix --out -. Versions before 0.5.1-rc.3 can
follow output-file links and overwrite their targets; do not use file export
with those builds. In 0.5.1-rc.3 and later, file export requires a new destination and
refuses an existing file or link. If refused, choose a new filename or stdout;
do not delete the existing destination just to make the export succeed.
Only if a real source checkout already exists, use
node <checkout>/dist/cli.js after building it. Never assume a skill folder or
plugin cache contains a built CLI. Reuse the invocation that succeeded.
Default [path] is the session cwd. Do not cd into the skillcrit checkout
unless that checkout is the project the user has open.
Reading the output
- Exit 1 means findings at or above the gate. It is a result, not a crash.
Exit 2 is bad usage; exit 3 means the run failed or scan coverage is incomplete.
Check
coverage.complete and its reasons before treating a report as complete.
- Progress goes to stderr and only on a TTY. Everything you report is on
stdout.
- Findings carry stable rule IDs (
SC1002, SC4003) and remediation.
Quote source locations when present. Aggregate findings such as token totals
have no source-file location; never invent one.
doctor reports cleanup recommendations, not runtime loading. Preserve
runtimeResolution: "unknown" and the report limitations. Equal SKILL.md
bytes mean identical instructions; scripts and references may differ.
Verify the client's namespace, enablement, and precedence before explaining
which copy loads. A recommendation is not permission to remove another copy.
- Do not invent a score, a grade, or a pass/fail that skillcrit did not print.
Safety invariants
- Inventory commands only read files and write to stdout. They make no network
calls and need no API key.
eval executes task code in temporary workspaces;
custom --tasks suites must be trusted and are not security-sandboxed.
--fix is a dry run. It writes one markdown file and never deletes a skill.
It refuses to write over package.json, SKILL.md, or .env.
- Deleting anything the plan recommends is the user's decision. Show the plan,
then ask. Do not delete skill directories on their behalf.
--user reads the documented $HOME skill directories. If the user has not
asked about their machine, leave it off.
Eval honesty
eval is experimental. The only shipped adapter is stub, which replays
recorded fixtures: deterministic, no API key, and it measures nothing about any
real agent. Run skillcrit eval --agent list before quoting any number, and
pass through the limitations section the summary prints. --repeat <n>
reports standard deviation; a single trial of a stochastic agent is an
anecdote.
References
references/commands.md — every command, flag, exit code, and output format.
references/rules.md — what each rule family means and how to configure it.
references/interpreting.md — the cleanup model, token accounting, and
how to write up a result.
1---2name: skillcrit3description: Audit installed agent skills. Use when the user asks about skill conflicts or duplicates, context costs, skill locations, SKILL.md conformance, cleanup recommendations, or skill-pack evaluation.4license: MIT5---67# skillcrit89Run the CLI as a process and report what it prints. Do not guess about10installed skills, and do not import `main` from a scratchpad.1112## Which command1314| The user wants to know | Run |15| --- | --- |16| Which copies to review for cleanup (runtime selection remains unknown) | `skillcrit doctor [path]` |17| Estimated context cost of the recommended set | `skillcrit doctor [path]` |18| Every problem, with a fix per finding | `skillcrit lint [path]` |19| What to delete, as a reviewable plan | `skillcrit lint [path] --fix` |20| Whether one SKILL.md is spec-conformant | `skillcrit lint <skill-dir>` |21| Where skills live on this machine | `skillcrit roots [path]` |22| A flat list of what is installed | `skillcrit scan [path]` |23| What a rule ID means | `skillcrit rules` |24| Whether a skill pack helps | `skillcrit eval <pack-dir>` — read the caveats below |2526Add `--user` whenever the question is about the machine rather than one repo.27Without it only the project tree is read.2829Add `--json` when you need to compute over the result. Print the text form when30the user is reading it.3132## When not to use this3334- Authoring a new skill from scratch — skillcrit checks skills, it does not35 write them.36- "Is this skill safe?" — `SC4xxx` findings are signals for a human to read,37 not a verdict. Say so explicitly rather than reporting a clean run as safe.38- Anything about tool permissions, MCP servers, or subagents. Out of scope.3940## Preflight4142Skill/plugin installation provides instructions only; the CLI is a separate prerequisite.43Run `skillcrit --version`. If missing, explain that Node 22+ and44the CLI are required. Install the current release with45`npm install -g skillcrit@0.6.0 --ignore-scripts`.46Version 0.6.0 is distributed through npm and GitHub. Verify the47installed version before auditing. Do not substitute an older build for file export.48With an authorized source checkout, build it using `npm ci` and `npm run build`,49then use its `dist/cli.js` directly or install it with `npm install -g .`.50Obtain approval before installing software; npm downloads packages. After installation, verify the51version and run `skillcrit doctor .` from the project being audited.52For cleanup plans, prefer `--fix --out -`. Versions before 0.5.1-rc.3 can53follow output-file links and overwrite their targets; do not use file export54with those builds. In 0.5.1-rc.3 and later, file export requires a new destination and55refuses an existing file or link. If refused, choose a new filename or stdout;56do not delete the existing destination just to make the export succeed.5758Only if a real source checkout already exists, use59`node <checkout>/dist/cli.js` after building it. Never assume a skill folder or60plugin cache contains a built CLI. Reuse the invocation that succeeded.6162Default `[path]` is the session cwd. Do not `cd` into the skillcrit checkout63unless that checkout is the project the user has open.6465## Reading the output6667- Exit 1 means findings at or above the gate. It is a result, not a crash.68 Exit 2 is bad usage; exit 3 means the run failed or scan coverage is incomplete.69 Check `coverage.complete` and its reasons before treating a report as complete.70- Progress goes to stderr and only on a TTY. Everything you report is on71 stdout.72- Findings carry stable rule IDs (`SC1002`, `SC4003`) and remediation.73 Quote source locations when present. Aggregate findings such as token totals74 have no source-file location; never invent one.75- `doctor` reports cleanup recommendations, not runtime loading. Preserve76 `runtimeResolution: "unknown"` and the report limitations. Equal SKILL.md77 bytes mean identical instructions; scripts and references may differ.78 Verify the client's namespace, enablement, and precedence before explaining79 which copy loads. A recommendation is not permission to remove another copy.80- Do not invent a score, a grade, or a pass/fail that skillcrit did not print.8182## Safety invariants8384- Inventory commands only read files and write to stdout. They make no network85 calls and need no API key. `eval` executes task code in temporary workspaces;86 custom `--tasks` suites must be trusted and are not security-sandboxed.87- `--fix` is a dry run. It writes one markdown file and never deletes a skill.88 It refuses to write over `package.json`, `SKILL.md`, or `.env`.89- Deleting anything the plan recommends is the user's decision. Show the plan,90 then ask. Do not delete skill directories on their behalf.91- `--user` reads the documented `$HOME` skill directories. If the user has not92 asked about their machine, leave it off.9394## Eval honesty9596`eval` is experimental. The only shipped adapter is `stub`, which replays97recorded fixtures: deterministic, no API key, and it measures nothing about any98real agent. Run `skillcrit eval --agent list` before quoting any number, and99pass through the `limitations` section the summary prints. `--repeat <n>`100reports standard deviation; a single trial of a stochastic agent is an101anecdote.102103## References104105- `references/commands.md` — every command, flag, exit code, and output format.106- `references/rules.md` — what each rule family means and how to configure it.107- `references/interpreting.md` — the cleanup model, token accounting, and108 how to write up a result.