Decide whether an AI agent skill is safe to install, keep installed, or submit for review.
Use two independent review lines:
Do not rely on the numeric score alone. A low score can miss semantic risk, and a high score can be justified when sensitive behavior is clearly documented, necessary, and bounded.
skillspector CLI is available.skillspector is missing, say so clearly and continue with manual source review.find, rg, sed, jq, file, and git diff.APPROVE, CAUTION, or REJECT.Resolve the target.
Accept a local skill directory, downloaded archive, or repository URL. If the user provides a URL, clone or download it into a temporary directory before review. Do not run installer scripts from the target.
Run the static scan.
skillspector scan "$TARGET" --no-llm --format json --output /tmp/skill-inspector-report.json
If the command exits non-zero, inspect any partial report and continue manually. Record that the static line was incomplete.
Read the SkillSpector report.
Extract:
Read the target source.
Always inspect:
SKILL.md
Also inspect MEDIUM findings when they involve network access, credentials, environment variables, file writes, shell execution, MCP permissions, persistence, obfuscation, or user/context leakage.
Apply semantic review.
Check whether the implementation matches the stated purpose:
eval, exec, decoded payloads, or downloaded code?Produce the combined verdict.
Use this rubric:
APPROVE: no HIGH or CRITICAL findings, no unexplained sensitive behavior, and the source matches the stated purpose.CAUTION: sensitive behavior exists, but it is documented, necessary, bounded, and controllable by the user.REJECT: malicious or deceptive behavior, unexplained HIGH or CRITICAL findings, hidden prompt injection, credential theft, unknown exfiltration, obfuscated execution, persistence, or a clear mismatch between description and behavior.Use the SkillSpector score as risk posture, not as the verdict:
| Score | Default posture |
|---|---|
| 0-20 | Usually acceptable after quick source review. |
| 21-35 | Acceptable only when findings are clearly explained. |
| 36-50 | Manual review required; default to CAUTION unless every concern is explained. |
| 51-80 | Default to REJECT unless the source is trusted and every sensitive behavior is necessary. |
| 81-100 | Default to REJECT. |
Write a concise security triage report, not a raw scanner dump.
Language policy:
APPROVE, CAUTION, and REJECT.Tone and formatting:
Recommended report shape:
## 🛡️ Skill Inspector: `{skill-name}`
**Source:** {path-or-url}
**Verdict:** {APPROVE | CAUTION | REJECT} {short meaning}
**Risk:** {score}/100 · {severity} · {SkillSpector recommendation}
**Install posture:** {one sentence about suitable and unsuitable use}
### Bottom Line
{2-3 sentences explaining whether to install or use it, the main risk, and why the score alone is not enough.}
### Signal Overview
| Source | Result | Interpretation |
|---|---|---|
| SkillSpector static scan | {summary} | {meaning} |
| Agent semantic review | {summary} | {meaning} |
| Sensitive surface | {network/env/files/shell/MCP/git/etc.} | {meaning} |
### Key Evidence
| Rule | Severity | Location | Review judgment |
|---|---|---|---|
| {rule id} | {severity} | {file}:{line} | {why acceptable, suspicious, or rejecting} |
### Diagnosis
{2-4 sentences connecting static evidence with semantic review and explaining the final verdict.}
### Guardrails
1. {condition 1}
2. {condition 2}
Translate section names naturally when the user's language is not English. Keep technical identifiers unchanged.
If SkillSpector is unavailable, still inspect:
SKILL.md frontmatter and bodyState clearly that no SkillSpector scan ran, then give a semantic-only verdict with lower confidence.