Agent skill

Watch Gradle Tests

by parawanderer in parawanderer/OpenTagViewer

Watch a Gradle instrumented-test run to a verdict without hand-writing greps.

MITAuto-check passedSecurity

Install Watch Gradle Tests

skills CLI
$ npx skills add parawanderer/OpenTagViewer --skill watch-gradle-tests -a claude-code

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

GitHub CLI
$ gh skill install parawanderer/OpenTagViewer watch-gradle-tests --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/parawanderer/OpenTagViewer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/watch-gradle-tests .claude/skills/watch-gradle-tests && 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
watch-gradle-tests
GitHub stars
420
Token cost
~1.4k tokens
SKILL.md length
757 words
Files
2
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Watch a Gradle instrumented-test run to a verdict without hand-writing greps.

  • Running :app:testEmulatorDebugAndroidTest
  • SKILL.md covers Why this exists, What it knows that a grep does…, The two silent hangs, which… and Related
  • Runs Python scripts from its folder; calls python and adb
  • :app:connectedDebugAndroidTest in the background

What it does

Watch Gradle Tests is an agent skill from parawanderer/OpenTagViewer. Watch a Gradle instrumented-test run to a verdict without hand-writing greps. Use whenever running :app:testEmulatorDebugAndroidTest or :app:connectedDebugAndroidTest in the background.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `watch_tests.py`).

It sits in Security. It works with Gradle. The repository describes itself as: Track your AirTags, iDevices and other FindMy devices on Android. The licence is MIT.

When your agent uses it

  • Running :app:testEmulatorDebugAndroidTest
  • :app:connectedDebugAndroidTest in the background

Example prompts

  • “/watch-gradle-tests”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 335b258. 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 script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • adb

    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

Watch Gradle Tests loads about 1.4k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 757 words of instructions outside code blocks.

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

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 parawanderer/OpenTagViewer at commit 335b258, republished under its MIT licence (© parawanderer). 757 words, ~1,422 tokens.

Download SKILL.mdSave it as .claude/skills/watch-gradle-tests/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
watch-gradle-tests
description
Watch a Gradle instrumented-test run to a verdict without hand-writing greps. Use whenever running :app:testEmulatorDebugAndroidTest or :app:connectedDebugAndroidTest in the background.

Watching a test run to a verdict

The emulator suite takes upwards of ten minutes, so it gets backgrounded, so something has to report on it. Do not write that something fresh each time. Use the script.

bash
# 1. Start the run, redirected to a file.
./gradlew :app:testEmulatorDebugAndroidTest --console=plain > tmp/run.log 2>&1

# 2. Prove the watcher sees the log before trusting it. One command, always.
python .claude/skills/watch-gradle-tests/watch_tests.py tmp/run.log --once

# 3. Arm a Monitor on the same script with no --once.
python .claude/skills/watch-gradle-tests/watch_tests.py tmp/run.log

Each line it prints is one event: FAILED <Class>.<method> as each failure appears, STALLED … if the log stops growing, and FINISHED + VERDICT at the end.

Give every run its own log file

Reusing one name races the watcher against the run that is starting. Arm a Monitor while the previous run's log is still on disk and it reads that — matches its BUILD line, prints its verdict, and reports a finished run that has not started. The XML age in VERDICT is the only hint, and "2 min old" looks perfectly current.

That cost a wrong conclusion here: a stale verdict was read as the new run's, its crash trace pointed at a line number the fix had already moved, and the obvious inference — "the APK did not rebuild" — was wrong twice over.

bash
log=tmp/run-$(date +%H%M%S).log
./gradlew :app:testEmulatorDebugAndroidTest --console=plain > "$log" 2>&1 &
python .claude/skills/watch-gradle-tests/watch_tests.py "$log"
Never wrap --once in your own sleep loop

That is the shape step 3 exists to replace, and it looks close enough to right to pass review:

bash
# WRONG - and this exact loop cost 1h22m
for i in $(seq 1 110); do
  grep -qE "BUILD SUCCESSFUL|BUILD FAILED" tmp/run.log && { ...--once; break; }
  sleep 20
done

It waits for a terminal line and nothing else, so it is blind to the run stopping without one — which is the failure worth catching. A suite hung 25 minutes on a single test produced no new output and no verdict, so the loop sat silent, then hit its own limit and exited 0 with no output at all: indistinguishable from success. Meanwhile watch mode would have said STALLED no output for 8 min, at 424/687 seventeen minutes earlier.

Two rules follow, and they are the same rule twice:

  • Watch progress, not just completion. "Still running" and "wedged" look identical unless something is measuring the gap between outputs.
  • A watcher that can exit silently is not a watcher. If yours can end without printing, make the last thing it does print where the run got to.

Why this exists

Three hand-written monitors in one afternoon each matched nothing, and each looked like a green run:

What was writtenWhy it matched nothing
grep "(0 skipped)"the run had 5 skipped
grep "\S+ \[testEmulator\]"there is no space before [testEmulator]
... | head -25truncated before the verdict, and head's exit code hid it

All three exited 0. Silence from a monitor is indistinguishable from silence from a healthy run, so a red suite was reported as green until the log was read by hand. That is the whole argument for a script: the patterns get fixed once, and --once proves they still match before anything depends on them.

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

What it knows that a grep does not

  • The XML has the last word. The console can truncate, interleave, or count a retry (605/600 is a real line from this repo). verdict_from_xml reads app/build/outputs/androidTest-results/, and scopes to the newest run's own directory — AGP keeps connected/ and managedDevice/ side by side and clears neither, so summing everything reported a 22-test run as 74. It always prints the results' age, because a verdict that is quietly ten minutes old is the same bug wearing a coat.
  • No results at all is not zero failures. A run that dies before any test reports writes no XML, and reading that as success is exactly how a red build gets called green.
  • A stall is a result. No output for eight minutes gets reported, with a diagnosis, rather than looking like a slow test for another twenty.

The two silent hangs, which need opposite fixes

The script separates them by whether any test has reported. Do not guess between them — the distinction is in the output.

SymptomCauseFix
No test ever reports, no managed AVD in adb devicesleaked managed-device slots — MDLockCount above zero with nothing running./gradlew --stop && rm ~/.android/avd/gradle-managed/active_gradle_devices
Tests ran, then stopped mid-suitethe device died under themadb logcat -b crash — the emulator's Bluetooth stack aborting has done this here
connectedDebugAndroidTest fails to install or hangs at oncestale ADB bridge inside the Gradle daemonrestart the emulator and ./gradlew --stop — either alone leaves it broken

Killing a run is what leaks a slot, and every Ctrl-C adds one. Prefer letting a run finish; if you must kill one, clear the count in the same breath rather than meeting it next time.

  • AGENTS.md, "Building and testing" — the managed device, and why it beats a hand-started emulator.
  • .claude/skills/watch-pr/ — the same discipline for CI: prove the poll body emits before arming a Monitor on it.

© parawanderer, MIT. 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 1 other file in .claude/skills/watch-gradle-tests of parawanderer/OpenTagViewer.

  • SKILL.md
  • watch_tests.py

Open the folder on GitHubat commit 335b258

Compare with similar skills

Watch Gradle Tests 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.

Watch Gradle Tests compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Watch Gradle Tests this skillparawanderer/OpenTagViewer420—~1.4kAutomated safety check: PassMIT
Upgrade Notesgetknit/knit133—~1.2kAutomated safety check: PassGPL-3.0
Security Vulnerabilities Patcheraxelixlabs/axelix148—~4.2kAutomated safety check: PassLGPL-3.0
Review Dependenciestobihagemann/turbo408—~1.5kAutomated safety check: PassMIT
Spring AImagnus919/agent-skills115—~1.2kAutomated safety check: PassMIT
Dependency Audit Assistantaiskillstore/marketplace433—~2.2kAutomated safety check: NotesNone

Similar skills

  • Upgrade Notes

    getknit/knit

    Read the vendor's breaking changes, deprecations, migration notes and CVEs for every version between the one pinned now and the one being moved to, through the whatsnew MCP server's upgradenotes tool.

    133 GitHub stars~1.2k tokensUpdated yesterday
    SecurityAuto-check passed
  • Create batched Dependabot-style pull requests for GitHub security findings in axelixlabs/axelix, grouped by dependency surface such as master/front-end, master/build.gradle.kts, or starter Gradle…

    148 GitHub stars~4.2k tokensUpdated today
    SecurityAuto-check passed
  • Review Dependencies

    tobihagemann/turbo

    Detect package managers and CI action pins, then discover outdated or vulnerable dependencies.

    408 GitHub stars~1.5k tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed
  • Spring AI

    magnus919/agent-skills

    Diagnose and operate Spring AI projects with version-aware Maven or Gradle checks for ChatClient, advisors, retrieval, conversation memory, tool/MCP boundaries, streaming, configuration, and…

    115 GitHub stars~1.2k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Dependency Audit Assistant

    aiskillstore/marketplace

    Reviews package dependencies for security vulnerabilities, outdated versions, and license compliance.

    433 GitHub stars~2.2k tokensUpdated yesterday
    SecurityAuto-check: notes
  • Gradle Build Performance

    Moustachauve/WLED-Android

    Debug and optimize Android/Gradle build performance. An agent skill from Moustachauve/WLED-Android.

    169 GitHub starsUsed in 3 repos~2k tokens
    DevOps & CloudAuto-check passed

More from parawanderer/OpenTagViewer

  • Add Strings

    parawanderer/OpenTagViewer

    Add or back-fill user-facing Android strings across all locales in OpenTagViewer.

    420 GitHub stars~1.2k tokensUpdated 22 days ago
    Auto-check passed
  • Device Screenshots

    parawanderer/OpenTagViewer

    Render app UI on the Gradle managed device and look at the result without spending a fortune in vision tokens.

    420 GitHub stars~1.4k tokensUpdated 22 days ago
    Auto-check passed
  • Investigating Bug Reports

    parawanderer/OpenTagViewer

    Read a GitHub bug report completely - every comment and every image - before diagnosing or asking the reporter for more.

    420 GitHub stars~1.7k tokensUpdated 22 days ago
    Auto-check passed
  • Watch PR

    parawanderer/OpenTagViewer

    Watch a pushed PR's checks with the Monitor tool, and act on the verdict.

    420 GitHub stars~1.9k tokensUpdated 22 days ago
    Auto-check passed

Works with

Categories

Questions about Watch Gradle Tests

What does Watch Gradle Tests do?

Watch a Gradle instrumented-test run to a verdict without hand-writing greps. Watch Gradle Tests is an agent skill from parawanderer/OpenTagViewer. Watch a Gradle instrumented-test run to a verdict without hand-writing greps.

When should I use Watch Gradle Tests?

Watch Gradle Tests fits situations like: running :app:testEmulatorDebugAndroidTest; :app:connectedDebugAndroidTest in the background.

How do I install Watch Gradle Tests in Claude Code?

Run `npx skills add parawanderer/OpenTagViewer --skill watch-gradle-tests -a claude-code`. Or copy the skill folder (.claude/skills/watch-gradle-tests in parawanderer/OpenTagViewer) into .claude/skills/watch-gradle-tests in your project. Claude Code loads it when a task matches its description.

How do I install Watch Gradle Tests in Codex?

Run `npx skills add parawanderer/OpenTagViewer --skill watch-gradle-tests -a codex`. Or copy the skill folder (.claude/skills/watch-gradle-tests in parawanderer/OpenTagViewer) into .agents/skills/watch-gradle-tests in your project. Codex loads it when a task matches its description.

Can I use Watch Gradle Tests 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 parawanderer/OpenTagViewer --skill watch-gradle-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/watch-gradle-tests, .gemini/skills/watch-gradle-tests, .github/skills/watch-gradle-tests and .opencode/skills/watch-gradle-tests in your project.

What does Watch Gradle Tests need to run?

Going by SKILL.md and its folder, Watch Gradle Tests needs Python for the scripts in its folder and the command-line tools its instructions call (python and adb). Our summary lists: Python 3.

Does Watch Gradle Tests 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 Watch Gradle Tests 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 Watch Gradle Tests use?

Watch Gradle Tests 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 Watch Gradle Tests use?

About 1.4k tokens (SKILL.md is roughly 5.7k 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 Watch Gradle Tests?

Skills that share tags, products or a category with Watch Gradle Tests: Upgrade Notes (getknit/knit, 133 stars), Security Vulnerabilities Patcher (axelixlabs/axelix, 148 stars), Review Dependencies (tobihagemann/turbo, 408 stars) and Spring AI (magnus919/agent-skills, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Watch Gradle Tests?

parawanderer (a GitHub user) maintains it in parawanderer/OpenTagViewer, which has 420 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 19, 2026.

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