Reusable Markdown prompt profiles for DeepSeek Harness with per-turn model selection, argument substitution, and state restoration.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:BrambleXu/dsh-prompt-profile
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README

Reusable Markdown prompt profiles for DeepSeek Harness. A profile can select a provider, model, and reasoning effort for one turn, render command arguments into its body, and restore the previous selection afterward.
Why this exists 💡
Model choice and review instructions are often repeated across sessions. dsh-prompt-profile turns those combinations into small, reusable Markdown profiles that can be invoked for one turn and then leave the Agent's previous model selection intact.
Features ✨
- Discover profiles from user and project directories, with project profiles taking precedence.
- Substitute positional arguments into profile bodies with shell-style placeholders.
- Select a provider, model, and reasoning effort for one turn.
- Restore the previous Agent selection automatically or opt out per profile.
- List available profiles and invoke nested profiles by slash-separated names.
Install 📦
dsh plugin --profile demo add ./dsh-prompt-profile
Create a user profile under ~/.dsh/prompt-profiles/ or a project profile under <repo>/.dsh/prompt-profiles/:
---
description: Deep code review
provider: deepseek
model: deepseek-reasoner
reasoningEffort: high
restore: true
---
Review $1 for correctness, regressions, and missing tests. Extra context: ${@:2}
Project profiles override user profiles with the same relative name.
Use 🚀
/prompt-profile list
/prompt-profile review src/index.ts "focus on cancellation"
Nested files use slash-separated names. For example, .dsh/prompt-profiles/review/security.md is review/security.
Supported placeholders:
| Placeholder | Value |
|---|---|
$1, $2, … |
One positional argument |
$@, @$, $ARGUMENTS |
All arguments |
${@:N} |
Arguments from position N |
${@:N:L} |
L arguments from position N |
Frontmatter 🧾
| Field | Required | Meaning |
|---|---|---|
description |
No | Text shown by /prompt-profile list |
provider |
With model |
Harness provider route |
model |
With provider |
Provider-owned model ID |
reasoningEffort |
With provider and model |
Adapter-owned reasoning effort ID |
restore |
No | Restore the prior selection after the turn; defaults to true |
Omit both provider and model to use the current agent selection.
Configure ⚙️
- id: dsh-prompt-profile
name: dsh-prompt-profile
config:
userDirectory: ~/.dsh/prompt-profiles
projectDirectory: .dsh/prompt-profiles
Develop 🧑💻
pnpm install
pnpm run check
Scope 🎯
Version 0.1 intentionally omits prompt chains, loops, skill injection, subagents, worktrees, and best-of-N orchestration. Those features should be added only when Harness extension points can preserve their lifecycle and durable-session semantics.
License 📄
MIT
Credits 🙏
The core idea comes from pi-prompt-template-model. This first Harness-native release focuses on the smallest useful unit: deterministic discovery, argument substitution, scoped model routing, and restoration.
Links
More in this category
yjh051108/dsh-routing-suite★ 7000
One repository, three parts: a runtime injector for DSH plugin packages (inject, hot-reload, unload, promote a dev staging tool to the front, route self-heal, plus a settings-page plugin manager that lists, unloads and drags folders in to internalize), a task-aware reasoning-mode router agent preset (router-standard / router-spec / router-react), and a graded two-level task protocol whose six tools (commit_star, lock_stage, revise_do, edit_plan, mark_task, redteam_verdict) pin task state to disk. The injector implementation ships in-tree, so the install carries its own behaviour rather than a dependency list.
strukto-ai/mirage#dsh★ 3663
Swaps the filesystem and bash providers for a mirage virtual workspace: file tools and shell commands run over mounted resources (RAM, S3, Redis, Slack, Gmail, Notion, Postgres) instead of the host disk, with per-mount read/write/exec modes, per-command sandbox routing (monty, pyodide, quickjs in process; docker, e2b, daytona remote), and installed CLIs (git, gh, slack, linear, ntn, gws, or one you register) as head words in the virtual terminal.
hust-open-atom-club/oh-dsh★ 325
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
weijiafu14/pi2dsh★ 206
Pi Host ABI compatibility engine: after one install, unmodified Pi extensions from npm mount as native DSH plugins with `dsh plugin add <pi-package>`. Verified end to end on stock DSH with pi-mcp-adapter (full MCP manager: OAuth, resources, prompts, MCP Apps, elicitation, sampling), @tintinweb/pi-subagents, pi-code, pi-hermes-memory and pi-background-tasks; `pi2dsh inspect` reports a package's compatibility before installing.
lire1131/dsh-undo-savepoint★ 165
Undo/redo & rollback system for DSH: every config change is auto-snapshotted; undo/redo/restore to any version from the WebUI or the offline CLI/GUI tools (works even when DSH fails to boot).
Fishquito7/dsh-skill-mcp-panel★ 152
Manages DSH skills and MCP servers from the web settings: skill cards with hot enable/disable, workspace scopes, groups, batch migration and drag-and-drop import, plus stdio/HTTP MCP CRUD with connection tests, secret redaction and the unified dsh-panel CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.