Engine Whats New
flutter/flutter
Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).
A skill your agent uses when the user wants Docker-based FRB development or Tart-based iOS Simulator validation.
$ npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install fzyzcjy/flutter_rust_bridge frb-dev-env --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/fzyzcjy/flutter_rust_bridge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/frb-dev-env .claude/skills/frb-dev-env && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "frb-dev-env" agent skill from https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-env into .claude/skills/frb-dev-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frb-dev-env", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-envType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install fzyzcjy/flutter_rust_bridge frb-dev-env --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fzyzcjy/flutter_rust_bridge.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/frb-dev-env .agents/skills/frb-dev-env && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frb-dev-env" agent skill from https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-env into .agents/skills/frb-dev-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frb-dev-env", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install fzyzcjy/flutter_rust_bridge frb-dev-env --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fzyzcjy/flutter_rust_bridge.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/frb-dev-env .cursor/skills/frb-dev-env && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "frb-dev-env" agent skill from https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-env into .cursor/skills/frb-dev-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frb-dev-env", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/fzyzcjy/flutter_rust_bridge.git --path .claude/skills/frb-dev-env--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install fzyzcjy/flutter_rust_bridge frb-dev-env --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fzyzcjy/flutter_rust_bridge.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/frb-dev-env .gemini/skills/frb-dev-env && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "frb-dev-env" agent skill from https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-env into .gemini/skills/frb-dev-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frb-dev-env", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install fzyzcjy/flutter_rust_bridge frb-dev-envInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/fzyzcjy/flutter_rust_bridge.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/frb-dev-env .github/skills/frb-dev-env && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "frb-dev-env" agent skill from https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-env into .github/skills/frb-dev-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frb-dev-env", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install fzyzcjy/flutter_rust_bridge frb-dev-env --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fzyzcjy/flutter_rust_bridge.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/frb-dev-env .opencode/skills/frb-dev-env && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "frb-dev-env" agent skill from https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/.claude/skills/frb-dev-env into .opencode/skills/frb-dev-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frb-dev-env", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
frb-dev-envA skill your agent uses when the user wants Docker-based FRB development or Tart-based iOS Simulator validation.
Frb Dev Env is an agent skill from fzyzcjy/flutter_rust_bridge. Use when the user wants Docker-based FRB development or Tart-based iOS Simulator validation.
Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `frb_dev_env.py` and `test_frb_dev_env.py`).
It sits in Mobile, covering Containers, Cross-platform mobile apps and Mobile testing and debugging. It works with Docker, iOS, Android and macOS. The repository describes itself as: Flutter/Dart <- Rust binding generator, feature-rich, but seamless and simple. The licence is MIT.
Read from SKILL.md and the folder at commit 848e438. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
gitflutterdockeradbbashghxcrunFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
pub.devgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
FRB_WINDOWS_VM_PASSWORDGH_TOKENGITHUB_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Frb Dev Env loads about 5.5k tokens when it runs. Until then it costs about 26 tokens; SKILL.md has 2,336 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from fzyzcjy/flutter_rust_bridge at commit 848e438, republished under its MIT licence (© fzyzcjy). 2,336 words, ~5,476 tokens.
.claude/skills/frb-dev-env/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use this skill before setting up, diagnosing, or running flutter_rust_bridge commands with a container-based development workflow.
Use Docker for normal FRB development checks that fit Linux containers: Rust tests, Dart tests, web tests, code generation, lint, Android build checks that do not need a running emulator, and most ./frb_internal commands. Docker is the default reproducible baseline when local host toolchains are missing or suspected to have drifted.
Use a host Android Emulator for local Android runtime validation when a running Android target is required. Keep FRB, Flutter, Rust, Gradle, and Android build tooling inside Docker. The host runs only the emulator and the Android SDK command-line tools needed to manage it. Docker runs its own ADB server and connects directly to the emulator TCP endpoint so Flutter's VM service forwarding stays inside Docker. See the Android section below.
Use Tart only for checks that need macOS and Xcode, especially iOS Simulator validation. The Tart workflow is intentionally separate from Docker; it gives each worktree a reusable macOS VM cloned from a prepared base VM, then runs FRB commands inside that VM.
Do not use the Tart macOS VM as the Android emulator strategy. macOS Tart guests do not support nested virtualization, so Android emulator runtime coverage needs a host or runner with virtualization support. Android SDK compilation checks can still use Docker when they do not need a running emulator.
./frb_internal over ad hoc direct invocations.frb_generated.*, *.freezed.dart, *.g.dart) as the final fix.Before using this skill's helper or FRB tooling, make sure common local tool locations are in PATH. Codex shells may start with a reduced PATH, which can hide uv, Docker, Dart, Flutter, or Homebrew-installed tools even when they exist on the machine.
Use this prefix when a command reports env: uv: No such file or directory, docker: command not found, dart: command not found, or similar:
export PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"Then retry the same command. Prefer fixing PATH over bypassing the helper, because frb_dev_env.py uses the configured per-worktree container and release credential handling.
Before running tests, lint, code generation, or setup:
git rev-parse --show-toplevel
git status --short
git submodule status --recursiveIf submodules are uninitialized, initialize them locally:
git submodule update --init --recursiveUse Docker for container-based FRB development. Each worktree should have one long-lived local container that is reused for tests, lint, code generation, and setup commands.
Use frb_dev_env.py next to this skill to inspect, create, start, and reuse the per-worktree container. The script derives the container name from the canonical worktree root only:
frb-<worktree-root-sha256-prefix-12>It mounts the canonical worktree root and git common root at their host-like absolute paths, and labels the container with:
frb.dev.repo=flutter_rust_bridge
frb.dev.worktree=<canonical worktree root>
frb.dev.git-common-root=<git common root>
frb.dev.layout-version=3Commands run from the host-like worktree path inside the container. There is intentionally no /workspace alias, because linked git worktrees and submodule gitdir references need the same path shape that they have on the host.
When creating a new per-worktree container, the helper pulls the selected Docker image before docker run. Existing containers are validated and reused without pulling.
Typical usage:
.claude/skills/frb-dev-env/frb_dev_env.py docker info
.claude/skills/frb-dev-env/frb_dev_env.py docker create
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- bash -lc './frb_internal --help'Use docker-run-rm --with-publish-credentials only for release publishing commands that need host credentials. Unlike the normal long-lived development container, this runs a fresh temporary container with docker run --rm, mounts the worktree and git common root, mounts the host credential directories read-only, copies the credential files into temporary container-local homes, checks login status, runs the requested command, then discards the container.
The publish credential flag mounts these host credential sources when present:
GH_CONFIG_DIR or ~/.config/ghGH_TOKEN or GITHUB_TOKEN, forwarded without printing token valuesCARGO_HOME or ~/.cargo~/.gitconfig and ~/.config/gitPUB_CACHE, ~/.pub-cache, ~/.config/dart, or ~/Library/Application Support/dartPublish mode also prepares the container environment used by the release command:
RUSTUP_HOME=/root/.rustup even though HOME is changed to a temporary credential directory.localhost or 127.0.0.1 to host.docker.internal, and forwards common proxy environment variables with the same rewrite. This lets a container use a host proxy such as http://localhost:7897.Run the credential preflight before any irreversible release step:
.claude/skills/frb-dev-env/frb_dev_env.py docker-run-rm --with-publish-credentials -- trueRun release publishing through a temporary publish-credential container. Do not manually add RUSTUP_HOME or proxy environment overrides unless debugging the helper itself:
.claude/skills/frb-dev-env/frb_dev_env.py docker-run-rm --with-publish-credentials -- ./frb_internal releaseThe credential preflight fails before running release commands if host GitHub CLI auth is invalid, Cargo credentials are missing, Dart pub credentials are missing, the image has no usable Cargo toolchain, or the container cannot reach GitHub/crates.io through the configured network path. It then re-checks GitHub CLI auth inside the temporary container and runs gh auth setup-git there so HTTPS git push can use the mounted GitHub CLI auth.
Delete a worktree's Docker container when the worktree is no longer needed, or when local Docker resources are getting crowded:
.claude/skills/frb-dev-env/frb_dev_env.py docker deleteThe delete command validates the container labels before removing it. Use --force only when intentionally removing a mismatched container.
Use the project frb-docker skill for image, devcontainer, and Dockerfile details.
Use this workflow for local Android runtime checks when Docker can build and run the FRB/Flutter command, but the Android target itself must be managed by the host.
The supported Android runtime path is:
host Android Emulator:
host runs the emulator process
Docker runs FRB/Flutter and its own ADB server
Docker ADB connects to host.docker.internal:<emulator-adb-port>Physical Android phones are intentionally out of scope for this helper until that path is manually validated. The host does not need FRB, Flutter, Rust, Cargo, Java, or Gradle for the emulator path.
Use this split for a host Android Emulator:
host:
Android Emulator process
Android SDK command-line tools for SDK packages, AVD creation, emulator start/stop, and host-side inspection
Android SDK root: ~/Library/Android/sdk unless ANDROID_HOME is set
AVD root: ~/.android/avd
Docker container:
FRB checkout
Flutter, Dart, Rust, Cargo, Java, Gradle
Android SDK/NDK/build tools needed for builds
Docker-local ADB server connected to host.docker.internal:<emulator-adb-port>Read the project frb-android-emulator-prepare skill before preparing a host emulator. The host emulator path needs Java, Android SDK command-line tools, emulator packages, a system image, and an AVD in the standard Android Studio host locations.
Print the resolved host Android SDK environment if needed:
.claude/skills/frb-dev-env/frb_dev_env.py android envStart the emulator on the host. Pin the port when you want a stable host serial such as emulator-5554; the paired emulator ADB TCP endpoint is one port higher, such as host.docker.internal:5555:
.claude/skills/frb-dev-env/frb_dev_env.py android emulator --avd FRB_API_35 --port 5554Verify Docker-local ADB can see the host emulator:
.claude/skills/frb-dev-env/frb_dev_env.py docker exec --android-emulator-adb -- adb devices -lRun the FRB/Flutter command against the Docker-visible emulator serial:
.claude/skills/frb-dev-env/frb_dev_env.py docker exec --android-emulator-adb -- \
bash -lc './frb_internal test-flutter-native --package frb_example--flutter_via_create --flutter-test-args "--device-id host.docker.internal:5555"'docker exec --android-emulator-adb first runs adb connect host.docker.internal:5555 inside the container, then runs the requested command with the Android SDK x86_64 runtime library path set. Override the default endpoint with --android-emulator-adb-host, --android-emulator-adb-port, FRB_ANDROID_EMULATOR_ADB_HOST, or FRB_ANDROID_EMULATOR_ADB_PORT.
Do not use a host ADB server for host emulator full Flutter integration tests. Flutter creates dynamic VM service adb forward ports where the ADB server runs. If the ADB server runs on the host, those forwarded ports bind on host 127.0.0.1, but Flutter is running inside Docker and then tries Docker-local 127.0.0.1. This fails with DDS or VM service connection refused errors.
Use --android-emulator-adb so the ADB server and the forwarded VM service port both live inside Docker.
--device-id <serial> through --flutter-test-args.--android-emulator-adb so adb forward creates VM service forwarding inside Docker.Use Tart for iOS Simulator validation when Docker cannot provide the required macOS/Xcode runtime. The script uses one reusable Tart VM per worktree, named from the canonical worktree root:
frb-tart-<worktree-root-sha256-prefix-12>By default, create clones from a prepared local base VM named frb-tart-base. Override it with FRB_TART_BASE_VM or --base-vm.
Read frb-tart-prepare before creating or changing the base VM. The base VM should be built by the checked-in Packer template from a pinned Tart OCI artifact and treated as immutable; do not boot it and manually install tools into it.
For linked git worktrees, the Tart helper shares both the canonical worktree root and the git common root into the VM, then mounts them at host-like absolute paths with mount_virtiofs. This keeps worktree .git files and submodule gitdir references valid inside the VM.
Use plain tart exec for light commands that should see the mounted host checkout exactly, such as git status, flutter --version, xcrun simctl list, and simulator boot commands.
Inspect, create, start, and run light commands in the per-worktree VM:
.claude/skills/frb-dev-env/frb_dev_env.py tart info
.claude/skills/frb-dev-env/frb_dev_env.py tart create
.claude/skills/frb-dev-env/frb_dev_env.py tart start
.claude/skills/frb-dev-env/frb_dev_env.py tart ip --wait 180
.claude/skills/frb-dev-env/frb_dev_env.py tart exec -- sw_versWhen the Tart guest needs outbound network access through the host proxy, make the proxy listen on the host's Tart bridge address and pass that URL through the helper. Enable LAN access for the host proxy, keep the mixed proxy port at 7897, and verify the host listens on *:7897 rather than only 127.0.0.1:7897.
Tart guests normally reach the host on 192.168.64.1, so the usual proxy URL is:
export FRB_TART_HOST_PROXY_URL=http://192.168.64.1:7897
.claude/skills/frb-dev-env/frb_dev_env.py tart exec -- curl -I https://pub.devYou can also pass the proxy for a single command:
.claude/skills/frb-dev-env/frb_dev_env.py tart exec \
--host-proxy-url http://192.168.64.1:7897 \
-- curl -I https://pub.devDelete the worktree VM when it is no longer needed:
.claude/skills/frb-dev-env/frb_dev_env.py tart stop
.claude/skills/frb-dev-env/frb_dev_env.py tart deleteFor heavy iOS build/test commands, prefer uploading the current worktree to a VM-local copy and running there. This avoids writing Xcode build artifacts through the virtiofs host mount:
.claude/skills/frb-dev-env/frb_dev_env.py tart upload
.claude/skills/frb-dev-env/frb_dev_env.py tart exec --sync-code -- ./frb_internal test-flutter-native --flutter-test-args '--device-id <UDID>' --package <package>tart upload and tart exec --sync-code both first ensure the worktree VM is running and the host-like worktree mount exists. They then run rsync inside the VM from the mounted host worktree to a VM-local copy under /Users/admin/frb-dev-env-local-copies/<worktree-hash>. The upload excludes .git, .dart_tool, build, target, .idea, and .vscode. It does not delete existing files in the VM-local copy, so build caches survive repeated runs.
Commands run with --sync-code start from the VM-local uploaded copy, not from the host-mounted path.
Examples:
# Show the VM-local path after uploading the current worktree.
.claude/skills/frb-dev-env/frb_dev_env.py tart upload
# Run a heavy command from the uploaded VM-local copy.
.claude/skills/frb-dev-env/frb_dev_env.py tart exec --sync-code -- ./frb_internal test-flutter-native --package frb_example--flutter_via_create --flutter-test-args '--device-id <UDID>'Before running iOS Simulator integration tests, prepare the VM Flutter SDK once per VM or after replacing Flutter. This applies the runtime portion of https://github.com/flutter/flutter/pull/187643.patch as an idempotent Flutter tool workaround for an iOS simulator VM Service discovery race where simctl launch can emit the Dart VM Service log before Flutter's simctl log stream listener is ready.
The preparation command also rebuilds flutter_tools.snapshot:
.claude/skills/frb-dev-env/frb_dev_env.py tart prepare-ios-integration-testUse the environment shown in the test command below for the integration test. FLUTTER_GIT_URL keeps flutter doctor and Flutter metadata consistent when the VM uses a local Flutter checkout. FRB_SKIP_FLUTTER_DOCTOR=1 skips the FRB wrapper's preflight doctor because the simulator integration test itself is the validation target and doctor can hang after printing device checks in Tart.
Run iOS Simulator tests by starting the worktree VM, preparing the VM Flutter SDK, choosing and booting an iOS simulator inside the VM, then running the existing FRB test command from the VM-local uploaded copy:
.claude/skills/frb-dev-env/frb_dev_env.py tart start --wait 300
.claude/skills/frb-dev-env/frb_dev_env.py tart prepare-ios-integration-test
.claude/skills/frb-dev-env/frb_dev_env.py tart exec -- xcrun simctl list devices available
.claude/skills/frb-dev-env/frb_dev_env.py tart exec -- xcrun simctl boot <UDID>
.claude/skills/frb-dev-env/frb_dev_env.py tart exec -- xcrun simctl bootstatus <UDID> -b
.claude/skills/frb-dev-env/frb_dev_env.py tart exec --sync-code -- bash -lc 'export FLUTTER_GIT_URL=file:///Users/admin/flutter; export FRB_SKIP_FLUTTER_DOCTOR=1; ./frb_internal test-flutter-native --package frb_example/flutter_via_create --flutter-test-args "--device-id <UDID>"'For example, when an iOS 18.1 iPhone 16 Pro Max simulator with UDID 826DC3E8-2073-42A9-A6DB-05C1926DC82A is available:
.claude/skills/frb-dev-env/frb_dev_env.py tart exec --sync-code -- bash -lc 'export FLUTTER_GIT_URL=file:///Users/admin/flutter; export FRB_SKIP_FLUTTER_DOCTOR=1; ./frb_internal test-flutter-native --package frb_example/flutter_via_create --flutter-test-args "--device-id 826DC3E8-2073-42A9-A6DB-05C1926DC82A"'Use VMware Fusion + Vagrant for local Windows desktop validation when Docker, Tart, and the Android Emulator coverage are not enough. This workflow targets Apple Silicon macOS hosts running Windows 11 Arm in VMware Fusion.
Read tools/vmware_windows/README.md for the detailed Packer, Vagrant, VMware Fusion, proxy, storage, host-installation, daily-use, and troubleshooting instructions. The README is the source of truth for the Windows VM workflow. Read frb-vmware-windows-prepare before preparing or rebuilding the reusable Packer-built base box.
Configure a per-user VM root before creating or building VMs. The helper reads
~/.config/flutter_rust_bridge/vmware_windows.json by default, and environment variables such as
FRB_WINDOWS_VM_ROOT override the config. The helper derives all heavy paths from that configured
root, including Vagrant home, boxes, per-worktree project directories, Packer cache/output, logs,
and VM bundles. Check it before starting a VM:
tools/vmware_windows/frb_vmware_windows_env.py infoThe helper uses only the Python standard library and refuses to create directories under /Volumes/<name>/... unless that volume is mounted. This keeps first-run helper checks independent from uv/pip and avoids accidentally writing VM files to the internal disk when an external drive is absent.
If Windows VM downloads and Packer host-side network operations need a proxy, configure it in the user config or with:
export FRB_WINDOWS_HOST_PROXY_URL=http://localhost:PORTLeave it unset when direct network access is preferred. If guest-side provision scripts need a
proxy, set FRB_WINDOWS_GUEST_PROXY_URL to an address reachable from inside the Windows guest.
For real Packer builds, provide the Windows ISO SHA-256 checksum with FRB_WINDOWS_ISO_CHECKSUM=sha256:<digest> or an .iso.sha256 file next to the ISO. The helper uses a placeholder checksum only for packer-build --validate.
For the initial base-image build on a developer Mac, prefer the ordinary-Terminal wrapper:
tools/vmware_windows/run_packer_build.zsh \
--iso /path/to/frb-windows-vmware/downloads/iso/Windows11_Arm64.iso \
--add-boxThe wrapper applies the configured host proxy when present, runs preflight checks, regenerates the
UEFI autounattend ISO, writes logs under the configured VM root, monitors / and the VM root for the
100GB free-space threshold, and can import the produced Vagrant box. Use --prepare-only when you
want to validate ISO remastering before starting VMware.
Run from the repository root:
tools/vmware_windows/frb_vmware_windows_env.py info
tools/vmware_windows/frb_vmware_windows_env.py start
tools/vmware_windows/frb_vmware_windows_env.py upload
tools/vmware_windows/frb_vmware_windows_env.py exec -- powershell -NoProfile -Command "cd C:\frb\worktree; flutter --version"
tools/vmware_windows/frb_vmware_windows_env.py stopupload copies the host checkout into a VM-local directory before heavy builds. Do not compile from a VMware shared folder because shared folders are slower for many small files and can distort build behavior.
After the VM is running and code is uploaded:
tools/vmware_windows/frb_vmware_windows_env.py test-flutter-windows \
--package frb_example/flutter_via_createThe command runs inside the guest and should use the VM-local uploaded checkout. Capture logs under the external root for audit.
Do not put guest passwords in the repository. Use FRB_WINDOWS_VM_USERNAME, FRB_WINDOWS_VM_PASSWORD, or ~/.secrets/FRB_WINDOWS_VM_PASSWORD.
Stop the per-worktree VM when it is not needed:
tools/vmware_windows/frb_vmware_windows_env.py stopDelete disposable per-worktree VMs only when intentionally reclaiming space:
tools/vmware_windows/frb_vmware_windows_env.py destroyAfter applying this environment policy, also read the relevant project-level frb-* skills for the actual task, such as code generation, tests, lint, Docker details, CI triage, or PR preparation.
© fzyzcjy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in .claude/skills/frb-dev-env of fzyzcjy/flutter_rust_bridge.
Open the folder on GitHubat commit 848e438
Frb Dev Env next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Frb Dev Env this skillfzyzcjy/flutter_rust_bridge | 5.4k | — | ~5.5k | Automated safety check: Pass | MIT | |
| Engine Whats Newflutter/flutter | 179k | — | ~978 | Automated safety check: Pass | BSD-3-Clause | |
| Maui AI DebuggingRedth/Maui.Gtk | 101 | — | ~4.1k | Automated safety check: Pass | MIT | |
| flutter_soloud Setupalnitak/flutter_soloud | 424 | — | ~3.6k | Automated safety check: Notes | MIT | |
| Fkit SetupJoker-x-dev/FlutterKit | 127 | — | ~720 | Automated safety check: Pass | MIT | |
| RunQuisApp/flutter_contacts | 111 | — | ~252 | Automated safety check: Notes | MIT |
flutter/flutter
Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).
Redth/Maui.Gtk
End-to-end workflow for building, deploying, inspecting, and debugging .NET MAUI and MAUI Blazor Hybrid apps as an AI agent.
alnitak/flutter_soloud
Walks through adding the flutter_soloud audio engine to a Flutter app, with per-platform setup, initialization, binary-size and logging options, and output device switching.
Joker-x-dev/FlutterKit
将 FlutterKit 脚手架初始化为新的应用项目,统一修改应用显示名称、Dart 包名、Android Application ID、Apple Bundle ID、Linux/Windows 标识、Web 名称、运行时品牌文案、Logo、桌面图标和启动页。用户拉取模板后要求改名、改包名、替换品牌资源或完成首次项目配置时使用。
QuisApp/flutter_contacts
Run the example app on physical devices. An agent skill from QuisApp/flutter_contacts.
btwld/superdeck
Embeds native Android, iOS, or macOS views into a Flutter app.
fzyzcjy/flutter_rust_bridge
Add or reconcile flutterrustbridge contributors through all-contributors PRs.
fzyzcjy/flutter_rust_bridge
A skill your agent uses when preparing, installing, diagnosing, or explaining the host Android Emulator environment for flutterrustbridge local runtime validation, including Android SDK command-line…
fzyzcjy/flutter_rust_bridge
Develop or update CargoKit for flutterrustbridge. An agent skill from fzyzcjy/flutter_rust_bridge.
fzyzcjy/flutter_rust_bridge
A skill your agent uses when classifying a flutterrustbridge branch or PR diff into test and non-test changes, including colocated Rust test modules.
fzyzcjy/flutter_rust_bridge
A skill your agent uses when running focused flutterrustbridge GitHub Actions CI via cifilter, adding/removing the ci-manual-dispatch PR label, choosing exact CI jobs or matrix entries, documenting…
fzyzcjy/flutter_rust_bridge
A skill your agent uses when modifying Rust APIs, codegen, generated examples, or platform scaffolds in flutterrustbridge to select generation commands and preserve source-of-truth and convergence…
Categories
A skill your agent uses when the user wants Docker-based FRB development or Tart-based iOS Simulator validation. Frb Dev Env is an agent skill from fzyzcjy/flutter_rust_bridge. Use when the user wants Docker-based FRB development or Tart-based iOS Simulator validation.
Frb Dev Env fits situations like: the user wants Docker-based FRB development; tart-based iOS Simulator validation.
Run `npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a claude-code`. Or copy the skill folder (.claude/skills/frb-dev-env in fzyzcjy/flutter_rust_bridge) into .claude/skills/frb-dev-env in your project. Claude Code loads it when a task matches its description.
Run `npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a codex`. Or copy the skill folder (.claude/skills/frb-dev-env in fzyzcjy/flutter_rust_bridge) into .agents/skills/frb-dev-env in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fzyzcjy/flutter_rust_bridge --skill frb-dev-env -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frb-dev-env, .gemini/skills/frb-dev-env, .github/skills/frb-dev-env and .opencode/skills/frb-dev-env in your project.
Going by SKILL.md and its folder, Frb Dev Env needs Python for the scripts in its folder, the command-line tools its instructions call (git, flutter, docker, adb, bash and gh) and credentials named FRB_WINDOWS_VM_PASSWORD, GH_TOKEN and GITHUB_TOKEN. Our summary lists: Python 3; Docker; A credential in GITHUB_TOKEN.
SKILL.md names 2 domains. In commands or code: pub.dev and github.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Frb Dev Env is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Frb Dev Env: Engine Whats New (flutter/flutter, 179k stars), Maui AI Debugging (Redth/Maui.Gtk, 101 stars), flutter_soloud Setup (alnitak/flutter_soloud, 424 stars) and Fkit Setup (Joker-x-dev/FlutterKit, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
fzyzcjy (a GitHub user) maintains it in fzyzcjy/flutter_rust_bridge, which has 5,442 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 7, 2026.
Source: fzyzcjy/flutter_rust_bridge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.