Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 8 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,31 +135,20 @@ path expanded, so `${CLAUDE_PLUGIN_ROOT}` — which Codex does not expand,

### Google Antigravity

Antigravity's docs don't describe adding a third-party marketplace, so install the plugin
from a local checkout. `plugins/flyte/` is an Antigravity plugin as-is — it carries the
`plugin.json` marker Antigravity looks for at the plugin root:
Install the plugin from PyPI — the skills and both MCP servers come with it:

```
git clone https://github.com/flyteorg/flyte-agent-plugins.git # add --branch <tag> to pin
agy plugin install ./flyte-agent-plugins/plugins/flyte
agy plugin install "$(uvx flyte-agent-plugins path)"
```

`/plugin install <path>` inside an Antigravity session does the same. The install copies
the plugin into `~/.gemini/config/plugins/flyte/`, so the clone can go afterwards — and to
update, pull (or check out a newer tag) and run `agy plugin install` again. `agy plugin list`,
`agy plugin disable flyte`, and `agy plugin uninstall flyte` manage it afterwards.
Or from a clone of this repo:

Antigravity namespaces plugin MCP servers by plugin name, so they appear as
`flyte_flyte-docs` and `flyte_flyte-cluster`. They don't show up in `agy mcp list`, which
lists only servers configured outside a plugin. When changing either manifest,
`agy plugin validate ./plugins/flyte` checks the plugin without installing it.
```
git clone https://github.com/flyteorg/flyte-agent-plugins.git
agy plugin install ./flyte-agent-plugins/plugins/flyte
```

Both MCP servers come with it, but from `plugins/flyte/mcp_config.json` rather than
`.mcp.json`: Antigravity reads that file name, and it rejects the `url`/`type` fields on
remote servers in favour of `serverUrl`. The two files otherwise declare the same servers,
and `packaging/verify.py` fails if they drift. Antigravity's `plugin.json` carries only
`name` and `description` — the fields its documented schema defines — so the release
version still lives in `.claude-plugin/plugin.json`.
To update, run the install again. `agy plugin uninstall flyte` removes it.

## Harness-native installs

Expand All @@ -178,11 +167,6 @@ rather than all 21.
| opencode | all 21 | none — add manually | `--target opencode` |
| pi | all 21 | none — add manually | `--target pi` |

Antigravity reads `<workspace>/.agents/skills/`, which is why its row needs `--project`.
Its global skills directory is not `~/.agents/skills/` — it is `~/.gemini/config/skills/`
for the app and IDE, `~/.gemini/antigravity-cli/skills/` for `agy` — so for a skills-only
global install pass that directory with `--dir`, or install the plugin instead.

### Hermes

`flyte-agent-plugins install --target hermes` writes all 21 into `~/.hermes/skills/`, which Hermes
Expand Down
4 changes: 2 additions & 2 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ its `id-token: write` permission.
git checkout main && git pull origin main && git status
```

- [ ] Set the version everywhere (plugin manifest, Codex manifest, root
`package.json`):
- [ ] Set the version everywhere (plugin manifest, Codex and Antigravity
manifests, root `package.json`):

```bash
python packaging/set_version.py 0.4.0
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "flyte",
"version": "0.0.8",
"version": "0.0.9",
"description": "Agent skills for working with Flyte.",
"license": "Apache-2.0",
"private": true,
Expand Down
5 changes: 3 additions & 2 deletions packaging/set_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
python packaging/set_version.py 0.4.0

The plugin manifest at plugins/flyte/.claude-plugin/plugin.json is the source of
truth that packaging/build.py reads; the Codex manifest and the repo-root
package.json must agree with it, so this writes all three at once.
truth that packaging/build.py reads; the Codex and Antigravity manifests and the
repo-root package.json must agree with it, so this writes all four at once.
"""

from __future__ import annotations
Expand All @@ -19,6 +19,7 @@
MANIFESTS = [
REPO / "plugins" / "flyte" / ".claude-plugin" / "plugin.json",
REPO / "plugins" / "flyte" / ".codex-plugin" / "plugin.json",
REPO / "plugins" / "flyte" / "plugin.json",
REPO / "package.json",
]

Expand Down
7 changes: 7 additions & 0 deletions packaging/templates/README.md.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,13 @@ editing config files — so it needs one of those CLIs on your PATH:
{{DIST}} mcp uninstall # remove them again
```

For Google Antigravity, install the whole plugin — skills and both servers — straight
from this package:

```bash
agy plugin install "$({{DIST}} path)"
```

These are tools the agent can call, not inert markdown: `flyte-docs` sends search
queries to a Union-operated endpoint, and `flyte-cluster` gets control-plane access
to your cluster (which also needs `uv` and a Flyte login). Harnesses that consume
Expand Down
5 changes: 4 additions & 1 deletion packaging/verify.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def check_versions() -> None:
for path in (
REPO / "plugins/flyte/.claude-plugin/plugin.json",
REPO / "plugins/flyte/.codex-plugin/plugin.json",
REPO / "plugins/flyte/plugin.json",
REPO / "package.json",
):
versions[path.relative_to(REPO).as_posix()] = json.loads(path.read_text())["version"]
Expand All @@ -71,8 +72,10 @@ def check_antigravity() -> None:
plugin = builder.PLUGIN_SRC
claude = json.loads((plugin / ".claude-plugin" / "plugin.json").read_text())
manifest = json.loads((plugin / "plugin.json").read_text())
# The version is compared with every other manifest in check_versions().
check(
manifest == {"name": claude["name"], "description": claude["description"]},
{k: manifest.get(k) for k in ("name", "description")}
== {"name": claude["name"], "description": claude["description"]},
"plugin.json carries the Claude Code manifest's name and description",
)

Expand Down
2 changes: 1 addition & 1 deletion plugins/flyte/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "flyte",
"description": "Work with Flyte 2. Deploy Flyte on AWS or kind, author and run workflows, apps, agents, data, and ML workloads with the SDK, and operate your cluster through bundled MCP servers.",
"version": "0.0.8",
"version": "0.0.9",
"author": {
"name": "flyteorg"
}
Expand Down
2 changes: 1 addition & 1 deletion plugins/flyte/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "flyte",
"version": "0.0.8",
"version": "0.0.9",
"description": "Work with Flyte 2. Deploy Flyte on AWS or kind, author and run workflows, apps, agents, data, and ML workloads with the SDK, and operate your cluster through bundled MCP servers.",
"skills": "./skills/",
"mcpServers": "./.mcp.json"
Expand Down
13 changes: 9 additions & 4 deletions plugins/flyte/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,15 +174,20 @@ codex plugin marketplace add flyteorg/flyte-agent-plugins # or --ref <tag-or-

## Install (Google Antigravity)

Install from a local checkout — this directory carries the `plugin.json` marker
Antigravity looks for, and the skills and both MCP servers come with it:
Install the plugin from PyPI — the skills and both MCP servers come with it:

```
git clone https://github.com/flyteorg/flyte-agent-plugins.git # add --branch <tag> to pin
agy plugin install "$(uvx flyte-agent-plugins path)"
```

Or from a clone of this repo:

```
git clone https://github.com/flyteorg/flyte-agent-plugins.git
agy plugin install ./flyte-agent-plugins/plugins/flyte
```

The install is a copy, so re-run it after pulling to update.
To update, run the install again. `agy plugin uninstall flyte` removes it.

## Install (other agent harnesses)

Expand Down
1 change: 1 addition & 0 deletions plugins/flyte/plugin.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"name": "flyte",
"version": "0.0.9",
"description": "Work with Flyte 2. Deploy Flyte on AWS or kind, author and run workflows, apps, agents, data, and ML workloads with the SDK, and operate your cluster through bundled MCP servers."
}
Loading