Reply Reviews
timusus/Shuttle2
Weekly Play Store review flow for S2: fetch new reviews, draft replies, get owner approval, then post.
Refresh all wiki/Play Store gallery screenshots from a connected Android device.
$ npx skills add shortcuts/locationjoystick --skill screenshots -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install shortcuts/locationjoystick screenshots --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/shortcuts/locationjoystick.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/screenshots .claude/skills/screenshots && 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 "screenshots" agent skill from https://github.com/shortcuts/locationjoystick/tree/main/.claude/skills/screenshots into .claude/skills/screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "screenshots", 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/shortcuts/locationjoystick/tree/main/.claude/skills/screenshotsType 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 shortcuts/locationjoystick --skill screenshots -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install shortcuts/locationjoystick screenshots --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shortcuts/locationjoystick.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/screenshots .agents/skills/screenshots && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "screenshots" agent skill from https://github.com/shortcuts/locationjoystick/tree/main/.claude/skills/screenshots into .agents/skills/screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "screenshots", 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 shortcuts/locationjoystick --skill screenshots -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install shortcuts/locationjoystick screenshots --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shortcuts/locationjoystick.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/screenshots .cursor/skills/screenshots && 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 "screenshots" agent skill from https://github.com/shortcuts/locationjoystick/tree/main/.claude/skills/screenshots into .cursor/skills/screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "screenshots", 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/shortcuts/locationjoystick.git --path .claude/skills/screenshots--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 shortcuts/locationjoystick --skill screenshots -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install shortcuts/locationjoystick screenshots --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shortcuts/locationjoystick.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/screenshots .gemini/skills/screenshots && 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 "screenshots" agent skill from https://github.com/shortcuts/locationjoystick/tree/main/.claude/skills/screenshots into .gemini/skills/screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "screenshots", 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 shortcuts/locationjoystick screenshotsInstalls 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 shortcuts/locationjoystick --skill screenshots -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/shortcuts/locationjoystick.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/screenshots .github/skills/screenshots && 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 "screenshots" agent skill from https://github.com/shortcuts/locationjoystick/tree/main/.claude/skills/screenshots into .github/skills/screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "screenshots", 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 shortcuts/locationjoystick --skill screenshots -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install shortcuts/locationjoystick screenshots --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shortcuts/locationjoystick.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/screenshots .opencode/skills/screenshots && 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 "screenshots" agent skill from https://github.com/shortcuts/locationjoystick/tree/main/.claude/skills/screenshots into .opencode/skills/screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "screenshots", 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.
screenshotsRefresh all wiki/Play Store gallery screenshots from a connected Android device.
Screenshots is an agent skill from shortcuts/locationjoystick. Refresh all wiki/Play Store gallery screenshots from a connected Android device. Use this skill whenever the user asks to update, regenerate, recapture, or refresh screenshots for the wiki, docs, or Play Store. Also triggers on "run screenshot script", "capture gallery", "update docs screenshots", "screenshot-gallery", or any mention of refreshing the 01idle through 18debugstats PNGs. Always use this skill for screenshot-related tasks — don't attempt to run screenshot-gallery.sh manually without it.
Its SKILL.md is about 3.1k 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 App store release. It works with Android. The repository describes itself as: 🕹️ android app for GPS spoofing and mock locations. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 53285b4. 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:
adbgitmakeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
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.
Screenshots loads about 3.1k tokens when it runs. Until then it costs about 130 tokens; SKILL.md has 1,208 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 shortcuts/locationjoystick at commit 53285b4, republished under its MIT licence (© shortcuts). 1,208 words, ~3,140 tokens.
.claude/skills/screenshots/SKILL.md (or your agent's skills folder).Captures all 18 canonical gallery screenshots from a connected Android device using
scripts/screenshot-gallery.sh --auto, saving them to docs/wiki/screenshots/.
In --auto mode the script runs fully non-interactively: the agent executes it
directly via the Bash tool. No manual terminal steps needed.
New in v2: Screenshots 16 and 17 show the "add button" (FAB) in the top-right corner of Routes and Favorites screens. Screenshots 14 and 15 (overlays) now include service startup verification to improve reliability.
New in v3: Use --steps to run only specific steps instead of the full suite:
--steps 16,17 — run steps 16 and 17 only--steps 14-17 — run steps 14 through 17--steps 01,03,05 — run steps 1, 3, 5
Seeding (routes, favorites) still runs automatically before the first selected step.# Device connected?
adb devices | grep -v "List of" | grep "device$"
# App installed?
adb shell pm list packages | grep com.locationjoystickIf device not found: tell the user to connect their Android device with USB debugging
enabled, wait for it to appear under adb devices, then proceed.
If app not installed: run make install-on-phone (not make install) to build and
install the debug APK, then follow the onboarding section below before running the
script.
The script requires onboarding to be complete. If the app lands on the onboarding screen after install, do not ask the user to complete it manually — do it via adb:
# Grant location permissions
adb shell pm grant com.locationjoystick.app android.permission.ACCESS_FINE_LOCATION
adb shell pm grant com.locationjoystick.app android.permission.ACCESS_COARSE_LOCATION
# Grant overlay (draw over other apps) permission
adb shell appops set com.locationjoystick.app SYSTEM_ALERT_WINDOW allow
# Grant mock location permission (replaces "Select mock location app" in Developer Options)
# The app checks OPSTR_MOCK_LOCATION via AppOpsManager — this satisfies it:
adb shell appops set com.locationjoystick.app android:mock_location allow
# Verify mock location is allowed
adb shell appops get com.locationjoystick.app android:mock_location
# Expected output: MOCK_LOCATION: allowThen restart the app and dismiss the notification permission dialog (tap Allow):
adb shell am force-stop com.locationjoystick.app
sleep 1
adb shell am start -n com.locationjoystick.app/.MainActivity
sleep 3
# Tap "Allow" on the notification permission dialog (coordinates ~540,1400 on Pixel 7)
adb shell input tap 540 1400
sleep 1Verify onboarding is past by dumping the UI — you should see app content (e.g. "Favorites", "Map", "Routes") rather than "Set up locationjoystick":
adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml /tmp/ui.xml
grep -o 'text="[^"]*"' /tmp/ui.xml | sort -uOnce past onboarding, proceed to Step 1c.
Do this before running the script. The script skips seeding steps if data already exists.
Navigate to Settings and enable the "Show hot locations" toggle:
# Open the app (should already be on Idle screen)
adb shell am start -n com.locationjoystick.app/.MainActivity
sleep 2
# Dump UI and find the Settings card
adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml /tmp/ui.xml
grep -o 'text="[^"]*"' /tmp/ui.xml | sort -uIf on the Idle screen, tap Settings card (find its bounds from the dump, typically around 540,900):
# Tap Settings card on Idle screen — find exact coords from dump
adb shell input tap 540 900
sleep 2In Settings, scroll down to find "Show hot locations" toggle and enable it:
adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml /tmp/ui.xml
grep -i "hot" /tmp/ui.xmlLocate the toggle bounds from the XML (bounds="[x1,y1][x2,y2]"), compute center, and tap:
# Example — use actual bounds from dump:
adb shell input tap <CENTER_X> <CENTER_Y>
sleep 1Verify the toggle is now checked:
adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml /tmp/ui.xml
grep -A2 -i "hot" /tmp/ui.xmlNavigate back to Idle, then to Routes, and create three routes with realistic names. Use the "Add route → from map" flow. Two waypoints per route is sufficient.
Route 1 — "Morning Walk" (e.g. Central Park area, NYC):
40.7829° N, 73.9654° WRoute 2 — "Riverside Jog" (e.g. along the Seine, Paris):
48.8566° N, 2.3522° ERoute 3 — "Harbor Stroll" (e.g. Sydney Harbour):
-33.8688° S, 151.2093° EFor each route, use the RouteCreator UI via adb taps derived from uiautomator dump.
The "Add route" FAB is at the bottom right of the Routes screen. After adding both
waypoints, tap the save button (checkmark in the top bar).
Once all 3 routes exist, the script's seed phase will detect non-empty Routes and skip auto-creation. Proceed to Step 2.
cd /path/to/project && ./scripts/screenshot-gallery.sh --auto --output docs/wiki/screenshotsThe --auto flag replaces all manual pause points with adb automation:
| Phase | What --auto does |
|---|---|
| Seed (pre-screenshots) | Navigates to Routes — if empty, creates "Morning Walk" and "City Loop" routes (2 waypoints each). Then navigates to Favorites — if empty, adds Tokyo, Paris, London via coordinates dialog. Ensures steps 03, 04, 06, 07, 10 all show populated lists. |
| A (step 02: map) | Navigates to Map, taps the "start simulation" FAB to start spoofing so the map screenshot shows the running state (stop button visible, location marker active). go_idle between steps force-stops the app, ending spoofing cleanly before step 03. |
| B (step 10: route detail) | Routes already seeded; opens overflow menu on first route and taps Edit |
| C (step 14: joystick overlay) | Navigates to Map, taps "Start location simulation" FAB (content-desc substring "location simulation"), starts FloatingWidgetService, expands the widget panel (tap master FAB), taps JOYSTICK_TOGGLE (2nd feature icon after MAP_FLOATING), then collapses the panel so the joystick is the screenshot focus. Widget window position is read from dumpsys window to handle user drags. Improved: Service startup now verified via dumpsys window with retries; 3 failed attempts fall back gracefully. |
| D (step 15: widget overlay) | Widget service already running from step 14; expands the panel (tap master FAB again) for the screenshot. Improved: Service startup now verified via dumpsys window with retries. |
| E (step 16: routes add button) | Navigates to Routes list and captures the FAB (plus button) in the top-right corner. Shows the entry point for creating new routes. |
| F (step 17: favorites add button) | Navigates to Favorites list and captures the FAB (plus button) in the top-right corner. Shows the entry point for adding new favorites. |
The script will print progress for every step. Total runtime ~2–3 minutes.
To update only certain screenshots, add --steps:
# Capture steps 16 and 17 (Routes and Favorites add buttons)
./scripts/screenshot-gallery.sh --auto --steps 16,17
# Capture step 14 only (joystick overlay)
./scripts/screenshot-gallery.sh --auto --steps 14
# Capture steps 14–17 (overlays and add buttons)
./scripts/screenshot-gallery.sh --auto --steps 14-17
# Capture steps 01, 03, 05 (specific screens)
./scripts/screenshot-gallery.sh --auto --steps 01,03,05Format:
--steps 16--steps 16,17,18 (comma-separated, no spaces)--steps 14-17 (inclusive)--steps 01,03,06-09Seeding: Routes and Favorites are still seeded automatically before the first selected step if they don't exist (for steps that need populated lists). This ensures steps 03–10 always show data if selected.
The script automatically:
docs/wiki/screenshots/*_playstore.png)Expected output files (36 total: 18 source + 18 playstore variants):
01_idle.png + 01_idle_playstore.png
02_map.png + 02_map_playstore.png
03_routes.png + 03_routes_playstore.png
04_favorites.png + 04_favorites_playstore.png
05_settings.png + 05_settings_playstore.png
06_map_routes_sheet.png + 06_map_routes_sheet_playstore.png
07_map_favorites_sheet.png + 07_map_favorites_sheet_playstore.png
08_map_roaming_sheet.png + 08_map_roaming_sheet_playstore.png
09_route_creator.png + 09_route_creator_playstore.png
10_route_detail.png + 10_route_detail_playstore.png
11_map_picker.png + 11_map_picker_playstore.png
12_qr_share.png + 12_qr_share_playstore.png
14_joystick_overlay.png + 14_joystick_overlay_playstore.png
15_widget_overlay.png + 15_widget_overlay_playstore.png
16_routes_add_button.png + 16_routes_add_button_playstore.png
17_favorites_add_button.png + 17_favorites_add_button_playstore.png
17_group_sync.png + 17_group_sync_playstore.png
18_debug_stats.png + 18_debug_stats_playstore.png(Step numbers in the filenames don't line up 1:1 with the script's own
should_run_step numbers in every case — the script's in-file header comment
is the source of truth if the two ever drift.)
If any file is missing:
FloatingWidgetService started.
Fallback: manually start joystick via widget panel, position on screen, then capture with
adb exec-out screencap -p > docs/wiki/screenshots/14_joystick_overlay.pngFloatingWidgetService bound correctly.
Fallback: manually expand the widget panel, then capture with
adb exec-out screencap -p > docs/wiki/screenshots/15_widget_overlay.pngadb shell am force-stop com.locationjoystick.app && sleep 1 && adb shell am start -n com.locationjoystick.app/.MainActivityadb exec-out screencap -p > docs/wiki/screenshots/18_debug_stats.pnggit add docs/wiki/screenshots/
git diff --cached --name-only | grep screenshots/This will include both the raw *.png captures and the *_playstore.png variants.
Report how many files changed. Offer to commit alongside the user's next code change, or commit immediately if requested.
If --auto fails or device state requires human intervention, drop the flag:
./scripts/screenshot-gallery.sh --output docs/wiki/screenshotsThe script will pause at steps 10, 14, and 15 and print instructions. Tell the user what to do at each pause before they start — the pause descriptions are in the script output itself.
© shortcuts, MIT. 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/screenshots of shortcuts/locationjoystick.
Open the folder on GitHubat commit 53285b4
Screenshots 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 |
|---|---|---|---|---|---|---|
| Screenshots this skillshortcuts/locationjoystick | 104 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Reply Reviewstimusus/Shuttle2 | 229 | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Play Policy Insightsarindamxd/camerax-android | 132 | 2 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Pp Google Playmvanhorn/printing-press-library | 2.1k | — | ~3.4k | Automated safety check: Notes | Apache-2.0 | |
| Cometchat Android V6 Productioncometchat/cometchat-skills | 131 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Gplay Metadata Synchanamizuki/solopreneur | 152 | — | ~1.4k | Automated safety check: Pass | MIT |
timusus/Shuttle2
Weekly Play Store review flow for S2: fetch new reviews, draft replies, get owner approval, then post.
arindamxd/camerax-android
Automated auditor designed to verify Android applications against Google Play Policy domains.
mvanhorn/printing-press-library
Every public Google Play surface in one Go binary Trigger phrases: top grossing games on google play, google play app details for, track this app's rank over time, what changed on this play store…
cometchat/cometchat-skills
Ship a CometChat Android v6 app safely — server-minted auth tokens instead of the dev Auth Key, keeping credentials out of the APK, release-build and R8/ProGuard checks, user provisioning…
hanamizuki/solopreneur
Metadata and localization sync (including Fastlane format) for Google Play Store listings.
hanamizuki/solopreneur
Migration from Fastlane supply to gplay CLI using the gplay migrate fastlane command.
shortcuts/locationjoystick
Go/no-go audit of main before tagging a release: build pipeline, tests, doc consistency, code quality.
Works with
Categories
Refresh all wiki/Play Store gallery screenshots from a connected Android device. Screenshots is an agent skill from shortcuts/locationjoystick. Refresh all wiki/Play Store gallery screenshots from a connected Android device.
Screenshots fits situations like: the user asks to update; refresh screenshots for the wiki; run screenshot script; capture gallery.
Run `npx skills add shortcuts/locationjoystick --skill screenshots -a claude-code`. Or copy the skill folder (.claude/skills/screenshots in shortcuts/locationjoystick) into .claude/skills/screenshots in your project. Claude Code loads it when a task matches its description.
Run `npx skills add shortcuts/locationjoystick --skill screenshots -a codex`. Or copy the skill folder (.claude/skills/screenshots in shortcuts/locationjoystick) into .agents/skills/screenshots 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 shortcuts/locationjoystick --skill screenshots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/screenshots, .gemini/skills/screenshots, .github/skills/screenshots and .opencode/skills/screenshots in your project.
Going by SKILL.md and its folder, Screenshots needs the command-line tools its instructions call (adb, git and make).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. 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.
Screenshots is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 13k 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 Screenshots: Reply Reviews (timusus/Shuttle2, 229 stars), Play Policy Insights (arindamxd/camerax-android, 132 stars), Pp Google Play (mvanhorn/printing-press-library, 2.1k stars) and Cometchat Android V6 Production (cometchat/cometchat-skills, 131 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
shortcuts (a GitHub user) maintains it in shortcuts/locationjoystick, which has 104 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.
Source: shortcuts/locationjoystick on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.