xss

xss is a skill for Claude Code, Codex from emre-guler/websec. It costs 103 tokens per session (6,501 once invoked), scanned A, original, MIT.

A security review guide for cross-site scripting, where attacker-controlled text reaches a browser as HTML or code. XSS can let injected code act within a user's session.

In plain words
What is it for?
Use it to inspect reflected, stored, and client-side XSS risks, including raw template output, HTML insertion, and script evaluation.
Why use it?
It helps find unsafe handling of request or stored data before it reaches HTML, templates, scripts, or browser APIs that interpret code.

Skill for Claude CodeCodex

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the websec plugin — 36 skills, 2 agents shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/emre-guler/websec/xss
Any agent
npx skills add emre-guler/websec --skill xss
Clone the repo
git clone --depth 1 https://github.com/emre-guler/websec

Made for: Claude Code, Codex.

Or install websec, the plugin that ships this one along with the rest of its 36 skills, 2 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for xss

README.md
[![agentmods](https://agentmods.dev/badge/skills/emre-guler/websec/xss.svg)](https://agentmods.dev/skills/emre-guler/websec/xss)
Your own site
<a href="https://agentmods.dev/skills/emre-guler/websec/xss"><img src="https://agentmods.dev/badge/skills/emre-guler/websec/xss.svg" alt="Measured on agentmods" height="20"></a>
Per session 103 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,501 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00103 $0.06501
Opus 5 $0.00051 $0.03250
Sonnet 5 $0.00021 $0.01300
Haiku 4.5 $0.00010 $0.00650

Measured 3d ago against content hash 05d6329bcb18, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

xss scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/xss/SKILL.md · 180 lines

How it starts

The opening of the file, as written. The whole thing — 180 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Cross-Site Scripting Detection

Overview

Cross-site scripting is an output-encoding failure: attacker-chosen data reaches a browser in a position where the browser parses it as markup or code, so script runs inside the victim's session for the vulnerable origin. Script running as the site can read and rewrite the DOM, steal cookies and tokens, read a page's anti-forgery token and issue fully valid state-changing requests, capture credentials with injected form fields, and act as the user. The attacker is a remote third party who either lures the victim to a crafted URL (reflected, DOM-based) or plants a payload the application later serves to other users (stored) — the latter reaches administrators and is the highest-impact form. This skill locates every site where untrusted data becomes part of a response or is handed to a client-side HTML/execution sink, checks each site in parallel, and merges the results into <output_dir>/xss-results.md.

What it is NOT

  • Other client-side sink families (/websec:dom-based): test the sink, not the source. If the sink renders HTML or executes code (innerHTML, document.write, eval, Function, jQuery .html()), it belongs here — including DOM-based, reflected-DOM and stored-DOM cases. If the sink is navigation, document.cookie, localStorage, a request header, WebSocket(), JSON.parse, document.evaluate, executeSql, document.domain, or a plain DOM property, it belongs to /websec:dom-based. DOM clobbering and web-message origin flaws also live there; note here only when they are the delivery vehicle for a sink in this skill.
  • Server-side template injection (/websec:ssti): if user input is concatenated into the template source and evaluated by the server's template engine, it is /websec:ssti (usually remote code execution). Client-side template expression evaluation in the browser stays here.
  • Cross-site request forgery (/websec:csrf): CSRF makes the browser send a request it cannot read; XSS runs code and can read responses. XSS defeats anti-forgery tokens; the reverse is not true.
  • Prototype pollution (/websec:prototype-pollution): polluting Object.prototype is the gadget, not the sink. Report it there and note the resulting HTML sink here only if untrusted data reaches it directly.
  • Server-side injection (/websec:sql-injection, /websec:os-command-injection): different trust boundary — the database or the shell, not another user's browser.
  • Upload handling (/websec:file-upload): an uploaded document that runs script in a viewer's browser is that skill's when the missing control is upload-side — type allow-list, stored extension, Content-Disposition, sniffing protection. Test: is the flaw that the file was accepted and served at all, or that its contents reach a rendering sink? Only the second is here.
  • Open redirection (/websec:open-redirect, or /websec:dom-based when client JavaScript assigns the navigation): steering the browser to an attacker-chosen destination without achieving markup or script execution is not this class. Test: does the payload land in a parsed HTML or script context, or only in a destination the browser navigates to? A javascript: destination that genuinely executes is reported here and the redirect noted there.
  • Content spoofing and embedding-based phishing: injecting text or styling that misleads a reader without reaching a markup or script context is a presentation and brand issue with no execution behind it. No skill in this set owns it. Test: name the parsed context the payload reaches; if there is none, it is out of scope — say so and move on rather than reaching for a neighbouring class.
  • Not a finding: a reflection that is correctly encoded for the context it lands in; auto-escaping template output with no escape hatch on the path; self-inflicted payloads that require the victim to paste code into their own console or field with no cross-site delivery; a Markdown or rich-text pipeline whose maintained sanitiser output is the value actually rendered; developer-controlled constants that merely pass through an HTML sink.

Read the full file on GitHub · 180 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 180 lines · 103 tokens per session scan A 05d6329bcb18

Subscribe to this mod's changes

xss is a skill published in the GitHub repository emre-guler/websec (2 stars, last pushed 7d ago), licensed MIT. It adds 103 tokens to every session and 6,501 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

vantage

Autonomous, artifact-driven SAST (Static Application Security Testing) for web AND mobile app repositories, plus optional code-level remediation. Use whenever the user asks to security-review, pentest, audit, or scan a codebase for vulnerabilities — web (SQLi, XSS, IDOR/BOLA, auth bypass, SSRF, XXE, hardcoded secrets…

tinoimammp/vantage-security-agent · 230 tokens

prowler-ui

Prowler UI-specific patterns. For generic patterns, see: typescript, react-19, nextjs-16, tailwind-4. Trigger: When working inside ui/ on Prowler-specific conventions (shadcn, folder placement, actions/adapters, shared types/hooks/lib).

prowler-cloud/prowler · 64 tokens

prowler-test-api

Testing patterns for Prowler API: JSON:API, Celery tasks, RLS isolation, RBAC. Trigger: When writing tests for api/ (JSON:API requests/assertions, cross-tenant isolation, RBAC, Celery tasks, viewsets/serializers).

prowler-cloud/prowler · 62 tokens

prowler-docs

Prowler documentation style guide and writing standards. Trigger: When writing documentation for Prowler features, tutorials, or guides.

prowler-cloud/prowler · 31 tokens

react-19

React 19 patterns with React Compiler. Trigger: When writing React 19 components/hooks in .tsx (React Compiler rules, hook patterns, refs as props). If using Next.js App Router/Server Actions, also use nextjs-16.

prowler-cloud/prowler · 53 tokens

prowler

Main entry point for Prowler development - quick reference for all components. Trigger: General Prowler development questions, project overview, component navigation (NOT PR CI gates or GitHub Actions workflows).

prowler-cloud/prowler · 43 tokens