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.1.tar.gz (77.6 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.1-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: skillhost-0.1.1.tar.gz
  • Upload date:
  • Size: 77.6 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.1.tar.gz
Algorithm Hash digest
SHA256 14b06eecb34f7c1528ac62f0c85a8dc77339dcfdb081d7cf8e0cd51653975d61
MD5 a5efc3bb76c67ca8f6ed53577f230f05
BLAKE2b-256 6a0a2ff9739f4f318a3562e6f8d9ef09626873c08b581e084492ce4ef97cf952

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skillhost-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0d9735def98b70f785cbf25dec126c6ad74fb6ac043cc20a27424a5a271a6546
MD5 9c3523d069ad00eef00549303853e06e
BLAKE2b-256 f0a98d21d7c98c5f7cc41a58878efa82f007382798c0f3bda22b6890b57170fe

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