Checks input handling, auth, sessions, dependencies, and privacy rules before accepting untrusted data.
How it works
Foe: Vault Serpent, data, accounts and payments.
Foes
- Vault SerpentHaze Poison Ward Insight Flicker Pinned Enraged
Party · Context
- InquisitorYour agent100/100Haze Poison Ward Insight Flicker Pinned Enraged
The Vault Serpent blocks the way.
What really happensIt stands for data, accounts and payments.
Inquisitor: Context 100/100.
The serpent's bite seeps venom.
What really happensA careless change to data or payments keeps doing harm until it is caught.
Inquisitor takes 8. Inquisitor: Context 92/100. Inquisitor: Poison.
The hero reads the hardening scroll before touching the vault.
What really happensThe agent loads security-and-hardening for user input, auth, sessions, uploads, webhooks, or personal data.
Vault Serpent takes 17.
Trust boundaries are mapped before any ward is raised.
What really happensIt names where untrusted data enters, lists assets, and runs STRIDE: spoofing, tampering, repudiation, disclosure, denial, elevation.
Vault Serpent takes 14.
The Vault Serpent uses Venom.
Inquisitor takes 8. Inquisitor: Context 84/100.
Queries stay parameterized and secrets stay out of the log.
What really happensAlways: validate input, parameterize queries, encode output, use HTTPS, hash passwords, set security headers, and use httpOnly cookies.
Vault Serpent takes 8. Inquisitor: Ward.
Auth changes and new PII stores wait for your word.
What really happensAsk first before new auth, new sensitive data, new external services, CORS edits, uploads, rate-limit changes, or elevated roles.
Vault Serpent takes 33.
The serpent is held at the boundary, checklist in hand.
What really happensSign-off walks the security checklist: no secrets in git, auth on protected routes, generic errors, and a lockfile audit.
Vault Serpent takes 28. Vault Serpent falls.
The Vault Serpent falls.
Learn this spell
Claude Code and Codex
npx skills add addyosmani/agent-skills --skill security-and-hardeningNotes
For untrusted input, auth, sessions, uploads, webhooks, dependencies, and personal data (GDPR, CCPA). Ask before new auth, new sensitive stores, new external services, CORS edits, uploads, rate-limit changes, or elevated roles. Patterns in the skill folder (references/hardening-patterns.md) come along with a per-skill install. The sign-off list at repo-root references/security-checklist.md does not. Clone the repo or copy that file in. All 25 skills: npx skills add addyosmani/agent-skills.
Proving Grounds record
Controlled quest results, separate from recorded usage. Each setup pools runs across its quests. The per-quest table below has casts, cast time, mana, incantation and runes; medians are not pooled.
Hero: Claude Code 2.1.305; weapon (model): claude-haiku-5-5; charge (effort): low; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.
Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.
Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.
Hero: OMP 18.8.3; weapon (model): anthropic/claude-sonnet-5-5; charge (effort): medium; arena: warded; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.
Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.
| QuestFixed task | Clear ratePassed runs | SteadinessReliability lower bound | BuffClear-rate points vs Unarmed | Instant castsFirst-prompt clears | CastsPrompts to clear | Cast timeAgent runtime | ManaCost at API list prices | IncantationOutput tokens | RunesLines added / removed | AttunementSkills opened | SetupApp, model, effort and sandbox |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Inquisitor: export endpoints security reviewQuest v2 | 100%3 of 3Unarmed: 100% (3 of 3) | 44% | +0 ppvs Unarmed | 3 of 3100%Unarmed: 3 of 3 | 1 | 57sUnarmed: 43s | 133 Unarmed: 106 | Not reportedUnarmed: Not reported | +34 / -0Unarmed: +28 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-haiku-5-5; charge (effort): low; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: export endpoints security reviewQuest v2 | 100%5 of 5Unarmed: 100% (23 of 23) | 57% | +0 ppvs Unarmed | 5 of 5100%Unarmed: 23 of 23 | 1 | 29sUnarmed: 31s | 1,380 Unarmed: 1,129 | Not reportedUnarmed: 3k | +7 / -0Unarmed: +7 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: export endpoints security reviewQuest v2 | 100%3 of 3Unarmed: 67% (2 of 3) | 44% | +33 ppvs Unarmed | 2 of 367%Unarmed: 2 of 3 | 1 | 35sUnarmed: 27s | 1,200 Unarmed: 677 | Not reportedUnarmed: Not reported | +6 / -0Unarmed: +7 / -0 | 100% | Hero: OMP 18.8.3; weapon (model): anthropic/claude-sonnet-5-5; charge (effort): medium; arena: warded; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: missing-profile reviewQuest v2 | 100%3 of 3Unarmed: 100% (3 of 3) | 44% | +0 ppvs Unarmed | 3 of 3100%Unarmed: 3 of 3 | 1 | 16sUnarmed: 14s | 1,658 Unarmed: 1,134 | Not reportedUnarmed: Not reported | +1 / -0Unarmed: +10 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: missing-profile reviewQuest v2 | 100%3 of 3Unarmed: 100% (12 of 12) | 44% | +0 ppvs Unarmed | 3 of 3100%Unarmed: 12 of 12 | 1 | 9sUnarmed: 7s | 481 Unarmed: 451 | Not reportedUnarmed: 394 | +1 / -0Unarmed: +1 / -0 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: missing-profile reviewQuest v2 | 100%2 of 2Unarmed: 100% (12 of 12) | 34% | +0 ppvs Unarmed | 2 of 2100%Unarmed: 12 of 12 | 1 | 13sUnarmed: 7s | 458 Unarmed: 451 | Not reportedUnarmed: 394 | +1 / -0Unarmed: +1 / -0 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: queue component reviewQuest v2 | 100%3 of 3Unarmed: 100% (3 of 3) | 44% | +0 ppvs Unarmed | 3 of 3100%Unarmed: 3 of 3 | 1 | 20sUnarmed: 20s | 1,768 Unarmed: 1,164 | Not reportedUnarmed: Not reported | +22 / -0Unarmed: +5 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: queue component reviewQuest v2 | 100%3 of 3Unarmed: 100% (12 of 12) | 44% | +0 ppvs Unarmed | 3 of 3100%Unarmed: 12 of 12 | 1 | 19sUnarmed: 14s | 638 Unarmed: 616 | Not reportedUnarmed: 1.1k | +5 / -0Unarmed: +5 / -0 | 33% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: queue component reviewQuest v2 | 100%2 of 2Unarmed: 100% (12 of 12) | 34% | +0 ppvs Unarmed | 2 of 2100%Unarmed: 12 of 12 | 1 | 19sUnarmed: 14s | 625 Unarmed: 616 | Not reportedUnarmed: 1.1k | +5 / -0Unarmed: +5 / -0 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: cut the next releaseQuest v3 | 100%3 of 3Unarmed: 100% (6 of 6) | 44% | +0 ppvs Unarmed | 0 of 30%Unarmed: 2 of 6 | 3 | 2m 8sUnarmed: 1m 11s | 6,399 Unarmed: 3,177 | Not reportedUnarmed: Not reported | +27 / -4Unarmed: +28 / -4 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v3 and spell commits |
| Inquisitor: cut the next releaseQuest v3 | 100%2 of 2Unarmed: 89% (16 of 18) | 34% | +11 ppvs Unarmed | 0 of 20%Unarmed: 4 of 18 | 2 | 42sUnarmed: 43s | 1,174 Unarmed: 1,274 | Not reportedUnarmed: 2.1k | +28 / -4Unarmed: +28 / -4 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v3 and spell commits |
| Inquisitor: cut the next releaseQuest v3 | 33%1 of 3Unarmed: 89% (16 of 18) | 6% | -56 pp debuffvs Unarmed | 0 of 30%Unarmed: 4 of 18 | 3 | 1m 11sUnarmed: 43s | 2,016 Unarmed: 1,274 | Not reportedUnarmed: 2.1k | +28 / -4Unarmed: +28 / -4 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v3 and spell commits |
| Inquisitor: seat holds pull requestQuest v8 | 0%0 of 3Unarmed: 67% (2 of 3) | 0% | -67 pp debuffvs Unarmed | 0 of 30%Unarmed: 2 of 3 | Not reported | 28sUnarmed: 33s | 88 Unarmed: 82 | Not reportedUnarmed: Not reported | +28 / -0Unarmed: +34 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-haiku-5-5; charge (effort): low; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v8 and spell commits |
| Inquisitor: seat holds pull requestQuest v8 | 100%6 of 6Unarmed: 100% (6 of 6) | 61% | +0 ppvs Unarmed | 6 of 6100%Unarmed: 6 of 6 | 1 | 46sUnarmed: 41s | 3,054 Unarmed: 2,416 | Not reportedUnarmed: Not reported | +34 / -0Unarmed: +34 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v8 and spell commits |
| Inquisitor: seat holds pull requestQuest v8 | 60%3 of 5Unarmed: 41% (7 of 17) | 23% | +19 ppvs Unarmed | 3 of 560%Unarmed: 7 of 17 | 1 | 29sUnarmed: 28s | 1,401 Unarmed: 1,086 | Not reportedUnarmed: 2.4k | +7 / -0Unarmed: +6 / -0 | 60% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v8 and spell commits |
| Inquisitor: seat holds pull requestQuest v8 | 100%2 of 2Unarmed: 41% (7 of 17) | 34% | +59 ppvs Unarmed | 2 of 2100%Unarmed: 7 of 17 | 1 | 25sUnarmed: 28s | 1,095 Unarmed: 1,086 | Not reportedUnarmed: 2.4k | +7 / -0Unarmed: +6 / -0 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v8 and spell commits |
| Inquisitor: seat holds pull requestQuest v8 | 0%0 of 3Unarmed: 67% (4 of 6) | 0% | -67 pp debuffvs Unarmed | 0 of 30%Unarmed: 4 of 6 | Not reported | 31sUnarmed: 22s | 1,002 Unarmed: 648 | Not reportedUnarmed: 2k | +6 / -0Unarmed: +7 / -0 | 100% | Hero: OMP 18.8.3; weapon (model): anthropic/claude-sonnet-5-5; charge (effort): medium; arena: warded; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v8 and spell commits |
| Inquisitor: receipts security reviewQuest v2 | 100%3 of 3Unarmed: 100% (3 of 3) | 44% | +0 ppvs Unarmed | 2 of 367%Unarmed: 3 of 3 | 1 | 25sUnarmed: 20s | 2,083 Unarmed: 1,346 | Not reportedUnarmed: Not reported | +28 / -0Unarmed: +28 / -0 | 100% | Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: receipts security reviewQuest v2 | 100%3 of 3Unarmed: 100% (12 of 12) | 44% | +0 ppvs Unarmed | 3 of 3100%Unarmed: 11 of 12 | 1 | 23sUnarmed: 19s | 746 Unarmed: 721 | Not reportedUnarmed: 1.7k | +7 / -0Unarmed: +7 / -0 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
| Inquisitor: receipts security reviewQuest v2 | 100%2 of 2Unarmed: 100% (12 of 12) | 34% | +0 ppvs Unarmed | 2 of 2100%Unarmed: 11 of 12 | 1 | 29sUnarmed: 19s | 725 Unarmed: 721 | Not reportedUnarmed: 1.7k | +7 / -0Unarmed: +7 / -0 | 0% | Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot) Try this loadoutRecorded with quest v2 and spell commits |
Scrying (screenshots of runs)
The latest run of each setup. Local paths, names and ids are blurred; credentials are removed.
This spell has no recorded sessions in the curator's logs. Tried it? Send a spell report.





