Files
chainbase-labs__agentkey/.github/workflows/verify-version-sync.yml
T
zzAllenn 49a015b408 feat: add Cursor, Gemini CLI, and Antigravity plugin support (#91)
## Summary
- add the Cursor-native plugin manifest and marketplace metadata with
inline AgentKey MCP OAuth
- add the root Gemini CLI extension manifest using Streamable HTTP and
native OAuth discovery
- add one root Antigravity plugin package for both Antigravity 2.0 and
Antigravity CLI
- configure Antigravity remote MCP with the required `serverUrl` field
and automatic OAuth discovery
- reuse the existing `skills/agentkey/` package across Gemini and
Antigravity without duplication
- keep endpoint and release/version synchronization across every client
- document Cursor, Gemini, Antigravity 2.0, and Antigravity CLI
onboarding in English and Chinese

## Validation
- `npx -y bats@1.12.0 tests/` (20/20 passing)
- `npx -y @google/gemini-cli@0.54.4 extensions validate .`
- verified all eight version values match `1.13.1`
- verified Claude, Codex, Cursor, Kimi, Gemini, and Antigravity MCP
endpoints remain synchronized
- verified the AgentKey endpoint advertises OAuth protected-resource
metadata
- verified the branch merges cleanly with `chainbase-labs/main`

## Antigravity validation boundary
The `agy` binary is not installed in the current environment, so a live
CLI install was not run. The plugin layout, manifest fields,
`serverUrl`, OAuth configuration, and shared Skill discovery are covered
by automated assertions against the current Antigravity documentation.
The documentation-prescribed `$schema` URL currently returns HTTP 404;
the manifest retains the prescribed value while tests enforce the
published schema locally.

---------

Co-authored-by: Allen <0xfatdog@gmail.com>
2026-08-11 02:28:26 +08:00

67 lines
3.0 KiB
YAML

name: verify-version-sync
# Guards against drift between the canonical version, the skill metadata, and
# every plugin manifest. release-please syncs them via extra-files; this job
# catches a manual edit that updates only one copy.
on:
push:
branches: [main]
paths:
- 'skills/agentkey/version.txt'
- 'skills/agentkey/scripts/check-update.sh'
- 'skills/agentkey/SKILL.md'
- '.claude-plugin/plugin.json'
- '.codex-plugin/plugin.json'
- '.cursor-plugin/plugin.json'
- '.kimi-plugin/plugin.json'
- 'gemini-extension.json'
- 'release-please-config.json'
pull_request:
paths:
- 'skills/agentkey/version.txt'
- 'skills/agentkey/scripts/check-update.sh'
- 'skills/agentkey/SKILL.md'
- '.claude-plugin/plugin.json'
- '.codex-plugin/plugin.json'
- '.cursor-plugin/plugin.json'
- '.kimi-plugin/plugin.json'
- 'gemini-extension.json'
- 'release-please-config.json'
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Assert versions match
run: |
set -euo pipefail
canonical=$(tr -d '[:space:]' < skills/agentkey/version.txt)
script=$(grep -E '^LOCAL_VERSION="[^"]+"' skills/agentkey/scripts/check-update.sh \
| head -1 | sed -E 's/^LOCAL_VERSION="([^"]+)".*/\1/')
claude_plugin=$(python3 -c 'import json; print(json.load(open(".claude-plugin/plugin.json"))["version"])')
codex_plugin=$(python3 -c 'import json; print(json.load(open(".codex-plugin/plugin.json"))["version"])')
cursor_plugin=$(python3 -c 'import json; print(json.load(open(".cursor-plugin/plugin.json"))["version"])')
kimi_plugin=$(python3 -c 'import json; print(json.load(open(".kimi-plugin/plugin.json"))["version"])')
gemini_extension=$(python3 -c 'import json; print(json.load(open("gemini-extension.json"))["version"])')
skill=$(awk '/^---/{c++; next} c==1 && /^version:/{print $2; exit}' skills/agentkey/SKILL.md)
echo "version.txt: $canonical"
echo "check-update.sh: $script"
echo "Claude plugin: $claude_plugin"
echo "Codex plugin: $codex_plugin"
echo "Cursor plugin: $cursor_plugin"
echo "Kimi plugin: $kimi_plugin"
echo "Gemini extension: $gemini_extension"
echo "SKILL.md: $skill"
if [ "$canonical" != "$script" ] \
|| [ "$canonical" != "$claude_plugin" ] \
|| [ "$canonical" != "$codex_plugin" ] \
|| [ "$canonical" != "$cursor_plugin" ] \
|| [ "$canonical" != "$kimi_plugin" ] \
|| [ "$canonical" != "$gemini_extension" ] \
|| [ "$canonical" != "$skill" ]; then
echo "::error::Version drift detected. release-please syncs all eight values from version.txt — re-run release-please or restore the values manually."
exit 1
fi