zhaojiaqi/meowhub/meowhub-device

Claude Code and agent skill by zhaojiaqi/meowhub

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Control your Android phone via MeowHub — screenshot, tap, swipe, type, open apps, execute shell commands, make/accept/end calls, and control audio channels. Use this skill whenever you need to interact with the phone's screen or perform device operations.

Install

npx vskill@latest install zhaojiaqi/meowhub/meowhub-device

SKILL.md

MeowHub Device Control

You have direct control over an Android phone through the MeowHub system-level protocol. This is real device control — equivalent to physical finger touches, undetectable by any application.

⚠️ MANDATORY: Only use $PREFIX/bin/curl — NEVER use Python/wget/scripts

你必须且只能使用 `$PREFIX/bin/curl` 命令来调用所有 API。这是唯一允许的方式。

⚠️ 重要:不要使用 `curl` 或 `/bin/curl` 或 `/system/bin/curl`!系统自带 curl 已损坏。必须使用完整路径 `$PREFIX/bin/curl`。

严格禁止:

  • ❌ 使用 python3、python、urllib、requests 或任何 Python 代码
  • ❌ 使用 wget
  • ❌ 编写任何脚本文件(.py, .sh)
  • ❌ 使用 base64 命令行工具
  • ❌ 使用 /bin/curl 或 /system/bin/curl(系统 curl 已损坏)
  • ❌ 使用裸 curl 命令(可能解析到错误的路径)

只允许:

  • ✅ $PREFIX/bin/curl(Termux 预装的 curl,完整路径)

违反此规则的任何工具调用都是错误的。如果你发现自己要写 Python,停下来,改用 $PREFIX/bin/curl。

How It Works

MeowHub provides an HTTP Bridge Server at http://127.0.0.1:18790. All device operations go through this bridge via $PREFIX/bin/curl.

Quick Reference (直接复制使用)

bash
# 截图
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/screenshot -H 'Content-Type: application/json' -d '{"quality":50}'
# 打开应用
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/open_app -H 'Content-Type: application/json' -d '{"name":"com.tencent.mm"}'
# 点击坐标
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/tap -H 'Content-Type: application/json' -d '{"x":540,"y":960}'
# 输入文字
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/type -H 'Content-Type: application/json' -d '{"text":"hello"}'
# 按键
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/press_key -H 'Content-Type: application/json' -d '{"key":"home"}'
# 检查连接
$PREFIX/bin/curl -s http://127.0.0.1:18790/api/status
# 接听来电
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/accept_call -H 'Content-Type: application/json' -d '{}'
# 挂断/拒接电话
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/end_call -H 'Content-Type: application/json' -d '{}'
# 拨打电话
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/make_call -H 'Content-Type: application/json' -d '{"number":"13800138000"}'

Standard Operation Flow (2-3 步完成)

你运行在手机本机上。截图返回 base64 图片数据,你的视觉模型可以直接分析,不需要任何中间脚本。

  1. 截图 + 分析 — 一步完成。用 $PREFIX/bin/curl 调用截图 API,返回的 image 字段(base64 JPEG)直接用你的视觉能力分析。
  2. 操作 — 根据分析结果用 $PREFIX/bin/curl 执行操作(点击、输入等)
  3. 验证 — 再用 $PREFIX/bin/curl 截图确认结果(可选)

截图 API 返回格式:

json
{"image": "<base64-jpeg>", "data": "<base64-jpeg>", "width": 1080, "height": 2340, "mimeType": "image/jpeg"}

Available Tools (29)

Connection
ToolEndpointMethodDescription
check_connection/api/statusGETCheck bridge & socket connection status
Visual & Information
ToolEndpointMethodKey Parameters
screenshot/api/screenshotPOSTquality(1-100), maxSize(resolution)
get_ui_tree/api/get_ui_treePOST(none)
find_element/api/find_elementPOSTtext, resourceId, className
read_ui_text/api/read_ui_textPOSTfilter, exclude
get_device_info/api/device_infoPOSTtype: apps/battery/storage/network/all
Touch & Input
ToolEndpointMethodKey Parameters
tap/api/tapPOSTx, y
long_click/api/long_clickPOSTx, y
swipe/api/swipePOSTstartX, startY, endX, endY, duration(ms)
scroll/api/scrollPOSTdirection: up/down/left/right
type_text/api/typePOSTtext
press_key/api/press_keyPOSTkey: home/back/power/recent/volume_up/volume_down/enter
click_by_text/api/click_by_textPOSTtext, index(if multiple)
App Management
ToolEndpointMethodKey Parameters
open_app/api/open_appPOSTname (必须是包名,如 `com.tencent.mm`)
list_packages/api/list_packagesPOSTthirdPartyOnly(bool), includeVersions(bool)
get_app_info/api/get_app_infoPOSTpackage (package name)
force_stop_app/api/force_stop_appPOSTpackage (package name)
uninstall_app/api/uninstall_appPOSTpackage, keepData(bool)
install_apk/api/install_apkPOSTpath (APK path on device)
clear_app_data/api/clear_app_dataPOSTpackage (package name)
System
ToolEndpointMethodKey Parameters
execute_shell/api/execute_shellPOSTcommand, timeout(sec)
SMS
ToolEndpointMethodKey Parameters
send_sms/api/send_smsPOSTdestination (phone number), text
read_sms/api/read_smsPOSTlimit(int), unreadOnly(bool)
Call & Audio
ToolEndpointMethodKey Parameters
accept_call/api/accept_callPOST(none)
end_call/api/end_callPOST(none)
make_call/api/make_callPOSTnumber
open_audio_channel/api/open_audio_channelPOSTmode: telephony(default)/voip
close_audio_channel/api/close_audio_channelPOST(none)

curl Examples

所有命令必须使用 `$PREFIX/bin/curl`,不能省略路径!

bash
# Check connection
$PREFIX/bin/curl -s http://127.0.0.1:18790/api/status
# Response: {"connected":true,"status":"connected","screenWidth":1080,"screenHeight":2340}
# Screenshot
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/screenshot \
-H 'Content-Type: application/json' \
-d '{"quality":50}'
# Tap
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/tap \
-H 'Content-Type: application/json' \
-d '{"x":540,"y":960}'
# Swipe (scroll down)
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/swipe \
-H 'Content-Type: application/json' \
-d '{"startX":540,"startY":1800,"endX":540,"endY":400,"duration":300}'
# Scroll
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/scroll \
-H 'Content-Type: application/json' \
-d '{"direction":"down"}'
# Type text
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/type \
-H 'Content-Type: application/json' \
-d '{"text":"你好世界"}'
# Press key
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/press_key \
-H 'Content-Type: application/json' \
-d '{"key":"home"}'
# Open app
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/open_app \
-H 'Content-Type: application/json' \
-d '{"name":"com.tencent.mm"}'
# Get UI tree
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/get_ui_tree \
-H 'Content-Type: application/json' -d '{}'
# Find element
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/find_element \
-H 'Content-Type: application/json' \
-d '{"text":"搜索"}'
# Click by text
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/click_by_text \
-H 'Content-Type: application/json' \
-d '{"text":"确定"}'
# Read visible text
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/read_ui_text \
-H 'Content-Type: application/json' -d '{}'
# Device info (battery, network, storage, memory, display, foreground app)
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/device_info \
-H 'Content-Type: application/json' \
-d '{"type":"all"}'
# Execute shell command (response: {"output":"..."})
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/execute_shell \
-H 'Content-Type: application/json' \
-d '{"command":"wm size"}'
# List installed packages (third party with versions)
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/list_packages \
-H 'Content-Type: application/json' \
-d '{"thirdPartyOnly":true,"includeVersions":true}'
# Get app details
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/get_app_info \
-H 'Content-Type: application/json' \
-d '{"package":"com.tencent.mm"}'
# Force stop app
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/force_stop_app \
-H 'Content-Type: application/json' \
-d '{"package":"com.example.app"}'
# Uninstall app
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/uninstall_app \
-H 'Content-Type: application/json' \
-d '{"package":"com.example.app","keepData":false}'
# Install APK from device path
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/install_apk \
-H 'Content-Type: application/json' \
-d '{"path":"/sdcard/Download/app.apk"}'
# Clear app data
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/clear_app_data \
-H 'Content-Type: application/json' \
-d '{"package":"com.example.app"}'
# Send SMS
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/send_sms \
-H 'Content-Type: application/json' \
-d '{"destination":"13800138000","text":"Hello"}'
# Read SMS (recent 5, unread only)
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/read_sms \
-H 'Content-Type: application/json' \
-d '{"limit":5,"unreadOnly":true}'
# Accept incoming call
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/accept_call \
-H 'Content-Type: application/json' -d '{}'
# End current call (or reject incoming call)
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/end_call \
-H 'Content-Type: application/json' -d '{}'
# Make a phone call
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/make_call \
-H 'Content-Type: application/json' \
-d '{"number":"13800138000"}'
# Open audio channel (telephony mode for regular calls, voip for VoIP/Android 12+)
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/open_audio_channel \
-H 'Content-Type: application/json' \
-d '{"mode":"telephony"}'
# Close audio channel
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/close_audio_channel \
-H 'Content-Type: application/json' -d '{}'

Error Handling

  • HTTP 503: MeowHub Socket not connected — wait and retry
  • HTTP 500: Internal error — check the error message in response body
  • Bridge unreachable: The MeowHub app may not be running or Bridge Server not started

When you get a 503, tell the user that the MeowHub device connection is not active and they may need to check TutuGui Server status.

⚠️ 应用包名规则(open_app / force_stop_app / get_app_info 等)

所有涉及应用的 API 必须传入包名(如 `com.tencent.mm`),绝对不能传入中文名或英文显示名(如"微信""WeChat")。

常用应用包名速查(直接使用,无需查询)
用户说你必须传
微信 / WeChatcom.tencent.mm
QQcom.tencent.mobileqq
抖音 / TikTokcom.ss.android.ugc.aweme
小红书com.xingin.xhs
淘宝com.taobao.taobao
支付宝com.eg.android.AlipayGphone
美团com.sankuai.meituan
京东com.jingdong.app.mall
拼多多com.xunmeng.pinduoduo
高德地图com.autonavi.minimap
百度地图com.baidu.BaiduMap
哔哩哔哩 / B站tv.danmaku.bili
网易云音乐com.netease.cloudmusic
QQ音乐com.tencent.qqmusic
微博com.sina.weibo
今日头条com.ss.android.article.news
快手com.smile.gifmaker
设置 / Settingscom.android.settings
Chromecom.android.chrome
短信 / Messagescom.android.mms
电话 / Dialercom.android.dialer
相机 / Cameracom.android.camera2
日历 / Calendarcom.android.calendar
时钟 / Clockcom.android.deskclock
计算器com.android.calculator2
文件管理器com.android.documentsui
不认识的应用 → 先查再开

如果用户提到的应用不在上表中,必须先调用 `list_packages` 查询包名,然后再用包名调用 open_app:

bash
# 第一步:查找包名
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/list_packages -H 'Content-Type: application/json' -d '{"thirdPartyOnly":true}'
# 从返回的 packages 列表中找到匹配的包名
# 第二步:用包名打开
$PREFIX/bin/curl -s -X POST http://127.0.0.1:18790/api/open_app -H 'Content-Type: application/json' -d '{"name":"com.xxx.xxx"}'

错误示范 ❌: {"name":"微信"} {"name":"WeChat"} {"name":"抖音"} 正确示范 ✅: {"name":"com.tencent.mm"} {"name":"com.ss.android.ugc.aweme"}

Tips

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
106
Repository forks
22
7-day trend score
23

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/zhaojiaqi/meowhub/meowhub-device/badge)](https://verified-skill.com/skills/zhaojiaqi/meowhub/meowhub-device)

Something wrong with this skill or its page? Tell us.