Skip to content
Agentmart
Submit a tool

plugin-creator

Use when the user asks to create, package, publish, or install an OpenCode-native plugin for Mosaic.

Skill by morriszdweck

IndexedMIT★ 3
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/morriszdweck-plugin-creator

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when the user asks to create, package, publish, or install an OpenCode-native plugin for Mosaic. Covers package.json, native plugin entrypoints, bundled skills, OpenCode config, and GitHub or npm distribution.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/plugin-creator

What's inside

Skill name
plugin-creator
Description
Use when the user asks to create, package, publish, or install an OpenCode-native plugin for Mosaic. Covers package.json, native plugin entrypoints, bundled skills, OpenCode config, and GitHub or npm distribution.
License
MIT
Instructions
143 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# OpenCode Plugin Creator

Mosaic uses OpenCode's native plugin system. A plugin is a normal npm package
or local JavaScript/TypeScript module; there is no Mosaic-specific manifest,
installer, or package directory.

## Package layout

For a distributable plugin, use:

```text
my-plugin/
├── package.json
├── plugin.ts
├── README.md
└── skills/
    └── my-skill/
        └── SKILL.md
```

Create `package.json` as the plugin manifest:

```json
{
  "name": "opencode-example-plugin",
  "version": "0.1.0",
  "description": "One sentence describing the capability",
  "type": "module",
  "main": "./plugin.ts",
  "exports": "./plugin.ts",
  "dependencies": {
    "@opencode-ai/plugin": "^1.18.22"
  }
}
```

Use a package name with an `opencode-` prefix when publishing a general
plugin. Keep runtime imports in `dependencies`, and match the
`@opencode-ai/plugin` version to the OpenCode release being targeted.

## Native plugin entrypoint

Export a function of type `Plugin` that returns OpenCode hooks, tools, or both:

```ts
import type { Plugin } from "@opencode-ai/plugin";

export const ExamplePlugin: Plugin = async ({ client }) => {
  await client.app.log({
    body: { service: "example-plugin", level: "info", message: "Loaded" },
  });
  return {};
};

export default ExamplePlugin;
```

For a plugin that bundles skills, register the package's `skills/` directory
with OpenCode's native skill loader through the `config` hook:

```ts
import type { Config, Plugin } from "@opencode-ai/plugin";
import { fileURLToPath } from "node:url";

type ConfigWithSkills = Config & { skills?: { paths?: string[] } };
const skillsDirectory = fileURLToPath(new URL("./skills", import.meta.url));

const ExamplePlugin: Plugin = async () => ({
  config: async (config) => {
    const nativeConfig = config as ConfigWithSkills;
    nativeConfig.skills ??= {};
    nativeConfig.skills.paths ??= [];
    if (!nativeConfig.skills.paths.includes(skillsDirectory)) {
      nativeConfig.skills.paths.push(skillsDirectory);
    }
  },
});

export default ExamplePlugin;
```

Each bundled skill needs its own `SKILL.md` with valid frontmatter. Use a
unique lowercase hyphenated skill ID and do not shadow Mosaic's built-ins:
`agent-swarm`, `customize-mosaic`, `customize-opencode`, `mosaic-self`, and
`plugin-creator`.

## Create a plugin

When the user asks for a plugin:

1. Clarify the one job it should do and choose a unique package name.
2. Create `package.json` and the smallest useful native `plugin.ts`.
3. Add bundled skills under `skills/<skill-name>/SKILL.md` when the capability
   is primarily reusable instructions.
4. Write a README explaining the purpose, native entrypoint, files, and one
   example.
5. Add installation instructions using the native Mosaic command:

   ```text
   Install the OpenCode plugin package `opencode-example-plugin` in Mosaic with
   `mosaic plugin opencode-example-plugin --global`, then restart Mosaic.
   ```

If the package is only in GitHub and not yet published to npm, document the
Git-backed package spec:

```sh
mosaic plugin opencode-example-plugin@git+https://github.com/OWNER/REPOSITORY.git --global
```

If the user asked to publish it, create or use the requested GitHub repository
and commit the package contents there. Do not create `mosaic-plugin.json` or a
second installer.

## Install a plugin

The canonical command delegates to OpenCode's native plugin installer:

```sh

From morriszdweck/mosaic, MIT.

Signals

Stars
3
Forks
0
Open issues
0
Last commit (this folder)
Aug 27, 2026 (2 months ago)
Last release
Aug 25, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from morriszdweck

Cite this page

plugin-creator skill. Agent Mart. https://agentmart.dev/skills/morriszdweck-plugin-creator (last updated 2026-10-24)