decorum-voice-judge
Judge whether the public PROSE reads professionally — tone, brand-voice, clarity, credibility — and record a content-pinned verdict. Use when DECORVM (the professionalization keeper) queues a "prose c
SKILL.md.claude/skills/decorum-voice-judge/SKILL.md
GitHubdecorum-voice-judge
decorum-keeper.py measures the DETERMINISTIC rungs of professionalization — spelling (vendored typo
map), bio/positioning staleness (git authored age), and narrative accuracy (profile claims vs the
VVLTVS contribution mix). It cannot judge whether the public prose reads professionally: tone,
brand-voice, "does this sound like a founder or a first draft." This skill is that missing rung.
The keeper detects when a prose surface's bytes change and no current voice-judgment covers them, and
queues a review (a polish/voice-judge finding, and — when the fleet effector is armed — a
Haiku-tiered task pointing here). This skill reads the changed surface, scores it, and appends a
verdict pinned to the exact bytes it judged (content_sha256) to the register, which clears the
finding. A later edit changes the sha and re-queues review — so judge against the CURRENT bytes only.
Tier: Haiku-first (per the model-tiering policy). Voice scoring is a bounded, cheap judgment; do not escalate unless the prose is genuinely ambiguous.
Steps
Find what's queued. Run
python3 scripts/decorum-keeper.py --sweep --jsonand readegg_face_findings[]for entries withsource: "voice-judge"— each names a changed prosesurface(a repo-relative path likeREADME.mdordocs/positioning/<x>.md). Or take the path from the task context that invoked you.Read the CURRENT bytes and compute the sha. Read the file at that path, then
python3 -c "import hashlib,sys;print(hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest())" <path>. This exact hex is what pins your verdict — record it verbatim.Score the prose 0-5 on four axes (be a demanding reader who represents the target visitor — an investor, a hiring manager, a paying customer):
- tone — confident without bluster; not hedging, not cringe, not LLM-boilerplate ("delve", "in today's fast-paced world", empty superlatives).
- brand_voice — sounds like THIS operator's estate (precise, systems-minded, build-in-public), not a generic template; consistent with the other public surfaces.
- clarity — the value proposition lands in the first sentence; no jargon wall; a stranger understands what this is and why it matters.
- credibility — claims are backed (links, numbers, artifacts); nothing reads as vaporware or over-claim; no unsupported superlatives.
- verdict =
passif every axis ≥ 3 and none is a visible embarrassment; elsefail.
Append the verdict to
institutio/observatory/decorum-judgments.yamlunderjudgments:keyed by the surface path (newest row last). This file PUBLISHES — keep every note public-safe (no PII, no private URLs, no secrets). Row shape:judgments: README.md: - judged_at: "<UTC ISO8601, e.g. 2026-07-23T00:00:00Z>" content_sha256: "<the hex from step 2>" model: "claude-haiku-4-5" # or your handle if a human judged verdict: pass # pass | fail scores: {tone: 4, brand_voice: 4, clarity: 5, credibility: 4} defects: ["opening line buries the value prop under a stack list"] suggested_fix: "lead with the one-sentence outcome; move the stack list below the fold"Confirm it cleared. Re-run
python3 scripts/decorum-keeper.py --sweep— thevoice-judgefinding for that surface should be gone (apassrow whosecontent_sha256matches the current bytes clears it). If it persists, your row's sha does not match the current file — recompute and fix the row.
Laws
- Pin to bytes, not to the path. A verdict without the exact
content_sha256is worthless — it cannot be invalidated on the next edit. Always record the hash of the bytes you actually read. - Public-safe. The register publishes; write no PII, no private URL, no secret in any note.
- Judge current only. If the file changed after you computed the sha, recompute — never record a verdict against bytes you didn't read.
- A
failis a gift. A specificsuggested_fixis worth more than the score; it is what the next fix task acts on.