name: dsh-prose-standard
Write enough to preserve the contract, then remove reasoning transcripts, repetition, and decoration. A contract is an obligation, invariant, precondition, postcondition, or compatibility promise that a caller, callee, implementer, producer, or consumer relies on. This skill owns editorial judgment and required prose coverage; use dsh-doc for placement, budgets, bilingual pairs, and documentation gates, and dsh-trim-cot-leakage for hunting and fixing reasoning-transcript leakage. It is guidance, not a script.
Treat contract, boundary, shape, surface, seam, gate, and vocabulary as terms to check before use, not banned words. First ask whether the exact rule, API, field set, type, validation, timing point, component split, or failure states the fact better. Keep a term when it names the exact technical subject, including caller/callee contracts and security/process boundaries.
Comments describe non-obvious contracts or rationale that code cannot express; they do not restate what code already implies.
Require an explicit scope. If it is missing, report the required input and stop; do not infer a repository-wide scope or begin an interview.
Accept mode: automatic | interactive; default to automatic. Enter interactive mode only when the user explicitly requests questions or calibration.
mode controls questions, not write authority. Review and audit tasks report findings without editing; explicitly requested write, fix, or trim tasks apply clear changes.
Always exclude vendor/ from discovery, review, and edits, even when the requested scope is the whole repository. Do not follow a symlink into it. Put exclusions after inclusion globs so a later include cannot re-admit it: for example, end ripgrep commands with --glob '!vendor/**', and give Git commands an explicit :(exclude)vendor/** pathspec. If the requested scope contains only vendor/, report that no eligible files remain.
Also exclude .agents/notes/archived/ from prose review and edits. Archived Agent Notes are frozen snapshots; inspect an exact target only to understand a historical inbound citation, never to modernize its prose or outbound links.
Treat generated catalogs, snapshots, and fixtures as derivative. Trace every consumer before editing: source JSDoc may also feed a generated model-visible catalog. Edit the owning source or scenario first, then regenerate every derivative. When a generator extracts a summary from owner prose, make the extracted sentence complete for that surface. Bilingual pairs have no permanent owner: either language may be the authored side for an update. Follow the lightweight routine path, update the counterpart minimally, and re-record the pair.
Before editing, identify every proposition in the passage. Preserve each relevant:
Remove adjectives, repetition, and narration only when every factual clause survives and the result is clearer. A smaller word count alone is not an improvement.
Keep a complete local contract at the point of use: behavior, failure, ownership, and consequence that a caller or maintainer needs there. Aggressively link to the owning document for architecture, rationale, algorithms, history, or extended examples. One explanation has one home; essential contract facts may repeat locally.
Keep non-obvious rationale when omitting it could plausibly cause misuse or an incorrect simplification. Otherwise state the consequence and link the rationale home.
This is not a one-way shortening pass. Add or restore prose when code, types, and structure do not communicate a required contract below. Do not add a comment when those facts are already obvious locally.
verify-client-ui-i18n. Update the owning runnable snapshot for model-visible text and repository-required GUI evidence. If the authorized scope has no owning scenario, leave the wording unchanged and report the deferral; do not silently fold it into a prose-only edit.Preserve searchable mechanism names and meaningful modal, temporal, or negative emphasis. Normalize decorative emphasis only.
AGENTS.md files. Do not inspect unrelated branches.git diff --check, and behavior tests for visible strings. Verify the final diff contains no vendor/ path and report any accidental vendor match rather than claiming a clean exclusion history.A case is borderline only when at least two versions satisfy the complete-proposition rule but trade accepted principles, and this skill does not already resolve the tradeoff. A rewrite with one proposition-preserving answer is not borderline.
In automatic mode, apply clear edits when authorized and report genuine borderline cases without asking questions. Do not weaken a proposition to make progress.
In interactive mode, group analogous passages under the governing principle. Present two or three viable versions, recommend one, and state the factual or structural difference. Do not offer inferior distractors. Use the user's requested channel; when calibrating a PR through inline comments, place the recommended provisional version in the diff and attach the alternatives to that exact line.
After the user decides, distill the principle and versions into the examples, without PR history or reviewer narration, and apply the learned rule to every analogous passage in scope.