dsh-pleading-draft
Manifest valid??????????(?????????????????????,?????,???????)
dsh-pleading-draft
Boundary: this plugin checks a 起诉状(或申请书)要素核对表 for completeness — that every claim records its factual basis, points at evidence, states its legal basis, that a monetary claim states an amount and a performance deadline, that the document names both parties, that element numbers are unique, and that no placeholder survives. It does not decide whether a claim will succeed, whether it is time-barred, whether jurisdiction is right, whether the evidence suffices, or whether the case should be accepted. Those are the court's determinations and the advocate's substantive judgement.
⚠️ What this plugin can and cannot do
It reads a checklist, not the pleadings, the evidence or the statutes. So it can only check that a column points at evidence or names a provision — never that the evidence suffices or that the provision exists, is in force, or applies.
PL-002andPL-003say so in their own notes. Test the plugin against a pleading whose cited article was repealed: it will pass, because looking up statutes is a different job and one this plugin deliberately does not do.Every
excerptin the rule pack says, in so many words, that the clause text was not obtained. The regime lives in 《中华人民共和国民事诉讼法》(notably its article on what a statement of claim must record) and the Supreme People's Court's interpretation of it. The verification pass could not retrieve verbatim clause text, so the pack states the gap in theexcerptfield itself and keeps every rule atwarnorinfo. When the texts are in hand, replace eachexcerptwith the real clause and raisekindtodirect.
PL-004fires only when an amount column is filled, so a claim for a declaration or for a change of legal relation is not asked for a performance deadline it does not have. AndPL-007catches placeholders only: a claim that is vague without containing【】or待填will pass, because judging whether a claim is stated with the required precision is a legal judgement.
Compatibility
| Surface | Status |
|---|---|
| Harness | Peer range >=0.1.2-rc.1 <0.2.0 || >=0.2.0-0 <0.3.0 — verified to accept both 0.2.0-rc.2 and 0.2.1-alpha.1. engines.dsh is deliberately not declared: it has no reader and cannot reject a host |
| Node | `^22.19.0 |
| Platforms | All (plain ESM; no native code, no network, no model call) |
| Tool mode | Works in native, ptc and both; for several claims use ptc |
What it does
Registers the pleading_draft tool. It reads one pleading-element checklist — the case header plus one row per
claim — applies a versioned rule pack, and returns a report.
| Rule | Check | Severity | Basis kind |
|---|---|---|---|
PL-001 | every claim records its factual basis | warn | principle |
PL-002 | every claim points at evidence | warn | principle |
PL-003 | every claim states its legal basis | warn | principle |
PL-004 | a monetary claim states amount and deadline | warn | principle |
PL-005 | the document names plaintiff and defendant | warn | principle |
PL-006 | element numbers are unique | warn | principle |
PL-007 | the claim column holds no unreplaced placeholder | warn | principle |
Install
dsh plugin --profile <name> add dsh-pleading-draft
dsh --profile <name> --dump-config | grep 'dsh-pleading-draft'
Configuration
| Key | Type | Default | Description |
|---|---|---|---|
rulesFile | string | rules/pleading-draft.yaml | Rule-pack path, relative to the package root |
disabledRules | string[] | [] | Rule ids to stop running; each appears in skipped |
onlyRules | string[] | [] | Run only these rule ids; empty runs every rule |
skipNotes | string | "" | Note appended to every skipped reason |
timeoutMs | number | 120000 | Cooperative tool timeout budget |
Rule-level parameters worth knowing:
PL-004conditionField/requiredFields— which column triggers the deadline requirement; the amount column by default, requiring the performance deadline.PL-005fields— the header fields that must be present; plaintiff and defendant by default. Addcourtandcauseif your checklist records them in the header.PL-007terms— the placeholders to look for.
Material format
The tool accepts JSON or YAML:
caseNo: (2026)某民初 1234 号
court: 某某人民法院
plaintiff: 原告某某公司
defendant: 被告某某公司
cause: 买卖合同纠纷
rows:
- { 序号: '1', 请求要素: 本金给付请求,
诉讼请求: 判令被告支付货款本金人民币 1,250,000 元,
事实依据: 双方于 2025 年 3 月 10 日签订买卖合同,原告已按约交付货物,被告未按期付款,
证据: 证1、证2、证3, 法律依据: 《中华人民共和国民法典》第五百七十七条,
金额: '1250000', 期限: 本判决生效之日起十日内 }
Column names are matched case-insensitively and ignoring spaces, underscores and hyphens; the checklist's own column names are kept, so a finding names the column it read.
Rule sources
Rule data lives in rules/pleading-draft.yaml. The pack's header states the citation gap in full, and each
rule's note repeats the part that matters for that rule. The load-time guard that normally enforces "an
excerpt must be a real quotation of at least eight characters" cannot tell a quotation from a description —
so this pack leans on the header, the per-rule notes and a test that asserts every excerpt admits the gap.
Troubleshooting
PL-003passes on a provision I know was repealed. It cannot check that: it verifies that a legal basis is named, not that it exists or applies. Statute lookup is out of scope by design.PL-002passes although the evidence proves nothing. Same reason: it checks that evidence is pointed at, not that it is sufficient.PL-004does not fire on a declaration claim. That is deliberate — the deadline is required only when an amount is stated.PL-007does not fire on a vague claim. It catches placeholders (【】,待填,TBD), not imprecision.- The plugin installs but the tool never appears. Check that
mainresolves tolib/index.mjsand thatpnpm run buildproduced it; a wrongmainmakes the loader skip the entry silently. dsh plugin addrefuses the package as incompatible. The peer range covers0.1.xand0.2.x; if your runtime sits outside it, grant an explicit exemption:dsh plugin --profile <name> allow-version dsh-pleading-draft@0.1.0 --dsh-version <runtime> --accept-riskcheckreportsmanifest-peersas failed. The static checker compares against a hard-coded peer range that predates the 0.2 line. The runtime enforces peer compatibility at install time, so the declared range is the correct one; this is a known upstream issue indsh-plugin-dev.
Development
pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-pleading-draft # refresh src/shared from ../_shared
The plugin is data-only: src/model.ts declares the table shape, the shared kit supplies the reader and
the check engine, and the rule pack declares every check.
License
Apache License 2.0 © 2026 dsh-pleading-draft contributors.
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 18.3k
CC0-1.0
Python
Oct 10, 2026
by 0xsline
DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.
★ 1.2k
CC0-1.0
Python
Oct 10, 2026
by pax-beehive
Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub
★ 450
MIT
TypeScript
Oct 6, 2026
by xiajiajun516
DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.
★ 176
MIT
TypeScript
Oct 8, 2026
dsh plugin --profile web add dsh-config-managerby yjh051108
推荐组件(非必须):DeepSeek Harness 运行时注入器;已随 dsh-routing-suite 单仓库化保留,本仓库继续维护/发布。
★ 164
TypeScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby jigjoy-ai
A CLI that turns a goal into a pull request - and a sandbox for testing concurrent AI coding agents on the Mozaik runtime.
★ 124
MIT
TypeScript
Oct 2, 2026