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 working with Trailblaze — natural-language device control for coding agents across iOS, Android, and web, with replayable .trail.yaml files as the artifact.
$ npx skills add block/trailblaze --skill trailblaze -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install block/trailblaze trailblaze --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/block/trailblaze.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/trailblaze .claude/skills/trailblaze && 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 "trailblaze" agent skill from https://github.com/block/trailblaze/tree/main/skills/trailblaze into .claude/skills/trailblaze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trailblaze", 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/block/trailblaze/tree/main/skills/trailblazeType 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 block/trailblaze --skill trailblaze -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install block/trailblaze trailblaze --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/block/trailblaze.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/trailblaze .agents/skills/trailblaze && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "trailblaze" agent skill from https://github.com/block/trailblaze/tree/main/skills/trailblaze into .agents/skills/trailblaze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trailblaze", 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 block/trailblaze --skill trailblaze -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install block/trailblaze trailblaze --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/block/trailblaze.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/trailblaze .cursor/skills/trailblaze && 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 "trailblaze" agent skill from https://github.com/block/trailblaze/tree/main/skills/trailblaze into .cursor/skills/trailblaze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trailblaze", 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/block/trailblaze.git --path skills/trailblaze--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 block/trailblaze --skill trailblaze -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install block/trailblaze trailblaze --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/block/trailblaze.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/trailblaze .gemini/skills/trailblaze && 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 "trailblaze" agent skill from https://github.com/block/trailblaze/tree/main/skills/trailblaze into .gemini/skills/trailblaze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trailblaze", 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 block/trailblaze trailblazeInstalls 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 block/trailblaze --skill trailblaze -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/block/trailblaze.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/trailblaze .github/skills/trailblaze && 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 "trailblaze" agent skill from https://github.com/block/trailblaze/tree/main/skills/trailblaze into .github/skills/trailblaze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trailblaze", 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 block/trailblaze --skill trailblaze -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install block/trailblaze trailblaze --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/block/trailblaze.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/trailblaze .opencode/skills/trailblaze && 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 "trailblaze" agent skill from https://github.com/block/trailblaze/tree/main/skills/trailblaze into .opencode/skills/trailblaze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trailblaze", 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.
trailblazeA skill your agent uses when working with Trailblaze — natural-language device control for coding agents across iOS, Android, and web, with replayable .trail.yaml files as the artifact.
Trailblaze is an agent skill from block/trailblaze, published by the product's own GitHub organization. Use when working with Trailblaze — natural-language device control for coding agents across iOS, Android, and web, with replayable .trail.yaml files as the artifact. Trigger on mentions of Trailblaze, the trailblaze CLI, .trail.yaml files, trailmaps, waypoints, or requests to drive / author / debug / run UI tests on iOS / Android / web — including authoring a custom typed scripted tool, composing an agent's tool surface, or writing a trailmap.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `SETUP.md`, `references/compose-agent-surface.md` and `references/drive-device.md`).
It sits in Mobile. It works with Android and iOS. The repository describes itself as: 🥾 AI-Driven UI Testing Framework with Recorded Trails. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ec49f40. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Trailblaze loads about 3.4k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 116 tokens; SKILL.md has 1,833 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 block/trailblaze at commit ec49f40, republished under its Apache-2.0 licence (© block). 1,833 words, ~3,403 tokens.
.claude/skills/trailblaze/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Natural-language device control for your coding agent — across iOS, Android, and web. Every session is a replayable trail you can run as a test.
Trailblaze gives your coding agent a single, typed, replayable way to
drive any device. Built-in primitives plus your own typed tools, with
a natural-language source of truth that travels across platforms.
Whether you're exploring an app, automating a workflow, or building
a test suite, the artifact is the same: a portable .trail.yaml whose
recorded steps your CI can replay deterministically with no LLM at
runtime.
Composable, replayable device control for your agent. Your
coding agent drives the device through Trailblaze's primitives —
plus first-class commands of your own, like login or addToCart,
defined in a typed language with type-safe bindings. Each step
records its objective. The resulting .trail.yaml is both a
natural-language source of truth — what you're testing or doing —
and a deterministic execution artifact — how it runs. One trail
can describe a flow across iOS, Android, and web — same
natural-language steps, platform-specific actions or tools captured
for each. Agents read the what; the framework handles the how.
A cross-platform Trace Viewer. Open any session — yours or your agent's — and inspect view hierarchy, screenshots, video, and platform logs at every step. When you want a different selector than the one Trailblaze auto-picked for a step, the viewer lets you choose from generated alternatives computed against the same captured hierarchy — human judgment, no re-recording. Same viewer for iOS, Android, and web.
Most multi-platform testing tools expose the intersection of what
iOS, Android, and web can do — a generic API that maps onto all
three, at the cost of losing platform-specific capability. Trailblaze
takes the opposite approach: full-fidelity native semantic surfaces,
OS-native primitives, and typed tool sets composed per
(target, platform). Your agent works against each platform's
native UI tree — the accessibility tree on Android, native UI
semantics on iOS, the DOM on web — rather than a flattened
cross-platform abstraction.
The agent picks elements semantically — "the Sign in button" — from the native hierarchy. Trailblaze computes the platform-specific selectors behind the scenes. The natural-language test stays the same; the execution uses each platform's full power.
This only works because an agent is driving. Exposing full native fidelity to a human is overwhelming — twenty platform-specific selector strategies per element is no one's idea of a good testing SDK. Exposing it to an LLM is the point. The agent handles the complexity; you get the expressive power of native automation with the consistency of a single natural-language test.
Before you drive anything, know the two routing keys — they're the foundation every rung's commands build on:
<platform>/<id> (e.g. android/emulator-5554,
ios/E5BDD6FB-…, web/playwright-native). Most commands accept
either the full <platform>/<id> form or just <platform> when
only one device of that platform exists. trailblaze device list
prints each connected device embedded in a copy/pastable example,
like trailblaze snapshot --device android/emulator-5554 (…) — …,
so the right --device argument is ready to paste into subsequent
commands.<your-app-target>, or any app-specific trailmap your team ships)
exposes its custom typed tools through that target. default is
the universal target — what you use when you're not exercising a
specific app's vocabulary. Many commands accept --target <name>
(or -t <name>) in addition to --device. If a target is
configured at the workspace level (in trailblaze.yaml), commands
pick it up automatically; you only pass --target explicitly when
you want to override or when running against multiple targets in
parallel.Trailblaze is structured as an adoption ladder. Tools you add to your agent's surface become first-class commands the next time your agent drives a device. Most teams get value at rung 1, climb to rung 2 once a flow is worth committing, and reach rung 3 when their agent has a real app vocabulary to compose. Each rung has its own deep reference; load whichever matches the task at hand.
<!--
Maintainer note. Adding a new rung is "drop a `references/<name>.md`
+ add the bullet + `→ Load` line below"; the base file is sized to
comfortably hold ~5 rungs of this shape (~280 lines). If we add a
4th or 5th rung, this routing section stays the dominant page, the
adoption-ladder framing still reads. Beyond ~6 rungs the "three
rungs" heading becomes stale and the routing section dominates —
at that point split this base into adoption-overview + a
separate rung-routing doc rather than letting it sprawl.
-->
Drive a device. Point your coding agent at the Trailblaze CLI. Natural-language device control across iOS, Android, and web — through built-in primitives plus any custom tools your team has shipped.
→ Load references/drive-device.md
when the task is to explore an app, take a UI action, see what's on
screen, or discover the verbs available on a connected device.
Covers device list, snapshot, tool, toolbox, the basic loop,
and recoverable failure modes.
Save and replay. Any session becomes a .trail.yaml — replay
it ad-hoc, commit it to your repo as a CI regression test, or open
it in the Trace Viewer to see exactly what happened. Same artifact,
three uses, no LLM at replay.
→ Load references/save-and-replay.md
when the task is to save a trail, replay one, run a suite, inspect
a session (HTML report or desktop trace viewer), or look up the
results of a past CI run. Covers session save, run (and its
--self-heal / --memory / --secret flags), report, app,
and results show.
→ Load references/trailheads.md
when a trail needs a starting point — every re-runnable trail
opens with a trailhead that puts the app in a known state. Covers
picking one, writing one cross-platform trailhead for your target,
and the building blocks (openApp, clear data, stop, grant
permissions) it is made of.
Compose your own agent surface. Give your agent first-class
commands like login or addToCart, named waypoints for your
screens, and trailmaps from other teams. Curate exactly what your
agent sees: surface your login and hide the low-level taps;
pick four of twenty primitives if that's what your tests need.
Custom commands are typed and type-safe, with IDE support,
replayable capture, and LLM-facing descriptions written for the
tool and each parameter — your agent reads those descriptions to
decide when and how to call them. Every call — yours, theirs, or
built-in — is a first-class command, recordable and replayable.
→ Load references/compose-agent-surface.md
when the task is to author a typed scripted tool, define a
waypoint, curate which tools the agent sees, write a trailmap.yaml,
or debug "my custom tool isn't showing up in toolbox". Covers
trailblaze.tool<I>(handler) authoring, sibling YAML descriptors,
trailmap composition via dependencies:, and the four-checkpoint
workflow for diagnosing a missing tool.
An agent-attached authoring session: your coding agent is the single writer of a trail folder's
files, and Trailblaze App opens a read-only live view of that folder for the human to watch and
steer. Start one with trailblaze companion start --folder <rel> --title "<what you're building>" --agent claude|codex, then tail what the human does with trailblaze companion listen <runId>.
Steer the window with standing directives - banner, checklist, actions (quick-reply chips),
select-app-target, select-device, arm-recording, and the one-shot navigate. Each is
latest-per-name state that survives window reloads; re-send one with no fields to retract it.
Single-writer rule: the UI never writes trail files back. A human "Save" click or a guided recording both go through the daemon, which writes the file and then tells every listening session about it.
Two events matter most on the listen stream:
recording-saved - a recording landed in your folder, whether from a companion save or
Trailblaze App's own board record flow; it fans out to every companion session watching that
folder, not just the one that wrote it.run-started / run-finished - a human ran a trail from Trailblaze App's UI whose path is
inside your folder; both carry the run's sessionId and your folder, and run-finished adds
status: succeeded|failed|cancelled. Only Trailblaze App's own run endpoints announce, and only
for primary-root trail/bundle ids - a raw-YAML replay (e.g. via MCP) bypasses that dispatch
seam and stays silent.Shared-brain requests: if the human clicks "Review my trail" (or asks for proposed steps) in
Trailblaze App while your listen stream is open, the daemon queues the ask on you instead of calling
its own LLM - watch for a human_action event titled agent-request with {requestId, kind, payload} (kind review-trail or propose-steps). Do the review by editing the trail folder's
files yourself, then settle it with trailblaze companion respond <runId> --request <id> --status done|error. A request you never answer is cancelled when the session ends.
Companion journals (.companion/journal-<runId>.jsonl) age out after 7 days, swept the next time
a session connects to that folder - never at disconnect, since a crashed agent resuming with
--after needs its own journal.
trailblaze companion --agent-help prints the full event and directive contract; load that
instead of guessing at the wire format.
Recorded trails replay deterministically by default — no LLM in the loop, no flake. When a recorded step genuinely doesn't match the screen anymore, there are two repair paths:
--self-heal and Trailblaze's built-in agent patches
the failing step against the live screen.The natural-language objectives are what make this work. They tell you what the step was trying to do, so repair is a matter of updating the how against the current app — not re-deriving intent from a broken selector.
The AI agent ecosystem is moving fast. Whatever it looks like in a year — or five, or ten — natural-language tests will come with the user. Trailblaze captures what is being tested as portable prose; the how (selectors, recordings, agent harness, framework version) adapts as the landscape changes.
When any rung in this skill drifts from the CLI — or when this
skill is restructured (new reference file, rung added, cross-link
moved) — the sibling trailblaze-validate-oob skill encodes the
methodology for catching it: fresh-context subagent, real installed
binary, scenario per rung. Re-run it any time the CLI changes, after
any non-trivial skill edit, or about once a month otherwise. If
validate-oob surfaces a gap, the default fix is update the CLI to
match the skill (rather than rewriting the skill to match a quirky
CLI) — the skill encodes the surface we want users to see; the CLI
should grow toward it.
Trailblaze is not a full coding agent. It ships a functioning agent focused on the natural-language step it's currently executing, with vision into the current screen and past steps — fine for many flows. What it doesn't try to be is a Claude Code, Cursor, or Codex: those have the user's entire codebase in context, can query logcat at runtime, and bring far more project context to bear. For serious authoring work, those agents drive Trailblaze. And Trailblaze is not a SaaS test platform — the trail YAML lives in the user's repo, they own it, they can read and edit it.
© block, Apache-2.0. 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 6 other files (references) in skills/trailblaze of block/trailblaze.
Open the folder on GitHubat commit ec49f40
Trailblaze 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 |
|---|---|---|---|---|---|---|
| Trailblaze this skillblock/trailblaze | 321 | — | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Engine Whats Newflutter/flutter | 179k | — | ~978 | Automated safety check: Pass | BSD-3-Clause | |
| Mobilerun Docs Referencedroidrun/mobilerun | 9.6k | — | ~943 | Automated safety check: Pass | MIT | |
| App Store Screenshots GeneratorParthJadhav/app-store-screenshots | 7.2k | — | ~14k | Automated safety check: Pass | MIT | |
| Rnn Codebasewix/react-native-navigation | 13k | — | ~2k | Automated safety check: Pass | MIT | |
| Building Native UICherryHQ/cherry-studio-app | 4k | 8 repos | ~2.6k | Automated safety check: Pass | 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).
droidrun/mobilerun
Answers questions about Mobilerun, the LLM-agent framework for automating Android and iOS devices, by pointing the agent to the right page of its v5 documentation.
ParthJadhav/app-store-screenshots
Scaffolds a Next.js editor for designing App Store and Google Play screenshots as ads and exporting them at every required size, for iOS, Mac and Android.
wix/react-native-navigation
Navigate and work with the react-native-navigation (RNN) codebase.
CherryHQ/cherry-studio-app
Complete guide for building beautiful apps with Expo Router.
lycorp-jp/sim-use
Drive iOS Simulator, Android emulator/device, and physical iPhone/iPad screens for AI agents.
block/trailblaze
Write or update a devlog entry in the devlog directory. An agent skill from block/trailblaze.
block/trailblaze
A skill your agent uses when turning a captured human demonstration (a Trailblaze App demonstration bundle: demo.yaml + actions.ndjson + per-action screenshots and view hierarchies) into a durable…
block/trailblaze
A skill your agent uses when validating or evaluating Trailblaze's out-of-box (OOB) user experience — does what the trailblaze skill claims actually match the real installed CLI?
Categories
A skill your agent uses when working with Trailblaze — natural-language device control for coding agents across iOS, Android, and web, with replayable .trail.yaml files as the artifact. Trailblaze is an agent skill from block/trailblaze, published by the product's own GitHub organization.yaml files as the artifact.
Trailblaze fits situations like: working with Trailblaze — natural-language device control for coding agents across iOS; with replayable .trail.yaml files as the artifact; mentions of Trailblaze; the trailblaze CLI.
Run `npx skills add block/trailblaze --skill trailblaze -a claude-code`. Or copy the skill folder (skills/trailblaze in block/trailblaze) into .claude/skills/trailblaze in your project. Claude Code loads it when a task matches its description.
Run `npx skills add block/trailblaze --skill trailblaze -a codex`. Or copy the skill folder (skills/trailblaze in block/trailblaze) into .agents/skills/trailblaze 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 block/trailblaze --skill trailblaze -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/trailblaze, .gemini/skills/trailblaze, .github/skills/trailblaze and .opencode/skills/trailblaze in your project.
SKILL.md names no scripts, command-line tools or credentials: Trailblaze is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Trailblaze is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Trailblaze: Engine Whats New (flutter/flutter, 179k stars), Mobilerun Docs Reference (droidrun/mobilerun, 9.6k stars), App Store Screenshots Generator (ParthJadhav/app-store-screenshots, 7.2k stars) and Rnn Codebase (wix/react-native-navigation, 13k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
block (a GitHub organization, an official publisher) maintains it in block/trailblaze, which has 321 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.
Source: block/trailblaze on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.