CtrlK
BlogDocsLog inGet started
Tessl Logo

sast-xxe

Detect XML External Entity (XXE) vulnerabilities in a codebase using a three-phase approach: recon (find XML parsing sites without external-entity hardening), batched verify (trace user input to each site in parallel subagents, 3 sites each), and merge (consolidate batch results). Requires sast/architecture.md (run sast-analysis first). Outputs findings to sast/xxe-results.md. Use when asked to find XXE or XML injection bugs.

69

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

The canonical home for this skill is sast-xxe in utkusen/sast-skills

SKILL.md
Quality
Evals
Security

Quality

Content

77%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The execution workflow is exceptionally actionable with explicit phase ordering, checkpoints, and early-exit handling, and the subagent prompt templates are copy-paste ready. The weaknesses are token efficiency — duplicated hardening snippets and a generic XXE tutorial — and the absence of any progressive disclosure, with all per-language reference material inlined in one monolithic file.

Suggestions

Remove the 'Patterns That Prevent XXE' section (or fold it into the examples) — its 8 hardening snippets are duplicated by the SECURE halves of 'Vulnerable vs. Secure Examples' and again by Phase 1's 'What to skip' list.

Split the per-language vulnerable/secure examples into reference files (e.g., references/java.md, references/php.md) and have Phase 2 pass only the matching file, replacing the manual '[TECH-STACK EXAMPLES]' copy step.

Trim the 'What is XXE' concept introduction to only the skill-specific boundaries (the IS/NOT lists and the LIBXML_NOENT caveat), dropping the general tutorial Claude already knows.

DimensionReasoningScore

Conciseness

The execution phases are efficient, but the 'What is XXE' tutorial restates knowledge Claude already has, and the 8 'Patterns That Prevent XXE' snippets are largely duplicated by the SECURE halves of 'Vulnerable vs. Secure Examples' (with safe patterns appearing a third time in Phase 1's 'What to skip'). Mostly efficient with some unnecessary explanation and tightening opportunities — anchor 3; not 2 because the majority of the body (phase instructions, flag/skip lists) earns its tokens.

3 / 5

Actionability

Guidance is fully executable: grep-able per-language API lists ('etree.fromstring(...)', 'DocumentBuilderFactory.newInstance()'), copy-paste subagent prompt templates with exact output formats, and a ready curl XXE payload with Content-Type header. Matches anchor 5; not 4 because the common cases are covered end-to-end with no gaps.

5 / 5

Workflow Clarity

The three phases are explicitly ordered ('Phase 2 must run AFTER Phase 1 — it depends on the recon output'), with an early-exit validation checkpoint on zero recon findings, a worked batching procedure ('8 sites → 3 batches'), a merge procedure, and intermediate-file cleanup. This batch-operation skill has explicit checkpoints and error-recovery classification ('Needs Manual Review'), matching anchor 5; not 4 because validation is present at every phase boundary.

5 / 5

Progressive Disclosure

Section headers organize the body well, but ~290 lines of per-language reference material (prevention patterns, vulnerable/secure examples) are inlined in a single 570-line file with no bundle files, and Phase 2's manual '[TECH-STACK EXAMPLES]' selection is exactly what per-stack reference files would automate. Some structure with content that should be separate kept inline matches anchor 3; not 4 because there is no reference-file split at all, not 2 because sections are clearly headed and navigable rather than a wall of text.

3 / 5

Total

16

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it names the domain, the three-phase mechanism with batch sizes, required inputs, output location, and an explicit 'Use when' trigger clause. The only weakness is modest synonym coverage in its trigger terms.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — 'recon (find XML parsing sites without external-entity hardening)', 'batched verify (trace user input to each site in parallel subagents, 3 sites each)', 'merge (consolidate batch results)' — plus explicit input ('Requires sast/architecture.md') and output ('Outputs findings to sast/xxe-results.md') artifacts. This matches the comprehensive-coverage anchor; it is not 4 because there are no gaps in what/mechanics/inputs/outputs.

5 / 5

Completeness

It explicitly answers both questions: 'what' is concrete (three named phases with artifacts) and 'when' is an explicit trigger clause — 'Use when asked to find XXE or XML injection bugs'. This matches the anchor-5 example structure; it is not 4 because the 'when' is explicit with concrete trigger phrases rather than vague.

5 / 5

Trigger Term Quality

It includes the natural phrases users would say — 'XXE', 'XML External Entity', 'find XXE or XML injection bugs' — but omits common synonyms such as 'external entity injection', 'XML parser vulnerability', or file-extension hooks. Good coverage with a few natural terms missing fits anchor 4; not 5 because synonym coverage is incomplete, not 3 because the primary natural terms are all present.

4 / 5

Distinctiveness Conflict Risk

'XXE' is a clear niche with distinct triggers, and 'Requires sast/architecture.md (run sast-analysis first)' explicitly disambiguates it from the sibling analysis skill. Minimal conflict risk matches anchor 5; it is not 4 because no closely related skill would trigger on these terms in preference to this one.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (569 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository
utkusen/sast-skills
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.