Skip to content

fix(skills): embed skills in the binary for standalone installs - #2527

Open
Amronos wants to merge 1 commit into
vercel-labs:mainfrom
Amronos:embed-skills
Open

Amronos wants to merge 1 commit into
vercel-labs:mainfrom
Amronos:embed-skills

Conversation

@Amronos

@Amronos Amronos commented Nov 10, 2026

Copy link
Copy Markdown

Problem

The standalone binaries on GitHub Releases (used by mise/aqua and other direct downloads) ship without skill-data/, so every skills command fails:

$ agent-browser skills get core
✗ Skills directory not found. Install skills under ~/.agent-browser/ or set AGENT_BROWSER_SKILLS_DIR.

Today the only fix is to download the source tarball, extract skill-data/ and point AGENT_BROWSER_SKILLS_DIR or ~/.agent-browser/ at it, matching the version by hand. Fixes #1983.

Changes

  • skill-data/ is compiled into the binary with rust-embed, which the CLI already uses for the dashboard. skills list, skills get (including --full, --ref and --all) and the MCP skills tools serve it when no skills directory is found on disk.
  • On-disk skills still win, in the existing order: AGENT_BROWSER_SKILLS_DIR, the package root (npm installs and source checkouts), then ~/.agent-browser/skills and ~/.agent-browser/skill-data. The embedded copy replaces the "Skills directory not found" error.
  • skills path has no directory to print for embedded skills. It reports that skills are embedded, and --json returns {"location": "embedded"} (with "paths": [] when no name is given). This follows agent-desktop skills path, which returns "location": "embedded" for its compiled-in skills.
  • #[allow_missing = true] keeps builds that cannot see ../skill-data, such as the crates.io package or the Docker scripts that mount only cli/, compiling. Those builds embed nothing and behave as they do today. build.rs watches ../skill-data so added skill files trigger a rebuild.
  • Binary size grows by about 220 KB (the size of skill-data/), roughly 1% of the 17 to 20 MB release binaries.
  • --help, the skills docs page, and the MCP tool descriptions (plus the catalog snapshot) describe the fallback.

Tests

  • test_embedded_skills_match_skill_data checks that the embedded skills match discover_skills on skill-data/: names, descriptions, hidden flags, content and supplementary files.
  • standalone_binary_serves_embedded_skills_through_cli_and_mcp copies the binary into an empty directory with an empty HOME, then checks that skills get core prints skill-data/core/SKILL.md byte for byte, that skills list and agent_browser_skills_get serve it, and that skills path core --json reports embedded. CI runs tests with the ci profile, which inherits release, so this exercises the compiled-in copy and not rust-embed's debug-mode disk reads.
  • The existing home-directory test still passes, so ~/.agent-browser skills keep taking precedence over the embedded copy.

Written by Opus 5.5 (opus-5.5) through Sprocket.

Standalone release binaries ship without skill-data/, so every skills
command failed with "Skills directory not found". The CLI now compiles
skill-data/ into the binary and serves it when no skills directory is
found on disk. AGENT_BROWSER_SKILLS_DIR, package installs, and
~/.agent-browser still take precedence. `skills path` reports that
skills are embedded instead of printing a directory.

Fixes vercel-labs#1983

Co-authored-by: usesprocket[bot] <306702232+usesprocket[bot]@users.noreply.github.com>
@vercel

vercel Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

@Amronos is attempting to deploy a commit to the Vercel Labs Team on Vercel.

A member of the Team first needs to authorize it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Standalone release binary cannot run skills commands without separately installed skill-data

1 participant