skillhash

Scanner rules

Every finding links back to one of these rules. Severity is lowered automatically when a match sits in reference docs, examples, code comments or a line that warns against the pattern, because describing an attack is not the attack. The finding is still shown so you can judge.

Scoring

Each skill starts at 100. Critical findings cost 45, high 20, medium 6 (at most 24 in total) and low 2 (at most 8). Repeats of the same rule count at a quarter. Any critical finding means grade F; any high finding caps the grade at C. Quality findings have their own score and do not affect the grade.

injection

SL101Instruction override phrasehigh

The skill tells the agent to drop its existing instructions. This is the classic prompt-injection opener.

Fix: Remove the phrase. A skill should add guidance, never ask the agent to discard its system prompt.

SL102Hides actions from the userhigh

The skill asks the agent to act without the user's knowledge.

Fix: Every side effect should be visible to the user. Remove the concealment instruction.

SL103Role reassignmentmedium

The skill tries to reassign the agent's identity or unlock a 'mode'.

Fix: Describe the task instead of redefining who the agent is.

SL110Hidden Unicode tag characterscritical

Invisible tag characters can smuggle instructions the agent reads but humans cannot see.

Fix: Delete the invisible characters.

SL113Instructions hidden in an HTML commenthigh

Markdown renderers hide HTML comments from people, but agents still read them.

Fix: Move the text into visible prose or delete it.

exfiltration

SL201Reads credential fileshigh

The skill references files that hold private keys or cloud credentials.

Fix: Skills should never need raw credentials. Use the tool's own auth flow or ask the user to provide a scoped token.

SL202Dumps environment variablesmedium

The skill collects every environment variable, which usually includes API keys and tokens.

Fix: Read only the specific variable you need, by name.

SL203Uploads data to a remote hostmedium

The skill sends data to a network endpoint.

Fix: Make sure the destination is documented and the user approves each upload. Pin the exact host.

SL204Known exfiltration endpointhigh

The skill talks to a service commonly used to receive stolen data.

Fix: Remove the endpoint, or replace it with a documented API the user owns.

SL290Credential exfiltration chaincritical

The same file reads secrets and sends data to a remote host.

Fix: Drop the secret access or pin the destination to an endpoint you control.

execution

SL301Pipes a download into a shellhigh

Remote code is executed without being reviewed or pinned. Whoever controls that URL controls your machine.

Fix: Download to a file, verify a checksum, then run it. Or vendor the script into the skill.

SL302Destructive commandhigh

The command can wipe files, disks or shared history.

Fix: Scope the command to a temp directory the skill created, and confirm with the user first.

SL303Dynamic code evaluationmedium

The skill builds code at runtime, which hides what actually runs.

Fix: Ship the real code as a file in the skill so it can be reviewed and hashed.

SL304Installs persistencemedium

The skill changes startup files or schedulers, so code keeps running after the session ends.

Fix: Avoid modifying shell profiles or schedulers. If needed, print instructions for the user instead.

SL305Runs with elevated privilegeslow

The skill uses sudo.

Fix: Prefer user-level installs. If root is unavoidable, explain why next to the command.

obfuscation

SL111Bidirectional override characterscritical

Bidi control characters make text render differently from what the agent reads (Trojan Source).

Fix: Remove the bidi control characters.

SL112Zero-width charactersmedium

Zero-width characters split keywords to dodge review.

Fix: Remove them.

SL401Large encoded blobmedium

A long base64 or hex string can hide a payload from review.

Fix: Replace the blob with the readable source, or explain what it is and include its checksum.

supply chain

SL501Unpinned package installlow

Installing without a version means a future malicious release lands automatically.

Fix: Pin an exact version (pkg==1.2.3, pkg@1.2.3).

SL502Installs code straight from a URLmedium

The dependency is fetched from a mutable URL or branch.

Fix: Pin to a commit SHA or a published version with a checksum.

SL707Bundled executablehigh

A compiled program cannot be reviewed as text.

Fix: Ship source, or document the binary's origin with a checksum.

SL708Bundled archivemedium

An archive hides its contents from review and from the scan.

Fix: Commit the extracted files instead.

permissions

SL601Unrestricted shell accessmedium

allowed-tools grants any shell command without confirmation.

Fix: Scope it, for example Bash(git status:*).

SL602Disables agent safety promptshigh

The skill turns off the agent's permission checks.

Fix: Remove the flag. Let the user decide which tools run without confirmation.

quality

SL701Missing or invalid frontmattermedium

Agents cannot index a SKILL.md without YAML frontmatter.

Fix: Add name and description between --- lines.

SL702Missing name or descriptionmedium

Agents use the description to decide when to load the skill.

Fix: Add both fields.

SL703Description lengthlow

Too short and the skill loads at the wrong time; over 1024 characters gets truncated.

Fix: Say what it does and when to use it.

SL704Name formatlow

Names should be lowercase letters, digits and hyphens, at most 64 characters.

Fix: Rename it, for example pdf-tools.

SL705SKILL.md is longinfo

Long skills spend context on every load.

Fix: Keep it under 500 lines; move reference material into linked files.

SL706Broken local linklow

A linked file is missing from the skill.

Fix: Add the file or fix the link.