Initial commit — Antigravity plugin v0.1.0

Plugin Claude Code miroir du plugin codex officiel d'OpenAI, mais
pour Google Antigravity (agy CLI). Headless via:

  agy --print --dangerously-skip-permissions --print-timeout 10m

Includes:
- 1 forwarder agent (antigravity-rescue)
- 5 slash commands (setup, rescue, status, result, cancel)
- 3 internal skills (cli-runtime, result-handling, gemini-prompting)
- agy-companion.mjs runtime (task / setup / status / result / cancel)
- marketplace.json for `/plugin marketplace add`

Tested: setup OK, foreground task OK, background workflow OK
(except OAuth refresh which requires interactive TTY).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 23:57:41 +02:00
commit e8ad489f36
14 changed files with 869 additions and 0 deletions

15
commands/cancel.md Normal file
View File

@@ -0,0 +1,15 @@
---
description: Cancel a background Antigravity (agy) job
argument-hint: "<jobId>"
allowed-tools: Bash(node:*)
---
Run:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" cancel $ARGUMENTS
```
If no job id is supplied, run `/antigravity:status` first and ask the user which job they want to cancel.
Present the output to the user as-is.

47
commands/rescue.md Normal file
View File

@@ -0,0 +1,47 @@
---
description: Delegate investigation, an explicit fix request, or follow-up rescue work to the Antigravity (Gemini) rescue subagent
argument-hint: "[--background|--wait] [--resume|--fresh] [--sandbox] [--add-dir <path>] [--timeout <10m|300s>] [what Antigravity should investigate, solve, or continue]"
allowed-tools: Bash(node:*), AskUserQuestion, Agent
---
Invoke the `antigravity:antigravity-rescue` subagent via the `Agent` tool (`subagent_type: "antigravity:antigravity-rescue"`), forwarding the raw user request as the prompt.
`antigravity:antigravity-rescue` is a subagent, not a skill — do not call `Skill(antigravity:antigravity-rescue)` (no such skill).
The final user-visible response must be Antigravity's output verbatim.
Raw user request:
$ARGUMENTS
Execution mode:
- If the request includes `--background`, run the `antigravity:antigravity-rescue` subagent in the background.
- If the request includes `--wait`, run the `antigravity:antigravity-rescue` subagent in the foreground.
- If neither flag is present, default to foreground.
- `--background` and `--wait` are execution flags for Claude Code. Forward `--background` to the helper; strip `--wait` from the prompt text.
- `--resume`, `--fresh`, `--sandbox`, `--add-dir`, `--timeout` are runtime-selection flags. Preserve them for the forwarded `task` call, but do not include them in the natural-language task text.
- If the request includes `--resume`, do not ask whether to continue. The user already chose.
- If the request includes `--fresh`, do not ask whether to continue. The user already chose.
- Otherwise, before starting Antigravity, check for a resumable rescue thread from this Claude session by running:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" task-resume-candidate --json
```
- If that helper reports `available: true`, use `AskUserQuestion` exactly once to ask whether to continue the current Antigravity thread or start a new one.
- The two choices must be:
- `Continue current Antigravity thread`
- `Start a new Antigravity thread`
- If the user is clearly giving a follow-up instruction such as "continue", "keep going", "resume", "dig deeper", put `Continue current Antigravity thread (Recommended)` first.
- Otherwise put `Start a new Antigravity thread (Recommended)` first.
- If the user chooses continue, add `--resume` before routing to the subagent.
- If the user chooses a new thread, add `--fresh` before routing to the subagent.
- If the helper reports `available: false`, do not ask. Route normally.
Operating rules:
- The subagent is a thin forwarder only. It should use one `Bash` call to invoke `node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" task ...` and return that command's stdout as-is.
- Return the Antigravity companion stdout verbatim to the user.
- Do not paraphrase, summarize, rewrite, or add commentary before or after it.
- Do not ask the subagent to inspect files, monitor progress, poll `/antigravity:status`, fetch `/antigravity:result`, call `/antigravity:cancel`, summarize output, or do follow-up work of its own.
- Leave `--resume` and `--fresh` in the forwarded request. The subagent handles that routing when it builds the `task` command.
- If the helper reports that Antigravity is missing, stop and tell the user to run `/antigravity:setup`.
- If the user did not supply a request, ask what Antigravity should investigate or fix.

13
commands/result.md Normal file
View File

@@ -0,0 +1,13 @@
---
description: Print the full log of an Antigravity (agy) background job
argument-hint: "[<jobId>]"
allowed-tools: Bash(node:*)
---
Run:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" result $ARGUMENTS
```
Present the output (raw Antigravity log) to the user verbatim. If the output is very long, just stream it as-is; do not summarize.

39
commands/setup.md Normal file
View File

@@ -0,0 +1,39 @@
---
description: Check whether the local Antigravity (agy) CLI is ready
allowed-tools: Bash(node:*), Bash(curl:*), Bash(bash:*), AskUserQuestion
---
Run:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" setup --json
```
Parse the JSON output.
If `installed` is `false`:
- Use `AskUserQuestion` exactly once to ask whether Claude should install Antigravity now.
- Put the install option first and suffix it with `(Recommended)`.
- Use these two options:
- `Install Antigravity (Recommended)`
- `Skip for now`
- If the user chooses install, run:
```bash
curl -fsSL https://antigravity.google/cli/install.sh | bash
```
- Then rerun:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" setup --json
```
If `installed` is already `true`:
- Do not ask about installation.
Output rules:
- Present the final setup output to the user in a human-readable summary.
- If the install was skipped, present the original setup output.
- Mention the headless invocation command (`headless_mode`) so the user knows what's under the hood.
- If installation succeeded but agy is not yet authenticated, instruct the user to run `agy` once interactively in a terminal to complete Google sign-in.

23
commands/status.md Normal file
View File

@@ -0,0 +1,23 @@
---
description: Show status of background Antigravity (agy) tasks
argument-hint: "[<jobId>] [--json]"
allowed-tools: Bash(node:*)
---
Run:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/agy-companion.mjs" status $ARGUMENTS
```
Present the output to the user as-is.
If no jobs are found, suggest:
- Running a foreground task: `/antigravity:rescue <your task>`
- Or a background task: `/antigravity:rescue --background <your task>`
If a job is shown as `exited`, suggest viewing the result:
```
/antigravity:result <jobId>
```