oh-my-dsh
A multi-agent orchestration layer for DeepSeek Harness (DSH) — ports oh-my-claudecode's orchestration modes onto DSH's native primitives (workflow / subagent / ralph / goal).
Two ways to trigger: natural language (30 skills, auto-loaded by the agent) + slash commands (13 /omd-* commands). Start a session, orchestration is ready.
中文
Quick Start
One command installs all 30 skills + 13 /omd-* commands (the OMC plugin-marketplace equivalent):
dsh plugin --profile web add github:hawk2048/oh-my-dsh
Or from npm (the npm i -g equivalent):
dsh plugin --profile web add @hawk2048/oh-my-dsh
Restart the profile, type /omd to see command candidates, or use natural language ("plan this", "autopilot, build a REST API").
Requirements
Why oh-my-dsh
- Zero configuration — one
dsh plugin add installs everything; the bundle self-registers, no setup wizard.
- Team-first orchestration — Team is the canonical staged pipeline (
team-plan → team-prd → team-exec → team-verify → team-fix), built on DSH's native workflow.
- Natural language interface — describe what you want; the 30
omd-* skills auto-load, nothing to memorize.
- Automatic parallelization — complex tasks fan out across parallel
subagents.
- Persistent execution — Ralph / Autopilot / Ultragoal keep going until verified complete (native
ralph loops + goal cross-turn objectives).
- Zero runtime overhead — adds no new host tools or runtime, just skills over DSH's native primitives, so you keep DSH's own model routing and sandbox.
- Learn from experience —
omd-skillify extracts reusable skills; omd-remember persists durable notes across sessions.
- Real-time visibility — the inline HUD renders live
dsh-ui progress dashboards.
OMC correspondence
Aligned to OMC v5.3.0 (the plan → execute → review → verify pipeline + retained modes):
Prompt-trigger + utility skills (natural-language only, no slash command):
New in this plugin (no OMC counterpart):
| Capability | oh-my-dsh skill | DSH primitive |
|---|
| Pyramid structured expression (conclusion-first + MECE) | omd-pyramid | pure expression discipline + dsh-ui hierarchy mapping (genui) |
ultrawork is retired — OMC removed it in 5.0.0 (along with ultraqa/swarm/pipeline); oh-my-dsh removed it too, folding its "maximum parallel fan-out" into execute/team/ralph.
Key difference: OMC's HUD is a CLI status line, while oh-my-dsh's HUD is an inline dsh-ui dashboard in the reply (stat/progress/timeline/table), because DSH's Web GUI already renders structured UI.
Directory structure
oh-my-dsh/
├── package.json # dsh.bundle manifest (bundle install entry)
├── cordis.patch.yml # bundle patch layer (global commands + skills)
├── index.js # bundle module entry
├── agent.cordis.yml # agent preset composition (= standard + persona + skills + commands)
├── preset.yml # preset display metadata
├── install.ps1 / install.sh # preset manual install scripts
├── LICENSE
├── commands/
│ └── omd-commands.mjs # slash-command producer (ESM plugin)
├── skills/
│ ├── omd-plan/SKILL.md
│ ├── omd-execute/SKILL.md
│ ├── omd-review/SKILL.md
│ ├── omd-verify/SKILL.md
│ ├── omd-team/SKILL.md
│ ├── omd-autopilot/SKILL.md
│ ├── omd-ralph/SKILL.md
│ ├── omd-deep-interview/SKILL.md
│ ├── omd-ralplan/SKILL.md
│ ├── omd-research/SKILL.md
│ ├── omd-autoresearch/SKILL.md
│ ├── omd-ultragoal/SKILL.md
│ ├── omd-pyramid/SKILL.md
│ ├── omd-tdd/SKILL.md
│ ├── omd-deepsearch/SKILL.md
│ ├── omd-deep-analyze/SKILL.md
│ ├── omd-ultrathink/SKILL.md
│ ├── omd-ai-slop-cleaner/SKILL.md
│ ├── omd-doctor/SKILL.md
│ ├── omd-debug/SKILL.md
│ ├── omd-release/SKILL.md
│ ├── omd-remember/SKILL.md
│ ├── omd-cancel/SKILL.md
│ ├── omd-minimal-code-discipline/SKILL.md
│ ├── omd-external-context/SKILL.md
│ ├── omd-visual-verdict/SKILL.md
│ ├── omd-skillify/SKILL.md
│ ├── omd-wiki/SKILL.md
│ ├── omd-help/SKILL.md
│ └── omd-hud/SKILL.md
└── docs/
├── ARCHITECTURE.md
└── RELEASE.md
Install / usage
Two forms — pick one (bundle for global, preset for per-session).
Form A: bundle (primary, the OMC plugin-marketplace equivalent) — installs the 13 /omd-* commands and 30 skills globally, visible to every session in the profile:
# git source (pure JS/Markdown, zero build, no allowBuilds needed; pin with @<tag>)
dsh plugin --profile web add github:hawk2048/oh-my-dsh
# or npm (the npm i -g equivalent)
dsh plugin --profile web add @hawk2048/oh-my-dsh
Restart the profile. One command, pulled by pnpm — no manual tarball download.
Form B: agent preset (optional, per-session) — full session with persona and the orchestration toolkit:
# Windows
.\install.ps1
# macOS / Linux
./install.sh
The installer is non-destructive: it never deletes the preset directory, keeps skills you added locally, and backs up any local edit it would overwrite as <name>.bak-<timestamp>. Re-running is safe and reversible.
Then create a session and pick the "oh-my-dsh 编排" preset (or set it as agent-presets.default). See docs/RELEASE.md.
Usage (in-session)
Two equivalent ways:
Way 1: natural language (the agent auto-loads the matching skill)
plan how to implement X → omd-plan
execute the plan → omd-execute
review my changes → omd-review
verify — tests must pass → omd-verify
team, build a task-management app → omd-team
autopilot: build a REST API → omd-autopilot
ralph the auth refactor until green → omd-ralph
deep interview me — I want to build X → omd-deep-interview
ralplan this architecture decision → omd-ralplan
research X best practices, with sources → omd-research
autoresearch this report to passing → omd-autoresearch
ultragoal: break this long goal into subgoals → omd-ultragoal
structure this as a pyramid / conclusion first / MECE → omd-pyramid
tdd: failing test first → omd-tdd
deepsearch: who calls this function → omd-deepsearch
deep-analyze this architecture → omd-deep-analyze
ultrathink before acting → omd-ultrathink
strip the AI slop → omd-ai-slop-cleaner
self-check the install → omd-doctor
debug this error → omd-debug
release v1.2 with changelog → omd-release
remember this decision → omd-remember
stop the running autopilot → omd-cancel
minimal change, no over-engineering → omd-minimal-code-discipline
read this issue/link → omd-external-context
compare these screenshots → omd-visual-verdict
turn this flow into a skill → omd-skillify
write this to the wiki → omd-wiki
Way 2: slash commands (type /omd for candidates)
| Command | Equivalent skill |
|---|
/omd-plan <task> | omd-plan |
/omd-execute <task> | omd-execute |
/omd-review <task> | omd-review |
/omd-verify <task> | omd-verify |
/omd-team <task> | omd-team |
/omd-autopilot <goal> | omd-autopilot |
/omd-ralph <goal> | omd-ralph |
/omd-deep-interview <topic> | omd-deep-interview |
/omd-ralplan <desc> | omd-ralplan |
/omd-research <question> | omd-research |
/omd-autoresearch <task> | omd-autoresearch |
/omd-ultragoal <goal> | omd-ultragoal |
/omd-pyramid <content> | omd-pyramid |
The agent loads the matching skill, runs that mode, and reports progress via the HUD.
Why skills + bundle/preset, not new tools
DSH's native multi-agent primitives (workflow pipelines/parallel, subagent fan-out, ralph fresh-agent loops, goal cross-turn objectives) already cover OMC's orchestration semantics. oh-my-dsh therefore adds no new host tools or runtime — it distills "which primitive to use, when, how to orchestrate, and how to close out" into reusable skills.
Distribution reuses DSH's native mechanisms: cordis.patch.yml + the dsh.bundle manifest make dsh plugin add install a bundle (global commands + skills), and agent.cordis.yml makes it an agent preset (per-session persona + commands + skills). The slash-command commands/omd-commands.mjs is an ESM plugin that injects DSH's built-in commands registry — zero runtime risk, survives DSH upgrades.
Extending
- Add a mode: add
skills/omd-xxx/SKILL.md (YAML frontmatter with name + description).
- Add a command: append an entry to the
MODES array in commands/omd-commands.mjs.
- Change the persona: edit the
persona row at the top of agent.cordis.yml.
- Make a skill global: use the bundle (
dsh plugin add) or copy skills/* to ${DSH_HOME}/skills/.
License
MIT. Inspired by oh-my-claudecode.