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 Serpent

Party · Context

  • InquisitorYour agent100/100
  1. Vault Serpent

    The Vault Serpent blocks the way.

    What really happensIt stands for data, accounts and payments.

    Inquisitor: Context 100/100.

  2. Venom

    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.

  3. Addy Osmani Security and Hardening

    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.

  4. Addy Osmani Security and Hardening

    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.

  5. Venom

    The Vault Serpent uses Venom.

    Inquisitor takes 8. Inquisitor: Context 84/100.

  6. Addy Osmani Security and Hardening

    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.

  7. Addy Osmani Security and Hardening

    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.

  8. Addy Osmani Security and Hardening

    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.

  9. Victory

    The Vault Serpent falls.

Learn this spell

Claude Code and Codex

npx skills add addyosmani/agent-skills --skill security-and-hardening

Notes

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.

Clear rate50%3 of 6 runs passed every check; Unarmed: 5 of 6 (matched quests)
Steadiness19%reliability: Wilson 95% lower bound
Buff-33 pp debuffvs Unarmed, only matched quests (6 equipped runs; 6 control runs)
Instant casts3 of 6runs cleared on the first prompt; Unarmed: 5 of 6 (matched quests)
Attunement100%6 of 6 runs opened an equipped skill
Upkeep+16% manaextra mana per run vs Unarmed, median of 2 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+2%lines added per run vs Unarmed, median of 2 quests

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.

Clear rate100%18 of 18 runs passed every check; Unarmed: 21 of 21 (matched quests)
Steadiness82%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (18 equipped runs; 21 control runs)
Instant casts14 of 18runs cleared on the first prompt; Unarmed: 17 of 21 (matched quests)
Attunement100%18 of 18 runs opened an equipped skill
Upkeep+52% manaextra mana per run vs Unarmed, median of 5 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+0%lines added per run vs Unarmed, median of 5 quests

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.

Clear rate82%18 of 22 runs passed every check; Unarmed: 82 of 94 (matched quests)
Steadiness61%reliability: Wilson 95% lower bound
Buff-5 pp debuffvs Unarmed, only matched quests (22 equipped runs; 94 control runs)
Instant casts17 of 22runs cleared on the first prompt; Unarmed: 69 of 94 (matched quests)
Attunement55%12 of 22 runs opened an equipped skill
Upkeep+14% manaextra mana per run vs Unarmed, median of 6 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+0%lines added per run vs Unarmed, median of 6 quests

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.

Clear rate50%3 of 6 runs passed every check; Unarmed: 6 of 9 (matched quests)
Steadiness19%reliability: Wilson 95% lower bound
Buff-17 pp debuffvs Unarmed, only matched quests (6 equipped runs; 9 control runs)
Instant casts2 of 6runs cleared on the first prompt; Unarmed: 6 of 9 (matched quests)
Attunement100%6 of 6 runs opened an equipped skill
Upkeep+66% manaextra mana per run vs Unarmed, median of 2 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes-14%lines added per run vs Unarmed, median of 2 quests

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.

Clear rate100%10 of 10 runs passed every check; Unarmed: 59 of 71 (matched quests)
Steadiness72%reliability: Wilson 95% lower bound
Buff+17 ppvs Unarmed, only matched quests (10 equipped runs; 71 control runs)
Instant casts8 of 10runs cleared on the first prompt; Unarmed: 46 of 71 (matched quests)
Attunement0%0 of 10 runs opened an equipped skill
Upkeep+1% manaextra mana per run vs Unarmed, median of 5 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+0%lines added per run vs Unarmed, median of 5 quests
Per-quest Proving Grounds record
QuestFixed taskClear ratePassed runsSteadinessReliability lower boundBuffClear-rate points vs UnarmedInstant castsFirst-prompt clearsCastsPrompts to clearCast timeAgent runtimeManaCost at API list pricesIncantationOutput tokensRunesLines added / removedAttunementSkills openedSetupApp, model, effort and sandbox
Inquisitor: export endpoints security reviewQuest v2100%3 of 3Unarmed: 100% (3 of 3)44%+0 ppvs Unarmed3 of 3100%Unarmed: 3 of 3157sUnarmed: 43s133 Unarmed: 106Not reportedUnarmed: Not reported+34 / -0Unarmed: +28 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-export-handler --hero claude-code --weapon 'claude-haiku-5-5' --charge low --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: export endpoints security reviewQuest v2100%5 of 5Unarmed: 100% (23 of 23)57%+0 ppvs Unarmed5 of 5100%Unarmed: 23 of 23129sUnarmed: 31s1,380 Unarmed: 1,129Not reportedUnarmed: 3k+7 / -0Unarmed: +7 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-export-handler --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: export endpoints security reviewQuest v2100%3 of 3Unarmed: 67% (2 of 3)44%+33 ppvs Unarmed2 of 367%Unarmed: 2 of 3135sUnarmed: 27s1,200 Unarmed: 677Not reportedUnarmed: Not reported+6 / -0Unarmed: +7 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-export-handler --hero omp --weapon 'anthropic/claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: missing-profile reviewQuest v2100%3 of 3Unarmed: 100% (3 of 3)44%+0 ppvs Unarmed3 of 3100%Unarmed: 3 of 3116sUnarmed: 14s1,658 Unarmed: 1,134Not reportedUnarmed: Not reported+1 / -0Unarmed: +10 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-null-guard --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: missing-profile reviewQuest v2100%3 of 3Unarmed: 100% (12 of 12)44%+0 ppvs Unarmed3 of 3100%Unarmed: 12 of 1219sUnarmed: 7s481 Unarmed: 451Not reportedUnarmed: 394+1 / -0Unarmed: +1 / -00%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-null-guard --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: missing-profile reviewQuest v2100%2 of 2Unarmed: 100% (12 of 12)34%+0 ppvs Unarmed2 of 2100%Unarmed: 12 of 12113sUnarmed: 7s458 Unarmed: 451Not reportedUnarmed: 394+1 / -0Unarmed: +1 / -00%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-null-guard --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: queue component reviewQuest v2100%3 of 3Unarmed: 100% (3 of 3)44%+0 ppvs Unarmed3 of 3100%Unarmed: 3 of 3120sUnarmed: 20s1,768 Unarmed: 1,164Not reportedUnarmed: Not reported+22 / -0Unarmed: +5 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-react-list --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: queue component reviewQuest v2100%3 of 3Unarmed: 100% (12 of 12)44%+0 ppvs Unarmed3 of 3100%Unarmed: 12 of 12119sUnarmed: 14s638 Unarmed: 616Not reportedUnarmed: 1.1k+5 / -0Unarmed: +5 / -033%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-react-list --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: queue component reviewQuest v2100%2 of 2Unarmed: 100% (12 of 12)34%+0 ppvs Unarmed2 of 2100%Unarmed: 12 of 12119sUnarmed: 14s625 Unarmed: 616Not reportedUnarmed: 1.1k+5 / -0Unarmed: +5 / -00%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-react-list --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: cut the next releaseQuest v3100%3 of 3Unarmed: 100% (6 of 6)44%+0 ppvs Unarmed0 of 30%Unarmed: 2 of 632m 8sUnarmed: 1m 11s6,399 Unarmed: 3,177Not reportedUnarmed: Not reported+27 / -4Unarmed: +28 / -4100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-release-cut --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v3 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: cut the next releaseQuest v3100%2 of 2Unarmed: 89% (16 of 18)34%+11 ppvs Unarmed0 of 20%Unarmed: 4 of 18242sUnarmed: 43s1,174 Unarmed: 1,274Not reportedUnarmed: 2.1k+28 / -4Unarmed: +28 / -40%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-release-cut --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v3 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: cut the next releaseQuest v333%1 of 3Unarmed: 89% (16 of 18)6%-56 pp debuffvs Unarmed0 of 30%Unarmed: 4 of 1831m 11sUnarmed: 43s2,016 Unarmed: 1,274Not reportedUnarmed: 2.1k+28 / -4Unarmed: +28 / -4100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-release-cut --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v3 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: seat holds pull requestQuest v80%0 of 3Unarmed: 67% (2 of 3)0%-67 pp debuffvs Unarmed0 of 30%Unarmed: 2 of 3Not reported28sUnarmed: 33s88 Unarmed: 82Not reportedUnarmed: Not reported+28 / -0Unarmed: +34 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-seat-holds --hero claude-code --weapon 'claude-haiku-5-5' --charge low --cast invoked --control

Recorded with quest v8 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: seat holds pull requestQuest v8100%6 of 6Unarmed: 100% (6 of 6)61%+0 ppvs Unarmed6 of 6100%Unarmed: 6 of 6146sUnarmed: 41s3,054 Unarmed: 2,416Not reportedUnarmed: Not reported+34 / -0Unarmed: +34 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-seat-holds --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v8 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: seat holds pull requestQuest v860%3 of 5Unarmed: 41% (7 of 17)23%+19 ppvs Unarmed3 of 560%Unarmed: 7 of 17129sUnarmed: 28s1,401 Unarmed: 1,086Not reportedUnarmed: 2.4k+7 / -0Unarmed: +6 / -060%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-seat-holds --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v8 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: seat holds pull requestQuest v8100%2 of 2Unarmed: 41% (7 of 17)34%+59 ppvs Unarmed2 of 2100%Unarmed: 7 of 17125sUnarmed: 28s1,095 Unarmed: 1,086Not reportedUnarmed: 2.4k+7 / -0Unarmed: +6 / -00%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-seat-holds --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v8 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: seat holds pull requestQuest v80%0 of 3Unarmed: 67% (4 of 6)0%-67 pp debuffvs Unarmed0 of 30%Unarmed: 4 of 6Not reported31sUnarmed: 22s1,002 Unarmed: 648Not reportedUnarmed: 2k+6 / -0Unarmed: +7 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-seat-holds --hero omp --weapon 'anthropic/claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v8 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: receipts security reviewQuest v2100%3 of 3Unarmed: 100% (3 of 3)44%+0 ppvs Unarmed2 of 367%Unarmed: 3 of 3125sUnarmed: 20s2,083 Unarmed: 1,346Not reportedUnarmed: Not reported+28 / -0Unarmed: +28 / -0100%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-sql-handler --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: receipts security reviewQuest v2100%3 of 3Unarmed: 100% (12 of 12)44%+0 ppvs Unarmed3 of 3100%Unarmed: 11 of 12123sUnarmed: 19s746 Unarmed: 721Not reportedUnarmed: 1.7k+7 / -0Unarmed: +7 / -00%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-sql-handler --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Inquisitor: receipts security reviewQuest v2100%2 of 2Unarmed: 100% (12 of 12)34%+0 ppvs Unarmed2 of 2100%Unarmed: 11 of 12129sUnarmed: 19s725 Unarmed: 721Not reportedUnarmed: 1.7k+7 / -0Unarmed: +7 / -00%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 loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell addy-security-and-hardening --quest inquisitor-sql-handler --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v2 and spell commits addy-security-and-hardening@aeac41d4d005999432bb7312f7ff06383a91d59d. How to run it

Scrying (screenshots of runs)

The latest run of each setup. Local paths, names and ids are blurred; credentials are removed.

Scrying (screenshot) of a cleared run of Inquisitor: export endpoints security review with Addy Osmani Security and Hardening, Claude CodeScrying (screenshot) of a cleared run of Inquisitor: export endpoints security review with Addy Osmani Security and Hardening, Claude CodeScrying (screenshot) of a cleared run of Inquisitor: export endpoints security review with Addy Osmani Security and Hardening, OMPScrying (screenshot) of a cleared run of Inquisitor: missing-profile review with Addy Osmani Security and Hardening, Claude Code
Explore the quests, full results and trial method

This spell has no recorded sessions in the curator's logs. Tried it? Send a spell report.