developing-gemini-plugins
/developing-gemini-plugins
Use when creating, modifying, testing, or releasing Gemini CLI extensions or Antigravity CLI plugins — provides workflows, patterns, and reference for the complete plugin lifecycle on both platforms
- Author
- joeblackwaslike ↗
- Repository
- agent-skills ↗
- Licence
- MIT
- Last repository change
- 26.10.2026
Assessment and security
- Files in this package
- 5
- Scripts
- 0
- HTML comments
- 0
- URLs in SKILL.md
- 2
No signals detected. Repository changed on 26.10.2026, without references to retired models or APIs.
MIT, open: use and modify while retaining author attribution.
What it does and when to use it
Use when creating, modifying, testing, or releasing Gemini CLI extensions or Antigravity CLI plugins — provides workflows, patterns, and reference for the complete plugin lifecycle on both platforms
Original author description
Use when creating, modifying, testing, or releasing Gemini CLI extensions or Antigravity CLI plugins — provides workflows, patterns, and reference for the complete plugin lifecycle on both platforms
How it works
- Overview
- When to Use
- Quick Reference
- Platform Comparison
- Plugin Development Workflow
- Critical Rules
- Resources in This Skill
- Cross-References
SKILL.md preview
---
name: developing-gemini-plugins
description: Use when creating, modifying, testing, or releasing Gemini CLI extensions or Antigravity CLI plugins — provides workflows, patterns, and reference for the complete plugin lifecycle on both platforms
metadata:
last_updated: "2026-06-04"
---
# Developing Gemini CLI Extensions & Antigravity Plugins
## Overview
This skill provides efficient workflows for creating extensions for Gemini CLI and plugins for Antigravity CLI (Google's official next-generation replacement for Gemini CLI). The two formats are closely related — a Gemini CLI extension can be imported into Antigravity automatically via `agy plugin import gemini`.
**Key distinction:** Gemini CLI uses `gemini-extension.json` as the manifest filename. Antigravity CLI uses `plugin.json`. Both support the same SKILL.md skill format and `GEMINI.md`/`AGENTS.md` session context files.
## When to Use
Use this skill when:
- Creating a new Gemini CLI extension or Antigravity plugin from scratch
- Adding components (skills, hooks, MCP servers, slash commands)
- Writing `GEMINI.md` session context files
- Troubleshooting extension or plugin structure issues
- Migrating a Gemini CLI extension to Antigravity CLI
- Understanding patterns and architecture decisions
- Releasing and distributing plugins
- Writing skills that work cross-platform (Claude Code + Codex + Gemini + Antigravity)
**For official docs**, use the `working-with-gemini` skill.
## Quick Reference
| Need to... | Read This |
| --- | --- |
| Understand directory structure | `references/extension-structure.md` |
| Choose a plugin pattern | `references/common-patterns.md` |
| Write skills that trigger reliably | `references/skills-for-gemini.md` |
| Debug plugin/extension issues | `references/troubleshooting.md` |
## Platform Comparison
| Aspect | Gemini CLI | Antigravity CLI |
| --- | --- | --- |
| Manifest file | `gemini-extension.json` | `plugin.json` |
| Workspace skills path | `.gemini/skills/` | `.agents/skills/` |
| Global skills | `~/.gemini/skills/` | `~/.gemini/antigravity-cli/skills/` |
| Session context file | `GEMINI.md` or `AGENTS.md` | `GEMINI.md` or `AGENTS.md` |
| Skill invocation | `activate_skill("name")` | `activate_skill("name")` |
| SKILL.md format | Identical to Claude Code | Identical to Claude Code |
| Extensions dir | `~/.gemini/extensions/<name>/` | `~/.gemini/antigravity-cli/plugins/<name>/` |
| Import from Gemini CLI | — | `agy plugin import gemini` |
| Install from git | `gemini extensions install <url>` | `agy plugin install <url>` |
## Plugin Development Workflow
### Phase 1: Plan
Before writing any files:
1. **Define your plugin's purpose**
- What problem does it solve?
- Target platform: Gemini CLI only, Antigravity only, or both?
- What components will it need? (skills, hooks, MCP servers, slash commands)
2. **Choose your pattern** (read `references/common-patterns.md`)
- Single skill?
- Skill collection with GEMINI.md bootstrap?
- Hook-enhanced workflow?
- MCP-integrated full plugin?
3. **Decide on cross-platform scope**
- Skills are portable as-is
- Provide both `gemini-extension.json` AND `plugin.json` for dual-platform support
- `GEMINI.md` and `AGENTS.md` both work in both tools
### Phase 2: Create Structure
1. **Create directories** (see `references/extension-structure.md`):
```bash
mkdir -p my-plugin/skills/skill-name
# For Gemini CLI:
# gemini-extension.json lives at plugin root
# For Antigravity CLI:
# plugin.json lives at plugin root
```
2. **Write the manifest** — provide BOTH for dual support:
**`gemini-extension.json`** (Gemini CLI):
```json
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What your plugin does",
"contextFileName": "GEMINI.md"
}
```
**`plugin.json`** (Antigravity CLI):
```json
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What your plugin does"
}
```
3. **Write `GEMINI.md`** at the plugin root (works in both tools):
```markdown
# Plugin Name
This session includes skills from `my-plugin`. Invoke them with `activate_skill("name")`:
- `activate_skill("skill-name")` — When to use this skill
```
### Phase 3: Add Components
Use TodoWrite to track component creation. For each component:
- **Skills**: create `skills/skill-name/SKILL.md` (see `references/skills-for-gemini.md`)
- **Hooks**: create `hooks/hooks.json` + scripts (see `references/extension-structure.md`)
- **MCP servers**: add `mcpServers` to `gemini-extension.json` (see official `docs-mcp-server.md`)
- **Slash commands**: create `.toml` files in `commands/` directory
### Phase 4: Test Locally
**Gemini CLI:**
```bash
gemini extensions install --path=./my-plugin
gemini # start session, test activate_skill("name")
gemini extensions uninstall my-plugin # clean up
```
**Antigravity CLI:**
```bash
agy plugin install --path=./my-plugin
agy # start session, test activate_skill("name")
agy plugin uninstall my-plugin
```
Test checklist:
- Skills: invoke explicitly with `activate_skill("skill-name")`
- Hooks: trigger the relevant events and check output
- GEMINI.md: verify it loads at session start
- Slash commands: run `/your-command`
- MCP servers: verify tools appear in session
### Phase 5: Debug and Refine
Start with `references/troubleshooting.md`. Use `gemini doctor` (or `agy doctor`) to validate the installation first.
Common issues:
- Manifest name doesn't match install directory name
- `contextFileName` in manifest doesn't match actual file
- Hook script not executable (`chmod +x`)
- Skill not auto-triggering — see `references/skills-for-gemini.md` for description writing
- GEMINI.md path wrong — must be at plugin root, not in a subdirectory
### Phase 6: Release and Distribute
1. **Bump version** in both `gemini-extension.json` and `plugin.json`
2. **Commit and tag**:
```bash
git commit -m "Release v1.2.0: [description]"
git tag v1.2.0
git push origin main --tags
```
3. **Distribution**:
**Gemini CLI:**
```bash
gemini extensions install https://github.com/your-org/your-plugin
```
**Antigravity CLI:**
```bash
agy plugin install https://github.com/your-org/your-plugin
```
**Import Gemini CLI extension into Antigravity:**
```bash
agy plugin import gemini # imports all installed Gemini extensions
```
## Critical Rules
1. **Manifest name must match the install directory name** — `"name": "my-plugin"` installs to `~/.gemini/extensions/my-plugin/`. Mismatch causes silent failures.
2. **Provide both `gemini-extension.json` and `plugin.json`** for dual-platform support — they can have identical content for basic plugins.
3. **`GEMINI.md` goes at the plugin root** — the `contextFileName` field in `gemini-extension.json` tells Gemini CLI which file to load; default is `GEMINI.md`.
4. **Use `activate_skill()` in GEMINI.md, not `skill()`** — Codex uses `skill()`, Gemini/Antigravity uses `activate_skill()`. Write platform-specific invocation syntax in each bootstrap file.
5. **Workspace skills live in `.agents/skills/`** for Antigravity (`.gemini/skills/` for Gemini CLI). Use `.agents/skills/` if you want one path that works in both after migration.
6. **Hook scripts must be executable** — `chmod +x hooks/*.sh`; commit with `git update-index --chmod=+x`.
## Resources in This Skill
- **`references/extension-structure.md`** — Directory layout, manifest schemas, component formats for both platforms
- **`references/common-patterns.md`** — Pattern decision matrix with examples
- **`references/skills-for-gemini.md`** — `activate_skill()`, SKILL.md authoring, GEMINI.md bootstrap patterns, Antigravity caveats
- **`references/troubleshooting.md`** — Debug guide for Gemini CLI and Antigravity, migration footguns
## Cross-References
For official documentation, use the `working-with-gemini` skill:
- `docs-creating-skills.md` — Official skill authoring guide
- `docs-skills-best-practices.md` — Trigger reliability, description quality
- `docs-writing-extensions.md` — Extension development guide
- `docs-writing-hooks.md` — Hook authoring
- `docs-gemini-md.md` — GEMINI.md format
- `docs-troubleshooting.md` — Official troubleshooting
Files in this package (5)
- SKILL.md 8 KB
- references/common-patterns.md 7 KB
- references/extension-structure.md 6 KB
- references/skills-for-gemini.md 7 KB
- references/troubleshooting.md 9 KB
Versions
The database has no other skills named developing-gemini-plugins.
Database snapshot: 13.11.2026 · package version 7d75dcf60f5f (SHA-256 digest of the entire package)
Downloads in the last 30 days: 0 · ranking
Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.
Similar skills
- 100developing-claude-code-plugins
Use when working on Claude Code plugins (creating, modifying, testing, releasing, or maintaining) - provides streamlined workflows, patterns, and examples for the complete plugin lifecycle - 100developing-codex-plugins
Use when working on Codex plugins (creating, modifying, testing, releasing, or maintaining) - provides streamlined workflows, patterns, and reference for the complete Codex plugin lifecycle - 100antigravity
指挥侧通过本地三通道文件桥给 Antigravity 中的 Gemini 派任务、查看心跳并独立验收 delivery.json;使用已登录的 Antigravity 会话,不需要为文件桥配置 API Key。 - 100omniplugin
Playbook for building and maintaining omni-platform agent plugins (one repo, native installs on Claude Code, Codex, OpenCode, Hermes, Antigravity, Gemini CLI, and more). Use when creating a plugin meant for more than one platform, porting an existing plugin to a new agentic… - 100gemini-cli
Run Gemini CLI for AI queries. Use when user asks to "run/ask/use gemini", compare Claude vs Gemini, or delegate tasks to Gemini. - 100headless-gemini
Run bounded Gemini tasks through Antigravity CLI (agy). Trigger on /headless-gemini, "run Gemini headlessly", or "supervise agy". Not for the separate gemini CLI, installation, authentication changes, or API-key setup.