Package
A package is a Git repository capable of sharing at once a bundle of components.
Packages can be installed through the Agent Package Manager, a simple CLI installing, updating, and keeping track of which packages are installed in repositories or at user scope on a machine.
Packages can also be shipped through plugins or marketplaces, see distribution below.
Structure
A package is identified by its apm.yml,
which defines its dependencies (other packages, MCP servers, LSP servers).
Shipped components are placed under the .apm directory.
repository/
├── apm.yml
└── .apm/
├── agents/
│ └── architect.agent.md
├── hooks/
│ └── pre-tool.json
├── instructions/
│ └── style.instructions.md
├── prompts/
│ └── review.prompt.md
└── skills/
└── my-skill/
└── SKILL.mdWarning
The .apm must always be present within a package for apm install to work (a .gitkeep is sufficient).
Distribution
As indicated above, packages can be distributed through plugins or marketplaces with the help of the apm pack command.
Incompatible components are automatically filtered out during consumer installation (e.g. instructions).
curl -fSL https://aka.ms/apm-unix | sh
apm packLimitation
Currently, only Claude Code and Copilot formats are supported for plugin distribution. But this doesn’t mean other agent runtimes can’t consume plugins, they just need to support those formats.
By providing the target(s) property within the apm.yml, a plugin.json file is automatically generated.
name: example
version: 0.1.0
author: Author Name
description: Package example
license: <LICENSE>
targets: [claude, codex, copilot, gemini, kiro, opencode, windsurf]