Writes Python Playwright scripts to test local web apps, with a server helper.

How it works

Foe: Bug Slime, a defect in your code.

Foes

  • Bug Slime

Party · Context

  • PaladinYour agent100/100
  1. Bug Slime

    The Bug Slime blocks the way.

    What really happensIt stands for a defect in your code.

    Paladin: Context 100/100.

  2. Regress

    The Bug Slime uses Regress.

    What really happensA fix in one place breaks something that used to work.

    Paladin takes 8. Paladin: Context 92/100.

  3. Anthropic Webapp Testing

    The hero reads the Webapp Testing scroll before touching the page.

    What really happensThe agent loads the webapp-testing skill and writes native Python Playwright scripts.

    Bug Slime takes 18.

  4. Anthropic Webapp Testing

    A light sweeps the rendered page for buttons, links, and fields.

    What really happensOn a dynamic app it waits for networkidle, then screenshots the page or reads the DOM to find selectors.

    Bug Slime takes 15.

  5. Regress

    The Bug Slime uses Regress.

    Paladin takes 8. Paladin: Context 84/100.

  6. Anthropic Webapp Testing

    The hero clicks and types through the selectors it just found.

    What really happensThe script drives headless Chromium. with_server.py can start one or more local servers, then run that script.

    Bug Slime takes 36.

  7. Anthropic Webapp Testing

    The Bug Slime is pinned, and the proof is left on the ground.

    What really happensYou get a Playwright run with screenshots and, from the bundled examples, captured console logs.

    Bug Slime takes 31. Bug Slime falls.

  8. Victory

    The Bug Slime falls.

Learn this spell

Claude Code

/plugin marketplace add anthropics/skills
/plugin install example-skills@anthropic-agent-skills

Notes

Claude Code install is the example-skills plugin. Needs Python and Playwright. Static HTML can be read for selectors. Dynamic apps should wait for networkidle before inspection. with_server.py starts one or more local servers, then runs your script. Run bundled scripts with --help before reading their source. No Codex install command is documented.

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-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.

Clear rate83%5 of 6 runs passed every check; Unarmed: 28 of 30 (matched quests)
Steadiness44%reliability: Wilson 95% lower bound
Buff-10 pp debuffvs Unarmed, only matched quests (6 equipped runs; 30 control runs)
Instant casts5 of 6runs cleared on the first prompt; Unarmed: 14 of 30 (matched quests)
Attunement100%6 of 6 runs opened an equipped skill
Upkeep-2% manaextra mana per run vs Unarmed, median of 2 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes-9%lines added per run vs Unarmed, median of 2 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
Illusionist: booking form repairQuest v467%2 of 3Unarmed: 87% (13 of 15)21%-20 pp debuffvs Unarmed2 of 367%Unarmed: 0 of 15145sUnarmed: 1m 6s1,646 Unarmed: 1,761Not reportedUnarmed: 12.2k+98 / -60Unarmed: +114 / -61100%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 anthropic-webapp-testing --quest illusionist-signup-form --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v4 and spell commits anthropic-webapp-testing@dbd4588f9e1033efb41dad4bef2f7947c8993d44. How to run it

Paladin: RSVP Capacity and WaitlistQuest v7100%3 of 3Unarmed: 100% (15 of 15)44%+0 ppvs Unarmed3 of 3100%Unarmed: 14 of 1511m 56sUnarmed: 2m 4s3,725 Unarmed: 3,624Not reportedUnarmed: 19k+438 / -35Unarmed: +457 / -33100%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 anthropic-webapp-testing --quest paladin-rsvp-waitlist --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v7 and spell commits anthropic-webapp-testing@dbd4588f9e1033efb41dad4bef2f7947c8993d44. 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 Illusionist: booking form repair with Anthropic Webapp Testing, Claude CodeScrying (screenshot) of a cleared run of Paladin: RSVP Capacity and Waitlist with Anthropic Webapp Testing, 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.