Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- IBM Bob is now a stable target for Agent Skills, lifecycle hooks, MCP servers, and `AGENTS.md` compilation, with documented project and user-scope paths. (#2909)
- gh-aw's shared APM import now supports `token-source: github-token`; after consumers re-vendor the workflow, its read-only current-repository identity can fetch same-repository private packages, while `cascade` remains the default and cross-repository packages still require a dedicated token or GitHub App. (#2706)
- OpenAPM v0.1 adds `req-pl-018` for dependency-policy identity casing and amends `req-rs-016` clause (3), the Section 6.4 merge rules, and the Section 6.5 pattern grammar so repository identity and policy matching cannot diverge; Section 11.2 item 6 now requires the per-host case rule in `CONFORMANCE.md`. (#2706)

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Think `package.json`, `requirements.txt`, or `Cargo.toml` — but for AI agent configuration.

GitHub Copilot | Claude Code | Grok Build | Cursor | OpenCode | Codex | Gemini | Windsurf | Kiro
GitHub Copilot | Claude Code | Grok Build | Cursor | OpenCode | Codex | Gemini | Windsurf | Kiro | IBM Bob

**[Documentation](https://microsoft.github.io/apm/)** · **[Quick Start](https://microsoft.github.io/apm/getting-started/quick-start/)** · **[CLI Reference](https://microsoft.github.io/apm/reference/cli-commands/)** · **[v0.29 Roadmap](https://github.com/microsoft/apm/milestone/17)**

Expand Down Expand Up @@ -67,7 +67,7 @@ One command, no configuration -- VS Code and GitHub Copilot read the file automa

One `apm.yml` describes every primitive your agents need — instructions, skills, prompts, agents, hooks, plugins, MCP servers — and `apm install` reproduces the exact same setup across every client on every machine. `apm.lock.yaml` pins the resolved tree the way `package-lock.json` does for npm.

- **[One manifest for everything](https://microsoft.github.io/apm/reference/primitive-types/)** -- declared once, deployed across Copilot, Claude, Grok Build, Cursor, OpenCode, Codex, Gemini, Windsurf, Kiro
- **[One manifest for everything](https://microsoft.github.io/apm/reference/primitive-types/)** -- declared once, deployed across Copilot, Claude, Grok Build, Cursor, OpenCode, Codex, Gemini, Windsurf, Kiro, and IBM Bob
- **[Install from anywhere](https://microsoft.github.io/apm/guides/dependencies/)** — GitHub, GitLab, Bitbucket, Azure DevOps, GitHub Enterprise, Gitea, Gogs, any git host
- **[Transitive dependencies](https://microsoft.github.io/apm/guides/dependencies/)** — packages can depend on packages; APM resolves the full tree
- **[Author plugins](https://microsoft.github.io/apm/guides/plugins/)** — build Copilot, Claude, and Cursor plugins with dependency management, then export standard `plugin.json`
Expand Down Expand Up @@ -161,7 +161,7 @@ apm marketplace add github/awesome-copilot
apm install azure-cloud-development@awesome-copilot
```

Or add an MCP server (wired into Copilot, Claude, Cursor, Codex, OpenCode, Gemini, Windsurf, and Kiro):
Or add an MCP server (wired into Copilot, Claude, Cursor, Codex, OpenCode, Gemini, Windsurf, Kiro, and IBM Bob):

```bash
apm install --mcp io.github.github/github-mcp-server --transport http # connects over HTTPS
Expand Down
28 changes: 15 additions & 13 deletions docs/src/content/docs/concepts/primitives-and-targets.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar:
order: 3
---

A **primitive** is a unit of agent context APM can manage: instructions, prompts, agents, skills, hooks, commands, plugins, and MCP servers. A **target** is a harness APM compiles primitives for: Copilot, Claude, Grok Build, Cursor, Codex, Gemini, OpenCode, Windsurf, and Kiro, with Antigravity and Hermes available as explicit-only targets. The matrix below is the full reach map. For any primitive X and harness Y, it tells you whether Y receives X natively, receives it after APM transforms it, or does not receive it at all.
A **primitive** is a unit of agent context APM can manage: instructions, prompts, agents, skills, hooks, commands, plugins, and MCP servers. A **target** is a harness APM compiles primitives for: Copilot, Claude, Grok Build, Cursor, Codex, Gemini, OpenCode, Windsurf, Kiro, and IBM Bob, with Antigravity and Hermes available as explicit-only targets. The matrix below is the full reach map. For any primitive X and harness Y, it tells you whether Y receives X natively, receives it after APM transforms it, or does not receive it at all.

This page is the canonical reference. Tutorials and how-tos link here; do not duplicate.

Expand Down Expand Up @@ -78,7 +78,7 @@ GitHub Copilot CLI canvas extensions: a directory bundle whose entry file is `ex

## Target catalogue

Each target is identified by a slug used in `apm.yml`'s `targets:` field or on the `--target` flag. `apm.yml` accepts the canonical targets (`copilot`, `claude`, `grok-build`, `cursor`, `opencode`, `codex`, `gemini`, `antigravity`, `windsurf`, `kiro`, `agent-skills`, `hermes`). `agent-skills`, `antigravity`, and `hermes` can be selected explicitly or listed in `apm.yml`, but they are not auto-detected or included in `all`. The output directory is where APM writes deployed primitives.
Each target is identified by a slug used in `apm.yml`'s `targets:` field or on the `--target` flag. `apm.yml` accepts the canonical targets (`copilot`, `claude`, `grok-build`, `cursor`, `opencode`, `codex`, `gemini`, `antigravity`, `windsurf`, `kiro`, `bob`, `agent-skills`, `hermes`). `agent-skills`, `antigravity`, and `hermes` can be selected explicitly or listed in `apm.yml`, but they are not auto-detected or included in `all`. The output directory is where APM writes deployed primitives.

| Slug | Output directory | Compile family |
|---|---|---|
Expand All @@ -92,6 +92,7 @@ Each target is identified by a slug used in `apm.yml`'s `targets:` field or on t
| `opencode` | `.opencode/` (project), `~/.config/opencode/` (user) | agents |
| `windsurf` | `.windsurf/` (project), `~/.codeium/windsurf/` (user) | agents |
| `kiro` | `.kiro/` (project and user) | agents |
| `bob` | `.bob/` (project and user) | agents |
| `hermes` | `.agents/` (project), `~/.hermes/` (user) | agents |

Notes per target:
Expand All @@ -106,6 +107,7 @@ Notes per target:
- **opencode** -- OpenCode. No hooks support.
- **windsurf** -- Windsurf / Cascade. No native agents primitive -- Cascade auto-invokes any `SKILL.md` by its `description:` frontmatter, so personas ship as skills. Workflows are the harness's name for commands.
- **kiro** -- Kiro IDE/CLI v3. Instructions become steering files, skills stay as `SKILL.md` folders, hooks are individual JSON files, MCP lands in `.kiro/settings/mcp.json`, and agents deploy to `.kiro/agents/<stem>.md` with frontmatter filtered to `description`, `model`, and `tools` only.
- **bob** -- IBM Bob. Skills deploy as `SKILL.md` folders; hooks merge into `.bob/settings.json` or `~/.bob/settings/settings.json`; MCP uses `.bob/mcp.json` or `~/.bob/mcp.json`. Compiled instructions use the project-root `AGENTS.md` that Bob reads automatically.
- **hermes** -- Hermes Agent. Stable explicit-only target; skills use `.agents/skills/` at project scope and `~/.hermes/skills/` at user scope. Compiled instructions use `AGENTS.md`; MCP servers use `~/.hermes/config.yaml`.

## The compatibility matrix
Expand All @@ -117,17 +119,17 @@ Rows are primitives, columns are harnesses. Cell legend:
- **unsupported** -- APM does not deliver this primitive to this harness.
- **gated** -- delivered behind an explicit declaration or trust flag.

| Primitive | Copilot | Claude | Grok Build | Cursor | Codex | Gemini | Antigravity | OpenCode | Windsurf | Kiro | Hermes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| instructions | native | native | native | native | compiled | compiled | native | compiled | native | native | compiled |
| prompts | native | compiled | compiled | compiled | unsupported | compiled | compiled | compiled | compiled | unsupported | unsupported |
| agents | native | native | native | compiled | compiled | unsupported | unsupported | native | unsupported | compiled | unsupported |
| skills | native | native | native | native | native | native | native | native | native | native | native |
| hooks | native | native | unsupported | native | native | native | native | unsupported | native | native | unsupported |
| commands | unsupported | native | compiled | compiled | unsupported | compiled | unsupported | compiled | compiled | unsupported | unsupported |
| plugins | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled |
| MCP servers | native | native | unsupported | native | native | native | native | native | native | native | native |
| canvas (experimental) | gated | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported |
| Primitive | Copilot | Claude | Grok Build | Cursor | Codex | Gemini | Antigravity | OpenCode | Windsurf | Kiro | Bob | Hermes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| instructions | native | native | native | native | compiled | compiled | native | compiled | native | native | compiled | compiled |
| prompts | native | compiled | compiled | compiled | unsupported | compiled | compiled | compiled | compiled | unsupported | unsupported | unsupported |
| agents | native | native | native | compiled | compiled | unsupported | unsupported | native | unsupported | compiled | unsupported | unsupported |
| skills | native | native | native | native | native | native | native | native | native | native | native | native |
| hooks | native | native | unsupported | native | native | native | native | unsupported | native | native | native | unsupported |
| commands | unsupported | native | compiled | compiled | unsupported | compiled | unsupported | compiled | compiled | unsupported | unsupported | unsupported |
| plugins | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled | compiled |
| MCP servers | native | native | unsupported | native | native | native | native | native | native | native | native | native |
| canvas (experimental) | gated | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported | unsupported |

How to read a cell:

Expand Down
2 changes: 2 additions & 0 deletions docs/src/content/docs/consumer/install-mcp-servers.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ unresolved required entries fail closed.
| OpenCode | `opencode.json` | project (only if `.opencode/` exists) | JSON `mcp` |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` | global | JSON `mcpServers` |
| Kiro IDE | `.kiro/settings/mcp.json` (project, only if `.kiro/` exists) or `~/.kiro/settings/mcp.json` (`-g`) | both | JSON `mcpServers` |
| IBM Bob | `.bob/mcp.json` (project) or `~/.bob/mcp.json` (`-g`) | both | JSON `mcpServers` |
| JetBrains Copilot | `%LOCALAPPDATA%\github-copilot\intellij\mcp.json` (Windows) or `$XDG_CONFIG_HOME/github-copilot/intellij/mcp.json` (macOS/Linux; defaults to `~/.config/github-copilot/intellij/mcp.json`) | global | JSON `servers` |

## How `targets:` gates which configs get written
Expand Down Expand Up @@ -231,6 +232,7 @@ Antigravity CLI to `~/.gemini/config/mcp_config.json`, Hermes to
`$HERMES_HOME/config.yaml` whenever selected explicitly (or
`~/.hermes/config.yaml` when unset or blank), Windsurf to
`~/.codeium/windsurf/mcp_config.json`, Kiro to `~/.kiro/settings/mcp.json`,
IBM Bob to `~/.bob/mcp.json`,
and JetBrains Copilot to its OS-specific user config).
When the user-scope manifest declares a `targets:` field (or the CLI passes
`--target`), only the matching runtimes receive the config write. When no CLI
Expand Down
17 changes: 17 additions & 0 deletions docs/src/content/docs/integrations/ide-tool-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ Dependency packages contribute only `dependencies.mcp`; their
- `.gemini/settings.json` (Gemini)
- `~/.codeium/windsurf/mcp_config.json` (Windsurf)
- `.kiro/settings/mcp.json` and `~/.kiro/settings/mcp.json` (Kiro IDE)
- `.bob/mcp.json` and `~/.bob/mcp.json` (IBM Bob)
- OS-specific `github-copilot/intellij/mcp.json` (JetBrains Copilot -- uses
`"servers"` key, user-scope global path):
- `%LOCALAPPDATA%\github-copilot\intellij\mcp.json` (Windows)
Expand Down Expand Up @@ -148,6 +149,22 @@ This target covers the documented Kiro IDE/CLI v3 layout
[kiro.dev/docs/cli/v3/](https://kiro.dev/docs/cli/v3/), accessed 2026-08-03).
See [the targets matrix](../../reference/targets-matrix/#kiro) for a full primitives list.

### IBM Bob

[IBM Bob](https://bob.ibm.com/) reads Agent Skills from `.bob/skills/`,
lifecycle hooks from `.bob/settings.json`, and MCP servers from
`.bob/mcp.json`. APM supports the corresponding global locations under
`~/.bob/`; global hooks use Bob's distinct
`~/.bob/settings/settings.json` path. Bob also reads the project-root
`AGENTS.md`, so `apm compile --target bob` supplies compiled instructions.

The integration follows IBM's documented
[skills](https://bob.ibm.com/docs/ide/features/skills),
[lifecycle hooks](https://bob.ibm.com/docs/ide/configuration/lifecycle-hooks),
and [MCP](https://bob.ibm.com/docs/ide/configuration/mcp/mcp-in-bob) schemas.
See [the targets matrix](../../reference/targets-matrix/#bob) for the full
path and capability table.

### JetBrains (IntelliJ IDEA, PyCharm, GoLand, and others)

GitHub Copilot for JetBrains reads MCP servers from a single user-scope
Expand Down
3 changes: 2 additions & 1 deletion docs/src/content/docs/reference/cli/compile.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ for what those files are) even though compile does not itself *deploy* hooks.
`.github/instructions/*.instructions.md` (with their `applyTo:`
frontmatter) that `apm install` already deploys. Compile is
**recommended for every other context-producing target** (`claude`, `cursor`, `codex`,
`gemini`, `grok-build`, `opencode`, `antigravity`, `windsurf`, `kiro`, `hermes`, `intellij`), which load instructions through a
`gemini`, `grok-build`, `opencode`, `antigravity`, `windsurf`, `kiro`, `bob`, `hermes`, `intellij`), which load instructions through a
root context file or harness-specific rules folder that compile
generates.

Expand Down Expand Up @@ -320,6 +320,7 @@ one-shot `apm compile`; `--output` only applies in single-file mode.
| `antigravity` | `AGENTS.md` |
| `windsurf` | `AGENTS.md` |
| `kiro` | `AGENTS.md` |
| `bob` | `AGENTS.md` |
| `hermes` | `AGENTS.md` |
| `intellij` | `AGENTS.md` |
| `agent-skills` | none |
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/reference/cli/deps.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ apm deps update [PACKAGES...] [OPTIONS]
|---|---|
| `-v, --verbose` | Show detailed update information. |
| `--force` | Overwrite locally-authored files on collision. |
| `-t, --target` | Force deployment to specific targets. Comma-separated. Values: `agent-skills`, `agents`, `agy`, `all`, `antigravity`, `claude`, `codex`, `copilot`, `cursor`, `gemini`, `grok-build`, `hermes`, `intellij`, `kiro`, `opencode`, `vscode`, `windsurf`. Experimental targets (`copilot-app`, `copilot-cowork`, `grok-cloud`, `openclaw`) are also accepted when their feature flags are enabled. `all` excludes `agent-skills`, `antigravity`, `hermes`, experimental targets, and `intellij`. |
| `-t, --target` | Force deployment to specific targets. Comma-separated. Values: `agent-skills`, `agents`, `agy`, `all`, `antigravity`, `bob`, `claude`, `codex`, `copilot`, `cursor`, `gemini`, `grok-build`, `hermes`, `intellij`, `kiro`, `opencode`, `vscode`, `windsurf`. Experimental targets (`copilot-app`, `copilot-cowork`, `grok-cloud`, `openclaw`) are also accepted when their feature flags are enabled. `all` excludes `agent-skills`, `antigravity`, `hermes`, experimental targets, and `intellij`. |
| `--parallel-downloads N` | Max concurrent downloads. Default `4`. `0` disables parallelism. |
| `-g, --global` | Update user-scope dependencies in `~/.apm/`. |
| `--legacy-skill-paths` | Deploy skill files to per-client paths (`.cursor/skills/`, etc.) instead of the shared `.agents/skills/` directory. |
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/reference/cli/init.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ and [`apm marketplace init`](../marketplace/) instead.
| `-y`, `--yes` | off | Skip interactive prompts; use auto-detected defaults. Overwrites an existing `apm.yml` without confirmation. |
| `--plugin` | off | **Deprecated.** Use [`apm plugin init`](../plugin/) instead. Scaffold a plugin authoring project: also writes `plugin.json` and adds a `devDependencies` block to `apm.yml`. Plugin name must be kebab-case, max 64 chars. |
| `--marketplace` | off | **Deprecated.** Use [`apm marketplace init`](../marketplace/) instead. Append a `marketplace:` authoring block to `apm.yml`. See [Publish to a marketplace](../../../producer/publish-to-a-marketplace/). |
| `--target` | (prompt) | Comma-separated target list. Skips the interactive target prompt. Stable manifest targets include `copilot`, `claude`, `grok-build`, `cursor`, `opencode`, `codex`, `gemini`, `antigravity`, `windsurf`, `kiro`, and `agent-skills`; `all` expands the default stable set. |
| `--target` | (prompt) | Comma-separated target list. Skips the interactive target prompt. Stable manifest targets include `copilot`, `claude`, `grok-build`, `cursor`, `opencode`, `codex`, `gemini`, `antigravity`, `windsurf`, `kiro`, `bob`, and `agent-skills`; `all` expands the default stable set. |
| `-v`, `--verbose` | off | Show detailed output. |

Target precedence: `--target` flag > interactive prompt > auto-detect at
Expand Down
Loading