Create an OpenCode plugin for iPolloWork. Scaffolds the plugin file with the correct API shape, tool definitions, and hook registration. Use when the user asks to 'create a plugin', 'write a plugin',
Install
The skill file stays in the publisher's repository.
Paste the copied command in a terminal. It installs this SKILL.md into that agent.
npx skills add Devin-AXIS/iPolloWork --skill create-plugin -a cursor -y
Create an OpenCode plugin for iPolloWork. Scaffolds the plugin file with the correct API shape, tool definitions, and hook registration. Use when the user asks to 'create a plugin', 'write a plugin', or 'make a plugin that does X'.
Questions
How do I install create-plugin?
Download .opencode/skills/create-plugin/SKILL.md from the publisher, or copy the path and open the repository. PlugMCP lists the skill and does not host the file.
Where does create-plugin live?
The publisher keeps it at https://github.com/Devin-AXIS/iPolloWork.
Which agents can use create-plugin?
Claude, Cursor, and Codex can read a SKILL.md you add from the publisher's repository.
Create an OpenCode plugin for iPolloWork. Scaffolds the plugin file with the correct API shape, tool definitions, and hook registration. Use when the user asks to 'create a plugin', 'write a plugin', or 'make a plugin that does X'.
name: create-plugin
description: "Create an OpenCode plugin for iPolloWork. Scaffolds the plugin file with the correct API shape, tool definitions, and hook registration. Use when the user asks to 'create a plugin', 'write a plugin', or 'make a plugin that does X'."
Skill: Create an OpenCode Plugin
Scaffold a working OpenCode plugin for use in iPolloWork.
When to use
User asks "create a plugin that does X"
User asks "write a plugin" or "make a plugin"
User wants to extend iPolloWork/OpenCode with custom tools
Plugin API
An OpenCode plugin is an async factory function that returns a hooks object.
OpenCode plugins are NOT the same as Anthropic's plugin format. Key differences:
Aspect
OpenCode Plugin
Anthropic Plugin
Entry point
Async factory function
Manifest JSON
Tool args
Zod schema .shape
JSON Schema
Runtime
In-process (Bun/Node)
Sandboxed container
Auth
process.env
OAuth/API key in manifest
Distribution
npm / file path / URL
Anthropic marketplace
To adapt an Anthropic plugin for OpenCode:
Rewrite the tool definitions using Zod instead of JSON Schema.
Move any auth from the manifest to env vars or opencode.json provider config.
Export the async factory function instead of the manifest.
HTTP-based Anthropic plugins can often be wrapped as MCP servers instead.
Example: plugin with multiple tools
import { z } from "zod";
export default async () => ({
"experimental.chat.system.transform": async (_input: unknown, output: { system: string[] }) => {
output.system.push("You have access to a note-taking system. Use save_note and list_notes.");
},
tool: {
save_note: {
description: "Save a note with a title and body.",
args: z.object({
title: z.string().describe("Note title"),
body: z.string().describe("Note content"),
}).shape,
async execute(args: { title: string; body: string }) {
const fs = await import("node:fs/promises");
const path = `.opencode/notes/${args.title.replace(/[^a-zA-Z0-9-_]/g, "_")}.md`;
await fs.mkdir(".opencode/notes", { recursive: true });
await fs.writeFile(path, `# ${args.title}\n\n${args.body}\n`);
return `Saved note: ${path}`;
},
},
list_notes: {
description: "List all saved notes.",
args: {},
async execute() {
const fs = await import("node:fs/promises");
try {
const files = await fs.readdir(".opencode/notes");
return files.filter(f => f.endsWith(".md")).join("\n") || "No notes yet.";
} catch {
return "No notes yet.";
}
},
},
},
});
Scaffold workflow
When the user describes what they want the plugin to do:
Create .opencode/plugins/<name>.ts with the plugin code.
Add it to opencode.jsonplugin array if not already present.
Tell the user to restart their session for the plugin to load.
How do I install create-plugin?
Download .opencode/skills/create-plugin/SKILL.md from the publisher, or copy the path and open the repository. PlugMCP lists the skill and does not host the file.
Where does create-plugin live?
The publisher keeps it at https://github.com/Devin-AXIS/iPolloWork.
Which agents can use create-plugin?
Claude, Cursor, and Codex can read a SKILL.md you add from the publisher's repository.