Agent skill

Android Adb Connect

by meain in meain/dotfiles

Connect to an Android phone over ADB wireless (Galaxy S25 at meain's setup), install/launch APKs, take screenshots, and drive the UI via uiautomator.

MITAuto-check passedMobile

Install Android Adb Connect

skills CLI
$ npx skills add meain/dotfiles --skill android-adb-connect -a claude-code

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

GitHub CLI
$ gh skill install meain/dotfiles android-adb-connect --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/meain/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/.agents/skills/android-adb-connect .claude/skills/android-adb-connect && 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-adb-connect
GitHub stars
285
Token cost
~1.5k tokens
SKILL.md length
490 words
Files
1
Skills in repo
35
Repo updated
First seen
Licence
MIT

At a glance

Connect to an Android phone over ADB wireless (Galaxy S25 at meain's setup), install/launch APKs, take screenshots, and drive the UI via uiautomator.

  • Works in 4 steps: set up the environment → connect → verify and identify → …
  • Tasks that involve Mobile testing and debugging
  • SKILL.md covers When to use, Step 1 — set up the environment, Step 2 — connect and Step 3 — verify and identify, plus 2 more sections
  • Calls adb and sqlite3

What it does

Android Adb Connect is an agent skill from meain/dotfiles. Connect to an Android phone over ADB wireless (Galaxy S25 at meain's setup), install/launch APKs, take screenshots, and drive the UI via uiautomator. Triggers: "connect to phone", "adb connect", "test on phone", "screenshot the phone", "install on phone", "phone is at 192.168.1.3", any task that needs to drive an Android device from the host.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering Mobile testing and debugging. It works with Android. The repository describes itself as: If there is a shell, there is a way! The licence is MIT.

When your agent uses it

  • Tasks that involve Mobile testing and debugging

Example prompts

  • “connect to phone”
  • “adb connect”
  • “test on phone”
  • “/android-adb-connect”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. set up the environment
  2. connect
  3. verify and identify
  4. common operations

What it can do on your machine

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

    Shell commands in SKILL.md call:

    • adb
    • sqlite3

    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

Android Adb Connect loads about 1.5k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 490 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

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 meain/dotfiles at commit 3e336e2, republished under its MIT licence (© meain). 490 words, ~1,465 tokens.

Download SKILL.mdSave it as .claude/skills/android-adb-connect/SKILL.md (or your agent's skills folder).
name
android-adb-connect
description
Connect to an Android phone over ADB wireless (Galaxy S25 at meain's setup), install/launch APKs, take screenshots, and drive the UI via uiautomator. Triggers: "connect to phone", "adb connect", "test on phone", "screenshot the phone", "install on phone", "phone is at 192.168.1.3", any task that needs to drive an Android device from the host.
argument-hint
[host:port or pairing code]

Connect to Android phone over ADB wireless

This skill captures the actual quirks of meain's setup. The phone is a Samsung Galaxy S25 on the same WiFi as the host. The ADB SDK lives at ~/Android/sdk-edo (not the system path) — always export ANDROID_HOME=$HOME/Android/sdk-edo before running adb.

When to use

  • The user says "connect to the phone", "test on phone", "adb connect …"
  • They paste a host:port and optionally a 6-digit pairing code
  • You need to install an APK on the device, drive the UI, or screenshot it
  • A previous connection dropped (port rotates every time wireless debugging is toggled)

Step 1 — set up the environment

bash
export ANDROID_HOME=$HOME/Android/sdk-edo
# Java is only needed for builds, not for adb itself
export PATH=$ANDROID_HOME/platform-tools:$PATH

adb devices   # check what's already attached

If adb isn't found, the SDK is at ~/Android/sdk-edo/platform-tools/adb.

If any entry shows status device, check if it's the Galaxy S25 before proceeding to connect:

bash
adb -s <device-id> shell getprop ro.product.model
# SM-S938B → it's the Galaxy S25, use this device ID and skip Step 2 entirely

Use that ID with -s for all subsequent commands.

Step 2 — connect

Already paired (the common case)

The phone remembers the pairing across reboots, but the wireless port changes every time Wireless Debugging is toggled. The user will typically paste a new host:port — use it directly:

bash
adb connect 192.168.1.3:38181

If that fails with failed to authenticate or hangs, the pairing has expired — go to Step 2b.

First-time or expired pairing

The user needs to open Settings → Developer options → Wireless debugging → Pair device with pairing code on the phone. That screen shows a host:pairing_port and a 6-digit code. They are separate from the regular host:port shown on the main Wireless debugging screen.

bash
adb pair 192.168.1.3:40319        # pairing port from the phone (different from connect port)
# adb prompts for the code; or pass it inline:
adb pair 192.168.1.3:40319 657538

Then connect using the regular (non-pairing) port shown on the main Wireless debugging screen:

bash
adb connect 192.168.1.3:38181
Discovering the port

If the user can't read the port off the phone, try mDNS:

bash
adb mdns services

It lists adb-tls-pairing and adb-tls-connect entries with their ports. The pairing entry rotates each time the pairing code screen is opened.

Show full SKILL.md (203 more words)Show less
TLS failures

SSLV3_ALERT_CERTIFICATE_UNKNOWN or "TLS handshake failed" means the host and phone disagree on the pairing — re-pair from scratch via Step 2b. Don't retry the same adb connect in a loop.

Step 3 — verify and identify

bash
adb devices
# Should show e.g. 192.168.1.3:38181  device

Always pass -s <host:port> to subsequent commands when more than one device is listed (the adb-RZGY... mDNS entry can show up alongside the IP one).

Step 4 — common operations

Install / launch an app
bash
adb -s 192.168.1.3:38181 install -r app/build/outputs/apk/debug/app-debug.apk
adb -s 192.168.1.3:38181 shell am force-stop com.example.app
adb -s 192.168.1.3:38181 shell am start -n com.example.app/.MainActivity
Screenshot
bash
adb -s 192.168.1.3:38181 exec-out screencap -p > /tmp/phone.png
# Read it with the Read tool. If the API rejects large images, resize:
# sips -z 1200 555 /tmp/phone.png --out /tmp/phone_small.png
Drive the UI (taps, text)

Coordinates are in the device's native resolution (1080×2340 on the S25). Don't scale to display size. Get exact bounds via:

bash
adb -s 192.168.1.3:38181 shell uiautomator dump /sdcard/window.xml >/dev/null
adb -s 192.168.1.3:38181 shell cat /sdcard/window.xml \
  | tr '>' '\n' \
  | grep -oE '(text|content-desc|bounds)="[^"]+'

Then tap the center of bounds="[x1,y1][x2,y2]":

bash
adb -s 192.168.1.3:38181 shell input tap 540 1200
adb -s 192.168.1.3:38181 shell input text "hello%sworld"   # %s for spaces
adb -s 192.168.1.3:38181 shell input keyevent KEYCODE_BACK
adb -s 192.168.1.3:38181 shell input keyevent KEYCODE_WAKEUP

Quirks of input text:

  • Spaces must be %s, not literal spaces.
  • Avoid ! — zsh history expansion can trigger before the command reaches the device.
  • Newlines aren't supported; use KEYCODE_ENTER separately.
Keep screen awake during testing
bash
adb -s 192.168.1.3:38181 shell svc power stayon true    # USB or AC
# Always turn it back off when done:
adb -s 192.168.1.3:38181 shell svc power stayon false
Logs
bash
adb -s 192.168.1.3:38181 logcat -d -t 300 | grep com.example.app
Pulling the app database (Room WAL gotcha)

adb pull of just the .db file is incomplete because Room uses WAL mode. Force-stop the app first to flush, then pull all three files:

bash
adb -s 192.168.1.3:38181 shell am force-stop com.example.app
for f in app.db app.db-wal app.db-shm; do
  adb -s 192.168.1.3:38181 shell "run-as com.example.app cat databases/$f 2>/dev/null" > /tmp/$f
done
sqlite3 /tmp/app.db "SELECT ..."

The device's sqlite3 binary is missing on stock Samsung — always pull and query locally.

Project context

For the Edo project at /Users/meain/dev/src/edo, see its CLAUDE.md for the install/launch/screenshot pattern with the actual package name (com.edo.app).

© meain, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in agents/.agents/skills/android-adb-connect of meain/dotfiles.

Open the folder on GitHubat commit 3e336e2

Compare with similar skills

Android Adb Connect 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 Adb Connect compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Android Adb Connect this skillmeain/dotfiles285—~1.5kAutomated safety check: PassMIT
Phone HarnessShawnPana/phone-harness3.2k—~4.3kAutomated safety check: PassMIT
Mobile QAtloncorp/tlon-apps107—~2.4kAutomated safety check: PassMIT
Androidyang1ming/android-harness176—~259Automated safety check: PassMIT
Debug Receiverstimusus/Shuttle2229—~1.9kAutomated safety check: PassApache-2.0
Debug Bridgegetknit/knit133—~2.3kAutomated safety check: PassGPL-3.0

Similar skills

  • Phone Harness

    ShawnPana/phone-harness

    Control the user's phone — an iPhone through the Mac's iPhone Mirroring window, an Android over adb, or a rented cloud Android: open apps, tap, type, swipe, read the screen.

    3.2k GitHub stars~4.3k tokensUpdated today
    MobileAuto-check passed
  • Mobile QA

    tloncorp/tlon-apps

    Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.

    107 GitHub stars~2.4k tokensUpdated yesterday
    MobileAuto-check passed
  • Android

    yang1ming/android-harness

    Direct Android device control through ADB. An agent skill from yang1ming/android-harness.

    176 GitHub stars~259 tokensUpdated 2 mo ago
    MobileAuto-check passed
  • Debug Receivers

    timusus/Shuttle2

    Drive the S2 debug build's playback and queue over ADB broadcasts — play the whole library, play/pause, skip, seek, remove a queue item, toggle shuffle/repeat, dump playback state as JSON, reimport…

    229 GitHub stars~1.9k tokensUpdated today
    MobileAuto-check passed
  • Debug Bridge

    getknit/knit

    Drive and verify Knit on a device or emulator through the headless debug bridge (am broadcast to app.getknit.knit.debug.<ACTION, replies as JSON) — send a message on one phone and confirm it landed…

    133 GitHub stars~2.3k tokensUpdated today
    MobileAuto-check passed
  • Capturing Screenshots And Screenrecord

    skydoves/android-testing-skills

    A skill your agent uses to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos.

    334 GitHub stars~3.7k tokensUpdated 4 mo ago
    MobileAuto-check passed

More from meain/dotfiles

All 35 skills in this repo
  • Recall

    meain/dotfiles

    Search past Claude Code and Codex sessions. An agent skill from meain/dotfiles.

    285 GitHub starsUsed in 1 repo~684 tokens
    Auto-check passed
  • Grill With Docs

    meain/dotfiles

    Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise.

    285 GitHub starsUsed in 20 repos~875 tokens
    Auto-check passed
  • Backlog

    meain/dotfiles

    Daily backlog management — full planning review OR add a single entry from a URL.

    285 GitHub stars~3k tokensUpdated 2 days ago
    Auto-check passed
  • Concern Review

    meain/dotfiles

    Generate an interactive local HTML review page for a large PR or diff, grouping the changed files by logical concern (not just by file) so a reviewer can go through one theme at a time instead of a…

    285 GitHub stars~2.2k tokensUpdated 2 days ago
    Auto-check passed
  • My Weekly Report

    meain/dotfiles

    Generate a concise weekly status update in team format. An agent skill from meain/dotfiles.

    285 GitHub stars~2.5k tokensUpdated 2 days ago
    Auto-check passed
  • Web Search

    meain/dotfiles

    Search the web using lynx and DuckDuckGo. An agent skill from meain/dotfiles.

    285 GitHub stars~830 tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Android Adb Connect

What does Android Adb Connect do?

Connect to an Android phone over ADB wireless (Galaxy S25 at meain's setup), install/launch APKs, take screenshots, and drive the UI via uiautomator. Android Adb Connect is an agent skill from meain/dotfiles. Connect to an Android phone over ADB wireless (Galaxy S25 at meain's setup), install/launch APKs, take screenshots, and drive the UI via uiautomator.

When should I use Android Adb Connect?

Android Adb Connect fits situations like: tasks that involve Mobile testing and debugging.

How do I install Android Adb Connect in Claude Code?

Run `npx skills add meain/dotfiles --skill android-adb-connect -a claude-code`. Or copy the skill folder (agents/.agents/skills/android-adb-connect in meain/dotfiles) into .claude/skills/android-adb-connect in your project. Claude Code loads it when a task matches its description.

How do I install Android Adb Connect in Codex?

Run `npx skills add meain/dotfiles --skill android-adb-connect -a codex`. Or copy the skill folder (agents/.agents/skills/android-adb-connect in meain/dotfiles) into .agents/skills/android-adb-connect in your project. Codex loads it when a task matches its description.

Can I use Android Adb Connect 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 meain/dotfiles --skill android-adb-connect -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-adb-connect, .gemini/skills/android-adb-connect, .github/skills/android-adb-connect and .opencode/skills/android-adb-connect in your project.

What does Android Adb Connect need to run?

Going by SKILL.md and its folder, Android Adb Connect needs the command-line tools its instructions call (adb and sqlite3).

Does Android Adb Connect 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 Android Adb Connect 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 Android Adb Connect use?

Android Adb Connect is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Android Adb Connect use?

About 1.5k tokens (SKILL.md is roughly 5.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Android Adb Connect?

Skills that share tags, products or a category with Android Adb Connect: Phone Harness (ShawnPana/phone-harness, 3.2k stars), Mobile QA (tloncorp/tlon-apps, 107 stars), Android (yang1ming/android-harness, 176 stars) and Debug Receivers (timusus/Shuttle2, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Android Adb Connect?

meain (a GitHub user) maintains it in meain/dotfiles, which has 285 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 8, 2026.

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