dsh-coding-discipline
Coding-discipline enhancement for DeepSeek Harness (dsh).
This plugin ships two pieces that work together:
- A
Codingagent preset (id: coding) — the shippedstandardpreset's plugin list with the same tools and a strengthened persona: verify-first edits, minimal diffs, real test runs, no test gaming, spec-only verification, and evidence-based reports. No new tools, no permission changes, so it is comparable with the baseline and safe to switch back. - An embedded
coding-disciplineskill — the full procedure behind the preset contract, registered at host level so any agent in the profile can discover and load it on demand. Project/user skills with the same name still win by rank.
Install
dsh plugin --profile web add dsh-coding-discipline
From GitHub instead of npm:
dsh plugin --profile web add github:JinBeiCN/dsh-coding-discipline
Install from the release tarball if neither route is available:
dsh plugin --profile web add https://github.com/JinBeiCN/dsh-coding-discipline/releases/download/v1.0.0/dsh-coding-discipline-1.0.0.tgz
Then use it:
- New sessions: choose Coding in the agent-preset selector. To make it the default for new sessions, set it in Settings → General (Agent preset).
- Any session: the
coding-disciplineskill is listed in the skill catalog; load it before coding work. Existing sessions are not changed by installing the bundle.
What the contract covers
The persona and skill state the same rules in two layers:
- read the task, acceptance criteria, tests and relevant code before editing; reproduce the failure and name the
root cause as
file:linefirst; - make the smallest change, keep public interfaces, no unrelated refactors or formatting churn;
- never edit, delete, weaken, skip or xfail tests, and never hardcode expected values;
- ground every API, import and parameter in the repository or installed dependencies before using it;
- run the repository's real verification command after the last edit and iterate until it passes;
- verify only from the repository's own spec/tests/code — do not speculate about hidden tests, graders or benchmarks, and do not read parent/sibling directories or git history for hints;
- for specs with more than ~15 numbered acceptance clauses, keep a clause → implementation → verification checklist; for performance/concurrency work, report measured evidence once instead of re-running stress loops;
- end with evidence: files changed, root cause, exact commands with observed results, unverified parts, risks.
Measured behaviour (plain statement)
The preset was evaluated against an uninjected baseline on a self-built 16-task coding benchmark with
deepseek-flash (reasoningEffort=max), 18 isolated agent runs per arm:
- solved rate was identical (15/16 vs 15/16; the single failure was one ambiguous hidden-test assertion that both arms failed in one seed and passed in another);
- injected instructions were observed in 18/18 enhanced runs and the skill was loaded in 18/18; no run tampered with tests or read outside its working directory;
- token usage and wall-clock differences were not statistically significant — run-to-run variance dominated.
So this plugin is a guardrail, not a capability booster: it changes how work is done and reported, and it matters most for weaker models, lower reasoning effort, long specs, or review-heavy delivery. It does not make an already-saturated model produce more correct code in our benchmark.
Compatibility
dsh>=0.2.1-rc.2, Node.js>=18.- Web and Desktop profiles with the agent-preset registry (the shipped
standardpreset must be present, which it is in the defaultwebprofile). Headless/ACP profiles have no preset registry and do not load the preset part; the embedded skill part is registered wherever the bundle's host row is mounted.
Size and token cost
- Persona: 325 words, charged per request only in sessions that select the
Codingpreset. - Embedded skill: 7,600 characters of body (7,923 including frontmatter), below the standard preset's 8,000-character skill budget; it is only charged when a session loads the skill.
- No tools are added or removed.
Uninstall
dsh plugin --profile web remove dsh-coding-discipline
Disabling the bundle (or removing it) leaves existing sessions untouched until they are re-created.
Development
node --input-type=module -e "import('./index.js').then(m => console.log(m.name, m.inject))"
index.js exports a plain Cordis plugin (name, inject, apply) that registers the skill from
skills/coding-discipline/SKILL.md; cordis.patch.yml inserts that host row plus the Coding preset.
No build step and no runtime dependencies.
License
MIT — see LICENSE.
No comments yet. Be the first to write one.