把「写一个 DSH 插件,从想法到开源上架」固化成可复用的 技能 + 模板 + 工具 + 踩坑库。
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
dsh plugin --profile web add DEVbyQIN/dsh-plugin-kit状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:27:46
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
查看扫描证据(共 27 处,展示前 11 条)
- 读取本地文件share/share.mjs:92
const info = await lstat(path); - 读取本地文件share/share.mjs:107
const target = await readlink(path); - 读取本地文件share/share.mjs:110
realpath(raw).catch(() => raw), - 读取本地文件share/share.mjs:111
realpath(expect).catch(() => expect) - 读取本地文件share/share.mjs:114
const broken = !existsSync(raw); - 写入本地文件share/share.mjs:146
await mkdir(join(path, '..'), { recursive: true }); - 删除本地文件share/share.mjs:147
if (current.state !== 'missing') await unlink(path); - 读取本地文件share/share.mjs:155
const entries = await readdir(HUB_SKILLS, { withFileTypes: true }); - 删除本地文件share/share.mjs:392
if (existing === 'symlink') await unlink(into); - 删除本地文件share/share.mjs:412
if (!DRY) await unlink(path); - 删除本地文件share/share.mjs:418
if (!DRY) await unlink(entry);
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
功能亮点
- 插件脚手架生成
- 跨宿主技能校验
- GitHub发布上架
DeepSeek Harness 插件开发套件:一个技能、一份经过测试的仓库模板、一个脚手架、一个跨宿主技能校验器、一个 GitHub REST 发布器,还有一个踩坑合集。
README
由 DeepSeek 最新模型翻译生成展开完整文档(README 剩余 1 节)
dsh-plugin-kit 把「写一个 DSH 插件,从想法到开源上架」固化成可复用的 技能 + 模板 + 工具 + 踩坑库。 这不是一个插件,而是一套方法:知识放在 Markdown 里,自动化交给零依赖 Node 脚本,所以 DSH、Codex、Claude Code、Cursor 都能用同一份。 dsh-plugin-kit/ dsh-plugin-authoring/ ← 技能本体(DSH 与 Codex 都软链这一份) SKILL.md 七个阶段 + 12 条硬规则 + 交付标准 references/ 契约速查 · 踩坑库 · 验收清单 · 发布手册 template/ 一个新插件仓库的骨架(17 个文件,生成即全绿) tools/ 脚手架 · 跨宿主校验器 workflow/ 并行侦察脚本(DSH workflow) share/share.mjs ← 多宿主共享层管理(一份真身,多个入口) 快速开始 git clone https://github.com/QIN-SMART/dsh-plugin-kit cd dsh-plugin-kit 1) 接入 DSH(热监听,免重启) ln -sfn "$PWD/dsh-plugin-authoring" ~/.dsh/skills/dsh-plugin-authoring 2) 接入 Codex(格式相同,可共用同一份) ln -sfn "$PWD/dsh-plugin-authoring" ~/.codex/skills/dsh-plugin-authoring 3) 生成一个新插件 node dsh-plugin-authoring/tools/new-plugin.mjs \ --dir ~/Documents/test/dsh-my-plugin --name dsh-my-plugin \ --title-zh "我的插件" --title-en "My Plugin" \ --desc-zh "一句话中文说明" --desc-en "One line in English" \ --author <你的 GitHub 用户名> cd ~/Documents/test/dsh-my-plugin node --test test/verify.mjs # 生成即全绿(13 项,不用改任何东西) 之后在 DSH 里用 /dsh-plugin-authoring 调用这套方法,在 Codex 里用 $dsh-plugin-authoring。 里面有什么 | 文件 | 作用 | | dsh-plugin-authoring/SKILL.md | 主指令:七个阶段(定义 → 侦察 → 脚手架 → 实现 → 自测 → 文档 → 发布)+ 12 条硬规则 + 交付标准 | | references/contracts.md | DSH 客户端插件契约速查:包结构、ModuleLoader、插槽表、稳定 DOM 钩子、设计令牌、宿主侧能力 | | references/pitfalls.md | 踩坑库:每条都写全「症状 → 原因 → 正确写法 → 怎么验证」,覆盖模块与加载、样式、插槽、元数据、安装、发布、协作、多宿主共享 | | references/checklist.md | 四张验收清单:实现 / 测试 / 开源就绪 / 上架后("外人视角"真装一次) | | references/publish.md | 发布手册:GitHub REST API 路径(含空仓库引导)、npm 2FA 的两种活法、发布后传播延迟 | | template/ | 能跑、能测、能发的插件骨架:真实可用的最小客户端插件 + mock-DOM 自测 + CI 矩阵 + 双语 README + 图标/locale + 发布脚本 | | tools/new-plugin.mjs | 脚手架:按包名生成骨架并替换所有标识符(自动跳过 .tmp / node_modules 残留) | | tools/validate-skill.mjs | 跨宿主校验器:同一份 SKILL.md 要同时通过 DSH 与 Codex 的规则(照抄两边真实实现,含"创作时校验"与"加载时校验"的区别) | | workflow/recon.workflow.js | DSH workflow 脚本:并行三路侦察(契约 / 平台差异 / 分发路径),每个子代理边查边写结论 | | share/share.mjs | 多宿主共享层:一份真身 + 每个宿主一条软链,还能审计"依赖宿主专有工具的技能不该共享" | 七阶段流水线 | 阶段 | 做什么 | 工具 | | 0 定义 | 一句话产品描述;外观类插件先出可交互样例让人选 | visualize | | 1 侦察 | 挂载点在哪个插槽/稳定钩子?会不会降级?平台差异? | references/contracts.md、workflow/recon.workflow.js | | 2 脚手架 | 生成骨架 | tools/new-plugin.mjs | | 3 实现 | 全部行为写进 lib/client.js;硬规则逐条对照踩坑库 | — | | 4 验证 | 离线断言 + 真实 GUI 端到端(CDP 驱动、留截图) | node --test、tools/real-ui-check.mjs | | 5 文档 | 双语 README、CHANGELOG、CI 徽章;安装段落只写对外方式 | references/checklist.md | | 6 发布 | GitHub(REST API,绕开时通时断的 github.com)+ npm | tools/publish-to-github.mjs、references/publish.md | | 7 验收 | 在临时目录按用户命令真装一次 | references/checklist.md | 多宿主共享(一份真身,多个入口) DSH 读 ~/.dsh/skills,Codex 读 ~/.codex/skills,格式相同 —— 所以软链就够了,不需要任何同步: 中央目录(默认 ~/agent-shared,可用 AGENT_SHARED_HOME 覆盖)sh node share/share.mjs add ~/Documents/test/dsh-plugin-kit/dsh-plugin-authoring node share/share.mjs status # 链接对不对、有没有断链、哪些 skill 还没共享 node share/share.mjs audit <目录> # 审计一批 skill:哪些依赖宿主专有工具(不该共享) node share/share.mjs sync <目录> # 只同步可移植的那些 它还会提醒你 ~/.dsh/AGENTS.md 与 ~/.codex/AGENTS.md 是否指向同一份真身(项目级 AGENTS.md 两个宿主本来就共用同一个文件,不需要处理)。 记忆层不适用软链方案:两边都是「数据库 + 自动生成的 markdown 投影」,直接改会被各自的浓缩流程覆盖或损坏 —— 只能走"读出来 → 只抽可移植事实 → 用各家正规写入路径写回"的桥接脚本。 它从哪来 不是凭空写的,是从两个真实插件里长出来的: - dsh-sidebar-marks —— 侧边栏对话标记(整行淡色底 + 行尾彩点 + 独立字号); - dsh-quote-to-chat —— 选中回复文字 → 浮动工具条(添加到对话 / 侧边提问 / 复制)。 两个都已在 GitHub 与 npm 发布,CI 覆盖 ubuntu / windows / macos × Node 22 / 24。踩坑库里的每一条都有真实现场,包括 export default 会静默吃掉 inject、DSH 的 hover 用 background 简写会重置 background-image、插槽会"让位"、空仓库不能用 Git Data API 建 blob、npm 2FA 与系统时钟偏差、以及长任务子代理被传输错误整轮吞掉后如何从会话日志里捞回结论。 验证这个仓库 sh 1) skill 本身要同时被两个宿主接受 node dsh-plugin-authoring/tools/validate-skill.mjs dsh-plugin-authoring/ 2) 模板必须真的能生成、能跑(模板坏了没人会发现,因为它不是被直接执行的代码) node dsh-plugin-authoring/tools/new-plugin.mjs --dir .tmp/dsh-demo --name dsh-demo --desc-zh 自检 node --test .tmp/dsh-demo/test/verify.mjs CI 会在 ubuntu / windows / macos × Node 22 / 24 上跑同样的两件事。 License MIT — 见 LICENSE。
预览分享卡片长什么样 ↓
把「写一个 DSH 插件,从想法到开源上架」固化成可复用的 技能 + 模板 + 工具 + 踩坑库。
相关插件 · 市场 / 管理
这是你的仓库?认领条目