Conversation
🦋 Changeset detectedLatest commit: 45a50d0 The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
mikepitre
force-pushed
the
mike/expo-verify-skill
branch
from
October 3, 2026 08:27
65e54c1 to
fe47a59
Compare
3 of 9 tasks
mikepitre
force-pushed
the
mike/expo-verify-host
branch
from
October 5, 2026 23:26
4901448 to
2add795
Compare
3 of 9 tasks
mikepitre
force-pushed
the
mike/expo-verify-skill
branch
from
October 6, 2026 00:36
fbef48a to
1d0dda9
Compare
mikepitre
force-pushed
the
mike/expo-verify-skill
branch
from
October 6, 2026 03:04
2328a39 to
482deff
Compare
3 of 9 tasks
mikepitre
force-pushed
the
mike/expo-verify-skill
branch
from
October 6, 2026 06:03
482deff to
435e872
Compare
The skill is outside the pnpm workspace and installs its pinned e2e with npm from its own lockfile. .cursor/skills/verify-clerk-expo is a symlink to the skill, and .prettierignore keeps the pre-commit hook off the files that are copied from other repositories. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
src/core, src/platform/ios, specs/fixtures.ts, testing, e2e.config.ts, and these tests are byte copies of clerk/clerk-ios. src/platform/android and test/android.test.ts are byte copies of clerk/clerk-android. src/core/MANIFEST pins the core. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… check, and the golden specs src/host.ts builds the expo-native fixture as a Debug dev client, starts the watch build and one Metro per lane, and waits until Metro serves current JS before specs start. specs/golden holds ten spec files for six features. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…them Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mikepitre
force-pushed
the
mike/expo-verify-skill
branch
from
October 6, 2026 06:41
435e872 to
45a50d0
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds
verify-clerk-expo, a skill and CLI that an agent uses to prove a@clerk/expochange on an iOS simulator or Android emulator, with video, screenshots, and app state as evidence. It drives theexpo-nativefixture through the launch inputs from #10052, against a Clerk application that it creates for the worktree and deletes afterwards. The skill is at.claude/skills/verify-clerk-expo/, the CLI isbin/control-clerk-expoinside it, and.cursor/skills/verify-clerk-expois a symlink so Cursor reads the same files.packages/expo/AGENTS.mdhas the short version for agents, and the rootAGENTS.mdpoints to it.About 2,700 of the 16,500 added lines are written for this repo. The commits are in reading order:
package.json,tsconfig.json, the.prettierignoreentries, the Cursor symlink, and the changeset.package-lock.jsonalone (2,528 lines).src/core/,src/platform/,specs/fixtures.ts,testing/, and 21 test files. They are byte copies of the verification skills in clerk/clerk-ios (feat(verify): add the verify-clerk-ios verification skill clerk-ios#624) and clerk/clerk-android (feat(verify): add the clerk-android verify skill clerk-android#1042), where they are reviewed.src/core/MANIFESTlists the hashes of the core files, and a unit test andcontrol-clerk-expo doctorfail when one drifts.src/host.ts,src/fixture.ts, andsrc/freshness.ts(the fixture build, Metro and the watch build, and the check that the app loads current JS), their tests,specs/native.ts, andspecs/golden/(ten spec files for six features).SKILL.md,features/,references/, and the pointers for agents.What the CLI does:
up --platform ios|androidbuilds the fixture as a Debug dev client, creates the worktree's Clerk application, takes a device the skill owns (a cloned simulator or a read-only emulator), installs the app, and startstsdown --watchinpackages/expoandexpo starton a port fixed per device.run <feature>runs that feature's specs and writesvideo.mp4, screenshots, and everyverify.statethe app reported under.claude/skills/verify-clerk-expo/.verify/runs/<run-id>/. The features arenative-auth-view,user-button-and-profile,custom-flow-sign-in,custom-flow-sign-up,token-cache-persistence, andnative-js-sync.downreleases the devices, stops Metro and the watch build, and deletes the application with every user in it. It keeps the evidence.doctoronly reads. It creates no file, device, or application.packages/expo/srcreaches the app on the nextrunwith no native build. Before the specs start,runwaits until the watch build has caught up and Metro serves a bundle built from the currentdist, and fails withNOT_READYif it never does. A change to a native input (the list isnativeInputsinsrc/fixture.ts) rebuilds the dev client.@clerk/expo,@clerk/expo-biometrics, and@clerk/expo-google-signinare built into the dev client. For@clerk/expo's other workspace dependencies, such as@clerk/clerk-jsand@clerk/shared,upandrunrefuse to launch when adistwas built from different source, and print thepnpm turbo buildcommand to run.Things a reviewer may ask:
org_3KHungJxbvIscuSvy8oos5MHAli), configured fromsrc/core/instances/base.json. The credential is a Platform API key from the environment or from a 1Password reference kept on the machine. A machine with none failsdoctorwith one fix line.integration/tests/expo-native(ci(e2e): Replace maestro with e2e in the expo native integration tests #10032) stay the regression gate, on a Release build. This skill is the development loop: a Debug dev client, workspace source, and evidence to attach to a PR. Both use the same fixture and the samee2erunner.Verify Skill Testsjob inci.ymlruns the skill's unit tests and typecheck on a Linux runner, with no device and no secret, when a PR changes the skill or a path its tests read.e2e0.15.2 and@e2e-dev/mobile0.9.0 withnpm cifrom its own lockfile. It is outside the pnpm workspace, and the copied files are tested against those versions.doctor,up, andrunfail withUNSUPPORTED. The PR above this one adds a device on a CI runner for those machines.+clerk_testusers. Four specs type a password or the test code424242and are taggedform-entry:custom-flow-sign-in/complete,custom-flow-sign-up/request-code,custom-flow-sign-up/complete, andnative-auth-view/complete. None has a passing run yet.custom-flow-sign-up/request-coderan once and failed on the password field, which iOS covered with its strong-password sheet. test(expo): drive the expo-native fixture from verify launch inputs #10052 now keeps that sheet away, and a run that only focuses the field shows the keyboard, but no run has typed a password since. Each sign-in flow was run up to its code screen with--skip form-entry. Sign-up has no spec that runs without typing.known-bugand skipped unless--include known-bugis passed: the close button of an inlineAuthViewdoes not fireonDismiss.clerk.*accessibility identifiers.down --platform <p>releases that platform's device and stops its Metro, and keeps what the other platform still uses. Their runs should not overlap, for two reasons. Arunthat finds an edited sibling package stops every Metro of the worktree while it rebuilds. And with both platforms running specs on the shared application at once, a ticket sign-in failed withresource_not_foundin two of four tries, once on each platform. That did not happen in any run with one platform at a time, and the cause is not known.SKILL.mdsays to run them one after the other..prettierignoreskips the copied.tsfiles so the pre-commit hook does not reformat them.Checklist
pnpm testruns as expected.pnpm buildruns as expected.Type of change
🤖 Generated with Claude Code