Agent Device
CallstackOfficialPublished by Callstack
- Skill
- Tool integration
- Software development
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The agent-device skill provides a structured framework for automating device interactions, including navigation, UI inspection, and input simulation. It enforces a deterministic workflow by requiring setup via bootstrap references before proceeding to exploration and interaction. The skill emphasizes read-only inspection and selector-based targeting to ensure stability, while providing specific guidance for handling different device types and platforms.
What it does
- Manages app sessions, including launching, installing, and relaunching applications.
- Performs UI inspection through snapshots and element referencing.
- Executes user-like interactions such as tapping, typing, and scrolling.
- Supports cross-platform automation for mobile, TV, and desktop environments.
- Provides structured paths for debugging, verification, and environment setup.
- Enforces safe interaction patterns by prioritizing read-only checks before mutations.
When to use it
- When you need to automate UI testing or interaction on mobile, TV, or desktop apps.
- When you need to verify app state or extract UI information from a running session.
- When you need to perform repeatable setup tasks like installing or launching specific app versions.
- When you need to perform bug hunting or pass/fail QA against acceptance criteria.
Advantages
- Promotes deterministic behavior by separating environment setup from UI interaction.
- Reduces errors by favoring selector-based targeting over fragile coordinate-based actions.
- Provides a consistent interface across diverse platforms like iOS, Android, and macOS.
- Encourages safe, reversible UI actions to prevent unintended state changes.
Usage examples
- “Open the test app on my iPhone simulator and check if the login button is visible.”
- The agent will use bootstrap-install to ensure the simulator is ready, open the app, and then use exploration to verify the presence of the login button.
- “Install the latest build of my Android app and navigate to the settings menu.”
- The agent will use the install command to deploy the APK, open the app, and perform the necessary navigation steps to reach the settings screen.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/callstackincubator/agent-device/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip agent-device.zip -d .agents/skills
Documentation by Callstack
agent-device
Use this skill as a router with mandatory defaults. Read this file first. For normal device tasks, always load references/bootstrap-install.md and references/exploration.md before acting. Use bootstrap to confirm or establish deterministic setup. Use exploration for UI inspection, interaction, and verification once the app session is open.
Default operating rules
Start conservative. Prefer read-only inspection before mutating the UI.
Use plain
snapshotwhen the task is to verify what text or structure is currently visible on screen.Use
snapshot -ionly when you need interactive refs such as@e3for a requested action or targeted query.Avoid speculative mutations. You may take the smallest reversible UI action needed to unblock inspection or complete the requested task, such as dismissing a popup, closing an alert, or clearing an unintended surface.
Do not browse the web or use external sources unless the user explicitly asks.
Re-snapshot after meaningful UI changes instead of reusing stale refs.
Prefer
@refor selector targeting over raw coordinates.Ensure the correct target is pinned and an app session is open before interacting.
Keep the loop short:
open-> inspect/act -> verify if needed ->close.
Default flow
Load references/bootstrap-install.md and references/exploration.md before acting on a normal device task.
Use bootstrap first to confirm or establish the correct target, app install, and open app session.
Once the app session is open and stable, use exploration for inspection, interaction, and verification.
Start with plain
snapshotif the goal is to read or verify what is visible.Escalate to
snapshot -ionly if you need refs for interactive exploration or a requested action.Use
get,is, orfindbefore mutating the UI when a read-only command can answer the question.End by capturing proof if needed, then
close.
QA modes
Open-ended bug hunt with reporting: use ../dogfood/SKILL.md.
Pass/fail QA from acceptance criteria: stay in this skill, start with references/bootstrap-install.md, then use the QA loop in references/exploration.md.
Required references
For every normal device task, after reading this file, load references/bootstrap-install.md first, then references/exploration.md, before acting.
Use bootstrap to confirm or establish deterministic setup, especially in sandbox or cloud environments.
Use exploration once the app session is open and stable.
Load additional references only when their scope is needed.
Decision rules
Use plain
snapshotwhen you need to verify whether text is visible.Use
snapshot -imainly for interactive exploration and choosing refs.Use
get,is, orfindwhen they can answer the question without changing UI state.Use
fillto replace text.Use
typeto append text.When a task asks to "go back", use plain
backfor predictable app-owned navigation and reserveback --systemfor platform back gestures or button semantics.Use
type --delay-msorfill --delay-msfor debounced search fields that drop characters when typed too quickly.If there is no simulator, no app install, or no open app session yet, switch to
bootstrap-install.mdinstead of improvising setup steps.Use the smallest unblock action first when transient UI blocks inspection, but do not navigate, search, or enter new text just to make the UI reveal data unless the user asked for that interaction.
Do not use external lookups to compensate for missing on-screen data unless the user asked for them.
If the needed information is not exposed on screen, say that plainly instead of compensating with extra navigation, text entry, or web search.
Prefer
@refor selector targeting over raw coordinates.
Additional references
Need logs, network, alerts, permissions, or failure triage: references/debugging.md
Need screenshots, diff, recording, replay maintenance, or perf data: references/verification.md
Need desktop surfaces, menu bar behavior, or macOS-specific interaction rules: references/macos-desktop.md
Need remote HTTP transport,
--remote-configlaunches, or tenant leases on a remote macOS host: references/remote-tenancy.md
Files
- ATTRIBUTION.mdAdded by AutoGineer920 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md4.8 KiB
- references/bootstrap-install.md9.0 KiB
- references/coordinate-system.md649 B
- references/debugging.md4.9 KiB
- references/exploration.md9.0 KiB
- references/macos-desktop.md3.3 KiB
- references/remote-tenancy.md4.9 KiB
- references/verification.md3.9 KiB
references/debugging.md
Debugging
When to open this file
Open this file when the task turns into failure triage, logs, network inspection, permission prompts, setup trouble, or unstable session behavior.
Main commands to reach for first
logs clear --restartnetwork dumplogs pathlogs doctoralert waitalert acceptoralert dismiss
Most common mistake to avoid
Do not leave logging on for normal flows or dump full log files into context. Keep debug windows short and inspect logs with grep or tail.
Canonical loop
agent-device open MyApp --platform ios
agent-device logs clear --restart
agent-device network dump 25
agent-device logs path
agent-device closeLog and network flow
Logging is off by default. Enable it only when you need a debugging window.
Default app logs live under
~/.agent-device/sessions/<session>/app.log.logs clear --restartis the fastest clean repro loop.network dump [limit] [summary|headers|body|all]parses recent HTTP(s) entries from the same session app log.logs doctorchecks backend and runtime readiness for the current session and device.logs mark "before tap"inserts a timestamped marker into the app log.Session app logs can contain runtime data, headers, or payload fragments. Review them before sharing.
logs startrequires an active app session and appends toapp.log.logs stopstops streaming.closealso stops logging.logs cleartruncatesapp.logand removes rotatedapp.log.Nfiles, and requires logging to be stopped first.logs pathreturns the log path plus metadata about the active backend and file state.network logis an alias fornetwork dump.
Operational limits:
app.logrotates toapp.log.1after 5 MB by default.network dumpscans the last 4000 app-log lines, returns up to 200 entries, and truncates header or payload fields at 2048 characters.Retention knobs:
AGENT_DEVICE_APP_LOG_MAX_BYTESAGENT_DEVICE_APP_LOG_MAX_FILES
Redaction hook:
AGENT_DEVICE_APP_LOG_REDACT_PATTERNS
Useful shell follow-up after logs path:
grep -n -E "Error|Exception|Fatal|crash" <path>
tail -50 <path>Alerts and permissions
Use alert for iOS simulator permission dialogs instead of tapping coordinates.
agent-device alert wait 5000
agent-device alert acceptalertis only supported on iOS simulators.alert acceptandalert dismissretry internally for a short window, so you usually do not need manual sleeps.iOS 16+ "Allow Paste" prompts are suppressed under XCUITest. Use
xcrun simctl pbcopy bootedwhen you need to seed simulator clipboard content directly.
Setup problems worth recognizing early
iOS snapshots do not require macOS Accessibility permissions.
iOS physical-device XCTest setup does require valid signing and provisioning.
If physical-device runner setup fails, prefer Xcode Automatic Signing first.
Optional overrides are:
AGENT_DEVICE_IOS_TEAM_IDAGENT_DEVICE_IOS_SIGNING_IDENTITYAGENT_DEVICE_IOS_PROVISIONING_PROFILEAGENT_DEVICE_IOS_BUNDLE_ID
If daemon startup is timing out during setup, increase
AGENT_DEVICE_DAEMON_TIMEOUT_MS.If daemon startup fails with stale metadata hints, clean
~/.agent-device/daemon.jsonand~/.agent-device/daemon.lock, then retry.Free Apple Developer personal-team accounts may reject generic bundle IDs. Use a unique reverse-DNS value for
AGENT_DEVICE_IOS_BUNDLE_IDwhen that happens.
Common failure patterns
snapshotreturns 0 nodes: the app may no longer be foregrounded or the UI is not stable yet. Re-open the app or retry when state settles.Logs are empty: confirm you opened an app session before
logs clear --restart.Android logs look stale after relaunch: retry the repro window after the process rebinds.
Permission prompts block the flow: wait for the alert and handle it explicitly.
If snapshots keep returning 0 nodes on an iOS simulator, restart Simulator and re-open the app.
If a macOS snapshot looks incomplete, compare with
snapshot --raw --platform macosto separate collector filtering from missing AX content.
Crash triage fast path
Always start from the session app log, then branch by platform.
agent-device logs path
grep -n -E "SIGABRT|SIGSEGV|EXC_|fatal|exception|terminated|killed|jetsam|memorystatus|FATAL EXCEPTION|Abort message" <path>iOS: if the log suggests
ReportCrash,SIGABRT, orEXC_*, inspect~/Library/Logs/DiagnosticReports.Android: if the app log is not enough, use
adb logcatforFATAL EXCEPTION,Abort message, orsignallines around process death.If no crash signature appears in app logs, stop collecting broad logs and switch to the platform-native crash source.
When to leave this file
Return to exploration.md once the app is stable again.
Load verification.md if you need evidence artifacts after reproducing the issue.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Callstack
- Publisher
- Callstack (Official)
- Source
- callstackincubator/agent-skills · plugins/vendored/.agents/skills/agent-device · commit 59e9d17
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Callstack.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download agent-device.zip