Install Agent Skills from Git repositories using symlinks
Project description
SkillHost
Install Agent Skills from Git repos into Codex, Claude Code, and OpenCode using symlinks.
SkillHost is intentionally small:
- Git is the distribution system.
- Symlinks are the install system.
- No registry, no server, no account.
- Manifest files make unlink and remove safe.
The tool website is skillhost.dev.
Install
pipx install skillhost
uv tool install skillhost
pip install skillhost
From a checkout you can also run:
pipx install .
uv tool install .
pip install .
User-level skills
User-level skills are shared across projects.
skillhost add git@github.com:your-org/company-skills.git
After cloning, SkillHost discovers SKILL.md files and asks where to link them:
Codex user skills: ~/.agents/skills
Claude Code user skills: ~/.claude/skills
OpenCode user skills: ~/.config/opencode/skills
All supported agents
Custom directory
Skip linking
For scripts and CI, choose the target explicitly:
skillhost add git@github.com:your-org/company-skills.git --agent codex --yes
skillhost add git@github.com:your-org/company-skills.git --target-dir ~/custom-skills --yes
Update pulls the latest Git changes. With no selectors, it updates all known user and project repos:
skillhost update
skillhost update --user_repos company-skills
skillhost update --project_repos my-project/project-skills
skillhost update --user_repos company-skills --agent codex --yes
Link or unlink all registered user-level repos at any time:
skillhost link
skillhost link --agent codex
skillhost link --target-dir /path/to/skills
skillhost unlink --agent claude --dry-run
skillhost list
skillhost doctor
--agent and --target-dir are mutually exclusive. Custom target directories get their own .skillhost-links.json manifests.
Project-level skills
Project-level skills are linked into the current Git repository checkout. There is no full-disk search and no automatic discovery across all checkouts.
cd ~/code/my-project
skillhost project register my-project --git git@github.com:your-org/my-project.git
skillhost project add git@github.com:your-org/my-project-skills.git --project my-project
skillhost project link
skillhost project link determines the current Git repository root with Git, reads the origin remote, normalizes it, and matches it against registered project remotes. If it cannot match the current directory, register the project first.
Target directories
User targets:
- Codex:
~/.agents/skills - Claude Code:
~/.claude/skills - OpenCode:
~/.config/opencode/skills
Project targets:
- Codex:
.agents/skills - Claude Code:
.claude/skills - OpenCode:
.opencode/skills
SkillHost uses each agent's native target directory. It does not rely on one agent reading another agent's directory.
Source repository layouts
Single skill repo:
my-skill/
SKILL.md
Skill collection repo:
company-skills/
skills/
git/
SKILL.md
db/
SKILL.md
Flat collection repo:
company-skills/
git/
SKILL.md
db/
SKILL.md
Skill discovery is shallow and only considers valid skills that contain SKILL.md. It does not recursively scan references, assets, examples, scripts, docs, or tests.
Frontmatter
A SKILL.md can include simple YAML-style frontmatter:
---
name: ng-git
description: Narrative git workflow helpers
---
Skill names must contain only lowercase letters, digits, and hyphens. If no name is present, SkillHost uses the skill directory or repo name.
Conflict policy
- Existing user-owned skills are never overwritten.
- Duplicate skill names across source repos are skipped and reported.
unlinkonly removes SkillHost-managed symlinks recorded in.skillhost-links.json.removeunlinks manifest-managed symlinks before deleting a user repo; dirty repos are refused unless--forceis used.
Security
SkillHost never executes code from skill repositories. It only:
- clones repositories with Git,
- updates repositories with
git pull --ff-only, - reads
SKILL.mdmetadata, and - creates or removes manifest-managed symlinks.
SkillHost does not implement registry support, semver, package resolution, full-disk project discovery, or auto-running skill scripts.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillhost-0.1.2.tar.gz.
File metadata
- Download URL: skillhost-0.1.2.tar.gz
- Upload date:
- Size: 79.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d22af03b883af37919e1a98c7d812a1601992626d496ebfaf8872937edcd279d
|
|
| MD5 |
91d96b2012404f9f83369734a493ddac
|
|
| BLAKE2b-256 |
6200b26a5cbae0b9dc77ac6ad8f05089a194706721db6c14c901746dd2ecafed
|
File details
Details for the file skillhost-0.1.2-py3-none-any.whl.
File metadata
- Download URL: skillhost-0.1.2-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79d965ae7d17507d973023c89ef57ad4d07b663b8d5b40f4a92869f27dfcaf2a
|
|
| MD5 |
f201b86222b63f9f374d505ea6aa16f6
|
|
| BLAKE2b-256 |
95df46a35c4f456c4965557c3d8a51f7435a666a8494e2313d43586d3eda6d27
|