用途:当需要向本仓库新增或修改插件(@deepseek-ai/dsh-* 包)时使用。技能把仓库的扩展点地图、包清单与测试策略压缩为一条有序流程;每步都指明权威文件,完整细节在 references/plugin-dev-sop.md。
触发条件:用户要求添加插件、包、capability seam、tool、hook 或模型提供者时激活,例如“给本项目加一个插件”“新增一个 capability”“加一个模型工具”“封一个 skill”,或 create a dsh plugin / add a package / scaffold a tool / add an llm adapter。仅运行技能、审查代码、或在不新增贡献的情况下修复已有包的 bug 时不激活。
心智模型:一切皆插件,没有特权核心(docs/architecture.md)。插件有两种形式(packages/AGENTS.md “Plugin exports”):函数插件导出 name/inject/Config/apply 且无 default export,或 Service 子类带 default export;两者不可混用。每个贡献都是 effect:ctx.effect() / ctx.on() / ctx.waterfall();registry 的 register() 返回 disposer,因此拆解与热重载可自动回退。
工作流:1) 决定机制与归属:读 docs/architecture.md 的“Where new behavior goes”,从注册 ctx.tools 工具、监听 agent/* 或 tools/* 事件、定义新 capability seam 中选机制;先在 extension-cookbook.md 的 feature→mechanism 映射中查已有机制;可替换能力需具备 Service Definition、Service Provider、Consumer 三个 seam 角色,不可只写一个;在 packages/<group>/ 下选已有分组。2) 脚手架:创建 packages/<group>/<pkg>/,含 package.json、tsconfig.json、src/index.ts、src/types.ts(仅类型)、src/invariant.ts,以及双语 README.md + README.zh.md;遵守 package.json 约束(private、版本与根对齐、type: module、cordis 同时为 peer 与 dev 依赖、精确 files 列表),并在 tsconfig.host.json 或 tsconfig.client.json 之一注册。3) 实现插件:waterfall 监听器必须调用 next() 才能委托,否则短路;类型化事件用声明合并并带 @mode 标签;按角色表命名当前角色;随部署变化的选择应是 Config 字段而非 DEFAULT_* 常量,run() 中显式 resolve(request): Spec;可选服务用 ctx.get(name),跨边界 id 用 Branded<B>;工具遵循 execute() 契约:类型化参数、单一规范 JSON 值、遵守 exec.signal,output.render 负责文字,presenter 保持纯净。4) invariant:每个包拥有 src/invariant.ts,注册 manifest 名并检查一个事件或数据关系,或写明 No runtime invariant: 与原因。5) 测试:每个 registry 有 HMR 安全测试,packages///src 每文件 100% 覆盖,产品可见插件有非单元 REAL-composition 测试,模型或用户可见变更在同一 PR 提供 keyless 快照。6) 文档:README 先写 service API、config、events、扩展点,再写 ## Model Experience 与 ## Known Limitations and Deferred Work 序列,并配 README.zh.md;非平凡变更在同一 PR 加 Agent Note。7) 验证:pnpm install;pnpm run doc-sync;pnpm run constraints && pnpm run typecheck && pnpm run lint;pnpm run build && pnpm run hygiene;随后只运行改动面涉及的检查,不要默认跑全量套件。8) 提交:拆分独立变更;标注 kind/* 及所有相关 area/*;Agent Note 保持在同一 PR。
反馈闭环:用户提出修改意见时,先判断 task-specific(仅本次,不改技能)还是 reusable(跨任务复用);reusable 先定作用域并更新对应 canonical 技能或共享规范,完成规则更新、版本、lint 与分发核验后再应用到当前任务。reusable 修改会使此前的确认与继续失效,完成修改并回读后须停下等待用户下一步,不自动进入发布或提交。
限制:资料未提供具体安装命令之外的依赖版本、平台支持、收费与效果信息;references/skill-composition.md 说明该技能与 dsh-* 技能族的交接方式。