Agent Package Manager
https://github.com/microsoft/apm
https://microsoft.github.io/apm/
⚠️ 本ページは v0.25.0 時点での情報であり、最新情報は定義公式ドキュメントを参考
概要
AI Agent 向けの依存関係管理ツール(CLI)
イメージとしては、AI Agent 版 npm
Skills や Prompts、Hooks、MCP サーバ、Instructions(Rules)などを宣言的に管理する
apm install を実行すると、依存ツリー 全体(推移的依存関係 も含む)が解決され、各 Agent が読み取るファイル群として展開される
Microsoft が開発した MIT ライセンス の OSS
基本コンセプト: https://microsoft.github.io/apm/concepts/what-is-apm/
メンタルモデル: npm や pip、cargo の マニフェスト + ロックファイル という形を、AI Agent を構成するファイルに適用したもの
AI Agent の実行には介入しない
構成要素
apm.yml: マニフェスト
apm.lockl.yaml: ロックファイル
.apm/: パッケージに含まれる Skill などの原本(オーサリング)
管理対象(プリミティブ): https://microsoft.github.io/apm/concepts/primitives-and-targets/#primitive-catalogue
Instructions
Skills
Prompts
Agents
Hooks
Commands
Plugins
MCP サーバ
対応 Agent & 出力先: https://microsoft.github.io/apm/concepts/primitives-and-targets/#target-catalogue
GitHub Copilot: .github/
Codex: .codex/, .agents/
Claude: .claude/
Gemini: .gemini/
OpenCode: .opencode/
IDE
Cursor: .cursor/
Antigracity: .agents/
Windsurf: .windsurf/
Kiro: .kiro/
3 つの約束(The Three Promises): https://microsoft.github.io/apm/concepts/the-three-promises/
Portable by manifest(マニフェストによる移植性)
リポジトリをクローンした開発者が apm install を実行すれば、同じ Skill などがさまざまな AI Agent で利用可能
Secure by default(デフォルトで安全)
apm install 実行時に Agent の挙動を乗っ取り得る不可視の Unicode をスキャン
コンテンツハッシュをロックファイルに固定
推移的な MCP サーバを明示的な確認なしに通さない
apm audit により、意図しない変更がないかチェック
https://microsoft.github.io/apm/concepts/lifecycle/#5-audit
Governed by policy(ポリシーによる統治)
apm-policty.yml を利用することで、GitHub Organization 内の全リポジトリに対して、ソースやスコープ、プリミティブのホワイトリストを定義することができる
置き場所: <org>/.github/apm-policy.yml(Organization 配下の .github リポジトリ
https://microsoft.github.io/apm/enterprise/github-rulesets/
apm install と apm audit --ci --policy org 実行時、プロジェクトの Git remote から自動で検出する
⚠️ リポジトリで独自の apm-policy.yml を持つことで、ポリシーを拡張できる
が、ルールを厳しくすることしかできない(緩めることはできない)
code:apm-policy.yml
name: "Contoso Engineering Policy"
version: "1.0.0"
enforcement: block # warn | block | off
dependencies:
allow:
- "contoso/**"
- "microsoft/*"
deny:
- "untrusted-org/**"
mcp:
transport:
allow: http, stdio # sse と streamable-http を拒否