code-reviewer
Analyze project source code and generate optimization suggestions. Use when user wants code review, performance optimization advice, security hardening…
Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type>/<name>@<version>/. Extracts tar.gz, validates manifest (email field, type api/script only), installs deps, stores keychain keys, atomically
$ npx -y skills add agenvoy/Agenvoy --skill extension-install --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/extension-installContext preview
The summary Claude sees to decide when to auto-load this skill.
Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type>/<name>@<version>/. Extracts tar.gz, validates manifest (email field, type api/script only), installs deps, stores keychain keys, atomically
name: extension-install description: Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type>/<name>@<version>/. Extracts tar.gz, validates manifest (email field, type api/script only), installs deps, stores keychain keys, atomically moves staged dir. Collisions handled by Overwrite/Rename/Cancel popup.
> **本 Skill 為 Agenvoy 內部最佳化版本**,依 Agenvoy 的執行環境撰寫(`run_command` 的 CWD、`~/.config/agenvoy/skills/.system/` 安裝位置、`edit_skill`/`schedules`/`find_edit_tool` 等工具、subagent 與排程的觸發路徑),**不保證適配其他 AI harness**。
Takes a packager-produced tarball, installs it as an extension visible to the runtime scanner.
`tarball` (**optional**): absolute path to a tar.gz.
`pkg.agenvoy.com` is the fixed registry endpoint — it is not a choice, so there is nothing to ask about.
Call `http_request`:
{
"url": "https://pkg.agenvoy.com/list?limit=100",
"method": "GET",
"content_type": "json"
}Expect 200 with body `{"ok":true,"items":[{...}],"count":N,"limit":100,"offset":0}`.
Each `item` carries `name` / `type` / `email` / `version` / `summary` / `description` / `dependence` / `api_key_name` / `files` / `r2_key` / `size_bytes` / `sha256` / `created_at`.
`status_code != 200` or `items` empty → abort with "registry unavailable or no packages".
Convert `items` into display strings, one per line:
<item.name>@<item.version> (<item.email>) · <item.type> · <item.summary>
Example: `yt_dlp_youtube_downloader@1.0.0 (chiu@example.com) · script · Download a YouTube video...`
`ask_user` (singleSelect):
Pick the extension to install (N total):
`options` are the display strings. Record the user's chosen item index → extract that item's `r2_key` / `name` / `email` / `version`.
User cancel → abort.
Call `download_file` (**not** `http_request` — binary doesn't belong in a string body):
{
"url": "https://pkg.agenvoy.com/download?key=<selected item.r2_key>",
"output_file": "~/.config/agenvoy/download/<name>@<version>.tar.gz",
"timeout": 300
}Response: `{ok, output_file, size_bytes, sha256, ...}`.
Verify the download:
Use `output_file` as the `tarball` variable and **proceed to §1**.
Fixed staging directory: `~/.config/agenvoy/tools/.extension/.staging/` (**cleaned and recreated** on every install).
rm -rf ~/.config/agenvoy/tools/.extension/.staging
mkdir -p ~/.config/agenvoy/tools/.extension/.staging
tar -xzf <tarball> -C ~/.config/agenvoy/tools/.extension/.staging
After extraction, the staging directory should contain exactly one subdirectory `<original-basename>/` (the packager uses `-C <parent>` to keep the outer dir in the tarball). `run_command: ls ~/.config/agenvoy/tools/.extension/.staging` gets `<original-basename>`.
If extraction fails, or staging contains 0 / >1 subdirectories, abort with:
❌ Tarball contents are invalid (cannot find a single root dir). Verify the tarball was produced by the extension-upload skill.
`read_file: ~/.config/agenvoy/tools/.extension/.staging/<original-basename>/manifest.json`
Missing file → abort with "manifest.json missing in tarball, refuse to install".
Validate each field (any failure aborts; a broken manifest is a packager-side defect, so abort and report it):
| Field | Condition | |---|---| | `name` | non-empty, matches `^[a-z0-9][a-z0-9_-]*$` | | `type` | ∈ `{api, script}` (worker rejects mcp) | | `version` | strict semver `^\d+\.\d+\.\d+$` | | `summary` | non-empty | | `email` | non-empty, matches `^[^@\s]+@[^@\s]+\.[^@\s]+$`, already lowercase (worker normalizes) | | `dependence` | array | | `api_key_name` | array, each element matches `[A-Z][A-Z0-9_]*_API_KEY` | | `files` | array, length ≥ 1, must include `tool.json` |
Every path in `files` must exist in the staging subdirectory; any missing file → abort.
For each `<dep>` in `manifest.dependence`, call:
pkg_manage(action="install", package="<dep>")
The tool internally:
Response is JSON `{"ok": true/false, ...}`. `ok:false` or tool error → **abort immediately** and `rm -rf .staging`.
Each call triggers a `KindToolConfirm` popup (`AlwaysAllow=false`); the user sees "About to run `sudo apt install -y ffmpeg` — confirm?". User decline → tool fails → skill aborts.
> Note: `pkg_manage` is Linux-only (not registered on macOS) and available on every channel. Root actions go through the same system-password confirmation `run_command` uses for `write_paths`, so no terminal is needed.
For each `<KEY>` in `manifest.api_key_name`, call:
store_secret(key="<KEY>", prompt="<extension name> needs <KEY>; enter the value (re-enter to overwrite an existing one):")
`store_secret` calls `keychain.Set` internally. User cancels / empty value → tool returns error → skill **aborts** and removes staging.
> Not
Self-hosted AI agent harness in a single Go binary — writes, sandbox-tests and repairs its own tools, and lets Claude Code, Codex and any MCP client build and share them.
Repo: agenvoy/Agenvoy
Analyze project source code and generate optimization suggestions. Use when user wants code review, performance optimization advice, security hardening…
Generate bilingual (English + Traditional Chinese) commit message from git changes.
Package a script tool under ~/.config/agenvoy/tools/script/ into a tar.gz and publish to pkg.agenvoy.com registry. Keyword picker, dep/key detection,…
從原始碼分析自動生成雙語 README。當使用者請求為專案建立 README、需要從程式碼庫生成 README.md(英文)和 README.zh.md(中文)、或希望為其函式庫/套件建立一致的多語言文件時使用。
建立並排程定時觸發的 skill。**所有新增定時/週期任務、提醒、排程通知的請求必須走此 skill**,禁止直接呼叫 schedules(mode=write)(那是 skill 已存在時的時間綁定工具,不該作為新建排程的入口)。 必定觸發的訊息特徵(任一即活化): - 相對延遲:「X 分鐘後」「X…
Search the curated Agenvoy public API list for an API that fits the current user need or skill context, then chain into the `api-tool-add` skill to register it…