feat(install): translate any Claude plugin with --external

Abierto
#79 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@ryzizub ya está trabajando en esto.

Desde el 16/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

feature spike

Description

The parse → translate pipeline is already plugin-neutral. ClaudePluginParser turns any Claude Code plugin directory into PluginAssets, and every HarnessTranslator depends only on that model — never on a parser or on VGV. What is hardcoded is only the input list: PluginResolver defaults _plugins to vgvPlugins (packages/vgv_ai_cli/lib/src/resolve/plugin_resolver.dart:19), and there is no way to name a different plugin.

So vgv_ai could already work as a general Claude-plugin translator — point it at a plugin, get Codex, Gemini, OpenCode, Pi and Copilot config out — for anyone who writes Claude plugins and wants them to run on the other harnesses.

Proposed shape, repeatable:

vgv_ai install --external ./my-plugin
vgv_ai install --external owner/[email protected]
vgv_ai install --external ./my-plugin --only codex,gemini --check

Open questions

  • Source form. PluginRef requires repo + gitRef, so a local directory is not representable today. Local path only, git slug only, or both behind one option?
  • Does --external add to the pinned VGV plugins or replace them? "Use the CLI as a translator" reads like replace; --external alone reads like add.
  • Claude itself. ClaudeTranslator.settings() writes extraKnownMarketplaces and enabledPlugins for the VGV marketplace (claude_translator.dart:26). An external plugin has no marketplace entry, and a local one cannot have one. Skip Claude for external sources, or write a local-source entry?
  • Manifest and doctor. The manifest records plugins: {name: version} and doctor reports drift against vgvPlugins (doctor_command.dart:237). An external plugin has no declared version — record the git ref, or a content hash for a local path?
  • Trust. This runs third-party plugin content through our translators and writes hooks into the user's harness config. Worth deciding whether --external prints what it is about to install, or requires --check first.

Requirements

  • --external accepts at least one source and is repeatable.
  • A local plugin directory resolves without git and without the Claude cache.
  • Translation, reconciliation and the manifest treat external plugins the same as pinned ones, so doctor and uninstall still account for every file written.
  • A source that is not a Claude plugin fails with the actionable PluginParseException message, before anything is written.
  • Decisions above documented in the README and AGENTS.md.
Lenguaje dominante
Dart
Estrellas
3
Forks
0
Merge medio
2 d 4 h
PR fusionados (30 d)
40

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de VeryGoodOpenSource/vgv_ai_cli

Todos los issues de VeryGoodOpenSource/vgv_ai_cli

Issues similares

Más issues de Dart

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.