
kezboardpj/dsh-skill-loader
31Last commit Aug 15, 2026
dsh-skill-loader DSH plugin
This plugin adds a skill selection chip on the start page, allowing you to choose which skills (name+description) are loaded into the current conversation. Unselected skills become unavailable in that session. The selection persists across restarts via dsh settings.
How to install the dsh-skill-loader DSH plugin
dsh plugin --profile web add https://github.com/kezboardpj/dsh-skill-loader.gitCopying does not run this command. Review the repository and version before installing the dsh-skill-loader DSH plugin.
dsh-skill-loader DSH plugin data source
dsh-skill-loader DSH plugin snapshot date: Aug 16, 2026
discovered
What the dsh-skill-loader DSH plugin can do
- Adds a skill selection chip on the new conversation start page alongside existing chips
- Only selected skills are included in the model's available_skills directory
- Unselected skills are rejected by skill tools, gestures, and catalog commands
- Selection state is stored in $DSH_HOME/settings.yaml, surviving restarts
- Provides /skill-select command to set skills by name, and /skill-unarchive to restore archived sessions
Where the dsh-skill-loader DSH plugin fits
- Organize a large skill library by loading only relevant skills per conversation
- Prevent the model from seeing or using skills that are not needed for the current task
- Create focused environments for different projects by selecting different skill sets
- Recover sessions that were accidentally archived using the skill-unarchive command
Who the dsh-skill-loader DSH plugin is for
- DSH users who maintain many skills and want per-conversation control
- Power users who need to constrain the model's skill access for security or clarity
dsh-skill-loader DSH plugin limitations
- Only works with dsh profiles that have the plugin installed and configured
- Requires the plugin to be restarted after installation (no hot reload)
- The selection chip is only visible on the start page when the session is blank (not started)
- Upgrade from v0.1 requires a repair script to fix corrupted session logs
dsh-skill-loader DSH plugin: from the repository README
Quoted from the kezboardpj/dsh-skill-loader README, the upstream source of the dsh-skill-loader DSH plugin. Copyright remains with the original authors.
- 新建对话的开始页,「工作目录」「agent 预设」chip 旁新增「技能清单」chip;对话开始后自动消失。 - 勾选的 skill 会把其清单条目载入本对话:模型看到的技能目录(`<available_skills>`)只包含勾选的技能。 - 未勾选的 skill 在本对话**不可用**(模型目录、`/名称` 手势与 `skill` 工具都会拒绝)。 - 没有做过选择的对话保持 dsh 默认行为(全部载入)。 - 选择状态存储在 dsh settings(`skill-loader` 命名空间,`$DSH_HOME/settings.yaml`),刷新/重启后依然准确。 > 位置说明:开始页那一行是内置 UI 里硬编码的 JSX,只声明了两个 single 槽位(均被内置选择器占用),插件无法在其中声明第三个槽位。本插件因此在该行内**追加自己的 chip 节点**并用 react-dom 渲染(锚点:`[data-phase="hero"]` 内的 `button[aria-haspopup="menu"]`,由 MutationObserver 在 React 重挂载后自动恢复),仅当当前会话处于 blank(未开始对话)时出现。 ## 命令 | 命令 | 说明 | |---|---| | `/skill-select <name1,name2,...>` | 将本对话的技能清单设为这些技能(逗号分隔;无参数=清空) | | `/skill-unarchive <sessionId1,...>` | 取消归档指定会话,使其重新出现在侧边栏(dsh 界面本身没有取消归档入口) | ## 实现要点 - 目录接管:宿主 `agent/pre-step` 监听器在 dsh-tool-skill 之后运行,丢弃其未过滤目录并发布自己的过滤目录(沿用 `skill-catalog` 来源与 `source.entries` 格式,保证 dsh 自带的历史/摘要逻辑一致,避免每轮重发)。 - 拦截:`tools/pre-execute` 瀑布拒绝未选技能的 `skill` 调用;手势注入按选择过滤。 - 选择状态写入 dsh settings(`$DSH_HOME/settings.yaml`),不写自定义会话事件类型——该 dsh 版本会因未知事件类型拒绝加载会话日志(`SessionFormatUnsupportedError`)。 ## 安装 > `<profile>` 是占位符:换成你的 profile 名(Web 界面默认是 `web`;可用 `dsh --profile <name>` 启动指定 profile)。 从 GitHub 安装(推荐): ```sh dsh plugin --profile web add https:/
Read the full READMERepository license: MIT
dsh-skill-loader DSH plugin questions
How do I install the dsh skill loader plugin?
Run the command: `dsh plugin --profile <profile> add https://github.com/kezboardpj/dsh-skill-loader.git`. Replace `<profile>` with your profile name (default is `web`). After installation, restart the dsh profile. Note that the plugin does not support hot reload; a restart is required.
Why are some skills not showing up in my conversation?
This plugin controls which skills are loaded per conversation. If you haven't selected any skills on the start page, the conversation will load all skills by default (DSH default behavior). Once you make a selection, only the chosen skills are available. Use the `/skill-select` command to change the selection, or open a new conversation to reselect.
I get 'SessionFormatUnsupportedError' when opening an old conversation after upgrading from v0.1. What should I do?
This error occurs because v0.1 stored skill selections as custom session events that the current DSH version cannot parse. You need to run the repair script provided in the repository while DSH is stopped. The script will add an 'ignorable' flag to those events, allowing the session to be loaded. The original file is backed up with a `.bak` extension. After repair, your old conversations will open with default skill loading (all skills), and you can reselect as needed.
Can I use the skill selection feature across multiple DSH profiles?
The plugin's selection state is stored per profile in `$DSH_HOME/settings.yaml` under the `skill-loader` namespace. Each profile has its own settings, so you can configure different skill selections for different profiles. You need to install the plugin separately for each profile using the `--profile` flag.
How do I unarchive a session that I accidentally closed?
Use the `/skill-unarchive` command followed by the session IDs you want to restore. For example: `/skill-unarchive session1,session2`. This command is provided by the plugin and works even if the session was not archived by the skill loader. Note that DSH itself does not have a built-in way to unarchive sessions.