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):