tool-routing

$npx mdskill add openakita/openakita/tool-routing

Route agents to reliable tools for web and desktop automation.

  • Selects precise tools for website interaction or desktop control.
  • Prioritizes opencli_run and cli_anything_run for deterministic results.
  • Switches to manual browser commands after browser_task failures.
  • Outputs clear decision paths for web and software operations.

SKILL.md

.github/skills/tool-routingView on GitHub ↗
---
name: tool-routing
description: Decision guide for choosing the right tool when operating websites, browsers, and desktop software. Consult when the task involves web interaction, website automation, or desktop app control.
system: true
category: System
priority: high
---

# 工具选择路由指南

当任务涉及操作网站、浏览器或桌面软件时,使用此指南选择最可靠的工具路径。

## 网站 & 浏览器操作

```
需要操作网站?
│
├─ 只需读取内容(文章、文档、API)
│   └─ web_fetch(最快,无需浏览器)
│
├─ 只需搜索信息
│   └─ web_search(DuckDuckGo 直接搜索)
│
├─ 需要交互(点击、填表、登录)
│   │
│   ├─ 目标网站有 opencli adapter?
│   │   └─ YES → opencli_run(最可靠,复用 Chrome 登录态)
│   │
│   ├─ 需要复杂多步交互?
│   │   └─ browser_task(自动规划步骤)
│   │       └─ 失败?→ 手动组合 browser_navigate + browser_click + browser_type
│   │
│   └─ 需要单步精确操作?
│       └─ browser_navigate / browser_click / browser_type 等
│
└─ 需要截图验证?
    └─ browser_screenshot → view_image
```

## 桌面软件操作

```
需要控制桌面软件?
│
├─ 有 cli-anything CLI?(cli_anything_discover 检查)
│   └─ YES → cli_anything_run(最可靠,调用真实后端)
│
├─ Windows 系统?
│   └─ desktop_* 工具(UIA/pyautogui GUI 自动化)
│
└─ 有命令行工具?
    └─ run_shell(直接执行)
```

## 可靠性排序

### 网站操作(从高到低)
1. **opencli_run** — 确定性命令 + JSON 输出 + 登录态
2. **web_fetch** — 简单 HTTP 获取(仅读取)
3. **browser_navigate + browser_click/type** — 手动精确控制
4. **browser_task** — AI 自主操作(可能不稳定)
5. **call_mcp_tool("chrome-devtools")** — 需要额外配置

### 桌面软件操作(从高到低)
1. **cli_anything_run** — CLI 调用真实后端
2. **run_shell** — 系统命令行工具
3. **desktop_* 工具** — GUI 自动化(仅 Windows,脆弱)

## 关键原则

- **browser_task 失败不要反复重试** — 失败 1 次就切换到手动 browser_click/type 组合
- **搜索类任务不要用 browser_task** — 直接用 browser_navigate 拼 URL 参数更可靠
- **有 opencli adapter 时总是优先使用** — 比让 LLM 猜测页面操作可靠得多
- **有 cli-anything CLI 时优先使用** — 比 GUI 自动化可靠 100 倍

More from openakita/openakita

SkillDescription
add-memoryRecord important information to long-term memory for learning user preferences, successful patterns, and error lessons. When you need to remember user preferences, save successful patterns, or record lessons from errors.
apify-scraperWeb data extraction using 55+ Apify Actors for AI-driven scraping. Supports Instagram, Facebook, TikTok, YouTube, Google, and more. Auto-selects best Actor for the task. Structured output in JSON/CSV with rate limiting and ethical scraping guidelines.
bilibili-watcherExtract subtitles and transcripts from Bilibili and YouTube videos. Use when the user wants to get subtitles from B站 (Bilibili) or YouTube, extract Chinese/Japanese video transcripts, watch member-only Bilibili content, or perform Q&A on video content. Supports dual-platform subtitle extraction with yt-dlp.
browser-clickClick page elements by CSS selector or text content. When you need to click buttons, links, or select options. PREREQUISITE - must use browser_navigate to open target page first.
browser-get-contentExtract page content and element text from current webpage. When you need to read page information, get element values, scrape data, or verify page content.
browser-list-tabsList all open browser tabs with their index, URL and title. When you need to check what pages are open, manage multiple tabs, or find a specific tab to switch to.
browser-navigateNavigate browser to specified URL to open a webpage. When you need to open webpages or start web automation. PREREQUISITE - must call before browser_click/type operations. Auto-starts browser if not running.
browser-new-tabOpen new browser tab and navigate to URL (keeps current page open). When you need to open additional page without closing current, or multi-task across pages. PREREQUISITE - must confirm browser is running first.
browser-openLaunch browser or check its status. Returns current state (is_open, url, title, tab_count). If already running, returns status without restarting. Auto-handles everything - no need to call browser_status first.
browser-screenshotCapture browser page screenshot (webpage content only, not desktop). When you need to show page state, document results, or debug issues. For desktop screenshots, use desktop_screenshot instead.