From 2cd5760693b2bd920f2e1c44e4a44b51c7eb4ac7 Mon Sep 17 00:00:00 2001 From: Pringled Date: Fri, 12 Jun 2026 08:17:36 +0200 Subject: [PATCH 1/6] Added antigravity support --- src/semble/agents/antigravity.md | 43 ++++++++++++++++++++++++++++++++ src/semble/installer/agents.py | 9 +++++++ tests/test_installer.py | 1 + 3 files changed, 53 insertions(+) create mode 100644 src/semble/agents/antigravity.md diff --git a/src/semble/agents/antigravity.md b/src/semble/agents/antigravity.md new file mode 100644 index 00000000..a20fcd91 --- /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 9ce1aae0..f3826b6a 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="antigravity", + config_dir=_HOME / ".gemini" / "config", + mcp=McpConfig(_HOME / ".gemini" / "config" / "mcp_config.json", "mcpServers", _STDIO_SERVER_CONFIG), + instructions_path=_HOME / ".gemini" / "GEMINI.md", + subagent_path=_HOME / ".gemini" / "agents" / "semble-search.md", + ), ] diff --git a/tests/test_installer.py b/tests/test_installer.py index e9d097f0..2fbb72b0 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): From 00257ce04659c11b34454773e9e9bbf15e300c1f Mon Sep 17 00:00:00 2001 From: Pringled Date: Fri, 12 Jun 2026 08:50:24 +0200 Subject: [PATCH 2/6] Update --- src/semble/installer/agents.py | 4 ++-- uv.lock | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/semble/installer/agents.py b/src/semble/installer/agents.py index f3826b6a..c78478dc 100644 --- a/src/semble/installer/agents.py +++ b/src/semble/installer/agents.py @@ -248,11 +248,11 @@ def _vscode_mcp_path() -> Path: AgentTarget( id="antigravity", display_name="Antigravity", - binary="antigravity", + binary="agy", config_dir=_HOME / ".gemini" / "config", mcp=McpConfig(_HOME / ".gemini" / "config" / "mcp_config.json", "mcpServers", _STDIO_SERVER_CONFIG), instructions_path=_HOME / ".gemini" / "GEMINI.md", - subagent_path=_HOME / ".gemini" / "agents" / "semble-search.md", + subagent_path=_HOME / ".gemini" / "skills" / "semble-search.md", ), ] diff --git a/uv.lock b/uv.lock index d0db5aa6..63f2277d 100644 --- a/uv.lock +++ b/uv.lock @@ -10,7 +10,7 @@ resolution-markers = [ [options] exclude-newer = "0001-01-01T00:00:00Z" # This has no effect and is included for backwards compatibility when using relative exclude-newer values. -exclude-newer-span = "P3D" +exclude-newer-span = "P1W" [[package]] name = "annotated-doc" From 3ed7fcf61cfb9b25c1f8fbbbd521e0fc2fb48e11 Mon Sep 17 00:00:00 2001 From: Pringled Date: Fri, 12 Jun 2026 08:54:01 +0200 Subject: [PATCH 3/6] Show detected first --- src/semble/installer/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/semble/installer/installer.py b/src/semble/installer/installer.py index 8e5fba06..813fe458 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 From 146dec2459b6684cc8aa8e4f969133f838767d69 Mon Sep 17 00:00:00 2001 From: Pringled Date: Fri, 12 Jun 2026 08:56:28 +0200 Subject: [PATCH 4/6] Update docs --- docs/installation.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 501fa293..a4977cf9 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/skills/semble-search.md` | From d6efbdfc4084768ff27333949220d9cc7f26c828 Mon Sep 17 00:00:00 2001 From: Pringled Date: Fri, 12 Jun 2026 09:00:34 +0200 Subject: [PATCH 5/6] Update path --- docs/installation.md | 2 +- src/semble/installer/agents.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index a4977cf9..639519b9 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -351,4 +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/skills/semble-search.md` | +| Antigravity | `antigravity.md` | `~/.gemini/config/skills/semble-search/SKILL.md` | diff --git a/src/semble/installer/agents.py b/src/semble/installer/agents.py index c78478dc..773d9ce1 100644 --- a/src/semble/installer/agents.py +++ b/src/semble/installer/agents.py @@ -249,10 +249,10 @@ def _vscode_mcp_path() -> Path: id="antigravity", display_name="Antigravity", binary="agy", - config_dir=_HOME / ".gemini" / "config", + 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" / "skills" / "semble-search.md", + subagent_path=_HOME / ".gemini" / "config" / "skills" / "semble-search" / "SKILL.md", ), ] From 3952c0a8bcd817376807fabcba484ceb859019a5 Mon Sep 17 00:00:00 2001 From: Pringled Date: Fri, 12 Jun 2026 09:02:17 +0200 Subject: [PATCH 6/6] Revert uv lock --- uv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uv.lock b/uv.lock index 63f2277d..d0db5aa6 100644 --- a/uv.lock +++ b/uv.lock @@ -10,7 +10,7 @@ resolution-markers = [ [options] exclude-newer = "0001-01-01T00:00:00Z" # This has no effect and is included for backwards compatibility when using relative exclude-newer values. -exclude-newer-span = "P1W" +exclude-newer-span = "P3D" [[package]] name = "annotated-doc"