DeepSeek Harness Setup
Run ECC on the DeepSeek Harness. Full guide: docs/DEEPSEEK-HARNESS-GUIDE.md.
When to Use
- Installing ECC skills or hooks on a DeepSeek Harness install.
- Deciding which ECC surfaces work on DSH and which do not.
- Debugging a DSH session that does not show ECC skills or does not fire ECC hooks.
How It Works
-
Skills need no conversion. DSH reads
SKILL.mdfrontmatter (name/description) from native skill roots. Link the ECC catalog once:ln -s /path/to/ECC/skills/<skill-name> ~/.dsh/skills/<skill-name>Root priority (project
.dshand.agentsroots beat~/.dsh): skip linking skills whose names already exist in a higher-priority root. Substitute real skill names for the placeholders; the angle brackets are not shell syntax. -
Hooks go through the first-party bridge. Generate a DSH-format config from the canonical ECC hooks file:
node scripts/dsh/generate-hooks-config.js --ecc-root /path/to/ECC --out ~/.dsh/ecc/hooks-dsh.jsonThe generator lower-cases tool-name matchers, prefixes
CLAUDE_PLUGIN_ROOT/ECC_PLUGIN_ROOTinline (the bridge does not export the plugin root), preserves timeouts, and skips events DSH cannot bridge:PreCompact,PostToolUseFailure,SessionEnd. -
Mount with a bare insert in
~/.dsh/profiles/<profile>/cordis.patch.yml:- insert: - id: ecc-hooks-claude-code name: "@deepseek-ai/dsh-hooks-claude-code" config: configPath: /absolute/path/to/hooks-dsh.jsonLoader rules that cost debugging time when learned the hard way: a plain
- id:top-level entry is silently dropped;insertunder an existing non-group id is rejected as "not a group"; first-party plugin packages need no profilepackage.jsonentry. -
Validate by composing, then verify live.
cd ~/.dsh && dsh --profile web --dump-config > /tmp/dump.yml grep ecc-hooks /tmp/dump.ymlCompose exit status stays 0 even when the loader drops or rejects an entry — those problems are only reported on stderr. Confirm the entry id appears in the dump and stderr is empty. A live GateGuard denial on the session's first edit/write/bash is the visible signal the bridge is active.
Updating
git pull reflects into linked skills immediately; regenerate the hooks
config with the same generator command. If the ECC checkout moves, regenerate
(the path is embedded in every hook command) and relink skills.
Limits
| Surface | Status on DSH |
|---|---|
| Skills | Native discovery; workflows may require host adaptation |
| Hooks | 23 command hooks on 5 of 7 bridge events |
| Slash commands | Not available (Claude Code mechanism); workflows covered by skills |
| Agents | Native dispatch unverified; use canonical prompt guidance only after review |
The validated setup here targets the CLI/web profile. Desktop profiles have a separate installation-owned runtime and skill discovery must be verified there independently. Generate hooks only from a reviewed ECC checkout; the linked checkout supplies their runtime.