Agent skill

Extension Install

by agenvoy in agenvoy/Agenvoy

Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/.

AGPL-3.0Auto-check: notesAgent Workflows

Install Extension Install

skills CLI
$ npx skills add agenvoy/Agenvoy --skill extension-install -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install agenvoy/Agenvoy extension-install --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/agenvoy/Agenvoy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/extensions/skills/extension-install .claude/skills/extension-install && rm -rf skills-src

Use ~/.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/

Facts

Skill name
extension-install
GitHub stars
436
Token cost
~2.9k tokens
SKILL.md length
1,152 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/.

  • Works in 9 steps: Browse and download from registry (when… → Extract into staging → Read and validate manifest.json → …
  • Agent Workflows work in your project
  • SKILL.md covers Input, Flow and Forbidden
  • Calls apt; reaches pkg.agenvoy.com

What it does

Extension Install is an agent skill from agenvoy/Agenvoy. 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.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows. It works with Model Context Protocol. The repository describes itself as: Self-hosted 24/7 personal AI agent that runs on your own machine — memory, schedules, tools and credentials stay local. Single Go binary with MCP. The licence is AGPL-3.0.

When your agent uses it

  • Agent Workflows work in your project

Example prompts

  • “/extension-install”

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Browse and download from registry (when no tarball)
  2. Extract into staging
  3. Read and validate manifest.json
  4. Install system dependencies
  5. Check and fill keychain keys
  6. Derive install directory
  7. Collision check
  8. Move staging to the install path
  9. Final report

What it can do on your machine

Read from SKILL.md and the folder at commit 09fd548. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • apt

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • pkg.agenvoy.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Extension Install loads about 2.9k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 1,152 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:138
    /yum/pacman/apk` (first found) and runs `sudo -n <pm> install -y <dep>`; the sudo ticket comes from the password collect
  • NoteRuns commands with sudoSKILL.md:144
    ow=false`); the user sees "About to run `sudo apt install -y ffmpeg` — confirm?". User decline → tool fails → skill abor

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.

SKILL.md

The full file from agenvoy/Agenvoy at commit 09fd548, republished under its AGPL-3.0 licence (© agenvoy). 1,152 words, ~2,910 tokens.

Download SKILL.mdSave it as .claude/skills/extension-install/SKILL.md (or your agent's skills folder).
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。

Extension Installer

Takes a packager-produced tarball, installs it as an extension visible to the runtime scanner.

Input

tarball (optional): absolute path to a tar.gz.

  • Provided → skip to §1 and extract the local file (offline / already-downloaded case)
  • Missing → run §0 list + pick + download, then proceed to §1

pkg.agenvoy.com is the fixed registry endpoint — it is not a choice, so there is nothing to ask about.

Flow

0. Browse and download from registry (when no tarball)
0.1 GET /list — fetch the catalog

Call http_request:

json
{
  "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".

0.2 ask_user singleSelect to pick a package

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.

0.3 GET /download — pull the tar locally

Call download_file (not http_request — binary doesn't belong in a string body):

json
{
  "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:

  • size_bytes > 0
  • If the response carries sha256, compare to the picked item's sha256; mismatch → abort and rm the file
  • Any other failure → abort with the error

Use output_file as the tarball variable and proceed to §1.

1. Extract into staging

Fixed staging directory: ~/.config/agenvoy/tools/.extension/.staging/ (cleaned and recreated on every install).

bash
rm -rf ~/.config/agenvoy/tools/.extension/.staging
bash
mkdir -p ~/.config/agenvoy/tools/.extension/.staging
bash
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.
2. Read and validate manifest.json

read_files: ~/.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):

FieldCondition
namenon-empty, matches ^[a-z0-9][a-z0-9_-]*$
type∈ {api, script} (worker rejects mcp)
versionstrict semver ^\d+\.\d+\.\d+$
summarynon-empty
emailnon-empty, matches ^[^@\s]+@[^@\s]+\.[^@\s]+$, already lowercase (worker normalizes)
dependencearray
api_key_namearray, each element matches [A-Z][A-Z0-9_]*_API_KEY
filesarray, length ≥ 1, must include tool.json

Every path in files must exist in the staging subdirectory; any missing file → abort.

3. Install system dependencies

For each <dep> in manifest.dependence, call:

pkg_manage(action="install", package="<dep>")

The tool internally:

  • exec.LookPath(<dep>) already present → returns already_installed:true, this step is satisfied
  • Linux only — probes apt/apt-get/dnf/yum/pacman/apk (first found) and runs sudo -n <pm> install -y <dep>; the sudo ticket comes from the password collected during confirmation
  • macOS → the tool is not registered; use run_command(["brew","install","<dep>"], write_paths=["/opt/homebrew"])
  • After install, LookPath re-checks

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.

4. Check and fill keychain keys

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.

Note: Agenvoy has no read-only key check tool, so even an existing key is re-prompted. The user can re-enter the same value or a new one; cancelling (empty) aborts the install.

5. Derive install directory

Directory name (no author/email prefix):

<manifest.name>@<manifest.version>

Examples: yt-dlp-info@1.0.0, yt_dlp_youtube_downloader@1.0.0.

Full install path:

~/.config/agenvoy/tools/.extension/<manifest.type>/<manifest.name>@<manifest.version>/

Never rewrite tool.json::name — keep the value the manifest already carries. The runtime tool registry uses that value as the key.

Collisions (same name + version from two authors) are resolved uniformly in §6 collision check (Overwrite / Rename / Cancel popup).

6. Collision check

Define <final-dir> = <name>@<version> (the default install directory name derived in §5).

bash
ls ~/.config/agenvoy/tools/.extension/<type>/<final-dir> 2>/dev/null

If the directory already exists → ask_user singleSelect:

<final-dir> is already installed.
- Overwrite · remove the old version and install the new one
- Rename · pick a new directory name (keep both on disk)
- Cancel · abort install
ChoiceAction
CancelClean staging and abort
Overwriterm -rf the existing dir → keep <final-dir> → proceed to §7
RenameProceed to §6.1 to collect a new name
Show full SKILL.md (481 more words)Show less
6.1 Rename — collect a new directory name

Default suggestion = <final-dir>-2. If -2 is also taken, increment to -3, -4, ... until non-conflicting.

ask_user (free-text):

Enter a new directory name (must end with `@<version>`; allowed chars [A-Za-z0-9_.+\-@]):
default: <suggested name>

Reply validation:

ConditionAction
Blank → use the default suggestionPass; set <final-dir> = default
Matches ^[A-Za-z0-9][A-Za-z0-9_.+\-]*@\d+\.\d+\.\d+(-[A-Za-z0-9_.+\-]+)?$ AND does not collidePass; set <final-dir> = new name
Format invalid / still collidingRe-prompt; abort after 3 attempts with "rename cancelled, install aborted"

Note: rename only affects the install directory name (two versions coexist on disk). tool.json::name is not rewritten; the runtime tool registry uses that name as the key. When two versions are loaded with the same name, the later-loaded one shadows the earlier, so the runtime still exposes only one. Rename is purely a disk-level coexistence escape hatch for rollback / diff, not a runtime version switcher.

7. Move staging to the install path
bash
mkdir -p ~/.config/agenvoy/tools/.extension/<type>
bash
mv ~/.config/agenvoy/tools/.extension/.staging/<original-basename> ~/.config/agenvoy/tools/.extension/<type>/<final-dir>
bash
rm -rf ~/.config/agenvoy/tools/.extension/.staging
8. Final report

tools.NewExecutor re-scans .extension/<type>/* on every incoming user message, so the new extension is loaded automatically on the next message. No daemon restart needed; do not run agen stop.

✅ installed
- name:    <manifest.name>
- email:   <manifest.email>
- version: <manifest.version>
- type:    <manifest.type>
- path:    ~/.config/agenvoy/tools/.extension/<type>/<final-dir>/
- tool:    <tool.json::name> (kept verbatim from manifest, not rewritten)
- deps:    <installed binary list or "all present">
- keys:    <stored KEY list or "none">
- next:    your next message will see the new tool

Forbidden

  • The §0 registry endpoint is fixed at https://pkg.agenvoy.com
  • Never fetch the tar binary via http_request in §0.3; binary belongs to download_file (cannot go through a string body)
  • Never skip the §0.3 sha256 comparison (when the response carries sha256); mismatch means the tar is corrupted or substituted
  • Never extract directly into the install path; always isolate through .staging/. Any failure in validation / deps / key steps must rm -rf .staging
  • A missing manifest field in step 2 means the tarball is broken at the packager side — abort and report
  • Never skip the dual command -v <dep> check in step 3 (once before install, once after)
  • Keep the step 4 store_secret flow as written; routing a plaintext key through ask_user first would pull the value into LLM context)
  • Never hardcode a single package manager; always use uname -s + probe order
  • Never rewrite tool.json::name; keep whatever the manifest carries. The runtime tool registry uses it as the key. (Authors must ensure the name matches Gemini / Vertex AI rules [a-zA-Z_][a-zA-Z0-9_.:-]* at publish time.)
  • Never add author / email / safe-email prefixes to the install dir; the name is fixed at <manifest.name>@<manifest.version>; collisions are resolved via the §6 popup
  • Never skip the step 6 collision check; the Overwrite/Rename/Cancel three-way decision must come from the user
  • Never accept a renamed directory in §6.1 that doesn't end with @<version>; that violates the collision-safe naming convention
  • Never accept a renamed name in §6.1 that still collides with an existing directory; re-prompt
  • Never let §6.1 rename touch tool.json::name; rename is purely disk-level coexistence — the tool registry key always stays as the manifest value
  • Never rename .staging/ to .tmp/ or another path (the runtime scanner skips . prefixes; .staging is the scan-safe staging location)
  • Never run agen stop / kill <pid> / pkill agen / any daemon-restart command in §8. tools.NewExecutor re-scans on every user message, so the new extension auto-loads on the next message. Restarting only kills your own session.
    </content>
    </invoke>

© agenvoy, 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

Files

Just SKILL.md in extensions/skills/extension-install of agenvoy/Agenvoy.

Open the folder on GitHubat commit 09fd548

Compare with similar skills

Extension Install 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.

Extension Install compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Extension Install this skillagenvoy/Agenvoy436—~2.9kAutomated safety check: NotesAGPL-3.0
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k4 repos~1.2kAutomated safety check: PassMIT
MCP Integration for Pluginsanthropics/claude-plugins-official38k11 repos~3.1kAutomated safety check: PassApache-2.0
MemPalace Memory SearchMemPalace/mempalace59k—~1.4kAutomated safety check: PassMIT
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    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.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    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.

    38k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • MemPalace Memory Search

    MemPalace/mempalace

    Mines project files and conversation exports into a local, searchable memory palace and recalls past work by semantic search through the mempalace CLI.

    59k GitHub stars~1.4k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Context Mode Output Sandbox

    mksglu/context-mode

    Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.

    26k GitHub stars~4.1k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from agenvoy/Agenvoy

  • 建立並排程定時觸發的 skill。所有新增定時/週期任務、提醒、排程通知的請求必須走此 skill,禁止直接呼叫 schedules(mode=write)(那是 skill 已存在時的時間綁定工具,不該作為新建排程的入口)。

    436 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Skill Creator

    agenvoy/Agenvoy

    Create, edit, improve, or audit AgentSkills. An agent skill from agenvoy/Agenvoy.

    436 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Extension Upload

    agenvoy/Agenvoy

    Package a script tool under ~/.config/agenvoy/tools/script/ into a tar.gz and publish to pkg.agenvoy.com registry.

    436 GitHub stars~6.1k tokensUpdated today
    Auto-check passed

Categories

Questions about Extension Install

What does Extension Install do?

Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/. Extension Install is an agent skill from agenvoy/Agenvoy.extension/<type/<name@<version/.

When should I use Extension Install?

Extension Install fits situations like: agent Workflows work in your project.

How do I install Extension Install in Claude Code?

Run `npx skills add agenvoy/Agenvoy --skill extension-install -a claude-code`. Or copy the skill folder (extensions/skills/extension-install in agenvoy/Agenvoy) into .claude/skills/extension-install in your project. Claude Code loads it when a task matches its description.

How do I install Extension Install in Codex?

Run `npx skills add agenvoy/Agenvoy --skill extension-install -a codex`. Or copy the skill folder (extensions/skills/extension-install in agenvoy/Agenvoy) into .agents/skills/extension-install in your project. Codex loads it when a task matches its description.

Can I use Extension Install in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agenvoy/Agenvoy --skill extension-install -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/extension-install, .gemini/skills/extension-install, .github/skills/extension-install and .opencode/skills/extension-install in your project.

What does Extension Install need to run?

Going by SKILL.md and its folder, Extension Install needs the command-line tools its instructions call (apt).

Does Extension Install access the network?

SKILL.md names 1 domain. In commands or code: pkg.agenvoy.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Extension Install safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Extension Install use?

Extension Install 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.

How many tokens does Extension Install use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Extension Install?

Skills that share tags, products or a category with Extension Install: 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 MemPalace Memory Search (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Extension Install?

agenvoy (a GitHub organization) maintains it in agenvoy/Agenvoy, which has 436 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.

Source: agenvoy/Agenvoy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.