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
GitHub-sourced plugins run build scripts on your machine at install time. 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
hust-open-atom-club/oh-dsh★ 161
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
Jayden-X-L/forkprobe★ 65
Compare multiple skills on the same task and pick the winner.
vlln/plugin-registry★ 33
Ecosystem infrastructure: a thin browser console for managing official repository plugins (zero patches) plus a make-dsh-plugin skill for guided plugin development.
forrestchang/dsh-multica-runtime★ 28
Run the dsh runtime on Multica.
DietCokewithSugar/dsh-user-experience★ 18
Finds potential UX issues in your project: automatically reviews React/TypeScript code, pinpoints each problem, and gives concrete suggestions.
omdsh-dev/dsh-plugin-check★ 17
Plugin health checks: manifest protocol / patch format / build traps, zero-dependency and read-only.