---
name: create-plugin
description: 引导 Agent 开发一个新的 ACode 插件（获取开发规范、生成脚手架；$ARGUMENTS 传插件名与用途）
---

# 创建 ACode 插件（内置 /create-plugin 命令）

用户要求创建插件时执行本流程。插件名/用途：$ARGUMENTS（未给出时先向用户确认）。

## 1. 开发规范（权威）
完整规范见仓库 `docs/plugin-development-guide.md`，先读取它。要点：

- 插件 = 一个目录 + 四类声明文件，零框架依赖：
  - `plugin.json`（必需）：`name`（kebab-case，保留前缀 `system.`/`aws-`/`acode-` 不可用）、`version`、`description`、`tools`、`listeners`、`commands`、`userConfig`（安装时向用户要的配置）。
  - `tools/tools.json`（可选）：注入给 agent 的工具目录；handler 支持 `process`（跑命令）/ `module`（JS 函数）/ `mcp`（预留）。
  - `listeners/listeners.json`（可选）：事件监听器，对接 poll_message 的 `[plugin-event]`。
  - `commands/`（可选）：斜杠命令 markdown，如 `mycmd.md` 定义 `/mycmd`。
- 未知清单字段会被剥离而非报错。

## 2. 生成脚手架
用文件工具在当前工作区创建插件目录，推荐结构：

```
<插件名>/
├── plugin.json
├── tools/tools.json          # 如无工具可省略
├── listeners/listeners.json  # 如无监听可省略
└── commands/                 # 如无斜杠命令可省略
```

`plugin.json` 最小示例：

```json
{
  "name": "<插件名>",
  "version": "0.1.0",
  "description": "<一句话描述>"
}
```

## 3. 校验并安装生效
- 目录就绪后校验：确认 `plugin.json` 存在且 `name` 合法、各引用文件存在、JSON 语法正确。
- 安装：经 `function_call` 调用内置插件 plugin-manager 的 manage 工具，`function_call { "tool": "plugin-manager.manage", "params": { "action": "install", "source": "local:<插件目录绝对路径>" } }`（插件管理默认可用，无需额外能力开关）。
- 安装后：下一次 poll_message 的 `pluginCatalog` 可见新插件工具；监听器开始向 poll_message 投递 `[plugin-event]`。
