diff --git a/docs/installation.md b/docs/installation.md
index 501fa29..639519b 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -21,7 +21,7 @@ To undo:
semble uninstall
```
-Supported agents: Claude Code, Cursor, Gemini CLI, Kiro, OpenCode, GitHub Copilot, Codex, VS Code, Windsurf, Zed, Reasonix, Pi, and Command Code.
+Supported agents: Claude Code, Cursor, Gemini CLI, Kiro, OpenCode, GitHub Copilot, Codex, VS Code, Windsurf, Zed, Reasonix, Pi, Command Code, and Antigravity.
> **Pi prerequisite:** Pi requires the MCP extension to be installed before semble can connect. Run `pi install npm:pi-mcp-extension` once, then `semble install`.
@@ -242,6 +242,24 @@ Then add to `~/.pi/agent/mcp.json`:
+
+Antigravity
+
+Add to `~/.gemini/config/mcp_config.json`:
+
+```json
+{
+ "mcpServers": {
+ "semble": {
+ "command": "uvx",
+ "args": ["--from", "semble[mcp]", "semble"]
+ }
+ }
+}
+```
+
+
+
Command Code
@@ -318,7 +336,7 @@ If `semble` is not on `$PATH`, use `uvx --from "semble[mcp]" semble` in its plac
### Sub-agent
-For harnesses that support sub-agents (Claude Code, Cursor, Gemini CLI, Kiro, OpenCode, GitHub Copilot, Reasonix, Pi, Command Code), you can install a dedicated `semble-search` sub-agent. Copy the appropriate file from [`src/semble/agents/`](../src/semble/agents/) to your agent's agents directory:
+For harnesses that support sub-agents (Claude Code, Cursor, Gemini CLI, Kiro, OpenCode, GitHub Copilot, Reasonix, Pi, Command Code, Antigravity), you can install a dedicated `semble-search` sub-agent. Copy the appropriate file from [`src/semble/agents/`](../src/semble/agents/) to your agent's agents directory:
> **Pi prerequisite:** Pi sub-agents require the Pi agents extension. Run `pi install npm:pi-agents` once before installing.
@@ -333,3 +351,4 @@ For harnesses that support sub-agents (Claude Code, Cursor, Gemini CLI, Kiro, Op
| Reasonix | `reasonix.md` | `~/.reasonix/skills/semble-search.md` |
| Pi | `pi.md` | `~/.pi/agents/semble-search.md` |
| Command Code | `commandcode.md` | `~/.commandcode/agents/semble-search.md` |
+| Antigravity | `antigravity.md` | `~/.gemini/config/skills/semble-search/SKILL.md` |
diff --git a/src/semble/agents/antigravity.md b/src/semble/agents/antigravity.md
new file mode 100644
index 0000000..a20fcd9
--- /dev/null
+++ b/src/semble/agents/antigravity.md
@@ -0,0 +1,43 @@
+---
+name: semble-search
+description: Code search agent for exploring any codebase. Use for finding code by intent, locating implementations, understanding how something works, or discovering related code. Prefer over run_shell_command/read_file for any semantic or exploratory question.
+tools:
+ - run_shell_command
+ - read_file
+---
+
+Use `semble search` to find code by describing what it does or naming a symbol/identifier, instead of grep:
+
+```bash
+semble search "authentication flow" ./my-project
+semble search "save_pretrained" ./my-project
+semble search "save model to disk" ./my-project --top-k 10
+```
+
+Results are cached automatically on first run and invalidated when files change.
+
+Use `--content docs` to search documentation and prose, `--content config` for config files (yaml, toml, etc.), or `--content all` to search code, docs, and config:
+
+```bash
+semble search "deployment guide" ./my-project --content docs
+semble search "database host port" ./my-project --content config
+semble search "authentication" ./my-project --content all
+```
+
+Use `semble find-related` to discover code similar to a known location (pass `file_path` and `line` from a prior search result):
+
+```bash
+semble find-related src/auth.py 42 ./my-project
+```
+
+`path` defaults to the current directory when omitted; git URLs are accepted.
+
+If `semble` is not on `$PATH`, use `uvx --from "semble[mcp]" semble` in its place.
+
+### Workflow
+
+1. Start with `semble search` to find relevant chunks. The index is built and cached automatically.
+2. Use `--content docs` for documentation, `--content config` for config files, or `--content all` for everything.
+3. Inspect full files only when the returned chunk does not give enough context.
+4. Optionally use `semble find-related` with a promising result's `file_path` and `line` to discover related implementations.
+5. Use grep only when you need exhaustive literal matches or quick confirmation of an exact string.
diff --git a/src/semble/installer/agents.py b/src/semble/installer/agents.py
index 9ce1aae..773d9ce 100644
--- a/src/semble/installer/agents.py
+++ b/src/semble/installer/agents.py
@@ -245,6 +245,15 @@ def _vscode_mcp_path() -> Path:
instructions_path=_HOME / ".commandcode" / "AGENTS.md",
subagent_path=_HOME / ".commandcode" / "agents" / "semble-search.md",
),
+ AgentTarget(
+ id="antigravity",
+ display_name="Antigravity",
+ binary="agy",
+ config_dir=_HOME / ".gemini" / "antigravity-cli",
+ mcp=McpConfig(_HOME / ".gemini" / "config" / "mcp_config.json", "mcpServers", _STDIO_SERVER_CONFIG),
+ instructions_path=_HOME / ".gemini" / "GEMINI.md",
+ subagent_path=_HOME / ".gemini" / "config" / "skills" / "semble-search" / "SKILL.md",
+ ),
]
diff --git a/src/semble/installer/installer.py b/src/semble/installer/installer.py
index 8e5fba0..813fe45 100644
--- a/src/semble/installer/installer.py
+++ b/src/semble/installer/installer.py
@@ -184,7 +184,7 @@ def run(mode: Mode) -> None:
agent_items = [
(f"{a.display_name}{' (detected)' if (detected := is_detected(a)) else ''}", a, detected and install)
- for a in AGENTS
+ for a in sorted(AGENTS, key=lambda a: not is_detected(a))
]
chosen_agents = _checkbox(
f"Select agents to {'configure' if install else 'remove configuration from'}:", agent_items
diff --git a/tests/test_installer.py b/tests/test_installer.py
index e9d097f..2fbb72b 100644
--- a/tests/test_installer.py
+++ b/tests/test_installer.py
@@ -132,6 +132,7 @@ def test_merge_mcp_errors(claude_agent, content):
("reasonix", "mcpServers"),
("pi", "mcpServers"),
("commandcode", "mcpServers"),
+ ("antigravity", "mcpServers"),
],
)
def test_merge_mcp_writes_under_agent_key(tmp_path, agent_id, key):