Repository navigation
Make plugins/flyte installable as a Google Antigravity plugin - #47
Merged
Merged
Conversation
Antigravity identifies a plugin by a bare plugin.json at the plugin root and reads MCP servers from mcp_config.json, requiring `serverUrl` (not `url`/`type`) for remote servers. Add both alongside the Claude Code and Codex manifests so the same skills/ tree installs with `agy plugin install ./plugins/flyte`, MCP servers included. The new files are mirrors, so verify.py checks them against .claude-plugin/plugin.json and .mcp.json, and build.py vendors them into the npm and PyPI packages like the other manifests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: davidmirror-ops <david.espejo@union.ai>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: davidmirror-ops <david.espejo@union.ai>
davidmirror-ops
marked this pull request as ready for review
October 3, 2026 13:18
cosmicbboy
approved these changes
Oct 3, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes
plugins/flyte/a native Google Antigravity plugin, so Antigravity users get all skills and both MCP servers from one install, like Claude Code and Codex users already do:The skills needed no changes: they use only
name+descriptionfrontmatter, which Antigravity accepts as is. What was missing was plugin packaging.The README documents every install route that works with
agy1.2.16:agy plugin install <path>copies the plugin in.plugins.jsonloads it in place from a checkout. It can be global, or committed per repo with a relative path, for example next to a git submodule, so a team shares it.<repo>/.agents/plugins/.agy plugin install "$(uvx flyte-agent-plugins path)". This only works from the first release that includes this PR, because the published 0.0.8 package has noplugin.json.Changes
New manifests in
plugins/flyte/, next to the existing ones and sharing the sameskills/tree:plugin.jsonis Antigravity's plugin marker, and it must sit at the plugin root (docs). It carriesname,versionanddescription. The docs only showname, butagywritesversioninto the manifests it generates itself, so it's accepted.set_version.pywrites it andverify.py's version check covers it, like every other manifest.mcp_config.jsonholds the same two servers as.mcp.json, written in Antigravity's format. Antigravity rejectsurl/typeon remote servers and needsserverUrl(docs), so.mcp.jsoncan't be reused.flyte-cluster(stdio) is identical.Packaging, following the repo's existing conventions:
verify.py: a newcheck_antigravity()fails ifplugin.jsonstops matching the Claude manifest's name/description, or ifmcp_config.jsondrifts from.mcp.json. The only difference it allows isurl→serverUrl. The npm-tarball and wheel content checks now also require both new files.build.py:copy_pluginvendors both files into the npm and PyPI packages. Both are added to the npmfilesallowlist, andantigravityis added toKEYWORDS.Docs:
~/.gemini/..., not~/.agents/skills/plugins/flyte/README.md: matching install section and MCP note.README.md.tmpl: two harness lists updated.Not in this PR
name@marketplaceonly reaches Google's Agent Marketplace, which installs by an ID Google issues;agyhas no command to add a third-party marketplace. Listing there would be a separate conversation with Google.flyte-agent-plugins mcp install.agy1.2.16 hasagy mcp add/remove, so the MCP installer could drive it the way it drivesclaude/codex. That's a follow-up.antigravitytarget forflyte-skills install. Antigravity's global skills directory differs between the app/IDE (~/.gemini/config/skills/) andagy(~/.gemini/antigravity-cli/skills/). That needs a decision, so it's left for a follow-up.--target agents --projectand--diralready work.AskUserQuestion", a Claude Code tool name. Other harnesses just ask in chat, as Codex does today.Test plan
python packaging/verify.py: all checks pass, including the newantigravitychecks and the tarball/wheel contentsflyte-clusterpin inmcp_config.jsonmakescheck_antigravity()failagy1.2.16):agy plugin validate ./plugins/flyte: ok, 23 skills, 2 MCP serversagy plugin install ./plugins/flyte: copied to~/.gemini/config/plugins/flyte/, andagy plugin listshowsflytewith componentsskills,mcpServersagy -psession: all 23 skills load,flyte_flyte-docsexposes its 3 search tools andflyte_flyte-clusterits 29 tools, so both servers start. Tool calls weren't run because headless mode blocks MCP calls without an allow rule.agy:.agents/plugins.jsonwith an absolute path: loads with 23 skills and both servers.agents/plugins.jsonwith a relative path to a vendored checkout: loads with 23 skills and both servers~/.gemini/config/plugins.json: loads with 23 skills and both servers.agents/plugins/flyte/: loads with 23 skills and both serversagy plugin importon a Claude-format copy (noplugin.json/mcp_config.json) writesflyte-docsas"command": ""and loads onlyflyte-cluster. The README warns against this route.agy plugin install "$(uvx --from <wheel> flyte-agent-plugins path)"installs it asflytewith 23 skills and both servers. Published 0.0.8 fails withmissing plugin.json, as expected.plugin.jsonwithversionvalidates, andset_version.py 0.0.8leaves it byte-identical.validateerrors withmissing plugin.jsonwithout the manifest, and finds no MCP servers withoutmcp_config.json. Using.mcp.jsonas is fails withMCP server "flyte-docs" must have either command or serverUrl.🤖 Generated with Claude Code