Android Audio E2E
hyochan/react-native-nitro-sound
Build and run device-backed Android end-to-end checks for react-native-nitro-sound permissions, recording, playback, listeners, pause/resume, seek, speed, audio focus, lifecycle behavior, and rapid…
A skill your agent uses when editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project, or when user asks to build/deploy/verify an Android app.
$ npx skills add niki914/zafiro --skill jugg-android-dev-loop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install niki914/zafiro jugg-android-dev-loop --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/niki914/zafiro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/jugg-android-dev-loop .claude/skills/jugg-android-dev-loop && 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 "jugg-android-dev-loop" agent skill from https://github.com/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loop into .claude/skills/jugg-android-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jugg-android-dev-loop", 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/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loopType 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 niki914/zafiro --skill jugg-android-dev-loop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install niki914/zafiro jugg-android-dev-loop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niki914/zafiro.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/jugg-android-dev-loop .agents/skills/jugg-android-dev-loop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "jugg-android-dev-loop" agent skill from https://github.com/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loop into .agents/skills/jugg-android-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jugg-android-dev-loop", 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 niki914/zafiro --skill jugg-android-dev-loop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install niki914/zafiro jugg-android-dev-loop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niki914/zafiro.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/jugg-android-dev-loop .cursor/skills/jugg-android-dev-loop && 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 "jugg-android-dev-loop" agent skill from https://github.com/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loop into .cursor/skills/jugg-android-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jugg-android-dev-loop", 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/niki914/zafiro.git --path .agents/skills/jugg-android-dev-loop--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 niki914/zafiro --skill jugg-android-dev-loop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install niki914/zafiro jugg-android-dev-loop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niki914/zafiro.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/jugg-android-dev-loop .gemini/skills/jugg-android-dev-loop && 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 "jugg-android-dev-loop" agent skill from https://github.com/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loop into .gemini/skills/jugg-android-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jugg-android-dev-loop", 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 niki914/zafiro jugg-android-dev-loopInstalls 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 niki914/zafiro --skill jugg-android-dev-loop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/niki914/zafiro.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/jugg-android-dev-loop .github/skills/jugg-android-dev-loop && 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 "jugg-android-dev-loop" agent skill from https://github.com/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loop into .github/skills/jugg-android-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jugg-android-dev-loop", 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 niki914/zafiro --skill jugg-android-dev-loop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install niki914/zafiro jugg-android-dev-loop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niki914/zafiro.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/jugg-android-dev-loop .opencode/skills/jugg-android-dev-loop && 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 "jugg-android-dev-loop" agent skill from https://github.com/niki914/zafiro/tree/main/.agents/skills/jugg-android-dev-loop into .opencode/skills/jugg-android-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jugg-android-dev-loop", 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.
jugg-android-dev-loopA skill your agent uses when editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project, or when user asks to build/deploy/verify an Android app.
Jugg Android Dev Loop is an agent skill from niki914/zafiro. Use when editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project, or when user asks to build/deploy/verify an Android app. Don't trigger on a non-Android project e.g. IntelliJ plugin project or common java/kotlin project.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 40 other files, including scripts and reference files (for example `references/cli_manual.md`, `references/error_patterns.md` and `references/flow_android_test.md`).
It sits in Mobile, covering Android development. It works with Android, Kotlin, Gradle and Java. The repository describes itself as: Open-source BYOK AI agent for Android. Full phone control, native Shell & Python 3, with Skills and MCP support. Built with Material 3 Expressive. Works via Shizuku (root… The licence is MIT.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6c7f775. 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.
Ships 8 files in scripts/ (Python and Batch, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
python3From 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.
Jugg Android Dev Loop loads about 2k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 69 tokens; SKILL.md has 688 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); the scripts in this folder are not scanned.
The full file from niki914/zafiro at commit 6c7f775, republished under its MIT licence (© niki914). 688 words, ~2,047 tokens.
.claude/skills/jugg-android-dev-loop/SKILL.md (or your agent's skills folder). This skill also uses 36 other files; get the full folder from GitHub.What is Jugg? Jugg is an Android tools that bypasses full Gradle builds via incremental compilation and deployment, reducing build frequency while preserving Gradle artifacts.
This skill use Jugg CLI to drive development loop for Android: modify → build → deploy → verify → iterate.
An auto-run entry is a user-designated method (e.g. com.myapp.Test.run) that runs automatically after app launch. Agent writes verification code into it and inspects logs/UI to confirm behavior. It is the primary verification mechanism in the Jugg dev loop.
⚠️ Entry location is NOT auto-discoverable. The user must declare the fully-qualified method name in the prompt (中文或 English 均可). If not declared and not visible in context, stop and ask — do not guess or search the codebase. To author the entry body, see
references/guide_write_auto_run_entry_code.md.
Collect mandatory variables before any action. For install-only requests, skip Jugg project status collection.
| Variable | Source | Fallback |
|---|---|---|
projectDir | CLI auto-resolved from $PWD, or explicit --project-dir <path> when provided | Ask user only if neither current directory nor provided path identifies the target project |
hasAutoRunEntry | true only when the user has explicitly declared the entry's fully-qualified method (e.g. com.myapp.Test.run) in the prompt or current context. See § Auto-Run Entry. | Default false. Never infer from code search. |
enabledAndroidTest | Project status context. Reuse existing credible context first, e.g. a hook block's Jugg status plain key-value output. If absent, run python3 {SKILL_DIR}/scripts/jugg.py --console=json status and read data.enabledAndroidTest. | Default unknown. Do not assume. |
Route based on context, then load primary reference:
if user asks to install jugg CLI (e.g. "install jugg cli", "add jugg cli to PATH"):
→ references/guide_install_cli.md
elif user asks to run androidTest / instrumented unit tests, or the task is anchored in src/androidTest:
→ references/flow_android_test.md
elif hasAutoRunEntry == true:
→ references/flow_with_auto_run.md
else:
→ references/flow_compile_deploy.md| Scenario | Primary Reference | Supplementary (on-demand) |
|---|---|---|
| install jugg CLI | references/guide_install_cli.md | — |
| androidTest / instrumented unit tests | references/flow_android_test.md | references/error_patterns.md, references/cli_manual.md |
| compile/deploy | references/flow_compile_deploy.md | references/error_patterns.md, references/policy_incremental_compile_limits.md |
| verify with auto-run entry | references/flow_with_auto_run.md | references/guide_write_auto_run_entry_code.md, references/error_patterns.md |
Supplementary references load on-demand at the step that needs them.
| # | Rule |
|---|---|
| 1 | Route by scenario first; do not mix flows |
| 2 | Complete all source file edits first, then trigger compile/deploy once. Never compile after each individual file edit. |
| 3 | Any source modification must pass compilation before task is done |
python3 {SKILL_DIR}/scripts/jugg.py [--project-dir <path>] <subcommand> [options]
python3 {SKILL_DIR}/scripts/jugg.py help <subcommand>All build commands block until completion. Run compile-class commands (compile, deploy, gradle-build, and instrument) as a single foreground CLI call, wait for that process to exit, then parse its output once. These commands may trigger Gradle internally; do not start them in the background or poll status, processes, logs, files, or Git state to infer progress. Process exit is the only completion signal.
Completion means the compile/deploy job reached a terminal state; CLI does not add an extra app-ready wait.
Block the agent loop as well as the CLI. A terminal tool may return a running session before the foreground command exits. Keep waiting for that same session inside one long-running tool invocation until the process exits; do not return control to the agent after short waits. In Codex, use one functions.exec call with an outer yield_time_ms long enough for the expected build, and await exec_command plus any required write_stdin session waits inside that call. Do not set a short outer yield (such as 1–30 seconds), repeatedly call wait tools from the agent loop, send progress messages, or inspect status/logs while the command is running. If the tool forces an early yield, use its longest supported blocking wait on the same session until exit. Parse the final output once.
| Command | Purpose | When to Use |
|---|---|---|
compile | Compile modified sources, skip deploy | Default after ordinary source edits, including generic "verify/check modification" |
deploy | Compile + deploy to device | Need to launch/run app to inspect runtime/UI state, or perform device-side verification |
gradle-build | Full Gradle compile fallback | After deploy/compile retries exhausted and still failed |
clean-reinstall | Clear app data(compat with apply changes) + launch device | Only for clean APP data |
instrument | Run androidTest | Verify android test result |
python3 {SKILL_DIR}/scripts/jugg.py compile
python3 {SKILL_DIR}/scripts/jugg.py deploy
python3 {SKILL_DIR}/scripts/jugg.py gradle-build
python3 {SKILL_DIR}/scripts/jugg.py clean-reinstallpython3 {SKILL_DIR}/scripts/jugg.py instrument --source-path library1/src/androidTest/kotlin/com/example/FooTest.kt
python3 {SKILL_DIR}/scripts/jugg.py instrument --source-path library1/src/androidTest/kotlin/com/example/FooTest.kt --class com.example.FooTest
python3 {SKILL_DIR}/scripts/jugg.py instrument --source-path library1/src/androidTest/kotlin/com/example/FooTest.kt --class com.example.FooTest --method testSomething
python3 {SKILL_DIR}/scripts/jugg.py instrument --source-path library1/src/androidTest/kotlin/com/example/FooTest.kt --extras 'size=large;clearPackageData=true'python3 {SKILL_DIR}/scripts/jugg.py restart # restart app
python3 {SKILL_DIR}/scripts/jugg.py status # refresh changed files and show status summary
python3 {SKILL_DIR}/scripts/jugg.py status --refresh-changes false # skip changed-file refresh
python3 {SKILL_DIR}/scripts/jugg.py status --full-info true # return full status information and all file paths
python3 {SKILL_DIR}/scripts/jugg.py activity-stack # show current Activity stack
python3 {SKILL_DIR}/scripts/jugg.py devices # list connected devices
python3 {SKILL_DIR}/scripts/jugg.py wait-logs --marker '\[JUGG_AR\] DONE' # --marker: Java Pattern regex matched against log message; block until marker/crash/timeoutpython3 {SKILL_DIR}/scripts/jugg.py wait-logs --marker '<regex>' [--tags t1,t2] [--timeout-ms ms]
# stopReason: marker → parse logs; crash → FAIL; timeout → INCONCLUSIVE → see references/cli_manual.md §wait-logs for flagsFor UI interaction/inspection (tap, view-locate, view-inspect, layout-dump) → load references/cli_manual.md.
On compile/deploy failure, follow this order:
compile or deploy) up to 3 times.gradle-build.ssh-info (requires explicit user consent) when gradle-build is remote compile and still failing.© niki914, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 36 other files (scripts, references) in .agents/skills/jugg-android-dev-loop of niki914/zafiro.
Open the folder on GitHubat commit 6c7f775
Jugg Android Dev Loop 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 |
|---|---|---|---|---|---|---|
| Jugg Android Dev Loop this skillniki914/zafiro | 235 | — | ~2k | Automated safety check: Pass | MIT | |
| Android Audio E2Ehyochan/react-native-nitro-sound | 961 | — | ~814 | Automated safety check: Pass | MIT | |
| Kotlin Tooling Kotlin ToolchainKotlin/kotlin-agent-skills | 1.1k | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Apc BuildJoker-x-dev/AndroidProject-Compose | 102 | — | ~553 | Automated safety check: Pass | None | |
| Kotlin Tooling Agp9 MigrationJetBrains/skills | 366 | 2 repos | ~5.6k | Automated safety check: Pass | Apache-2.0 | |
| Sentry Android SDKgetsentry/sentry-for-ai | 268 | — | ~7.7k | Automated safety check: Pass | Apache-2.0 |
hyochan/react-native-nitro-sound
Build and run device-backed Android end-to-end checks for react-native-nitro-sound permissions, recording, playback, listeners, pause/resume, seek, speed, audio focus, lifecycle behavior, and rapid…
Kotlin/kotlin-agent-skills
Load when building, running, testing, packaging, linting, or configuring a Kotlin/Java project with the Kotlin Toolchain (JetBrains' unified CLI, formerly Amper), when scaffolding a new or…
Joker-x-dev/AndroidProject-Compose
管理 AndroidProject-Compose 的 Gradle、版本目录、SDK、BuildConfig、构建类型、ABI、签名、混淆、应用资源和 APK/AAB 发布流程。用户要求升级依赖、修改构建配置、替换图标或启动页、配置签名、排查构建失败、缩减包体或生成发布包时使用。
JetBrains/skills
Migrates Kotlin Multiplatform (KMP) projects to Android Gradle Plugin 9.0+.
getsentry/sentry-for-ai
Full Sentry SDK setup for Android. An agent skill from getsentry/sentry-for-ai.
Dynatrace/dynatrace-for-ai
Instruments an existing Android project (Kotlin or Java) with the Dynatrace Mobile Agent for basic monitoring.
niki914/zafiro
A skill your agent uses when the user wants to release a new Zafiro version — drafting bilingual release notes, deciding the next version number, bumping app/build.gradle.kts, tagging, and…
niki914/zafiro
A skill your agent uses when the user wants to start work in a new git worktree — "new worktree", "spin up a worktree/branch for this", "work on X in another worktree", "branch this off".
niki914/zafiro
Install a skill from a public GitHub repository onto this device.
niki914/zafiro
Create new skills, modify and improve existing skills, and measure skill performance.
niki914/zafiro
Load this skill for anything involving Termux (com.termux) — first-time SSH setup, connecting to Termux, or a Termux connection that stopped working.
niki914/zafiro
Use before writing, adding, or modifying any unit test in this repo — before creating a Test.kt file or a @Test function, and before touching an existing test after a refactor.
Categories
A skill your agent uses when editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project, or when user asks to build/deploy/verify an Android app. Jugg Android Dev Loop is an agent skill from niki914/zafiro. Use when editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project, or when user asks to build/deploy/verify an Android app.
Jugg Android Dev Loop fits situations like: editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project; user asks to build/deploy/verify an Android app; A non-Android project e.g.
Run `npx skills add niki914/zafiro --skill jugg-android-dev-loop -a claude-code`. Or copy the skill folder (.agents/skills/jugg-android-dev-loop in niki914/zafiro) into .claude/skills/jugg-android-dev-loop in your project. Claude Code loads it when a task matches its description.
Run `npx skills add niki914/zafiro --skill jugg-android-dev-loop -a codex`. Or copy the skill folder (.agents/skills/jugg-android-dev-loop in niki914/zafiro) into .agents/skills/jugg-android-dev-loop 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 niki914/zafiro --skill jugg-android-dev-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/jugg-android-dev-loop, .gemini/skills/jugg-android-dev-loop, .github/skills/jugg-android-dev-loop and .opencode/skills/jugg-android-dev-loop in your project.
Going by SKILL.md and its folder, Jugg Android Dev Loop needs Python and Windows cmd for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Jugg Android Dev Loop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Jugg Android Dev Loop: Android Audio E2E (hyochan/react-native-nitro-sound, 961 stars), Kotlin Tooling Kotlin Toolchain (Kotlin/kotlin-agent-skills, 1.1k stars), Apc Build (Joker-x-dev/AndroidProject-Compose, 102 stars) and Kotlin Tooling Agp9 Migration (JetBrains/skills, 366 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
niki914 (a GitHub user) maintains it in niki914/zafiro, which has 235 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.
Source: niki914/zafiro on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.