Use this skill for the full flow:
- Start dev loop equivalent.
- Execute screenshot-observe-action cycles.
Default Operating Mode
Always prefer dev-loop flow before plain device-only flows:
- Call
start_dev_loop. - On success, share
viewer_urlas a clickable link and confirm the session is active. When the inline Revyl app exposes Open live device, the user may use it to hand the URL to the host browser; the link remains the portable fallback. - On a setup failure, follow the single structured
remediationaction and retrystart_dev_looponce. - Call
screenshot()and begin interaction.
Fallback to plain device session only when dev loop is unavailable.
Execution Guardrails
- First tool call must be
start_dev_loop. - Do not call listing tools unless the user explicitly asks.
- Treat
next_stepsas advisory only. - Re-anchor with
screenshot()before state-dependent actions. - Express device actions through the current natural-language schema, for example
interact(task="Tap the Sign In button"). Do not calculate or supply coordinates. - Use
setup_statusonly when the user explicitly asks for setup diagnostics. - Never claim that a Cloud Agent opened the viewer on the user's local computer. Cloud tools run on the remote VM; the inline open control and clickable URL are client-side handoffs.
Setup Recovery
Handle setup outcomes as bounded recovery steps:
auth_required/auth_expired/auth_invalid: runremediation.commandonce, then retrystart_dev_loop.cloud_secret_required: tell the user to addremediation.env_nameas a Runtime Secret and start a new Cloud session. Do not retry whenrestart_requiredis true.project_not_initialized: run the exact command fromremediation.commandonce with the working directory set toremediation.working_directory, then retrystart_dev_loop. The command ends withinit --non-interactive; its executable may be the plugin-pinned runtime rather thanrevylonPATH. Do not rewrite it, add--force, or initialize silently.project_ambiguous: inspectremediation.candidate_roots, select the intended project from repository context, and retry with that exact root asproject_dir. If the intended project is unclear, ask the user to choose. Do not initialize another project or retry without an explicitproject_dir.project_invalid: reportremediation.config_pathand wait for it to be repaired before retrying.
After one remediation and one retry, stop and report any remaining failure. Do not enter a setup loop.
Interaction Loop
For each iteration:
screenshot()- State visible UI in one short line.
- Take one best action with
interact(task="..."). screenshot()to verify.- Repeat.
Short deterministic burst allowance:
- Up to two actions before verification for obvious two-step entry flows.