feat(style): give agents a house writing style so their prose is readable - #73
Merged
Merged
Conversation
…able Agents produce a lot of prose — PR bodies, ticket descriptions, review findings, plans, hand-backs — and left unconstrained they write it badly: conclusions buried under process narration, passive voice, hedge stacks, filler, jargon. Humans read all of it while deciding something. Adds templates/STYLE.md, a house style following the Google developer documentation style guide (https://developers.google.com/style): answer first, one idea per sentence, active voice, present tense, condition before instruction, concrete nouns anchored to file:line, cut filler, no metaphor, mark what you didn't verify. Plus target shapes for the artifacts rig actually emits and a self-check. Plumbed like the review catalog: - style.guideFile config key (default .claude/STYLE.md) in the schema, example profile, and docs/config.md. - install.sh delivers it beside REVIEWER.md for all three targets, and the AGENTS.md pointer block names it. - Each persona gains a "How you write" section with the core rules INLINED, not just referenced, so they hold when the file is absent — then role specifics on top (commit/PR shape for coder, finding format for reviewer, observed-vs-inferred for debugger, test naming for qa, ticket titles for architect). The architect's old "Output style" section folds into it. - The nine prose-emitting skills read style.guideFile, with a concrete instruction at the point of writing for the durable artifacts: ticket body (rig-issue), commit + PR body + hand-back (rig-task), plan (rig-plan), writeup (rig-spike), finding format (rig-review). - rig-doctor checks the file exists and can --fix by copying it in; rig-onboard delivers it and sets the key per target. Side fixes in rig-reviewer, which was using jargon the same file now bans: "Blast radius" step renamed to "Affected callers", and a nested backtick span unbroken. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MBaTgFSa8va6PTaFfuSRsz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Agents produce a lot of prose — PR bodies, ticket descriptions, review findings, plans, status hand-backs — and left unconstrained they write it badly. Conclusions buried under process narration, passive voice, hedge stacks, filler, jargon. A human reads all of it, usually in a hurry, usually while deciding something.
Rig already constrains what agents do. This constrains how they report it.
What
templates/STYLE.md— a house style following the Google developer documentation style guide. 13 rules with do/don't pairs:file:line, command, count, or SHA.basically,simply,it's worth noting that) and jargon (blast radius→affected callers).Plus target shapes for the artifacts rig actually emits — commit message, PR body, ticket, review finding, plan, hand-back — and a 5-question self-check. It ships as a starter, so a project can prune or extend it like
REVIEWER.md.How it's plumbed
Same shape as the review catalog:
style.guideFile(default.claude/STYLE.md) inrig.schema.json,rig.config.example.json,docs/config.mdinstall.shcopies it besideREVIEWER.mdfor all three targets (.claude/for claude-code,.rig/for agents-md and pi); theAGENTS.mdpointer block names it## How you writesectionstyle.guideFile--fixcopies it inThe core rules are inlined in each persona, not just referenced, so they hold even when the file is missing — then role specifics on top: commit/PR shape for coder, finding format for reviewer, observed-vs-inferred for debugger, test naming for qa, ticket titles and Decision needed: for architect. The architect's old
## Output stylesection folds into the new one rather than sitting beside it.Skills get a concrete instruction at the point of writing for the durable artifacts: ticket title/body (
rig-issue), commit + PR body + hand-back line (rig-task), plan presentation (rig-plan), findings writeup (rig-spike), finding format (rig-review).Side fixes
rig-reviewerwas using jargon the same file now bans — its Blast radius step is renamed Affected callers, and a nested-backtick span is unbroken.Base branch
Stacked on #72 (
feat/pi-target), notmain. Two edits land indocs/pi.mdand the pi half ofinstall.sh, neither of which exists onmainyet — basing here keeps the pi target's.rig/STYLE.mddelivery in the same change instead of leaving it as a follow-up somebody has to remember.Test plan
bun run test— 67 pass, 0 fail.install.sh --target claude-code,agents-md,pi):.claude/STYLE.mdand.rig/STYLE.mdboth delivered, no-clobber on the second pass,AGENTS.mdblock carries the writing-style paragraph..pi/agents/rig-coder.md) carries the## How you writesection — confirms the frontmatter/body split still flows persona changes through to the pi target.rig.schema.jsonandrig.config.example.jsonboth parse.bun run typecheckfails on this branch, but pre-existing and unrelated:tooling/prepare-smithers-typecheck.sh:15copiessmithers/agents.example.ts, which isn't present in a clean checkout. No TypeScript is touched here.🤖 Generated with Claude Code
https://claude.ai/code/session_01MBaTgFSa8va6PTaFfuSRsz