MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Generate MaaFramework Pipeline nodes and recognition snippets from screenshots or observed UI state.
$ npx skills add duorua/narutomobile --skill maa-pipeline-generate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-generate --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-generate .claude/skills/maa-pipeline-generate && 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-generate" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-generate into .claude/skills/maa-pipeline-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-generate", 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-generateType 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-generate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-generate --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-generate .agents/skills/maa-pipeline-generate && 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-generate" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-generate into .agents/skills/maa-pipeline-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-generate", 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-generate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-generate --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-generate .cursor/skills/maa-pipeline-generate && 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-generate" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-generate into .cursor/skills/maa-pipeline-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-generate", 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-generate--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-generate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install duorua/narutomobile maa-pipeline-generate --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-generate .gemini/skills/maa-pipeline-generate && 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-generate" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-generate into .gemini/skills/maa-pipeline-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-generate", 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-generateInstalls 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-generate -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-generate .github/skills/maa-pipeline-generate && 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-generate" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-generate into .github/skills/maa-pipeline-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-generate", 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-generate -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-generate --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-generate .opencode/skills/maa-pipeline-generate && 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-generate" agent skill from https://github.com/duorua/narutomobile/tree/main/.agents/skills/maa-pipeline-generate into .opencode/skills/maa-pipeline-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maa-pipeline-generate", 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-generateGenerate MaaFramework Pipeline nodes and recognition snippets from screenshots or observed UI state.
Maa Pipeline Generate is an agent skill from duorua/narutomobile. Generate MaaFramework Pipeline nodes and recognition snippets from screenshots or observed UI state. Use for OCR node generation, ROI sweep, choosing TemplateMatch/OCR/ColorMatch/CustomRecognition, preserving target-file schema style, and designing next/[JumpBack] links before merging generated nodes into pipeline JSON.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts (for example `agents/openai.yaml`, `scripts/generate_node.py` and `scripts/generate_sweep.py`).
It works with Model Context Protocol. The licence is AGPL-3.0.
12 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e3ff401. 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.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom 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 Generate loads about 2.8k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 621 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); the scripts in this folder are not scanned.
The full file from duorua/narutomobile at commit e3ff401, republished under its AGPL-3.0 licence (© duorua). 621 words, ~2,843 tokens.
.claude/skills/maa-pipeline-generate/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.如果用户提出的是尚未定义起始状态、安全边界和验收条件的端到端自动化目标,先交给 $maa-workflow-build 建立任务契约与状态机;已有契约时,再用本 skill 生成其中的具体节点与识别参数。
生成节点前先在目标项目根目录查找 basic_info.md。存在且包含第 0 节时,读取“0. Maa Skills 接力协议”和第 3/4/5/7/8/9 节,用它快速定位目标文件、公共节点、返回路径、OCR 文本、模板目录与 ROI 基准。它是缓存,不替代当前目标文件和当前设备画面;生成前仍须核实目标文件语法风格,并重新 OCR/截图确认页面。文件缺失或没有第 0 节时按本 skill 直接发现项目结构;不得自动调用 $maa-project-init,只有用户明确要求初始化或刷新时才调用。若相关源码更新更晚,则把缓存视为可能过期并以当前源码为准,不自动刷新或覆盖。
Pipeline 由 Node 组成。本 skill 针对OCR 文本识别节点,按 Pipeline 协议生成节点 JSON 并合并到目标 pipeline 文件。
核心流程:连接设备 → ocr() 拿 box → 扩大 ROI → 合并节点
自带脚本(位于本 skill 的 scripts/ 目录):
| 脚本 | 用途 |
|---|---|
scripts/generate_node.py | 单节点生成(默认 expand=20) |
scripts/generate_sweep.py | 多 expand 变体扫描,找最佳 ROI |
依赖 maa-mcp MCP 服务。
| 工具 | 说明 |
|---|---|
find_adb_device_list / connect_adb_device | 连接设备 |
ocr | 截图 + OCR 一步完成(内部已调 screencap,外部不要再调) |
load_pipeline / save_pipeline | 读/写 pipeline JSON |
check_and_download_ocr | 首次需下载 OCR 模型 |
run_pipeline | 测试 pipeline 节点 |
| 参数 | 必填 | 默认 | 说明 |
|---|---|---|---|
target_text | ✅ | — | 要识别的目标中文文字 |
node_name | ✅ | — | 节点名(PascalCase) |
pipeline_file | ✅ | — | 目标 pipeline 路径(相对 assets/resource/base/pipeline/xxx.json 或绝对路径) |
action_type | ❌ | Click | Click / DoNothing / LongPress / Swipe / ClickKey / InputText |
expand_offset | ❌ | 20 | ROI 扩边像素(推荐先用 sweep 找最佳) |
post_delay | ❌ | 500 | |
timeout | ❌ | 2000 | |
overwrite | ❌ | False | 节点名冲突时是否覆盖 |
# === Step 1: 连接设备 ===
from maa_mcp.adb import find_adb_device_list, connect_adb_device
controller_id = connect_adb_device(find_adb_device_list()[0])
# === Step 2: OCR 拿 box + 算 ROI ===
from maa_mcp.vision import ocr
from maa_mcp.download import check_and_download_ocr
ocr_results = ocr(controller_id)
if isinstance(ocr_results, str) and "OCR 模型文件不存在" in ocr_results:
check_and_download_ocr()
ocr_results = ocr(controller_id)
matched = [r for r in ocr_results if target_text in (r.text if hasattr(r, "text") else r["text"])]
best = max(matched, key=lambda r: r.score if hasattr(r, "score") else r["score"])
box = best.box if hasattr(best, "box") else best["box"]
# 扩大 ROI(720p 硬编码 + 4 边裁剪)
SCREEN_W, SCREEN_H = 720, 1280
x, y, w, h = box
E = expand_offset
roi = [
max(0, x - E),
max(0, y - E),
min(SCREEN_W - max(0, x - E), w + 2 * E),
min(SCREEN_H - max(0, y - E), h + 2 * E),
]
# === Step 3: 合并到目标 pipeline ===
from maa_mcp.pipeline_tools import load_pipeline, save_pipeline
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[3]
pipeline_path = Path(pipeline_file)
if not pipeline_path.is_absolute():
pipeline_path = PROJECT_ROOT / "assets" / "resource" / "base" / "pipeline" / pipeline_file
existing = load_pipeline(str(pipeline_path)) or {}
if node_name in existing and not overwrite:
raise RuntimeError(f"节点 '{node_name}' 已存在")
existing[node_name] = {
"recognition": "OCR",
"expected": [target_text],
"roi": roi,
"action": action_type,
"post_delay": post_delay,
"timeout": timeout,
}
save_pipeline(
pipeline_json=json.dumps(existing, ensure_ascii=False, indent=4),
output_path=str(pipeline_path),
overwrite=True,
)原始 box: ┌────┐
│ 文字│
└────┘
扩大后 roi: ┌──────────┐
│ ┌────┐ │
│ │文字│ │
│ └────┘ │
└──────────┘先解析当前 skill 所在目录为 <skill-dir>,再从目标 Maa 项目根目录运行以下命令。不要假设 skill 安装在 .claude/skills 或某个固定盘符。
# 生成多个 expand 变体的测试 pipeline
python "<skill-dir>/scripts/generate_sweep.py" "角色" "46,1248,50,30" 0,5,10,15,20,25,30然后用 run_pipeline 逐个测试每个 Sweep_<text>_eN 节点,用目标项目自己的安全返回节点恢复页面(详见 maa-pipeline-testing)。记录成功的 expand 值(score ≥ 0.99 为佳)。
python "<skill-dir>/scripts/generate_node.py" "角色" UI_RoleListPage main_ui.json --expand 20 --overwriteaction: { type, param }、recognition: { type, param }。生成时沿用目标文件的既有风格,不要在同一局部混用两套格式。next 状态机:稳定页面、成功态、弹窗 [JumpBack]、加载 [JumpBack]、危险确认分支分开建节点。DoNothing 或单独验证节点;只有用户明确要执行时才生成直接点击确认。ocr() 自动截图:MaaMCP 的 ocr() 工具会自行获取当前画面,调用前不要重复 screencap();如果换了 MCP provider,先读该工具的参数说明确认截图语义。
ROI 不是越大越好:默认 expand=75 会失败(OCR 把"角色"拆成"电"+"色")。多数节点 sweet spot 是 expand=20-30。
特殊节点需要小 ROI:"城堡" expand≥20 全失败,只接受 0-15(上方有图标 M/3.9m/1077/👍 干扰)。
expected 必须匹配当前资源实际显示文本:在 MaaGumballs 中文资源里 ["角色"] 正确、["Role"] 找不到;跨语言项目要按目标资源/locale 写实际 OCR 文本或项目约定的 i18n 形式。
OCR 非确定性:同一 ROI 不同次结果可能不同,timeout: 2000 期间会重试。
OCR 失败不要立刻换 TemplateMatch:先看截图、扫 ROI、检查 expected 与颜色干扰;如果目标本质是稳定图标/按钮,TemplateMatch 本来就是正确选择,不必死守 OCR。
可滚动 UI 用大 ROI + 父级 orchestrator(重要):
next 里放 [JumpBack]CastleSwipeDown/Up —— 找不到文字时会死循环滑动!CastleHall 节点:父级 orchestrator 节点的 next 列表里放 [JumpBack]XXXEntry + [JumpBack]XXXSwipeDown + [JumpBack]XXXSwipeUp 等CastleHallEntry: [60, 391, 609, 795]run_pipeline 必须有手动超时意识:超过 ~10 秒不返回要主动停止,可能 ROI/expected 配错或 OCR 引擎卡住。
改完 pipeline 文件后调 load_pipeline(path) 即可:不需要重启 server。run_pipeline 每次都按 pipeline_path 从磁盘读最新内容,reload 后立即生效。
可滚动 UI 用统一大 ROI:当多个目标在同一个可滚动列表(如城堡建筑列表)时,所有节点共用同一 ROI [x, top_y, w, full_h],覆盖整个滚动区域。避免每个节点各自 ROI 滚动后失效。前提:每个节点的 expected 文字是唯一的(OCR 按 expected 匹配不会冲突)。
ROI 上边界 ≤ 元素最小 y:目标元素在 y=424 时,ROI y 起点必须 ≤ 424,否则切掉顶部导致 OCR 失败。例:原 ROI [100, 450, ...] 把"城堡管理"切掉 26px → 改为 [100, 400, ...] 通过。
卡住时截图查看:节点超时、OCR 找不到、行为异常时,调 screencap 看当前屏幕实际状态。可能界面已不在预期页、可能位置已被遮挡。
跨页面流程用 next 状态机而非 Python orchestration:当一个流程涉及多个页面跳转(如:大地图 → 活动入口 → 难度选择 → 队伍 → 战斗),用 MaaFramework 的 next + [JumpBack] 串节点。不要写 Python for/while 调 context.run_task() 模拟状态机。详见 option 反模式 和 maa-pipeline-guide 的「跨页面状态机」。
跨文件节点引用在 run_pipeline 测试中会失败:MaaFramework 全局加载时所有 assets/resource/base/pipeline/*.json 合并到同一命名空间,[JumpBack]OtherFileNode 能解析。但 run_pipeline 只加载单文件,跨文件引用会报"加载 Pipeline 失败"。应对:
run_pipeline(无跨文件依赖的子流程)是 OK 的MaaCli 命令行运行全 bundle| 节点 | expand | score | 备注 |
|---|---|---|---|
UI_RoleListPage | 20 | 0.9997 | 中部偏左 |
UI_RoleFormationPage | 20 | 0.998 | 角色右边 |
UI_CastlePage | 3 | 0.997 | ⚠️ 仅 0-15 |
UI_TeamPage | 20 | 0.997 | 城堡右边 |
ClickGoToArchipelago | 20 | 0.991 | 中间大地图按钮 |
color_filter 减少 OCR 干扰(实战技巧)场景:ROI 里同时有目标文字 + 周边装饰(如"0/31"绿色能量条 vs "0/23"绿色节点数),OCR 可能误识别装饰色块。
方案:先建一个 ColorMatch 节点(限定像素颜色范围),然后在其他 OCR 节点上加 color_filter 字段引用它。
"AutoSky_GreenCheck": {
"recognition": "ColorMatch",
"roi": [558, 802, 157, 45],
"method": 4,
"lower": [22, 123, 57], // RGB 下界(暗绿)
"upper": [55, 215, 102], // RGB 上界(亮绿)
"action": "DoNothing",
"post_delay": 200,
"timeout": 2000
},
"AutoSky_CheckEnergyZero": {
"recognition": "OCR",
"expected": ["0/\\d+"],
"roi": [850, 1280, 220, 50],
"color_filter": "AutoSky_GreenCheck", // ← 只在绿色区域 OCR
"action": "DoNothing"
}取色技巧(用截图工具):
实战案例:本项目(MaaGumballs)用这个方法区分"能量条 0/31"vs"节点数 0/23",两者都是绿色 OCR 文本,周围装饰色也不同。
| 节点 | 统一 ROI | score | 备注 |
|---|---|---|---|
CastleManage | [100, 400, 520, 880] | 0.999 | 顶部 |
Market | 同上 | 0.999 | 顶部 |
Blacksmith | 同上 | 0.998 | 顶部 |
AlchemyWorkshop | 同上 | 0.999 | 顶部 |
TrainingCenter | 同上 | 1.000 | 顶部 |
CastleMainHall | 同上 | 0.876 | 顶部只露 25px |
Shrine | 同上 | 0.999 | 中段 |
Family | 同上 | 0.999 | 中段 |
Museum | 同上 | 0.999 | 底部 |
Manor | 同上 | 0.999 | 底部 |
关键设计:
[100, 400, 520, 880],覆盖 y=400-1280)expected 文字差异让 OCR 区分next 链(避免死循环)next + [JumpBack])当生成的活动流程需要跨多个页面跳转(如:大地图 → 活动入口 → 难度选择 → 队伍 → 战斗),用 MaaFramework 的 next + [JumpBack] 机制串接各页面节点,不要写 Python orchestration。
{
"MyActivity_Start": {
"next": [
"MyActivity_TeamReady", // 已在队伍配置页 → 点击"进入战斗"
"[JumpBack]MyActivity_Difficulty_Select", // 在难度选择页 → 选难度
"[JumpBack]MyActivity_Enter" // 在大地图 → 找入口
],
"timeout": 10000
},
"MyActivity_Enter": {
"next": [
"MyActivity_Enter_Click", // 找到图标 → 点击
"[JumpBack]BigMap_Activity_Resident", // 切"常驻"tab
"[JumpBack]BigMap_Activity" // 打开活动页
],
"timeout": 10000
},
"MyActivity_EnterBattle": {
"recognition": "OCR",
"expected": ["进入战斗"],
"action": "Click",
"next": [
"MyActivity_FightStart", // 战斗开始
"[JumpBack]MyActivity_TravelSelect_Boat", // 乘船
"[JumpBack]MyActivity_TravelSelect_Walk" // 步行 fallback
]
},
"MyActivity_TravelSelect_Boat": {
"recognition": "OCR",
"expected": ["确定"],
"roi": [490, 740, 100, 80], // 窄 ROI 限定乘船行
"action": "Click"
},
"MyActivity_TravelSelect_Walk": {
"recognition": "OCR",
"expected": ["确定"],
"roi": [490, 590, 100, 80], // 窄 ROI 限定步行行
"action": "Click"
}
}[JumpBack] 是状态回退的关键:命中后执行完节点链,自动返回父节点的 next 继续。target_offset 偏移点击:识别难度文字后用 target_offset: [270, 0, 0, 0] 把点击位置右移到"确定"按钮上。pipeline/*.json,所以 [JumpBack]BigMap_Activity(在 main_ui.json)能从 growth_trial.json 引用。但 run_pipeline 测试只加载单文件,集成测试需用 GUI/CLI。| 状态机(推荐) | Python orchestration(次选) |
|---|---|
| 流程推进由 MaaFramework 调度 | 自己写 for/if 调度 |
每个节点 next 显式声明后继 | Python 函数串行 run_task |
[JumpBack] 自动状态回退 | 手动实现回退逻辑 |
| 跨页面异常有自然路径 | 需手动 try/except |
详见 option 反模式 和 maa-pipeline-guide 的「跨页面状态机」典型模式。
© 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 3 other files (scripts) in .agents/skills/maa-pipeline-generate of duorua/narutomobile.
Open the folder on GitHubat commit e3ff401
Maa Pipeline Generate 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 Generate this skillduorua/narutomobile | 340 | — | ~2.8k | Automated safety check: Pass | AGPL-3.0 | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 4 repos | ~1.2k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Figma use_figma Plugin API Ruleswarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Stitch to Remotion Walkthrough Videosgoogle-labs-code/stitch-skills | 8.5k | 6 repos | ~3.2k | Automated safety check: Notes | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
google-labs-code/stitch-skills
Builds walkthrough videos from Stitch design projects using Remotion, with transitions, zoom effects and text overlays on each screen.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
duorua/narutomobile
Scan and initialize a MaaFramework game or app automation project for Maa skills and MaaMCP workflows.
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
Test and validate MaaFramework Pipeline JSON, recognition nodes, action nodes, CustomAction/CustomRecognition wiring, resource loading, and end-to-end task behavior.
duorua/narutomobile
Operate MaaFramework devices and Pipeline resources through the maafw-cli command line with strict JSON output.
Works with
Generate MaaFramework Pipeline nodes and recognition snippets from screenshots or observed UI state. Maa Pipeline Generate is an agent skill from duorua/narutomobile. Generate MaaFramework Pipeline nodes and recognition snippets from screenshots or observed UI state.
Maa Pipeline Generate fits situations like: OCR node generation; choosing TemplateMatch/OCR/ColorMatch/CustomRecognition; preserving target-file schema style; designing next/[JumpBack] links before merging generated nodes into pipeline JSON.
Run `npx skills add duorua/narutomobile --skill maa-pipeline-generate -a claude-code`. Or copy the skill folder (.agents/skills/maa-pipeline-generate in duorua/narutomobile) into .claude/skills/maa-pipeline-generate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add duorua/narutomobile --skill maa-pipeline-generate -a codex`. Or copy the skill folder (.agents/skills/maa-pipeline-generate in duorua/narutomobile) into .agents/skills/maa-pipeline-generate 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-generate -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-generate, .gemini/skills/maa-pipeline-generate, .github/skills/maa-pipeline-generate and .opencode/skills/maa-pipeline-generate in your project.
Going by SKILL.md and its folder, Maa Pipeline Generate needs Python for the scripts in its folder and the command-line tools its instructions call (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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Maa Pipeline Generate 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.8k tokens (SKILL.md is roughly 11k 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 Generate: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and Figma use_figma Plugin API Rules (warpdotdev/warp, 65k 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 340 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 10, 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.