Agent skill

Android UI Visual Review

by permissionlesstech in permissionlesstech/bitchat-android

Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds.

GPL-3.0Auto-check passedDevelopment

Install Android UI Visual Review

skills CLI
$ npx skills add permissionlesstech/bitchat-android --skill android-ui-visual-review -a claude-code

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

GitHub CLI
$ gh skill install permissionlesstech/bitchat-android android-ui-visual-review --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/permissionlesstech/bitchat-android.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/android-ui-visual-review .claude/skills/android-ui-visual-review && 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
android-ui-visual-review
GitHub stars
7.8k
Token cost
~2.6k tokens
SKILL.md length
1,260 words
Files
10 (incl. scripts, references, assets)
Skills in repo
3
Repo updated
First seen
Licence
GPL-3.0

At a glance

Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds.

  • Works in 2 steps: Target — a PR URL/number or a… → Publishing — for a PR target, ask…
  • A user asks for PR screenshots
  • SKILL.md covers Collect the two user choices, Read the routed guidance, Create an isolated review… and Establish the visual contract, plus 7 more sections
  • Runs Python and Shell scripts from its folder; calls adb, python3 and git

What it does

Android UI Visual Review is an agent skill from permissionlesstech/bitchat-android. Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds. Use this skill whenever a user asks for PR screenshots, branch UI comparisons, visual regression evidence, Compose before/after captures, populated message-state screenshots, responsive/theme/locale comparisons, or GitHub comments containing Android UI evidence—even if they only say “show me what changed.” Also use it to determine and document that a suspected…

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts, reference files and assets (for example `assets/capture-manifest.example.json`, `assets/pr-comment-template.md` and `evals/evals.json`). Compatibility notes: Requires git, the Android SDK and emulator, adb, Java/Gradle, Python 3, and gh for pull-request resolution or publishing.

It sits in Development, covering Android development and Visual regression testing. It works with Android and GitHub. The repository describes itself as: decentralized mesh chat. The licence is GPL-3.0.

When your agent uses it

  • A user asks for PR screenshots
  • Branch UI comparisons
  • Visual regression evidence
  • Compose before/after captures

Example prompts

  • “show me what changed.”
  • “/android-ui-visual-review”

Requirements

  • Python 3
  • A Bash shell
  • Compatibility (from SKILL.md): Requires git, the Android SDK and emulator, adb, Java/Gradle, Python 3, and gh for pull-request resolution or publishing.

Workflow steps

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

  1. Target — a PR URL/number or a branch/commit. If it is missing, ask for it.
  2. Publishing — for a PR target, ask whether the final screenshots and

What it can do on your machine

Read from SKILL.md and the folder at commit 6803d6d. 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

    Ships 3 files in scripts/ (Python and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • adb
    • python3
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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.

  • Compatibility

    Requires git, the Android SDK and emulator, adb, Java/Gradle, Python 3, and gh for pull-request resolution or publishing.

    From compatibility in the SKILL.md frontmatter.

Context cost

Android UI Visual Review loads about 2.6k tokens when it runs, and up to ~6.7k if it reads all its reference files. Until then it costs about 171 tokens; SKILL.md has 1,260 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from permissionlesstech/bitchat-android at commit 6803d6d, republished under its GPL-3.0 licence (© permissionlesstech). 1,260 words, ~2,650 tokens.

Download SKILL.mdSave it as .claude/skills/android-ui-visual-review/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
android-ui-visual-review
description
Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds. Use this skill whenever a user asks for PR screenshots, branch UI comparisons, visual regression evidence, Compose before/after captures, populated message-state screenshots, responsive/theme/locale comparisons, or GitHub comments containing Android UI evidence—even if they only say “show me what changed.” Also use it to determine and document that a suspected UI PR has no visual delta. Do not use it for implementing a new UI, ordinary code review without visual evidence, or physical mesh validation.
compatibility
Requires git, the Android SDK and emulator, adb, Java/Gradle, Python 3, and gh for pull-request resolution or publishing.

Android UI Visual Review

Turn a PR or branch into trustworthy visual evidence. The comparison is useful only when the before and after builds use the correct commits, Android runtime, viewport, app state, and navigation path.

Collect the two user choices

Before starting, resolve:

  1. Target — a PR URL/number or a branch/commit. If it is missing, ask for it. For a branch, also ask for the intended base when it cannot be inferred safely; otherwise default to the repository's main.
  2. Publishing — for a PR target, ask whether the final screenshots and findings should stay local or be posted as a PR comment. Do not perform any GitHub write unless the user explicitly chooses publishing. A prior explicit request such as “post these to the PR” already answers this question.

Do not block on publishing preference while doing read-only analysis if the user has not answered yet. Keep the local workflow useful on its own.

Read the routed guidance

Create an isolated review session

Never switch the user's active checkout between before and after revisions. Run from the repository root:

sh
.agents/skills/android-ui-visual-review/scripts/create_review_worktree.sh \
  --target "<PR URL, PR number, branch, or commit>"

For a branch with a non-default base:

sh
.agents/skills/android-ui-visual-review/scripts/create_review_worktree.sh \
  --target "<branch>" \
  --base "<base ref>"

The script fetches a PR head when needed, computes the actual merge-base, creates a detached temporary worktree at the before SHA, and prints:

  • session directory
  • worktree path
  • artifact directory
  • before and after SHAs
  • PR number/base metadata when applicable

Keep artifacts outside the worktree so checkouts cannot remove them. The script may symlink the ignored local.properties into the temporary worktree; never publish it or quote its contents.

If a review session already exists and its SHAs are verified, reuse it. Do not create a second worktree for the same run.

Establish the visual contract

Use the actual diff, not the PR title, to determine what should be visible.

  1. Record git diff --stat, --name-status, and the focused diff between the before and after SHAs.
  2. Trace changed UI symbols to their composable/activity, state source, entry point, and prerequisites.
  3. Separate direct visual changes from indirect ones such as dynamic color, locale recreation, launcher resources, default data, or backend state shown by an otherwise unchanged screen.
  4. Produce a local capture matrix before building. Each row should define: screen, navigation path, fixture, logical width, theme, locale, permissions, and what difference is expected.
  5. Include a control state where the UI should remain unchanged when that helps distinguish intentional degradation from a regression.

When the diff contains no UI/resource/state-to-UI change, say so. If the user asked for a screenshot for every target, capture the nearest affected surface before and after and label the expected result no visual delta. Do not invent a UI claim for a behavioral fix.

Use the newest stable Android runtime

Prefer an emulator for repeatable UI evidence. At run time:

  1. Inspect installed SDK/system images and current official Android release information. Choose the newest stable API; do not silently use a preview.
  2. Create a dedicated AVD and isolated data directory when possible. If current command-line tools cannot create a newly versioned image (for example an extension image), a verified -sysdir override with an isolated data directory is acceptable.
  3. After boot, record guest properties rather than trusting the AVD name:
sh
adb -s "$ANDROID_REVIEW_SERIAL" shell getprop ro.build.version.release
adb -s "$ANDROID_REVIEW_SERIAL" shell getprop ro.build.version.sdk
adb -s "$ANDROID_REVIEW_SERIAL" shell getprop ro.build.version.security_patch
adb -s "$ANDROID_REVIEW_SERIAL" shell wm size
adb -s "$ANDROID_REVIEW_SERIAL" shell wm density

Use an explicit emulator serial for every ADB command when any physical device is also connected. Never put serials, device names, local paths, IP addresses, or other machine identifiers into reports or GitHub comments.

Use a physical device only when the affected UI depends on hardware that the emulator cannot reproduce. Ask before changing or clearing a physical device. This skill does not replace Mesh Lab: if the diff changes mesh, transport, crypto, service, or physical peer behavior, use the mesh-lab skill separately before claiming the behavior works.

Build and capture the before state

The worktree starts at the before SHA.

  1. Build the debug APK with ./gradlew assembleDebug.
  2. Install the ABI-matching APK with adb install -r.
  3. Complete stable prerequisites such as onboarding and permissions.
  4. Apply the fixture from the capture matrix.
  5. Navigate using semantic/UI-automator evidence where possible. Use coordinate taps only after inspecting the current screen, and keep coordinates local.
  6. Capture every matrix row with a descriptive name:
text
before-<surface>-<state>-<width>-<theme>.png

Use adb exec-out screencap -p so the PNG is written directly to the artifact directory. Inspect every screenshot immediately; a successful command is not proof that the intended screen was visible.

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

Build and capture the after state

Before switching commits:

  • Preserve the artifact directory outside the worktree.
  • Preserve only intentional app state.
  • Record any temporary debug fixture patch.

Checkout the recorded after SHA in the detached worktree, reapply the same debug-only fixture if needed, build, and install with -r when state preservation is part of the comparison.

Replay the same navigation and capture matrix. Name files with the matching after- prefix. If reinstalling cannot preserve the state, replay the fixture from its recorded inputs rather than comparing different states.

For responsive captures, record logical width in dp. On a fixed-pixel emulator, changing density is acceptable when the calculation is documented:

text
density = physical_width_px × 160 / desired_width_dp

Restore the original density/theme/locale after the matrix is complete.

Use deterministic artificial data

Prefer existing debug hooks. When they cannot express the visual state, add the smallest temporary command to app/src/debug/java/com/bitchat/android/testhook/TestHookDriver.kt.

The fixture must:

  • stay under src/debug
  • use synthetic names/content and deterministic IDs
  • use the current mesh peer ID for self-authored messages so alignment logic is exercised correctly
  • use a fixed fixture epoch passed to both builds
  • return structured success data through the existing test-hook result file
  • be logically identical in before and after builds

After the final capture, remove the temporary fixture with a focused patch and verify that the review worktree has no tracked modifications. Never commit or publish the fixture unless the user separately asks to productize it.

Validate and report

Create capture-manifest.json in the artifact directory using assets/capture-manifest.example.json as the shape. Use paths relative to the manifest and omit device selectors and local absolute paths.

Validate it:

sh
python3 \
  .agents/skills/android-ui-visual-review/scripts/validate_capture_manifest.py \
  "<artifact-directory>/capture-manifest.json"

Write a Markdown report next to the manifest with:

  • target and exact before/after SHAs
  • verified Android release/API/security patch and viewport
  • concise code analysis
  • visual findings, including intentional non-changes
  • side-by-side before/after tables
  • fixture disclosure
  • limitations and any hardware behavior not exercised

End the local run only after:

  • every manifest image exists and is a valid PNG
  • each before/after pair has matching pixel dimensions
  • every screenshot has been visually inspected
  • the worktree has no tracked fixture changes
  • the user's original checkout remains untouched

Leave the review session and artifacts available for later inspection unless the user asks for cleanup.

Optionally publish to the PR

Only after explicit user approval, follow references/github-publishing.md.

The PR comment should contain:

  • Android capture environment
  • detected visual changes
  • clear before/after labels
  • all requested screenshots
  • limitations such as “no visual delta” or “hardware race not reproduced”

Use gh for all GitHub reads and writes. Verify the posted comment by reading it back and counting the expected image embeds. Do not expose local paths or machine identifiers, do not override Git author/committer identity, and do not push screenshot files to a source branch unless the user separately authorizes that repository change.

Final handoff

Give the user:

  • report and artifact links
  • screenshot count
  • one-line result per surface
  • PR comment URL when published
  • explicit statement that the original checkout was not modified
  • any remaining coverage limitation

© permissionlesstech, GPL-3.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 9 other files (scripts, references, assets) in .agents/skills/android-ui-visual-review of permissionlesstech/bitchat-android.

  • SKILL.md
  • assets/capture-manifest.example.json
  • assets/pr-comment-template.md
  • evals/evals.json
  • references/analysis-playbook.md
  • references/fixture-recipes.md
  • references/github-publishing.md
  • scripts/create_review_worktree.sh
  • scripts/upload_pr_images.py
  • scripts/validate_capture_manifest.py

Open the folder on GitHubat commit 6803d6d

Compare with similar skills

Android UI Visual Review 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.

Android UI Visual Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Android UI Visual Review this skillpermissionlesstech/bitchat-android7.8k—~2.6kAutomated safety check: PassGPL-3.0
Release Changelogsk2andy/candy-browser508—~593Automated safety check: PassMPL-2.0
Git GitHub Opsc5inco/compose-pokedexer143—~1.3kAutomated safety check: PassMIT
Flake Triageyschimke/compose-ai-tools117—~1.5kAutomated safety check: PassApache-2.0
Launch On Devicezly2006/zhihu-plus-plus4.2k—~3.1kAutomated safety check: PassCC-BY-NC-4.0
Guided PR Fixupalexvanyo/composelife267—~1kAutomated safety check: PassApache-2.0

Similar skills

  • Release Changelog

    sk2andy/candy-browser

    Create or update Candy Browser's English, image-rich, versioned release notes for the in-app What's New presentation and the matching GitHub release.

    508 GitHub stars~593 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Git GitHub Ops

    c5inco/compose-pokedexer

    Handles Pokedexer Git and GitHub workflows: inspect changes, prepare commit messages, manage branches and pushes, and create or update issues and pull requests with safe file-based inputs.

    143 GitHub stars~1.3k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Flake Triage

    yschimke/compose-ai-tools

    Decide whether a preview the visual-diff bot flagged actually regressed or is simply nondeterministic, using a repeat-render oracle at a single commit.

    117 GitHub stars~1.5k tokensUpdated today
    MobileAuto-check passed
  • Launch On Device

    zly2006/zhihu-plus-plus

    Build, install, and launch the Zhihu++ Android app on a connected device using ADB.

    4.2k GitHub stars~3.1k tokensUpdated 2 days ago
    MobileAuto-check passed
  • Guided PR Fixup

    alexvanyo/composelife

    Performs a guided fixup of a given GitHub PR. An agent skill from alexvanyo/composelife.

    267 GitHub stars~1k tokensUpdated today
    MobileAuto-check passed
  • Web To Mobile

    suntay44/web-to-mobile-magic-plugin

    Orchestrate website or web app conversion into a mobile app.

    108 GitHub stars~781 tokensUpdated 26 days ago
    MobileAuto-check passed

More from permissionlesstech/bitchat-android

  • Android Readme Screenshot Studio

    permissionlesstech/bitchat-android

    Create or refresh polished, high-resolution screenshots of the Bitchat Android app for README and repository showcase use.

    7.8k GitHub stars~3k tokensUpdated 3 days ago
    Auto-check passed
  • Mesh Lab

    permissionlesstech/bitchat-android

    Run, diagnose, and extend bitchat Android Mesh Lab physical-device tests.

    7.8k GitHub stars~2.9k tokensUpdated 3 days ago
    Auto-check passed

Works with

Questions about Android UI Visual Review

What does Android UI Visual Review do?

Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds. Android UI Visual Review is an agent skill from permissionlesstech/bitchat-android. Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds.

When should I use Android UI Visual Review?

Android UI Visual Review fits situations like: A user asks for PR screenshots; branch UI comparisons; visual regression evidence; compose before/after captures.

How do I install Android UI Visual Review in Claude Code?

Run `npx skills add permissionlesstech/bitchat-android --skill android-ui-visual-review -a claude-code`. Or copy the skill folder (.agents/skills/android-ui-visual-review in permissionlesstech/bitchat-android) into .claude/skills/android-ui-visual-review in your project. Claude Code loads it when a task matches its description.

How do I install Android UI Visual Review in Codex?

Run `npx skills add permissionlesstech/bitchat-android --skill android-ui-visual-review -a codex`. Or copy the skill folder (.agents/skills/android-ui-visual-review in permissionlesstech/bitchat-android) into .agents/skills/android-ui-visual-review in your project. Codex loads it when a task matches its description.

Can I use Android UI Visual Review 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 permissionlesstech/bitchat-android --skill android-ui-visual-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/android-ui-visual-review, .gemini/skills/android-ui-visual-review, .github/skills/android-ui-visual-review and .opencode/skills/android-ui-visual-review in your project.

What does Android UI Visual Review need to run?

Going by SKILL.md and its folder, Android UI Visual Review needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (adb, python3 and git). Our summary lists: Python 3; A Bash shell. Compatibility (from SKILL.md): Requires git, the Android SDK and emulator, adb, Java/Gradle, Python 3, and gh for pull-request resolution or publishing..

Does Android UI Visual Review access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Android UI Visual Review 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Android UI Visual Review use?

Android UI Visual Review is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Android UI Visual Review use?

About 2.6k tokens (SKILL.md is roughly 11k 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 4.1k tokens, read only when the agent opens those files.

What are the alternatives to Android UI Visual Review?

Skills that share tags, products or a category with Android UI Visual Review: Release Changelog (sk2andy/candy-browser, 508 stars), Git GitHub Ops (c5inco/compose-pokedexer, 143 stars), Flake Triage (yschimke/compose-ai-tools, 117 stars) and Launch On Device (zly2006/zhihu-plus-plus, 4.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Android UI Visual Review?

permissionlesstech (a GitHub organization) maintains it in permissionlesstech/bitchat-android, which has 7,763 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 6, 2026.

Source: permissionlesstech/bitchat-android on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.