Claude Code Plugin Structure
anthropics/claude-plugins-official
Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.
Create, implement, build, pack, install, reload, and manage Vetta desktop plugins for non-developers.
$ npx skills add openvetta/open-vetta --skill plugin-workbench -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install openvetta/open-vetta plugin-workbench --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/openvetta/open-vetta.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench .claude/skills/plugin-workbench && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "plugin-workbench" agent skill from https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench into .claude/skills/plugin-workbench/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-workbench", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbenchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add openvetta/open-vetta --skill plugin-workbench -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install openvetta/open-vetta plugin-workbench --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openvetta/open-vetta.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench .agents/skills/plugin-workbench && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "plugin-workbench" agent skill from https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench into .agents/skills/plugin-workbench/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-workbench", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openvetta/open-vetta --skill plugin-workbench -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install openvetta/open-vetta plugin-workbench --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openvetta/open-vetta.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench .cursor/skills/plugin-workbench && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "plugin-workbench" agent skill from https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench into .cursor/skills/plugin-workbench/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-workbench", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/openvetta/open-vetta.git --path packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add openvetta/open-vetta --skill plugin-workbench -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install openvetta/open-vetta plugin-workbench --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openvetta/open-vetta.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench .gemini/skills/plugin-workbench && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "plugin-workbench" agent skill from https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench into .gemini/skills/plugin-workbench/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-workbench", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install openvetta/open-vetta plugin-workbenchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add openvetta/open-vetta --skill plugin-workbench -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/openvetta/open-vetta.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench .github/skills/plugin-workbench && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "plugin-workbench" agent skill from https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench into .github/skills/plugin-workbench/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-workbench", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openvetta/open-vetta --skill plugin-workbench -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install openvetta/open-vetta plugin-workbench --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openvetta/open-vetta.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench .opencode/skills/plugin-workbench && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "plugin-workbench" agent skill from https://github.com/openvetta/open-vetta/tree/main/packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench into .opencode/skills/plugin-workbench/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-workbench", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
plugin-workbenchCreate, implement, build, pack, install, reload, and manage Vetta desktop plugins for non-developers.
Plugin Workbench is an agent skill from openvetta/open-vetta. Create, implement, build, pack, install, reload, and manage Vetta desktop plugins for non-developers. Use whenever the user wants a Vetta plugin, plugin scaffolding, apply a .vettapkg package to Vetta, edit plugin.json name/guidingWords, or debug plugin load/install. Requires the Plugin Workbench input-bar toggle (hard isolation). The plugin handbook ships inside the project's own @vetta-org/plugin-sdk; locate it with the bundled CLI's docs command.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/doc-index.md` and `references/templates.md`).
It sits in Development, covering Hooks and plugins and Project scaffolding. The repository describes itself as: Open-source, local-first AI agent for coding and real work. BYOK models, MCP, skills, plugins, workflows, and private knowledge bases. The licence is Apache-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a2d314a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Plugin Workbench loads about 1.9k tokens when it runs, and up to ~4.5k if it reads all its reference files. Until then it costs about 118 tokens; SKILL.md has 537 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from openvetta/open-vetta at commit a2d314a, republished under its Apache-2.0 licence (© openvetta). 537 words, ~1,907 tokens.
.claude/skills/plugin-workbench/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.面向不懂开发的用户:你读规范、写代码、跑标准脚本、装进本机;用户只回答问题与点确认。
质量底线:没有读过插件手册就动手写实现 = 禁止。凭记忆编造 SDK API 很容易装上不能用。
workbenchRoot = listPlugins() 中 id === "plugin-workbench" 的 rootPath若拿不到:用宿主 plugins.query list,或面板/会话上下文;失败则 AskUserQuestion 请用户确认 App 已启用系统插件「制作插件」。
| 资源 | 绝对路径 |
|---|---|
| 插件 CLI(内置) | {workbenchRoot}/agent/cli/vetta-plugin-cli.js |
| 文档索引(本 skill 附件) | 本 skill 目录 references/doc-index.md |
| 实现模板摘要 | 本 skill 目录 references/templates.md |
| 标准脚本 | {workbenchRoot}/scripts/*.mjs |
手册不在工作台里,它随 @vetta-org/plugin-sdk 装进被编辑工程自己的 node_modules。
这是刻意的:那份手册与该工程实际编译的 SDK 版本一致,而随 App 发版的内嵌副本做不到。用内置
CLI 解析它的位置(工程 npm install 之后):
node "{workbenchRoot}/agent/cli/vetta-plugin-cli.js" docs --json返回 manualDir(手册目录绝对路径)、entry(README.md)、sdkVersion,以及当前命中的插件工程。
不要硬编码 node_modules 路径:工作区可能把依赖提升到上层,一仓多插件时各插件还可能钉不同版本。
用 read 工具打开文件(绝对路径),不要只 skim 本 skill。
先用上面的 docs --json 拿到 manualDir,然后({manualDir} 代指它):
read {manualDir}/README.md — 能力矩阵与导航 read {manualDir}/getting-started.md — 工程结构、MF、构建安装 read {manualDir}/manifest.md — plugin.json read {manualDir}/permissions.md — 权限清单工程若还没 npm install,docs 会明确告诉你先装 SDK——那一步本来也绕不过去,构建需要它。
| 用户意图 | 必读 |
|---|---|
| 侧栏面板 / 活动 Tab | ui-slots.md(activity-tab) |
| 整页工作区视图 / 接管宿主页头 | ui-slots.md(workspace-view + setWorkspaceViewHeader) |
| 视图要随宿主侧边栏收缩自适应 | ui-slots.md(useSidebarState;沉浸式页头尤其需要) |
| 输入栏按钮 | ui-slots.md(input-action) |
| 新会话页摆素材 / 选完智能体的第一屏 | ui-slots.md(new-session-context) |
| 插件自带人设 / 团队 | manifest.md(贡献智能体与团队) |
| 文件预览 | ui-slots.md(file-preview + notify 错误上报)+ styling-and-pitfalls.md(面板布局边界) |
| 全局弹层 | ui-slots.md(global) |
| 任何可能失败的 IO/解析 | ui-slots.md(notify)+ styling-and-pitfalls.md(错误必须上报) |
| Agent 工具 / 读写文件 / 对话 | conversation-and-agent.md |
| 消息下方卡片 | message-cards.md |
| 插件自带 MCP | mcp.md |
| 样式 / 布局逃逸 / 不生效 / 缓存 | styling-and-pitfalls.md(含面板类 slot 禁止 viewport fixed) |
| 引导词 / 设置项 | manifest.md 对应章节 |
references/templates.md,但细节冲突时以 {manualDir}/* 为准。 @vetta-org/plugin-sdk / @vetta-org/plugin-vite 用 registry 已发布 semver(init 默认 sdk ^0.3.1 / vite ^0.2.0,两者版本独立;若 install 失败问用户 registry/版本)。| 项 | 原因 |
|---|---|
插件 id | 全局唯一,装后难改 |
展示名 name | 用户可见品牌 |
permissions 列表 | 安全;对照 permissions.md 向用户解释再写入 |
| 要解决的问题 / MVP 范围 | 避免一次做全家桶 |
| 是否立即安装到本机 | 构建后是否引导用户在面板点「应用到 Vetta」 |
| 扩展点类型(用户没说时) | activity-tab / 工具 / 引导词 / 预览 / … |
AskUserQuestion 收齐 §3;对照 README 能力矩阵选定扩展点 → 列出要读的文档章节 → 先 read 再写代码。
node "{workbenchRoot}/agent/cli/vetta-plugin-cli.js" init --id {id} --name "{name}" "{cwd}/{plugin-id}"
cd "{cwd}/{plugin-id}" && npm install脚手架同时落一份 AGENTS.md(该读哪些手册、不可违反的几条)。先读它,它与本 skill 同源。
然后按文档改:
plugin.json:permissions、guidingWords、agent、styles、moduleFederation…(agent_mode 已废弃,不要写,见 manifest.md) src/index.tsx:register* / registerTool 等(遵守 styling 顶层 JSX 规则) 可选:
node "{workbenchRoot}/scripts/check-manifest.mjs" "{pluginRoot}"对照已读文档确认:
permissions 里声明 scope_use(fail-closed) style.css 仅 theme+utilities 入口,见 styling-and-pitfalls) fixed 贴视口、无超高 z-index、无 portal 到 document.body;面板内浮层用 relative+absolute;全局浮层用 registerGlobalSlot,Toast 用 notify(见 styling-and-pitfalls → 面板类 slot 布局边界) workspace:* %key%(desktop 用户文案规范) ctx.ui.notify({ message, error }),禁止只写死「失败」文案、丢掉原始 error;notify 无需权限,有 error 时宿主 Toast 可一键复制堆栈(见 ui-slots.md → notify)改一个已安装的插件前,先 plugins.query → get {id} 看返回项有没有 devWatch 字段:
devWatch 存在(热更新已开启):改完工程源码或 plugin.json 即结束——vite watch 构建成功后自动重载;dev 会话内新增 permissions/commands 也会自动放行。禁止再走 4.4/4.5 或 reload。若 devWatch.status === "error",提示用户看面板错误或拨一下热更新开关。仅当用户明确要持久写入注册表(关热更新/重启后仍生效)时,才用 workbench_offer_reinstall 让用户点卡片「重新安装」。devWatch 不存在:走 4.4→4.5 常规流程(构建打包后引导用户在面板点「应用到 Vetta」)。node "{workbenchRoot}/scripts/build-and-pack.mjs" "{pluginRoot}"npm install → npm run build → release/{id}-{version}.vettapkgpackagePath、id、version打包完成后不要调用 plugins.manage 的 install-from-path(会弹确认 sheet,工作台流程已废弃此路径)。改为告知用户:
打开右侧活动面板「制作插件」→ 对应工程卡片 → 点 「应用到 Vetta」(面板安装一次完成授权 + 启用,无确认弹窗)。
只改 工程源码 plugin.json,再 4.4 → 4.5。禁止改 ~/.vetta/plugins/... 已装目录当真相源。
plugins.manage:uninstall / reload(系统插件不可卸)。workbench_offer_reinstall 出消息卡,或面板「重新安装」——不要 install-from-path。Activity Tab「制作插件」(同样受 toggle 硬隔离):扫描 cwd、构建、应用、卸载、重载、改 name/引导词。与对话同一规则与同一脚本。
每张工程卡片有 「热更新」开关(已安装后默认开):宿主把插件 dev 链接到工程目录并常驻 vetta-plugin dev;React / CSS 走 HMR,其余资源定向重载(无需 bump/重打包/手动 reload)。适合迭代调试。
已安装时还有 「重新安装」(与消息卡按钮同路径):强制 build-and-pack → 把权限/命令持久写入注册表 → 刷新整个 Vetta 窗口。日常改代码 / 改 plugin.json 靠热更新即可(dev 会话内权限声明自动放行);重新安装用于落盘授权或热更新异常时兜底。首次安装仍用「应用到 Vetta」。
| 现象 | 处理 |
|---|---|
| Skill/工具不可见 | 是否打开工作台 toggle;系统插件是否启用 |
| npm install 失败 | registry、网络、sdk 版本;AskUserQuestion |
| 构建失败 | 读完整错误;对照 getting-started / 依赖版本 |
| 装上无效果 | permissions 是否授予;scope_use;插件 enabled;reload + version |
| 反复改 UI 调试 | 已安装工程默认开热更新:保存即自动构建+重载(见 §5);若被关掉可再打开 |
| UI 不出现 | ui-slots 权限与 scope_use;activity tab 是否 attach |
| 样式/缓存怪 | styling-and-pitfalls;bump version |
| 运行时「失败」但不知原因 | 插件是否 notify({ message, error })?让用户右下角 Toast 点「复制堆栈」贴给你;没有则补 notify 后热更新再复现 |
| 只显示红字无堆栈 | 实现遗漏:catch 必须把原始 error 传给 ctx.ui.notify(见 §4.3 与 ui-slots notify) |
references/doc-index.md — 手册路径与阅读表 references/templates.md — 常见扩展点代码起点再次强调:实现前先 docs --json 拿到 manualDir,再 read 其中对应的章节。手册随工程自己的
@vetta-org/plugin-sdk 发布,因此它描述的合同就是这个工程即将编译的合同。
© openvetta, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench of openvetta/open-vetta.
Open the folder on GitHubat commit a2d314a
Plugin Workbench next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Plugin Workbench this skillopenvetta/open-vetta | 290 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Claude Code Plugin Structureanthropics/claude-plugins-official | 37k | 10 repos | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Writing Pluginsnukeop/nuclear | 19k | — | ~825 | Automated safety check: Pass | AGPL-3.0 | |
| OpenCode Plugin CreatorDevin-AXIS/iPolloWork | 6.7k | 1 repos | ~1.3k | Automated safety check: Pass | Custom licence | |
| Create Harnessruvnet/metaharness | 688 | — | ~777 | Automated safety check: Pass | MIT | |
| Claude Code Plugin Developmentobra/superpowers-developing-for-claude-code | 142 | — | ~2.2k | Automated safety check: Pass | None |
anthropics/claude-plugins-official
Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.
nukeop/nuclear
A skill your agent uses when writing, scaffolding, or modifying Nuclear plugins.
Devin-AXIS/iPolloWork
Scaffolds an OpenCode plugin for iPolloWork with the right async factory shape, zod-based tool definitions and hook registration, and explains where to place and register it.
ruvnet/metaharness
Scaffold your own focused AI agent harness — pick host (Claude Code, Codex, pi.dev, Hermes), template, agents, skills, and ship a npm-publishable harness with its own npx CLI.
obra/superpowers-developing-for-claude-code
Workflows, patterns and examples for the whole Claude Code plugin lifecycle: creating, adding components, testing, troubleshooting, releasing and maintaining plugins.
ZS520L/HanakoPro
Create Hana plugin scaffolds and guide users through beginner or developer plugin planning, capability checks, manifest setup, runtime tools, iframe UI, SDK templates, and install-ready plugin…
openvetta/open-vetta
Master Material Design 3 and Jetpack Compose patterns for building native Android apps.
openvetta/open-vetta
Publish a skill, scene, MCP server, plugin, or bundle to the Vetta ability marketplace.
openvetta/open-vetta
Create or update Vetta-compatible Agent Skills. An agent skill from openvetta/open-vetta.
openvetta/open-vetta
Design mobile-style HTML pages (iOS / Android) for preview in the Mobile UI Preview panel.
openvetta/open-vetta
Create, modify, and render Remotion React video projects in the current Vetta conversation workspace.
openvetta/open-vetta
Build and edit design documents (.vetd) on the Vetta design canvas — app screens, landing pages, slides, posters, infographics.
Categories
Create, implement, build, pack, install, reload, and manage Vetta desktop plugins for non-developers. Plugin Workbench is an agent skill from openvetta/open-vetta. Create, implement, build, pack, install, reload, and manage Vetta desktop plugins for non-developers.
Plugin Workbench fits situations like: the user wants a Vetta plugin; plugin scaffolding; apply a .vettapkg package to Vetta; edit plugin.json name/guidingWords.
Run `npx skills add openvetta/open-vetta --skill plugin-workbench -a claude-code`. Or copy the skill folder (packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench in openvetta/open-vetta) into .claude/skills/plugin-workbench in your project. Claude Code loads it when a task matches its description.
Run `npx skills add openvetta/open-vetta --skill plugin-workbench -a codex`. Or copy the skill folder (packages/plugins/presets/plugin-workbench/agent/skills/plugin-workbench in openvetta/open-vetta) into .agents/skills/plugin-workbench in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openvetta/open-vetta --skill plugin-workbench -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/plugin-workbench, .gemini/skills/plugin-workbench, .github/skills/plugin-workbench and .opencode/skills/plugin-workbench in your project.
Going by SKILL.md and its folder, Plugin Workbench needs the command-line tools its instructions call (npm and node). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Plugin Workbench is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Plugin Workbench: Claude Code Plugin Structure (anthropics/claude-plugins-official, 37k stars), Writing Plugins (nukeop/nuclear, 19k stars), OpenCode Plugin Creator (Devin-AXIS/iPolloWork, 6.7k stars) and Create Harness (ruvnet/metaharness, 688 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
openvetta (a GitHub organization) maintains it in openvetta/open-vetta, which has 290 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 4, 2026.
Source: openvetta/open-vetta on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.