Official agent skill

Trailblaze

by block in block/trailblaze

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.

OfficialApache-2.0Auto-check passedMobile

Install Trailblaze

skills CLI
$ npx skills add block/trailblaze --skill trailblaze -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install block/trailblaze trailblaze --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
trailblaze
GitHub stars
321
Token cost
~3.4k tokens
SKILL.md length
1,833 words
Files
7 (incl. references)
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

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.

  • Works in 3 steps: Drive a device. Point your coding agent… → Save and replay. Any session becomes a… → Compose your own agent surface. Give…
  • Working with Trailblaze — natural-language device control for coding agents across iOS
  • SKILL.md covers What you get, Native fidelity on every…, The two routing keys: device… and The three rungs — and which…, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

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.

When your agent uses it

  • 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

Example prompts

  • “/trailblaze”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Drive a device. Point your coding agent at the Trailblaze
  2. Save and replay. Any session becomes a .trail.yaml — replay
  3. Compose your own agent surface. Give your agent first-class

What it can do on your machine

Read from SKILL.md and the folder at commit ec49f40. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    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.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~116
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~18k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from block/trailblaze at commit ec49f40, republished under its Apache-2.0 licence (© block). 1,833 words, ~3,403 tokens.

Download SKILL.mdSave it as .claude/skills/trailblaze/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
trailblaze
description
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.

Trailblaze

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.

What you get

  • 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.

Native fidelity on every platform

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.

The two routing keys: device and target

Before you drive anything, know the two routing keys — they're the foundation every rung's commands build on:

  • Device — a connected runtime instance. The device specifier format is <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.
  • Target — the app context being driven. This is the discovery surface for app-specific tools: a trailmap published for an app (e.g. <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.

The three rungs — and which reference to load

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.
-->
  1. 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.

  2. 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.

  3. 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.

Show full SKILL.md (784 more words)Show less

Companion mode

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.

Self-heal

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:

  • Built-in self-heal handles small drift — text changes, an unexpected popup, a minor reorder within an established flow. Opt in with --self-heal and Trailblaze's built-in agent patches the failing step against the live screen.
  • Your coding agent handles the larger cases — anything that needs project context, log inspection, or judgment calls about intent. The trace session (view hierarchies, screenshots, video, platform logs, the trail YAML itself) is the diagnosis surface. You read the trace, compare what the step intended (its natural-language objective) to what the app now does, and propose a fix. The user reviews and commits.

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.

Built for an evolving ecosystem

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.

What Trailblaze is not

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

Files

SKILL.md and 6 other files (references) in skills/trailblaze of block/trailblaze.

  • SKILL.md
  • SETUP.md
  • references/compose-agent-surface.md
  • references/drive-device.md
  • references/save-and-replay.md
  • references/session-logs-inspection.md
  • references/trailheads.md

Open the folder on GitHubat commit ec49f40

Compare with similar skills

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.

Trailblaze compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Trailblaze this skillblock/trailblaze321—~3.4kAutomated safety check: PassApache-2.0
Engine Whats Newflutter/flutter179k—~978Automated safety check: PassBSD-3-Clause
Mobilerun Docs Referencedroidrun/mobilerun9.6k—~943Automated safety check: PassMIT
App Store Screenshots GeneratorParthJadhav/app-store-screenshots7.2k—~14kAutomated safety check: PassMIT
Rnn Codebasewix/react-native-navigation13k—~2kAutomated safety check: PassMIT
Building Native UICherryHQ/cherry-studio-app4k8 repos~2.6kAutomated safety check: PassMIT

Similar skills

  • 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).

    179k GitHub stars~978 tokensUpdated today
    MobileAuto-check passed
  • Mobilerun Docs Reference

    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.

    9.6k GitHub stars~943 tokensUpdated 2 days ago
    MobileAuto-check passed
  • App Store Screenshots Generator

    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.

    7.2k GitHub stars~14k tokensUpdated today
    MobileAuto-check passed
  • Rnn Codebase

    wix/react-native-navigation

    Official

    Navigate and work with the react-native-navigation (RNN) codebase.

    13k GitHub stars~2k tokensUpdated yesterday
    MobileAuto-check passed
  • Building Native UI

    CherryHQ/cherry-studio-app

    Complete guide for building beautiful apps with Expo Router.

    4k GitHub starsUsed in 8 repos~2.6k tokens
    MobileAuto-check passed
  • Sim Use

    lycorp-jp/sim-use

    Drive iOS Simulator, Android emulator/device, and physical iPhone/iPad screens for AI agents.

    1.4k GitHub stars~3.2k tokensUpdated today
    MobileAuto-check passed

More from block/trailblaze

  • Devlog

    block/trailblaze

    Official

    Write or update a devlog entry in the devlog directory. An agent skill from block/trailblaze.

    321 GitHub stars~586 tokensUpdated today
    Auto-check passed
  • Trailblaze Author

    block/trailblaze

    Official

    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…

    321 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Trailblaze Validate Oob

    block/trailblaze

    Official

    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?

    321 GitHub stars~2.3k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Trailblaze

What does Trailblaze do?

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.

When should I use Trailblaze?

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.

How do I install Trailblaze in Claude Code?

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.

How do I install Trailblaze in Codex?

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.

Can I use Trailblaze in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Trailblaze need to run?

SKILL.md names no scripts, command-line tools or credentials: Trailblaze is instructions for the agent only.

Does Trailblaze access the network?

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.

Is Trailblaze safe to install?

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.

What licence does Trailblaze use?

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.

How many tokens does Trailblaze use?

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.

What are the alternatives to Trailblaze?

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.

Who maintains Trailblaze?

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.