MAUI UI Test Writer
dotnet/maui
Writes UI tests that reproduce a GitHub issue in .NET MAUI and keeps iterating until the tests actually fail, proving they catch the bug.
A skill your agent uses to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos.
$ npx skills add skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install skydoves/android-testing-skills capturing-screenshots-and-screenrecord --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/skydoves/android-testing-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/adb/capture/capturing-screenshots-and-screenrecord .claude/skills/capturing-screenshots-and-screenrecord && 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 "capturing-screenshots-and-screenrecord" agent skill from https://github.com/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecord into .claude/skills/capturing-screenshots-and-screenrecord/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "capturing-screenshots-and-screenrecord", 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/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecordType 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 skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install skydoves/android-testing-skills capturing-screenshots-and-screenrecord --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/skydoves/android-testing-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/adb/capture/capturing-screenshots-and-screenrecord .agents/skills/capturing-screenshots-and-screenrecord && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "capturing-screenshots-and-screenrecord" agent skill from https://github.com/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecord into .agents/skills/capturing-screenshots-and-screenrecord/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "capturing-screenshots-and-screenrecord", 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 skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install skydoves/android-testing-skills capturing-screenshots-and-screenrecord --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/skydoves/android-testing-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/adb/capture/capturing-screenshots-and-screenrecord .cursor/skills/capturing-screenshots-and-screenrecord && 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 "capturing-screenshots-and-screenrecord" agent skill from https://github.com/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecord into .cursor/skills/capturing-screenshots-and-screenrecord/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "capturing-screenshots-and-screenrecord", 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/skydoves/android-testing-skills.git --path adb/capture/capturing-screenshots-and-screenrecord--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 skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install skydoves/android-testing-skills capturing-screenshots-and-screenrecord --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/skydoves/android-testing-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/adb/capture/capturing-screenshots-and-screenrecord .gemini/skills/capturing-screenshots-and-screenrecord && 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 "capturing-screenshots-and-screenrecord" agent skill from https://github.com/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecord into .gemini/skills/capturing-screenshots-and-screenrecord/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "capturing-screenshots-and-screenrecord", 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 skydoves/android-testing-skills capturing-screenshots-and-screenrecordInstalls 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 skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/skydoves/android-testing-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/adb/capture/capturing-screenshots-and-screenrecord .github/skills/capturing-screenshots-and-screenrecord && 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 "capturing-screenshots-and-screenrecord" agent skill from https://github.com/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecord into .github/skills/capturing-screenshots-and-screenrecord/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "capturing-screenshots-and-screenrecord", 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 skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install skydoves/android-testing-skills capturing-screenshots-and-screenrecord --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/skydoves/android-testing-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/adb/capture/capturing-screenshots-and-screenrecord .opencode/skills/capturing-screenshots-and-screenrecord && 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 "capturing-screenshots-and-screenrecord" agent skill from https://github.com/skydoves/android-testing-skills/tree/main/adb/capture/capturing-screenshots-and-screenrecord into .opencode/skills/capturing-screenshots-and-screenrecord/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "capturing-screenshots-and-screenrecord", 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.
capturing-screenshots-and-screenrecordA skill your agent uses to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos.
Capturing Screenshots And Screenrecord is an agent skill from skydoves/android-testing-skills. Use this skill to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos. Covers adb shell screencap -p (PNG screenshot), adb exec-out screencap -p out.png (binary-clean stream that avoids CRLF translation on Windows), adb shell screenrecord with --size, --bit-rate, --time-limit, --rotate, --bugreport, --verbose flags, the 3-minute hard cap, scoped-storage rules for /sdcard/ on API 30+, and the JUnit4 TestWatcher capture-on-failure pattern that grabs a…
Its SKILL.md is about 3.7k 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 and Failing and flaky tests. It works with Android. The repository describes itself as: ⚡️ A set of skills for Android testing: Compose UI, AndroidX Test, JVM unit tests, and ADB. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 8665ed5. 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.
Capturing Screenshots And Screenrecord loads about 3.7k tokens when it runs. Until then it costs about 204 tokens; SKILL.md has 1,212 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 skydoves/android-testing-skills at commit 8665ed5, republished under its Apache-2.0 licence (© skydoves). 1,212 words, ~3,733 tokens.
.claude/skills/capturing-screenshots-and-screenrecord/SKILL.md (or your agent's skills folder).This skill covers grabbing PNG screenshots and MP4 screen recordings from a device through adb, plus the JUnit4 TestWatcher pattern for capturing on test failure. It does not cover Android Studio's screenshot tool, Compose captureToImage(), or third-party streaming tools (scrcpy/Vysor).
adb shell screencap /sdcard/out.png produces a corrupt file — the missing -p flag wrote raw RGBA, not PNG.adb exec-out screencap -p.captureToImage() / Roborazzi / Paparazzi. Those are unit-test mechanisms and live under the Compose set, not ADB.screenrecord cannot stream.../../control/injecting-input-and-state/SKILL.md.../../transfer/extracting-test-artifacts/SKILL.md.adb get-state returns device. See ../../devices/connecting-to-devices/SKILL.md.screenrecord: device API 19+ (Android 4.4) — screenrecord was added in KitKat.screenrecord + Wear OS: not supported. The utility refuses (developer.android.com/tools/adb#screenrecord)./sdcard/ writes on API 30+: scoped-storage rules apply; the shell user retains FUSE/sdcardfs access, but app-private writes route through /sdcard/Android/data/<pkg>/.screencap — PNG screenshots"The
screencapcommand is a shell utility for taking a screenshot of a device display." — developer.android.com/tools/adb#screencap
screencap [-h] [-p] [-d <displayId>] [<path-on-device>]| Flag | Meaning |
|---|---|
| (no flag) | Writes raw RGBA framebuffer to file. Not a PNG. |
-p | Encode as PNG. Required when streaming to stdout for the host. |
-d <displayId> | Capture a specific logical display (multi-display devices). |
-h | Help. |
Three idiomatic invocations:
# 1. Save to device, then pull (good when the test continues running).
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png ./screen.png
# 2. Stream PNG bytes back to host without an intermediate file.
adb exec-out screencap -p > screen.png
# 3. Multi-display capture: external display + main.
adb shell screencap -p -d 0 /sdcard/main.png
adb shell screencap -p -d 1 /sdcard/external.pngexec-out vs shell — the binary-clean trapadb shell sets up a PTY by default, which on some hosts (notably Windows) translates \n into \r\n on the way out. For binary streams (PNG, MP4, tar archives) this corrupts the file. adb exec-out is the binary-clean stdout variant.
Recipe — never use adb shell screencap -p > out.png for the streaming variant on Windows. Always:
adb exec-out screencap -p > out.pngFor files written on the device first and pulled afterwards, the issue does not apply (adb pull is binary-clean).
screenrecord — MP4 screen recording"The
screenrecordcommand is a shell utility for recording the display of devices running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4 file." — developer.android.com/tools/adb#screenrecord
screenrecord [--size WIDTHxHEIGHT] [--bit-rate RATE] [--time-limit TIME]
[--rotate] [--bugreport] [--verbose] <path-on-device>| Flag | Verbatim meaning (developer.android.com/tools/adb#screenrecord) |
|---|---|
--help | "Display command syntax and options". |
--size WxH | "Set the video size. The default value is the device's native display resolution (if supported), 1280x720 if not." |
--bit-rate R | "Set the video bit rate for the video, in megabits per second. The default value is 20Mbps." |
--time-limit T | "Set the maximum recording time, in seconds. The default and maximum value is 180 (3 minutes)." |
--rotate | "Rotate the output 90 degrees. This feature is experimental." |
--bugreport | Embeds a textual frame info / timestamp overlay used by bug-report attachments. |
--verbose | "Display log information on the command-line screen." |
screenrecord writes a single MP4 to the device-side path; it does not stream to stdout. For live mirroring (presentations, demos), use scrcpy or Vysor (out of scope for this skill — both bypass screenrecord entirely).
| Path | When |
|---|---|
/sdcard/run.mp4 | Default. User-visible video. Scoped-storage rules apply on API 30+ but shell user has FUSE/sdcardfs access. |
/data/local/tmp/run.mp4 | Use when the test app must produce output before the SD card is mounted, or to avoid touching the public store. Always pullable by shell. |
screenrecord runs until --time-limit elapses or it receives SIGINT. From an interactive shell, Ctrl+C. From a script, send the signal to the on-device process:
adb shell screenrecord --time-limit 180 /sdcard/run.mp4 &
REC=$!
# … run instrumentation; on failure, send SIGINT to the on-device process …
adb shell pkill -INT screenrecord
wait $REC
adb pull /sdcard/run.mp4 ./run.mp4--bugreport overlay--bugreport adds a frame-info + timestamp overlay to every frame, useful for QA repros where the bug-report-side timestamp must align with logcat. Pair with adb logcat -v threadtime,year,UTC to correlate frame numbers and log lines (see ../../observability/extracting-logs-with-logcat/SKILL.md).
The standard pattern: a TestRule or TestWatcher fires failed() on test failure, runs screencap + logcat -d, and pulls the artefacts to a per-test directory.
class CaptureOnFailureRule(private val outputDir: File) : TestWatcher() {
override fun failed(e: Throwable, description: Description) {
val testName = "${description.className}.${description.methodName}"
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
val target = File(outputDir, testName).apply { mkdirs() }
// PNG screenshot
device.executeShellCommand("screencap -p /sdcard/fail.png")
device.executeShellCommand("logcat -d -v threadtime").let { log ->
File(target, "logcat.txt").writeText(log)
}
// The test process can pull /sdcard/fail.png via Context.getExternalFilesDir
// or push through TestStorageService — see ../../transfer/extracting-test-artifacts/SKILL.md.
}
}Host-side equivalent in a CI script (see ../../automation/scripting-adb-for-ci/SKILL.md for the full version):
set +e
./gradlew connectedDebugAndroidTest
RC=$?
set -e
if [ "$RC" -ne 0 ]; then
mkdir -p artifacts
adb shell screencap -p /sdcard/fail.png
adb pull /sdcard/fail.png artifacts/fail.png
adb logcat -d -v threadtime > artifacts/logcat.txt
adb logcat -d -b crash -v threadtime > artifacts/crash.txt
fi
exit $RCThis captures the device's last frame plus a logcat dump only on failure (saves CI storage on green runs). For richer per-test artefact routing, prefer the AndroidX TestStorageService API — see ../../transfer/extracting-test-artifacts/SKILL.md.
screencap without -p# WRONG
adb shell screencap /sdcard/out.png
file /sdcard/out.png # → "data" (not a PNG)
# WRONG because: without -p, screencap writes a raw RGBA framebuffer (header + naked pixel
# bytes), not a PNG. Image viewers refuse to open it. The .png extension is misleading.# RIGHT
adb shell screencap -p /sdcard/out.png
adb pull /sdcard/out.png ./out.pngadb shell screencap -p > out.png on Windows# WRONG (on Windows / certain CI hosts)
adb shell screencap -p > out.png
# WRONG because: `adb shell` allocates a PTY and translates LF to CRLF on stdout. For
# binary streams (PNG bytes) this corrupts the file.# RIGHT (binary-clean stdout)
adb exec-out screencap -p > out.png# WRONG — assumes a single screenrecord can capture 10 minutes
adb shell screenrecord --time-limit 600 /sdcard/run.mp4
# WRONG because: --time-limit is capped at 180. The utility silently truncates to 180.# RIGHT — chain
for i in 1 2 3 4; do
adb shell screenrecord --time-limit 180 /sdcard/run-$i.mp4
done
adb pull /sdcard/run-1.mp4 ./
adb pull /sdcard/run-2.mp4 ./
adb pull /sdcard/run-3.mp4 ./
adb pull /sdcard/run-4.mp4 ./
# Concatenate with ffmpeg if needed:
# ffmpeg -f concat -i list.txt -c copy out.mp4(Or switch to scrcpy for indefinite-duration captures.)
adb shell screenrecord --bugreport --time-limit 60 \
--bit-rate 8000000 --size 720x1280 /sdcard/repro.mp4
# Each frame has a frame-info + timestamp overlay aligning with logcat -v threadtime,year,UTC.
adb pull /sdcard/repro.mp4 ./repro.mp4
adb logcat -d -v threadtime,year,UTC > repro-logcat.txt-p to screencap for PNG output. Without it, the file is raw RGBA and unusable in image viewers.adb exec-out screencap -p > out.png over adb shell screencap -p > out.png for streaming captures, especially on Windows or any CI host where \n → \r\n translation may apply.screenrecord --time-limit as bounded by 180 s. Anything longer requires chaining or scrcpy.screenrecord with adb shell pkill -INT screenrecord (not kill -9 from the host) — SIGKILL leaves the MP4 unfinalised and unplayable.screenrecord captures audio — it does not (developer.android.com/tools/adb#screenrecord).screenrecord on Wear OS — unsupported.screenrecord --bugreport with a logcat -v threadtime,year,UTC dump captured at the same time. The overlay is otherwise hard to correlate.file ./out.png reports PNG image data after adb shell screencap -p /sdcard/out.png && adb pull /sdcard/out.png.adb exec-out screencap -p > out.png (no \r\n corruption).screencap and logcat -d only when the test exit code is non-zero.screenrecord --time-limit <N> with N > 180 exists in any script.kill -9 on a screenrecord process — only pkill -INT screenrecord so the MP4 finalises.Class.method.screencap syntax, -p flag, exec-out streaming.screenrecord syntax, flags, hard limits ("Audio is not recorded", 180 s cap, no Wear OS, no rotation mid-recording).exec-out vs shell distinction.tasks/research/A2-adb-shell-commands.md — full screencap / screenrecord flag tables.tasks/research/A3-adb-observability-automation.md — capture-on-failure CI pattern; exec-out rationale.../../architecture/understanding-adb-architecture/SKILL.md — server / daemon / adb shell vs adb exec-out.../../devices/connecting-to-devices/SKILL.md — adb get-state, multi-device targeting.../../devices/connecting-over-wifi/SKILL.md — adb pair for wireless capture.../../apps/installing-and-managing-apps/SKILL.md — installing APKs to capture against.../../tests/running-instrumented-tests-via-adb/SKILL.md — am instrument invocation.../../control/injecting-input-and-state/SKILL.md — driving gestures before capturing.../../observability/extracting-logs-with-logcat/SKILL.md — companion logcat capture in capture-on-failure.../../transfer/extracting-test-artifacts/SKILL.md — adb pull and TestStorageService.../../automation/scripting-adb-for-ci/SKILL.md — full CI capture-on-failure pattern.../../../instrumentation/runner/running-instrumented-tests-with-androidjunit4/SKILL.md — the JUnit4 TestWatcher mechanic.../../../instrumentation/scenarios/launching-activities-with-activityscenario/SKILL.md — driving an Activity to the failing state before capture.../../../fundamentals/strategies/applying-testing-strategies/SKILL.md — when capture-on-failure beats screenshot-every-run.© skydoves, 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
Just SKILL.md in adb/capture/capturing-screenshots-and-screenrecord of skydoves/android-testing-skills.
Open the folder on GitHubat commit 8665ed5
Capturing Screenshots And Screenrecord 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 |
|---|---|---|---|---|---|---|
| Capturing Screenshots And Screenrecord this skillskydoves/android-testing-skills | 333 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| MAUI UI Test Writerdotnet/maui | 23k | — | ~3k | Automated safety check: Pass | MIT | |
| Phone HarnessShawnPana/phone-harness | 3.2k | — | ~4.3k | Automated safety check: Pass | MIT | |
| Mobile QAtloncorp/tlon-apps | 107 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Androidyang1ming/android-harness | 176 | — | ~259 | Automated safety check: Pass | MIT | |
| Debug Receiverstimusus/Shuttle2 | 229 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 |
dotnet/maui
Writes UI tests that reproduce a GitHub issue in .NET MAUI and keeps iterating until the tests actually fail, proving they catch the bug.
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.
tloncorp/tlon-apps
Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.
yang1ming/android-harness
Direct Android device control through ADB. An agent skill from yang1ming/android-harness.
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…
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…
skydoves/android-testing-skills
A skill your agent uses to verify Compose layout measurements from a UI test using assertWidthIsEqualTo, assertHeightIsEqualTo, assertWidthIsAtLeast, assertHeightIsAtLeast…
skydoves/android-testing-skills
A skill your agent uses to verify a Compose semantics node's properties from a UI test using assertExists, assertDoesNotExist, assertIsDisplayed, assertIsNotDisplayed, assertIsDeactivated…
skydoves/android-testing-skills
A skill your agent uses to render every Jetpack Compose @Preview as a screenshot on a real Android device or emulator and publish a browsable HTML catalog from CI.
skydoves/android-testing-skills
A skill your agent uses to pick the correct Compose UI test entry point.
skydoves/android-testing-skills
A skill your agent uses to pick which behaviors to cover in an Android test suite using Google's five-category state vocabulary plus the explicit "what NOT to test" list from…
skydoves/android-testing-skills
A skill your agent uses to drive Jetpack Compose UI from tests with the high-level action APIs that do not go through a gesture builder — performClick, performScrollTo, performScrollToIndex…
Works with
Categories
A skill your agent uses to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos. Capturing Screenshots And Screenrecord is an agent skill from skydoves/android-testing-skills. Use this skill to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos.
Capturing Screenshots And Screenrecord fits situations like: capture visual artefacts from a device for test failures; golden image generation.
Run `npx skills add skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a claude-code`. Or copy the skill folder (adb/capture/capturing-screenshots-and-screenrecord in skydoves/android-testing-skills) into .claude/skills/capturing-screenshots-and-screenrecord in your project. Claude Code loads it when a task matches its description.
Run `npx skills add skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a codex`. Or copy the skill folder (adb/capture/capturing-screenshots-and-screenrecord in skydoves/android-testing-skills) into .agents/skills/capturing-screenshots-and-screenrecord 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 skydoves/android-testing-skills --skill capturing-screenshots-and-screenrecord -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/capturing-screenshots-and-screenrecord, .gemini/skills/capturing-screenshots-and-screenrecord, .github/skills/capturing-screenshots-and-screenrecord and .opencode/skills/capturing-screenshots-and-screenrecord in your project.
Going by SKILL.md and its folder, Capturing Screenshots And Screenrecord 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.
Capturing Screenshots And Screenrecord is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k 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 Capturing Screenshots And Screenrecord: MAUI UI Test Writer (dotnet/maui, 23k stars), Phone Harness (ShawnPana/phone-harness, 3.2k stars), Mobile QA (tloncorp/tlon-apps, 107 stars) and Android (yang1ming/android-harness, 176 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
skydoves (a GitHub user) maintains it in skydoves/android-testing-skills, which has 333 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on May 25, 2026.
Source: skydoves/android-testing-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.