dh CLI usage
<sam_cli>
uv run "${CLAUDE_SKILL_DIR}/../../sam_schema/cli.py"
uv run "${KIMI_SKILL_DIR}/../../sam_schema/cli.py"
uv run "${HERMES_SKILL_DIR}/../../sam_schema/cli.py"
</sam_cli>
<dh_scripts>
${CLAUDE_SKILL_DIR}/../../scripts
${KIMI_SKILL_DIR}/../../scripts
${HERMES_SKILL_DIR}/../../scripts
</dh_scripts>
Use the line whose path is absolute. A line still reading ${…} names a variable this harness does
not fill in; pass over it.
When no line is absolute, use the absolute directory the harness supplied with this skill, returned
as skill_root, or used to read this SKILL.md. Then <sam_cli/> is
uv run "<that directory>/../../sam_schema/cli.py", and <dh_scripts/> is
<that directory>/../../scripts.
When no line is absolute and no such directory is stated, report STATUS: BLOCKED naming this
skill, and run no <sam_cli/> command. Use the mcp__plugin_dh_* tools for any operation that has
one.
Wherever a dh skill, agent or reference writes <sam_cli/> plan read …, run your <sam_cli> line
followed by the words written after <sam_cli/>. The path in the line is complete; run it as
written. A path written <dh_scripts/>/name.py is your <dh_scripts> line followed by /name.py.
A dh command written without <sam_cli/>, such as plan read --address …, runs the same way: your
<sam_cli> line followed by the command.
When a <sam_cli/> command fails, run <sam_cli/> plan --help. When that also exits non-zero,
report the exact command and its stderr as STATUS: BLOCKED, and run no other <sam_cli/> command.
For the grouped commands and their options, read command reference.
When a dispatch names a ledger address and attempt, read
the runner contract before its first ledger command.
When returning or consuming an agent's response, load dh:subagent-contract for response
destination and transport status.
When an mcp__plugin_dh_* server failed to connect, read MCP connection check.