CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

dom-clobbering

DOM clobbering — abuse named HTML elements to overwrite JavaScript global variables, bypass CSP, hijack object property lookups.

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Critical

Do not install without reviewing

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/exploit/web/dom-clobbering/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%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.

A tight, payload-first reference for a niche technique: concrete clobber payloads, runnable detection code, sanitizer-evading injection targets, severity guidance, and defender mitigations with essentially no filler. The main improvements are an explicit step-by-step PoC procedure with verification and cleaning up cross-references to files that do not exist.

Suggestions

Turn section 6 (PoC) into an explicit ordered procedure with a verification loop, e.g., 1. enumerate named elements with the detection snippet, 2. grep the JS bundle for window.<name> usage, 3. inject the payload, 4. confirm via interactsh callback before reporting.

Remove or clearly mark the dead cross-reference to css-injection/SKILL.md ('when added') and verify the other referenced paths actually exist.

Consider trimming the 'Known exemplars' section or folding it into a single line, since it adds reference material without operational guidance.

DimensionReasoningScore

Conciseness

The body is lean and assumes Claude's competence — the intro states the mechanism (named elements resolve as window/document properties) and then goes straight to payloads, targets, detection, and defense with no padding. Minor trims exist (the 'Known exemplars' section and the severity table are marginal), keeping it at the efficient 4-anchor rather than the every-token-earns-its-place 5-anchor.

4 / 5

Actionability

The HTML payloads (single-element clobber, form/input chaining, nonce theft) and the detection console snippet are copy-paste ready, and the defender section gives concrete DOMPurify config and Object.defineProperty fixes. The PoC section stays at the guidance level ('find an HTML-injection sink... confirm via observed network request') without concrete commands, which is the minor gap that keeps it below 5.

4 / 5

Workflow Clarity

The numbered sections (targets → payload patterns → where to inject → detection → PoC → severity → defender) give a clear implicit sequence, and the PoC section includes a verification checkpoint ('Confirm via observed network request to //evil.com (DNS-level via interactsh)'). It falls short of 5 because there is no explicit ordered procedure with error-recovery loops — the flow must be assembled from the sections — but checkpoints are present, so it is above the implicit-checkpoint 3-anchor.

4 / 5

Progressive Disclosure

The single SKILL.md file (~110 lines) is well organized into eight clear sections with no bundle files to disclose, and everything is appropriately self-contained at this size. The cross-references section points to paths outside this bundle (one explicitly marked '(when added)' for a nonexistent file), which is a minor organization/navigation gap rather than the clean one-level-deep reference structure of the 5-anchor.

4 / 5

Total

16

/

20

Passed

Description

70%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 crisp, specific description of a well-defined niche: it states concrete capabilities (overwrite globals, bypass CSP, hijack property lookups) in third-person voice with good natural trigger terms. Its one real weakness is the absence of a 'Use when...' trigger clause, which caps completeness.

Suggestions

Add a 'Use when...' clause, e.g., 'Use when auditing pages that render user-supplied HTML (comments, rich-text fields, markdown renderers) or when you suspect named-element clobbering of window globals.'

Include a few more natural trigger synonyms users might say, such as 'HTML injection', 'window globals', or 'named elements', to broaden keyword coverage.

Optionally mention the defensive/remediation angle (e.g., 'or harden sanitizers against it') to distinguish offensive from defensive invocations.

DimensionReasoningScore

Specificity

The description names the domain and three concrete actions — 'abuse named HTML elements to overwrite JavaScript global variables', 'bypass CSP', 'hijack object property lookups' — with only minor coverage gaps (no mention of detection or defense, which the body covers). It is not the comprehensive 5-anchor, which would enumerate the full capability set.

4 / 5

Completeness

The 'what' is clearly and explicitly stated (clobbering globals via named HTML elements to bypass CSP and hijack property lookups), but there is no 'Use when...' clause or equivalent explicit trigger guidance in the description itself — the judging guidelines cap completeness at 3 for this. It is a clear 3, not 2 (the 'what' is concrete, not vague) and not 4 (no 'when' at all, not even an implicit one).

3 / 5

Trigger Term Quality

'DOM clobbering', 'named HTML elements', 'JavaScript global variables', and 'CSP' are natural phrases a user would say when they need this skill. A few common synonyms are missing (e.g., 'HTML injection', 'window globals', 'window.name'), so it falls just short of the comprehensive synonym coverage of the 5-anchor.

4 / 5

Distinctiveness Conflict Risk

'DOM clobbering' is a well-defined niche with distinct trigger terminology; no other skill would naturally claim these phrases. Minor adjacency to general XSS/CSP skills exists, but the term itself is unambiguous, matching the clear-niche 5-anchor.

5 / 5

Total

16

/

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.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

PurpleAILAB/Decepticon

Path

packages/decepticon/decepticon/skills/standard/exploit/web/dom-clobbering/SKILL.md

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.