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.
A skill your agent uses to build, install, and launch ApkAnalyzer on a connected device or emulator, or to verify a code change actually works at runtime rather than just compiling.
$ npx skills add MartinStyk/apk-analyzer --skill run-app -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install MartinStyk/apk-analyzer run-app --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/MartinStyk/apk-analyzer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/run-app .claude/skills/run-app && 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 "run-app" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-app into .claude/skills/run-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-app", 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/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-appType 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 MartinStyk/apk-analyzer --skill run-app -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install MartinStyk/apk-analyzer run-app --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MartinStyk/apk-analyzer.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/run-app .agents/skills/run-app && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "run-app" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-app into .agents/skills/run-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-app", 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 MartinStyk/apk-analyzer --skill run-app -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install MartinStyk/apk-analyzer run-app --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MartinStyk/apk-analyzer.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/run-app .cursor/skills/run-app && 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 "run-app" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-app into .cursor/skills/run-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-app", 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/MartinStyk/apk-analyzer.git --path .claude/skills/run-app--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 MartinStyk/apk-analyzer --skill run-app -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install MartinStyk/apk-analyzer run-app --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MartinStyk/apk-analyzer.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/run-app .gemini/skills/run-app && 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 "run-app" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-app into .gemini/skills/run-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-app", 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 MartinStyk/apk-analyzer run-appInstalls 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 MartinStyk/apk-analyzer --skill run-app -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/MartinStyk/apk-analyzer.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/run-app .github/skills/run-app && 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 "run-app" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-app into .github/skills/run-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-app", 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 MartinStyk/apk-analyzer --skill run-app -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install MartinStyk/apk-analyzer run-app --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MartinStyk/apk-analyzer.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/run-app .opencode/skills/run-app && 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 "run-app" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/run-app into .opencode/skills/run-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-app", 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.
run-appA skill your agent uses to build, install, and launch ApkAnalyzer on a connected device or emulator, or to verify a code change actually works at runtime rather than just compiling.
Run App is an agent skill from MartinStyk/apk-analyzer. Use to build, install, and launch ApkAnalyzer on a connected device or emulator, or to verify a code change actually works at runtime rather than just compiling. Triggered by phrases like "run the app", "install on device", "launch the app", "try it on my phone", "deploy to device", "see if this works", "run it".
Its SKILL.md is about 930 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. The repository describes itself as: The most downloaded APK analysis app on Google Play. Detailed reports of every app on your device. No root, no ads, nothing leaves the phone. The licence is GPL-3.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d807559. 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.
Shell commands in SKILL.md call:
adbFrom 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.
Run App loads about 932 tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 404 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 MartinStyk/apk-analyzer at commit d807559, republished under its GPL-3.0 licence (© MartinStyk). 404 words, ~932 tokens.
.claude/skills/run-app/SKILL.md (or your agent's skills folder).Debug builds and any release build the user already has installed share the same
applicationId(sk.styk.martin.apkanalyzer— no debug suffix), so installing over an existing release can hit a version conflict. Read Step 3 before installing, especially the first time on a given device.
adbadb is often not on PATH. Try it directly first; if that fails, it lives under the Android SDK:
adb devices -l || "$ANDROID_HOME/platform-tools/adb" devices -l # macOS/Linuxadb devices -l 2>$null; if (-not $?) { & "$env:ANDROID_HOME\platform-tools\adb.exe" devices -l }If ANDROID_HOME isn't set either, see the setup-local-tools skill. Confirm at least one
device/emulator is listed as device (not unauthorized or offline) before continuing. If
multiple devices are attached, target one explicitly with -s <serial> on every adb command
below.
./gradlew installDebugThis assembles :app:debug and installs it via the AGP-managed install task. If it succeeds,
skip to Step 4.
INSTALL_FAILED_VERSION_DOWNGRADEThis happens when the device already has a build with a higher versionCode than the debug
build's versionCode = 1 (see app/build.gradle.kts) — typically a release build (from the Play
Store, a manual release, or a prior CI artifact) already on the device.
-d (allow downgrade) is enough — it only works if the existing install is
itself debuggable, so this recovers cleanly with no data loss when the device already has a
debug build:adb install -r -d app/build/outputs/apk/debug/app-debug.apkadb uninstall sk.styk.martin.apkanalyzer
./gradlew installDebugInstalling is not running. Launch the main activity and confirm the process is alive with no immediate crash:
adb shell am start -n sk.styk.martin.apkanalyzer/.ui.ApkAnalyzerActivity
sleep 2
adb shell pidof sk.styk.martin.apkanalyzer # a PID means it's running; empty means it crashed on launchIf pidof comes back empty, pull the crash from logcat rather than guessing:
adb logcat -d -t 200 | grep -A 30 "FATAL EXCEPTION"adb devices -l showed a device (not unauthorized/offline) before installing-r -d / uninstall path in Step 3, with
explicit user confirmation before any uninstallam start and pidof returned a PID (not empty)navigate-app-adb skill to
do this via adb instead of a human tapping through the device© MartinStyk, 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
Just SKILL.md in .claude/skills/run-app of MartinStyk/apk-analyzer.
Open the folder on GitHubat commit d807559
Run App 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 |
|---|---|---|---|---|---|---|
| Run App this skillMartinStyk/apk-analyzer | 369 | — | ~932 | Automated safety check: Pass | GPL-3.0 | |
| Phone HarnessShawnPana/phone-harness | 3.2k | — | ~4.3k | Automated safety check: Pass | MIT | |
| Maa Issue Log AnalysisMaaAssistantArknights/MaaAssistantArknights | 24k | — | ~4k | Automated safety check: Pass | AGPL-3.0 | |
| Mobile QAtloncorp/tlon-apps | 107 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Store Listing Screenshotstherxmv/Telegram-Themer | 119 | — | ~2.5k | Automated safety check: Pass | None | |
| Maestro ImproveReinaMacCredy/maestro | 233 | — | ~1.9k | Automated safety check: Pass | MIT |
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.
MaaAssistantArknights/MaaAssistantArknights
分析 MaaAssistantArknights 上游仓库公开 Issue(https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/...
tloncorp/tlon-apps
Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.
therxmv/Telegram-Themer
Generate TelegramThemer's Play Store listing images — capture the 8 required app screenshots on a running emulator/device by driving the real UI with adb, then composite them into the final…
ReinaMacCredy/maestro
Turn filed lessons into the smallest doctrine edit. An agent skill from ReinaMacCredy/maestro.
yang1ming/android-harness
Direct Android device control through ADB. An agent skill from yang1ming/android-harness.
MartinStyk/apk-analyzer
A skill your agent uses to review production Crashlytics crashes and non-fatals for the latest release and file a GitHub issue for each one that isn't tracked yet.
MartinStyk/apk-analyzer
A skill your agent uses to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix.
MartinStyk/apk-analyzer
A skill your agent uses to record or convert ApkAnalyzer app flows into screenshots or GIFs for the README or product docs.
MartinStyk/apk-analyzer
A skill your agent uses when creating a new reusable Compose UI component that should live in core:ui-library.
MartinStyk/apk-analyzer
A skill your agent uses when creating a new core or shared library module for domain logic, data access, repositories, managers, or utilities.
MartinStyk/apk-analyzer
A skill your agent uses when creating a new feature module, screen, or feature area.
Categories
A skill your agent uses to build, install, and launch ApkAnalyzer on a connected device or emulator, or to verify a code change actually works at runtime rather than just compiling. Run App is an agent skill from MartinStyk/apk-analyzer. Use to build, install, and launch ApkAnalyzer on a connected device or emulator, or to verify a code change actually works at runtime rather than just compiling.
Run App fits situations like: launch ApkAnalyzer on a connected device; verify a code change actually works at runtime rather than just compiling.
Run `npx skills add MartinStyk/apk-analyzer --skill run-app -a claude-code`. Or copy the skill folder (.claude/skills/run-app in MartinStyk/apk-analyzer) into .claude/skills/run-app in your project. Claude Code loads it when a task matches its description.
Run `npx skills add MartinStyk/apk-analyzer --skill run-app -a codex`. Or copy the skill folder (.claude/skills/run-app in MartinStyk/apk-analyzer) into .agents/skills/run-app 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 MartinStyk/apk-analyzer --skill run-app -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-app, .gemini/skills/run-app, .github/skills/run-app and .opencode/skills/run-app in your project.
Going by SKILL.md and its folder, Run App needs the command-line tools its instructions call (adb).
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.
Run App 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.
About 932 tokens (SKILL.md is roughly 3.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Run App: Phone Harness (ShawnPana/phone-harness, 3.2k stars), Maa Issue Log Analysis (MaaAssistantArknights/MaaAssistantArknights, 24k stars), Mobile QA (tloncorp/tlon-apps, 107 stars) and Store Listing Screenshots (therxmv/Telegram-Themer, 119 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
MartinStyk (a GitHub user) maintains it in MartinStyk/apk-analyzer, which has 369 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 5, 2026.
Source: MartinStyk/apk-analyzer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.