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.8.tar.gz (68.4 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.8-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: skillhost-0.1.8.tar.gz
  • Upload date:
  • Size: 68.4 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.8.tar.gz
Algorithm Hash digest
SHA256 7ad2aff267471e0dbb93a2869edc2d90f4764b866838bc230ab8d24fde933513
MD5 c3d6ffa1015c065bda42b3a553f240b9
BLAKE2b-256 1706ddd0b69ae30bdb3a9b0a8ab8a2112bd367771e2f5443281057a9f62e81fa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skillhost-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 21.1 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 e24c61edc61f147327209100b63c242683dc2a4dfc3a7971eae970f0ffee33f0
MD5 845382406f778c9ff90ec482e2e1182c
BLAKE2b-256 8838b136e30c14e00f47d349d2286a9702ab0ff17308f0c5b57fc66649909080

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