Skip to content
Merged
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
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ agpack targets show claude # print Claude's manifest as YAML

### Bundled targets

agpack ships manifests for eight tools: `claude`, `codex`, `copilot`, `cursor`, `gemini`, `opencode`, `windsurf`, `antigravity`. The manifests themselves are the source of truth — browse them at [`agpack/builtin_targets/`](agpack/builtin_targets/) or introspect locally:
agpack ships manifests for nine tools: `claude`, `codex`, `copilot`, `cursor`, `gemini`, `opencode`, `pi`, `windsurf`, `antigravity`. The manifests themselves are the source of truth — browse them at [`agpack/builtin_targets/`](agpack/builtin_targets/) or introspect locally:

```bash
agpack targets list # every target + its resource types
Expand All @@ -219,6 +219,7 @@ agpack targets show claude # the full manifest as YAML
One thing worth knowing that isn't obvious from the file names:

- **Windsurf and Antigravity have no per-project MCP config.** Their MCP configs live in user-global locations (`~/.codeium/windsurf/mcp_config.json` and `~/.gemini/antigravity/mcp_config.json`), which agpack does not manage.
- **pi has no MCP and no file-based subagents.** It deliberately ships without MCP (CLI tools and extensions cover that role) and uses TypeScript extensions instead of copy-file agents, so its manifest exposes only `skills` (`.pi/skills`) and `commands` — which map to pi's prompt templates in `.pi/prompts`.

### Custom and overridden targets

Expand Down
2 changes: 1 addition & 1 deletion agpack/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""agpack - Fetch and deploy AI agent resources from git repos."""

__version__ = "0.4.3"
__version__ = "0.4.4"
14 changes: 14 additions & 0 deletions agpack/builtin_targets/pi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# pi (Earendil Works coding agent)

skills:
kind: copy-directory
path: .pi/skills

# pi calls these "prompt templates" (invoked as /name); same role as commands
# elsewhere.
commands:
kind: copy-file
path: .pi/prompts

# pi has no MCP (by design) and no file-based subagents (it uses extensions),
# so there is no `mcp:` or `agents:` resource type.
1 change: 1 addition & 0 deletions agpack/templates/init_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ targets:
# - codex
# - cursor
# - copilot
# - pi

dependencies:
skills:
Expand Down
9 changes: 9 additions & 0 deletions tests/test_builtin_targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@ def test_windsurf_paths() -> None:
assert "mcp" not in target.resources


def test_pi_paths() -> None:
target = load_builtin("pi")
assert target.resources["skills"].path == ".pi/skills"
assert isinstance(target.resources["commands"], CopyFileResource)
assert target.resources["commands"].path == ".pi/prompts"
assert "agents" not in target.resources
assert "mcp" not in target.resources


def test_antigravity_paths() -> None:
target = load_builtin("antigravity")
assert target.resources["skills"].path == ".agent/skills"
Expand Down
1 change: 1 addition & 0 deletions tests/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -1203,6 +1203,7 @@ def test_targets_list_shows_all_builtins(tmp_path: Path) -> None:
"cursor",
"copilot",
"gemini",
"pi",
"windsurf",
"antigravity",
]:
Expand Down
1 change: 1 addition & 0 deletions tests/test_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"cursor",
"gemini",
"opencode",
"pi",
"windsurf",
}

Expand Down
Loading