{
  "markdown": "# AI Plugin Translator\n\nTranslate Claude Code plugins into Gemini CLI extensions. No LLM required -- all transforms are deterministic, structural file conversions.\n\n## Quick Start (Gemini CLI Extension)\n\nThe fastest way to use this project is as a **Gemini CLI extension**. Once installed, Gemini can manage Claude Code plugins for you directly from the chat.\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) v18+\n- [Gemini CLI](https://github.com/google-gemini/gemini-cli) installed and on your PATH\n\n### Install the extension\n\n```bash\n# Clone this repo\ngit clone https://github.com/badal-io/ai-plugin-translator.git\ncd ai-plugin-translator\n\n# Install dependencies and build\nnpm install -g pnpm   # if you don't have pnpm\npnpm install\npnpm build\n\n# Link the extension into Gemini CLI\ngemini extensions link packages/gemini-extension\n```\n\n### Use it in Gemini CLI\n\nAfter linking, Gemini has access to `pluginx` tools. Just ask it in natural language:\n\n```\n> Add the superpowers plugin from obra/superpowers\n> Install all plugins from the superpowers marketplace (obra/superpowers-marketplace)\n> What plugins do I have installed?\n> Are my plugins up to date?\n> Update all my plugins\n> Remove the superpowers plugin\n```\n\nBehind the scenes, Gemini calls MCP tools like `pluginx_add`, `pluginx_list`, `pluginx_update_all`, etc.\n\n### Available tools\n\n| Tool | What it does |\n|------|-------------|\n| `pluginx_add` | Add a single Claude Code plugin (clone, translate, link) |\n| `pluginx_add_marketplace` | Add all plugins from a Claude Code marketplace repo |\n| `pluginx_list` | List all tracked plugins |\n| `pluginx_status` | Check if plugins are up to date with their sources |\n| `pluginx_update` | Update specific plugins by name (skips unchanged, `force` to override) |\n| `pluginx_update_all` | Update all tracked plugins (skips unchanged, `force` to override) |\n| `pluginx_remove` | Remove a tracked plugin |\n| `pluginx_consent` | Manage security consent settings |\n\n### Security consent\n\nThe first time you use a pluginx tool, you'll be asked to acknowledge a security notice. Claude Code plugins can contain arbitrary shell commands in hooks and MCP servers -- only install plugins from developers you trust.\n\n## Standalone CLI\n\nYou can also use the translation engine directly from the command line without Gemini CLI.\n\n### Install\n\n```bash\nnpm install -g @epiphytic/ai-plugin-translator\n```\n\nOr run without installing:\n\n```bash\nnpx @epiphytic/ai-plugin-translator translate --to gemini <source-path> <output-path>\n```\n\n### Translate a single plugin\n\n```bash\nai-plugin-translator translate --to gemini ./my-claude-plugin ./output\n```\n\n### Translate a marketplace (multiple plugins)\n\n```bash\nai-plugin-translator translate-marketplace --to gemini ./marketplace-repo ./output-dir\n```\n\n### Plugin manager CLI\n\nThe `pluginx` CLI wraps translation with Gemini CLI linking:\n\n```bash\n# Add a plugin from GitHub\npluginx add obra/superpowers\n\n# Add all plugins from a marketplace\npluginx add-marketplace obra/superpowers-marketplace\n\n# List installed plugins\npluginx list\n\n# Check for updates\npluginx status\n\n# Update all plugins (skips unchanged sources automatically)\npluginx update-all\n\n# Force re-translation even if source hasn't changed\npluginx update-all --force\n\n# Update specific plugins\npluginx update superpowers\n\n# Remove a plugin\npluginx remove superpowers\n```\n\n#### Global options\n\n| Option | Description |\n|--------|-------------|\n| `--consent` | Auto-consent to `gemini extensions link` prompts |\n| `--force` | Re-translate even if source commit and translator version are unchanged |\n| `--json` | Output structured JSON instead of human-readable text |\n| `--non-interactive` | Skip interactive prompts (auto-acknowledge consent) |\n| `--config-path <path>` | Custom config file path |\n| `--state-path <path>` | Custom state file path |\n\n### Exit codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success |\n| 1 | Error |\n| 2 | Translated with warnings (some components skipped or approximated) |\n\n## What gets translated\n\nThe translator converts these Claude Code plugin components into their Gemini CLI equivalents:\n\n| Component | Claude Code | Gemini CLI |\n|-----------|------------|------------|\n| Manifest | `package.json` | `gemini-extension.json` |\n| Slash commands | `commands/*.md` | `commands/*.toml` |\n| Skills | `skills/**/*.md` | `skills/**/*.md` (content adapted) |\n| Agents | `.claude/agents/*.md` | `agents/*.md` |\n| Hooks | `.claude/settings.json` | `hooks/hooks.json` |\n| MCP servers | `.claude/settings.json` | `gemini-extension.json` mcpServers |\n| Context files | `CLAUDE.md` | `GEMINI.md` |\n| Passthrough files | Static assets, scripts | Copied as-is |\n\n### Notable mappings\n\n- **Hook timeouts**: Claude uses seconds, Gemini uses milliseconds\n- **Path variables**: `${CLAUDE_PLUGIN_ROOT}` becomes `${extensionPath}`\n- **Argument placeholders**: `$ARGUMENTS` becomes `{{args}}`\n- **Shell injections**: `` !`command` `` becomes `!{command}`\n- **Hook events**: `PreToolUse` / `PostToolUse` / `Stop` map to `BeforeTool` / `AfterTool` / `AfterAgent`\n- **Skill content adaptation**: Claude-specific references in skill bodies are adapted (e.g., `**For Claude:**` becomes `**For Gemini:**`, `Claude Code` becomes `Gemini CLI`, `~/.claude/` paths become `~/.gemini/`)\n\nComponents that don't have a Gemini equivalent (e.g., `.lsp.json`, `SubagentStop` hooks) are reported as skipped in the translation report -- never silently dropped.\n\n### Smart updates\n\nWhen running `pluginx update` or `pluginx update-all`, plugins are only re-translated when something has actually changed:\n\n- **Source commit changed** -- the upstream repository has new commits\n- **Translator version changed** -- a newer version of ai-plugin-translator is installed\n- **Meta file missing** -- the output directory lacks `.pluginx-meta.json` (e.g., first run after upgrade)\n\nUse `--force` to bypass these checks and re-translate unconditionally.\n\n### Translation metadata\n\nEach translated plugin includes a `.pluginx-meta.json` file at its root with translation provenance:\n\n```json\n{\n  \"from\": \"claude\",\n  \"to\": \"gemini\",\n  \"translatedAt\": \"2026-02-10T04:53:21.072Z\",\n  \"translatorVersion\": \"1.1.0\",\n  \"sourcePath\": \"/path/to/source\",\n  \"environment\": {\n    \"os\": \"darwin-arm64\",\n    \"nodeVersion\": \"v22.18.0\"\n  }\n}\n```\n\n## How it works\n\n```\nClaude Plugin  -->  SourceAdapter.parse()  -->  Intermediate Representation  -->  TargetAdapter.generate()  -->  Gemini Extension\n```\n\nThe Intermediate Representation (IR) is a normalized superset of all plugin components. Each ecosystem is an adapter module. Adding support for a new ecosystem means writing one new adapter.\n\n## Project structure\n\n```\npackages/\n  core/                          # Translation engine + CLI\n    src/\n      ir/types.ts                # PluginIR type definitions\n      adapters/claude/source.ts  # Claude -> IR parser\n      adapters/gemini/target.ts  # IR -> Gemini generator\n      cli.ts                     # ai-plugin-translator CLI\n      pluginx.ts                 # pluginx CLI\n      pluginx/commands/          # Command implementations\n    test/\n      unit/                      # Unit tests\n      integration/               # Integration tests\n      fixtures/                  # Test fixtures\n\n  gemini-extension/              # Gemini CLI MCP server extension\n    src/server.ts                # MCP server entry point\n    src/tools/                   # Tool handlers\n    gemini-extension.json        # Extension manifest\n    GEMINI.md                    # Model instructions\n```\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Build all packages\npnpm build\n\n# Run all tests (218 tests across 34 files)\npnpm test\n\n# Run specific test suites\npnpm test:unit        # Unit tests only\npnpm test:int         # Integration tests only\n\n# Lint\npnpm lint\n```\n\n### Regression tests\n\nRegression tests clone real-world plugins and validate the translation output:\n\n```bash\npnpm test:regression                # All regression tests\npnpm test:regression:superpowers    # superpowers-marketplace specifically\n```\n\n## License\n\nMIT\n",
  "bytes": 8110,
  "sha": "08e8edc4fc758205f320774b954df2cbbfd4b3b1bcc72bc49b1185c5b8511a78",
  "repo_slug": "epiphytic/ai-plugin-translator",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_epiphytic_ai_plugin_translator_e4a7b889/readme"
}