Revyl Cloud Agent Skill
Use this skill whenever you are running as a Cursor Cloud/background agent (headless Linux VM) and working with Revyl. Drive devices with the CLI. The plugin does not start MCP.
Environment Ground Rules (non-negotiable)
- The VM is headless and non-interactive. Never start the
revyl dev TUI.
- Before the first
revyl command, prepend the user PATH directories the
plugin publishes the CLI onto (~/.revyl/bin, then ~/.local/bin if that
path already holds a different CLI):
export PATH="$HOME/.revyl/bin:$HOME/.local/bin:$PATH"
The plugin cache is not on PATH. Do not invoke ${CURSOR_PLUGIN_ROOT} or the
cached binary as the shell command.
- If a real
REVYL_API_KEY is in the environment, run revyl auth persist-cloud-env once so the key never reaches argv. Never print the key.
- If that command reports no key, run
revyl auth login and post the printed approval URL as a clickable markdown link plus the short code, then wait. Optional REVYL_API_KEY as a Runtime Secret is the unattended path, not the only path. Never request or accept the key in chat.
- The VM has no Xcode. Native iOS dev loops must use
revyl dev --remote. Treat Android the same unless the VM demonstrably has the SDK.
Session Lifecycle (devices cost money and outlive the VM)
- Cloud device sessions do not die when the VM exits.
revyl dev stop is mandatory before completion.
- At the start of a run, use
revyl dev list to check for a suitable existing session. Do not stack new devices on stale ones.
Bounded Monitoring (never hang the shell)
- Use
revyl dev status for independent status snapshots.
- After native changes, call
revyl dev rebuild, continue independent work, then revyl dev rebuild --wait with a finite timeout.
Artifacts and Evidence
- Post
viewer_url as a clickable markdown link as soon as revyl dev --detach --json returns.
- Use
revyl device screenshot and revyl device validation as evidence.
- Never claim the Cloud VM opened a browser or the user's local Cursor Desktop.
Auth Bypass and Secrets
- Selected launch configurations apply automatically to fresh raw device, dev, test, and workflow runs. Do not fetch their payloads or repeat them explicitly.
- If the app shows a logged-out state mid-session but the boot token is still valid, run
revyl dev auth refresh --json. If the token itself expired, revyl dev stop then revyl dev so a fresh mint is applied as launch environment.
- Never paste launch-configuration payloads, tokens, or API keys into code, chat, logs, screenshots, or PRs.
Optional custom MCP
Users who add a personal MCP entry with a literal command such as revyl or
/usr/local/bin/revyl can install the MCP dev-loop skill by name. Never
${CURSOR_PLUGIN_ROOT} or ${env:...}. The plugin does not start that server.
Do not call MCP tools unless that skill is installed and the tools are
registered.
Git Hygiene
- Before committing, confirm
.revyl/.gitignore exists (created by revyl init; it keeps dev-session runtime state out of git — only config.yaml and tests/ belong in the repo).
- Never commit artifacts, screenshots, logs, or minted launch-var files.
PR Flow
- If
gh is read-only in this environment, use the ManagePullRequest tool instead.
- The PR body carries the evidence: the
viewer_url, the key inline screenshots, and a one-line summary of what was verified on-device.
1---2name: revyl-cloud-agent3description: Revyl conventions for Cursor Cloud/background agents - CLI install, sign-in, remote builds, artifact evidence, session cleanup, and PR flow.4---56# Revyl Cloud Agent Skill78Use this skill whenever you are running as a Cursor Cloud/background agent (headless Linux VM) and working with Revyl. Drive devices with the CLI. The plugin does not start MCP.910## Environment Ground Rules (non-negotiable)1112- The VM is headless and non-interactive. Never start the `revyl dev` TUI.13- Before the first `revyl` command, prepend the user PATH directories the14 plugin publishes the CLI onto (`~/.revyl/bin`, then `~/.local/bin` if that15 path already holds a different CLI):1617```bash18export PATH="$HOME/.revyl/bin:$HOME/.local/bin:$PATH"19```20The plugin cache is not on PATH. Do not invoke `${CURSOR_PLUGIN_ROOT}` or the21cached binary as the shell command.2223- If a real `REVYL_API_KEY` is in the environment, run `revyl auth persist-cloud-env` once so the key never reaches argv. Never print the key.24- If that command reports no key, run `revyl auth login` and post the printed approval URL as a clickable markdown link plus the short code, then wait. Optional `REVYL_API_KEY` as a Runtime Secret is the unattended path, not the only path. Never request or accept the key in chat.25- **The VM has no Xcode.** Native iOS dev loops must use `revyl dev --remote`. Treat Android the same unless the VM demonstrably has the SDK.2627## Session Lifecycle (devices cost money and outlive the VM)2829- Cloud device sessions do not die when the VM exits. `revyl dev stop` is mandatory before completion.30- At the start of a run, use `revyl dev list` to check for a suitable existing session. Do not stack new devices on stale ones.3132## Bounded Monitoring (never hang the shell)3334- Use `revyl dev status` for independent status snapshots.35- After native changes, call `revyl dev rebuild`, continue independent work, then `revyl dev rebuild --wait` with a finite timeout.3637## Artifacts and Evidence3839- Post `viewer_url` as a clickable markdown link as soon as `revyl dev --detach --json` returns.40- Use `revyl device screenshot` and `revyl device validation` as evidence.41- Never claim the Cloud VM opened a browser or the user's local Cursor Desktop.4243## Auth Bypass and Secrets4445- Selected launch configurations apply automatically to fresh raw device, dev, test, and workflow runs. Do not fetch their payloads or repeat them explicitly.46- If the app shows a logged-out state mid-session but the boot token is still valid, run `revyl dev auth refresh --json`. If the token itself expired, `revyl dev stop` then `revyl dev` so a fresh mint is applied as launch environment.47- Never paste launch-configuration payloads, tokens, or API keys into code, chat, logs, screenshots, or PRs.4849## Optional custom MCP5051Users who add a personal MCP entry with a literal command such as `revyl` or52`/usr/local/bin/revyl` can install the MCP dev-loop skill by name. Never53`${CURSOR_PLUGIN_ROOT}` or `${env:...}`. The plugin does not start that server.54Do not call MCP tools unless that skill is installed and the tools are55registered.5657## Git Hygiene5859- Before committing, confirm `.revyl/.gitignore` exists (created by `revyl init`; it keeps dev-session runtime state out of git — only `config.yaml` and `tests/` belong in the repo).60- Never commit artifacts, screenshots, logs, or minted launch-var files.6162## PR Flow6364- If `gh` is read-only in this environment, use the ManagePullRequest tool instead.65- The PR body carries the evidence: the `viewer_url`, the key inline screenshots, and a one-line summary of what was verified on-device.