Git-native skill management for AI coding agents.
Discover, install, sync, and publish skills across Codex, Claude, and generic agent layouts.
Use the published CLI when you want to use AgentPM:
npm install -g @travelhawk/agentpm
agentpm --helpUse the repository checkout only when developing AgentPM itself:
git clone https://github.com/travelhawk/agentpm.git
cd agentpm
pnpm install
pnpm build
pnpm --filter @travelhawk/agentpm exec agentpm --helpIf you want the development checkout on your global PATH while working on the CLI:
pnpm run link:global
agentpm --helpStart here instead of reading the full command surface:
agentpm quickstart
agentpm quickstart install
agentpm quickstart team
agentpm quickstart sync
agentpm quickstart --jsonUse this when you want one skill on this machine or in the current repo.
agentpm skills search typescript
agentpm skills install typescript --project
agentpm list--projectinstalls into the current repo.--globalinstalls into your home agent directories.
Use this when the repository should declare required skills for everyone who clones it.
agentpm source add travelhawk/skills-vault
agentpm install --from travelhawk/skills-vault --skill release-helper --project --add-source
agentpm init
agentpm syncThis creates and maintains an agentpm.yaml contract. Once that file exists, future project and workspace installs update the repo contract automatically.
Use this when you want one canonical skills repo and multiple machines pulling from it.
agentpm target add my-skills git@github.com:me/skills.git --default
agentpm push --all
agentpm pull --from my-skillsAdd --target codex,claude,generic to control which runtimes receive pulled skills.
📦Install skills from Git repositories, local folders, static registries, and the publicskills.shbridge.🧭Keep the CLI thin while respecting native agent layouts instead of rewriting them.🤝Turnagentpm.yamlinto a reproducible team contract for repo-scoped skills.🔁Publish a canonicalskills/<name>library withpush, then materialize it everywhere withpull.🩺Explain broken state withdoctorand clean stale cache data withcache clean.🧾Emit machine-readable JSON with--jsonacross stateful automation flows.
Create and commit agentpm.yaml when you want repository-level setup to be reproducible:
sources:
- id: internal
locator: git@github.com:company/private-skills.git
- id: public
locator: github:agentpm/public-skills
- id: registry
locator: registry:https://registry.example.com/agentpm/index.yaml
skills:
- nextjs-architecture
- name: audio-mastering
source: internal
ref: v1.2.0
target: codex
scope: project
items:
- audio-masteringString entries are shorthand. Object entries bind a project skill to a configured source, optional Git ref or resolved revision, runtime target, install scope, and one or more native skill items.
Use the public bridge when you do not have your own team source yet:
agentpm skills search typescript
agentpm skills install wshobson/agents@typescript-advanced-types --project
agentpm skills list
agentpm skills update --yesAgentPM keeps a canonical skill library in ~/.agentpm/skills/ under AGENTPM_HOME. A single skill is stored once and fanned out into agent-specific directories through managed links.
agentpm target add my-skills git@github.com:me/skills.git --default
agentpm push --all
agentpm pull --from my-skills
agentpm adopt .claude/skills/my-existing-skill --target codex,genericFor scripts, CI, and local tooling, prefer --json:
agentpm quickstart --json
agentpm source list --json
agentpm install release-helper --project --json
agentpm update --json
agentpm update --yes --json
agentpm doctor --json
agentpm doctor --fix --yes --jsonBehavior is consistent:
- read/list flows return structured data
- stateful commands return
{ "ok": true, "action": "..." } - confirmation-based flows return previews in JSON unless
--yesis also provided - failures return
{ "ok": false, "error": { "message", "hints" } }
AgentPM now tries to tell you what to do next instead of only failing.
Typical recovery commands:
agentpm source list
agentpm target list
agentpm doctor
agentpm doctor --fixCommon cases:
- no configured sources:
agentpm source add <repo-or-registry> - non-interactive runs: pass explicit flags such as
--skill,--all,--from, or--yes - unknown target agents: use
codex,claude, orgeneric - manifest confusion: run
agentpm initif the repo should own a contract
Validate the workspace before release-facing changes:
pnpm typecheck
pnpm lint
pnpm test
pnpm build
pnpm smokepnpm smoke builds the CLI and runs an end-to-end flow with an isolated AGENTPM_HOME.
- Getting Started
- Architecture
- Adapter Guide
- Registry Guide
- Concept
- Plan
- Changelog
- Contributing
- Security Policy
MIT. See LICENSE.
