
Mobile Demo Record
Run apps/mobile on the iOS simulator against the local stack, drive it with Maestro...
Install
npx skills add ParadevAI/Paradev --skill mobile-demo-record -g -a claude-code -y- Repository
- ParadevAI/Paradev15.8k
- Category
- Mobile
- Updated
- 3d ago
- License
- See repository
- Context cost
- Mediumabout 2,162 tokens
- Runs scripts
- No, instructions only
What it does
Run apps/mobile on the iOS simulator against the local stack, drive it with Maestro, and capture clean screen recordings. Use when asked to record, film, screenshot, or demo the mobile app, or to verify a mobile change in the real app.
Recording the mobile app
There is no CDP for mobile. The equivalent is the iOS simulator, booted headless, driven by
Maestro, recorded with simctl. Nothing here opens a window on the user's display.
Rules
- Real app state only. Record real sessions, real pull requests, real pages. No mockups, no DOM-style fakery. Seed the data the story needs, then delete it.
- No real data in frame. Use the dev account (
admin@local.test) and a demo org with demo projects. Read every frame of the contact sheet for names, emails, repo names, and tokens before sharing anything. - One take per story. A host that has connected once is no longer "never connected", a read page is no longer unread. Reset or reseed state before each take.
- Report what you recorded against: worktree, API port, simulator UDID, app build date.
Stack
Start each in its own Paradev terminal
(superset terminals create --local --workspace $SUPERSET_WORKSPACE_ID --command "...";
without --local the call silently returns nothing). Ports come from .superset/ports.json
and the root .env.
| Service | Command | Trap |
|---|---|---|
| API | cd apps/api && bun run dev | A 500 "password authentication failed" means the worktree's Neon branch was cleaned up. Recreate it and rewrite the "# Workspace Database" lines in .env. |
| Relay | cd apps/relay && while true; do CI=1 WRANGLER_SEND_METRICS=false node_modules/.bin/wrangler dev --port $RELAY_PORT --var NEXT_PUBLIC_API_URL:http://localhost:$API_PORT --local; done | wrangler dev dies with an empty error whenever a client aborts mid-request, which every app relaunch does. Hence the loop. |
| Metro | cd apps/mobile && CI=1 bunx expo start --dev-client --port 8081 | CI=1 disables file watching: restart Metro after code edits. Pre-warm the first bundle by curling the launchAsset.url from curl -H 'expo-platform: ios' localhost:8081, or the dev client times out. |
