Quality Flywheel
GoogleCloudPlatform/vertex-ai-samples
Evaluate and improve GenAI models and agents using the Google GenAI Evaluation SDK.
Run the Antigravity CLI (Gemini) as a collaborating AI inside Claude Code, with intelligent model routing across the software development lifecycle.
$ npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yuting0624/antigravity-for-claude-code antigravity --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/yuting0624/antigravity-for-claude-code.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/antigravity .claude/skills/antigravity && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "antigravity" agent skill from https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravity into .claude/skills/antigravity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "antigravity", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yuting0624/antigravity-for-claude-code antigravity --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yuting0624/antigravity-for-claude-code.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/antigravity .agents/skills/antigravity && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "antigravity" agent skill from https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravity into .agents/skills/antigravity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "antigravity", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yuting0624/antigravity-for-claude-code antigravity --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yuting0624/antigravity-for-claude-code.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/antigravity .cursor/skills/antigravity && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "antigravity" agent skill from https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravity into .cursor/skills/antigravity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "antigravity", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/yuting0624/antigravity-for-claude-code.git --path skills/antigravity--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yuting0624/antigravity-for-claude-code antigravity --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yuting0624/antigravity-for-claude-code.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/antigravity .gemini/skills/antigravity && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "antigravity" agent skill from https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravity into .gemini/skills/antigravity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "antigravity", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install yuting0624/antigravity-for-claude-code antigravityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/yuting0624/antigravity-for-claude-code.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/antigravity .github/skills/antigravity && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "antigravity" agent skill from https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravity into .github/skills/antigravity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "antigravity", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install yuting0624/antigravity-for-claude-code antigravity --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yuting0624/antigravity-for-claude-code.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/antigravity .opencode/skills/antigravity && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "antigravity" agent skill from https://github.com/yuting0624/antigravity-for-claude-code/tree/master/skills/antigravity into .opencode/skills/antigravity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "antigravity", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
antigravityRun the Antigravity CLI (Gemini) as a collaborating AI inside Claude Code, with intelligent model routing across the software development lifecycle.
Antigravity is an agent skill from yuting0624/antigravity-for-claude-code. Run the Antigravity CLI (Gemini) as a collaborating AI inside Claude Code, with intelligent model routing across the software development lifecycle. Claude is the conductor/orchestrator — requirements, architecture, the hard 20%, verification, and review — and routes deterministic, high-volume work (scaffolding, boilerplate, test generation, first-pass review, migrations, web/Vertex AI Search) to Antigravity (Gemini), the cheaper, faster model. Use when the user wants to "use Antigravity / agy", "vibe code /…
Its SKILL.md is about 9.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering Project scaffolding, Test generation and Deep research. It works with Vertex AI and Google Gemini. The repository describes itself as: Claude Code plugin: run the Antigravity CLI (Gemini) as a collaborating sub-agent with intelligent model routing across the SDLC. Community project; not affiliated with… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9d43d98. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitclaudecurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GEMINI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Antigravity loads about 9.1k tokens when it runs. Until then it costs about 222 tokens; SKILL.md has 4,605 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from yuting0624/antigravity-for-claude-code at commit 9d43d98, republished under its MIT licence (© yuting0624). 4,605 words, ~9,086 tokens.
.claude/skills/antigravity/SKILL.md (or your agent's skills folder).Run the Antigravity CLI (agy, Gemini) as a second AI working alongside Claude
Code. The organizing idea is intelligent model routing across the SDLC: keep
judgement-heavy work on Claude (the frontier model) and route deterministic,
high-volume work to Antigravity (cheaper, faster Gemini). Two AIs, one workflow.
This is agentic engineering, not vibe coding: the value is the structure around the model — routing, shared rules, verification gates — not raw generation. Generation is solved; verification, judgement, and direction are the craft.
--dir, agentic, in parallel), then review and integrate.
Best for migrations, bulk implementation against patterns, test suites.Route each phase to the right model. This is the core policy.
| SDLC phase | Owner | Why |
|---|---|---|
| Requirements & planning | Claude | ambiguity, human-paced judgement |
| Design & architecture | Claude | trade-offs; most human-centric |
| Implementation — complex / architecture-bearing (the 20%) | Claude | correctness, deep context |
| Implementation — scaffolding / boilerplate / well-specified | agy | deterministic, high volume |
| Test & eval generation | agy (Claude defines the contract) | cheaper-model territory |
| First-pass code review | agy → Claude final | AI as first-pass reviewer |
| Cross-model verification (output + trajectory) | both | two model families ≠ same failure |
| Maintenance / migration / modernization | agy executes, Claude directs | tedious, systematic |
| Web / Vertex AI Search | agy → Claude re-checks | tools Claude lacks natively |
| Audio / video understanding | agy transcribes + digests · Claude verifies | Gemini is natively multimodal; no local ffmpeg/speech stack |
| Deep research (multi-source) | agy fans out search/fetch · Claude plans, verifies ≥2 sources, synthesizes | offload bulky pages to cheap Gemini; frontier model judges |
Routing tier within agy: flash (default, bulk) · flash-lo (cheapest, trivial) ·
pro (harder reasoning / reviews / cross-checks).
agy is multi-model. Tiers map to Gemini by default, but you can point delegation at any
model agy models lists (Claude / GPT on plans that expose them) — via --model <exact name>,
or persistently with the default_model / tier_* plugin options. Keep the executor a
different, cheaper model than the Claude conductor: that's what yields the cost saving and
the cross-model verification value (Claude executing Claude loses both).
Model availability moves fast, and
--tierneeds agy ≥ 1.1.10. Until 1.1.10, agy ignored--modeland--effortin headless-p— the flag was applied after model configuration had initialised, so the run silently fell back to the persisted default. This wrapper resolves every--tierto--modeland always runs-p, so on an older agy tier selection does nothing and looks like it works: the call succeeds, returns sensible text, reports usage.doctorwarns when it sees one — and on agy ≥ 1.1.11 it stops inferring and asks: it requests a tier model via-p /model(a read-only slash command that costs no tokens and starts no agent turn) and reports which model agy says it would actually run. Below 1.1.11 it does not probe, because there the slash command falls through as prompt text and the model answers as though it had run.The
flashtiers default to Gemini 3.8 Flash (High) / (Low) since 0.26.0 (3.7 from 0.24.0, 3.5 before). 3.8, 3.7 and 3.6 carry identical list prices — $0.75 in / $3.75 out / $0.075 cached-in per 1M — under a promotion that ends 2026-12-31 and then settles at $1.50 / $7.50 / $0.15; 3.5 is $1.50 / $9.00 / $0.15 throughout. Two sources, checked 2026-09-03. Price a run withprices.json'sgemini_flash, which mirrors whatever the flash tier resolves to;agy-cost-comparepicks that key by tier NAME, not by model.The move is justified on currency at an unchanged list price, not on quality — no comparison has been run between these models on a build where
--modelactually applies, and an identical per-token price is not an identical per-task cost (thinking bills as output; read theAGY_USAGEline). Measured quirk: under--digest, a prompt with nothing to inspect (a bare "reply OK") makes 3.8 High run a command to find something to report — 6 of 7 runs, exit 15 headless without a grant; 3.7 High 0 of 3. With a real task (a file behind--dir, pasted code) 3.8 High answered 6 of 6. Give it a task, or drop--digestfor a ping. If a plan does not serve 3.8 — agy 1.1.25's note lists it forGEMINI_API_KEYsign-in; it is also listed on the GCP-project sign-in this was measured on —doctorsays so and a delegation exits 14 naming the fix; remaptier_flashto a name fromagy models(3.7 and 3.6 cost the same).Retracted: earlier versions of this note quoted token-level comparisons between 3.5 / 3.6 /
flash-medium(−23% input,cache_read+43%, and so on). Those runs were made on agy 1.1.8–1.1.9, where--modelwas ignored — so every arm may have executed the same persisted default. Independently, the numbers did not survive their own ranges: 3.5-high spanned [421k, 509k] input against 3.6-high's [305k, 412k] at n=2, andflash-mediumoverlappedhighoutright. A mean-vs-mean claim over overlapping ranges is exactly what this repo's own playbook tells you not to report. Pick a tier by what your plan serves and by the published rates until this is re-measured on 1.1.10+.Note: agy 1.1.5 changed
agy modelsoutput to slugs (gemini-3.5-flash); both slugs and display names are accepted by--model, anddoctormatches either.
agy-delegate [options] "the task prompt"Options: --tier flash|flash-lo|pro · --dir <path> (workspace, repeatable) ·
--timeout 10m · --yolo (auto-approve ALL tools — the blunt grant; needed for web search /
URL reads (agy 1.1.28+; or a read_url(<target>) rule) / Vertex AI Search / terminal, and for writes not covered by a permissions.allow rule. For a
file write the narrower grant is usually a write_file(<dir>) entry in
~/.gemini/antigravity-cli/settings.json, which needs no flag — see below. Run write tasks
on a branch) · --mode accept-edits|plan
(agy execution mode. --mode accept-edits is NOT a headless write grant. Measured on agy 1.1.13 — where the flag is actually applied, since 1.1.12 fixed --mode being ignored in headless -p entirely — the write is denied exactly like one without it. Earlier notes here said "soft-denied on 1.1.3"; on a build where the flag was never applied, that observation could not tell a denial apart from the flag doing nothing. plan = strategize only) · --sandbox ·
--digest (append a digest-only output contract — use it for any
bulk read/analysis; the wrapper also warns on stderr when a reply comes back dump-sized,
because ingesting digests instead of dumps is the single biggest cost lever) ·
--print-command (dry run: show the resolved agy call, don't run it) · pipe a long
prompt with a trailing -.
The wrapper handles agy's quirks (prompt is the value of -p; non-TTY stdout drop via
< /dev/null). On agy ≥ 1.1.8 it also runs agy with --output-format json
internally: stdout still gives you the model's text unchanged, but failures are
classified from the structured error instead of scraped prose, and the executor's real
token usage (input / output / thinking / cache_read) is reported as an AGY_USAGE {...} line on stderr — so the Gemini side of a delegation can finally be measured, not
estimated. The line also carries model and tier (the tier the model was derived from;
empty for an explicit --model) and agy's duration_seconds / num_turns (1.2.x; 0 on
older agy), so a log prices itself per tier without a join back to the command. Older agy (or no python3) transparently falls back to the plain-text path;
force it with the structured_output option.
Accounting semantics for
AGY_USAGE(verified — get this wrong and your cost math is wrong).total = input + output(andthinkingis insideoutput).cache_readis a separate counter: it is NOT part oftotal, and it is not a subset ofinput— in an agentic delegation it routinely exceedsinput(measured:cache_read1,356,694 vsinput243,117 in one delegation). So price the Gemini side asinput×in_rate + output×out_rate + cache_read×cached_rate, three separate terms. This differs from the Claude/Harbor side, where cache-read tokens are an inner subset of the reported input total — don't carry one convention over to the other.If you are measuring, set
AGY_USAGE_LOG=/path/to/log(or theusage_logoption).AGY_USAGEandAGY_SIGNALgo to stderr, and the advice two paragraphs down — keep Claude's context lean — makesagy-delegate ... 2>&1 | tail -Nthe natural thing to write. stdout (the digest) is emitted after the usage line, sotailkeeps the digest and silently drops the usage. Measured in the wild: a benchmark harness lost most of its Gemini-side data exactly this way, which made the hybrid look cheaper than it was. A named file cannot be truncated by a pipe.
Two ways to delegate. Call the wrapper directly (above), or — when you want file
generation to happen entirely on Gemini with zero Claude tokens spent writing — hand
the unit to the antigravity-delegate subagent (its only file-acting tool is the
wrapper; it returns a digest for you to verify). Either way, you still own verification.
Structured failures. The wrapper exits 10 quota · 11 auth · 12 timeout (incl. an expired --print-timeout, which agy 1.1.28+ returns as a partial reply with rc 0 — the wrapper prints it and still exits 12) · 13
agy-missing · 14 model-unavailable (a --model / tier_* / default_model name not in
agy models — agy ≥ 1.1.2 hard-fails instead of silently downgrading) · 15
permission-denied (a tool needed permission headless — BOTH the soft deny, agy 1.1.3+ and
again from 1.1.20, and 1.1.13's hard error — add a permissions.allow rule or pass --yolo;
since 1.1.27 the wrapper names the refused tool from the envelope's denied_actions)
(besides 2 failed / 3 empty). On agy ≥ 1.1.8 these are derived from the structured
status/error envelope rather than stderr pattern-matching, so the classification is
reliable. It prints a AGY_SIGNAL {...} line on stderr;
agy-job status/result surface it, so you can react (e.g. retry quota with --continue,
fix the model name, or add --yolo) instead of scraping prose.
If Claude itself is running headless (claude -p, one-shot): run delegations
synchronously — let agy-delegate BLOCK and return before you continue. Do NOT
background a delegation expecting a later turn / "harness re-invocation": there is none in
-p mode, so you'd exit before the work finishes. (Backgrounding is only valid in an
interactive session that will be re-invoked.)
agy reads AGENTS.md from the workspace (verified). Keep a single shared
AGENTS.md at the repo root (stack, conventions, hard rules, workflow) so Claude and
Antigravity operate under the same rules — this raises agy's first-pass success
rate and keeps output consistent (lower OpEx).
Rule: when delegating any repo work, always pass --dir <repo-root> so agy loads
AGENTS.md and the real code, instead of pasting files into the prompt (cheaper, denser
context).
Claude owns correctness. For anything that ships:
~/.gemini/antigravity-cli/conversations
are SQLite .db files with opaque blob columns, not human-readable — don't rely
on reading them. Instead, have agy summarize its own steps as part of its output,
or keep a session with --continue/--conversation and ask it to recap.
But every run leaves a readable trajectory: transcript.jsonl under
~/.gemini/antigravity-cli/brain/<conversationId>/ — for plain delegations too, not
just internal-fan-out subagents. agy-delegate prints the conversationId in its
AGY_USAGE line, so cost and trajectory join 1:1. Audit with
agy-trace --audit <conversationId> (or --audit --last): step-type counts plus
every non-zero exit. A delegation can report SUCCESS while commands inside it failed —
measured: 6 failed commands inside one overall-"SUCCESS" run. agy-trace <id> prints
the full steps; --list finds recent ones.
What is NOT recorded: the command strings. Not in transcript.jsonl, not in
transcript_full.jsonl, not in ~/.gemini/antigravity-cli/log/cli-*.log. You get
that a command ran, its exit code and its output. To attribute a filesystem change,
diff the tree — the trajectory cannot tell you.)MagicMock-stub a missing dependency — and then
report success. Before believing a passing test/eval: diff any touched tooling against a
pristine reference, restore it, and re-run the gate under Claude's own control. agy's
self-reported pass is a claim, not evidence.
If wrong: retry on --tier pro, sharpen the spec, or do that piece yourself.Read-only work (search, review, analysis) is low-risk. When agy writes files or runs
commands (--yolo grants write + terminal):
--yolo. Headless agy's no-permission behavior has shifted
every few releases — describe-only (pre-1.1.0), scratch-divert (1.1.0–1.1.2), soft-deny
with a stderr notice (1.1.3+), hard error by 1.1.13, soft again from 1.1.20
(measured on 1.1.25; since 1.1.27 also named in the envelope's denied_actions, 1.2.0) — but your workspace stays
untouched every time; what varies is whether the run admits it (issue #10). The
wrapper maps the soft deny and the hard error alike to exit 15. Two things grant a write, and --yolo is
the blunt one. A write_file(<dir>) entry under permissions.allow in
~/.gemini/antigravity-cli/settings.json allows writes recursively beneath <dir>
with no flag at all — confirmed on agy 1.1.9 by a controlled A/B (#37): covered target
wrote, uncovered target returned PERMISSION_DENIED, rule the only variable. agy's own
denial text names the rule and offers --yolo as the alternative. --yolo auto-approves
all tools and is what you need when no rule covers the target, or for web search / URL
reads (agy 1.1.28 made those ask first; the narrow rule is read_url(<target>)) / Vertex AI
Search / terminal. Not verified below 1.1.9; a glob form (write_file(/path/**)) was
reported not to match. <dir> is a placeholder: left as written the rule grants nothing
on any version — exit 15 with the rule visibly present in the file. Separately, and only
for command(...), an entry naming no command (command(time), comment-only, ())
matched EVERY command before 1.1.11; do not attach that history to a mistyped
write_file(). If a user reports a rule that "should" work, have them run agy-doctor
before changing anything else.
Run write tasks on a branch and verify with git status.
prompt for or block --dangerously-skip-permissions — approve it or pre-allow
Bash(agy-delegate*). Always verify files actually changed in the workspace with
git status (the wrapper maps BOTH denial shapes — the soft deny, 1.1.3+ and again from
1.1.20, and 1.1.13's hard error — to exit 15, so you're not left guessing).--sandbox is NOT execution containment. Measured on macOS with agy 1.1.19: with --yolo, --sandbox changed nothing — a write to an absolute path OUTSIDE --dir succeeded (rc 0), id ran and returned a real uid, and curl https://example.com returned 200. agy's own help says "terminal restrictions"; whatever it restricts, it is not those, and not in this combination. Not tested on Linux. Contain by what you check
out and by permissions.allow, not by the flag.Delegation does not save money by itself. Measured reality: on a small task the
hybrid cost more than Claude-only, because the dominant cost was Claude's own
cache_read — re-reading a large, growing context across many orchestration turns.
The savings the "Gemini sub-agent" concept promises are real, but only when you keep
Claude's context lean and the round-trips few. Apply these as hard rules:
--dir) back into Claude's context, and do not paste agy's raw
bulky output into the thread. Claude ingests a digest, not raw content — this is
what collapses the per-turn cache_read that made the hybrid expensive."...End with a fenced block ===DIGEST=== listing: files changed, key decisions, and a 1-paragraph 'context for next step'. Put bulky detail ONLY in files, not in your reply."
Claude reads the DIGEST; the bulky work stays on cheap Gemini tokens.cache_read tax).git diff is compact; reading every file is
not.--continue / --conversation <id> so the
working context "lives on the cheap side". It does not work: resuming carries the whole
prior conversation forward and agy re-reads the material anyway, and agy's prompt
cache covers only ~2/3 of its context re-reads. Measured on a repeated-corpus digest,
the continued call cost +82% / +277% vs a fresh one (n=2). Use --continue for what
it is good at — resuming after a quota or timeout failure — and get multi-step
savings from rule 4 instead (one large delegation, not many small ones).cache_create
(1.25× input) instead of cache_read (0.1×). It's tempting to "keep the cache warm"
with busy turns — measured: that backfires, because every warming turn generates
frontier output (5× input), the most expensive class, and net cost goes up. Do NOT
manufacture work to stay warm. Backgrounding a long delegation (Bash run_in_background)
is fine to avoid blocking, but it does not make a small task cheaper. The only real
fix is scale: make each delegation big enough that the displaced Claude output
dwarfs the one-time re-cache cost. Below the break-even, the hybrid loses on cost — three
optimization variants were tested on a small task and none beat solo Claude (see
docs/AB-RESULTS.md). Delegate for cost reasons only at scale.Honest framing for any cost claim: there is no flat 8×/46%. Below the break-even the
hybrid costs more; above it, lean-context routing cuts frontier-model spend by a
measured margin. Quote the measured number and the break-even, never a headline ratio.
Use agy-cost-compare for the per-token gap (estimate; set real Vertex rates first).
Rule 4 above ("batch, don't chatter") is the one that actually moves the needle, and here is why, from a benchmark of this plugin (Opus 5 conductor · Gemini 3.6 Flash High executor · agy 1.1.8 · n=3/arm, cold cache):
Per delegation the economics are fine. Repeated ingestion is what breaks them.
Offloading a large corpus works exactly as designed — the conductor's cache_read fell
61%, it never opened the corpus itself, and each digest came back at ~4k tokens. But
each agy-delegate call is an independent session that shares no cache with the last
one, so a conductor that delegated 7.3 times against the same corpus paid to ingest it
7.3 times. Two-thirds of the executor's cost was re-reading material it had already
read. Break-even on that task was ~5.7 delegations; the one trial that stayed at 5 came
in cheaper than solo Claude, the ones at 9 did not.
So when several delegations work over the same material:
--dir to the smallest subtree that contains the work, and expect the executor's
read cost — not its writing — to dominate.--continue to avoid re-ingestion — measured, it makes things
worse. Resuming a session carries the whole prior conversation forward and agy
re-reads the material anyway, so you pay both: on a repeated-corpus digest the continued
second call cost +82% and +277% vs a fresh one (n=2), with cache_read 3–14× higher.
--continue is for resuming after a failure (quota, timeout) — not a cost lever.Two supporting facts, both measured: delegation moves work rather than removing it (the hybrid ran ~2.8× the normalized token volume for the same result — it stays affordable because the executor is cheaper per token, not because it does less), and agy's own prompt cache covers only ~2/3 of its context re-reads, so the executor is worse than Claude at carrying context. Both push the same way: fewer, larger, session- reusing delegations.
These are single-configuration measurements from 2026-07 on two task families, not constants. Treat them as direction, and re-measure on your own workload before quoting any figure.
ROOT=agy-delegate
# Scaffold from a spec (Claude wrote the spec/architecture)
"$ROOT" --tier pro --yolo --dir ./app \
"Scaffold per ARCHITECTURE.md: dirs, configs, stub modules. Follow AGENTS.md."
# Generate tests for a contract Claude defined
"$ROOT" --tier flash --yolo --dir ./app \
"Write unit + edge-case tests for src/payments.py covering the cases in SPEC.md."
# First-pass review (Claude does the final pass)
"$ROOT" --tier pro "Review for bugs/security/perf, be skeptical. List file:line: <diff>"
# Implement-until-tests-pass (feedback loop; isolate on a branch)
"$ROOT" --tier pro --yolo --dir ./app \
"Implement feature X to satisfy AGENTS.md and make 'pytest -q' pass. Iterate until green."
# Migration / modernization
"$ROOT" --tier pro --yolo --dir ./svc \
"Migrate all callers from APIv1 to APIv2 per MIGRATION.md. List every file changed."
# Web search → Claude re-checks
"$ROOT" --tier pro --yolo "Use web search for <X>. Give URLs + dates."
# Audio / video / image understanding (Claude can't hear or watch; Gemini can)
# agy-media writes the full transcript to a FILE and returns a timestamped digest —
# never ingest a whole transcript (a 1-hour recording is ~10k words of cache_read).
agy-media ./meeting.wav "decisions and owners" # digest -> you; transcript -> ./meeting.transcript.md
agy-media ./demo.mp4 --timeout 20m # video: adds timestamped VISUALS/OCR
agy-media ./memo.m4a --convert # agy mishandles m4a/aiff; converts to wav first
# Verify before relying on it: the digest flags unclear audio + uncertain names/numbers —
# grep that timestamp out of the transcript file rather than trusting the summary.
# Vertex AI Search over internal data (discover engines, then query)
"$ROOT" --tier pro --yolo "List Vertex AI Search engines (list_engines)."
"$ROOT" --tier pro --yolo "Search engine <ENGINE_ID> for: <question>. Cite the hits."agy has built-in define_subagent / invoke_subagent tools. Which pattern works is
version-dependent — this surface is moving fast upstream (4 releases in one week
while we tracked it), so re-verify after any agy upgrade:
define_subagent a
named specialist in-session (name / description / system_prompt), then
invoke_subagent it by that TypeName. Verified headless on 1.0.16 and re-verified
on 1.1.0: define → invoke → result round-trips cleanly, real thread spawned.
(1.0.13–1.0.15 shipped this broken — defined agents failed to invoke, upstream #521;
fixed in 1.0.16. Subagents are officially documented as of 1.1.0 —
antigravity.google/docs/cli/subagents — with static config at
<workspace>/.agents/agents/*.md and global ~/.gemini/config/agents/.)self and research; an undefined custom TypeName is rejected with
CORTEX_STEP_TYPE_INVOKE_SUBAGENT: ... not found or not allowed to be invoked
(upstream #105). Invoke TypeName self and inject the specialty via Role +
Prompt — verified on 1.0.12 and re-verified on 1.0.16.Use it for orchestrator-mode work pushed down a level: instead of Claude dispatching
N parallel agy-job runs (N round-trips, coordination spend on the frontier side), send
ONE delegation and let agy fan out internally — the coordination tokens land on the
cheap side, and you ingest a single digest.
# Preferred form (agy >= 1.0.16). --yolo (the wrapper's flag; it reaches agy as
# --dangerously-skip-permissions) is required so the subagent tools aren't
# soft-denied headless (see below). Verified live on agy 1.1.5.
agy-delegate --dir . --yolo --digest --timeout 10m \
"ACTUALLY use your define_subagent and invoke_subagent tools (do NOT simulate).
Decompose <task> into up to 3 units. For each unit: define_subagent a named specialist
(name + system_prompt for its role, following this repo's conventions / AGENTS.md if
present), then invoke_subagent it by TypeName with the unit's work. Wait for ALL, then
report per-unit results, EACH subagent's conversationId, and end with a DIGEST line."
# Any-version fallback: replace define/invoke with TypeName "self" + a specialist Role.Verified behaviors (1.0.12 → 1.1.5):
--yolo. On 1.1.3+ the subagent tools need permission that headless mode
can't prompt for, so without --yolo the spawn is denied (wrapper exit 15). Whether
it is a soft deny or the hard error 1.1.13 introduced for writes (and 1.1.20 took
back) has not been measured for this tool — the grant and the exit code are the same either way.
(On 1.0.x spawning was ungated, but --yolo is the durable choice here: a
permissions.allow write_file(...) rule covers file writes only, not
define_subagent/invoke_subagent, and not web search, URL reads (agy 1.1.28+) or Vertex AI Search.)logAbsoluteUri → a readable step-by-step
transcript.jsonl under ~/.gemini/antigravity-cli/brain/<conversationId>/ —
better trajectory visibility than a plain delegation. Location unchanged across
1.0.12→1.1.5, for both define_subagent and self spawns. Have the parent report
each conversationId, then audit with agy-trace <id> (agy-trace --list finds
recent ones). Note: the parent may also create a coordination thread of its own, so
--list can show one more conversation than the units you asked for.Caveats: neither pattern is a documented contract yet — self+Role works around the
sandbox allowlist, and even the official docs' static agent-config paths don't match
observed behavior (upstream #527) — so re-verify after agy upgrades (1.0.16 changed
this area within a day of our first verification). Bound the fan-out width in the
prompt (agy chooses parallelism otherwise). A wide fan-out takes longer wall-clock —
raise --timeout, and in an interactive session prefer a background job (agy-job).
agy has no built-in "Deep Research" mode — that product lives in the Gemini app
and the Gemini API's managed Deep Research Agent, not the CLI (verified). But agy
can do genuine multi-step, cited web research via its agentic loop. So deep research
is a Claude-orchestrated recipe, not a single agy call. Pair it with Claude's own
deep-research skill as planner/verifier; agy is the cheap, grounded legwork worker.
Caveat that shapes the recipe (verified empirically): in --print mode agy uses
search-summary tools and does NOT reliably fetch full pages, so its citations are
coarse (often domain-level) and may not actually support the claim. It can also leak
parametric "knowledge" disguised as a sourced fact. Never ship its citations
unverified.
"$ROOT" --tier flash --yolo \
"Use web search for <sub-question>. Return 5-8 bullet findings, each with the
exact source URL and publication date. Output ONLY findings+URLs+dates.""$ROOT" --tier pro --yolo \
"Open <URL> and quote the exact sentence(s) supporting: '<claim>'.
If the page does not support it, reply NOT SUPPORTED."Iteration is Claude's job: --print does one agentic pass per call (no auto re-query
when evidence is thin), so Claude must re-dispatch follow-up agy calls to close gaps.
Token economics: bulky searched/fetched text is paid in cheap Gemini tokens and
distilled to bullets+URLs before reaching Claude — use agy-cost-compare to show it.
Built-in Google tools (MCP), verified working in headless --print mode:
list_engines,
search, conversational_search).Tool use in headless mode requires --yolo (print mode can't show approval prompts);
search/list tools are read-only so this is low-risk.
Routing deterministic, high-volume work to Gemini Flash (≪ Claude per token) is intelligent model routing: higher CapEx (this harness) for lower OpEx (cheap model does the bulk). Use the cost demo as observability:
agy-cost-compare --tier flash "the task prompt"Estimates only (chars/4; agy exposes no token API in print mode). Set real Vertex rates
via CLAUDE_IN_PER_M, CLAUDE_OUT_PER_M, GEMINI_IN_PER_M, GEMINI_OUT_PER_M.
agy installed and authenticated (agy models lists Gemini models); its
~/.gemini/antigravity-cli/settings.json points at a GCP project/region.chmod +x scripts/*.sh).-p takes the prompt as its value (wrapper handles); no JSON output;
print mode returns final text only (no trajectory); no timeout(1) on macOS (use
--timeout).--add-dir on a Windows mount (/mnt/c/...) reads over a slow 9p bridge —
calls can take 20s+. Keep the repo on the Linux filesystem (~); the wrapper warns.© yuting0624, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/antigravity of yuting0624/antigravity-for-claude-code.
Open the folder on GitHubat commit 9d43d98
Antigravity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Antigravity this skillyuting0624/antigravity-for-claude-code | 376 | — | ~9.1k | Automated safety check: Pass | MIT | |
| Quality FlywheelGoogleCloudPlatform/vertex-ai-samples | 791 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Fable Foremanolsenbrands/fable-foreman | 142 | — | ~5.2k | Automated safety check: Pass | MIT | |
| Veomni Patchgen ModelByteDance-Seed/VeOmni | 2.2k | — | ~9.6k | Automated safety check: Pass | Apache-2.0 | |
| Axiom Eval Writeropenclaw/clawhub | 9.5k | — | ~4.1k | Automated safety check: Warn | MIT | |
| Provider Integrationhex/claude-council | 848 | — | ~635 | Automated safety check: Pass | MIT |
GoogleCloudPlatform/vertex-ai-samples
Evaluate and improve GenAI models and agents using the Google GenAI Evaluation SDK.
olsenbrands/fable-foreman
Turns the lead model into a foreman that plans, routes and verifies while cheaper Claude, Codex or Grok workers do the typing, using a per-machine routing card.
ByteDance-Seed/VeOmni
Author or refresh a VeOmni model's patchgen-generated modeling under generated/ — GPU and/or NPU config, dense or MoE, text / VLM / Omni.
openclaw/clawhub
Scaffolds evaluation suites for the Axiom AI SDK: eval files, scorers, flag schemas and axiom.config.ts, generated from plain descriptions of an AI capability.
hex/claude-council
Adds new AI providers to claude-council, configures provider API settings, troubleshoots provider connections, and documents the provider script interface.
soba-labs/langchain-agent-skills
A skill your agent uses when you need to test or evaluate LangGraph/LangChain agents: writing unit or integration tests, generating test scaffolds, mocking LLM/tool behavior, running trajectory…
yuting0624/antigravity-for-claude-code
Move an existing Claude Code setup onto the Antigravity CLI (agy) — user skills, CLAUDE.md, auto-memory, MCP servers, installed plugins, permissions and trusted workspaces.
Works with
Run the Antigravity CLI (Gemini) as a collaborating AI inside Claude Code, with intelligent model routing across the software development lifecycle. Antigravity is an agent skill from yuting0624/antigravity-for-claude-code. Run the Antigravity CLI (Gemini) as a collaborating AI inside Claude Code, with intelligent model routing across the software development lifecycle.
Antigravity fits situations like: the user wants to use Antigravity / agy; vibe code / agentic engineering; accelerate the SDLC; delegate to Gemini.
Run `npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a claude-code`. Or copy the skill folder (skills/antigravity in yuting0624/antigravity-for-claude-code) into .claude/skills/antigravity in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a codex`. Or copy the skill folder (skills/antigravity in yuting0624/antigravity-for-claude-code) into .agents/skills/antigravity in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yuting0624/antigravity-for-claude-code --skill antigravity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/antigravity, .gemini/skills/antigravity, .github/skills/antigravity and .opencode/skills/antigravity in your project.
Going by SKILL.md and its folder, Antigravity needs the command-line tools its instructions call (git, claude and curl) and credentials named GEMINI_API_KEY. Our summary lists: A credential in GEMINI_API_KEY.
SKILL.md contains no URLs. Its commands use git and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Antigravity is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.1k tokens (SKILL.md is roughly 36k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Antigravity: Quality Flywheel (GoogleCloudPlatform/vertex-ai-samples, 791 stars), Fable Foreman (olsenbrands/fable-foreman, 142 stars), Veomni Patchgen Model (ByteDance-Seed/VeOmni, 2.2k stars) and Axiom Eval Writer (openclaw/clawhub, 9.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
yuting0624 (a GitHub user) maintains it in yuting0624/antigravity-for-claude-code, which has 376 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 5, 2026.
Source: yuting0624/antigravity-for-claude-code on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.