# IOS Revyl Pr Proof

> Use for any iOS change in this starter. Trigger for files under ios/ and when the user says revyl, preview, device, verify, screenshot, design QA, proof, PR proof, or asks to validate the Swift demo on a Revyl device.

- Skill: `revylai/ios-revyl-pr-proof` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add revylai/ios-revyl-pr-proof`
- Raw SKILL.md: https://api.skillmd.com/api/skills/revylai/ios-revyl-pr-proof/raw
- Safety review: WARNING
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: revylai (https://skillmd.com/u/revylai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/revylai/ios-revyl-pr-proof

---


# iOS Revyl PR Proof

Use this skill to prove changes to the Swift demo on a real Revyl cloud iOS simulator.

## Workflow

1. Inspect the Swift change and run local checks when useful.
2. Ensure `revyl` is installed, current enough for `build remote`, and authenticated:

   ```bash
   if ! command -v revyl >/dev/null 2>&1 || ! revyl build remote --help >/dev/null 2>&1; then
     REVYL_NO_MODIFY_PATH=1 sh -c 'curl -fsSL https://revyl.com/install.sh | sh'
     export PATH="$HOME/.revyl/bin:$PATH"
   fi
   revyl --version
   revyl build remote --help >/dev/null
   revyl auth status
   revyl config show --json
   ```

3. Refresh the demo launch vars:

   ```bash
   node .agents/skills/ios-revyl-pr-proof/scripts/ensure-revyl-ios-auth-launch-vars.mjs --json
   ```

4. Build with Revyl remote build:

   ```bash
   cd ios && revyl build remote --platform ios --json
   ```

5. Start a fresh device from the returned build version:

   ```bash
   revyl device start --platform ios \
     --build-version-id <build-version-id> \
     --launch-var REVYL_SWIFT_DEMO_TEST_LOGIN_TOKEN \
     --launch-var REVYL_SWIFT_DEMO_TEST_ACCESS_TOKEN \
     --launch-var REVYL_SWIFT_DEMO_TEST_REFRESH_TOKEN \
     --launch-var REVYL_SWIFT_DEMO_TEST_UID_TOKEN \
     --timeout 900 --open=false --json
   ```

6. As soon as the device returns a viewer URL, update the PR with the live proof block from `references/pr-proof.md`. In Cursor Cloud Agent, use `ManagePullRequest`, not `gh pr edit`.
7. Validate the exact starter outcome:

   ```bash
   revyl device validation -s 0 "The Revyl Swift Demo shows an authenticated cloud-agent proof screen" --json
   ```

8. Fetch the report:

   ```bash
   revyl device report --session-id <session-id> --json
   ```

9. Replace the live PR block with final video or screenshot proof.

## Failure Gates

Fail the proof, fix the issue, and rerun a fresh session when:

- `launch_env_var_keys` is missing any of the four `REVYL_SWIFT_DEMO_TEST_*` keys.
- The app shows "Signed out demo state" or "Launch vars rejected".
- The focused validation returns false.
- No usable session id, viewer URL, report, screenshot, or video is available.

## Backup Build

Use the GitHub Actions upload only when Revyl remote build capacity is unavailable:

```bash
revyl build list --app <REVYL_APP_ID> --json
```

Pick the newest build for the PR or commit, then start the device with the same four launch vars. Always state when proof used the backup CI build rather than `revyl build remote`.

## Guardrails

- Never paste raw launch-var values in docs, PR bodies, logs, or screenshots.
- Mention only launch-var key names in PR proof.
- Do not use `revyl device extract` for normal proof. Use one focused validation and screenshots/report evidence.
- The demo JWTs are not real auth. They exist only to make expiry and refresh behavior easy to see in the starter.

