Two tools for two failures
lint for structural density and paragraph length. revise for semantic slop like hedging and broken logic.
// Cache resolution — getEntry(cacheKey) is null on a miss; an unguarded read is an 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.
curl -fsSL https://writetighter.douggo.com/install.sh | bashOr with Go: go install github.com/sdougbrown/writetighter/cmd/writetighter@latest
Binaries for all platforms on GitHub Releases.
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 descriptionecho "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 descriptionMore examples on the before/after page if you want to see them. Your models may vary. 😀