dsh-plugin-dev-mpff
给 dsh(DeepSeek Harness)第三方插件作者用的 skill:从写插件、证明它真的生效,到把它发出去(裸目录束,不能用 dsh plugin add 安装)。An agent skill for dsh third-party plugin authors.
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 10, 2026
- Updated
- Oct 11, 2026
Introduction
dsh-plugin-dev-mpff
这是什么
一个给「dsh(DeepSeek Harness)第三方插件作者」用的 skill —— 覆盖从零写出一个插件、证明它真的生效、把它发出去的全过程。
覆盖什么(任务清单)
- 找 CLI / 安装根 / Node / profile —— 先确认这台机器上的 dsh 环境在哪,再动手
- 写 manifest 与 patch ——
package.json的dsh块、bundle patch 与层序 - 挑扩展点 —— 决定挂工具流水线、前端槽位还是事件
- 从零建包 —— 逐文件写出一个能跑的插件包
- 写前端半边 ——
dsh.client与client.js - 验证真的生效 —— 装上、mount、卸干净,每一步都有判据
- 发布与兼容性声明 —— 发到 npm 时要说清的兼容性面
- 排查静默失效 —— 插件装上了却什么都不做,从哪开始查
- 升级后重新核对 —— dsh 升级之后,哪些事实必须重新确认
- 把 skill 随包发出去 —— 让包里的 skill 真的被宿主发现,而不是装上了却静默不可见
边界在哪(不覆盖什么)
- 不覆盖「使用或配置一个已装插件」—— 那是使用者的事,不是作者的事
- 不覆盖「改 shipped preset」—— 官方发行版自带的组合不在第三方扩展点里
- 不覆盖「dsh 宿主本身开发」—— 宿主主循环与官方自带插件不在范围内
- 不覆盖「安装或放置这个 skill 本身」—— 落点与优先级由宿主自己的 skill 发现规则决定,本仓库不定义落点,只给一个照做用的示例
- 不覆盖「版本与变更历史」—— 本仓只有一处版本面:GitHub Releases 的 tag(不写当前版本号、不列变更历史,版本与变更都从那里读)
- 不覆盖「副本对齐」—— 取用者手上的目录束与仓库之间没有可比版本面(按 clone 取用的自带
refs/tags,是已知例外)
怎么被触发
本 skill 靠 frontmatter 的 description 被模型发现与触发:读者不必记路径,说清「我在写 / 装 / 发 / 查一个 dsh 插件」就够了。
- 触发面(
description里的中文触发词):dsh 插件开发、新建插件、插件包骨架、bundle patch、cordis.patch.yml、cordis 组合、宿主插件、client manifest、前端/UI 插件、扩展点选择、本地安装与验证、npm 发布、插件静默失效排查 - 排除面(
description的Do not use for …一段):使用或配置一个已装插件、改 shipped preset、dsh 宿主本身开发
description 是触发词与排除面的唯一真源,本节只是它的索引。被触发之后,SKILL.md 是唯一入口:路由表与 5 步流程在那里,其余内容(10 册分册、两套模板、闭环夹具、脚本)按需加载。
目录结构
取用 = 把 dsh-plugin-dev-mpff/ 这一层整个拿走(连同 references/、templates/、examples/、scripts/);落点与优先级由你的宿主的 skill 发现规则决定。
落点 = 把 dsh-plugin-dev-mpff/ 这一层整层放进任一被扫描根的顶层,即 <root>/dsh-plugin-dev-mpff/SKILL.md。最省事的是项目级根 <projectRoot>/.dsh/skills/(= 你的会话工作区向上最近含 .git 的祖先,没有就是会话目录本身;不是你刚 clone 下来的这个仓),不想动任何既有 profile 就用它;跨项目常驻则用用户级根 <dshHome>/skills/。根按优先级排序,同名时高优先者胜(宿主文档里叫 rank,数字随宿主版本可能变,以宿主文档为准)。
完整根表与优先级(还有平铺形态 <name>.md)见你宿主自带的 skill 发现文档:dsh 的 skill 提供方包(@deepseek-ai/dsh-skill-filesystem)的「根目录与优先级」一节。
README.md
LICENSE
.gitignore
dsh-plugin-dev-mpff/
├── SKILL.md
├── references/
│ ├── env-discovery.md
│ ├── package-and-assembly.md
│ ├── extension-points.md
│ ├── build-a-package.md
│ ├── frontend-plugin.md
│ ├── verification-loop.md
│ ├── release-and-distribution.md
│ ├── failure-modes.md
│ ├── drift-recheck.md
│ └── skill-shipping.md
├── templates/
│ ├── host-only/
│ │ ├── package.json
│ │ ├── cordis.patch.yml
│ │ ├── index.js
│ │ ├── icon.svg
│ │ └── locale/
│ │ └── en.json
│ └── frontend/
│ ├── package.json
│ ├── cordis.patch.yml
│ ├── index.js
│ ├── client.js
│ ├── icon.svg
│ └── locale/
│ └── en.json
├── examples/
│ └── hello-plugin/
│ ├── package.json
│ ├── cordis.patch.yml
│ ├── index.js
│ ├── client.js
│ ├── icon.svg
│ └── locale/
│ └── en.json
└── scripts/
├── dsh-env.mjs
├── check-plugin.mjs
├── verify-assembly.mjs
├── verify-e2e.mjs
├── lib/
│ ├── dsh-locate.mjs
│ └── skill-scan.mjs
└── tests/
├── paths.test.mjs
├── locate.test.mjs
└── skill-scan.test.mjs