OpenGUI Installer for DSH
Core-Mate/OpenGUI
Installs and verifies the latest stable OpenGUI release in a DeepSeek Harness web profile on macOS without disturbing existing plugins or settings.
开发、维护、分发和验证 DeepSeek Harness (DSH) 插件的执行型 Skill。覆盖 host/client 形态判断、bundle/profile 契约、Service 与函数插件、工具、HTTP、持久化、slot、Conversation Node、客户端构建、HMR、GitHub 安装和真实组合验证。
$ npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install NanmiCoder/dsh-auto-mode dsh-plugin-development --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/NanmiCoder/dsh-auto-mode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dsh-plugin-development .claude/skills/dsh-plugin-development && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dsh-plugin-development" agent skill from https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-development into .claude/skills/dsh-plugin-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dsh-plugin-development", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-developmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install NanmiCoder/dsh-auto-mode dsh-plugin-development --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/dsh-auto-mode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dsh-plugin-development .agents/skills/dsh-plugin-development && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dsh-plugin-development" agent skill from https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-development into .agents/skills/dsh-plugin-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dsh-plugin-development", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install NanmiCoder/dsh-auto-mode dsh-plugin-development --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/dsh-auto-mode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dsh-plugin-development .cursor/skills/dsh-plugin-development && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dsh-plugin-development" agent skill from https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-development into .cursor/skills/dsh-plugin-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dsh-plugin-development", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/NanmiCoder/dsh-auto-mode.git --path skills/dsh-plugin-development--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install NanmiCoder/dsh-auto-mode dsh-plugin-development --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/dsh-auto-mode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dsh-plugin-development .gemini/skills/dsh-plugin-development && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dsh-plugin-development" agent skill from https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-development into .gemini/skills/dsh-plugin-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dsh-plugin-development", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install NanmiCoder/dsh-auto-mode dsh-plugin-developmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/NanmiCoder/dsh-auto-mode.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dsh-plugin-development .github/skills/dsh-plugin-development && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dsh-plugin-development" agent skill from https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-development into .github/skills/dsh-plugin-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dsh-plugin-development", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install NanmiCoder/dsh-auto-mode dsh-plugin-development --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/dsh-auto-mode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dsh-plugin-development .opencode/skills/dsh-plugin-development && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dsh-plugin-development" agent skill from https://github.com/NanmiCoder/dsh-auto-mode/tree/main/skills/dsh-plugin-development into .opencode/skills/dsh-plugin-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dsh-plugin-development", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dsh-plugin-development开发、维护、分发和验证 DeepSeek Harness (DSH) 插件的执行型 Skill。覆盖 host/client 形态判断、bundle/profile 契约、Service 与函数插件、工具、HTTP、持久化、slot、Conversation Node、客户端构建、HMR、GitHub 安装和真实组合验证。
Dsh Plugin Development is an agent skill from NanmiCoder/dsh-auto-mode. 开发、维护、分发和验证 DeepSeek Harness (DSH) 插件的执行型 Skill。覆盖 host/client 形态判断、bundle/profile 契约、Service 与函数插件、工具、HTTP、持久化、slot、Conversation Node、客户端构建、HMR、GitHub 安装和真实组合验证。
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Hooks and plugins. It works with DeepSeek, GitHub and npm. The repository describes itself as: Safe automatic permissions for DeepSeek Harness. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 907d663. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitpnpmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dsh Plugin Development loads about 3.8k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,174 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from NanmiCoder/dsh-auto-mode at commit 907d663, republished under its MIT licence (© NanmiCoder). 1,174 words, ~3,815 tokens.
.claude/skills/dsh-plugin-development/SKILL.md (or your agent's skills folder).版本适用范围:本文主体保留 2026-08-13 的历史模板,不代表当前 Harness 的 API。在 AgentTeams 仓库内处理升级时,先读项目根目录
skills/README.md,再使用项目内dsh-upgrade-audit、plugin-upgrade和plugin-test。独立安装此 skill 时不要求这些同伴文件,仍按 §2 取证。下文的dsh-client-runtime、conversationEvents等旧接口须按目标精确 tag 与 npm 产物重新核实,不能直接用于 Alpha.2 或后续版本。
这是正式版导向的执行清单。先判断运行面,再选择官方模板,实现后必须从真实组合和用户安装路径验证。不要把某个项目的偶然实现当成框架契约。
pwd、git rev-parse --show-toplevel、git status --short --branch 确认项目与用户改动。package.json、cordis.patch.yml、tsconfig*.json、构建配置、相关 src/ 和测试。dsh.client,也不要构建 client bundle。行为不确定时按顺序取证,不猜:
node_modules/@deepseek-ai/* 的 package.json、exports、types、README。不要写死本机绝对路径,也不要访问或转述未授权的私有仓库内容。
若提供了 Harness checkout(环境提供或按 §2.3 克隆),优先按插件形态阅读这些模板;路径以 checkout 根目录为基准:
| 目标 | 主参考 | 学习重点 |
|---|---|---|
| Host Service / HTTP | packages/host/webserver | Service、static Config、Service.init、route disposer、连接清理 |
| 最小 client 插件 | packages/client/ui-message-feedback | inject、apply、locale、per-session controller、slot 注册与清理 |
| Slot / Conversation Node | packages/client/ui-conversation + packages/client/ui-slots | SlotMap、slot kind/scope、children 认领、keyed node renderer |
| Bundle 分层 | packages/bundle/base + packages/bundle/web-app | 顶层 patch 数组、行 id 覆盖、整段 config 替换、加载顺序 |
| 简单持久化 backend | packages/storage/storage-json | register → disposer → close、显式 root、并发打开门禁 |
| 崩溃安全日志 | packages/session/session-persistence-jsonl | 原子发布、fsync、并发 no-clobber、torn-tail 处理 |
| 工具插件 | packages/fs/tool-fs | defineTool、schema、render、可选能力挂载 |
| Client 测试 | packages/test-support/client-runtime | jsdom、SlotTestRuntime、mount/dispose、fake service |
复杂插件只用于补证据,不作为起步模板。若要委派只读调研,提示词必须要求给出文件、行区间、契约与最小建议。
官方仓库 https://github.com/deepseek-ai/deepseek-harness 是公开、MIT 许可的可引用证据源。取证须明确目标版本、对应 tag/commit 和 npm 发布状态;不要把默认分支等同于用户安装版本。需要兜底取证时:
选临时目录:用用户或环境提供的目录,例如 SCRATCH="$(mktemp -d)";不要写死本机绝对路径。
复用已有 checkout:核对 remote、HEAD 和工作区状态;用 git show <exact-tag>:<path> 等只读方式检查目标版本,不重置已有 checkout。需要补齐版本对象时 fetch 明确 tag,并保留已有改动。
没有 checkout 时克隆到临时目录(只读取证,无需 pnpm install),随后通过精确 tag/commit 读取文件:
git clone --filter=blob:none https://github.com/deepseek-ai/deepseek-harness.git "$SCRATCH/dsh-official"只克隆官方 deepseek-ai/deepseek-harness;不要访问或转述未授权的私有仓库内容。对克隆内容同样只读分析,不修改。
进入后定位:
AGENTS.md(CLAUDE.md 是它的符号链接):仓库布局、命令与约定一次讲清,是官方给 agent 的入口。packages/README.md 的 group 表确认目标包位于哪个 packages/<group>/<pkg>。README.md 与 src/;取证结论给出文件与行区间。演进兜底:§2.2 的历史模板路径只是索引,一切以目标版本的实际代码和发布产物为准;路径或名称漂移时,用目标版本的 packages/README.md 定位新位置并回报修正。记录目标 tag、解析后的 commit 和实际安装依赖版本;GitHub 有 tag 不等于 npm 已发布,也不代表本项目已通过该版本验收。
package.json.dsh.bundle.patch 指向配置层。$DSH_HOME/profiles/<name>/package.json.dsh.profile.bundles 保存有序 bundle 列表。dsh plugin 创建和维护 profile。不要手写用户 profile manifest。{
"name": "dsh-my-plugin",
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
"exports": {
".": { "types": "./lib/types/index.d.ts", "default": "./lib/index.js" },
"./client": { "types": "./lib/types/client/index.d.ts", "default": "./lib/client.js" },
"./cordis.patch.yml": "./cordis.patch.yml",
"./package.json": "./package.json"
},
"files": ["lib", "cordis.patch.yml", "README.md"], // 目录或显式清单均可;官方仓库常用显式文件清单
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" },
"client": {
"platform": "web",
"inject": ["@deepseek-ai/dsh-client-runtime"]
}
}
}规则:
./client 与 dsh.client。dsh.client.platform: "web" 和真实存在的 exports["./client"]。dsh.client.inject 是随图下发的信息性元数据(预检展示 / HMR diff 用),不决定 client fiber 的激活顺序;预取由 dsh.client.immediately 驱动,真正的依赖等待来自 client bundle 导出的 export const inject(§5.1),两者互不替代。dsh.client.immediately 是仅供启动关键入口使用的可选预取标记;普通第三方插件不要默认开启。dsh.client;历史兼容字段只有在目标正式部署仍明确读取时才添加。files 和 Git/发布产物必须一致;任何入口都不能指向不存在的文件。cordis.patch.yml 必须是顶层数组:
- insert:
- id: my-plugin
name: dsh-my-plugin
config: {}注意:
id 是配置树中稳定的行身份;name 是 Node 可解析的包名或导出路径。id 覆盖前层;目标行的 config 是整段替换,不是深合并,因此覆盖时要重述所需键。cordis.patch.yml → $DSH_HOME/cordis.patch.yml → 命令行 --patch;后者获胜。dsh.bundle 时只会成为普通依赖,不会自动成为 profile 层。普通插件通常导出:
export const name = 'my-plugin'
export const inject = ['tools']
export interface Config { enabled: boolean }
export const Config = z.object({ enabled: z.boolean().default(true) })
export function apply(ctx: Context, config: Config): void {}z 从 @deepseek-ai/schemastery 导入(不是 zod);static Config = Config 引用导出的 schema,与官方内联的 static Config: z<Config> = z.object({...}) 等价。inject 是必需 service;未满足时 fiber 保持 pending,框架会在服务就绪后激活,不要用轮询模拟依赖注入。ctx.get() 判断或 ctx.inject([...], childCtx => ...) 惰性挂载;不要在 apply() 中抢跑兄弟 provider。当插件提供稳定 service 时,参考 host/webserver:
export class MyService extends Service {
static Config = Config
constructor(ctx: Context, config: Config) {
super(ctx, 'myService')
}
async [Service.init](): Promise<void> {}
}Service.init。所有长生命周期资源必须归当前 fiber:
ctx.on() 或 ctx.effect(() => disposer, label)。ctx.inject 重试 + 幂等 guard”,不要重复注册。使用 ctx.tools.register(defineTool(...)):
description 写清何时调用、必要前置条件、失败语义和副作用。parameters 与 output.schema 都用 @deepseek-ai/dsh-tools 的 value-schema DSL(编译后是受支持的 JSON Schema 子集):parameters 是隐式开放对象根、必填用属性内联 required: true;output.schema 声明 canonical 返回值并在注册时被 assertSupportedJsonSchema 强制校验。二者是同一 DSL 的两个面,不是两套语言。output.render 给模型稳定、紧凑、可判定的文本。exec.agent 获取当前会话、工作区和 owner,不从全局进程状态猜。exec.signal;写操作要有幂等、锁或冲突策略。ctx.effect(() => ctx.webServer.register({ kind: 'exact' | 'prefix', path, handler })) 注册;重复 (kind, path) 会抛错。Cache-Control: no-store,可重验证资源使用 no-cache;静态资源使用明确白名单和正确 content type。先判断应复用正式版 storage/session persistence service,还是插件拥有独立介质。无论哪种:
process.cwd() 默认值散落用户数据。link()+unlink() 的 no-clobber 协议,勿用 rename() 静默覆盖。import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
export const inject = ['slots']
export function apply(ctx: ClientContext): void {}SessionId 分桶;连接重置时只重同步已经读过的对象。SlotMap。children 表声明子 slot;声明即占有渲染权,不要争抢别人的 seat。ctx.slots.inject(key, () => ctx.slots.register({ name, children?, store?, locale?, inject?, ...kind 参数 }, Component)) 等待声明;children 同时是子 slot 的认领表(认领即占有渲染权)。kind 参数:keyed 必填 key、list 必填 id(可加 order/label)、chain 必填 select;single/keyed/list 可加 priority 做 cell 隐藏(同 cell 同 priority 会抛错)。向未声明 slot 直接 register 会抛错。renderSlot/renderSlotChain;贡献者不 import owner 的实现组件。选择接缝时先检查当前正式版类型。常见会话 UI 接缝包括:conversation.session.header.actions/.utilities、conversation.view、conversation.chat.node、conversation.chat.commandview、conversation.chat.assistant-actions、conversation.chat.turnTail、conversation.input.dock、conversation.composer.dock、conversation.composer.bar、conversation.input.left/conversation.input.right/conversation.input.plan/conversation.input.model。全局浮层用 shell.overlay(list/root),不要碰 root 单槽。不要仅凭旧文档写 slot 名,以当前正式版 ui-conversation/src/client/contract/slots.ts 的 SlotMap 为准。
Conversation Node 是“事件折叠 + keyed slot renderer”的组合:
uiConversation 放入 inject,并调用 ctx.uiConversation.events.register(definition):match 选择事件;start 创建节点状态;update 按 seq 确定性折叠;buildViewNode 生成稳定的 view node。ChatNodeDataMap/节点 kind 类型。conversation.chat.node 注册相同 key 的 renderer。红线:
match 返回稳定业务 id 和 start|update 角色;节点引擎在当前会话内使用 conversationContextKey(kind, businessId) 去重。跨会话持久化缓存另行把 owner session 纳入 key,不能混成引擎契约。能用语义正确的 slot 就不用 fixed portal。全应用浮层优先注册 shell.overlay(list/root,click-through 直到你的 entry 主动开启 pointer events);确无全局角落 slot 时才 body portal:
data-*,不要耦合哈希 class。no-store、in-flight guard、响应形状校验和 unmount 防护;失败保留最后成功快照。:focus-visible、aria-*、Escape、reduced motion;hover/focus 只预览,click 才固定状态。Host 和 client 使用两个 program;文件名可按项目布局选择,官方仓库用 tsconfig.host.json 与 tsconfig.client.json 两个聚合 program 分别做 host/client 检查:host 排除 packages/client/*/src/** 与 *.client.* 测试;client 聚合含各 client 包的 CSS module 声明、client 测试与构建脚本,共享 leaf 经 project references 进入,每个 packages/client/* 包还各自维护一个 composite tsconfig 做包内类型检查。JSX 使用 .tsx 和 react-jsx;相对 TS import 必须能正确重写为 emitted JS。
这样避免 host session 与 browser runtime 对同名 Context service 的 declaration merge 冲突。
优先复用当前正式版 Harness 的 client tsdown helper或已验证模板,不手写 loader 协议。产物应由构建自动包装为:
window.__ModuleLoader__.load({ id, factory: (require) => { /* bundle */ } })构建必须保留:
style[data-plugin] 注入;lib/ 找回 src/ 资源的路径回退;浏览器模块表只回答正式版平台 seed 模块和明确豁免。规则:
packages/client/web/src/platform.ts 和官方 client 构建配置为准;React、Cordis、slots、web-react、primitives、attachment、schema-form 等由模块表提供。@deepseek-ai/dsh-client-runtime/client 是官方构建配置中明确标注的临时豁免,不是普通平台模块;不要把它泛化为可任意导入 runtime 值的许可。dsh plugin --profile <name> <args...> 是 profile 目录里的 pnpm 转发层,成功后按安装状态和 dsh.bundle 对账 bundle 列表。因此支持 npm、路径、tarball 和 Git:
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:<owner>/<repo>GitHub 分发不要求发布 npm,但必须选择一种构建策略(Git 获取的是源码,不是构建产物):
prepare(官方 turtle-ui 模式);pnpm ≥10 默认拦截 Git 依赖的构建脚本,用户需在 profile 的 pnpm-workspace.yaml 显式 allowBuilds 后重跑 add。这会执行第三方代码,应固定 commit 并只信任已审查仓库。lib/ 提交进 Git;用户无需执行依赖脚本,但非官方推荐路径。README 只给经过全新 profile 验证的推荐命令。安装后重启目标 profile。
tsdown --watch 等构建 watcher 持续重写 lib/client.js;host HMR 只负责 stat 检测文件变化,再通过 rev/SSE 触发 browser fiber 的 dispose/reload。window.__DSH_BOOT__。pnpm typecheck
pnpm build
pnpm test # package.json 声明时运行
pnpm verify # package.json 声明时运行
git diff --check先读取 package.json.scripts,不要假设所有仓库都有同名聚合脚本:官方 Harness 使用 check:ci/check:all 与多个 verify-* gate;第三方插件可自定义 verify。项目级 verify/check 至少覆盖:
ctx.plugin():至少一个测试通过真实 Loader/patch 组合启动,断言用户可见表面。dsh plugin --profile <scratch> add <pkg> 创建非内置 scratch profile,再执行 dsh --profile <scratch> --dump-config,确认 bundle 层、行 id、name、config 和注入顺序;内置 web/headless profile 可由 launcher 初始化。另有 --dump-default-config:只打印 bundle 层、跳过用户层与 --patch,可作坏 cordis.patch.yml 时的恢复诊断。dsh --profile headless "一个小而可判定的任务";不要发明 dsh run 子命令。DSH_HOME/profile。dsh.profile.bundles。--dump-config 必须出现插件层。仓库仍私有时,可把待发布内容复制到临时 Git repo 并提交,再通过 git+file://... 安装;这能验证“Git 获取的内容”而不是当前 checkout 的未提交文件。前提:git 在 PATH、目录是已提交的真实 Git 仓库;若包声明了 prepare,还需在 profile 的 pnpm-workspace.yaml 加 allowBuilds(与 §7.1 相同门禁)。只删除本任务创建的精确临时目录。
完成前逐项确认:
© NanmiCoder, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/dsh-plugin-development of NanmiCoder/dsh-auto-mode.
Open the folder on GitHubat commit 907d663
Dsh Plugin Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dsh Plugin Development this skillNanmiCoder/dsh-auto-mode | 165 | — | ~3.8k | Automated safety check: Pass | MIT | |
| OpenGUI Installer for DSHCore-Mate/OpenGUI | 1.8k | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Plugins ManagementCodeAlive-AI/ai-driven-development | 157 | 1 repos | ~3.1k | Automated safety check: Notes | MIT | |
| Chat SDKdatabuddy-analytics/Databuddy | 1.2k | — | ~2.6k | Automated safety check: Pass | AGPL-3.0 | |
| Context Mode Upgrademksglu/context-mode | 26k | — | ~291 | Automated safety check: Pass | Custom licence | |
| Plugin InstallerIgorWarzocha/Opencode-Workflows | 122 | — | ~1.3k | Automated safety check: Pass | None |
Core-Mate/OpenGUI
Installs and verifies the latest stable OpenGUI release in a DeepSeek Harness web profile on macOS without disturbing existing plugins or settings.
CodeAlive-AI/ai-driven-development
Create, publish, delete, and submit plugins for coding agents (Claude Code, OpenCode, Devin CLI/Desktop).
databuddy-analytics/Databuddy
Build multi-platform chat bots with Chat SDK (chat npm package).
mksglu/context-mode
Update context-mode from GitHub and fix hooks/settings. Pulls latest, builds, installs, updates npm global, configures hooks. Trigger: /context-mode:ctx-upgrade
IgorWarzocha/Opencode-Workflows
Find, install, and configure OpenCode plugins from the catalog or community.
ningbainb/deepseek-harness-desktop
Release and publish the dsh-web-ui monorepo (DSH Web GUI plugin family + skin collection) — bump all packages to one unified version, commit and tag, push the vX.Y.Z tag that triggers the GitHub…
NanmiCoder/dsh-auto-mode
Audit external compatibility between two DSH (DeepSeek Harness) versions and detect reverts, producing an upgrade-report directory; compares git tags with a source checkout, or published npm…
NanmiCoder/dsh-auto-mode
Coordinate multiple DeepSeek Harness plugin Skills across inspection, migration, runtime debugging, heavy dependencies, testing, naming, and release.
NanmiCoder/dsh-auto-mode
A skill your agent uses when creating a DeepSeek Harness plugin, choosing public names for a new external DSH plugin, validating a dsh-plugin.naming.json manifest, checking reviewed central…
NanmiCoder/dsh-auto-mode
A skill your agent uses when writing or reviewing tests for DeepSeek Harness plugins, external DSH plugin packages, or package changes in the deepseek-harness repository.
NanmiCoder/dsh-auto-mode
A skill your agent uses when the user hands over a dsh plugin repository (or a real migration commit / version corridor) and wants its upgrade experience extracted into one auto-graded Harbor…
NanmiCoder/dsh-auto-mode
Package, publish, and distribute DeepSeek Harness (DSH) plugins — npm pack artifact validation, GitHub/npm/hub release-track selection, tarball overrides installs for the unpublished cohort…
Categories
开发、维护、分发和验证 DeepSeek Harness (DSH) 插件的执行型 Skill。覆盖 host/client 形态判断、bundle/profile 契约、Service 与函数插件、工具、HTTP、持久化、slot、Conversation Node、客户端构建、HMR、GitHub 安装和真实组合验证。. Dsh Plugin Development is an agent skill from NanmiCoder/dsh-auto-mode.
Dsh Plugin Development fits situations like: tasks that involve Hooks and plugins.
Run `npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a claude-code`. Or copy the skill folder (skills/dsh-plugin-development in NanmiCoder/dsh-auto-mode) into .claude/skills/dsh-plugin-development in your project. Claude Code loads it when a task matches its description.
Run `npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a codex`. Or copy the skill folder (skills/dsh-plugin-development in NanmiCoder/dsh-auto-mode) into .agents/skills/dsh-plugin-development in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NanmiCoder/dsh-auto-mode --skill dsh-plugin-development -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dsh-plugin-development, .gemini/skills/dsh-plugin-development, .github/skills/dsh-plugin-development and .opencode/skills/dsh-plugin-development in your project.
Going by SKILL.md and its folder, Dsh Plugin Development needs the command-line tools its instructions call (git, pnpm and npx).
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Dsh Plugin Development is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Dsh Plugin Development: OpenGUI Installer for DSH (Core-Mate/OpenGUI, 1.8k stars), Plugins Management (CodeAlive-AI/ai-driven-development, 157 stars), Chat SDK (databuddy-analytics/Databuddy, 1.2k stars) and Context Mode Upgrade (mksglu/context-mode, 26k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
NanmiCoder (a GitHub user) maintains it in NanmiCoder/dsh-auto-mode, which has 165 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on September 29, 2026.
Source: NanmiCoder/dsh-auto-mode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.