编写 AutoJs6 自动化脚本的专业助手。在用户编写、调试 AutoJs6 脚本时使用此技能,包括:UI控件查找与操作、触摸/手势模拟、图像识别与截图、文件/HTTP/存储操作、多线程、事件监听、悬浮窗、对话框等。当用户提及 AutoJs6、autojs、auto.js 脚本编写、安卓自动化脚本、手机脚本自动点击等相关内容时,必须使用此技能以减少代码错误、提供准确API用法。
How this skill is triggered — by the user, by Claude, or both
Slash command
/autojs6-doc:autojs6-docThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
AutoJs6 是基于 Android 无障碍服务的 JavaScript 自动化工具,使用 Mozilla **Rhino 引擎**(非 V8/Node.js),可直接调用 Java API。
references/404.jsonreferences/accessibilityActionsType.jsonreferences/activity.jsonreferences/androidBundleType.jsonreferences/androidRectType.jsonreferences/api-core.jsonreferences/api-selector.jsonreferences/apiLevel.jsonreferences/app.jsonreferences/appType.jsonreferences/arrayx.jsonreferences/autojs.jsonreferences/automator.jsonreferences/automator_reference.mdreferences/barcode.jsonreferences/base64.jsonreferences/canvas.jsonreferences/changelog.jsonreferences/color.jsonreferences/colorTable.jsonAutoJs6 是基于 Android 无障碍服务的 JavaScript 自动化工具,使用 Mozilla Rhino 引擎(非 V8/Node.js),可直接调用 Java API。
以下情况必须使用此技能:
本技能包含三个整合参考文件,适合快速确认 API 用法:
| 文件 | 内容 | 何时读取 |
|---|---|---|
references/api-core.json | 21个核心模块的所有方法签名与说明 | 需要确认任意 API 的用法、参数、返回值时 |
references/api-selector.json | UiSelector(222方法) / UiObject(135方法) / UiObjectCollection(56方法) 完整API | 涉及控件选择、控件属性操作时 |
references/patterns-and-pitfalls.json | 权限说明、常用代码模式、Top错误列表、调试技巧、Rhino引擎特性 | 编写整体逻辑、权限判断、排查错误时 |
每个模块有独立的 JSON 文件,适合精确查找特定模块的详细 API:
| 功能领域 | 参考文件 |
|---|---|
| 自动化操作 | automator.json, coordinates-based-automation.json, widgets-based-automation.json |
| 控件选择器 | uiSelectorType.json, uiObjectType.json, uiObjectActionsType.json, uiObjectCollectionType.json |
| 应用和设备 | app.json, appType.json, device.json, intent.json, intentType.json |
| UI 交互 | ui.json, dialogs.json, floaty.json, canvas.json, progress.json, toast.json |
| 图像和 OCR | image.json, imageWrapperType.json, ocr.json, color.json, colorTable.json |
| 文件和数据 | files.json, storages.json, storageType.json |
| 网络和通信 | http.json, web.json, webSocketType.json |
| 多线程和事件 | threads.json, timers.json, events.json, eventEmitterType.json |
| 系统功能 | shell.json, sensors.json, runtime.json, engines.json |
| 工具类 | console.json, crypto.json, util.json, mathx.json, arrayx.json, numberx.json |
| 多媒体 | media.json, recorder.json, barcode.json, qrcode.json |
| 其他 | shizuku.json, plugins.json, notice.json, autojs.json |
完整索引见 references/index.md
规则:回答 AutoJs6 代码问题时,先读取对应参考文件,再输出代码,不得依赖记忆中的 API 写法。简单查询用整合文件,深入查询用粒度文件。
references/api-core.json 包含以下模块的完整方法列表:
| 模块 | 主要功能 | 关键方法示例 |
|---|---|---|
automator | 触摸/手势模拟 | click(x,y) swipe() gesture() input() |
widgetsBasedAutomation | 控件自动化全局函数 | click(text) scrollUp() setText() auto() |
app | 应用管理、Intent | launch() launchApp() startActivity() openUrl() |
console | 日志、控制台悬浮窗 | log() show() rawInput() time() |
device | 设备信息与控制 | width height getBattery() keepScreenOn() |
image | 截图、找色、模板匹配 | captureScreen() findColor() findImage() matchTemplate() |
http | HTTP 请求 | get() post() postJson() request() |
files | 文件读写 | read() write() exists() listDir() |
storages | 键值持久化存储 | create() .get() .put() .remove() |
threads | 多线程 | start() lock() atomic() disposable() |
events | 事件监听 | onKeyDown() onTouch() onNotification() onToast() |
floaty | 悬浮窗 | window() rawWindow() closeAll() |
dialogs | 对话框 | alert() confirm() rawInput() select() |
global | 全局函数 | sleep() toast() toastLog() exit() random() |
ui | UI 界面 | layout() inflate() run() post() |
shell | Shell 命令 | shell(cmd, root) |
media | 多媒体播放 | playMusic() stopMusic() scanFile() |
sensors | 传感器 | register() unregister() |
util | 工具函数 | 字符串/数组/对象辅助方法 |
crypto | 加解密 | 哈希、AES 等加密方法 |
base64 | Base64 编解码 | encode() decode() |
references/api-selector.json 包含:
text() id() className() findOne() find() exists() waitFor() 等所有选择器| 功能 | 所需权限 |
|---|---|
| selector 查找控件 / 模拟触摸 / 系统按键 | 无障碍服务 |
images.captureScreen() | 截图权限(首次弹授权框) |
floaty.window() / console.show() | 悬浮窗权限 |
shell(cmd, true) / events.onTouch() | Root 权限 |
device.setBrightness() | 修改系统设置权限 |
通知监听 events.onNotification() | 通知服务权限 |
// ① 脚本开头:请求无障碍服务
auto.waitFor();
// ② 等待控件出现后点击(推荐写法)
let btn = text('确定').findOne(5000); // 加超时,不永久阻塞
if (btn) btn.click();
else console.log('未找到按钮');
// ③ 截图找色(必须 recycle)
let img = images.captureScreen();
let pt = images.findColor(img, '#FF0000', {threshold: 10});
if (pt) click(pt.x, pt.y);
img.recycle(); // ← 必须释放
// ④ 比例坐标(适配不同分辨率)
let W = device.width, H = device.height;
swipe(W*0.5, H*0.8, W*0.5, H*0.2, 500);
// ⑤ 本地存储(持久化)
let s = storages.create('myApp');
s.put('count', s.get('count', 0) + 1);
// ⑥ 多线程更新UI
threads.start(function() {
let result = doWork();
ui.run(() => textView.setText(result));
});
// ⑦ UI脚本开头必须声明
'ui';
ui.layout(<vertical>...</vertical>);
| 症状 | 原因 | 修复 |
|---|---|---|
| 控件操作全部无效 | 未开启无障碍服务 | 开头加 auto.waitFor() |
| 脚本永久卡死 | findOne() 无超时 | 改为 findOne(5000) 并判断 null |
| 长时间运行后崩溃 | Image 对象未回收 | 每次截图后 img.recycle() |
| ui 模块方法报错 | 忘写 'ui'; | 第一行加 'ui'; |
| 点击位置错误 | 固定坐标不适配 | 用 device.width/height 计算比例 |
| 子线程操作 View 报错 | 跨线程操作 UI | 改用 ui.run(() => {...}) |
| 悬浮窗脚本退出后残留 | 未关闭悬浮窗 | 退出前 floaty.closeAll() |
| dialogs 在 ui 模式卡死 | 阻塞了 UI 线程 | 用回调或 Promise 形式 |
| events 事件处理延迟 | 主线程有耗时操作 | 把耗时操作移到子线程 |
| captureScreen 每次弹框 | 未提前申请截图权限 | 脚本开头调用 images.requestScreenCapture() |
完整错误列表见 references/patterns-and-pitfalls.json → top_mistakes
findOne() 加超时参数并处理 nullimg.recycle()auto.waitFor()'ui';sleep(random(500, 1500))AutoJs6 使用 Mozilla Rhino(非 V8),注意:
let/const / 箭头函数 / 模板字符串 / 解构 / Promise(基础)await / WeakRef / 部分 ES2020+ 特性new java.util.ArrayList()importClass(java.io.File) 导入 Java 类详见 references/patterns-and-pitfalls.json → rhino_engine_notes
Relative paths (e.g., references/) are relative to this skill's directory (${CLAUDE_PLUGIN_ROOT}/skills/autojs6-doc/).
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub kwin-wang/claude-plugins-marketplace --plugin autojs6-doc