Repository navigation
Add noun-as-verb and negated-object rules to plain-writing - #258
Merged
Merged
Conversation
haacked
marked this pull request as ready for review
October 25, 2026 03:42
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.
Prose written with
plain-writingstill trips readers in two ways the skill doesn't name.It uses a word as a verb when the code uses it as a noun. On PostHog/posthog#114053, the approvals code uses "gate" as a noun (
approval_gate, "the flag write gate"). The review comments said "nothing gates targeting edits on an experiment's flag" and "the flags a rollout ungates". A reader has to reread those sentences. The Finish check "Does each sentence make sense without a second pass?" is too general to catch this.It also negates the noun instead of the verb when "no" is on the object: "Deleting the queue changes no actions" where a person writes "Deleting the queue doesn't change any actions". The skill already bans "Nothing" or "No X" as the subject, but not as the object.
This adds a bullet to the Write Clearly section, next to the bullet about invented labels. It says not to use a word as a verb when the reader knows it as a noun from the code or domain. It also says not to stack nouns when the reader can take one of them as the sentence's verb, as in "flag approval policies". It's a separate bullet because "Keep established technical terms" lets "gates" pass the invented-labels rule. The existing negative-subject bullet now covers the object too. It keeps "no" when the sentence says what exists or what something has or lacks, as in "takes no arguments", because those read naturally.
I didn't add linter checks for either rule. A regex for noun-as-verb would mostly flag sentences that read fine, and one for "verb + no + noun" would flag natural phrases like "takes no arguments" and "returns no rows". The copy under
address-pr-reviews/references/comes fromsync-portable-skills.sh.Test plan
plain-writing-lint.pyreports no warnings on the editedSKILL.mdtest_plain_writing_lint.py,test-plain-writing-contract.sh,test-portable-skills.sh, and theaddress-pr-reviewsportable skill test passsync-portable-skills.sh --checkpasseshttps://claude.ai/code/session_01UmdWuUE96sY8TAsrLwMoq9