create-command — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited create-command (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create a slash command: a prompt the user invokes by typing /<name>. Make it do one well-scoped action, accept its arguments cleanly, and read like a tight instruction set. Then regenerate the derived files and validate.
Source layout is commands/<category>/<name>/COMMAND.md. Commands are file-layout: the folder must contain only COMMAND.md, because it installs as the single file .claude/commands/<name>.md. The /<name> the user types comes from that filename. The category is the folder; registry.json and the README catalog are generated by pnpm gen. Never hand-edit generated files.
/write-tests, /deploy). Keep it to a single, well-scoped job.pnpm gen rejects extras because the command installs as one file.disable-model-invocation: true so only the user can fire it.pnpm gen.disable-model-invocation: true) for anything with side effects or timing you want to control; both you and Claude for safe, read-only helpers.From the repo root:
pnpm new --type command --category <category> --name <name> --description "<what it does>"Current command category: testing. Reuse it or add a new folder if a different family is justified. The scaffolder enforces kebab-case and global name uniqueness and regenerates the registry.
Required: name, description. Useful optional fields:
| Field | Purpose |
|---|---|
argument-hint | Autocomplete hint for expected args, e.g. [file] or [issue-number] [format]. Omit if none. |
allowed-tools | Tools the command may use without a permission prompt while active. Space/comma string or list. |
disable-model-invocation | true so only the user can run it (Claude won't auto-trigger). Use for side-effecting commands. |
model | Pin a model for this command. Defaults to the session model. |
Write description third person, leading with the action; avoid a : (it is YAML).
The markdown body is the prompt that runs when the command is invoked. Address the agent, imperative. Wire in input:
allowed-tools), e.g. `!git diff --stat ` to ground the prompt in live state.If the command takes arguments but the body omits $ARGUMENTS, Claude Code appends what the user typed automatically, but referencing it explicitly reads better.
pnpm gen
pnpm validateFix the source COMMAND.md if validation complains; never patch generated output.
/<name> does the one action cleanly, with arguments handled.disable-model-invocation: true is set.COMMAND.md.pnpm validate passes and the README catalog shows the new row.Report the command's path, category, how it's invoked, and the validation result. Leave committing to the user.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.