skills/phone-screenshot-yashu/SKILL.md
远程获取安卓手机截图。通过 WebSocket 连接电脑和手机(AutoJS),用户说"手机截图"即可触发截屏并自动打开。激活条件:用户消息包含"手机截图"、"截取手机屏幕"、"截屏手机"、"phone screenshot"等关键词。
npx skillsauth add steelan9199/wechat-publisher phone-screenshot-yashuInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
在 AI 聊天软件中说"手机截图",自动通过 WebSocket 通知手机(AutoJS)截屏,手机将图片二进制数据直接传回电脑,保存为 PNG 文件后打开查看。图片传输为二进制直传,不转 base64。
$SKILL_DIR 指代本技能所在目录(包含 SKILL.md 的文件夹)。⚠️ $SKILL_DIR 仅为文档占位符,不是环境变量,执行命令时必须替换为实际绝对路径。$SKILL_DIR/scripts/$SKILL_DIR/screenshots/cmd1 && cmd2cmd1; if ($?) { cmd2 }&& 和 ; if ($?) { cmd2 } 均可&| 条件 | 说明 |
|---|---|
| 电脑已安装 Node.js >= 18 | 运行 node -v 检查,未安装则提示用户安装 |
| 手机已安装 AutoJS | 需开启截图权限和无障碍服务 |
| 电脑与手机在同一局域网 | 手机通过 WiFi 连接到电脑同网段 |
| 手机 AutoJS 脚本已运行 | 手机端运行 autojs-client.js,需配置电脑 IP |
| 中继服务器已启动 | 电脑端运行 node server.js |
| 用户消息特征 | 执行动作 | |---|---| | 包含"手机截图"/"截屏手机"/"截取手机屏幕"/"phone screenshot" | 进入【获取手机截图】流程 | | 包含"关闭手机截图"/"停止手机截图" | 进入【关闭服务器】流程 |
| 步骤 | 执行动作 | 具体命令/操作 |
|---|---|---|
| 1 | 环境检查:Node.js | 运行 node -v。若命令不存在,提示用户安装 Node.js 18+,任务结束。 |
| 2 | 环境检查:依赖 | 检查 $SKILL_DIR/scripts/node_modules/ws 目录是否存在。若不存在,运行 cd "$SKILL_DIR/scripts" && npm install。 |
| 3 | 检测服务器状态 | 运行健康检查命令(见下方【服务器检测命令】)。返回 {"status":"ok"} 说明已运行;连接失败说明未启动。 |
| 4 | 判断是否需要启动 | 若步骤 3 返回 {"status":"ok"},跳到步骤 6。若连接失败,继续步骤 5。 |
| 5 | 启动服务器 | 将 $SKILL_DIR 替换为实际绝对路径,运行 cd "$SKILL_DIR/scripts"; if ($?) { node server.js }。必须使用非阻塞方式执行,因为服务器是长驻进程。 |
| 6 | 等待服务器就绪 | 运行 Start-Sleep -Seconds 2(Windows)或 sleep 2(Linux/macOS),等待服务器完成启动。然后再次运行步骤 3 的健康检查确认就绪。 |
| 7 | 检查手机连接 | 从步骤 3/6 的健康检查返回中读取 phone 字段。若为 disconnected,提示用户在手机上运行 AutoJS 脚本,任务结束。 |
| 8 | 触发截图 | 运行 node "$SKILL_DIR/scripts/trigger.js"。脚本输出图片的绝对路径。 |
| 9 | 打开图片 | 拿到图片路径后,调用 image-pixel-viewer-yashu 技能打开该图片(若有该技能)。若无 image-pixel-viewer-yashu,则用系统默认方式打开图片。 |
| 平台 | 命令 |
|---|---|
| Windows (PowerShell) | try { (Invoke-WebRequest -Uri "http://localhost:9421/health" -UseBasicParsing -TimeoutSec 2).Content } catch { "连接失败" } |
| Linux/macOS (bash) | curl -s --max-time 2 http://localhost:9421/health \|\| echo "连接失败" |
| 步骤 | 执行动作 | 具体命令 |
|---|---|---|
| 1 | 终止占用 9421 端口的进程 | Windows: Get-NetTCPConnection -LocalPort 9421 -ErrorAction SilentlyContinue \| Select-Object -ExpandProperty OwningProcess \| ForEach-Object { Stop-Process -Id $_ -Force };Linux/macOS: lsof -ti:9421 \| xargs kill |
| 2 | 确认已关闭 | 再次运行【服务器检测命令】,确认返回"连接失败" |
| 错误场景 | 错误表现 | 处理方式 |
|---|---|---|
| Node.js 未安装 | node 命令不存在 | 提示用户安装 Node.js 18+ |
| ws 依赖未安装 | Cannot find module 'ws' | 运行 cd scripts && npm install |
| 手机未连接 | 健康检查返回 phone: "disconnected" | 提示用户在手机上运行 AutoJS 脚本 |
| 截图超时 | trigger.js 返回超时错误 | 检查手机 AutoJS 是否在前台运行、截图权限是否已授权 |
| 端口被占用 | 服务器启动报 EADDRINUSE | 提示用户端口 9421 被占用,可先关闭旧服务器再重启 |
| 脚本 | 功能 |
|---|---|
| $SKILL_DIR/scripts/server.js | PC 端 WebSocket + HTTP 中继服务器(端口 9421),接收手机连接,提供截图触发接口 |
| $SKILL_DIR/scripts/trigger.js | AI 触发脚本,调用服务器 HTTP 接口获取截图,输出图片路径 |
| $SKILL_DIR/scripts/autojs-client.js | 手机端 AutoJS 脚本,连接服务器,收到指令后截屏并发送二进制图片 |
| $SKILL_DIR/scripts/package.json | npm 依赖配置(ws 库) |
content-media
自动启停视频课程录制所需的辅助程序。激活条件:用户消息须包含以下关键词之一:`我要录制视频课程`、`开始录制视频课程`、`准备录课`、`视频课程录完了`、`录课结束`、`停止录制`。
content-media
生成扁平的 SVG 图(架构图、中心辐射图、流程图、简易时序图、思维导图、组织架构图、2×2对比矩阵、时间线、循环图、鱼骨图),也支持把已有 SVG 文件转成 PNG 图片。激活条件(满足任一即可):生成类关键词 `画架构图`、`画中心辐射图`、`画流程图`、`画时序图`、`画思维导图`、`画脑图`、`画组织架构图`、`画树形图`、`画对比矩阵`、`画四象限`、`画时间线`、`画循环图`、`画鱼骨图`、`画因果分析图`;转换类关键词`SVG 转图片`、`把 SVG 转成图片`、`把 SVG 转成 PNG`。
testing
检查指定技能文档中的废话文字并输出诊断报告。激活条件:用户消息须包含以下关键词之一:`检查技能废话`、`这个技能文档有没有多余内容`、`清理技能文档废话`、`审查技能文档废话`、`清理技能文档历史说明`。
testing
评审一个技能是否「自包含」——即其知识、经验、规范是否全部内置在技能文件内(SKILL.md + references/),不依赖特定 AI 客户端专有的知识接口命令(如 read_me / modules: / show_widget / Visualizer)去外部拉取,也不硬编码某个 AI 软件的私有路径(如 .workbuddy)。同时检查工具依赖(node、浏览器、命令行)是否仅作为用户自备工具声明、未写死私有路径。当用户要求「评审这个技能是否自包含 / 独立」「检查技能知识是否内置」「审查技能的独立性 / 可移植性」「audit / review a skill for self-containment」时触发。产出评审报告:结论(自包含 / 不独立)+ 问题清单(文件:行号 + 引用的外部依赖 + 为何影响独立性)+ 整改建议。