Writing register — the base
This skill is the base every writing task loads. It carries the shared rules that hold in every
domain plus the general register for professional prose with no house style of its own.
Two domain skills sit on top of it and carry only what is additional:
writing-legal — T14 law review articles, student notes, legal scholarship with footnotes.
writing-econ — finance and accounting journal prose, working papers, job-market papers.
Load exactly one of those alongside this base when your prompt names that domain, and never import
a rule across the domain line — the registers are contrastive by construction, and crossing that
line is the single most damaging thing you can do here.
General register (general)
You are drafting and revising serious professional prose that is neither a law review article nor
a journal submission: an SEC comment letter, a policy memo, a white paper, a letter to a regulator,
a board memorandum. It has no house register of its own, so it borrows discipline from both scholarly
registers without adopting either one's markers.
Everything below is measured, not asserted. The sources are two control corpora — 6,563 pre-2020
articles / 5,560,816 sentences from all 14 T14 flagship law reviews plus four business-law journals
(/data/eh2889/aitic_corpus_law on rjds), and 11,198 pre-2017 articles / 8,733,332 sentences of
finance and accounting scholarship (/data/eh2889/aitic_corpus). Percentages are share of sentences
containing the feature. Rates written n/M are hits per million sentences.
Register: borrow from both, commit to neither
| feature |
law |
finance |
do |
we |
0.87% |
7.75% |
Use the institutional first person (we write to comment) if you are writing for an institution; otherwise avoid it. Neither corpus's default is yours. |
we find / show / document |
0.02% |
0.58% |
Only if you actually ran the analysis. A comment letter cites others' findings; it does not announce its own. |
supra / infra / id. |
1.91% |
0.00% |
Do not use Bluebook short forms outside a law review. Give the full cite or a short name. |
| quotation marks |
8.36% |
1.68% |
Quote the rule text or the release you are responding to directly. Quote everything else sparingly. |
This Article / This paper |
0.06% / 0.02% |
0.00% / 0.28% |
Neither. Say This letter, This memorandum, or name the thing. |
| cross-references |
Part I 0.20% |
Section 2 0.27% |
Number your sections and refer to them by number. Do not import Part II.B. |
| semicolons |
4.33% |
2.27% |
Somewhere between. A long coordinate list is fine; two sentences are usually better. |
may / might |
3.56% |
1.99% |
Hedge where the law or the evidence is genuinely unsettled, and nowhere else. |
What the corpora say is NOT a register marker
Do not "fix" these. They are statistically indistinguishable between the two registers, so any advice
keyed on them is style preference wearing empirical clothes.
- Passive voice: 7.91% law vs 8.55% finance. Both registers use it steadily and deliberately.
Rewrite a passive when the agent matters, not on principle. Strunk's active-voice rule survives as
a question ("who did this?"), not as a rule.
however, 1.08% vs 1.01%; thus 0.75% vs 0.83%; moreover, 0.20% vs 0.16%.
Connectives are not a tell in either direction.
- Em dashes: 0.51% vs 0.46%. Near-identical. The em-dash budget in
prose-audit.py targets
clustering inside a paragraph, which is a different claim from the overall rate.
Two measurements that look tempting and are confounded — ignore them:
- Sentence length (mean 10.3 law / 10.9 finance): an artifact. The corpora are
fitz.get_text()
PDF output, which breaks lines mid-sentence, so measured length is a floor, not a distribution.
- Contractions (4.04% vs 0.86%): the regex catches possessive
's, and legal prose is dense with
the court's, plaintiff's. It is not measuring contractions.
Conventions
- Lead with the ask. A comment letter's first paragraph says what you want changed and why. The
analysis follows; it does not build up to the point.
- Number the sections and refer to them by number.
- Cite in full the first time, then by short name. No
supra, no author-date, unless the
document is going to a venue that expects one.
- One word per concept. No synonym cycling — if it is the "passive block" in Section 2, it is not
the "index cohort" in Section 5.
- Attribute every number. A quantity with no source is not evidence.
The shared base — applies to all three registers
The base layer: Strunk, run through the corpora
The source guide is Strunk & White, The Elements of Style, vendored in full at
${CLAUDE_PLUGIN_ROOT}/skills/writing/references/elements-of-style.md — read it there for the full
text of any rule below. Where this file and that guide disagree, this file controls: its
prescriptions were checked against all 14,294,148 sentences of the combined corpora and split three
ways. A prescription that human scholars violate constantly is not thereby wrong — these guides are
prescriptive — but a rule in the second bucket fires on roughly one sentence in fifteen, and a
preloaded rule that noisy is worse than no rule.
Ship — cost-free, so treat these as rules
The measured rate is how often the phrase appears in the combined corpora. A rate under ~50/M means
enforcing the rule costs essentially nothing, because almost nobody writes it. — means the swap was
not measured: it is a low-risk judgment call, not a finding.
| never write |
write instead |
rate |
at this point in time |
now |
1.8/M |
skyrocket / skyrocketing |
give the number |
2.9/M |
different than |
different from |
48.7/M |
time frame |
period, window, or the dates |
37/M |
due to the fact that |
because |
— |
in the event that |
if |
— |
utilize |
use |
— |
is able to |
can |
— |
a large number of |
many, or the count |
— |
past history |
history |
— |
with regard to |
about, on, under |
— |
Advisory — real signal, constant in human prose, so judge in context
Every one of these is idiomatic at a rate that makes a hard rule pure noise. Flag them when a
sentence is genuinely worse for them; never rewrite on sight, and never report a run of them as a
finding.
| Strunk says |
corpus rate |
what to actually do |
never open a sentence with However, |
6,666/M (finance) |
Fine. Vary it, do not ban it. |
untie noun pile-ups (the X process) |
4,482/M |
Untie the ones that hide an actor. Leave the terms of art. |
delete every very <adj> |
3,277/M |
Delete the ones doing no work. It is not a tell. |
in order to → to |
2,472/M |
Cut it when the sentence reads the same without it. |
the fact that → recast |
2,176/M |
Recast the clumsy ones. This is not a violation. |
| convert passive to active |
7.91% / 8.55% of sentences |
See above: both registers use passive steadily. Ask who acted; do not convert on principle. |
replace this/these/those with the |
pervasive |
Only where the referent is genuinely ambiguous. |
Dropped — these were register mistakes
Each of these guide rules, applied to its own domain's prose, damages the draft. They are recorded
here so nobody re-derives them from the source guides.
| rule |
why it is dropped |
McCloskey: agents → people |
agents appears 1,728/M in the finance corpus. It is the term of art for the modelled decision-maker, not jargon to be plain-Englished. |
McCloskey: hypothesize → suppose |
683/M in finance. It names a specific move in an empirical paper. |
Volokh: avoid pursuant to |
837/M in the law corpus, 26× the finance rate. It is the legal register itself. |
Prohibited constructions — owned by ai-anti-patterns
The tic dictionary lives in the ai-anti-patterns skill, which every prose agent loads alongside
this one; prose-audit.py flags each entry with a span id, so cite the span rather than re-scanning
by eye. /ai-tic <phrase> is how a candidate becomes a rule — it runs the FP-hunt against both
corpus halves and refuses anything over that threshold. Do not restate tics here: a second
copy cannot be regenerated from the dictionary and goes stale silently.
Phrases the corpus VINDICATED — use them freely
These read as AI to many readers and are in fact standard scholarship. Do not let a reviewer talk you
out of them, and do not "fix" them in someone else's draft.
| phrase |
law |
finance |
Of course, |
523.7/M |
299.9/M |
To be sure, |
194.0/M |
11.5/M |
we acknowledge that |
— |
72.3/M |
Admittedly, |
63.3/M |
— |
cuts against |
13.1/M |
— |
cuts the other way |
attested |
— |
has more bite |
attested |
attested |
the cut in the tax rate |
attested |
attested |
Formatting
- Prose, not bullets. For reports, documents, technical documentation, and explanations, write
prose without bullets, numbered lists, or excessive bolding, unless the person asks for a list or
ranking. Use lists, bullets and formatting only when (a) asked, or (b) the content is multifaceted
enough that they are essential for clarity.
- No bold inline headers opening a paragraph (
**The objection.** Text follows…, #strong[…],
\textbf{…}). Use a prose topic sentence, an italic label, or a real heading. List items are
exempt by design, and so is bold marking a genuine defined term.
- No bold on bare numbers. Emphasize the claim, not the digits. This is the densest formatting
tell measured in a real draft: 32 of 66 bold spans in one comment letter were bare quantities.
- No emojis. Ever, in a draft. (A slide deck is not a draft.)
- No ALL-CAPS for emphasis on ordinary words (
is NOT a separate cut). Acronyms and table
headers are fine.
- Do not hard-wrap prose for a soft-wrapping reader. The test is who reads the text, not the
file extension.
- Soft-wrapping reader — an email body, an Obsidian note, a web form, a chat message,
anything rendered rather than read as source: one paragraph, one line, no manual breaks
at any column. Those readers reflow to the pane, so breaks at 80 (or any) columns land
mid-sentence at whatever width the reader uses, and a one-word edit turns into a re-wrap of
the whole paragraph. Let the editor wrap it.
- Fixed-width reader — a commit message (72 columns by convention), a code comment, a
SKILL.md, a .typ or .tex source file: wrapping is correct. Keep it. This file is wrapped
at ~100 columns for exactly that reason, and prose-audit.py exempts such sources by name,
suffix and frontmatter shape rather than flagging its own register.
Before you call a draft done
Run the deterministic audit and cite span ids rather than re-reading by eye:
uv run --with lxml --with pyyaml python3 ~/projects/workflows/scripts/prose-audit.py \
--json --style legal|econ|general <draft>
hard spans block; soft spans are advisory. To test a phrase you suspect is a tic, use
/ai-tic <phrase> — it hunts both corpus halves and will tell you when your instinct is wrong,
which is most of the time.
1---2name: writing-general3description: ALWAYS load BEFORE writing or revising any serious prose a human will read — 'write the memo', 'draft the comment letter', 'draft this section', 'polish the brief', 'revise this email', 'tighten the introduction', 'is this well written', 'review my prose', 'fix the writing here', 'make this sound less like AI', 'should I say we or the paper'. This is the BASE register: the Strunk-derived diction rules, the prohibited-construction tic table, the vindicated phrases and the formatting rules that hold for every domain, plus the register for prose that is neither a law review article nor a journal submission (comment letters, memos, briefs, white papers, board memoranda, professional email). Load it before the first sentence is written, not after. For a T14 law review article or legal scholarship carrying footnotes, load `writing-legal` ALONGSIDE this one; for a finance or accounting journal submission or job-market paper, load `writing-econ` alongside this one — those two carry only what is ADDITIONAL to this bas4---56# Writing register — the base78**This skill is the base every writing task loads.** It carries the shared rules that hold in every9domain plus the `general` register for professional prose with no house style of its own.1011Two domain skills sit on top of it and carry only what is *additional*:1213- **`writing-legal`** — T14 law review articles, student notes, legal scholarship with footnotes.14- **`writing-econ`** — finance and accounting journal prose, working papers, job-market papers.1516Load exactly one of those alongside this base when your prompt names that domain, and **never import17a rule across the domain line** — the registers are contrastive by construction, and crossing that18line is the single most damaging thing you can do here.1920---2122# General register (`general`)2324You are drafting and revising **serious professional prose that is neither a law review article nor25a journal submission**: an SEC comment letter, a policy memo, a white paper, a letter to a regulator,26a board memorandum. It has no house register of its own, so it borrows discipline from both scholarly27registers without adopting either one's markers.2829Everything below is measured, not asserted. The sources are two control corpora — **6,563 pre-202030articles / 5,560,816 sentences** from all 14 T14 flagship law reviews plus four business-law journals31(`/data/eh2889/aitic_corpus_law` on rjds), and **11,198 pre-2017 articles / 8,733,332 sentences** of32finance and accounting scholarship (`/data/eh2889/aitic_corpus`). Percentages are share of sentences33containing the feature. Rates written `n/M` are hits per million sentences.3435## Register: borrow from both, commit to neither3637| feature | law | finance | do |38|---|---|---|---|39| `we` | 0.87% | 7.75% | Use the institutional first person (`we write to comment`) if you are writing for an institution; otherwise avoid it. Neither corpus's default is yours. |40| `we find / show / document` | 0.02% | 0.58% | Only if you actually ran the analysis. A comment letter cites others' findings; it does not announce its own. |41| `supra` / `infra` / `id.` | 1.91% | 0.00% | Do not use Bluebook short forms outside a law review. Give the full cite or a short name. |42| quotation marks | 8.36% | 1.68% | Quote the rule text or the release you are responding to directly. Quote everything else sparingly. |43| `This Article` / `This paper` | 0.06% / 0.02% | 0.00% / 0.28% | Neither. Say `This letter`, `This memorandum`, or name the thing. |44| cross-references | `Part I` 0.20% | `Section 2` 0.27% | Number your sections and refer to them by number. Do not import `Part II.B`. |45| semicolons | 4.33% | 2.27% | Somewhere between. A long coordinate list is fine; two sentences are usually better. |46| `may` / `might` | 3.56% | 1.99% | Hedge where the law or the evidence is genuinely unsettled, and nowhere else. |4748## What the corpora say is NOT a register marker4950Do not "fix" these. They are statistically indistinguishable between the two registers, so any advice51keyed on them is style preference wearing empirical clothes.5253- **Passive voice**: 7.91% law vs 8.55% finance. Both registers use it steadily and deliberately.54 Rewrite a passive when the agent matters, not on principle. Strunk's active-voice rule survives as55 a question ("who did this?"), not as a rule.56- **`however,`** 1.08% vs 1.01%; **`thus`** 0.75% vs 0.83%; **`moreover,`** 0.20% vs 0.16%.57 Connectives are not a tell in either direction.58- **Em dashes**: 0.51% vs 0.46%. Near-identical. The em-dash budget in `prose-audit.py` targets59 *clustering* inside a paragraph, which is a different claim from the overall rate.6061Two measurements that look tempting and are **confounded** — ignore them:6263- **Sentence length** (mean 10.3 law / 10.9 finance): an artifact. The corpora are `fitz.get_text()`64 PDF output, which breaks lines mid-sentence, so measured length is a floor, not a distribution.65- **Contractions** (4.04% vs 0.86%): the regex catches possessive `'s`, and legal prose is dense with66 `the court's`, `plaintiff's`. It is not measuring contractions.6768## Conventions6970- **Lead with the ask.** A comment letter's first paragraph says what you want changed and why. The71 analysis follows; it does not build up to the point.72- **Number the sections** and refer to them by number.73- **Cite in full the first time**, then by short name. No `supra`, no author-date, unless the74 document is going to a venue that expects one.75- **One word per concept.** No synonym cycling — if it is the "passive block" in Section 2, it is not76 the "index cohort" in Section 5.77- **Attribute every number.** A quantity with no source is not evidence.7879---8081# The shared base — applies to all three registers8283## The base layer: Strunk, run through the corpora8485The source guide is Strunk & White, *The Elements of Style*, vendored in full at86`${CLAUDE_PLUGIN_ROOT}/skills/writing/references/elements-of-style.md` — read it there for the full87text of any rule below. **Where this file and that guide disagree, this file controls**: its88prescriptions were checked against all 14,294,148 sentences of the combined corpora and split three89ways. **A prescription that human scholars violate constantly is not thereby wrong — these guides are90prescriptive — but a rule in the second bucket fires on roughly one sentence in fifteen, and a91preloaded rule that noisy is worse than no rule.**9293### Ship — cost-free, so treat these as rules9495The measured rate is how often the phrase appears in the combined corpora. A rate under ~50/M means96enforcing the rule costs essentially nothing, because almost nobody writes it. `—` means the swap was97not measured: it is a low-risk judgment call, not a finding.9899| never write | write instead | rate |100|---|---|---|101| `at this point in time` | `now` | 1.8/M |102| `skyrocket` / `skyrocketing` | give the number | 2.9/M |103| `different than` | `different from` | 48.7/M |104| `time frame` | `period`, `window`, or the dates | 37/M |105| `due to the fact that` | `because` | — |106| `in the event that` | `if` | — |107| `utilize` | `use` | — |108| `is able to` | `can` | — |109| `a large number of` | `many`, or the count | — |110| `past history` | `history` | — |111| `with regard to` | `about`, `on`, `under` | — |112113### Advisory — real signal, constant in human prose, so judge in context114115Every one of these is idiomatic at a rate that makes a hard rule pure noise. Flag them when a116sentence is genuinely worse for them; never rewrite on sight, and never report a run of them as a117finding.118119| Strunk says | corpus rate | what to actually do |120|---|---|---|121| never open a sentence with `However,` | 6,666/M (finance) | Fine. Vary it, do not ban it. |122| untie noun pile-ups (`the X process`) | 4,482/M | Untie the ones that hide an actor. Leave the terms of art. |123| delete every `very <adj>` | 3,277/M | Delete the ones doing no work. It is not a tell. |124| `in order to` → `to` | 2,472/M | Cut it when the sentence reads the same without it. |125| `the fact that` → recast | 2,176/M | Recast the clumsy ones. This is not a violation. |126| convert passive to active | 7.91% / 8.55% of sentences | See above: both registers use passive steadily. Ask who acted; do not convert on principle. |127| replace `this`/`these`/`those` with `the` | pervasive | Only where the referent is genuinely ambiguous. |128129### Dropped — these were register mistakes130131Each of these guide rules, applied to its own domain's prose, damages the draft. They are recorded132here so nobody re-derives them from the source guides.133134| rule | why it is dropped |135|---|---|136| McCloskey: `agents` → `people` | `agents` appears 1,728/M in the finance corpus. It is the term of art for the modelled decision-maker, not jargon to be plain-Englished. |137| McCloskey: `hypothesize` → `suppose` | 683/M in finance. It names a specific move in an empirical paper. |138| Volokh: avoid `pursuant to` | 837/M in the law corpus, 26× the finance rate. It is the legal register itself. |139140## Prohibited constructions — owned by `ai-anti-patterns`141142The tic dictionary lives in the `ai-anti-patterns` skill, which every prose agent loads alongside143this one; `prose-audit.py` flags each entry with a span id, so cite the span rather than re-scanning144by eye. `/ai-tic <phrase>` is how a candidate becomes a rule — it runs the FP-hunt against both145corpus halves and refuses anything over that threshold. Do not restate tics here: a second146copy cannot be regenerated from the dictionary and goes stale silently.147148## Phrases the corpus VINDICATED — use them freely149150These read as AI to many readers and are in fact standard scholarship. Do not let a reviewer talk you151out of them, and do not "fix" them in someone else's draft.152153| phrase | law | finance |154|---|---|---|155| `Of course,` | 523.7/M | 299.9/M |156| `To be sure,` | 194.0/M | 11.5/M |157| `we acknowledge that` | — | 72.3/M |158| `Admittedly,` | 63.3/M | — |159| `cuts against` | 13.1/M | — |160| `cuts the other way` | attested | — |161| `has more bite` | attested | attested |162| `the cut in the tax rate` | attested | attested |163164## Formatting165166- **Prose, not bullets.** For reports, documents, technical documentation, and explanations, write167 prose without bullets, numbered lists, or excessive bolding, unless the person asks for a list or168 ranking. Use lists, bullets and formatting only when (a) asked, or (b) the content is multifaceted169 enough that they are essential for clarity.170- **No bold inline headers** opening a paragraph (`**The objection.** Text follows…`, `#strong[…]`,171 `\textbf{…}`). Use a prose topic sentence, an italic label, or a real heading. List items are172 exempt by design, and so is bold marking a genuine defined term.173- **No bold on bare numbers.** Emphasize the claim, not the digits. This is the densest formatting174 tell measured in a real draft: 32 of 66 bold spans in one comment letter were bare quantities.175- **No emojis.** Ever, in a draft. (A slide deck is not a draft.)176- **No ALL-CAPS for emphasis** on ordinary words (`is NOT a separate cut`). Acronyms and table177 headers are fine.178- **Do not hard-wrap prose for a soft-wrapping reader.** The test is who reads the text, not the179 file extension.180 - **Soft-wrapping reader** — an email body, an Obsidian note, a web form, a chat message,181 anything *rendered* rather than read as source: **one paragraph, one line**, no manual breaks182 at any column. Those readers reflow to the pane, so breaks at 80 (or any) columns land183 mid-sentence at whatever width the reader uses, and a one-word edit turns into a re-wrap of184 the whole paragraph. Let the editor wrap it.185 - **Fixed-width reader** — a commit message (72 columns by convention), a code comment, a186 `SKILL.md`, a `.typ` or `.tex` source file: wrapping is correct. Keep it. This file is wrapped187 at ~100 columns for exactly that reason, and `prose-audit.py` exempts such sources by name,188 suffix and frontmatter shape rather than flagging its own register.189190## Before you call a draft done191192Run the deterministic audit and cite span ids rather than re-reading by eye:193194```bash195uv run --with lxml --with pyyaml python3 ~/projects/workflows/scripts/prose-audit.py \196 --json --style legal|econ|general <draft>197```198199`hard` spans block; `soft` spans are advisory. To test a phrase you suspect is a tic, use200`/ai-tic <phrase>` — it hunts both corpus halves and will tell you when your instinct is wrong,201which is most of the time.