做插件有两种方式:描述你想要什么,让智能体来做;或者自己写文件。两种方式做出来的是同一种插件包。
用 AI:插件生成器
- 打开 插件 → 我的,选 用 AI 创建插件。
- 描述插件要做什么。智能体会在独立的工作区里完成它,和普通项目一样有完整的对话、撤销和模型选择。
- 检查草稿,然后点 安装。
这样做出来的插件会以 personal/<name> 安装。想分享给别人,打开它的详情页,选 导出为可发布的包…。导出的文件夹里有 package.json、README,以及一个用来发布的 GitHub Actions 工作流。
手写
插件就是一个 npm 包,清单文件放在 .ohmygame-plugin/plugin.json。最小的实用插件只添加一个技能:
level-ideas/
├── .ohmygame-plugin/
│ └── plugin.json
├── assets/
│ └── icon.svg
├── locales/
│ ├── en.json
│ └── zh-CN.json
├── skills/
│ └── level-ideas/
│ └── SKILL.md
└── package.json清单写明插件的名字,以及它添加了什么:
{
"$schema": "https://ohmygame.dev/schema/plugin-2.json",
"id": "example/level-ideas",
"version": "0.1.0",
"engines": { "ohmygame-api": "^2.3.0" },
"displayName": "%plugin.name%",
"description": "%plugin.description%",
"icon": "./assets/icon.svg",
"contributes": { "skills": "./skills/" }
}写成 %key% 的文字会从 locales/en.json 和 locales/zh-CN.json 里读取,一份清单就能支持两种语言。每个技能是一个带 SKILL.md 的文件夹,开头的 description 告诉智能体什么时候该用它:
---
name: level-ideas
description: Suggests level layouts for the game being made. Use it when they ask for level ideas, a new stage, or more variety in levels.
---
# Level ideas
1. Read the project's design notes and its existing levels first.
2. Offer three to five levels, each with the one new idea it teaches.
3. Ask which to build before changing any files.从示例开始
OhMyGame 仓库的 packages/plugin-examples 里,每种功能都有一个能直接运行的示例。复制和你要做的最接近的那个:
| 示例 | 添加 |
|---|---|
level-ideas |
一个技能 |
project-panel |
一个面板,以及打开它的命令 |
hello-tools |
原生代码:一个给智能体用的工具和一个命令 |
echo-server |
一个本地 MCP 服务 |
canvas-game |
一个带模板的项目类型 |
示例的发布者是 example。发布前,请在 package.json 和 plugin.json 里都改成你自己的 npm scope。
实时调试
- 打开 插件 → 添加插件… → 这台电脑,选择你的文件夹。
- 打开 开发模式。
之后 OhMyGame 会监视这个文件夹,每次改动后很快重新加载插件,加载的内容和 npm 发布时一致。原生代码会重启,面板会刷新,技能和 MCP 服务会重新读取。如果某次改动让清单出错,会继续使用上一份能用的版本,错误显示在插件详情页上,直到你修好为止。
检查
在 OhMyGame 仓库的本地副本里运行下面的命令,可以用和软件添加插件时相同的规则检查一个文件夹:
bun run plugin:check path/to/your-plugin