Fetches Vercel's interface rules and reports UI findings as file:line notes.

How it works

Foe: Tangle Hydra, a messy diff that needs review.

Foes

  • Tangle Hydra

Party · Context

  • IllusionistYour agent100/100
  1. Tangle Hydra

    The Tangle Hydra blocks the way.

    What really happensIt stands for a messy diff that needs review.

    Illusionist: Context 100/100.

  2. Regrow

    The Tangle Hydra uses Regrow.

    What really happensA messy diff hides new problems inside old ones.

    Illusionist takes 8. Illusionist: Context 92/100.

  3. Vercel Web Design Guidelines

    The hero reads the guidelines scroll before judging the page.

    What really happensThe agent loads web-design-guidelines when you ask to review UI, accessibility, UX, or the site against the rules.

    Tangle Hydra takes 25.

  4. Vercel Web Design Guidelines

    It fetches a fresh copy of the rules, then reads the files you named.

    What really happensBefore each review it fetches command.md from vercel-labs/web-interface-guidelines. If you name no files, it asks which to read.

    Tangle Hydra takes 21.

  5. Regrow

    The Tangle Hydra uses Regrow.

    Illusionist takes 8. Illusionist: Context 84/100.

  6. Vercel Web Design Guidelines

    Each head of the hydra is marked where it breaks a rule.

    What really happensIt checks the fetched rules against the files and writes findings in the terse file:line format those rules specify.

    Tangle Hydra takes 12. Illusionist: Ward.

  7. Vercel Web Design Guidelines

    The Tangle Hydra drops a list of misses, each pinned to a line.

    What really happensYou get a file-and-line review against the current Web Interface Guidelines, not a cached copy of the rules.

    Tangle Hydra takes 42. Tangle Hydra falls.

  8. Victory

    The Tangle Hydra falls.

Learn this spell

Claude Code and Codex

npx skills add vercel-labs/agent-skills

Notes

Same installer as the other skills in vercel-labs/agent-skills. Before each review it fetches the guidelines from vercel-labs/web-interface-guidelines, so it needs network. If you do not name files, it asks which files to review. Output is the file:line format from those rules. No license is declared: the repo has no LICENSE file and this SKILL.md names none.

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

Clear rate92%11 of 12 runs passed every check; Unarmed: 15 of 15 (matched quests)
Steadiness65%reliability: Wilson 95% lower bound
Buff-8 pp debuffvs Unarmed, only matched quests (12 equipped runs; 15 control runs)
Instant casts8 of 12runs cleared on the first prompt; Unarmed: 11 of 15 (matched quests)
Attunement100%12 of 12 runs opened an equipped skill
Upkeep+11% manaextra mana per run vs Unarmed, median of 4 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+0%lines added per run vs Unarmed, median of 4 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 rate86%19 of 22 runs passed every check; Unarmed: 74 of 86 (matched quests)
Steadiness67%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (22 equipped runs; 86 control runs)
Instant casts15 of 22runs cleared on the first prompt; Unarmed: 48 of 86 (matched quests)
Attunement59%13 of 22 runs opened an equipped skill
Upkeep+2% 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: 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%8 of 8 runs passed every check; Unarmed: 52 of 54 (matched quests)
Steadiness68%reliability: Wilson 95% lower bound
Buff+4 ppvs Unarmed, only matched quests (8 equipped runs; 54 control runs)
Instant casts7 of 8runs cleared on the first prompt; Unarmed: 39 of 54 (matched quests)
Attunement0%0 of 8 runs opened an equipped skill
Upkeep+0% manaextra mana per run vs Unarmed, median of 4 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+0%lines added per run vs Unarmed, median of 4 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: pricing plan switcherQuest v871%5 of 7Unarmed: 53% (9 of 17)36%+18 ppvs Unarmed5 of 771%Unarmed: 9 of 1711m 49sUnarmed: 1m 37s2,819 Unarmed: 2,764Not reportedUnarmed: 14.5k+412 / -3Unarmed: +394 / -3100%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 vercel-web-design-guidelines --quest illusionist-pricing-tabs --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v8 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. How to run it

Illusionist: booking form repairQuest v4100%3 of 3Unarmed: 87% (13 of 15)44%+13 ppvs Unarmed0 of 30%Unarmed: 0 of 1521m 23sUnarmed: 1m 6s2,653 Unarmed: 1,761Not reportedUnarmed: 12.2k+102 / -63Unarmed: +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 vercel-web-design-guidelines --quest illusionist-signup-form --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v4 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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,136 Unarmed: 1,134Not reportedUnarmed: Not reported+10 / -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 vercel-web-design-guidelines --quest inquisitor-null-guard --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 12110sUnarmed: 7s457 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 vercel-web-design-guidelines --quest inquisitor-null-guard --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 12110sUnarmed: 7s451 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 vercel-web-design-guidelines --quest inquisitor-null-guard --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 3116sUnarmed: 20s1,254 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 vercel-web-design-guidelines --quest inquisitor-react-list --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 12123sUnarmed: 14s659 Unarmed: 616Not reportedUnarmed: 1.1k+5 / -0Unarmed: +5 / -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 vercel-web-design-guidelines --quest inquisitor-react-list --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 12126sUnarmed: 14s617 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 vercel-web-design-guidelines --quest inquisitor-react-list --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. How to run it

Inquisitor: cut the next releaseQuest v367%2 of 3Unarmed: 100% (6 of 6)21%-33 pp debuffvs Unarmed0 of 30%Unarmed: 2 of 62.51m 41sUnarmed: 1m 11s4,668 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 vercel-web-design-guidelines --quest inquisitor-release-cut --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v3 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. How to run it

Inquisitor: cut the next releaseQuest v3100%2 of 2Unarmed: 89% (16 of 18)34%+11 ppvs Unarmed1 of 250%Unarmed: 4 of 181.540sUnarmed: 43s1,158 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 vercel-web-design-guidelines --quest inquisitor-release-cut --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v3 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. How to run it

Inquisitor: cut the next releaseQuest v367%2 of 3Unarmed: 89% (16 of 18)21%-22 pp debuffvs Unarmed1 of 333%Unarmed: 4 of 181.533sUnarmed: 43s1,154 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; 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 vercel-web-design-guidelines --quest inquisitor-release-cut --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v3 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 3141sUnarmed: 20s1,551 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 vercel-web-design-guidelines --quest inquisitor-sql-handler --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 12124sUnarmed: 19s706 Unarmed: 721Not reportedUnarmed: 1.7k+6 / -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 vercel-web-design-guidelines --quest inquisitor-sql-handler --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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 12123sUnarmed: 19s734 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 vercel-web-design-guidelines --quest inquisitor-sql-handler --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v2 and spell commits vercel-web-design-guidelines@063bee94c3f4df8453406c830b0a7df0f2860278. 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: pricing plan switcher with Vercel Web Design Guidelines, Claude CodeScrying (screenshot) of a cleared run of Illusionist: booking form repair with Vercel Web Design Guidelines, Claude CodeScrying (screenshot) of a cleared run of Inquisitor: missing-profile review with Vercel Web Design Guidelines, Claude CodeScrying (screenshot) of a cleared run of Inquisitor: missing-profile review with Vercel Web Design Guidelines, Claude Code

Also equipped in trial loadouts: Review React code and UI (workflow).

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.