tencent cvp skill

v1.0.1

All-in-one Android phone automation via ADB: screen analysis, touch/input, foreground app detection, app install. Use for any task that involves operating th...

0· 145·0 current·0 all-time
byalecxu@cobeizailin
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Skill name/description references 'Tencent Cloud Virtual Phone' but the runtime instructions are plain ADB commands for interacting with an Android device (uiautomator dump, screencap, input, am start, dumpsys, etc.). This is internally consistent (Tencent CVP can expose ADB), but the description could mislead users into expecting cloud API calls or credentials — none are required.
Instruction Scope
Instructions stay within the stated purpose (observe screen, interact, detect foreground app, install). They reference device files (/sdcard/window_dump.xml, /sdcard/screen.png) and local pulls (/tmp/screen.png) which are appropriate for ADB-based automation. One notable guidance: 'Last resort: web search for APK download' — this legitimately supports 'app install' but encourages obtaining APKs from the web, which increases risk of installing untrusted/malicious software onto the device.
Install Mechanism
No install spec and no code files — instruction-only. That minimizes on-disk persistence and supply-chain risk.
Credentials
The skill requires the adb binary only and declares no environment variables or credentials. There are no requests for unrelated secrets or config paths.
Persistence & Privilege
always is false and the skill does not request elevated platform privileges or attempt to modify other skills or system-wide agent settings. Autonomous invocation is allowed by default but is not a property unique to this skill.
Assessment
This skill is coherent for automating Android devices via adb. Before installing or running it, ensure you only connect it to test or disposable devices (not your personal phone), because the agent can run taps, keyevents, and install APKs. Pay special attention to any flow that downloads and installs APKs from the web — prefer official app stores or vetted APKs. If you want to limit risk, use the skill manually rather than allowing autonomous invocation, or run it against an emulator/isolated device. Also be aware the name suggests a Tencent cloud service but the skill itself uses direct ADB access; no cloud credentials are needed.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🤖 Clawdis
OSLinux · macOS
Binsadb
latestvk978e1gb4g4r6cqc0zn8eckchh834wkf
145downloads
0stars
2versions
Updated 1mo ago
v1.0.1
MIT-0
Linux, macOS

Tencent CVP — Cloud Virtual Phone Automation

Operate the Tencent Cloud Virtual Phone: observe the screen, interact with it, detect apps, and install new ones.

Core loop: Observe -> Act -> Verify. Always check the screen before and after actions.


1. Screen Analysis

UI Layout Dump (preferred)

Structured XML with every element's text, coordinates, and properties. Always try this first.

adb shell uiautomator dump && adb shell cat /sdcard/window_dump.xml

Each XML node has:

  • text — visible text
  • resource-id — element identifier
  • class — widget type (e.g. android.widget.TextView)
  • bounds — coordinates as [left,top][right,bottom]
  • clickable, enabled, focused — interaction state

Compute tap target from bounds: x = (left + right) / 2, y = (top + bottom) / 2.

Screenshot (fallback only)

Use only when uiautomator returns empty or partial XML — common with games, video players, WebView, or custom-rendered surfaces.

adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png /tmp/screen.png

Then read /tmp/screen.png for visual analysis.

Tips

  • Wake screen first: adb shell input keyevent KEYCODE_WAKEUP
  • Get resolution: adb shell wm size
  • uiautomator dump takes ~1-2s; don't spam it.

2. Input and Interaction

Touch

# Tap
adb shell input tap <x> <y>

# Long press (~1s)
adb shell input swipe <x> <y> <x> <y> 1000

# Swipe
adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>

Text Input

# ASCII only
adb shell input text "hello"

CJK / Non-ASCIIinput text does not support Chinese. Use clipboard:

adb shell am broadcast -a clipper.set -e text "中文内容"
adb shell input keyevent KEYCODE_PASTE

Key Events

adb shell input keyevent KEYCODE_HOME
adb shell input keyevent KEYCODE_BACK
adb shell input keyevent KEYCODE_ENTER
adb shell input keyevent KEYCODE_WAKEUP
adb shell input keyevent KEYCODE_POWER
adb shell input keyevent KEYCODE_APP_SWITCH
adb shell input keyevent KEYCODE_VOLUME_UP
adb shell input keyevent KEYCODE_VOLUME_DOWN

Launch Apps

# By package + activity
adb shell am start -n <package>/<activity>

# By intent (open URL)
adb shell am start -a android.intent.action.VIEW -d "https://example.com"

# From launcher (package only)
adb shell monkey -p <package> -c android.intent.category.LAUNCHER 1

3. Foreground App Detection

adb shell dumpsys window | grep mCurrentFocus | grep -v null

Output example:

  mCurrentFocus=Window{abcdef0 u0 com.tencent.mm/com.tencent.mm.ui.LauncherUI}

Output may be empty — this happens when:

  • Screen is off or locked
  • System transition in progress
  • No focused window (e.g. during boot)

When empty: wake screen (KEYCODE_WAKEUP), wait, retry. If still empty, use uiautomator dump.

Common Package Names

AppPackage
Home/Launchercom.android.launcher or vendor variant
Settingscom.android.settings
Chromecom.android.chrome
WeChatcom.tencent.mm
Alipaycom.eg.android.AlipayGphone
Douyincom.ss.android.ugc.aweme
Bilibilitv.danmaku.bili

4. App Install

Priority: MyApp (应用宝) first, then browser, then web search.

Via MyApp (应用宝)

adb shell am start -a android.intent.action.VIEW -d "market://details?id=<package_name>" -p com.tencent.android.qqdownloader

Examples:

# WeChat
adb shell am start -a android.intent.action.VIEW -d "market://details?id=com.tencent.mm" -p com.tencent.android.qqdownloader

# Alipay
adb shell am start -a android.intent.action.VIEW -d "market://details?id=com.eg.android.AlipayGphone" -p com.tencent.android.qqdownloader

After opening:

  1. Use uiautomator dump to verify the page loaded
  2. Find and tap the install/download button
  3. Wait for install, then verify

Finding Package Names

If unknown, search the web for <app name> android package name. Common pattern: reverse domain (com.company.appname).

When MyApp Fails

  • Try browser: adb shell am start -a android.intent.action.VIEW -d "https://official-site.com"
  • Last resort: web search for APK download

Comments

Loading comments...