# 工具與 Skill 管理工具

尋找、建立、測試與執行其他工具與 skill 的工具。

| 工具 | 說明 |
|---|---|
| `find_tools` | 工具註冊表。`mode=search` 以關鍵字比對（需全部命中）或 `select:<name>,<name>` 精確啟用，並注入對應 schema；`mode=list` 僅回傳名稱與一行描述、不注入 schema —— `mcp=true` 限縮為 MCP 對外暴露的工具，另有旗標可一併列出內部記帳用的 system 工具。省略 mode 時：有 `query` → search，否則 list。看似缺少的能力一律先查這裡，再決定是否新建 |
| `edit_tool` | 工具定義本身。`mode=write` 建立或覆寫、`mode=patch` 在 `test_tool` 失敗後修正精確字串、`mode=remove` 將目錄丟進 `.Trash`（可回收）。`tag` 決定目標檔案：`json` = `tool.json`（schema）、`script` = `script.py`（執行內容）、`api` = `<name>.json`（API 工具）。名稱為 snake_case 且不帶 `script_` 前綴 —— 前綴由 runtime 自動補上 |
| `test_tool` | 在沙箱中以 JSON 由 stdin 餵入並執行 script 工具的 `script.py`，回傳其輸出。這是每次 `edit_tool` write 或 patch 後的驗證步驟；失敗時的循環是 `edit_tool(mode=patch)` → 再測 |
| `run_skill` | 將指定 skill 的參考素材載入當前 turn；結果為 `skill: <name>`、skill 目錄與解析後的 `SKILL.md` 內文。它是參考資料，不是逐行照做的腳本。自 v1.1.0 起，執行開始時比對到或被指名的 skill 也以同樣方式載入：runtime 記錄一筆 `run_skill` 呼叫，其工具結果即帶有 skill 內容，不再另外加一則 system message |
| `edit_skill` | `~/.config/agenvoy/skills/` 底下的檔案。`mode=write` 以相對路徑建立或重寫檔案（`my-skill/SKILL.md`）、`mode=patch` 取代精確字串、`mode=remove` 以單層目錄名丟棄整個 skill（可從 `.Trash` 回收） |
