SDK 与脚手架目前通过源码仓库使用,npm 发布暂缓。文档中的 registry 安装命令用于后续正式版本;当前预览请使用「第一个插件」中的源码流程。

插件文档

manifest.json(v2)

封闭的 manifest v2 schema 的每个字段、校验规则,以及被拒绝时的行为。

{
  "manifestVersion": 2,
  "id": "yourname.notes",
  "name": "Example Notes",
  "version": "0.1.0",
  "engines": { "ghostboard": ">=1.0.0 <2.0.0" },
  "entrypoints": { "app": "app.js" },
  "capabilities": ["files"],
  "author": "Your Name",
  "description": "Imports notes from CSV files.",
  "publicKey": "ed25519-spki:MCowBQYDK2VwAyEA...",
  "update": {
    "url": "https://example.com/plugins/yourname.notes/releases.json"
  }
}

schema 是封闭的:未知字段会被拒绝,拼写错误会立刻暴露。

字段 必填 规则
manifestVersion 是 必须为 2。1 是已废弃的沙箱契约;这类包会以“旧契约,需重新安装 v2 版本”拒绝,数据保留。
id 是 第三方插件 ID,小写段以点分隔(例如 yourname.notes)。ghostboard.* 保留。ID 同时为画布类型、存储与命令加命名空间。
name 是 用户可见名称。
version 是 Semver。同 ID 更新必须递增。
engines.ghostboard 是 精确为 >=a.b.c <x.y.z(两个边界,下界 < 上界)。不接受 ^、~、* 或单边。范围外的宿主报告 incompatible-host-api 且不运行代码。engines 不得包含其他键。
entrypoints.app 是 安全的包内相对 .js / .mjs 路径,默认导出 definePlugin(...)。
capabilities 是 network、files、clipboard 的数组。作为声明展示给用户;不强制执行。无则写 []。
author、description 否 审阅步骤中显示的自由文本。
publicKey 否 ghostboard-plugin --generate-key 打印的精确 ed25519-spki:... 字符串。要求打包时使用 --sign。
update.url 否 release 文档的公共 HTTPS URL。首次安装时与 publicKey 一起固定。

校验在代码运行之前

GhostBoard 在审阅步骤之前从 ZIP(或已连接目录)解析并校验 manifest,并在每次激活前依据已安装文件的规范摘要再次校验。不再通过校验的包会被停用并提示“插件包文件未能继续通过验证”。

包布局

manifest 位于归档根目录或单层包装目录内。其余为相对模块与静态资源。限制:256 个文件、8 MiB 未压缩、无符号链接、无加密或重复条目、无路径逃逸。打包器执行同样的限制。