Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Test and validate MaaFramework Pipeline JSON, recognition nodes, action nodes, CustomAction/CustomRecognition wiring, resource loading, and end-to-end task behavior.
$ npx skills add duorua/narutomobile --skill maa-pipeline-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/duorua/narutomobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/maa-pipeline-testing .claude/skills/maa-pipeline-testing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "maa-pipeline-testing" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testing into .claude/skills/maa-pipeline-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add duorua/narutomobile --skill maa-pipeline-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duorua/narutomobile.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/maa-pipeline-testing .agents/skills/maa-pipeline-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "maa-pipeline-testing" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testing into .agents/skills/maa-pipeline-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add duorua/narutomobile --skill maa-pipeline-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duorua/narutomobile.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/maa-pipeline-testing .cursor/skills/maa-pipeline-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "maa-pipeline-testing" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testing into .cursor/skills/maa-pipeline-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/duorua/narutomobile.git --path .agents/skills/maa-pipeline-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add duorua/narutomobile --skill maa-pipeline-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duorua/narutomobile.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/maa-pipeline-testing .gemini/skills/maa-pipeline-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "maa-pipeline-testing" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testing into .gemini/skills/maa-pipeline-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install duorua/narutomobile maa-pipeline-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add duorua/narutomobile --skill maa-pipeline-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/duorua/narutomobile.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/maa-pipeline-testing .github/skills/maa-pipeline-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "maa-pipeline-testing" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testing into .github/skills/maa-pipeline-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add duorua/narutomobile --skill maa-pipeline-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duorua/narutomobile.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/maa-pipeline-testing .opencode/skills/maa-pipeline-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "maa-pipeline-testing" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-testing into .opencode/skills/maa-pipeline-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
maa-pipeline-testingTest and validate MaaFramework Pipeline JSON, recognition nodes, action nodes, CustomAction/CustomRecognition wiring, resource loading, and end-to-end task behavior.
Maa Pipeline Testing is an agent skill from duorua/narutomobile. Test and validate MaaFramework Pipeline JSON, recognition nodes, action nodes, CustomAction/CustomRecognition wiring, resource loading, and end-to-end task behavior. Use when running runpipeline, checking OCR/TemplateMatch/ColorMatch ROI, validating context.runtask() results, auditing action: Custom or recognition: Custom registrations, or choosing the right resource-check command.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Testing & QA. It works with Python. The licence is AGPL-3.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 16eacbf. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
rgpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Maa Pipeline Testing loads about 2.3k tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 467 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from duorua/narutomobile at commit 16eacbf, republished under its AGPL-3.0 licence (© duorua). 467 words, ~2,317 tokens.
.claude/skills/maa-pipeline-testing/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.测试命令、schema 字段或 MaaFramework API 行为以原始官方来源为准。涉及版本差异、binding 兼容性或语义变化时,通过 $maa-wiki 定位官方文档、schema 与源码后再下结论;测试通过不能替代对官方契约的核对。
如果用户要求验收一个尚未定义目标状态和完成条件的端到端自动化需求,先交给 $maa-workflow-build 建立任务契约;已有契约时,再用本 skill 为其中的验收条件收集测试证据。
测试前先查目标项目根目录的 basic_info.md。存在且包含第 0 节时,读取“0. Maa Skills 接力协议”和第 2/5/7/8/9/10 节,用 task/resource、公共返回节点、OCR/模板/ROI 和风险清单规划测试;随后以当前截图、当前源码和 TaskDetail 为准。优先把公共 Click 节点复制成临时 DoNothing 探针做初始化 smoke test,完成后调用 stop_pipeline 并删除临时文件。文件缺失或没有第 0 节时按本 skill 直接发现测试所需上下文;不得自动调用 $maa-project-init,只有用户明确要求初始化或刷新时才调用。源码更新更晚时视为缓存可能过期并以源码为准,不自动刷新或覆盖。
测试 MaaFramework Pipeline JSON 中的 node,验证识别和操作是否正常工作。
python tools/ci/check_resource.py assets/resource/base 能证明资源包可加载,但不能证明 CustomAction/CustomRecognition 名称存在、参数路径正确、run_task() 分支判断正确。action: Custom / action.type = Custom 的 custom_action 都要能映射到 @AgentServer.custom_action(...);所有 recognition.type = Custom 的 custom_recognition 都要能映射到 @AgentServer.custom_recognition(...)。enable/enabled 设为 false 时,Python 必须先短路,不能再调用该节点的 run_recognition()/run_task();同时验证关闭可选分支后,同级战斗/调查分支仍会继续识别。rg -n '"Custom"|custom_action|custom_recognition' assets/resource -g '*.json'
rg -n '@AgentServer\.custom_action|@AgentServer\.custom_recognition' agent -g '*.py'人工对照时按名字精确匹配。资源检查通过但这里缺注册,运行时仍会失败。
# 1. 连接设备
find_adb_device_list()
controller_id = connect_adb_device(device_name="xxx")
# 或
controller_id = connect_window(window_name="xxx")
# 2. 加载 pipeline
load_pipeline(pipeline_path="<pipeline_json>")
RESOURCE_PATH = "<resource_base_path>"
# 3. 逐个测试
for node_name in pipeline_nodes:
result = run_pipeline(
controller_id=controller_id,
pipeline_path=pipeline_path,
entry=node_name,
resource_path=RESOURCE_PATH
)
# succeeded + all_results 有内容 = 识别成功
# 详见下方"结果判断"小节| status | all_results | 含义 |
|---|---|---|
succeeded | 有内容 | ✅ 识别成功 |
succeeded | 空 | ❌ 识别失败 |
failed | — | ❌ 节点未触发 / 识别超时 |
返回结构:
{
"status": "succeeded",
"nodes": [{
"name": "node_name",
"recognition": {
"all_results": [{"box": [x, y, w, h], "score": 0.99, "text": "..."}]
}
}]
}run_task() 结果判断 ⚠️MCP 的 run_pipeline 单节点结果和 Python CustomAction 里的 context.run_task() 结果不是同一个使用场景。context.run_task() 的 result.nodes 可能包含:
next 列表里被尝试过但失败的节点因此不要写:
# ❌ 错:有 nodes 不代表目标节点命中
result = context.run_task("AutoSky_CloneDied")
if result and result.nodes:
handle_clone_loss()应该检查节点是否真的完成或识别命中:
def task_result_has_hit(result, names: set[str]) -> bool:
if not result or not result.nodes:
return False
for node in result.nodes:
if getattr(node, "name", None) not in names:
continue
if getattr(node, "completed", False):
return True
recognition = getattr(node, "recognition", None)
if recognition and getattr(recognition, "hit", False):
return True
return False实战信号:调试面板里目标节点是红叉,但日志却进入了成功分支,基本就是把"节点出现过"误当成"节点命中"。
对于会回到稳定页面的流程,建议先检测稳定状态:
if task_result_has_hit(result, {"AutoSky_CheckExplorationInfo"}):
return "done"再跑危险兜底动作(取消结算、购买确认、继续挑战等),避免页面已经回稳后误触发。
Click 节点会让页面跳转,破坏后续测试初始状态。必须用 BackButton_500ms 返回:
# 测试节点
run_pipeline(..., entry="NodeA", ...)
# 必须返回!不要 click_key(4) 模拟 ESC(可能进错页面)
run_pipeline(..., entry="BackButton_500ms", ...)
# 测下一个
run_pipeline(..., entry="NodeB", ...)BackButton_500ms 在 main_ui.json 里,DirectHit 识别返回箭头,定位精确可靠。
OCR 失败时不要换 TemplateMatch!先用 sweep 找 sweet spot。
操作流程:
expected 必须匹配当前资源实际显示文本;在 MaaGumballs 中文资源里是 ["角色"],不是英文 key ["Role"]run_pipeline 逐个跑,记录 scoregenerate_node.py --expand X --overwrite 正式写入实战矩阵(5 节点实测):
| 节点 | e0 | e20 | e50 | 最佳 |
|---|---|---|---|---|
| 角色 | ✅ | ✅ 0.9997 | ✅ | e20 |
| 编队 | ✅ | ✅ 0.998 | ✅ | e20 |
| 城堡 | ✅ | ❌ | — | e3(仅 0-15) |
| 佣兵团 | ❌ | ✅ | ✅ | e20 |
| 前往群岛 | ✅ | ✅ | ✅ | e20 |
观察:
timeout: 2000 期间 OCR 会重试多次,所以单次失败不一定是真失败测试时绝对不要点击这些按钮(消耗资源):
误入后处理:尝试 BackButton_500ms 或 ESC → 切换 tab 刷新。
| 现象 | 排查 |
|---|---|
| 节点超时失败 | 截屏看实际界面 → 调整 expected 文本或 roi |
| OCR 拆分多字(如"角色"→"电"+"色") | 缩小 ROI 避开干扰 |
| 误识别相邻文字 | 缩小 ROI 限制范围 |
| 点击位置不准 | 实际点击取 box 中心点:x + w/2, y + h/2 |
| 可滚动 UI 单视图测不全 | 一个截图里只能看到 5-6 个元素,需要 swipe 多次分别测;详见下方 |
| Click + BackButton 跳错页面 | Click 子页后按 BackButton 可能回到大地图/外层 UI,不是预期父页面;需主动 navigate 回来 |
| 部分可见元素识别 | 边界处只露 25px 也能 OCR 找到(score 偏低 0.8x),用大 ROI 覆盖即可 |
单次截图只能测当前可见的 5-6 个元素。要测全列表(如城堡 10 个建筑)必须多次 swipe:
1. 进入目标页(如城堡顶部)
2. run_pipeline 测当前可见的 N 个节点
3. 每个 click 后 BackButton 返回
4. swipe 滚动一屏
5. 再 run_pipeline 测新可见的节点
6. 重复直到列表测完典型案例:城堡建筑(10 节点)
关键:所有节点共用同一大 ROI [x, top_y, w, full_h],不要给每个节点算不同 ROI(滚动后位置变了,原 ROI 失效)。
症状:节点超时、OCR 找不到、行为异常、识别 score 突然下降
解决:调 screencap(controller_id) 看实际屏幕状态:
配合 ocr() 看识别结果交叉验证。不要盲调 ROI/expected,先看实际屏幕。
Click 节点会让页面跳转,破坏后续测试初始状态。必须用 BackButton_500ms 返回:
# 测试节点
run_pipeline(..., entry="NodeA", ...)
# 必须返回!不要 click_key(4) 模拟 ESC(可能进错页面)
run_pipeline(..., entry="BackButton_500ms", ...)注意:BackButton 不一定回到你期望的父页面!
测试前先确认 BackButton 路径,或者用 ocr() 检查当前页面状态再继续。
start_agent=true 失败时的 Fallback 方案症状:run_pipeline(..., start_agent=true) 报
Agent 启动失败: Agent 启动失败 (identifier=12345): connect() 返回 False根因(常见):
MaaAgentServerStartUpMaaAgentServerNotImpl(这个错误明确说"用 MaaFramework,不要用 MaaAgentServer")Fallback 1:单节点测试(推荐):
用 start_agent=false + 指定 entry 测单个节点(只测 OCR/Template 识别,跳过 CustomAction 链):
# 不开 agent,直接测某个节点
result = run_pipeline(
controller_id=cid,
pipeline_path="<project-root>/assets/resource/base/pipeline/example.json",
entry="AutoSky_BagConfig", # 任意节点名
resource_path="<project-root>/assets/resource/base",
start_agent=False, # ← 关键:false
)适用场景:测 OCR / TemplateMatch / ColorMatch 等识别节点的 ROI 和 expected 文本是否正确。
Fallback 2:手动启动 agent 后 MCP 通过 socket 连接:
如果单节点测试不够(需测完整任务链),手动跑 agent 进程,然后用 connect_adb_device / connect_window 让 MCP 复用。
# 步骤 1:手动启动 agent
import subprocess
agent_proc = subprocess.Popen(
["python", "agent/main.py", "test_socket"],
cwd=".",
)
# 步骤 2:让 MCP 连接(需要 MCP 内部 socket ID 匹配)
# 实际中,MCP 启动 agent 会自动起 socket,如果手动起需要 MCP 端配对
# 通常这一步是 MCP 内部行为,我们无法直接控制Fallback 3:放弃 MCP,直接用 MaaFramework Python API:
import sys
sys.path.insert(0, "<project-root>")
from maa.agent.agent_server import AgentServer
from maa.toolkit import Toolkit
from maa.resource import Resource
from maa.controller import AdbController
from maa.tasker import Tasker
Toolkit.init_option("./")
res = Resource(); res.post_bundle("./assets/resource/base").wait()
ctrl = AdbController(adb_path="adb", address="127.0.0.1:16384"); ctrl.post_connection().wait()
tasker = Tasker(); tasker.bind(res, ctrl)
import action.sky
autosky = action.sky.AutoSky()
result = autosky.run(tasker.context, type('X', (), {'custom_action_param': '{}'})())何时用哪种:
## <文件名> 测试记录
日期: 2026-06-05
设备: xxx
controller_id: xxx
### Node 列表
- [ ] node_name_1
- [ ] node_name_2
### 测试进度
| Node | 结果 | 备注 |
|------|------|------|
| xxx | ✅ | score=0.999 |
| xxx | ❌ | 原因xxx |© duorua, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/maa-pipeline-testing of duorua/narutomobile.
Open the folder on GitHubat commit 16eacbf
Maa Pipeline Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Maa Pipeline Testing this skillduorua/narutomobile | 338 | — | ~2.3k | Automated safety check: Pass | AGPL-3.0 | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| OpenHarness End-to-End EvalsHKUDS/OpenHarness | 16k | 1 repos | ~2.1k | Automated safety check: Notes | MIT | |
| Adk Verify Snippetsgoogle/adk-python | 22k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Apple Container Test RunnerRustPython/RustPython | 22k | — | ~467 | Automated safety check: Pass | MIT | |
| JSON Repair Docs Demo Local Testmangiucugna/json_repair | 5.1k | — | ~549 | Automated safety check: Pass | MIT |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
HKUDS/OpenHarness
Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.
google/adk-python
Checks that every Python code block in a Markdown file actually compiles and runs, by extracting each block to a temporary file, executing it in an isolated subprocess, and writing a pass/fail…
RustPython/RustPython
Runs RustPython tests inside a Linux container built with Apple's container CLI, so macOS users can compare Linux results with their local ones.
mangiucugna/json_repair
Runs the json_repair docs demo against a local Flask API and static server, so changes to docs/app.py or the docs UI are checked end to end before publishing.
astral-sh/ruff
A skill your agent uses when a user asks to wobble ty constraint ordering, check constraint-set or TDD ordering determinism, test reversed constraint/typevar IDs, or investigate nondeterministic ty…
duorua/narutomobile
Scan and initialize a MaaFramework game or app automation project for Maa skills and MaaMCP workflows.
duorua/narutomobile
Generate MaaFramework Pipeline nodes and recognition snippets from screenshots or observed UI state.
duorua/narutomobile
Add runtime UI options (select/checkbox/switch/input) to MaaFramework option surfaces such as assets/interface.json or assets/resource/tasks//.json.
duorua/narutomobile
Orchestrate ambiguous end-to-end MaaFramework automation requests into verified implementations.
duorua/narutomobile
Audit a MaaFramework/Maa-series project's Git history to learn how Pipeline JSON, interface options, Python AgentServer CustomAction code, and related data tables evolved.
duorua/narutomobile
Operate MaaFramework devices and Pipeline resources through the maafw-cli command line with strict JSON output.
Works with
Categories
Test and validate MaaFramework Pipeline JSON, recognition nodes, action nodes, CustomAction/CustomRecognition wiring, resource loading, and end-to-end task behavior. Maa Pipeline Testing is an agent skill from duorua/narutomobile. Test and validate MaaFramework Pipeline JSON, recognition nodes, action nodes, CustomAction/CustomRecognition wiring, resource loading, and end-to-end task behavior.
Maa Pipeline Testing fits situations like: running runpipeline; checking OCR/TemplateMatch/ColorMatch ROI; validating context.runtask() results; auditing action: Custom.
Run `npx skills add duorua/narutomobile --skill maa-pipeline-testing -a claude-code`. Or copy the skill folder (.agents/skills/maa-pipeline-testing in duorua/narutomobile) into .claude/skills/maa-pipeline-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add duorua/narutomobile --skill maa-pipeline-testing -a codex`. Or copy the skill folder (.agents/skills/maa-pipeline-testing in duorua/narutomobile) into .agents/skills/maa-pipeline-testing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add duorua/narutomobile --skill maa-pipeline-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/maa-pipeline-testing, .gemini/skills/maa-pipeline-testing, .github/skills/maa-pipeline-testing and .opencode/skills/maa-pipeline-testing in your project.
Going by SKILL.md and its folder, Maa Pipeline Testing needs the command-line tools its instructions call (rg and python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Maa Pipeline Testing is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Maa Pipeline Testing: Web Application Testing (anthropics/skills, 180k stars), OpenHarness End-to-End Evals (HKUDS/OpenHarness, 16k stars), Adk Verify Snippets (google/adk-python, 22k stars) and Apple Container Test Runner (RustPython/RustPython, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
duorua (a GitHub user) maintains it in duorua/narutomobile, which has 338 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 9, 2026.
Source: duorua/narutomobile on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.