adding-a-plugin
暂无简介
- License 许可
- MIT
- 最近更新
- 2026-11-13
- Stars
- ★ 29
- Forks
- 156
03 SKILL.md 正文
Adding a plugin
The repo is itself a Devin plugin: .devin-plugin/plugin.json lists every
offering under optionalPlugins, and that file is the only thing consumers
read. Two kinds of entry: "./plugins/<slug>" for a plugin authored here (every
MCP server Devin hosts has one), and a { "source", "url", ["path",] "sha" }
object for a third-party plugin pinned to an exact commit. Entries are sorted
and each identity appears once; python3 scripts/validate.py enforces all of
this and CI runs it.
An MCP server we host
- Create
plugins/<slug>/.devin-plugin/plugin.json, where<slug>is the marketplace server slug:nameis the slug;displayNameis the server definition'sname(the human title, e.g."MySQL");homepage,repository, andkeywordscome from the server definition too.- Write
descriptionas one action-oriented sentence about what users can do with the product and the value they get. Aim for 60–130 characters (about 200 maximum), without a trailing period. Expand onshortDescription; avoid filler such as "integration" or "MCP server". - Put requirements outside the install form and connection caveats in optional
setup, immediately aftershortDescription:{"notice": "...", "steps": ["..."]}. Use a one- or two-sentence notice and ordered setup steps without environment-specific URLs. At least one key is required;noticemust be a non-empty string andstepsa non-empty list of non-empty strings. No other keys are allowed. Only addsetupfor external steps or meaningful connection caveats. Do not repeat credential fields, placeholder names, OAuth sign-in instructions, or default domains already handled by the install form. - Check the brand mark in as
plugins/<slug>/logo.svg(or.png/.jpg) and set"logo": "logo.svg"— a path relative to the plugin directory, as in Cursor's plugin format. Prefer this over an absolutehttpsURL so cards never load images from a third-party host. mcpServersdeclares the plugin's servers (usually one, keyed by the slug):command+args+envfor stdio, orurl(+headers) for HTTP. A plugin that only shipsskills/omits it. Servers live only here: no.mcp.json,mcp.jsonor rootplugin.json.- An HTTP server whose URLs differ only in the query (Supabase's
?read_only=true) may addurlOptions, a list of{label, url}that includesurl.urlstays the default; members pick another option in the server's settings. Aurlwith a${<NAME>}part a member types (Datadog's site,${DATADOG_DD_MCP_DOMAIN:-mcp.datadoghq.com}) may list instead that URL with the part filled in, one option per value; members can still type a value no option lists. - Never check in a credential. Anything a user supplies is a plain
${<NAME>}placeholder, resolved from the credentials saved on the user's installation (noMCP_prefix). A stdioenvvalue must reference its own key ("AWS_PROFILE": "${AWS_PROFILE}") because a saved credential replaces the env entry with the same key; inargsandheadersthe placeholder is the credential's only name.
- Add
"./plugins/<slug>"tooptionalPluginsin.devin-plugin/plugin.json.
A third-party plugin
-
Review the vendor and the exact upstream commit you are endorsing.
-
Add an object to
optionalPlugins:- whole repository:
{ "source": "url", "url": "https://github.com/<owner>/<repo>.git", "sha": "<40-hex>" } - plugin inside a repository:
{ "source": "git-subdir", "url": "...", "path": "<dir>", "sha": "<40-hex>" }
Always pin a full 40-hex commit sha, never a branch or tag. Do not add display metadata; the plugin's own manifest at that sha supplies it. If we host the same integration ourselves, author it under
plugins/instead of pointing upstream. - whole repository:
Testing your plugin
validate.py only checks the manifest's shape; before opening a PR, install
the plugin from your checkout and have a session call one of its tools (or
use one of its skills).
- Locally:
devin plugins install --local ./plugins/<slug>. The directory is used in place, so edits apply on the next session. Export any${<NAME>}credential the server needs, then startdevinand use it. - In Devin Cloud, get it into Customize → Plugins at personal scope by any
of: Add plugin → Upload .zip with a zip of
plugins/<slug>; Add plugin → From repository with your fork and subdirectoryplugins/<slug>(installs the fork's default branch); or a session on your branch where you ask Devin to install your plugin as a personal plugin (it uploads the directory, you approve). Then start a new session and have Devin call a tool or use a skill: an MCP that needs OAuth prompts you to authorize it in chat; one that needs a${<NAME>}credential has to be connected first from the plugin's Connect button in Customize.
Both
- Run
python3 scripts/validate.py --fixto sort and format the manifest, thenpython3 scripts/validate.py --fetchto confirm upstream pins resolve. - To bump an upstream plugin, change its
sha. To remove one, delete its entry (and itsplugins/<slug>directory if it was authored here). - Consumers pin this repo by commit; after the change lands on
main, bump their pin to the new sha.
04 同仓库更多 Skills
business-data
暂无简介
workflow
Creates durable, resumable workflows using Vercel's Workflow SDK. Use when building workflows that need to survive restarts, pause for external events, retry on failure, or coordinate multi-step operations over time. Triggers on mentions of "workflow", "durable functions", "resumable", "workflow sdk", "queue", "event", "push", "subscribe", or step-based orchestration.
workflow
Vercel Workflow SDK expert guidance. Use when building durable workflows, long-running tasks, API routes or agents that need pause/resume, retries, step-based execution, or crash-safe orchestration with Vercel Workflow.
verification
Full-story verification — infers what the user is building, then verifies the complete flow end-to-end: browser → API → data → response. Triggers on dev server start and 'why isn't this working' signals.
vercel-storage
Vercel storage expert guidance — Blob, Global Config (formerly Edge Config), and Marketplace storage (Neon Postgres, Upstash Redis). Use when choosing, configuring, or using data storage with Vercel applications.
vercel-services
Configure and troubleshoot Vercel Services for multiple frontends and backends in one project. Use when composing a polyglot or multi-service application on one Vercel deployment; defining the `services` key, service-targeted rewrites, or service bindings in `vercel.json`; or running all services with `vercel dev`.