From adb-ops
First-run onboarding for the adb-ops plugin. Interview the user about the Android device connected via ADB — model, Android version, rooted status — then collect folder mappings (phone path to local path, with labels and use cases). Writes profile and mappings to the adb-ops workspace at <workspace>/. Use this before any other adb-ops skill, or whenever the user wants to add a new phone folder mapping.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin adb-opsThis skill uses the workspace's default tool permissions.
Establish the persistent profile for a phone the user manages via ADB.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Establish the persistent profile for a phone the user manages via ADB.
Before resolving the workspace, check for legacy data at ~/.claude/adb-ops/. If the legacy directory exists AND the new workspace is empty, move every file (profile.yaml, mappings.yaml, bloatware-log.jsonl, devices/) to the new location and delete the legacy directory. Tell the user: "Migrated adb-ops workspace from ~/.claude/adb-ops/ to ."
Resolve the workspace directory as $CLAUDE_USER_DATA/adb-ops/ if CLAUDE_USER_DATA is set; otherwise $XDG_DATA_HOME/claude-plugins/adb-ops/ if XDG_DATA_HOME is set; otherwise ~/.local/share/claude-plugins/adb-ops/. Create the directory if it doesn't exist. See the canonical convention in the claude-rudder:plugin-data-storage skill. Referred to as <workspace>/ throughout this plugin.
<workspace>/profile.yaml — ask the user whether to run onboarding first.adb installed on the host (which adb). If missing, tell the user how to install it (sudo apt install adb on Debian/Ubuntu) and stop.adb devices — if the device shows unauthorized, prompt the user to accept the dialog.Create workspace at <workspace>/ if it does not exist.
Detect device and pre-fill what ADB already knows:
adb devices -l
adb shell getprop ro.product.manufacturer
adb shell getprop ro.product.model
adb shell getprop ro.build.version.release
adb shell su -c id 2>/dev/null # rooted check — if exit 0 and uid=0, rooted
Interview the user for anything ADB can't auto-detect:
Collect folder mappings — loop until the user says they're done. For each:
camera-photos)./sdcard/DCIM/Camera). Verify it exists: adb shell ls -d <path>.~/Pictures/Phone/Camera). Create it if missing and the user agrees.pull (default), push, or bidirectional.Suggest common starter mappings if the user asks: camera photos (/sdcard/DCIM/Camera), screenshots (/sdcard/Pictures/Screenshots), downloads (/sdcard/Download), voice recorder (/sdcard/Recordings).
Write profile.yaml and mappings.yaml following the schema in skills/_shared/workspace.md. Use captured_at with ISO-8601 local time.
Summary: print the profile and mappings back to the user, show the workspace path, and list the sibling skills they can now invoke (device-status, take-screenshot, import-media, remove-bloatware, bloatware-log, pull-folder, push-folder).
If profile.yaml already exists, offer three paths:
mappings.yaml)..bak suffix first).Never silently overwrite existing mappings.