create-pluginlisted
Install: claude install-skill dootask/skills
# 创建 DooTask 插件
把「我要一个 DooTask 插件」变成一个**结构正确、能装进主程序跑起来**的脚手架,外加一个最小可见的示例页/接口。业务逻辑留给后续开发填充,但骨架的每个文件、每条约定都要正确,这样开发者拿到就能直接迭代,而不是先踩一遍配置坑。
## 核心原则:对照现成同形态插件,别凭空捏
DooTask 的配置约定有文档漂移(例如 `menu_items` 的菜单模式在不同插件里写成 `url_type:` 或 `type:`),照搬过时文档容易出错。**最可靠的做法是:选定形态后,找一个同形态的现成插件作为「参照样板」,逐文件对照它的真实写法来生成**,而不是套死模板。本技能给出的模板是起点,参照样板是校准基准。
**样板与本地参考资料全部用带 `ref:` 前缀的代表词指代**(`ref:` 是命名空间前缀,把登记条目和正文同名普通词区分开),**绝对路径与获取方式统一登记在 `references/samples.md`**(本机有 checkout 就直接读;没有就 `git clone --depth=1` 到可复用临时目录再读;私有/拿不到则回退本技能 references)。见到 `ref:xxx` 时先按它的「获取约定」解析。
常用样板(按形态选,详见 `references/samples.md`):
- 前后端自建镜像型(**默认 JS/TS 全栈首选**):`ref:crm`(**TanStack Start**,扁平布局**与本技能 1:1,优先对照**)、`ref:asset-hub`(**Next.js**,`docs/rules/` 是权威规范)
- 前后端自建镜像型(Go/Python 变体):`ref:approve`(Go + MySQL)、`ref:ai`(Python + Vite 前端)
- 代理 + 上游官方镜像型:`ref:memos`(包在 `dootask-plugin/` 子目录)
- 纯配置 / 复用现成镜像型:`ref:mysql-expose-port`
- 纯前端静态型:参照镜像型,后端换成一个仅托管静态资源的小容器
> 布局:`ref:crm` 就是扁平布局(`<appid>/` 含 `src/` + `.build.yml` + `<版本>/`),**与本技能生成的结构完全一致,优先对照它**。`ref:asset-hub`/`ref:memos` 用 `dootask-plugin/` 包裹布局——照抄它们的 Dockerfile / basePath / nginx / `@dootask/tools` 集成写法即可,目录仍落到扁平结构。
**生成前先读样板**:解析出样板目录后,读它的 `config.yml`(顶层与版本目录)、`docker-compose.yml`、`nginx.conf`、`.build.yml`,对照真实写法来生成。三档都拿不到时,依赖本技能的参照文件并明确告知用户「未读到现成样板,按规范生成,请重点复核」。
其它本地参考资料(同样登记在 `references/samples.md`,按代表词获取):`ref:appstore-docs`(官方插件开发文档)、`ref:tools`(`@dootask/tools` 前端 + Go/Node/Python SDK 源码)、`ref:app-landing`(应用落地目录,只读)、`ref:dootask`(主程序源码)。
## 工作流
按顺序推进,每一步把假