DSH composer UI for searching current-session user-invocable skills and inserting the verified slash command into the draft without sending.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:konglong87/dsh-skills-input
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
This plugin publishes its README in Chinese only.
dsh-skills-input
在 dsh composer 里搜索并选择 Skill,把真实调用指令安全地放进草稿。
面向不熟悉命令的用户:看名称、读描述、选中 Skill,确认草稿后再发送。
它也可以理解为 dsh 的技能选择器、Skill 浏览器和斜杠命令入口,帮助不熟悉命令的用户发现当前会话可用的工作方式。
安装
1. 安装插件
在已经安装 dsh 的环境中执行:
dsh plugin --profile web add github:konglong87/dsh-skills-input
2. 安装依赖
本插件采用方案 A:复用现有 Skill Explorer。请同时安装并启用一个真正提供下面接口的 Skill Explorer 组件:
GET /api/dsh-skill-explorer/list?cwd=<当前会话 cwd>
然后重启 web profile:
dsh --profile web
需要指定端口时:
dsh --profile web --port 3080 --no-open
重要:这里要求的是提供
/api/dsh-skill-explorer/list接口的 Skill Explorer。 不要假定所有名为 “Skill Manager” 的插件都兼容。本插件不会扫描磁盘,不会新建 Skill 数据库,也不会提供 Skill 管理后台。
项目简介
dsh-skills-input 是一个独立的 dsh composer 插件,在输入框右侧增加“选择 Skill”按钮。
它读取当前会话可见的 Skill 目录,展示真实的 Skill 名称和描述;用户选中后,插件把宿主实际识别的 /skill-name 调用指令写入草稿。原有内容会保留,消息不会自动发送,最终发送权始终交给用户。
亮点
| 亮点 | 说明 |
|---|---|
| 低门槛选择 | 用可搜索列表替代记忆斜杠命令,直接查看真实名称和描述 |
| 上下文隔离 | 按当前会话 cwd 和项目根目录过滤,不把其他工作区的 Skill 混进来 |
| 只展示可手动调用项 | 过滤 userInvocable === false 的模型专用 Skill,不编造权限标签 |
| 复用官方上下文 | 直接复用 Skill Explorer 的目录接口,不扫描磁盘、不维护第二份 Skill 数据 |
| 真实宿主语法 | /skill-name 已从 dsh 源码和真实页面验证,发送后由宿主注入 Skill instructions |
| 草稿优先 | 保留原有草稿、不自动发送;重复选择同一个 Skill 不会重复插入 |
| 歧义保护 | 草稿首个非空命令行已有其他斜杠命令时,提示冲突并停止插入 |
| 故障可识别 | 依赖缺失、接口失败、空目录分别呈现,不把依赖问题伪装成“没有 Skill” |
| 适合日常使用 | 支持搜索、刷新、键盘操作、焦点恢复、移动端和暗色模式 |
| 独立且易维护 | client、catalog、model、panel 分层,不修改 dsh 核心,也不依赖 dsh-input-list 运行时 |
效果
以下截图来自真实 dsh 页面,使用隔离测试环境和无外部副作用的测试 Skill。
使用
- 打开 dsh 对话页面,点击输入框右侧的“选择 Skill”。
- 在搜索框输入名称片段,使用鼠标或键盘选择目标 Skill。
- 查看真实名称和描述后确认选择。
- 插件把
/skill-name写入当前草稿,并保留原有内容。 - 检查草稿,确认无误后由用户自行发送。
键盘操作:
| 按键 | 操作 |
|---|---|
↑ / ↓ |
在结果中移动 |
Enter |
选择当前 Skill |
Escape |
关闭面板并恢复按钮焦点 |
V1 采用单选模型,一次只插入一个 Skill 调用指令。列表和草稿都不会被插件持久化。
常见问题
这是 Skill 管理器吗?
不是。插件只负责发现和选择当前已经加载的 Skill,不负责安装、编辑或删除 Skill。
它会自动执行 Skill 吗?
不会。它只把真实的 /skill-name 斜杠命令写入草稿,用户确认后再发送。
它和 dsh-input-list 有什么区别?
dsh-input-list 管理用户自己保存的常用文本和提示词模板;dsh-skills-input 选择 dsh 宿主已经加载的 Skill。
为什么列表为空?
本插件采用方案 A,需要启用真正提供
/api/dsh-skill-explorer/list 接口的 Skill Explorer。缺少依赖时,插件会显示依赖提示,而不是把错误伪装成空列表。
兼容边界
必须提供的接口
Skill Explorer 接口返回的目录至少需要包含:
- 顶层:
cwd、projectRoots、groups - 分组:
groups[].skills[] - Skill:
name、description、userInvocable - 项目级 Skill:建议提供
path和level
插件会使用 projectRoots、当前会话 cwd 和 Skill 的路径信息判断作用域。当前列表只保留:
- 当前会话上下文内的 Skill
userInvocable !== false的 Skill- 名称格式符合 dsh Skill 调用规则的 Skill
- 去重后的 Skill 名称
宿主契约
以下行为已经从当前 dsh 源码和真实页面核实:
- 插槽:
conversation.input.right - Client inject:
slots、sessions - 当前工作目录:
sessions.list.getSnapshot().byId[sessionId].cwd - 请求鉴权:浏览器同源请求,使用
credentials: "same-origin",不添加自定义鉴权头 - 草稿写回:composer 提供的
inputActions.setDraft() - Skill 调用:首个符合边界的
/skill-name文本,由 dsh 在agent/pre-step阶段注入 Skill instructions
不做什么
本插件只负责“发现、选择、回填草稿”,不负责 Skill 生命周期管理。它不提供:
- Skill 安装、编辑或删除
- Skill 管理后台
- 独立 Skill 数据库
- 多 Skill 编排
- 自动发送
- dsh 核心补丁
开发与验证
git clone https://github.com/konglong87/dsh-skills-input.git
cd dsh-skills-input
npm ci
npm run build
npm test
npm pack --dry-run
目录职责:
| 路径 | 职责 |
|---|---|
src/client.jsx |
Cordis 注入、插槽注册和生命周期清理 |
src/catalog.js |
Skill Explorer 请求入口和目录接口封装 |
src/model.js |
纯函数:标准化、作用域过滤、去重、搜索、草稿处理 |
src/panel.jsx |
按钮、列表、状态、键盘交互和焦点管理 |
src/styles.css |
桌面、移动端和暗色主题样式 |
src/host.js |
dsh Host 入口 |
tests/ |
目录解析、过滤、搜索、草稿和卸载测试 |
验证记录见 docs/VERIFICATION.md,截图索引见 screenshots.json。真实 dsh 验收覆盖桌面端、移动端、草稿保留、重复选择、依赖缺失、接口失败、工作区切换、宿主识别和插件卸载。
更新与卸载
更新 GitHub 安装:
dsh plugin --profile web add github:konglong87/dsh-skills-input
查看已安装插件:
dsh plugin --profile web list
卸载插件:
dsh plugin --profile web remove dsh-skills-input
更新或卸载后请重启对应的 dsh profile。
版本与协议
- 当前版本:
0.1.0 - 版本记录
- 验证记录
- MIT License
反馈问题时请附 dsh 版本、插件版本、安装方式、复现步骤和脱敏截图。请不要上传登录 token、API Key 或个人会话内容。
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-skill-explorer★ 9959
Skill center for the dsh web GUI: browse all loaded skills grouped by source, enable or disable model invocation, create new skills, and delete into a recoverable trash.
iflytek/skillhub#dsh★ 5358
Browse and search a SkillHub registry and manage local skill installation, updates, and removal inside DeepSeek Harness. Targets DSH 0.2.0-rc.2 and 0.2.1-rc.2; not yet compatible with 0.2.1-rc.3.
QingYunA/answer-me-with-html★ 5085
Answers a question with a one-page visual HTML explainer: the model writes a short Markdown draft and the bundled `am` CLI builds the page, with flow, sequence, tree, timeline and ER diagrams, tables and callouts.
hyhmrright/brooks-lint★ 1556
Provides six code quality skills for code review, architecture audits, technical debt, test quality, health dashboards, and remediation.
GanyuanRan/Aegis★ 1411
Software-engineering method pack for coding agents, with skills for baseline-first planning, systematic debugging, prompt hygiene, verification before completion, and repair/retirement tracking.
superdesigndev/superdesign-skill★ 935
Design skill for UI and marketing graphics on the Superdesign canvas: reads the repo for context, extracts its design system, then generates and iterates branchable design drafts, flow pages, and reusable components through the Superdesign CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.