How it behaves
dsh-claude-compat discovers a project root using the markers in projectRootMarkers, whose default is [".git"]. It reads .claude/skills/**/SKILL.md, .claude/commands/*.md, and .claude/rules/*.md, plus the corresponding paths under userClaudeDir, defaulting to ~/.claude.
Skills and commands are exposed through the DSH skill provider. A skill’s name and description enter the model-visible catalogue, and its body is fetched when the model uses the skill tool. Command files also appear in the slash menu. Nested skill directories are flattened, such as gitnexus/gitnexus-guide becoming gitnexus-gitnexus-guide; invalid frontmatter names fall back to the directory name. DSH requires kebab-case skill names.
Rules are concatenated and injected verbatim inside a <system-reminder> envelope as a user-role message at the front of the message array once per session. Project and user rules with the same basename are deduplicated in favour of the project file. CLAUDE.md and AGENTS.md are not read by this plugin.
Configuration
| Key |
Default |
Purpose |
enableSkills |
true |
Enables the skills and commands provider |
enableRules |
true |
Enables rule injection |
rulesMaxBytes |
65536 |
Caps project rule text |
userRulesMaxBytes |
65536 |
Caps ~/.claude/rules text |
projectRootMarkers |
[".git"] |
Project-root discovery markers |
skillRank |
50 |
Rank for project skills |
skillSource |
project-claude |
Project catalogue source tag |
userSkillRank |
700 |
Rank for user skills |
userSkillSource |
user-claude |
User catalogue source tag |
userClaudeDir |
~/.claude |
User-level Claude directory |
Project entries use rank 50, DSH bundled skills use 600, and user entries use 700; lower rank wins.
Requirements and session timing
The README requires DSH with a profile, such as web, and a project using Claude Code directory conventions. All three directory types are optional. Skills are reconciled into the catalogue without a restart, while rules are read for each new session and cached per session working directory. Editing a rule during a session therefore affects the next session.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub