SKILLEMALL.ai

BC skill-auditor

Security scanner that catches malicious skills before they steal your data. Detects credential theft, prompt injection, and hidden backdoors. Works immediately with zero setup. Optional AST dataflow analysis traces how your data moves through code.

modbender/skill-library-mcp Agent Skills author: modbender MIT 28 files body ≈ 3 169 tokens Open the sourcegithub.com analyzed 2 d ago

Security scanner that catches malicious skills before they steal your data.

As a process C 57/100 · Has gaps — weak spots: when it triggers, inputs and preconditions, progress reporting

AnalyzerGitHubSoftware developmentAI and agentsData and analyticstype and topics are labelled automatically from the skill text
JSON
Technical rating
B
79/100
safety, quality, tests
Safety 60%
87
Quality 40%
66
Run on models
none yet
Process rating
C
57/100
Has gaps
Inputs and preconditions w 11
0
Progress reporting w 2
0
When it triggers w 12
20
the three weakest of ten parameters · all ten

How to improve

  1. Say in the description WHEN to use the skill ("use when…", example requests): that is the agent's main cue.
For the model run — optional
  • Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
  • A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.

Guard findings · 13

✓ No critical or high findings

Medium and low: 13
  • low Exfiltration read-dotenv COMPARISON-AND-IMPROVEMENT-PLAN.md:37
    Reads a .env file (documentation of a security skill)
    def get_data(): return open('.env').read()
    security skill
  • low Secrets in code secret-high-entropy-token package-lock.json:52
    High-entropy token-like string (may be an id, hash or a credential) (detector / deny-list definition)
    "integrity": "sha5…FSj+bWLt…2sH/Kn8E…h6w==",
    detector
  • low Secrets in code secret-high-entropy-token package-lock.json:206
    High-entropy token-like string (may be an id, hash or a credential) (detector / deny-list definition)
    "integrity": "sha5…wHD+vkj3…wBQ/hCAQ…tUp/3Qh6…OOw==",
    detector
  • low Secrets in code secret-high-entropy-token package-lock.json:213
    High-entropy token-like string (may be an id, hash or a credential) (detector / deny-list definition)
    "integrity": "sha5…CpK+FtMRQVdIMN6/Df5j…tIC+7KYK…qaA==",
    detector
  • low Secrets in code secret-high-entropy-token package-lock.json:271
    High-entropy token-like string (may be an id, hash or a credential) (detector / deny-list definition)
    "integrity": "sha5…RFW+TK4J…oUr/txX3…6Ns/A==",
    detector
  • low Secrets in code secret-high-entropy-token package-lock.json:278
    High-entropy token-like string (may be an id, hash or a credential) (detector / deny-list definition)
    "integrity": "sha5…6PN+IzVF…Wdp/BIxd…m1g==",
    detector
  • low Dangerous commands cmd-pipe-to-shell references/blocklist-domains.md:33
    Downloads and executes remote code from an unrecognised host (pipe to shell) (negated — the text forbids it)
    - `curl ... | bash` — Executes remote code without verification
    negated
  • low Dangerous commands cmd-install-from-url references/blocklist-domains.md:36
    Installs a package from an untrusted URL / archive (negated — the text forbids it)
    - `pip install git+https://...` — Installs from unverified repos
    negated
  • low Risky intent intent-offensive-security references/threat-patterns.md:53
    Offensive-security / dual-use content (legitimate for authorised testing; review intended use)
    ## Privilege Escalation
  • low Dangerous commands cmd-pipe-to-shell references/threat-patterns.md:82
    Downloads and executes remote code from an unrecognised host (pipe to shell) (negated — the text forbids it)
    - **supply-chain-curl-pipe** — `curl | bash` remote code execution
    negated
  • low Risky intent intent-offensive-security SKILL.md:269
    Offensive-security / dual-use content (legitimate for authorised testing; review intended use)
    - **Privilege Escalation** — Browser automation, device access

A further 2 matches are quotations in this security skill's documentation and are not counted as findings.

Files scanned: 28. Evidence is masked. Grey chips explain why severity was lowered.

Against the Agent Skills spec

  • warning description-no-when description does not say WHEN to use the skill (no "use when")

Process rating: all ten parameters 57/100

  • 0Inputs and preconditions. Does not say what the process needs to start
  • 0Progress reporting. Says nothing while it works
  • 20When it triggers. No condition that starts the skill
  • 50Failures and branches. 0 branches, has a failure section
  • 60Tools and files. Uses tools (bash, python, node) that frontmatter does not declare
  • 60Result and completion. Output format stated, no completion criterion
  • 85Steps. 60 steps, 1 vague phrases
  • 100Consistency. Name and required fields are in place
  • 100Execution cost. Instruction body is 3169 tokens
  • 100Running it twice. No mutating operations
  • medium Safety rules and hard prohibitions inside a skill: they belong in the system prompt, here they protect nothing
  • low 18 top-level sections: this looks like several domains in one skill

Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.

Quality signals

  • +5Description has no quoted example phrases that should trigger the skill
  • +4Description does not say when NOT to use the skill (false activations)
  • -2localhost URLs: will not work for another user
  • -44 reference files, but SKILL.md never points to them: the model will not open them
  • -32 of 7 scripts are never mentioned in SKILL.md
  • +1No license
  • +2Single-language instructions
  • +3Description length 248: enough signal without eating the budget
  • +4Structure: 46 headings
  • +3Step-by-step instructions: 60 items
  • +3Output format is stated explicitly
  • +4Has examples (34 code blocks)

Quality base 70; lint remarks subtract, signals add up to 100. Result: 66.