Permission surface
Scan an unpacked agent skill or artifact before installation and present its static permission surface to a human. Use when asked to "scan this skill", before `npx skills add`, or when vetting an agent artifact.From its SKILL.md
npx -y skills add runsagents/permission-surfaceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.1 KB, 410 tokens by cl100k_base, as published. Nobody here has run it
permission-surface
Scan first. Do not install, import, source, execute, or run package-manager hooks from the target artifact as part of the scan.
Workflow
-
Identify a local, unpacked directory containing the artifact. If only an install command or remote URL is available, ask for or create a non-executed source checkout/download using a human-approved method; do not use the artifact's installer to obtain it.
-
From this skill's repository, run:
node src/scan.mjs /path/to/unpacked-artifactUse
--format jsonwhen machine-readable output is useful. -
Present the complete SURFACE REPORT to the human before any install command. Call out high-severity findings, network domains, lifecycle hooks, mutable references, outside-repository writes, and every observed capability that was not declared.
-
State the disclaimer exactly: This is a STATIC heuristic scan, not a security audit. Findings may include false positives and miss real risks.
-
Do not label the artifact safe or malicious. Explain that severity prioritizes review, then wait for the human's explicit installation decision.
-
Only after explicit approval may the separate installation workflow proceed, for example
npx skills add ....
Report interpretation
QUIETmeans no v1 heuristic matched, not that the artifact is safe.- A declaration gives context but does not erase a finding.
- A mutable fetch can deliver different bytes later even if this repository does not change.
- A secret-looking match may be sample data; evidence is redacted in the report.
- Inspect the cited file and line in context and respect the scanned project's license.
The scanner reads files only. It skips .git, node_modules, binary-looking
files, and symlinks, and it does not execute target content or make network
requests.
What ships with it: 9 files
38.9 KB alongside SKILL.md, 2 of them executable
examples/
- surface-report.md2.9 KB
schemas/
src/
- scan.mjsruns13.4 KB
tests/
- scan.test.mjsruns4.1 KB
- ATTRIBUTION.md964 B
- CHANGELOG.md503 B
- LICENSE6.9 KB
- package.json559 B
- README.md6.7 KB