feat(install): translate any Claude plugin with --external
维护者通常 1 天内回复
@ryzizub 已经在做这个了。
开始于 2026年10月16日。
评估
这个 Issue 还没有评估数据。
描述
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.
PluginRefrequiresrepo+gitRef, so a local directory is not representable today. Local path only, git slug only, or both behind one option? - Does
--externaladd to the pinned VGV plugins or replace them? "Use the CLI as a translator" reads like replace;--externalalone reads like add. - Claude itself.
ClaudeTranslator.settings()writesextraKnownMarketplacesandenabledPluginsfor 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 recordsplugins: {name: version}anddoctorreports drift againstvgvPlugins(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
--externalprints what it is about to install, or requires--checkfirst.
Requirements
-
--externalaccepts 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
doctoranduninstallstill account for every file written. - A source that is not a Claude plugin fails with the actionable
PluginParseExceptionmessage, before anything is written. - Decisions above documented in the README and
AGENTS.md.
- 主要语言
- Dart
- 星标
- 3
- 派生
- 0
- 平均合并
- 2 天 4 小时
- 30 天内合并 PR
- 40
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
VeryGoodOpenSource/vgv_ai_cli 的其他 Issue
-
feature
难度 4/5 3-5 天 新手友好度 35/100
VeryGoodOpenSource/vgv_ai_cli#142 ·
维护者通常 1 天内回复
-
feature
难度 4/5 3-5 天 新手友好度 45/100
VeryGoodOpenSource/vgv_ai_cli#141 ·
维护者通常 1 天内回复
-
feature
难度 4/5 3-5 天 新手友好度 48/100
VeryGoodOpenSource/vgv_ai_cli#140 ·
维护者通常 1 天内回复
-
feature
难度 4/5 3-5 天 新手友好度 55/100
VeryGoodOpenSource/vgv_ai_cli#139 ·
维护者通常 1 天内回复
-
feature
难度 4/5 3-5 天 新手友好度 48/100
VeryGoodOpenSource/vgv_ai_cli#138 ·
维护者通常 1 天内回复
查看 VeryGoodOpenSource/vgv_ai_cli 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
Vinillian/book_tracker#208 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 64/100
-
难度 1/5 1-3 小时 新手友好度 76/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
fdittgen-png/deskilo#3753 ·
维护者通常 1 天内回复
-
enhancement good first issue help wanted
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复