Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

agentpack pins the skills, plugins, commands, and rules your project feeds to AI coding agents. You declare them once in agentpack.toml, lock them to exact commits in pack.lock, and launch any supported agent with everything already staged in its native format.

Think of it as cargo or uv for agent configuration: a manifest, a lockfile, a content-addressed cache, and reproducible builds — except the artifacts are skills and prompts instead of crates.

The problem it solves

Agent configuration has become real configuration. A project’s behavior under Claude Code, Cursor, or Codex depends on slash commands, rules files, sub-agent definitions, MCP servers, and skill libraries. Today those artifacts live scattered across GitHub repos and local folders, with no shared versioning story, and each agent expects a different file layout.

So teams copy-paste. The same skill gets pasted into .claude/, then adapted by hand for .cursor/, then forgotten when a third agent shows up. Versions drift between machines. Nothing records which commit of a shared rule set you actually ran. There is no lockfile.

agentpack replaces the copy-paste with a dependency graph.

What it gives you

CapabilityWhat it means
Declarative manifestagentpack.toml lists direct dependencies with version constraints, modes, and MCP servers
Deterministic lockfilepack.lock (v2) pins every package — direct and transitive — to an exact commit and cache_key
Content-addressed cacheEach package is fetched once into $AGENTPACK_HOME/cache/<cache_key>/ and shared across projects
Per-harness stagingArtifacts are materialized into per-harness staging trees outside your repo — never committed, never symlinked into your real ~/.claude or ~/.cursor
Cross-harness conversionA skill, command, agent, or rule is re-rendered into each harness’s native format, not blindly copied
Six launchersclaude, agent (Cursor), opencode, codex, grok, agy (Antigravity) — sync then exec the real binary

A first taste

# agentpack.toml
name = "my-project"
version = "0.1.0"

[dependencies]
"github.com/anthropics/skills/skills/canvas-design" = { branch = "main" }
"github.com/anthropics/claude-plugins-official/plugins/hookify" = { branch = "main" }
agentpack add anthropics/skills/skills/canvas-design   # resolve, lock, sync
agentpack claude                                       # launch Claude Code with both staged

The agent starts with every declared dependency in place — no manual copying, no drift, and nothing leaked into your global agent config.

How the pieces fit

agentpack.toml  ──>  pack.lock  ──>  cache  ──>  staged bundles  ──>  launch
  (you write)        (pinned)      (fetched)     (per-harness)       (agent runs)

Read on through Core Concepts to understand each step, or jump to the Quick Start to get something running first.

Source and license

agentpack is MIT-licensed and developed at github.com/OlegHQ/agentpack. It is pre-release: the CLI, lockfile shape, staging layout, and defaults may change without a migration path until a stable release is declared.