Skip to content

feat(cli): add Antigravity CLI as a flat host for skills - #957

Open
tkman59 wants to merge 2 commits into
nextfrom
feat/511-antigravity-host
Open

tkman59 wants to merge 2 commits into
nextfrom
feat/511-antigravity-host

Conversation

@tkman59

@tkman59 tkman59 commented Oct 5, 2026

Copy link
Copy Markdown

🎯 What & why

Teams moved from Gemini CLI to Antigravity CLI (agy) get no AIDD install. This adds an isolated antigravity flat profile that writes AIDD skills under .agents/skills/, from aidd setup --ai antigravity and from aidd translate --to antigravity --as flat. First of four PRs for #511: skills only; the memory hook, agents and docs follow.

🛠️ How it works

  • Profile in cli/src/contexts/tools/domain/profiles/antigravity/, modelled on Kilo: skills supported, every other artifact supported: false with a reason, hooks refused until the next phase.
  • Skills sit one level deep. Measured on agy 1.2.14 (2026-10-05): a probe at .agents/skills/flat-probe/SKILL.md logs expanded slash command "flat-probe" (skill); one at .agents/skills/aidd-probe/nested-probe/SKILL.md logs no expansion. So Antigravity can't use the skills/<plugin>/<skill>/ tree Kilo and OpenCode get.
  • A flat profile now declares its skill layout: nested (default, unchanged for every existing tool) or single-level, skills/<plugin>-<skill>/ (plugins-capability.ts:136, set at antigravity/profile.ts:45). The flat install reads it when writing (content-translator.ts:353) and when matching a built file back to its plugin (built-tree-materialization-translator.ts:185). Before that, setup installed 0 skills from the one-level tree.
  • Local-path install no longer emits commands for a tool without a commands capability (content-translator.ts:257); it wrote a stray .agents/commands/ for Antigravity. No other tool's output changes.
  • Registration everywhere tool-addition-cost.arch demands, a tools-antigravity mutation scope (82.5), and a { tool: antigravity, mode: flat } row in the build-per-tool matrix.

🧪 How to verify

  • cd cli && pnpm test: 6818 passed.
  • Golden: golden.json gains only the antigravity:flat cell; no existing cell changes.
  • In an empty git repo: aidd setup --source local --path <framework> --ai antigravity --plugins all --yes writes 51 .agents/skills/*/SKILL.md, all one level deep. Then, logged in to agy: agy -p "/aidd-context-11-explore" --add-dir . logs expanded slash command "aidd-context-11-explore" (skill) in ~/.gemini/antigravity-cli/log/cli-*.log. Read the log, not the turn: print mode hangs after answering.
  • tests/e2e/clean-antigravity-foreign-file.e2e.test.ts: a user file under .agents/skills/ survives aidd clean.

⚠️ Heads-up

  • No CI runtime smoke, unlike Kilo: an agy turn needs a Google login. CI covers the golden cell and the matrix build only.
  • Known limitation, tracked outside feat(cli): support Antigravity CLI as a flat host #511: Codex and Antigravity both write .agents/skills/; uninstalling one deletes plugin files the other still records.
  • Plugin-prefix matching: a single-level skill belongs to a plugin by its <plugin>- prefix, so a future plugin named aidd-dev-x would match aidd-dev. Flat agents already work this way.
  • Local pre-commit: scripts-tests was excluded for this commit. check-written-file-hook.test.js writes and deletes a file in cli/src while comments-name-files-that-exist.test.js reads that directory in parallel (ENOENT .hook-probe-<pid>-broken.ts). This happens locally only, and the same suite passes run serially (549/549). CI skips the writer because Biome isn't installed there.

🔗 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

@blafourcade

Copy link
Copy Markdown
Contributor

@tkman59 this branch now conflicts with next (36 commits behind) in one file, cli/src/runtime/assets/asset-loader.ts. #958, #960, #961 and #962 are stacked on it, so the Antigravity series waits on this rebase.

#958 should also fix #890 (the memory hook wired into ~/.gemini/settings.json never runs under Antigravity), since it wires the hook through .agents/hooks.json. Worth a Closes #890 there if you confirm it.

@tkman59
tkman59 force-pushed the feat/511-antigravity-host branch 2 times, most recently from 5c423e9 to 058b4ef 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 and ran the stack tip (agy 1.3.5, pnpm test, build, real aidd setup --ai antigravity).

Blocking

  • cli/src/contexts/tools/domain/profiles/antigravity/profile.ts: the skip message shown to users contains follow-up phase 3 of #511, and profile.unit.test.ts asserts .toContain("phase 3"). This breaks .claude/rules/01-standards/2-tracker-ids.md (no ticket IDs in code or tests). #958 removes it, but this PR must not merge with it. Suggestion: "Antigravity CLI hooks are not wired yet." and adapt the assertion.

Minor

  • registry-conformance.unit.test.ts: the new early return for a tool with neither buildContracts.marketplace nor distributionProbes weakens the guard for any future flat-only tool. An explicit opt-out would be safer.

Checked and fine

  • Every other tool's output is unchanged (they all declare a commands capability), and flatSkillLayout defaults to nested everywhere except Antigravity.
  • A real setup writes skills one level deep only. No if (tool === "antigravity") in shared code.
  • Typecheck, lint, knip, architecture tests and the full suite pass.

tkman59 and others added 2 commits October 14, 2026 20:50
Teams moved from Gemini CLI to Antigravity CLI (agy) have no AIDD
install. This adds an isolated `antigravity` flat profile that writes
AIDD skills under `.agents/skills/`, from setup and from
`translate --to antigravity --as flat`.

agy 1.2.14 discovers a skill only directly under `.agents/skills/`: a
probe at `.agents/skills/<plugin>/<skill>/SKILL.md` logs no expansion,
one at `.agents/skills/<skill>/SKILL.md` logs `expanded slash command`.
A flat profile can therefore declare a `single-level` skill layout,
`skills/<plugin>-<skill>/`, which the flat install now recognises; every
other tool keeps the `nested` default.

Hooks and agents stay unsupported until their own phases. The golden
snapshot gains only the `antigravity:flat` cell.

Refs #511

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The setup smoke asserts a `.<tool>/` directory per AI tool, but
Antigravity writes under the shared `.agents/` root, so `pnpm smoke`
failed with "antigravity dir missing after --ai all".

Refs #511

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tkman59
tkman59 force-pushed the feat/511-antigravity-host branch from 058b4ef to 7a4f6bc Compare October 14, 2026 20:52
@tkman59

tkman59 commented Oct 15, 2026

Copy link
Copy Markdown
Author

Thanks, addressed in the host commit (stack replayed).

  • Blocking, ticket id in the skip message: fixed. The reason now reads Antigravity CLI hooks are not wired yet. and profile.unit.test.ts pins that exact string.
  • Minor, early return in registry-conformance: replaced by a named opt-out, TOOLS_WITHOUT_A_NATIVE_MARKETPLACE (antigravity only). Emptying it fails the probe assertion for antigravity alone, so a future flat-only tool fails unless it is added there on purpose.

@tkman59
tkman59 requested a review from blafourcade October 15, 2026 05:32
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