Skip to content

docs: list antigravity cli as a supported flat host, with a local runtime smoke - #961

Open
tkman59 wants to merge 4 commits into
feat/511-antigravity-agentsfrom
feat/511-antigravity-docs
Open

tkman59 wants to merge 4 commits into
feat/511-antigravity-agentsfrom
feat/511-antigravity-docs

Conversation

@tkman59

@tkman59 tkman59 commented Oct 5, 2026 •

Copy link
Copy Markdown

🎯 What & why

Antigravity CLI is documented as a supported flat host, the aidd-context skills know its .agents/ surfaces, and a local smoke proves a logged-in agy uses what aidd setup writes. Phase 5 of #511, stacked on #960.

🛠️ How it works

  • Docs. README.md (prerequisites, compatibility row, install section), docs/FAQ.md, cli/README.md (antigravity target, flat only), docs/MAINTAINERS.md (when to run the local smoke). The README install section states the known limitation: Codex flat also writes .agents/skills/, so removing one of the two deletes skills the other uses.
  • Memory. update_memory.js maps antigravity to AGENTS.md; its mirror tools.md, onboarding's detection.md and sync-arguments.md follow. Test written first, failed on unknown tool antigravity.
  • Generator references (04 to 08, explore): .agents/skills/, .agents/agents/<name>/agent.md with model: inherit and a YAML tools list, .agents/rules/<slug>.md (flat, trigger frontmatter), the named-hook .agents/hooks.json shape and its cd .. && prefix. Detection uses .agents/agents/, .agents/rules/ or .agents/hooks.json: .agents/skills/ alone is no signal, Codex reads it too.
  • Rule generator. Besides docs and the smoke, this PR adds an antigravity target to aidd-context's write-rule.cjs. It writes each rule flat to .agents/rules/<slug>.md, because agy reads only the direct children of that folder. A rule with paths gets trigger: glob, a description and comma-joined globs. A rule without paths gets trigger: always_on and no globs. A rendered rule over 24,000 bytes is refused before anything is written, because agy was measured truncating rule files near 23 to 25 KB.
  • Local smoke smoke-antigravity.sh, pnpm smoke:antigravity: setup in a throwaway repo, then evidence from logs and files, never from a turn ending.
    • Hook: interactive session under a pty with --add-dir, killed once AGENTS.md is refreshed or after 60 s. The hooks check compares the loaded count of two interactive sessions, with and without .agents/hooks.json, so a user-global hook (~/.gemini/config/hooks.json) counts on both sides. Sessions run under script with BSD or util-linux syntax picked at runtime.
    • Skill and /agents: print mode. An interactive initial prompt is sent as text and never expanded, which this smoke's first version tripped on.
    • Login: startup logs not logged into Antigravity before reading the stored login, so only a missing OAuth: authenticated successfully line means logged out.

🧪 How to verify

  • cd cli && pnpm smoke:antigravity on a machine with agy logged in. Run on agy 1.3.5, with a user-global hook in ~/.gemini/config/hooks.json:
    PASS  project hooks loaded
          2 named hooks with .agents/hooks.json, 1 without
    PASS  memory refreshed at the repo root
          AGENTS.md: [aidd_docs/memory/architecture.md](aidd_docs/memory/architecture.md)
    PASS  skill expanded
          expanded slash command "aidd-context-11-explore" (skill)
    PASS  agent listed
          /agents: "aidd-dev-executor", aidd-dev-ghost absent
    
  • Negative control, same global hook: the same script with .agents/hooks.json deleted after setup fails hooks (.agents/hooks.json adds no loaded hook (1 with, 1 without)) and memory, exit 1.
  • Without agy on PATH: FATAL: agy not on PATH — install Antigravity CLI and log in, exit 1.
  • agy reads AGENTS.md: in a repo whose only AGENTS.md names a codeword, agy -i "What is the project codeword?" answered "content":"PELICAN-4217" (transcript).
  • cd cli && pnpm test: 7093 passed, 1 skipped. CI cli / Smoke green.

⚠️ Heads-up

  • Not measured, taken from Antigravity's rules docs: rule frontmatter (trigger, globs) and that only direct children of .agents/rules/ load. Commands have no Antigravity row: no docs page found.
  • Correction to the plan's probe: on 1.2.17 a print-mode turn does reach the model (streamGenerateContent logged after the skill expansion). That print mode fires no hook was not re-measured.
  • Still no CI runtime proof: a turn needs a Google login.

🔗 Linked issue

Refs #511

✅ I certify

  • I DO CERTIFY I READ EACH LINE OF THE PULL REQUEST BECAUSE I AM A SOFTWARE ENGINEER, NOT A AI PUPPY.

🤖 Generated with Claude Code

@tkman59
tkman59 marked this pull request as ready for review October 7, 2026 20:38
@tkman59
tkman59 requested a review from a team as a code owner October 7, 2026 20:38
@tkman59
tkman59 force-pushed the feat/511-antigravity-agents branch from 905595b to 50b904d Compare October 13, 2026 20:48
@tkman59
tkman59 force-pushed the feat/511-antigravity-docs branch 2 times, most recently from 4bd1de6 to a591727 Compare October 13, 2026 21:22
@tkman59
tkman59 force-pushed the feat/511-antigravity-agents branch from 50b904d to c554f27 Compare October 13, 2026 21:22

@blafourcade blafourcade left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed line by line; ran pnpm smoke:antigravity on agy 1.3.5: 4/4 PASS. Several claims below were tested directly.

Major

  • cli/scripts/smoke-antigravity.sh: "hooks loaded" passes without the project hook. I deleted .agents/hooks.json after setup: memory fails as expected, but hooks loaded still reports loaded 1 named hooks (very likely a global user hook). The negative control in the description only holds on a machine with no global hook. Match the aidd-context name or an expected count.
  • write-rule.cjs gains an antigravity target (path, trigger/globs frontmatter, 24,000-byte refusal) in a PR described as docs + smoke. Please mention it in the description or split it out.

Minor

  • trigger: glob / globs is not measured (my agy 1.3.5 check was inconclusive for glob and model_decision). The per-file limit is real: agy truncates between ~23 and ~25 KB, while write-rule.cjs refuses. Worth saying "measured, truncated" in the docs.
  • ai-mapping.md: ~/.gemini/config/plugins/<plugin>/ and .agents/plugins/ are not measured.
  • ai-mapping.md says .agents/skills/ alone "signals both" Codex and Antigravity; tool-detect.md says it is "no signal".
  • 05-rule-generate/references/tool-paths.md: "all files use trigger: always_on and omit globs" is ambiguous. A rule with paths is glob, one without is always_on.
  • README: the "Docs" link of the Antigravity section points to the subagents page, while the section covers skills, agents and hooks.
  • The smoke header says "print mode (-p) fires no hook" (measured on 1.2.17). On 1.3.5 a -p session filled AGENTS.md, so the interactive/pty part may be unnecessary. The 15-line header and the pinned version could shrink.
  • script -q /dev/null agy ... is BSD syntax; util-linux needs script -qc "..." /dev/null. Not run on Linux.
  • Nit: the JSDoc on registry.ts mostly repeats the function name; only the null case adds information.

Checked and fine

  • Doc counts (11 archives, 7 flat) match the ci.yml matrix; the antigravity -> AGENTS.md mapping and its test are consistent across update_memory.js, tools.md, detection.md and sync-arguments.md.
  • agy loads direct .md children of .agents/rules/ and ignores subfolders, as documented.

tkman59 and others added 4 commits October 14, 2026 22:38
…ents/ surfaces

update_memory.js accepts antigravity, and the onboarding, memory and
generator references gain its paths, frontmatter and detection signals.

The rule writer gains an antigravity target: a flat .agents/rules/<slug>.md
with Antigravity's trigger frontmatter, refused over its 24,000-byte limit.

Refs #511

Co-Authored-By: Claude Opus 5.5 <[email protected]>
pnpm smoke:antigravity installs AIDD into a throwaway project, then checks a
logged-in agy expands a skill, loads and fires the memory hook, and lists an
AIDD agent. Local only: a turn needs a Google login.

Refs #511

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@tkman59
tkman59 force-pushed the feat/511-antigravity-docs branch from a591727 to bd05700 Compare October 14, 2026 20:52
@tkman59
tkman59 force-pushed the feat/511-antigravity-agents branch from c554f27 to 32e3886 Compare October 14, 2026 20:52
@tkman59

tkman59 commented Oct 15, 2026

Copy link
Copy Markdown
Author

Thanks, addressed in the smoke and aidd-context commits (stack replayed).

  • Major, "hooks loaded" passes without the project hook: confirmed. agy's log never names a hook (loaded N named hooks from M hooks.json file(s)), so the check now works by difference: after the measured session it moves .agents/hooks.json aside, runs a baseline session in the same interactive mode with the same flags, restores the file, and requires a strictly higher count with it. Measured with a user-global hook in ~/.gemini/config/hooks.json (where agy loads global hooks): the smoke passes with 2 named hooks with .agents/hooks.json, 1 without, and deleting .agents/hooks.json after setup fails with .agents/hooks.json adds no loaded hook (1 with, 1 without).
  • Major, write-rule.cjs in a docs PR: now described in the PR description (path, frontmatter, size refusal).
  • Minor, rule glob and the size limit: the docs now say a rule with paths is trigger: glob with globs, one without is always_on; glob activation is marked unmeasured; the size limit reads "measured, agy truncates near 23 to 25 KB, AIDD refuses above 24,000 bytes".
  • Minor, plugin paths: ~/.gemini/config/plugins/<plugin>/ and .agents/plugins/ are marked unmeasured in ai-mapping.md.
  • Minor, .agents/skills/ contradiction: ai-mapping.md now agrees with tool-detect.md: alone it signals neither tool.
  • Minor, tool-paths.md ambiguity: fixed, see above.
  • Minor, README Docs link: now the Antigravity CLI overview page.
  • Minor, -p and the header: the header no longer pins a version and its rationale is down to four lines. Whether -p fires the hook on 1.3.5 stayed inconclusive here (print turns stalled on a user MCP server), so the interactive part stays.
  • Minor, script on Linux: the smoke picks util-linux script -qec … /dev/null when script --version succeeds, BSD syntax otherwise; the util-linux branch is not run on Linux yet.
  • Nit, registry.ts JSDoc: in the stack it is already one line, null case only.

@tkman59
tkman59 requested a review from blafourcade October 15, 2026 05:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants