Skip to content
dsh.fish
Bundle

dsh-project-skill-paths

Project-scoped custom SKILL roots for DeepSeek Harness

Source
NeoRrrr
License
MIT
Updated
Updated 4 days ago

Readme

# DSH Project Skill Paths

Project-scoped custom Skill roots for [DeepSeek Harness](https://github.com/deepseek-ai/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.

[中文说明](README.zh.md)

## 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.yaml` without 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:

```powershell
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](https://github.com/NeoRrrr/dsh-project-skill-paths/releases/tag/v0.3.0), then install it locally:

```powershell
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:

```yaml
# .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`:

```yaml
- 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

```powershell
npm install
npm run check
npm pack --dry-run
```

For local development, install a link into a separate DSH profile:

```powershell
dsh plugin --profile desktop add "link:$PWD"
```

## Uninstall

```powershell
dsh plugin --profile desktop remove dsh-project-skill-paths
```

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:NeoRrrr/dsh-project-skill-paths

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source