Skip to main content

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.
  • unlink only removes SkillHost-managed symlinks recorded in .skillhost-links.json.
  • remove unlinks manifest-managed symlinks before deleting a user repo; dirty repos are refused unless --force is used.

Security

SkillHost never executes code from skill repositories. It only:

  1. clones repositories with Git,
  2. updates repositories with git pull --ff-only,
  3. reads SKILL.md metadata, and
  4. 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

skillhost-0.1.2.tar.gz (79.2 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.2-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

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

Hashes for skillhost-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d22af03b883af37919e1a98c7d812a1601992626d496ebfaf8872937edcd279d
MD5 91d96b2012404f9f83369734a493ddac
BLAKE2b-256 6200b26a5cbae0b9dc77ac6ad8f05089a194706721db6c14c901746dd2ecafed

See more details on using hashes here.

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

Hashes for skillhost-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 79d965ae7d17507d973023c89ef57ad4d07b663b8d5b40f4a92869f27dfcaf2a
MD5 f201b86222b63f9f374d505ea6aa16f6
BLAKE2b-256 95df46a35c4f456c4965557c3d8a51f7435a666a8494e2313d43586d3eda6d27

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