skillguard
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| scan_skillA | Scans a third-party AI agent-skill directory (a SKILL.md manifest plus its bundled hooks/scripts) for known attack patterns before that skill is installed or executed: remote-code-execution hooks (SG02), file-scope escalation (SG03), supply-chain-risky install hooks (SG04), obfuscated payloads (SG05), credential harvesting (SG06), frontmatter spoofing (SG07), prompt injection in the skill's own instructional text (SG08), and marketplace typosquatting (SG10). Call this before installing or running any agent skill you did not author yourself -- the same way you would not execute an unreviewed shell script from a stranger; it has nothing useful to do on skills you already trust. This is a read-only, offline, side-effect-free operation: every rule pack ships inside the installed wheel, so no network call happens at scan time, and the target's own files are only ever read and pattern-matched, never eval()'d, exec()'d, or imported. Re-running it on an unchanged target is idempotent. Two suppression mechanisms exist in the underlying CLI (.skillguardignore and inline "# skillguard-ignore: SGxx" comments) but this tool never honors either, even if the target ships its own .skillguardignore -- every call runs at full strictness since the target is by definition untrusted. One coverage gap: SG09 (cross-skill privilege chaining across a set of skills) only runs through the separate scan_skill_set()/scan-set CLI path, not through this single-directory tool. An invalid path or unreadable target raises an error rather than returning a silently-clean result. Parameters: path (string, required) is the filesystem path to the skill directory to scan, e.g. "/skills/pdf-tools" containing SKILL.md plus its hooks/. severity_threshold (string, optional, one of HIGH/MEDIUM/LOW, default HIGH) is the minimum finding severity that flips the result's exit code to non-zero -- lower it to MEDIUM or LOW for a stricter review. timeout_ms (integer, optional, default 10000) caps the per-file scan time in milliseconds; files that exceed it land in the result's timeouts list instead of failing the whole scan. Example calls: {"path": "/skills/pdf-tools"} for a default HIGH-severity scan; {"path": "/skills/pdf-tools", "severity_threshold": "LOW"} to surface every finding; {"path": "/skills/pdf-tools", "timeout_ms": 30000} for a larger skill that needs more per-file time. Returns a JSON string with: target (the scanned path), filesScanned, severityThreshold, exitCode (0 = clean, 1 = a finding at/above threshold was found, 2 = target/config error), summary (finding counts by severity), findings (a list of {ruleId, category, severity, message, file, line, snippet?}), timeouts (files that hit the per-file limit), unscannedFiles (recognized-but-unsupported-language files), and warnings ({code, message} entries, e.g. for an invalid rule pack). A non-zero exitCode means the skill tripped a finding at or above the configured threshold and should not be trusted without human review. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 1 tool
Only one tool exists, so there is no possibility of confusing it with another tool. Its purpose is clearly described and distinct within the server's scope.
The single tool name 'scan_skill' follows a clear verb_noun pattern, and with only one tool there are no inconsistencies to evaluate.
The server has only one tool, which feels thin for a security scanning domain. While it is comprehensive for single-skill scans, the description references a separate scan_skill_set path that is not exposed, leaving the tool set on the borderline of being too sparse.
The tool thoroughly covers many attack patterns (SG02-SG08, SG10) for a single skill directory, but explicitly lacks SG09 (cross-skill chaining) which requires a separate tool path. This is a notable gap in the security review lifecycle, as multi-skill scenarios cannot be fully assessed.