Scaffolding
dotnet/efcore
Implementation details for EF Core scaffolding (reverse engineering).
A skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.
$ npx skills add vellum-ai/vellum-assistant --skill plugin-builder -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vellum-ai/vellum-assistant plugin-builder --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/vellum-ai/vellum-assistant.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/plugin-builder .claude/skills/plugin-builder && 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-builder" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/skills/plugin-builder into .claude/skills/plugin-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-builder", 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/vellum-ai/vellum-assistant/tree/main/skills/plugin-builderType 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 vellum-ai/vellum-assistant --skill plugin-builder -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vellum-ai/vellum-assistant plugin-builder --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/plugin-builder .agents/skills/plugin-builder && 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-builder" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/skills/plugin-builder into .agents/skills/plugin-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-builder", 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 vellum-ai/vellum-assistant --skill plugin-builder -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vellum-ai/vellum-assistant plugin-builder --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/plugin-builder .cursor/skills/plugin-builder && 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-builder" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/skills/plugin-builder into .cursor/skills/plugin-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-builder", 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/vellum-ai/vellum-assistant.git --path skills/plugin-builder--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 vellum-ai/vellum-assistant --skill plugin-builder -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vellum-ai/vellum-assistant plugin-builder --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/plugin-builder .gemini/skills/plugin-builder && 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-builder" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/skills/plugin-builder into .gemini/skills/plugin-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-builder", 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 vellum-ai/vellum-assistant plugin-builderInstalls 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 vellum-ai/vellum-assistant --skill plugin-builder -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/plugin-builder .github/skills/plugin-builder && 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-builder" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/skills/plugin-builder into .github/skills/plugin-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-builder", 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 vellum-ai/vellum-assistant --skill plugin-builder -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vellum-ai/vellum-assistant plugin-builder --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/plugin-builder .opencode/skills/plugin-builder && 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-builder" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/skills/plugin-builder into .opencode/skills/plugin-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-builder", 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-builderA skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.
Plugin Builder is an agent skill from vellum-ai/vellum-assistant. Use when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including reference files (for example `references/apps.md`, `references/channels.md` and `references/distribution.md`). Compatibility notes: Designed for Vellum personal assistants
The repository describes itself as: An AI Assistant that’s easy to setup, does your work 24/7, knows your preferences and gets better over time. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c92ead1. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom 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.
Designed for Vellum personal assistants
From compatibility in the SKILL.md frontmatter.
Plugin Builder loads about 3.1k tokens when it runs, and up to ~45k if it reads all its reference files. Until then it costs about 46 tokens; SKILL.md has 1,383 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 vellum-ai/vellum-assistant at commit c92ead1, republished under its MIT licence (© vellum-ai). 1,383 words, ~3,102 tokens.
.claude/skills/plugin-builder/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Build on top of Vellum with plugins. A plugin bundles multiple surfaces into a single installable package that extends what an assistant can do.
Plugins are in beta. The peer-dep range you declare is what gets you load. Treat everything you write as something that can break between Vellum releases until 1.0 ships, and pin a real range.
A plugin is a directory in the assistant's workspace (<workspaceDir>/plugins/<name>/) that groups different surfaces into one cohesive capability. The assistant can build plugins directly in this folder or install one from the community via the CLI:
assistant plugins install <name>Plugins can also be discovered and managed from the Plugins tab in the app, or searched from the CLI with assistant plugins search. The catalog is a curated allowlist that the Vellum team approves and curates.
A single plugin can contribute several different kinds of behavior. Each surface is discovered by convention from a named subdirectory. Missing directories are simply skipped, so a plugin contributes only what it ships.
| Surface | Lives in | What it does |
|---|---|---|
| Lifecycle hooks | hooks/<name>.ts | Run code at fixed points in the Assistant's lifecycle to read or transform what flows through, and broadcast progress to the UI. |
| Skills | skills/<name>/ | Directories of instructions and associated assets, scripts, and resources that the Assistant loads dynamically when relevant. |
| Model-visible tools | tools/<name>.ts | Add new tools the model can call. Plugin tools land in the same catalog as built-in tools. |
| MCP servers | mcp.json | Declare MCP servers the assistant connects on install. Their tools land as mcp__<id>__<tool> alongside workspace-configured MCP tools. |
| HTTP routes | routes/<path>.ts | Serve HTTP endpoints in the plugin's own /x/plugins/<name>/ namespace (apps, local callers, and the handler behind public ingress). |
| Channels | channels/ingress.json | Declare public webhook and WebSocket routes that make the plugin a channel. The gateway verifies them and forwards to matching routes. |
| Apps | apps/<name>/ | Ship persistent interactive apps (dashboards, trackers, visualizations) compiled from a Preact + TSX bundle and rendered in the workspace panel. |
The two extensibility patterns serve different goals. Plugins are for distribution: you intend to share the capability, publish to the marketplace, or install it across multiple assistants. The plugin manifest (package.json), the @vellumai/plugin-api peer dependency, and the install flow exist to make a capability portable, versioned, and discoverable by others.
Direct workspace contributions are for personal extension: you simply want to extend your assistant and have no intention of distributing the work. Skip the plugin packaging entirely. Drop the file directly into the matching top-level workspace directory (/workspace/tools/<name>/ for a tool, /workspace/skills/<name>/ for a skill, /workspace/mcp.json for MCP servers) and the assistant picks it up automatically. No manifest, no install step, no peer dependency. A plugin is the way to ship those same servers with a versioned, installable unit.
Several surfaces that plugins contribute run in the same process as the main Assistant process. They can import all internal methods from the Assistant from the single public package, @vellumai/plugin-api, which is the only supported contract. Anything not exported from there is internal and can change without notice. See references/plugins.md for the full export surface.
Ask before building. Six questions, in this order. Stop if the user is unclear on any of them.
references/plugins.md for the directory layout and manifest, and the surface-specific references for each surface's contract..ts file. For LLM inference credentials, use getConfiguredProvider() from @vellumai/plugin-api to route through the workspace's stored credentials without handling plaintext. For other credential types (OAuth tokens, webhook secrets), store them via the credential vault and resolve at runtime with resolveCredential() from @vellumai/plugin-api, which returns the plaintext value scoped to the service named after your plugin (the install-directory basename). Call it from a hook, plugin tool, plugin route, a plugin skill TOOLS.json executor, or a companion script under skills/<skill>/{scripts,tools}/. A bash or skill-sandbox child inherits VELLUM_PLUGIN_NAME when exactly one plugin skill is active. A standalone bun invocation of a script under that layout also recovers the plugin name from its path. Catch CredentialResolutionError to degrade gracefully. Do not shell out to assistant credentials reveal.data/ directory (InitContext.pluginStorageDir), with schema created idempotently by the init hook, handles closed in shutdown, and per-conversation rows purged in conversation-deleted. A plugin never persists state in the assistant's database or elsewhere in the workspace. See "State is plugin-owned" in references/plugins.md.You have an alignment problem if the user cannot answer questions 1 and 2. Push back and clarify before scaffolding. The most expensive waste of plugin-authoring time is building a plugin whose job is fuzzy.
Choose a kebab-case directory name. It becomes the install name. @scope/<name> is allowed; the loader strips the scope for the runtime plugin name. Duplicate names fail registration. See references/plugins.md for the full directory layout, manifest fields, and loader rules.
To exercise the plugin locally before pushing to the catalog, you have two options:
Option A: direct copy. Copy the directory into the workspace's plugins/ folder:
cp -R my-plugin $VELLUM_WORKSPACE_DIR/plugins/my-pluginOption B: install from a GitHub URL (untrusted). If the plugin is already pushed to a public GitHub repo, install it directly without waiting for marketplace review:
assistant plugins install https://github.com/owner/my-plugin
assistant plugins install https://github.com/owner/repo/tree/my-branch/packages/my-plugin
assistant plugins install owner/repo --name my-pluginA URL install bypasses the marketplace entirely: the tree is cloned verbatim (no adapter stub is overlaid) and the source is untrusted. The CLI prints a yellow warning naming the source. See references/distribution.md for the full details.
plugins/<name>/, assistant plugins list shows status ok (not error, not skipped).assistant plugins inspect <name> reports up-to-date and drift: none..js and .ts for the same basename, the .js is loaded.If a surface fails to load or fire, see references/plugins.md for loader rules and references/distribution.md for the CLI diagnostic commands.
See references/distribution.md for the full publishing walkthrough (push to GitHub, add a marketplace.json entry with a copy-pasteable template, and what the review checks), plus the manifest schema, CLI commands, and commit-pinning rules.
Once merged, users install by name: assistant plugins install my-plugin. The new plugin is picked up automatically.
src/ for internal modules.package.json declares name, version, and a real peerDependencies["@vellumai/plugin-api"] range.data/, created by init and cleaned up by shutdown / conversation-deleted.marketplace.json entry exists with a full SHA in source.ref, and the Vellum team's review is in flight.references/plugins.md: Directory layout, manifest fields, and the full @vellumai/plugin-api export surface.references/hooks.md: Every lifecycle hook with its context fields, the agent loop diagram, resolution order, and a hook anatomy example.references/tools.md: Tool definition fields, the execute context, result shape, resolution order, and a tool anatomy example.references/skills.md: Frontmatter reference, resolution order, and a skill anatomy example.references/mcp.md: Root mcp.json declarations, transports, server ids, credentials, and risk defaults.references/routes.md: The /x/plugins/<name>/ namespace, path mapping, handler signature, and a route anatomy example.references/channels.md: channels/ingress.json, public /webhooks/plugins/<name>/ routes, guardian approval, verification, and inbound delivery.references/apps.md: The Preact + TSX app structure, src/→dist/ compilation, the plugins~<name>~<app> id scheme, serving in the workspace panel, and an app anatomy example.references/distribution.md: Marketplace catalog, CLI commands, drift and upgrades, the manifest schema, commit pinning, and adapters.© vellum-ai, MIT. 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 9 other files (references) in skills/plugin-builder of vellum-ai/vellum-assistant.
Open the folder on GitHubat commit c92ead1
Plugin Builder 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 Builder this skillvellum-ai/vellum-assistant | 1.4k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Scaffoldingdotnet/efcore | 15k | — | ~165 | Automated safety check: Pass | MIT | |
| Scaffold Elementremotion-dev/remotion | 62k | — | ~202 | Automated safety check: Pass | Custom licence | |
| Shipsimstudioai/sim | 30k | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Builder Smoke Testmastra-ai/mastra | 29k | — | ~11k | Automated safety check: Notes | Custom licence | |
| Ship Itvectorize-io/hindsight | 47k | — | ~1.9k | Automated safety check: Pass | MIT |
dotnet/efcore
Implementation details for EF Core scaffolding (reverse engineering).
remotion-dev/remotion
Scaffold a new Remotion Element for development in the docs Remotion Studio.
simstudioai/sim
Commit, push, and open a PR to staging in one shot — runs the cleanup pass and, when migrations changed, the db-migrate safety review first
mastra-ai/mastra
Smoke test the Agent Builder feature branch end-to-end against a hermetic project scaffolded by the skill (linked to the current worktree).
vectorize-io/hindsight
Take a PR from review to merged — run the repo's code-review skill on it in a loop (review, fix, re-review) until nothing is left to fix, applying ALL fixes on the PR branch, wait for CI green, then…
garrytan/gstack
Takes finished code to a pull request: merges the base branch, runs tests, reviews the diff, bumps VERSION, updates the CHANGELOG, commits, pushes and opens the PR.
vellum-ai/vellum-assistant
Create and configure a GitHub App so the assistant can push commits, open PRs, and comment under its own bot identity.
vellum-ai/vellum-assistant
Connect a Discord bot to the assistant via the Discord Gateway with guided application creation and intent configuration
vellum-ai/vellum-assistant
Create and configure a Sentry internal integration so the assistant can manage issues, alerts, and releases under its own identity
vellum-ai/vellum-assistant
Ingest a large dataset into memory as a skimmed map. An agent skill from vellum-ai/vellum-assistant.
vellum-ai/vellum-assistant
Connect a Slack app to the Vellum Assistant via Socket Mode.
vellum-ai/vellum-assistant
Shop on Amazon and Amazon Fresh through your browser. An agent skill from vellum-ai/vellum-assistant.
A skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package. Plugin Builder is an agent skill from vellum-ai/vellum-assistant. Use when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.
Plugin Builder fits situations like: the user wants to build; edit a Vellum plugin that bundles multiple surfaces (hooks; more) into one installable package.
Run `npx skills add vellum-ai/vellum-assistant --skill plugin-builder -a claude-code`. Or copy the skill folder (skills/plugin-builder in vellum-ai/vellum-assistant) into .claude/skills/plugin-builder in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vellum-ai/vellum-assistant --skill plugin-builder -a codex`. Or copy the skill folder (skills/plugin-builder in vellum-ai/vellum-assistant) into .agents/skills/plugin-builder 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 vellum-ai/vellum-assistant --skill plugin-builder -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-builder, .gemini/skills/plugin-builder, .github/skills/plugin-builder and .opencode/skills/plugin-builder in your project.
SKILL.md names no scripts, command-line tools or credentials: Plugin Builder is instructions for the agent only. Compatibility (from SKILL.md): Designed for Vellum personal assistants.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. 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 Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k 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 41k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Plugin Builder: Scaffolding (dotnet/efcore, 15k stars), Scaffold Element (remotion-dev/remotion, 62k stars), Ship (simstudioai/sim, 30k stars) and Builder Smoke Test (mastra-ai/mastra, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vellum-ai (a GitHub organization) maintains it in vellum-ai/vellum-assistant, which has 1,397 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 7, 2026.
Source: vellum-ai/vellum-assistant on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.