用途:在当前工作区创建一个新的原生 Muse 插件包。仅用于 Muse 原生插件包创建,不用于在其他项目中实现插件类或功能;生成满足请求的最小完整插件,用已安装的 muse CLI 校验,安装留给用户。
主要能力与边界:只在一个新目标路径内操作,绝不修改、合并、删除或替换已有路径;不安装、启用、信任、执行或拉取生成的插件及其依赖;不更新已有插件(更新需单独工作流);不发布或写入全局配置。插件 ID、目标路径、所需能力或必需命令不明确时,先提问。不支持的能力族直接拒绝,不自行发明 schema。
支持的能力族:skills、commands、hooks、mcpServers、reminders。拒绝 tools、agents、outputStyles、settings、apps;自定义模型工具应放在 mcpServers 条目中,而非直接 tools 能力。
可选参考:本技能不依赖参考文件即可完整运行。若 read_skill 返回了 SKILL.md 物理路径且需要更多细节,可用 read_file 查看同级文件 references/native-plugin-contract.md 与 references/capability-examples.json,仅作只读参考,未读取不视为失败。
先澄清:动手前确定可移植插件 ID 与显示名、相对当前工作区的目标路径、请求的能力族与 ID、每个必需产物与命令、以及请求是否触发不支持的能力族、依赖拉取或修改已有路径。缺失事实需集中提问;越界需在变更前拒绝。
ID 与路径规则:插件与能力 ID 需 1 至 80 个 ASCII 字节,以 ASCII 小写字母或数字开头,其后仅用小写 ASCII 字母、数字、.、_、-;首个点之前的基名(不区分大小写)不得为 CON、PRN、AUX、NUL、COM1 至 COM9、LPT1 至 LPT9;不得使用保留 ID:loop、muse-core。产物路径须为插件根下的相对 UTF-8 路径,Manifest 中以 / 分隔;拒绝绝对路径、..、Manifest 值中的反斜杠、符号链接逃逸,以及规范化父目录离开当前工作区的路径。
Manifest 基础:schemaVersion 为 1,name 用可移植 ID,displayName 为人类可读名,version 为 0.1.0,填 description,compat 为 {"source":"native","manifestDir":".muse-plugin"},capabilities 含 skills、commands、hooks、mcpServers、reminders 五个数组。Manifest 位于 .muse-plugin/plugin.json。除非已安装的校验器接受省略且零诊断,否则保留空能力数组。每个请求能力需创建 Manifest 引用的全部路径:skills 需 {id,path,enabledDefault?} 与带合法 frontmatter 的 UTF-8 SKILL.md;commands 需 {id,path,enabledDefault?} 与 UTF-8 Markdown 模板;hooks 需 {id,event,command,timeoutMs?,statusMessage?} 及其 argv 引用的相对命令源;mcpServers 需 stdio 的 {id,transport?,command} 或 HTTP 的 {id,transport:"http",url} 及 argv 引用的相对命令源;reminders 需指定字段并配合 UTF-8 duty 文件,decision 使用 references/capability-examples.json 中的可执行决策对象,含 V1 envelope 与 deliveryRole。
保留目标路径:所有保留步骤成功前不得写入任何产物。解析工作区与父目录为规范路径;要求父目录与拟定目标留在工作区内;拒绝符号链接目标或规范化身份逃逸的父目录;确认目标不存在;通过会话提供的受管 shell 工具,用一次平台原生原子不覆盖目录创建操作,不得用先检查后覆盖。若报告被占用或失败则停止,绝不删除或复用该路径。再次规范化新目录及父目录,确认身份一致且仍在工作区内,再执行首次 write_file。用 write_file 与 edit_file 写 UTF-8 产物,不用 shell 重定向绕过文件工具约束。保留后仅改动新目录。
校验与修正:先校验每个生成的技能目录,用结构化 argv 调用已安装程序(muse skills validate):["muse","skills","validate","<skill-directory>","--json"]。随后运行 muse plugins validate:["muse","plugins","validate","<plugin-directory>","--json"]。仅当进程启动、退出码为零、stdout 为可解析 JSON、顶层 valid 为 true 且 diagnostics 存在且为空时,校验才算干净;警告不算干净。命令缺失、JSON 畸形、超时、拒绝、取消、非零退出、valid:false 或任一诊断均使草稿不完整。每层校验首次失败后最多修正三轮,只编辑新草稿并重跑同一层;第四次失败即该层终止。嵌套技能无效时不得继续整插件校验。
报告:成功时报告规范产物路径、能力与文件清单、嵌套技能校验次数与结果、整插件校验结果,以及未执行的安装建议(结构化 program 与 argv:program 为 muse,argv 为 ["plugins","install","<canonical-plugin-path>"],executed 为 false),并明确说明未执行安装。保留后失败或被拒时,报告草稿路径、失败操作、剩余诊断与未完成的检查,不得声称草稿已创建、有效、完整或可安装。取消将结束运行且不产生后续报告。