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

Ouverte
#79 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@ryzizub y travaille déjà.

Depuis le 16/10/2026.

Évaluation

Cette issue n'a pas encore été évaluée.

Description

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.
Langage dominant
Dart
Étoiles
3
Forks
0
Merge moyen
2 j 4 h
PR mergées (30 j)
40

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de VeryGoodOpenSource/vgv_ai_cli

Toutes les issues de VeryGoodOpenSource/vgv_ai_cli

Issues similaires

Plus d'issues Dart

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.