prepare-android-chrome
Prepare a USB-connected Android phone so the user (or follow-up tools) can drive Chrome on it via the chrome-devtools-android MCP server.
Skill by jsiovn
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jsiovn-prepare-android-chrome
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/prepare-android-chrome
What's inside
- Skill name
prepare-android-chrome- Description
- Prepare a USB-connected Android phone so the user (or follow-up tools) can drive Chrome on it via the chrome-devtools-android MCP server. Verifies adb, ensures Chrome DevTools is reachable, registers/forwards the MCP endpoint, and — if a localhost URL is given — sets up adb reverse for the dev server. Performs no navigation, no screenshot, no audits, and no cleanup.
- License
- MIT
- Instructions
- 140 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
# Prepare Android Chrome (DevTools MCP)
This skill only **prepares the connection**. After it finishes, the user can drive Chrome on the phone via the `chrome-devtools-android` MCP server (navigate, screenshot, audit — whatever they want). The skill itself does not open pages, take screenshots, run audits, or tear anything down.
Reference: https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/debugging-android.md
## Inputs
- **`url`** (optional) — only needed if the user wants `localhost` reachable from the phone. When provided and the host resolves to `localhost` / `127.0.0.1` / `0.0.0.0`, this skill sets up `adb reverse` for that port. Otherwise the URL is ignored.
## Prerequisites
Machine:
- `adb` on `PATH` (Android Platform Tools).
- Chrome DevTools MCP server installed (invoked via `npx`).
Phone:
- Developer Options + USB debugging enabled. See https://developer.android.com/studio/debug/dev-options
- Chrome (stable, beta, or Canary) installed and **opened at least once** interactively (to clear EULA/first-run prompts).
- USB-connected to the machine, with the on-device "Allow USB debugging?" prompt accepted.
## Steps
### 1. Check / set up the adb connection
```bash
adb devices
```
Expected: one line like `R3CMA0955JT device`.
- If `unauthorized`: ask the user to tap "Allow" on the phone.
- If empty: ask the user to plug the phone in and confirm USB debugging is on.
- If multiple devices listed: ask the user which serial to target and use `adb -s <serial>` for every subsequent `adb` command in this skill.
Then confirm Chrome's DevTools socket is live on the phone:
```bash
adb shell cat /proc/net/unix | grep --text chrome_devtools_remote
```
Expected: at least one matching line. If empty, launch Chrome via adb:
```bash
# Detect installed Chrome variant
adb shell pm list packages | grep -E 'com\.(android\.chrome|chrome\.(beta|canary|dev))'
# Launch (substitute the matching package name)
adb shell monkey -p com.android.chrome -c android.intent.category.LAUNCHER 1
```
Wait ~2 seconds, re-check `chrome_devtools_remote`. If still empty, Chrome has not been opened interactively — ask the user to unlock the phone and tap through Chrome's first-run prompts once.
Forward the DevTools port:
```bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
curl -sS http://127.0.0.1:9222/json/version
```
`curl` should return JSON with `Browser` and `webSocketDebuggerUrl`. If it fails, re-run `adb forward` and confirm nothing else is bound to port 9222.
### 2. Check / guide the chrome-devtools-android MCP server
The default `chrome-devtools` MCP server launches a **desktop** Chrome. A **separate** MCP server named `chrome-devtools-android` must be registered, pointed at the phone via `--wsEndpoint`, so it can coexist with the desktop one.
Check whether it is already registered:
```bash
claude mcp list | grep chrome-devtools-android
```
If missing, **do not run the add command yourself** — it writes to the user's MCP config. Surface this command and ask the user to run it:
```bash
claude mcp add --transport stdio --scope user chrome-devtools-android \
-- npx chrome-devtools-mcp@latest --wsEndpoint=ws://127.0.0.1:9222/devtools/browser
```
After they confirm it is added, they must **restart the agent** so the new MCP server is loaded. Then re-invoke this skill.
### 3. Check the chrome-devtools-android MCP connection
Once the server is registered and loaded, call `list_pages` via the `chrome-devtools-android` MCP tools. The returned pages should match the tabs currently open in Chrome on the phone.
If `list_pages` returns nothing or errors:
- Re-run the `adb forward` from step 1.
- Confirm no other DevTools client (e.g. `chrome://inspect` in desktop Chrome targeting the same phone) is attached — Chrome only allows one CDP client at a time.
- Verify the `--wsEndpoint` registered in step 2 matches `ws://127.0.0.1:9222/devtools/browser`.
### 4. If `url` is a localhost address, set up reverse port forwarding
Skip this step entirely when no URL was provided or the URL's host is not localhost.
When the URL host is `localhost` / `127.0.0.1` / `0.0.0.0`, parse the port and set up reverse forwarding so the phone can reach the host's dev server:
```bash
adb reverse tcp:<port> tcp:<port>
```
Example for Vite on 5173:
```bash
adb reverse tcp:5173 tcp:5173
```
Without this, `localhost` on the phone resolves to the phone itself and the page fails to load.
If the URL has no explicit port, infer the scheme default (80 for `http`, 443 for `https`) — but flag to the user that reverse-forwarding privileged ports is unusual and double-check what they actually want.
### 5. Report and hand off
Report the prepared state to the user, e.g.:
```
adb device: <serial> (<Android version>, Chrome <version>)From jsiovn/agent-workflow-beads, MIT.
More from jsiovn/agent-workflow-beads
- 0.598score
executor-epic-sequential-worktree
jsiovn
Use when you want to deliver a whole epic unattended as ONE branch and ONE PR WITHOUT disturbing in-flight work in the main checkout.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
executor-epic-sequential
jsiovn
Run every ready child bead of one epic end-to-end, sequentially, on a single epic branch (epic/<epic-bead-id>).
SkillAFreshness: A★ 2Claude Code +9 - 0.507score
plan-beads
jsiovn
Run a planner-only Beads session: brainstorm, produce or confirm an execution plan, brief the user once for bead creation, then create beads and stop.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
address-pr-comments
jsiovn
Use to iteratively address unresolved review comments on the current PR.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
beads-planner
jsiovn
Break a discussed or settled problem into Beads epics and tasks with clear dependencies and validation work.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
executor-epic-task-worktree
jsiovn
Run a full executor cycle for one bead in a fresh git worktree off its parent epic branch (epic/<epic-bead-id>): leaves the main working tree completely…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
cleanup-worktree
jsiovn
Remove a sibling git worktree created by `executor-task-worktree`, `executor-epic-task-worktree`, `executor-epic-sequential-worktree`, or…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
executor-epic-task
jsiovn
Run a full executor cycle for one bead on a fresh feature branch off its parent epic branch (epic/<epic-bead-id>): stash any in-flight work, switch to the…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
executor-task
jsiovn
Run a full executor cycle for one bead on a fresh feature branch off main: stash any in-flight work, switch to main, pull, create feat/<bead-id>-<short-slug>…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
executor-rework-in-place
jsiovn
Re-execute one bead on the current feature branch in the current main worktree, after its requirements were updated and its PR is already open.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
executor-task-worktree
jsiovn
Run a full executor cycle for one bead in a fresh git worktree off main: leaves the main working tree completely untouched, creates a sibling worktree at…
SkillCFreshness: C★ 2Claude Code +9 - 0.504score
planner-research
jsiovn
Planner-only research step for resolving factual unknowns after brainstorming and before Beads creation.
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 5, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/jsiovn/agent-workflow-beads
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jsiovn
- 0.598score
executor-epic-sequential-worktree
jsiovn
Use when you want to deliver a whole epic unattended as ONE branch and ONE PR WITHOUT disturbing in-flight work in the main checkout.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
executor-epic-sequential
jsiovn
Run every ready child bead of one epic end-to-end, sequentially, on a single epic branch (epic/<epic-bead-id>).
SkillAFreshness: A★ 2Claude Code +9 - 0.507score
address-pr-comments
jsiovn
Use to iteratively address unresolved review comments on the current PR.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
beads-planner
jsiovn
Break a discussed or settled problem into Beads epics and tasks with clear dependencies and validation work.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
cleanup-worktree
jsiovn
Remove a sibling git worktree created by `executor-task-worktree`, `executor-epic-task-worktree`, `executor-epic-sequential-worktree`, or…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
executor-rework-in-place
jsiovn
Re-execute one bead on the current feature branch in the current main worktree, after its requirements were updated and its PR is already open.
SkillCFreshness: C★ 2Claude Code +9
Cite this page
prepare-android-chrome skill. Agent Mart. https://agentmart.dev/skills/jsiovn-prepare-android-chrome (last updated 2026-10-24)