一键导入
plugin-init
// 初始化 Zhin.js 插件项目。Use when asked to create a new plugin, scaffold plugin structure, or set up a plugin project. 引导生成符合 Zhin 规范的目录结构、package.json、tsconfig、入口文件和 README。
// 初始化 Zhin.js 插件项目。Use when asked to create a new plugin, scaffold plugin structure, or set up a plugin project. 引导生成符合 Zhin 规范的目录结构、package.json、tsconfig、入口文件和 README。
发布 Zhin.js 插件到 npm 和 Zhin 插件市场。Use when asked to publish a plugin, prepare for release, check publish readiness, or submit to the Zhin plugin marketplace. 引导完成发布前检查、版本管理和提交流程。
审查和改进 Zhin.js 插件质量。Use when asked to review plugin code, check code quality, audit plugin structure, refactor plugin, or improve plugin before publishing. 引导检查插件的结构规范性、代码健壮性、性能和安全性。
为 Zhin.js 插件编写和运行测试。Use when asked to write tests, add test coverage, generate test cases, or verify plugin behavior. 引导编写符合 Zhin 插件测试规范的 Vitest 测试用例。
| name | plugin-init |
| 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。 |
| keywords | ["创建插件","新建插件","初始化","scaffold","脚手架","plugin init","new plugin"] |
| tags | ["development","plugin","scaffold"] |
引导创建一个符合 Zhin.js 规范的新插件,确保目录结构、命名、配置和入口代码全部合规。
向用户确认:
my-plugin、group-manager命名规范:
zhin.js-{name},官方插件 @zhin.js/{name}plugins/{name}/最小结构(单文件插件):
plugins/{name}/
├── package.json
├── tsconfig.json
├── README.md
├── CHANGELOG.md
├── src/
│ └── index.ts
├── tests/
│ └── index.test.ts
└── skills/
└── {name}/
└── SKILL.md
模块化结构(多功能插件):
plugins/{name}/
├── package.json
├── tsconfig.json
├── README.md
├── CHANGELOG.md
├── src/
│ ├── index.ts # 入口装配(只做注册,不堆业务)
│ ├── commands/ # 命令处理
│ ├── middlewares/ # 中间件
│ ├── events/ # 事件监听
│ ├── services/ # 业务服务 / Context 注册
│ ├── models/ # 数据库模型
│ └── crons/ # 定时任务
├── client/ # 控制台前端(可选)
│ ├── index.tsx
│ ├── tsconfig.json
│ └── pages/
├── tests/
│ ├── index.test.ts
│ ├── commands.test.ts
│ └── services.test.ts
├── tools/ # AI 工具声明(可选,*.tool.md)
├── skills/
│ └── {name}/
│ └── SKILL.md
└── lib/ # 编译产物(gitignore)
{
"name": "zhin.js-{name}",
"version": "0.1.0",
"type": "module",
"main": "./lib/index.js",
"types": "./lib/index.d.ts",
"exports": {
".": {
"types": "./lib/index.d.ts",
"development": "./src/index.ts",
"import": "./lib/index.js"
},
"./package.json": "./package.json"
},
"files": ["src", "lib", "client", "dist", "skills", "tools", "README.md"],
"scripts": {
"build": "tsc",
"dev": "tsc --watch",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"prepublishOnly": "pnpm build"
},
"keywords": ["zhin.js", "plugin", "{name}"],
"peerDependencies": {
"zhin.js": "latest"
}
}
入口 src/index.ts 只做装配,不堆业务:
import { usePlugin } from 'zhin.js'
const plugin = usePlugin()
const { addCommand, addMiddleware, useContext, logger } = plugin
// 配置声明
// const getConfig = plugin.declareConfig('my-plugin', Schema.object({...}))
// 注册命令、中间件、事件等
// import './commands/index.js'
// import './services/index.js'
logger.info('{Name} 插件已加载')
关键约定:
usePlugin() 只在模块顶层调用.js 扩展名zhin.js 统一导入框架 APIuseContext() 回调返回清理函数{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"outDir": "./lib",
"rootDir": "./src",
"strict": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"esModuleInterop": true,
"skipLibCheck": true,
"jsx": "react-jsx",
"jsxImportSource": "zhin.js"
},
"include": ["src/**/*"],
"exclude": ["lib", "node_modules", "client", "tests"]
}
在 tests/index.test.ts 中生成基础测试骨架:
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
import { Plugin } from '@zhin.js/core'
describe('{Name} Plugin', () => {
let plugin: Plugin
let root: Plugin
beforeEach(() => {
root = new Plugin('/test/root.ts')
plugin = new Plugin('/plugins/{name}/src/index.ts', root)
})
afterEach(async () => {
if (plugin?.started) await plugin.stop()
})
it('should create instance', () => {
expect(plugin).toBeInstanceOf(Plugin)
})
it('should start and stop', async () => {
await plugin.start()
expect(plugin.started).toBe(true)
await plugin.stop()
expect(plugin.started).toBe(false)
})
})
包含:安装、配置、使用示例、命令列表、AI 工具列表、开发说明。
zhin.js-{name} 或 @zhin.js/{name} 格式type: "module" 已设置exports 字段包含 development 条件导出files 包含 src、lib、skillspeerDependencies 包含 zhin.jsusePlugin() 且在模块顶层