Skip to main content

Install Agent Skills from Git repositories using symlinks

Project description

SkillHost

Website: https://skillhost.dev GitHub: https://github.com/wang-chonghuan/skillhost

SkillHost installs Agent Skills from Git repositories into local agent skill directories by creating safe, manifest-tracked symlinks.

Git is the source of truth. SkillHost clones or pulls skill repos, discovers SKILL.md files, and links the discovered skills into agents such as Codex and Claude Code. It does not execute code from skill repositories and does not overwrite unmanaged files.

What's new in 0.1.8

SkillHost 0.1.8 adds per-agent skill visibility controls through skillhost list --agent <name>, persists hidden skills in config, keeps hidden skills hidden during later update and relink, and includes a skillhost-skill agent skill for guiding SkillHost usage.

Typical path

pipx install skillhost

skillhost add git@github.com:org/company-skills.git
# choose Codex, Claude Code, OpenCode, OpenClaw, Hermes Agent, or All

skillhost update
skillhost list

Result:

skill repo            -> SkillHost -> ~/.agents/skills
skill collection repo -> SkillHost -> ~/.claude/skills
                                  -> teammate ~/.agents/skills

No skillhost init is required. Commands create the needed ~/.skillhost state on demand.

Install

pipx install skillhost
uv tool install skillhost
pip install skillhost

From a checkout:

uv tool install .
pip install .

Upgrade SkillHost itself:

skillhost upgrade

upgrade detects common installers. It uses pipx upgrade skillhost for pipx installs, uv tool upgrade skillhost for uv tool installs, and falls back to python -m pip install --upgrade skillhost.

Core commands

skillhost add <skill-git-repo> [--project <name>] [--name <repo-name>]
skillhost update [repo-name] [--project <name>] [--agent codex|claude|opencode|openclaw|hermes] [--all]
skillhost relink [repo-name] [--project <name>] [--agent codex|claude|opencode|openclaw|hermes] [--all]
skillhost unlink [repo-name] [--project <name>] [--agent codex|claude|opencode|openclaw|hermes] [--all]
skillhost remove <repo-name> [--project <name>]
skillhost clean
skillhost list [--project <name>] [--agent codex|claude|opencode|openclaw|hermes] [--all]
skillhost doctor [--project <name>]
skillhost agents
skillhost projects
skillhost config

Useful behavior:

  • add clones a skill repo, discovers skills, then asks which agent directories to link into.
  • update uses the same target selection flow as add, removes stale SkillHost-managed links for the selected targets, runs git pull --ff-only, then relinks.
  • relink recreates manifest-managed symlinks without pulling.
  • unlink removes only SkillHost-managed symlinks recorded in .skillhost-links.json.
  • remove unlinks, deletes the local clone under ~/.skillhost, and removes the repo from config.
  • clean removes broken SkillHost-managed symlinks and stale manifest entries.
  • list shows skills visible to the selected agent, defaulting to Codex. In an interactive terminal, select skills to hide or show for that agent. --all shows registered repos and discovered skills.
  • doctor checks config, repos, duplicate skill names, targets, manifests, broken links, and missing sources.
  • config prints the config file path only.

Use --all when a command needs an explicit all-repos operation, especially unlink --all.

Agent targets

Built-in targets:

codex    user: ~/.agents/skills           project: .agents/skills
claude   user: ~/.claude/skills           project: .claude/skills
opencode user: ~/.config/opencode/skills  project: .opencode/skills
openclaw user: ~/.openclaw/skills         project: —
hermes   user: ~/.hermes/skills           project: —

Register a custom agent:

skillhost register --agent cursor --user-dir ~/.cursor/skills --project-dir .cursor/skills
skillhost agents
skillhost relink

Agent registration updates config only. Run skillhost relink when you want to create or refresh links.

Skill repo shapes

A skill repo contains one skill:

my-skill/
  SKILL.md

A skill collection repo contains multiple skills:

company-skills/
  skills/
    git/
      SKILL.md
    db/
      SKILL.md

Small flat collections are also supported:

company-skills/
  git/
    SKILL.md
  db/
    SKILL.md

Discovery is intentionally shallow. SkillHost checks root SKILL.md, direct children under skills/, and direct children under the repo root. It ignores hidden directories and obvious non-skill directories such as tests, docs, examples, scripts, references, and assets.

Project skills

Project skills are scoped to a registered project repository and linked into project-local agent directories.

skillhost register --project my-project --git git@github.com:org/my-project.git
cd /path/to/my-project
skillhost add git@github.com:org/my-project-skills.git --project my-project
skillhost update --project my-project

Project links go to directories such as:

.agents/skills
.claude/skills
.opencode/skills

SkillHost validates the current Git root and origin remote against the registered project. It does not scan your disk for checkouts.

State and safety

Default state:

~/.skillhost/
  config.json
  user_repos/<repo-name>/
  project_repos/<project-name>/<repo-name>/

Each agent target directory also gets a local .skillhost-links.json manifest. This is how SkillHost knows which symlinks it owns.

Safety rules:

  • Does not execute code from skill repositories.
  • Does not overwrite unmanaged existing files or directories.
  • Does not delete user-owned skill directories.
  • Removes only manifest-managed symlinks.
  • Uses git pull --ff-only for updates; it does not merge or rebase.
  • Does not perform full-disk project discovery or cross-project bulk cleanup.

Git URL handling

Common SSH and HTTPS Git URL forms normalize to the same repo identity:

git@github.com:org/repo.git       -> github.com/org/repo
git@github.com:org/repo           -> github.com/org/repo
https://github.com/org/repo.git   -> github.com/org/repo
https://github.com/org/repo       -> github.com/org/repo
ssh://git@github.com/org/repo.git -> github.com/org/repo

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

skillhost-0.1.9.tar.gz (68.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skillhost-0.1.9-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file skillhost-0.1.9.tar.gz.

File metadata

  • Download URL: skillhost-0.1.9.tar.gz
  • Upload date:
  • Size: 68.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for skillhost-0.1.9.tar.gz
Algorithm Hash digest
SHA256 adff950b5923a67ad080b3d579a1b8d09d2827663208dc34eb62270093ccacba
MD5 bd870dad69c10af53d61b2ef183220e5
BLAKE2b-256 5095d6e2374e2406c4805de60752e0997a717abd5fc5dc65ad994d7a5d8b9fd5

See more details on using hashes here.

File details

Details for the file skillhost-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: skillhost-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for skillhost-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 7f267da2b0143791d93722de5d4805fdcf7258b8d0128bafc774f4173491841c
MD5 e42b05b987dc6e5a3a53431597000bf5
BLAKE2b-256 08387fd606d23ecbaf73294152c331efe0b81084aa3cd831621952d30abacdec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page