Skip to content

feat(verify): verify-debatelab skill for driving the real app - #87

Merged
Programcode merged 10 commits into
mainfrom
t3code/verify-debatelab-skill
Oct 2, 2026
Merged

Programcode merged 10 commits into
mainfrom
t3code/verify-debatelab-skill

Conversation

@Programcode

Copy link
Copy Markdown
Owner

Adds .claude/skills/verify-debatelab/, a project skill that runs the real DebateLab app locally and keeps evidence that a feature works. It runs the React client, local Supabase Auth, Postgres and Edge Functions, signs in throwaway demo users, and drives features through Playwright.

  • One helper, bin/verify.sh, with the commands up, doctor, drive, user and down.
  • Two modes:
    • fake provider: the default, and free;
    • --live: real OpenRouter pinned to meta/muse-spark-1.3-contributor and real Exa, capped at 400 upstream calls.
  • 29 recipes with a feature map:
    • case generation;
    • AI tools;
    • Library;
    • Sparring and Crossfire;
    • Current Debate;
    • voice rounds on the browser voice;
    • account export and deletion;
    • billing;
    • auth.
  • AGENTS.md:
    • points to the skill;
    • adds a rule: a change that breaks the skill or makes it stale must update its recipes, feature map and SKILL.md in the same PR.
  • fake-openrouter.mjs: fake.fail now also works in live mode, the reply's real model is recorded, and there is a new /__stats endpoint. The fake-mode path is unchanged.

Verification, local and in fake mode:

  • drive recipes/ passes on both desktop and mobile Chromium, 29 of 29 each.
  • An end-to-end run of the skill's own instructions passed: up, doctor, drive recipes/voice-rounds (2 of 2), then down. Containers, the lock and the ports were released, and the evidence survived.
  • eslint, typecheck and docs:check pass.
  • Not run: live mode.

🤖 Generated with Claude Code

Programcode and others added 10 commits October 2, 2026 05:42
Adds a project skill that runs the full local stack (Supabase, Edge
Functions, fake OpenRouter, Vite in local-preview mode) as a long-lived
instance, with doctor, Playwright recipes that capture evidence, and a
seeded feature map. Tracks .claude/skills in git and ignores .verify/.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
`verify.sh up --live` turns the fake provider into a capped recording
proxy to real OpenRouter. It pins every chat call to
meta/muse-spark-1.3-contributor and gives Edge Functions a real Exa key.
The keys come from ~/.config/debatelab/live-verify.env. Recipes now
assert response structure instead of fake text, so the same recipes run
in both modes. They cover case generation, research, export, AI tools,
sparring, crossfire, the library, email sign-in, account settings,
flowcharts, the timer, and promo codes. `drive` also runs the maintained
full-stack and workspace specs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
AGENTS.md now says when to use `verify.sh up --live`, where the keys
live, what a run costs, and what neither mode can prove. The library
recipe checks only the sources it added, because live research can save
the web sources it finds.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Main now files every result in a Current Debate (#72, #75) and asks before
running a tool on a motion with no debate or a different one (#82). The
recipes timed out behind that dialog, found Add Source disabled, and hit
the header's "Start debate" with a loose "Start" match.

- timer-run matches the Start button exactly.
- brainstorm-run, bill-promo, spar-round and both Crossfire recipes answer
  the motion dialog with chooseForMotion, as e2e/full-stack does.
- gen-*, lib-* start a debate from the header first with startDebate.
- gen-create now proves the case is filed in its debate without a Save
  click (Save no longer exists inside a debate) and reopens from History
  on a fresh device. gen-save covers the one-off Save path.
- New row checks: brainstorms, cases, sources, sparring_sessions and
  crossfires point at the debate they were made in.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Three recipes and feature files for features main shipped since the skill
was written. Each mirrors its maintained e2e/full-stack spec but reads
model text from the ai response, so it passes in fake and live mode.

- current-debate: start, the first-debate offer, the different-motion
  "use once" choice, sources and results scoped per debate, switching,
  and starting the first debate from the onboarding tour.
- voice-rounds: spoken Sparring and Crossfire on the browser voice with
  no ElevenLabs key, including the wait for the opponent to finish.
- account-data: Download my data and Delete account, each proven against
  a bystander. Deletion asserts it targets the recipe's own demo user.

fixtures.ts re-exports the scripted speech helpers. The feature index
lists the new files and the testid exceptions.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- SKILL.md explains the Current Debate and the motion dialogs for scripted
  and interactive runs, names the new fixture helpers, and says what the
  first tour step offers.
- Selector guidance lists the testid exceptions and the exact-match rule.
- URL import fetches pages directly in both modes, so it is no longer
  listed as live-only. ElevenLabs audio and real Stripe cancellation are
  listed as unprovable.
- The 18081 note no longer claims it is the only allowed local origin.
- Existing feature files describe starting a debate first, the dialogs,
  the debate rows, and the one-off History view.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
URL import goes through import-source, which fetches the page itself with
no Exa key, so it behaves the same in fake and live mode. Also point to the
Current Debate helpers and name ElevenLabs audio and real Stripe
cancellation as unprovable locally.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A change that breaks a verify-debatelab recipe or makes the skill stale
must update the recipes, feature map, and SKILL.md in the same PR and
run the touched recipes on both Chromium projects.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 2, 2026 06:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vercel

vercel Bot commented Oct 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
debate-navigator Building Building Preview Oct 2, 2026 6:55am UTC

@Programcode
Programcode merged commit 11c8bf5 into main Oct 2, 2026
4 of 5 checks passed
@coderabbitai

coderabbitai Bot commented Oct 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: 0957a899-c09c-4bcd-ac45-3638d5f3f187

📥 Commits

Reviewing files that changed from the base of the PR and between 1168934 and 5f433a8.

📒 Files selected for processing (29)
  • .claude/skills/verify-debatelab/SKILL.md
  • .claude/skills/verify-debatelab/bin/demo-user.mjs
  • .claude/skills/verify-debatelab/bin/verify.sh
  • .claude/skills/verify-debatelab/features/README.md
  • .claude/skills/verify-debatelab/features/account-data.md
  • .claude/skills/verify-debatelab/features/ai-tools.md
  • .claude/skills/verify-debatelab/features/auth-demo-login.md
  • .claude/skills/verify-debatelab/features/case-generation.md
  • .claude/skills/verify-debatelab/features/current-debate.md
  • .claude/skills/verify-debatelab/features/library-sources.md
  • .claude/skills/verify-debatelab/features/practice.md
  • .claude/skills/verify-debatelab/features/voice-rounds.md
  • .claude/skills/verify-debatelab/playwright.verify.config.ts
  • .claude/skills/verify-debatelab/recipes/account-data.spec.ts
  • .claude/skills/verify-debatelab/recipes/account.spec.ts
  • .claude/skills/verify-debatelab/recipes/ai-tools.spec.ts
  • .claude/skills/verify-debatelab/recipes/auth.spec.ts
  • .claude/skills/verify-debatelab/recipes/billing.spec.ts
  • .claude/skills/verify-debatelab/recipes/case-generation.spec.ts
  • .claude/skills/verify-debatelab/recipes/current-debate.spec.ts
  • .claude/skills/verify-debatelab/recipes/fixtures.ts
  • .claude/skills/verify-debatelab/recipes/library.spec.ts
  • .claude/skills/verify-debatelab/recipes/practice.spec.ts
  • .claude/skills/verify-debatelab/recipes/voice-rounds.spec.ts
  • .gitignore
  • AGENTS.md
  • docs/testing.md
  • e2e/full-stack/fake-openrouter.mjs
  • scripts/check-docs.mjs
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

This branch was successfully deployed

1 active deployment
Preview — 5f433a8c Deployed Oct 2, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants