Skip to content

WriteTighter

Your automatic red pen. Fight back against Combat Slop

One real example

// Cache resolution — getEntry(cacheKey) is null on a miss; an unguarded read is an NPE.

revise, kind=code-comment — clarification: "Which specific object or field is being accessed during the 'unguarded read' that triggers the NPE?"

// Cache resolution — getEntry(cacheKey) returns null on a miss. Reading the returned entry without a guard throws a NullPointerException.

Adapted from a real PR review — identifiers changed, the clarification is unedited revise output.

Install

bash
curl -fsSL https://writetighter.douggo.com/install.sh | bash

Or with Go: go install github.com/sdougbrown/writetighter/cmd/writetighter@latest

Binaries for all platforms on GitHub Releases.

Try it in one two lines

bash
echo "The unprompted inclusion of the StoreProvider jest auto-mock was necessary because the context-reading hook required a real StoreContext export to ensure referential stability under tests, specifically to prevent the no-provider fallback from triggering during the array-map execution." |
  writetighter lint --stdin --kind description
bash
echo "The unprompted inclusion of the StoreProvider jest auto-mock was necessary because the context-reading hook required a real StoreContext export to ensure referential stability under tests, specifically to prevent the no-provider fallback from triggering during the array-map execution." |
  writetighter revise --stdin --kind description

More examples on the before/after page if you want to see them. Your models may vary. 😀