Model or dataset
yzhao062/agent-style avatar
yzhao062/agent-style

agent-style: 21 Writing Rules Loaded Into Coding Agents at Generation Time

21 writing rules for AI coding and writing agents. Drop-in for Claude Code, Codex, Copilot, Cursor, and Aider, so their output reads like a tech pro.

682 stars36 forksPythonLicense varies

At a glance

What is it?
agent-style is a ruleset, not a linter: 21 English writing rules shipped as agent configuration for Claude Code, Codex, Copilot, Cursor, and Aider. The split between literature-derived rules and field-observed LLM failure modes is the interesting part, and the benchmark claims in the README are the part to check before trusting it.
Who is it for?
Adopt agent-style if you already route documentation, design docs, commit messages or paper drafts through a coding agent and you want the rules to apply while the text is generated rather than in a separate editing pass. Skip it if your output is fiction, marketing copy or non-English prose, since the README places those outside scope, and skip it if you need an enforceable check in CI, because this is a prompt-time ruleset and not a linter.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 12 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem agent-style Targets: Style Drift Inside the Generation Step

Most style tooling runs after the text exists. A linter, a grammar checker or a human editor reads finished prose and marks problems. agent-style takes the opposite position. The README describes it as rules formatted for agents to follow at generation time, not as a post-hoc linter. That distinction is the whole product. If the rules are present in the agent's context, the model is supposed to avoid the pattern rather than have it flagged later. The intended audience is narrow and explicit: people using Claude Code, Codex, Copilot, Cursor or Aider to produce API docs, design docs, READMEs, runbooks, commit messages, error messages, technical blog posts, postmortems, issue reports, research papers and grant proposals. The scope table lists those as in scope and puts fiction, poetry, marketing copy, long-form narrative non-fiction and non-English prose out of scope. The README is also direct about the second out-of-scope category: any context where rhythm or affect matter more than precision. That is an unusually honest boundary for a style project, and it tells you the author has thought about where the ruleset actively hurts.

Two Rule Groups Read as Peers, and Why That Matters

The 21 rules are not one list. RULE-01 through RULE-12 are canonical, distilled from Strunk and White, Orwell, Pinker, and Gopen and Swan, and each rule cites its source by chapter, section or essay rule. The README states the author verified every citation against the original works. RULE-A through RULE-I are field-observed, logged from AI output across papers, grant proposals, technical documentation, agent configs and code releases between 2022 and 2026. The README is explicit that these are not literature-backed. They capture LLM-specific failure modes the canonical set misses. RULE-H, citation discipline, is the one the README labels critical. The design decision worth noting is that the agent reads both groups as equal peers, with no group annotated as higher priority. That is a real choice with a cost. A rule like RULE-A, which forbids converting prose into bullets unless the content is a genuine list, has no classical citation behind it and no universal agreement. Mixing it into the same undifferentiated block as Strunk and White's advice on needless words means the model cannot weight them differently. Whether that matters depends on how much you trust the field observations. The README does not give a mechanism for tuning that balance.

What the Field-Observed Rules Actually Catch

The nine field-observed rules read like a list of complaints compiled by someone who has edited a lot of model output. RULE-B bans em and en dashes as casual sentence punctuation. RULE-C bans starting consecutive sentences with the same word. RULE-D targets the transition-word habit, naming "Additionally", "Furthermore" and "Moreover" specifically. RULE-E bans closing every paragraph with a summary sentence. RULE-I prefers full forms over contractions in formal technical prose. RULE-F requires consistent terms and forbids redefining abbreviations mid-document. RULE-G specifies title case for headings, with articles, short prepositions and coordinating conjunctions left lowercase. These are mechanical and checkable by eye, which is probably why they were observed in the first place. RULE-H is the outlier. Supporting factual claims with citation or concrete evidence is a judgement call, not a pattern match, and it is the rule most likely to be ignored by a model under pressure to produce fluent text. The README flags it as critical and does not claim it is reliably enforced. That gap between labelling a rule critical and being able to enforce it is the honest weak point of the whole ruleset.

Install and Configuration Surface

The repository ships to two package registries. The README badges point at PyPI under the name agent-style and at npm under the same name. The README's own table of contents lists a Use section, but the supplied excerpt cuts off before it, so the exact installation commands and config keys are not visible in the material available here. What can be confirmed is the packaging: a Python package on PyPI and a Node package on npm, with the primary language of the repository listed as Python. The three most recent releases are v0.4.0, v0.4.1 and v0.4.2, published within three days of each other in August 2026, which suggests a rapid patch cycle rather than a stable API. The README also references a command named agent-style review, used to measure style deltas between drafts. Beyond that command name and the package names, do not assume a CLI surface. Check the Use section and RULES.md directly before wiring anything into a build pipeline. The escape hatch is worth quoting in full because it shapes how the rules should be applied: break any of these rules sooner than say anything outright barbarous, attributed to Orwell 1946 Rule 6. The README frames the rules as guides to clarity, not ends in themselves.

The Benchmark Numbers and the Scoring Correction

This is where the README asks you to be careful. The hero figure shows three before/after pairs from what the README calls a real v0.3.0 bench: a product description on Gemini 3 Flash going from 8 to 0 violations, a design-doc section on Claude Opus 4.7 going from 14 to 7, and a paper related-work section on Gemini 3 Flash going from 6 to 4. The README then states plainly that those counts are the original v0.3.0 scoring and do not match the corrected scores reported under the Does It Work section. It also notes the displayed baseline snippet stops before the third benchmark name to keep the panel to three sentences. Two things follow. First, the author is disclosing a discrepancy rather than hiding it, which is a good sign. Second, you cannot cite the figure numbers as current results. The paper related-work pair is also described as anchored to three prompt-named benchmarks, AgentBench, BFCL and tau-bench, chosen so that the style delta measured by agent-style review is isolated from fabricated-citation noise. That is a thoughtful experimental control. It is also a reminder that the ruleset cannot fix citation fabrication, only style.

Where agent-style Is the Wrong Tool

The scope table is the first limitation and the author states it. Fiction, poetry, marketing copy, long-form narrative non-fiction and non-English prose are out of scope. If your agent writes any of those, the ruleset will fight you. RULE-I, which pushes toward full forms over contractions, is wrong for conversational product copy. RULE-A, which discourages bullets unless the content is a genuine list, is wrong for reference documentation where a list is the correct structure. The second limitation is structural. Because the rules apply at generation time as prompt content, they are probabilistic. Nothing in the material describes a validation step that fails a build when RULE-H is violated. A model that ignores the ruleset produces the same output as a model that never received it, and you will not get an error. The third limitation is the licence. The README's badge reads CC BY 4.0 plus MIT, and the README file itself carries an SPDX identifier of CC-BY-4.0, while NOTICE.md is referenced for the split. The repository metadata supplied here lists the license as unknown. Those two signals disagree, and the split between a content licence and a code licence has real consequences for redistribution. Read NOTICE.md before you vendor the rules into your own product. This is not legal advice, just a pointer to the file that resolves the ambiguity.

The Alternative: A Post-Hoc Linter, and the Actual Difference

The obvious alternative is a prose linter such as Vale, which runs over finished text and returns a pass or fail per rule. The difference in approach is not cosmetic. Vale-style tooling gives you deterministic enforcement: a rule either fires or it does not, and you can wire that into CI so a pull request fails. agent-style gives you prevention at the cost of determinism. The model is nudged away from a pattern before it appears, but there is no guarantee, no exit code and no report. The two are complementary rather than competing. If you need a gate, you need the linter. If you need the draft to arrive closer to finished so the editing pass is shorter, the ruleset in context is the cheaper intervention. There is a second difference worth naming. A linter encodes rules a human wrote and can audit. agent-style's field-observed group encodes patterns the author logged from model output, and the README says so. That provenance is thinner, and the rules are correspondingly more arguable. A team that wants defensible style enforcement will find the canonical twelve easier to justify than the field-observed nine.

Maintenance, Upgrade Cost and What to Verify

The release cadence is the maintenance signal. Three releases in three days during August 2026, with the last repository push in early September 2026, indicates active patching. For a ruleset, that cuts both ways: fixes land quickly, and rule text or numbering can shift under you between versions. If you pin agent-style in a project, pin the version and read the changelog before bumping, because the rules are the interface and a reworded rule changes model behaviour. The upgrade cost itself is low. There is no runtime service, no database and no background process described in the material. The cost is in re-validating your output after a ruleset change, which is manual unless you build your own comparison. That is what the agent-style review command appears to be for. Two things to verify before adopting. First, read RULES.md in full, since the README excerpt only gives the one-line summary of each rule and the behaviour lives in the detailed text. Second, resolve the licence question in NOTICE.md. The repository metadata says unknown, the README badge says CC BY 4.0 plus MIT, and the README file header says CC-BY-4.0. One of those is stale. Find out which before you redistribute the rules.

Editorial conclusion

Adopt agent-style if you already route documentation, design docs, commit messages or paper drafts through a coding agent and you want the rules to apply while the text is generated rather than in a separate editing pass. Skip it if your output is fiction, marketing copy or non-English prose, since the README places those outside scope, and skip it if you need an enforceable check in CI, because this is a prompt-time ruleset and not a linter. Before adopting, open RULES.md and read the full per-rule text, confirm the licence terms in NOTICE.md for the CC BY 4.0 and MIT split, and reproduce one before/after pair yourself on your own model, because the README's own scoring section flags a mismatch between the hero figure counts and the corrected scores.

Official sources

  1. Issues
  2. README
  3. Releases
  4. yzhao062/agent-style on GitHub
Community notes

Community notes