# DSH tool mapping (claude-harness port) Skills speak in actions ("read a file", "dispatch a subagent", "create a todo"). On DeepSeek Harness these actions resolve to the tools below. | Action | DSH tool | |---|---| | Read a file | `read` | | Read several files | `read` once per file, or `grep`/`glob` first | | Write a file | `write` | | Edit a file | `edit` | | Run a shell command | `bash` | | Search file contents | `grep` | | Find files by name | `glob` | | Fetch a URL / web search | `web_fetch` / `web_search` | | Dispatch a subagent | `subagent` (asynchronous) or `workflow` (synchronous fan-out) | | Continue a child | `send_message` | | List children | `list_agents` | | Create / update todos | `todo_write` | | Ask the user | `ask_user_question` | | Load a skill | `skill` | | Present a deliverable | `present` | | Approve a plan | `exit_plan_mode` | | Request an approval | `request_approval {change_id, kind}` — the model initiates it; the owner clicks Approve/Cancel | | Change directory | `working_directory` | | Create a worktree | `create_worktree` when the bundle is enabled, otherwise `bash` with `git worktree` | ## Important differences - **No `superpowers:` namespace.** A skill is named in kebab-case and loaded as `skill({ name: "brainstorming" })`, not `superpowers:brainstorming`. - **`subagent` does not wait.** It returns `started subagent ` and the completion notice arrives later. Do not expect the child's answer in the same tool result. For a synchronous fan-out where the parent needs every result in one call, use `workflow`; for one child with follow-up messages, use `subagent` + `send_message`. - **No implicit model tiers.** There is no built-in `sonnet`/`haiku`/`opus`. Use the provider/model routes that are available in this session. When a skill asks for a model tier, map it to an explicit `provider`/`model` pair from the live catalog. - **Instructions files are `AGENTS.md` / `CLAUDE.md`.** DSH loads them from the harness home, the shared agents home, and the project root down to the working directory. The `CLAUDE.md` files of this harness need no rewrite. - **`todo_write` is the task-tracking action.** Older `TodoWrite` references mean this tool. - **An approval is the owner's click, not the model's claim.** `request_approval({change_id, kind})` starts the flow: the harness writes the approval marker only after the owner answers Approve; Cancel writes nothing. Never treat "I asked" or "the tool was called" as approval. `/approve` in the Claude Code text is the same idea through a slash command. - **Plan mode is a real mode.** Use `exit_plan_mode` to submit a plan; prose agreement does not leave plan mode.