Revyl Cloud App logo

Revyl Cloud App

Organization
RevylAI
revyl-cloud-app

Create or edit a mobile app in ChatGPT Work's cloud coding workspace, build it with revyl build --remote, run cloud tests and device verification, and map it with revyl explore. Also use for other explicitly requested Revyl CLI operations through the bundled launcher.

Overview

PublisherRevylAI
Repositoryrevyl-cli
Skill namerevyl-cloud-app
Stars
522
Forks
25
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by RevylAI on GitHub. Read the source before you install it.

Installation

Install the Revyl Cloud App AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/RevylAI/revyl-cli/tree/main/plugins/revyl-openai/skills/revyl-cloud-app
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/RevylAI/revyl-cli.git /tmp/revyl-cli
mkdir -p .claude/skills
cp -r /tmp/revyl-cli/plugins/revyl-openai/skills/revyl-cloud-app .claude/skills/revyl-cloud-app
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Revyl Cloud App in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Revyl Cloud App on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Revyl Cloud App is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Revyl Cloud App

Use ChatGPT Work or another shell-capable coding host for source work. Revyl provides remote builds, devices, tests, and exploration; installing this plugin does not create a coding workspace or grant repository access. Confirm that the host exposes a writable workspace, shell, outbound network access, and a way to inspect images. If any required capability is missing, report it and ask the user to enable the cloud coding workspace. Do not substitute an MCP server's filesystem for the user's workspace or send arbitrary shell commands to MCP. An unavailable embedded viewer does not block authorized CLI work.

For an existing development loop, use revyl-codex-dev-loop. For proof of an existing CI artifact, use revyl-codex-proof-ci; do not rebuild it. For viewing only, use revyl-workspace; do not start a build or exploration just to open Atlas. This workflow owns standalone builds, verification sessions, tests, and exploration runs, and must not duplicate another workflow's resources.

Resolve the full CLI and authenticate

Resolve this skill's absolute directory before changing to the app directory:

sh
SKILL_DIR="<absolute directory containing this SKILL.md>"
LAUNCHER="$(cd "$SKILL_DIR/../../scripts" && pwd)/launch-revyl"
"$LAUNCHER" --version
"$LAUNCHER" auth status

On Windows, use the absolute ../../scripts/launch-revyl.cmd path instead. Invoke this launcher for every Revyl command, never revyl from PATH or a different installation. It exposes the complete pinned CLI, not a fixed command subset. Discover other requested operations through "$LAUNCHER" <command> --help and "$LAUNCHER" schema --format llm. Use that runtime's contract, not flags from newer documentation. A missing command requires a reviewed runtime update, not an unpinned download.

When unauthenticated, run "$LAUNCHER" auth login, share its normal approval URL, and wait for the user to approve. Never ask for credentials in chat or copy them from the MCP connection. Never invoke credential-provisioning, secret-bridge, or auth-bypass commands. CLI and embedded-browser sign-in are separate; both must authorize the same app and session before embedding.

Establish source, target, and spending scope

Confirm the requested app, target environment, platform, and authorized work. Authorization to edit source is not authorization to publish it, create remote apps/tests, run paid builds/devices/explorers, or change organization settings. Agree on build attempts, test runs, explorer count, and duration before paid work; do not repeatedly retry a failed build or increase concurrency without approval. One end-to-end approval can cover the explicitly named operations.

For a new app, create its source in the cloud workspace using the requested framework and its supported scaffolding tools. For an existing app, use the authorized checkout. Inspect repository instructions and run relevant local checks. Preserve unrelated files. Establish a Git worktree when required by the build contract, but do not commit or push without authorization.

Run from the app directory containing .revyl/config.yaml. If absent and setup is authorized, run "$LAUNCHER" init -y, inspect the detected recipe, and configure its exact profile, platform, build steps, and output for the actual framework. Do not overwrite an existing config with --force. Resolve the app using "$LAUNCHER" app list --json. Only when explicitly authorized to create a new remote app, use "$LAUNCHER" app create --name <name> --platform <ios-or-android> --json. Use its returned app ID in the selected recipe, then run "$LAUNCHER" config validate. Do not publish configuration with config push unless separately requested. Keep secrets out of source, config, argv, and evidence; use established encrypted build-secret and launch-variable references.

Build remotely, then verify that exact artifact

Read build --help from the pinned runtime, then submit one authorized build:

sh
"$LAUNCHER" build --remote --profile <profile> --platform <ios-or-android> \
  --timeout 1800 --detach --no-set-current --json
"$LAUNCHER" build status <returned-build-job-id> --json

Use the agreed timeout if different. --remote moves compilation to Revyl, but the CLI still needs the source checkout and recipe to submit the build. Retain the returned job ID and source revision/worktree state. Poll that job at intervals of at least five seconds, with a total deadline matching the build timeout plus a bounded completion allowance. A queued job is not a successful build. Read its terminal result and artifact ID; never substitute the app's latest build. Do not automatically retry an ambiguous submission. On failure, inspect the reported logs before making an authorized correction. On cancellation or deadline, cancel only the owned job with "$LAUNCHER" build cancel <job-id> --json and check its final status.

Start verification on the successful build, without changing the app's current version or opening a browser from the shell:

sh
"$LAUNCHER" device start --build-version-id <returned-build-version-id> \
  --platform <ios-or-android> --timeout 900 --open=false --json
"$LAUNCHER" device screenshot -s <returned-session-id> --out <image-path>
"$LAUNCHER" device validation -s <returned-session-id> "<expected visible behavior>" --json
"$LAUNCHER" device report -s <returned-session-id> --json

Return the viewer URL promptly. If open_revyl_workspace is available, request this same session with view="device" and its session ID; do not start another session through MCP. Present its returned chatgpt_url, when available, as an Open in ChatGPT link. The user clicks it to navigate the persistent panel; a successful tool call is not proof that the viewer is visible or playing. Discover device instruction, interaction, and extraction commands through their help as needed. Pass the returned server-issued session ID to every session-scoped command. Open screenshots before describing them; missing or false validation results are not a pass.

Always stop the owned verification session with "$LAUNCHER" device stop -s <session-id> --json, including after failure. Confirm termination using device list --json and session status as needed. Never use --all. Report pending cleanup rather than claiming release.

Create and run reproducible tests when requested

Use the pinned schema --format llm to author supported YAML, not guessed blocks. With permission to create a persisted test, use "$LAUNCHER" test create --from-file <yaml-path> --no-open --json; inspect test create --help for app/platform association. Do not use --force to replace another test. Run an authorized existing or newly created test against the same successful artifact:

sh
"$LAUNCHER" test run <test-id> --build-id <build-version-id> --no-wait --no-open --json
"$LAUNCHER" test report <returned-task-id> --json

Poll the returned task's report, not test status <test-id>: that command selects the latest execution, which can belong to somebody else. Use a bounded deadline and cancel the owned task with test cancel <task-id> if needed. Require terminal test results; a successful submission is not a passed test. Do not use --build here: the artifact was already built remotely. Do not delete persisted tests or publish/share reports as automatic cleanup.

Explore and map the same build

Exploration launches its own cloud agents/devices and needs explicit spending authorization. Release the standalone verification session before launching explorers unless overlapping capacity was explicitly approved.

sh
"$LAUNCHER" explore run <app-id> --build-id <build-version-id> \
  --explorers <approved-count> --max-duration <approved-duration> \
  --no-wait --json
"$LAUNCHER" explore status <returned-run-id> --json

Do not silently use the default three explorers. Supply authentication through stored launch-variable references; do not put credentials in instructions or --auth-instructions. Poll at least five seconds apart within an agreed total deadline that includes Atlas processing. Inspect both execution and Atlas status, actual explorer count, findings, and the returned report URL. Completed device exploration is not proof that Atlas processing completed. If the user cancels or the deadline expires, use "$LAUNCHER" explore cancel <run-id> --json and confirm terminal status.

When mapping is complete, use open_revyl_workspace(view="atlas", app_id=...) if available and present its chatgpt_url when returned. Otherwise return the authenticated report URL from the CLI; never invent a tool, claim an iframe loaded, or publish a share to bypass access controls. A failed exploration can still leave partial evidence; label it accurately instead of claiming a complete map.

Other CLI operations and handoff

The full CLI is available through the launcher in this workspace. Apply the same authentication, environment, authorization, and bounded-operation rules to every discovered command. Availability does not authorize destructive, administrative, sharing, release, or secret-management operations. Do not expose an unrestricted shared-server shell as an alternative.

Report source changes and where they are saved, build job/artifact IDs, actual test and validation results, exploration/Atlas outcomes, and cleanup status. Distinguish work not run from failures. Keep credentials, signed media URLs, customer content, and private logs out of public artifacts. Only publish source or evidence through an explicitly authorized destination.

Frequently asked questions

What does the Revyl Cloud App AI skill do?

Create or edit a mobile app in ChatGPT Work's cloud coding workspace, build it with revyl build --remote, run cloud tests and device verification, and map it with revyl explore. Also use for other explicitly requested Revyl CLI operations through the bundled launcher.

Why use Revyl Cloud App on TypingMind?

Because you install it once and use it with any model. Revyl Cloud App is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Revyl Cloud App in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/RevylAI/revyl-cli/tree/main/plugins/revyl-openai/skills/revyl-cloud-app. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Revyl Cloud App?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Revyl Cloud App?

As many as you like. As long as a model supports skills, you can use Revyl Cloud App with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Revyl Cloud App AI skill free?

It is published on GitHub by RevylAI. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇