DSH Project Skill Paths
Project-scoped custom Skill roots for DeepSeek Harness. The plugin finds the nearest Git project for each session cwd, reads .dsh/skill-paths.yaml, and adds those directories to that project's Skill discovery.
Features
- Configure any number of project-relative Skill roots.
- Add and remove paths from the DSH Desktop settings card.
- Use
.to target the current DSH workspace or select a project directory. - Reload changes to
.dsh/skill-paths.yamlwithout restarting DSH. - Reject absolute paths and
..paths outside the project by default. - Keep every project's configuration inside that project.
Install
Install the tagged GitHub release into the Desktop profile:
dsh plugin --profile desktop add github:NeoRrrr/dsh-project-skill-paths#v0.3.0
Alternatively, download the prebuilt dsh-project-skill-paths-0.3.0.tgz asset from the v0.3.0 release, then install it locally:
dsh plugin --profile desktop add .\dsh-project-skill-paths-0.3.0.tgz
Restart DSH Desktop after the initial installation. The plugin requires DSH >=0.1.1-rc.2 and Node.js ^22.19.0 || >=24.0.0.
Configure a project
Open Settings → Plugins → Plugin configuration → Project Skill Paths. Enter . for the current DSH workspace or select a project directory, then add or remove Skill roots and save.
The settings card writes this file at the detected Git project root:
# .dsh/skill-paths.yaml
version: 1
skillPaths:
- .codex/skills
- tools/AI/claude/skills
Each entry is resolved relative to the project root. A Skill root may contain either <skill-name>/SKILL.md or <skill-name>.md, following the built-in DSH filesystem provider's naming and frontmatter rules.
Safety and scope
The plugin reads Skill files only while DSH resolves Skills for a session. It writes only the selected project's .dsh/skill-paths.yaml when you save the settings card. It does not read credentials, make outbound network requests, or modify Codex configuration.
By default, absolute paths and paths that escape the project are rejected. To explicitly allow shared paths outside a project, override the plugin row in the profile's cordis.patch.yml:
- id: project-skill-paths
config:
allowExternalPaths: true
DSH patch configuration replaces the row's complete config value rather than deep-merging it.
Priority and reload behavior
Configured paths use rank 250. Built-in project roots remain ahead of them, while configured project paths take precedence over global and user-level roots with the same Skill name:
| Source | Rank |
|---|---|
<project>/.dsh/skills |
100 |
<project>/.agents/skills |
200 |
| This plugin's configured roots | 250 |
Global customSkillDirs |
300 |
| User-level roots | 400/500 |
The plugin watches the project YAML file for creation, changes, and deletion. Skill directory contents continue to use DSH's built-in filesystem watcher.
Development
npm install
npm run check
npm pack --dry-run
For local development, install a link into a separate DSH profile:
dsh plugin --profile desktop add "link:$PWD"
Uninstall
dsh plugin --profile desktop remove dsh-project-skill-paths
No comments yet. Be the first to write one.