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

Offen
#79 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@ryzizub arbeitet bereits daran.

Seit 16.10.2026.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

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.
Vorherrschende Sprache
Dart
Sterne
3
Forks
0
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
40

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus VeryGoodOpenSource/vgv_ai_cli

Alle Issues in VeryGoodOpenSource/vgv_ai_cli

Ähnliche Issues

Weitere Issues zu Dart

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.