create-zhin-app 1.0.32 → 1.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/lib/index.js +32 -1
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +2 -7
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +2 -2
- package/lib/types.js.map +1 -1
- package/lib/workspace.d.ts.map +1 -1
- package/lib/workspace.js +13 -1
- package/lib/workspace.js.map +1 -1
- package/package.json +4 -3
- package/template/skills/plugin-init/SKILL.md +223 -0
- package/template/skills/plugin-publish/SKILL.md +200 -0
- package/template/skills/plugin-quality/SKILL.md +208 -0
- package/template/skills/plugin-test/SKILL.md +274 -0
package/README.md
CHANGED
|
@@ -290,8 +290,9 @@ zhin new my-awesome-plugin
|
|
|
290
290
|
|
|
291
291
|
```bash
|
|
292
292
|
# 编辑插件文件
|
|
293
|
-
# plugins/my-awesome-plugin/
|
|
294
|
-
# plugins/my-awesome-plugin/
|
|
293
|
+
# plugins/my-awesome-plugin/src/index.ts # 插件逻辑
|
|
294
|
+
# plugins/my-awesome-plugin/skills/my-awesome-plugin/SKILL.md # AI 技能说明(可选完善)
|
|
295
|
+
# plugins/my-awesome-plugin/client/ # 控制台客户端页面
|
|
295
296
|
|
|
296
297
|
# 保存后自动热重载 ⚡
|
|
297
298
|
```
|
package/lib/index.js
CHANGED
|
@@ -150,6 +150,26 @@ async function main() {
|
|
|
150
150
|
if (options.installGlobalCli === undefined) {
|
|
151
151
|
options.installGlobalCli = false;
|
|
152
152
|
}
|
|
153
|
+
// 开发技能安装选项
|
|
154
|
+
if (options.devSkills === undefined && !options.yes) {
|
|
155
|
+
console.log('');
|
|
156
|
+
console.log(chalk.blue('🛠️ Zhin 插件开发技能'));
|
|
157
|
+
console.log(chalk.gray('安装一组 AI 技能,帮助你通过 AI 助手高质量地开发、测试和发布 Zhin 插件'));
|
|
158
|
+
console.log(chalk.gray('包含:插件初始化、功能开发、测试编写、质量审查、发布指南'));
|
|
159
|
+
const { devSkills } = await inquirer.prompt([
|
|
160
|
+
{
|
|
161
|
+
type: 'confirm',
|
|
162
|
+
name: 'devSkills',
|
|
163
|
+
message: '是否安装 Zhin 插件开发技能?(推荐)',
|
|
164
|
+
default: true
|
|
165
|
+
}
|
|
166
|
+
]);
|
|
167
|
+
options.devSkills = devSkills;
|
|
168
|
+
}
|
|
169
|
+
// -y 模式下默认安装开发技能
|
|
170
|
+
if (options.devSkills === undefined) {
|
|
171
|
+
options.devSkills = true;
|
|
172
|
+
}
|
|
153
173
|
if (!name?.trim()) {
|
|
154
174
|
console.error(chalk.red('项目名称不能为空'));
|
|
155
175
|
process.exit(1);
|
|
@@ -218,11 +238,22 @@ async function main() {
|
|
|
218
238
|
}
|
|
219
239
|
console.log(` ${chalk.yellow('⚠ API Key 已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件')}`);
|
|
220
240
|
}
|
|
241
|
+
// 显示开发技能信息
|
|
242
|
+
if (options.devSkills) {
|
|
243
|
+
console.log('');
|
|
244
|
+
console.log(chalk.blue('🛠️ 插件开发技能:'));
|
|
245
|
+
console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-init')} ${chalk.gray('初始化插件项目结构')}`);
|
|
246
|
+
console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-develop')} ${chalk.gray('开发插件功能(命令、中间件、AI 工具等)')}`);
|
|
247
|
+
console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-test')} ${chalk.gray('编写和运行测试用例')}`);
|
|
248
|
+
console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-quality')} ${chalk.gray('代码质量审查与规范检查')}`);
|
|
249
|
+
console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-publish')} ${chalk.gray('发布到 npm 和插件市场')}`);
|
|
250
|
+
console.log(` ${chalk.gray('位置:')} ${chalk.cyan('skills/')} ${chalk.gray('目录')}`);
|
|
251
|
+
}
|
|
221
252
|
console.log('');
|
|
222
253
|
console.log('📝 下一步操作:');
|
|
223
254
|
console.log(` ${chalk.cyan(`cd ${realName}`)}`);
|
|
224
255
|
if (options.database?.dialect === 'sqlite') {
|
|
225
|
-
console.log(` ${chalk.
|
|
256
|
+
console.log(` ${chalk.gray('# SQLite 使用 Node 内置 node:sqlite,请使用 Node.js 22.5+(推荐 24+)')}`);
|
|
226
257
|
}
|
|
227
258
|
// 根据是否全局安装 CLI,显示不同的命令
|
|
228
259
|
if (options.installGlobalCli) {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -10,16 +10,11 @@ export interface InitOptions {
|
|
|
10
10
|
ai?: AISetupConfig;
|
|
11
11
|
adapters?: AdapterSetupResult;
|
|
12
12
|
installGlobalCli?: boolean;
|
|
13
|
+
devSkills?: boolean;
|
|
13
14
|
}
|
|
14
15
|
export interface DatabaseConfig {
|
|
15
16
|
dialect: 'sqlite' | 'mysql' | 'pg' | 'mongodb' | 'redis';
|
|
16
17
|
[key: string]: any;
|
|
17
18
|
}
|
|
18
|
-
export declare const DATABASE_PACKAGES:
|
|
19
|
-
readonly sqlite: "sqlite3";
|
|
20
|
-
readonly mysql: "mysql2";
|
|
21
|
-
readonly pg: "pg";
|
|
22
|
-
readonly mongodb: "mongodb";
|
|
23
|
-
readonly redis: "redis";
|
|
24
|
-
};
|
|
19
|
+
export declare const DATABASE_PACKAGES: Record<DatabaseConfig['dialect'], string | undefined>;
|
|
25
20
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACzD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAGD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAMnF,CAAC"}
|
package/lib/types.js
CHANGED
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAqBA,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAA0D;IACtF,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,QAAQ;IACf,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACf,CAAC"}
|
package/lib/workspace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAQ5D,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAQ5D,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyhBnH"}
|
package/lib/workspace.js
CHANGED
|
@@ -74,7 +74,7 @@ export async function createWorkspace(projectPath, projectName, options) {
|
|
|
74
74
|
'pm2': 'latest'
|
|
75
75
|
},
|
|
76
76
|
pnpm: {
|
|
77
|
-
onlyBuiltDependencies: ['esbuild'
|
|
77
|
+
onlyBuiltDependencies: ['esbuild']
|
|
78
78
|
},
|
|
79
79
|
engines: {
|
|
80
80
|
node: '>=18.0.0'
|
|
@@ -105,6 +105,18 @@ export async function createWorkspace(projectPath, projectName, options) {
|
|
|
105
105
|
if (fs.existsSync(githubPath)) {
|
|
106
106
|
await fs.copy(githubPath, path.join(githubDir, 'SKILL.md'));
|
|
107
107
|
}
|
|
108
|
+
// 创建插件开发技能(可选)
|
|
109
|
+
if (options.devSkills) {
|
|
110
|
+
const devSkillNames = ['plugin-init', 'plugin-develop', 'plugin-test', 'plugin-quality', 'plugin-publish'];
|
|
111
|
+
for (const skillName of devSkillNames) {
|
|
112
|
+
const skillDir = path.join(projectPath, 'skills', skillName);
|
|
113
|
+
await fs.ensureDir(skillDir);
|
|
114
|
+
const skillSrcPath = path.join(__dirname, '../template/skills', skillName, 'SKILL.md');
|
|
115
|
+
if (fs.existsSync(skillSrcPath)) {
|
|
116
|
+
await fs.copy(skillSrcPath, path.join(skillDir, 'SKILL.md'));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
108
120
|
// 创建 plugins 目录
|
|
109
121
|
await fs.ensureDir(path.join(projectPath, 'plugins'));
|
|
110
122
|
await fs.writeFile(path.join(projectPath, 'plugins', '.gitkeep'), '');
|
package/lib/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-zhin-app",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.35",
|
|
4
4
|
"description": "Create a new zhin bot project",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-zhin": "./lib/index.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
|
-
"lib"
|
|
10
|
+
"lib",
|
|
11
|
+
"template"
|
|
11
12
|
],
|
|
12
13
|
"dependencies": {
|
|
13
14
|
"fs-extra": "^11.3.2",
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
"@types/node": "^24.3.0",
|
|
20
21
|
"@types/fs-extra": "^11.0.4",
|
|
21
22
|
"@types/inquirer": "^9.0.7",
|
|
22
|
-
"typescript": "^5.3
|
|
23
|
+
"typescript": "^5.9.3"
|
|
23
24
|
},
|
|
24
25
|
"engines": {
|
|
25
26
|
"node": "^20.19.0 || >=22.12.0"
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plugin-init
|
|
3
|
+
description: "初始化 Zhin.js 插件项目。Use when asked to create a new plugin, scaffold plugin structure, or set up a plugin project. 引导生成符合 Zhin 规范的目录结构、package.json、tsconfig、入口文件和 README。"
|
|
4
|
+
keywords:
|
|
5
|
+
- 创建插件
|
|
6
|
+
- 新建插件
|
|
7
|
+
- 初始化
|
|
8
|
+
- scaffold
|
|
9
|
+
- 脚手架
|
|
10
|
+
- plugin init
|
|
11
|
+
- new plugin
|
|
12
|
+
tags:
|
|
13
|
+
- development
|
|
14
|
+
- plugin
|
|
15
|
+
- scaffold
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Zhin 插件初始化
|
|
19
|
+
|
|
20
|
+
引导创建一个符合 Zhin.js 规范的新插件,确保目录结构、命名、配置和入口代码全部合规。
|
|
21
|
+
|
|
22
|
+
## 适用场景
|
|
23
|
+
|
|
24
|
+
- 用户说"帮我创建一个插件"、"新建插件"、"初始化一个 xxx 插件"
|
|
25
|
+
- 需要从零搭建插件包结构
|
|
26
|
+
|
|
27
|
+
## 初始化流程
|
|
28
|
+
|
|
29
|
+
### 第 1 步:确认插件信息
|
|
30
|
+
|
|
31
|
+
向用户确认:
|
|
32
|
+
|
|
33
|
+
1. **插件名称**:kebab-case,如 `my-plugin`、`group-manager`
|
|
34
|
+
2. **插件类型**:普通插件 / 服务插件 / 适配器插件
|
|
35
|
+
3. **核心功能**:命令、中间件、事件、定时任务、AI 工具、Web 页面
|
|
36
|
+
4. **是否需要数据库**
|
|
37
|
+
5. **是否需要控制台前端**
|
|
38
|
+
|
|
39
|
+
### 第 2 步:生成目录结构
|
|
40
|
+
|
|
41
|
+
**命名规范:**
|
|
42
|
+
- npm 包名:社区插件 `zhin.js-{name}`,官方插件 `@zhin.js/{name}`
|
|
43
|
+
- 目录位于 `plugins/{name}/`
|
|
44
|
+
|
|
45
|
+
**最小结构(单文件插件):**
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
plugins/{name}/
|
|
49
|
+
├── package.json
|
|
50
|
+
├── tsconfig.json
|
|
51
|
+
├── README.md
|
|
52
|
+
├── CHANGELOG.md
|
|
53
|
+
├── src/
|
|
54
|
+
│ └── index.ts
|
|
55
|
+
├── tests/
|
|
56
|
+
│ └── index.test.ts
|
|
57
|
+
└── skills/
|
|
58
|
+
└── {name}/
|
|
59
|
+
└── SKILL.md
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**模块化结构(多功能插件):**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
plugins/{name}/
|
|
66
|
+
├── package.json
|
|
67
|
+
├── tsconfig.json
|
|
68
|
+
├── README.md
|
|
69
|
+
├── CHANGELOG.md
|
|
70
|
+
├── src/
|
|
71
|
+
│ ├── index.ts # 入口装配(只做注册,不堆业务)
|
|
72
|
+
│ ├── commands/ # 命令处理
|
|
73
|
+
│ ├── middlewares/ # 中间件
|
|
74
|
+
│ ├── events/ # 事件监听
|
|
75
|
+
│ ├── services/ # 业务服务 / Context 注册
|
|
76
|
+
│ ├── models/ # 数据库模型
|
|
77
|
+
│ └── crons/ # 定时任务
|
|
78
|
+
├── client/ # 控制台前端(可选)
|
|
79
|
+
│ ├── index.tsx
|
|
80
|
+
│ ├── tsconfig.json
|
|
81
|
+
│ └── pages/
|
|
82
|
+
├── tests/
|
|
83
|
+
│ ├── index.test.ts
|
|
84
|
+
│ ├── commands.test.ts
|
|
85
|
+
│ └── services.test.ts
|
|
86
|
+
├── tools/ # AI 工具声明(可选,*.tool.md)
|
|
87
|
+
├── skills/
|
|
88
|
+
│ └── {name}/
|
|
89
|
+
│ └── SKILL.md
|
|
90
|
+
└── lib/ # 编译产物(gitignore)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 第 3 步:生成 package.json
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"name": "zhin.js-{name}",
|
|
98
|
+
"version": "0.1.0",
|
|
99
|
+
"type": "module",
|
|
100
|
+
"main": "./lib/index.js",
|
|
101
|
+
"types": "./lib/index.d.ts",
|
|
102
|
+
"exports": {
|
|
103
|
+
".": {
|
|
104
|
+
"types": "./lib/index.d.ts",
|
|
105
|
+
"development": "./src/index.ts",
|
|
106
|
+
"import": "./lib/index.js"
|
|
107
|
+
},
|
|
108
|
+
"./package.json": "./package.json"
|
|
109
|
+
},
|
|
110
|
+
"files": ["src", "lib", "client", "dist", "skills", "tools", "README.md"],
|
|
111
|
+
"scripts": {
|
|
112
|
+
"build": "tsc",
|
|
113
|
+
"dev": "tsc --watch",
|
|
114
|
+
"test": "vitest run",
|
|
115
|
+
"test:watch": "vitest",
|
|
116
|
+
"test:coverage": "vitest run --coverage",
|
|
117
|
+
"prepublishOnly": "pnpm build"
|
|
118
|
+
},
|
|
119
|
+
"keywords": ["zhin.js", "plugin", "{name}"],
|
|
120
|
+
"peerDependencies": {
|
|
121
|
+
"zhin.js": "latest"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 第 4 步:生成入口文件
|
|
127
|
+
|
|
128
|
+
**入口 src/index.ts 只做装配,不堆业务:**
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
import { usePlugin } from 'zhin.js'
|
|
132
|
+
|
|
133
|
+
const plugin = usePlugin()
|
|
134
|
+
const { addCommand, addMiddleware, useContext, logger } = plugin
|
|
135
|
+
|
|
136
|
+
// 配置声明
|
|
137
|
+
// const getConfig = plugin.declareConfig('my-plugin', Schema.object({...}))
|
|
138
|
+
|
|
139
|
+
// 注册命令、中间件、事件等
|
|
140
|
+
// import './commands/index.js'
|
|
141
|
+
// import './services/index.js'
|
|
142
|
+
|
|
143
|
+
logger.info('{Name} 插件已加载')
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**关键约定:**
|
|
147
|
+
- `usePlugin()` 只在模块顶层调用
|
|
148
|
+
- TS 文件间互导使用 `.js` 扩展名
|
|
149
|
+
- 从 `zhin.js` 统一导入框架 API
|
|
150
|
+
- `useContext()` 回调返回清理函数
|
|
151
|
+
|
|
152
|
+
### 第 5 步:生成 tsconfig.json
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"compilerOptions": {
|
|
157
|
+
"target": "ES2022",
|
|
158
|
+
"module": "ESNext",
|
|
159
|
+
"moduleResolution": "bundler",
|
|
160
|
+
"outDir": "./lib",
|
|
161
|
+
"rootDir": "./src",
|
|
162
|
+
"strict": true,
|
|
163
|
+
"declaration": true,
|
|
164
|
+
"declarationMap": true,
|
|
165
|
+
"sourceMap": true,
|
|
166
|
+
"esModuleInterop": true,
|
|
167
|
+
"skipLibCheck": true,
|
|
168
|
+
"jsx": "react-jsx",
|
|
169
|
+
"jsxImportSource": "zhin.js"
|
|
170
|
+
},
|
|
171
|
+
"include": ["src/**/*"],
|
|
172
|
+
"exclude": ["lib", "node_modules", "client", "tests"]
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 第 6 步:生成测试文件
|
|
177
|
+
|
|
178
|
+
在 `tests/index.test.ts` 中生成基础测试骨架:
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
|
|
182
|
+
import { Plugin } from '@zhin.js/core'
|
|
183
|
+
|
|
184
|
+
describe('{Name} Plugin', () => {
|
|
185
|
+
let plugin: Plugin
|
|
186
|
+
let root: Plugin
|
|
187
|
+
|
|
188
|
+
beforeEach(() => {
|
|
189
|
+
root = new Plugin('/test/root.ts')
|
|
190
|
+
plugin = new Plugin('/plugins/{name}/src/index.ts', root)
|
|
191
|
+
})
|
|
192
|
+
|
|
193
|
+
afterEach(async () => {
|
|
194
|
+
if (plugin?.started) await plugin.stop()
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
it('should create instance', () => {
|
|
198
|
+
expect(plugin).toBeInstanceOf(Plugin)
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
it('should start and stop', async () => {
|
|
202
|
+
await plugin.start()
|
|
203
|
+
expect(plugin.started).toBe(true)
|
|
204
|
+
await plugin.stop()
|
|
205
|
+
expect(plugin.started).toBe(false)
|
|
206
|
+
})
|
|
207
|
+
})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 第 7 步:生成 README.md
|
|
211
|
+
|
|
212
|
+
包含:安装、配置、使用示例、命令列表、AI 工具列表、开发说明。
|
|
213
|
+
|
|
214
|
+
## 检查清单
|
|
215
|
+
|
|
216
|
+
- [ ] 包名符合 `zhin.js-{name}` 或 `@zhin.js/{name}` 格式
|
|
217
|
+
- [ ] `type: "module"` 已设置
|
|
218
|
+
- [ ] `exports` 字段包含 development 条件导出
|
|
219
|
+
- [ ] `files` 包含 `src`、`lib`、`skills`
|
|
220
|
+
- [ ] `peerDependencies` 包含 `zhin.js`
|
|
221
|
+
- [ ] 入口文件使用 `usePlugin()` 且在模块顶层
|
|
222
|
+
- [ ] 测试文件存在且可运行
|
|
223
|
+
- [ ] README 包含安装和使用说明
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plugin-publish
|
|
3
|
+
description: "发布 Zhin.js 插件到 npm 和 Zhin 插件市场。Use when asked to publish a plugin, prepare for release, check publish readiness, or submit to the Zhin plugin marketplace. 引导完成发布前检查、版本管理和提交流程。"
|
|
4
|
+
keywords:
|
|
5
|
+
- 发布
|
|
6
|
+
- publish
|
|
7
|
+
- npm
|
|
8
|
+
- 插件市场
|
|
9
|
+
- marketplace
|
|
10
|
+
- release
|
|
11
|
+
- 版本
|
|
12
|
+
- version
|
|
13
|
+
- changeset
|
|
14
|
+
tags:
|
|
15
|
+
- development
|
|
16
|
+
- plugin
|
|
17
|
+
- publish
|
|
18
|
+
- release
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Zhin 插件发布
|
|
22
|
+
|
|
23
|
+
引导将 Zhin.js 插件发布到 npm 和 Zhin 插件市场,确保包结构、元数据和质量符合社区标准。
|
|
24
|
+
|
|
25
|
+
## 适用场景
|
|
26
|
+
|
|
27
|
+
- 用户说"发布插件"、"提交到插件市场"、"准备发版"
|
|
28
|
+
- 插件开发完成需要分享给社区
|
|
29
|
+
- 需要检查插件是否满足发布条件
|
|
30
|
+
|
|
31
|
+
## 发布前检查清单
|
|
32
|
+
|
|
33
|
+
### 第 1 步:包元数据检查
|
|
34
|
+
|
|
35
|
+
验证 `package.json` 必需字段:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"name": "zhin.js-{name}", // ✅ 社区前缀
|
|
40
|
+
"version": "0.1.0", // ✅ 语义化版本
|
|
41
|
+
"type": "module", // ✅ ESM
|
|
42
|
+
"description": "插件简介", // ✅ 非空描述
|
|
43
|
+
"main": "./lib/index.js", // ✅ 入口指向编译产物
|
|
44
|
+
"types": "./lib/index.d.ts", // ✅ 类型声明
|
|
45
|
+
"exports": {
|
|
46
|
+
".": {
|
|
47
|
+
"types": "./lib/index.d.ts",
|
|
48
|
+
"development": "./src/index.ts", // ✅ 开发条件导出
|
|
49
|
+
"import": "./lib/index.js"
|
|
50
|
+
},
|
|
51
|
+
"./package.json": "./package.json"
|
|
52
|
+
},
|
|
53
|
+
"files": [ // ✅ 发布文件白名单
|
|
54
|
+
"src", "lib", "client", "dist",
|
|
55
|
+
"skills", "tools",
|
|
56
|
+
"README.md", "CHANGELOG.md"
|
|
57
|
+
],
|
|
58
|
+
"keywords": ["zhin.js", "plugin"], // ✅ 包含 zhin.js 关键词
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"zhin.js": ">=x.x.x" // ✅ 声明框架兼容版本
|
|
61
|
+
},
|
|
62
|
+
"license": "MIT", // ✅ 开源协议
|
|
63
|
+
"repository": { "url": "..." }, // 推荐:仓库地址
|
|
64
|
+
"homepage": "...", // 推荐:文档地址
|
|
65
|
+
"author": "..." // 推荐:作者信息
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**插件市场识别条件:**
|
|
70
|
+
- `name` 以 `zhin.js-` 开头(社区)或 `@zhin.js/` 开头(官方)
|
|
71
|
+
- `keywords` 包含 `zhin.js`
|
|
72
|
+
- `peerDependencies` 包含 `zhin.js`
|
|
73
|
+
|
|
74
|
+
### 第 2 步:代码质量检查
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# 1. 类型检查
|
|
78
|
+
pnpm build # 确保 tsc 编译通过,无类型错误
|
|
79
|
+
|
|
80
|
+
# 2. 运行测试
|
|
81
|
+
pnpm test # 确保所有测试通过
|
|
82
|
+
|
|
83
|
+
# 3. 覆盖率检查
|
|
84
|
+
pnpm test:coverage # 确保覆盖率达标
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**质量底线:**
|
|
88
|
+
- [ ] `tsc` 编译零错误
|
|
89
|
+
- [ ] 所有测试通过
|
|
90
|
+
- [ ] 语句覆盖率 ≥ 60%
|
|
91
|
+
- [ ] 无 `any` 类型滥用
|
|
92
|
+
- [ ] 无未处理的 TODO/FIXME 阻塞发布
|
|
93
|
+
|
|
94
|
+
### 第 3 步:文档检查
|
|
95
|
+
|
|
96
|
+
**README.md 必须包含:**
|
|
97
|
+
- [ ] 插件功能简介
|
|
98
|
+
- [ ] 安装步骤(`pnpm add zhin.js-{name}`)
|
|
99
|
+
- [ ] 配置说明(配置项及默认值)
|
|
100
|
+
- [ ] 命令列表(如有)
|
|
101
|
+
- [ ] AI 工具说明(如有)
|
|
102
|
+
- [ ] 使用示例
|
|
103
|
+
|
|
104
|
+
**CHANGELOG.md 必须包含:**
|
|
105
|
+
- [ ] 当前版本的变更记录
|
|
106
|
+
- [ ] 遵循 [Keep a Changelog](https://keepachangelog.com/) 格式
|
|
107
|
+
|
|
108
|
+
**关键词:** 有 `skills/` 目录时,确认 SKILL.md 的 description 准确描述插件能力。
|
|
109
|
+
|
|
110
|
+
### 第 4 步:构建产物检查
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 确保 lib/ 目录存在且完整
|
|
114
|
+
ls lib/
|
|
115
|
+
|
|
116
|
+
# 检查将要发布的文件
|
|
117
|
+
npm pack --dry-run
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
确认 `npm pack` 输出的文件列表:
|
|
121
|
+
- ✅ 包含 `lib/`(编译后的 JS + d.ts)
|
|
122
|
+
- ✅ 包含 `src/`(源码,供开发模式使用)
|
|
123
|
+
- ✅ 包含 `skills/`(AI 技能描述)
|
|
124
|
+
- ✅ 包含 `README.md`、`CHANGELOG.md`
|
|
125
|
+
- ❌ 不包含 `node_modules/`、`tests/`、`.env`
|
|
126
|
+
- ❌ 不包含 `coverage/`、`.DS_Store`
|
|
127
|
+
|
|
128
|
+
### 第 5 步:版本管理
|
|
129
|
+
|
|
130
|
+
**语义化版本规则:**
|
|
131
|
+
- `patch` (0.1.0 → 0.1.1):bug 修复、文档更新
|
|
132
|
+
- `minor` (0.1.0 → 0.2.0):新增功能、新增命令
|
|
133
|
+
- `major` (0.1.0 → 1.0.0):破坏性变更、API 不兼容
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# 更新版本号
|
|
137
|
+
npm version patch # 或 minor / major
|
|
138
|
+
|
|
139
|
+
# 使用 Changesets(如项目已配置)
|
|
140
|
+
pnpm changeset # 创建变更记录
|
|
141
|
+
pnpm changeset version # 更新版本
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 第 6 步:发布
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# 发布到 npm
|
|
148
|
+
npm publish --access public
|
|
149
|
+
|
|
150
|
+
# 如果是 scoped 包(@zhin.js/xxx),需要 --access public
|
|
151
|
+
npm publish --access public
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**首次发布:**
|
|
155
|
+
1. 确认已登录 npm:`npm whoami`
|
|
156
|
+
2. 如未登录:`npm login`
|
|
157
|
+
3. 确认包名未被占用:`npm view zhin.js-{name}`
|
|
158
|
+
|
|
159
|
+
### 第 7 步:发布后验证
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 1. 等待 npm 索引更新(通常 1-2 分钟)
|
|
163
|
+
|
|
164
|
+
# 2. 在新项目中测试安装
|
|
165
|
+
pnpm add zhin.js-{name}
|
|
166
|
+
|
|
167
|
+
# 3. 确认插件可正常加载
|
|
168
|
+
# 在 zhin.config 中添加插件名,启动 bot 验证
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 常见问题
|
|
172
|
+
|
|
173
|
+
### 包名已被占用
|
|
174
|
+
- 社区插件前缀固定为 `zhin.js-`
|
|
175
|
+
- 如果被占用,考虑更具体的名称如 `zhin.js-music-search`
|
|
176
|
+
|
|
177
|
+
### 发布时 files 不对
|
|
178
|
+
- 检查 `.gitignore` 和 `.npmignore`
|
|
179
|
+
- 使用 `npm pack --dry-run` 预检
|
|
180
|
+
|
|
181
|
+
### peerDependencies 版本范围
|
|
182
|
+
- 使用 `>=x.x.x` 而不是精确版本
|
|
183
|
+
- 确保与当前 zhin.js 最新版本兼容
|
|
184
|
+
|
|
185
|
+
## 检查清单(发布门禁)
|
|
186
|
+
|
|
187
|
+
- [ ] `name` 遵循 `zhin.js-{name}` 命名规范
|
|
188
|
+
- [ ] `keywords` 包含 `zhin.js`
|
|
189
|
+
- [ ] `peerDependencies` 声明 `zhin.js`
|
|
190
|
+
- [ ] `type: "module"` 已设置
|
|
191
|
+
- [ ] `exports` 包含 types + development + import
|
|
192
|
+
- [ ] `files` 白名单正确(含 src、lib、skills)
|
|
193
|
+
- [ ] `tsc` 编译通过
|
|
194
|
+
- [ ] 所有测试通过
|
|
195
|
+
- [ ] 覆盖率达标(≥ 60% statements)
|
|
196
|
+
- [ ] README.md 完整
|
|
197
|
+
- [ ] CHANGELOG.md 更新
|
|
198
|
+
- [ ] SKILL.md description 准确(如有 skills/)
|
|
199
|
+
- [ ] `npm pack --dry-run` 文件列表正确
|
|
200
|
+
- [ ] 版本号已更新
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plugin-quality
|
|
3
|
+
description: "审查和改进 Zhin.js 插件质量。Use when asked to review plugin code, check code quality, audit plugin structure, refactor plugin, or improve plugin before publishing. 引导检查插件的结构规范性、代码健壮性、性能和安全性。"
|
|
4
|
+
keywords:
|
|
5
|
+
- 代码审查
|
|
6
|
+
- 质量检查
|
|
7
|
+
- review
|
|
8
|
+
- 审计
|
|
9
|
+
- 重构
|
|
10
|
+
- refactor
|
|
11
|
+
- 代码规范
|
|
12
|
+
- lint
|
|
13
|
+
- quality
|
|
14
|
+
tags:
|
|
15
|
+
- development
|
|
16
|
+
- quality
|
|
17
|
+
- review
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Zhin 插件质量审查
|
|
21
|
+
|
|
22
|
+
对 Zhin.js 插件进行全面质量审查,检查结构规范性、代码风格、性能问题和安全隐患,确保达到发布标准。
|
|
23
|
+
|
|
24
|
+
## 适用场景
|
|
25
|
+
|
|
26
|
+
- 用户说"检查一下插件质量"、"审查代码"、"发布前看看有没有问题"
|
|
27
|
+
- 插件开发完成,准备发布前的质量把关
|
|
28
|
+
- 重构现有插件使其更规范
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
### 1. 结构规范性
|
|
33
|
+
|
|
34
|
+
**检查项:**
|
|
35
|
+
|
|
36
|
+
| 项目 | 要求 | 严重程度 |
|
|
37
|
+
|------|------|----------|
|
|
38
|
+
| usePlugin() 位置 | 模块顶层调用 | 🔴 严重 |
|
|
39
|
+
| 导入路径 | TS 文件间使用 `.js` 扩展名 | 🔴 严重 |
|
|
40
|
+
| 框架导入 | 统一从 `zhin.js` 导入 | 🟡 中等 |
|
|
41
|
+
| 入口职责 | index.ts 只做装配,不堆业务 | 🟡 中等 |
|
|
42
|
+
| 目录布局 | 命令/中间件/服务分目录(多功能时) | 🟢 建议 |
|
|
43
|
+
| package.json | type:module、exports、files | 🔴 严重 |
|
|
44
|
+
|
|
45
|
+
**常见错误:**
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
// ❌ usePlugin 在 async 内调用
|
|
49
|
+
async function setup() {
|
|
50
|
+
const plugin = usePlugin() // 上下文可能丢失
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// ✅ 模块顶层
|
|
54
|
+
const plugin = usePlugin()
|
|
55
|
+
|
|
56
|
+
// ❌ 缺少 .js 扩展名
|
|
57
|
+
import { foo } from './bar'
|
|
58
|
+
|
|
59
|
+
// ✅ 正确
|
|
60
|
+
import { foo } from './bar.js'
|
|
61
|
+
|
|
62
|
+
// ❌ 从内部包导入
|
|
63
|
+
import { Plugin } from '@zhin.js/core'
|
|
64
|
+
|
|
65
|
+
// ✅ 统一导入
|
|
66
|
+
import { Plugin } from 'zhin.js'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. 生命周期管理
|
|
70
|
+
|
|
71
|
+
**检查项:**
|
|
72
|
+
|
|
73
|
+
| 项目 | 要求 | 严重程度 |
|
|
74
|
+
|------|------|----------|
|
|
75
|
+
| useContext 清理 | 回调返回清理函数 | 🔴 严重 |
|
|
76
|
+
| 定时器清理 | setInterval/setTimeout 有 clearInterval | 🔴 严重 |
|
|
77
|
+
| 事件监听清理 | 外部 EventEmitter 监听有移除 | 🟡 中等 |
|
|
78
|
+
| 连接清理 | WebSocket/HTTP 连接有断开逻辑 | 🔴 严重 |
|
|
79
|
+
|
|
80
|
+
**常见泄漏模式:**
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
// ❌ 没有清理
|
|
84
|
+
useContext('database', (db) => {
|
|
85
|
+
const timer = setInterval(() => { /* ... */ }, 1000)
|
|
86
|
+
// 插件卸载后 timer 仍在运行!
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
// ✅ 返回清理函数
|
|
90
|
+
useContext('database', (db) => {
|
|
91
|
+
const timer = setInterval(() => { /* ... */ }, 1000)
|
|
92
|
+
return () => clearInterval(timer)
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 3. 类型安全
|
|
97
|
+
|
|
98
|
+
**检查项:**
|
|
99
|
+
|
|
100
|
+
| 项目 | 要求 | 严重程度 |
|
|
101
|
+
|------|------|----------|
|
|
102
|
+
| 无 `any` 滥用 | 除必要的类型断言外不使用 any | 🟡 中等 |
|
|
103
|
+
| 类型声明完整 | Context 扩展、命令参数有类型 | 🟡 中等 |
|
|
104
|
+
| 严格模式 | tsconfig.json 开启 strict | 🟢 建议 |
|
|
105
|
+
|
|
106
|
+
### 4. 安全性
|
|
107
|
+
|
|
108
|
+
**检查项:**
|
|
109
|
+
|
|
110
|
+
| 项目 | 要求 | 严重程度 |
|
|
111
|
+
|------|------|----------|
|
|
112
|
+
| 无硬编码凭据 | token/password/secret 不在源码中 | 🔴 严重 |
|
|
113
|
+
| 用户输入校验 | 命令参数、API 入参有校验 | 🟡 中等 |
|
|
114
|
+
| SQL 注入防护 | 使用参数化查询 | 🔴 严重 |
|
|
115
|
+
| 路径遍历防护 | 文件操作验证路径 | 🔴 严重 |
|
|
116
|
+
| eval/Function | 不使用 eval 或 new Function | 🔴 严重 |
|
|
117
|
+
|
|
118
|
+
### 5. 性能
|
|
119
|
+
|
|
120
|
+
**检查项:**
|
|
121
|
+
|
|
122
|
+
| 项目 | 要求 | 严重程度 |
|
|
123
|
+
|------|------|----------|
|
|
124
|
+
| 无阻塞操作 | 不在中间件中执行同步重操作 | 🟡 中等 |
|
|
125
|
+
| 合理缓存 | 高频查询结果有缓存策略 | 🟢 建议 |
|
|
126
|
+
| 内存泄漏 | WeakMap/WeakRef 用于大量对象引用 | 🟡 中等 |
|
|
127
|
+
| 批量操作 | 数据库操作避免 N+1 查询 | 🟢 建议 |
|
|
128
|
+
|
|
129
|
+
### 6. 文档与测试
|
|
130
|
+
|
|
131
|
+
**检查项:**
|
|
132
|
+
|
|
133
|
+
| 项目 | 要求 | 严重程度 |
|
|
134
|
+
|------|------|----------|
|
|
135
|
+
| README 完整 | 安装、配置、使用、命令列表 | 🔴 严重 |
|
|
136
|
+
| CHANGELOG | 版本变更记录 | 🟡 中等 |
|
|
137
|
+
| 测试存在 | 核心功能有测试 | 🔴 严重 |
|
|
138
|
+
| 覆盖率 | ≥ 60% statements | 🟡 中等 |
|
|
139
|
+
|
|
140
|
+
## 审查流程
|
|
141
|
+
|
|
142
|
+
### 第 1 步:快速扫描
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# 检查结构
|
|
146
|
+
ls -la src/ tests/ client/ skills/
|
|
147
|
+
|
|
148
|
+
# 检查类型
|
|
149
|
+
pnpm build 2>&1 | grep error
|
|
150
|
+
|
|
151
|
+
# 检查测试
|
|
152
|
+
pnpm test
|
|
153
|
+
|
|
154
|
+
# 检查安全关键词
|
|
155
|
+
grep -rn "eval\|Function(\|exec(\|execSync\|password\|secret\|token" src/
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 第 2 步:逐文件审查
|
|
159
|
+
|
|
160
|
+
对每个源文件检查:
|
|
161
|
+
1. 导入路径是否正确
|
|
162
|
+
2. usePlugin/useContext 使用是否正确
|
|
163
|
+
3. 资源是否有清理路径
|
|
164
|
+
4. 用户输入是否有校验
|
|
165
|
+
|
|
166
|
+
### 第 3 步:输出审查报告
|
|
167
|
+
|
|
168
|
+
格式:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
## 插件质量审查报告
|
|
172
|
+
|
|
173
|
+
### 概要
|
|
174
|
+
- 插件名:xxx
|
|
175
|
+
- 审查文件数:N
|
|
176
|
+
- 问题总数:X(严重 A / 中等 B / 建议 C)
|
|
177
|
+
|
|
178
|
+
### 🔴 严重问题
|
|
179
|
+
1. [文件:行号] 问题描述 → 建议修复方式
|
|
180
|
+
|
|
181
|
+
### 🟡 中等问题
|
|
182
|
+
1. [文件:行号] 问题描述 → 建议修复方式
|
|
183
|
+
|
|
184
|
+
### 🟢 改进建议
|
|
185
|
+
1. [文件:行号] 建议内容
|
|
186
|
+
|
|
187
|
+
### 发布就绪度
|
|
188
|
+
- ✅/❌ 结构规范
|
|
189
|
+
- ✅/❌ 生命周期安全
|
|
190
|
+
- ✅/❌ 类型完整
|
|
191
|
+
- ✅/❌ 安全无风险
|
|
192
|
+
- ✅/❌ 测试通过
|
|
193
|
+
- ✅/❌ 文档完整
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## 检查清单(总结)
|
|
197
|
+
|
|
198
|
+
- [ ] usePlugin() 在模块顶层
|
|
199
|
+
- [ ] 导入路径使用 .js 扩展名
|
|
200
|
+
- [ ] 所有 useContext 回调返回清理函数
|
|
201
|
+
- [ ] 无硬编码凭据
|
|
202
|
+
- [ ] 无 eval/Function 使用
|
|
203
|
+
- [ ] 用户输入有校验
|
|
204
|
+
- [ ] tsc 编译无错误
|
|
205
|
+
- [ ] 测试全部通过
|
|
206
|
+
- [ ] 覆盖率 ≥ 60%
|
|
207
|
+
- [ ] README 完整
|
|
208
|
+
- [ ] CHANGELOG 更新
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plugin-test
|
|
3
|
+
description: "为 Zhin.js 插件编写和运行测试。Use when asked to write tests, add test coverage, generate test cases, or verify plugin behavior. 引导编写符合 Zhin 插件测试规范的 Vitest 测试用例。"
|
|
4
|
+
keywords:
|
|
5
|
+
- 测试
|
|
6
|
+
- test
|
|
7
|
+
- vitest
|
|
8
|
+
- 测试用例
|
|
9
|
+
- test case
|
|
10
|
+
- 覆盖率
|
|
11
|
+
- coverage
|
|
12
|
+
- 单元测试
|
|
13
|
+
- unit test
|
|
14
|
+
tags:
|
|
15
|
+
- development
|
|
16
|
+
- testing
|
|
17
|
+
- quality
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Zhin 插件测试
|
|
21
|
+
|
|
22
|
+
引导为 Zhin.js 插件编写高质量测试用例,确保功能正确、回归安全,并达到发布所需的覆盖率。
|
|
23
|
+
|
|
24
|
+
## 适用场景
|
|
25
|
+
|
|
26
|
+
- 用户说"帮我写测试"、"增加测试覆盖率"、"测试这个命令"
|
|
27
|
+
- 新功能需要配套测试
|
|
28
|
+
- 发布前需要验证测试通过
|
|
29
|
+
|
|
30
|
+
## 测试环境
|
|
31
|
+
|
|
32
|
+
Zhin 项目使用 **Vitest**,全局 API 已注入(`describe`、`it`、`expect`、`vi` 等)。
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 运行测试
|
|
36
|
+
pnpm test # 单次运行
|
|
37
|
+
pnpm test:watch # 监听模式
|
|
38
|
+
pnpm test:coverage # 覆盖率报告
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 测试分类与模板
|
|
42
|
+
|
|
43
|
+
### 1. 插件生命周期测试
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
|
|
47
|
+
import { Plugin } from '@zhin.js/core'
|
|
48
|
+
|
|
49
|
+
describe('MyPlugin Lifecycle', () => {
|
|
50
|
+
let plugin: Plugin
|
|
51
|
+
let root: Plugin
|
|
52
|
+
|
|
53
|
+
beforeEach(() => {
|
|
54
|
+
root = new Plugin('/test/root.ts')
|
|
55
|
+
plugin = new Plugin('/plugins/my-plugin/src/index.ts', root)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
afterEach(async () => {
|
|
59
|
+
if (plugin?.started) await plugin.stop()
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('should create instance', () => {
|
|
63
|
+
expect(plugin).toBeInstanceOf(Plugin)
|
|
64
|
+
expect(plugin.name).toBe('my-plugin')
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('should start and stop', async () => {
|
|
68
|
+
await plugin.start()
|
|
69
|
+
expect(plugin.started).toBe(true)
|
|
70
|
+
await plugin.stop()
|
|
71
|
+
expect(plugin.started).toBe(false)
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
it('should emit lifecycle events', async () => {
|
|
75
|
+
const mounted = vi.fn()
|
|
76
|
+
const disposed = vi.fn()
|
|
77
|
+
plugin.on('mounted', mounted)
|
|
78
|
+
plugin.on('dispose', disposed)
|
|
79
|
+
|
|
80
|
+
await plugin.start()
|
|
81
|
+
expect(mounted).toHaveBeenCalled()
|
|
82
|
+
|
|
83
|
+
await plugin.stop()
|
|
84
|
+
expect(disposed).toHaveBeenCalled()
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 2. 命令测试
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { describe, it, expect } from 'vitest'
|
|
93
|
+
import { MessageCommand } from '@zhin.js/core'
|
|
94
|
+
|
|
95
|
+
describe('Commands', () => {
|
|
96
|
+
it('should parse parameters', () => {
|
|
97
|
+
const cmd = new MessageCommand('hello <name:text> [count:number=1]')
|
|
98
|
+
// 验证命令定义正确
|
|
99
|
+
expect(cmd.name).toBe('hello')
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
it('should execute command action', async () => {
|
|
103
|
+
const cmd = new MessageCommand('greet <name:text>')
|
|
104
|
+
.action(async (message, result) => {
|
|
105
|
+
return `Hello, ${result.params.name}!`
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
// 模拟消息和匹配结果
|
|
109
|
+
const mockMessage = { $raw: 'greet World' } as any
|
|
110
|
+
const mockResult = { params: { name: 'World' } } as any
|
|
111
|
+
|
|
112
|
+
// 直接调用 action 回调验证输出
|
|
113
|
+
const callback = cmd['_action']
|
|
114
|
+
if (callback) {
|
|
115
|
+
const output = await callback(mockMessage, mockResult)
|
|
116
|
+
expect(output).toBe('Hello, World!')
|
|
117
|
+
}
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 3. 中间件测试
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
126
|
+
|
|
127
|
+
describe('Middleware', () => {
|
|
128
|
+
it('should call next in order', async () => {
|
|
129
|
+
const order: number[] = []
|
|
130
|
+
|
|
131
|
+
const middleware1 = async (msg: any, next: () => Promise<void>) => {
|
|
132
|
+
order.push(1)
|
|
133
|
+
await next()
|
|
134
|
+
order.push(4)
|
|
135
|
+
}
|
|
136
|
+
const middleware2 = async (msg: any, next: () => Promise<void>) => {
|
|
137
|
+
order.push(2)
|
|
138
|
+
await next()
|
|
139
|
+
order.push(3)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// 模拟中间件链
|
|
143
|
+
const mockMsg = { $raw: 'test' } as any
|
|
144
|
+
await middleware1(mockMsg, () => middleware2(mockMsg, async () => {}))
|
|
145
|
+
|
|
146
|
+
expect(order).toEqual([1, 2, 3, 4])
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
it('should intercept message when not calling next', async () => {
|
|
150
|
+
const afterSpy = vi.fn()
|
|
151
|
+
|
|
152
|
+
const filter = async (msg: any, next: () => Promise<void>) => {
|
|
153
|
+
if (msg.$raw.includes('spam')) return // 拦截
|
|
154
|
+
await next()
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const mockMsg = { $raw: 'this is spam' } as any
|
|
158
|
+
await filter(mockMsg, afterSpy)
|
|
159
|
+
|
|
160
|
+
expect(afterSpy).not.toHaveBeenCalled()
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 4. 服务 / Context 测试
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
169
|
+
|
|
170
|
+
describe('MyService', () => {
|
|
171
|
+
it('should initialize correctly', async () => {
|
|
172
|
+
// 测试服务创建逻辑(不依赖框架注入)
|
|
173
|
+
const service = new MyService({ port: 3000 })
|
|
174
|
+
expect(service.port).toBe(3000)
|
|
175
|
+
})
|
|
176
|
+
|
|
177
|
+
it('should cleanup on dispose', async () => {
|
|
178
|
+
const service = new MyService({})
|
|
179
|
+
const cleanupSpy = vi.spyOn(service, 'cleanup')
|
|
180
|
+
|
|
181
|
+
await service.cleanup()
|
|
182
|
+
expect(cleanupSpy).toHaveBeenCalled()
|
|
183
|
+
})
|
|
184
|
+
})
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### 5. AI 工具测试
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
import { describe, it, expect } from 'vitest'
|
|
191
|
+
import { ZhinTool } from '@zhin.js/core'
|
|
192
|
+
|
|
193
|
+
describe('AI Tools', () => {
|
|
194
|
+
it('should build tool correctly', () => {
|
|
195
|
+
const tool = new ZhinTool('calculator')
|
|
196
|
+
.desc('计算表达式')
|
|
197
|
+
.param('expression', { type: 'string', description: '表达式' }, true)
|
|
198
|
+
.execute(async (args) => String(eval(args.expression)))
|
|
199
|
+
|
|
200
|
+
const built = tool.toTool()
|
|
201
|
+
expect(built.name).toBe('calculator')
|
|
202
|
+
expect(built.description).toBe('计算表达式')
|
|
203
|
+
expect(built.parameters.required).toContain('expression')
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
it('should execute tool', async () => {
|
|
207
|
+
const tool = new ZhinTool('add')
|
|
208
|
+
.desc('加法')
|
|
209
|
+
.param('a', { type: 'number', description: '数字a' }, true)
|
|
210
|
+
.param('b', { type: 'number', description: '数字b' }, true)
|
|
211
|
+
.execute(async ({ a, b }) => a + b)
|
|
212
|
+
|
|
213
|
+
const built = tool.toTool()
|
|
214
|
+
const result = await built.execute({ a: 1, b: 2 })
|
|
215
|
+
expect(result).toBe(3)
|
|
216
|
+
})
|
|
217
|
+
})
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 6. 定时任务测试
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
224
|
+
|
|
225
|
+
describe('Cron Jobs', () => {
|
|
226
|
+
it('should define valid cron expression', () => {
|
|
227
|
+
// 验证 cron 表达式格式
|
|
228
|
+
const expression = '0 9 * * 1-5'
|
|
229
|
+
const parts = expression.split(' ')
|
|
230
|
+
expect(parts).toHaveLength(5)
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
it('should execute cron callback', async () => {
|
|
234
|
+
const callback = vi.fn()
|
|
235
|
+
|
|
236
|
+
// 直接测试回调逻辑
|
|
237
|
+
await callback()
|
|
238
|
+
expect(callback).toHaveBeenCalled()
|
|
239
|
+
})
|
|
240
|
+
})
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## 覆盖率目标
|
|
244
|
+
|
|
245
|
+
发布到插件市场前建议的最低覆盖率:
|
|
246
|
+
|
|
247
|
+
| 指标 | 最低 | 推荐 |
|
|
248
|
+
|------|------|------|
|
|
249
|
+
| 语句覆盖 (Statements) | 60% | 80%+ |
|
|
250
|
+
| 分支覆盖 (Branches) | 50% | 70%+ |
|
|
251
|
+
| 函数覆盖 (Functions) | 70% | 90%+ |
|
|
252
|
+
| 行覆盖 (Lines) | 60% | 80%+ |
|
|
253
|
+
|
|
254
|
+
## 测试命名规范
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
tests/
|
|
258
|
+
├── index.test.ts # 插件生命周期
|
|
259
|
+
├── commands.test.ts # 命令逻辑
|
|
260
|
+
├── middlewares.test.ts # 中间件逻辑
|
|
261
|
+
├── services.test.ts # 服务/Context 逻辑
|
|
262
|
+
├── tools.test.ts # AI 工具逻辑
|
|
263
|
+
└── integration.test.ts # 集成测试(可选)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## 检查清单
|
|
267
|
+
|
|
268
|
+
- [ ] 每个命令有对应的参数解析和输出测试
|
|
269
|
+
- [ ] 中间件有正序和拦截测试
|
|
270
|
+
- [ ] 服务有初始化和清理测试
|
|
271
|
+
- [ ] AI 工具有构建和执行测试
|
|
272
|
+
- [ ] 所有测试通过 `pnpm test`
|
|
273
|
+
- [ ] 覆盖率满足发布要求
|
|
274
|
+
- [ ] 没有跳过(`.skip`)或仅运行(`.only`)的测试
|