goodwrite is a linter for engineering requirements and technical documentation, enforcing compliance with the standard for Simplified Technical English (ASD-STE100), requirements-style grammar, and your project-specific glossary of technical terms.

"The great enemy of clear language is insincerity. When there is a gap between one's real and one's declared aims, one turns as it were instinctively to long words and exhausted idioms, like a cuttlefish spurting out ink."

"What is above all needed is to let the meaning choose the word, and not the other way about."

"If you simplify your English, you are freed from the worst follies of orthodoxy. You cannot speak any of the necessary dialects, and when you make a stupid remark its stupidity will be obvious, even to yourself." —George Orwell, "Politics and the English Language" (1946)
CI Rule accountability Security Site Rule coverage License MSRV

Example Output

Running goodwrite check docs/manual.md:

  × nominalization: prefer the verb form
   ╭─[docs/manual.md:14:1]
14 │ Perform an initialization of the flight control system.
   ·            ──────┬───────
   ·                  ╰── ste100/nominalization
   ╰────
  help: STE100 §3.1 — write "initialize" instead of "initialization of"
  suggestion: replace with "Initialize the flight control system." (machine-applicable)

   `ECU` is a glossary synonym; prefer canonical term `controller`
   ╭─[docs/manual.md:22:17]
22 │ Verify that the ECU has completed its startup sequence.
   ·                 ─┬─
   ·                  ╰── glossary/synonym-enforce
   ╰────
  help: replace with `controller`
  suggestion: use canonical glossary term (machine-applicable)

  1 error, 1 warning

Markdown Requirements

<!-- goodwrite:requirement -->
When the pilot presses the button,
the system shall record the event.
<!-- goodwrite:requirement:end -->

<!-- typed variant -->
<!-- goodwrite:requirement:event-driven -->
When voltage drops below 22.0 V,
the controller shall issue an alert.
<!-- goodwrite:requirement:end -->

Typst Requirements

#requirement[
When the pilot presses the button,
  the system shall record the event.
]

#requirement_event[
When voltage drops below 22.0 V,
  the controller shall issue an alert.
]