Context
Cross-referencing anthropics/skills#492 — discussion on enabling registry-layer trust labels using scanner output as evidence. @ppcvote (prompt-defense-audit / ultraprobe) and skill-security-check agreed to align on a shared envelope so registries can consume any compliant scanner without per-tool branching.
Boundary: scanner-layer spec (envelope, taxonomy) lives here. Registry/attestation policy is downstream and out of scope.
Proposed Minimal Envelope
1. Severity Taxonomy
| Tier |
Definition |
critical |
Actively exploitable in default configuration (e.g., arbitrary code execution, data exfiltration) |
high |
Exploitable with minimal user interaction or configuration (e.g., permission bypass, prompt injection vector) |
medium |
Requires specific conditions to exploit (e.g., context window poisoning, indirect data leak) |
low |
Informational or defense-in-depth concern (e.g., missing best practice, verbose error output) |
2. SARIF Envelope (minimal fields)
3. Severity → SARIF Level Mapping
| Tier |
SARIF level |
| critical |
error |
| high |
error |
| medium |
warning |
| low |
note |
4. Digest Requirements
- Algorithm:
sha256 (mandatory), additional algorithms optional
- Scope: hash of the scanned artifact content (e.g., SKILL.md + scripts/ + references/)
- Purpose: bind scan results to specific content version; invalidate on content change
Open Questions
Next Steps
- Feedback on this draft from @ppcvote and anyone else interested
- Ship
TAXONOMY.md in this repo
- Implement SARIF output in skill-security-check
- ppcvote aligns prompt-defense-audit / ultraprobe output
cc @ppcvote
Context
Cross-referencing anthropics/skills#492 — discussion on enabling registry-layer trust labels using scanner output as evidence. @ppcvote (prompt-defense-audit / ultraprobe) and skill-security-check agreed to align on a shared envelope so registries can consume any compliant scanner without per-tool branching.
Boundary: scanner-layer spec (envelope, taxonomy) lives here. Registry/attestation policy is downstream and out of scope.
Proposed Minimal Envelope
1. Severity Taxonomy
criticalhighmediumlow2. SARIF Envelope (minimal fields)
{ "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json", "version": "2.1.0", "runs": [{ "tool": { "driver": { "name": "claude-code-skill-security-check", // scanner name "version": "3.1.1", "informationUri": "https://github.com/aliksir/claude-code-skill-security-check", "rules": [/* rule definitions with severity tier */] } }, "results": [{ "ruleId": "prompt-injection-vector", "level": "error", // SARIF level mapped from tier "message": { "text": "..." }, "properties": { "severity_tier": "critical", // canonical tier from taxonomy above "taxonomy_uri": "https://github.com/aliksir/claude-code-skill-security-check/blob/main/TAXONOMY.md" } }], "properties": { "target": { "name": "skill-name", "digest": { "sha256": "abc123..." // content hash of scanned artifact } } } }] }3. Severity → SARIF Level Mapping
levelerrorerrorwarningnote4. Digest Requirements
sha256(mandatory), additional algorithms optionalOpen Questions
taxonomy_uripoint to a shared repo or each scanner's own taxonomy doc?rules[]— justid+shortDescription+defaultConfiguration.level?scanStartedUtc/scanCompletedUtcin run properties?Next Steps
TAXONOMY.mdin this repocc @ppcvote