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

Aberta
#79 0 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@ryzizub já está trabalhando nisso.

Desde 16/10/2026.

Avaliação

Esta issue ainda não foi avaliada.

Descrição

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.
Linguagem predominante
Dart
Estrelas
3
Forks
0
Merge médio
2d 4h
PRs com merge (30d)
40

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de VeryGoodOpenSource/vgv_ai_cli

Todas as issues de VeryGoodOpenSource/vgv_ai_cli

Issues semelhantes

Mais issues de Dart

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.