Writing Style
pydantic/monty
How to write prose that reads like human technical documentation rather than LLM output.
Writes and edits prose in a plain and boring style: simple everyday words, complete sentences, no dashes, no jargon, and no analogies.
$ npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install docwriter-org/plain-writing-skill plain-writing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/docwriter-org/plain-writing-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/plain-writing .claude/skills/plain-writing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "plain-writing" agent skill from https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writing into .claude/skills/plain-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plain-writing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install docwriter-org/plain-writing-skill plain-writing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docwriter-org/plain-writing-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/plain-writing .agents/skills/plain-writing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "plain-writing" agent skill from https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writing into .agents/skills/plain-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plain-writing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install docwriter-org/plain-writing-skill plain-writing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docwriter-org/plain-writing-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/plain-writing .cursor/skills/plain-writing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "plain-writing" agent skill from https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writing into .cursor/skills/plain-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plain-writing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/docwriter-org/plain-writing-skill.git --path skills/plain-writing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install docwriter-org/plain-writing-skill plain-writing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docwriter-org/plain-writing-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/plain-writing .gemini/skills/plain-writing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "plain-writing" agent skill from https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writing into .gemini/skills/plain-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plain-writing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install docwriter-org/plain-writing-skill plain-writingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/docwriter-org/plain-writing-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/plain-writing .github/skills/plain-writing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "plain-writing" agent skill from https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writing into .github/skills/plain-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plain-writing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install docwriter-org/plain-writing-skill plain-writing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docwriter-org/plain-writing-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/plain-writing .opencode/skills/plain-writing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "plain-writing" agent skill from https://github.com/docwriter-org/plain-writing-skill/tree/main/skills/plain-writing into .opencode/skills/plain-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plain-writing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
plain-writingWrites and edits prose in a plain and boring style: simple everyday words, complete sentences, no dashes, no jargon, and no analogies.
Plain Writing is an agent skill from docwriter-org/plain-writing-skill. Writes and edits prose in a plain and boring style: simple everyday words, complete sentences, no dashes, no jargon, and no analogies. Use when drafting or revising documents, Notion pages, reports, summaries, READMEs, emails, slides, commit messages, or PR descriptions, or when the user asks to simplify, clean up, tighten, reword, or make writing clearer. Use when the user invokes /plain-writing deslopify or asks to deslopify an agent response. Do not apply to code, only to the words around it.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Pull requests, Commit messages and Technical documentation. It works with Notion. The repository describes itself as: A plain-language writing skill for AI agents, with a revision view that shows what changed. The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f0d3630. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Plain Writing loads about 3.6k tokens when it runs. Until then it costs about 129 tokens; SKILL.md has 2,201 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from docwriter-org/plain-writing-skill at commit f0d3630, republished under its MIT licence (© docwriter-org). 2,201 words, ~3,573 tokens.
.claude/skills/plain-writing/SKILL.md (or your agent's skills folder).The plain writing skill captures how the user wants writing to read: plain, boring, and easy to understand in one pass. Apply it by default when you write for them.
There are four groups of rules: word choice and tone, sentences and paragraphs, punctuation and formatting, and patterns to avoid. Each rule has a before and after. After the rules comes the deslopify command.
Use simple, everyday words. Don't pick a fancy synonym when a plain word works. Also avoid words AI tools overuse, e.g., "delve", "tapestry", "landscape", "robust", "leverage", and "reach". Before: We leverage the cache to unlock a more robust query experience. After: We use the cache to make repeated queries faster.
No jargon. Always use human-understandable language, the way two people talk to each other. Don't invent jargon or shorthand (that is, if a word or phrase is not in the Merriam Webster dictionary, don't use it). Use established technical terms only when they are most precise, and briefly define them when readers may not know them. Before: The score is a calibrated proxy for whether the property holds. After: The score estimates how likely the property is to hold.
No puffery or empty emphasis. Drop words that add emphasis but no information, e.g., "really", "real", "matters", "worth", "carries weight", "boasts", "a testament to", "pivotal", "renowned", and "quietly". State the actual point, or cut the sentence. Before: This result matters, and it carries weight for the design. After: The scores barely moved, so we can skip the model on most documents.
Use consistent terminology and constrain your vocabulary. Before: Upload the document. The file is parsed, and the record is saved. After: Upload the document. The document is parsed and saved.
It's ok to use contractions. They match everyday speech, so use them freely. Before: Do not worry, it is not going to overwrite your file. After: Don't worry, it's not going to overwrite your file.
Do not invent hyphenated adjectives. Avoid a phrase you make up by joining words with a hyphen to sound compact or clever. If you would not find it in a dictionary, don't use it. A common compound adjective that people already use is fine, e.g., "well-crafted". Before: We added a reveal-style colon to the output. After: We added a colon that shows the schema.
Keep the writing boring, descriptive, and explanatory. Do not use a catchy phrase, slogan, clever label, or wording meant to sound memorable. This rule applies everywhere; to headings, topic sentences, callouts, labels, summaries, and ordinary prose. Before: Legal requirements as a floor. After: Applicable legal constraints. Before: # The alignment loop After: # Iterative refinement using development disagreements
Write complete sentences. Each sentence should have a subject and a verb. Do not write fragments, and do not stitch unrelated ideas together with colons or semicolons. But it is ok to join closely related ideas with plain conjunctions, like "and", "because", or "so". Before: The agent polls the file and reacts to changes, and the team meets on Tuesdays. After: The agent polls the file and reacts to changes. The team meets on Tuesdays.
When you present a workflow or sequence, walk through it in order. Use "First", "Second", "Third", and give each step its own sentence so the reader can follow it, or break up steps with semicolons. Before: The groups the features were sorted into were the authors' own reading, the example posts were written by hand, and finer detail meant training extra small models and labeling again. After: First, the authors sorted the features into groups themselves, based on their own reading of the outputs. Second, they wrote the example posts by hand. Third, when they wanted finer detail, they trained another small model, and they labeled the posts again.
Organize a paragraph as a topic sentence and then support. Start each paragraph or section with a topic sentence that states the main point. Then, the next sentence should be a supporting example or fact, with an extra sentence about it if it needs one. Then, introduce more support with a plain connective like "For example", "Moreover", or "Or". Before: The parser skips files with no changes. The cache holds the previous output. Most renders are fast. After: Most renders are fast. For example, the parser skips files with no changes, so the server returns early. Moreover, the cache keeps the previous output, so a repeated render does no work.
Never write three or more clauses in one sentence, or three or more example sentences in a row. In ordinary prose, a sentence may have one or two related clauses. Do not pack three or more clauses into one prose sentence. If you need that many points, use a numbered First / Second / Third sequence under rule 9, or short bullet points when you are writing a brief. If list points are examples and you want to inline them, introduce with "e.g.". Also do not give three or more example sentences back to back to support the same point. Before: The parser reads the file, the validator checks the fields, and the writer saves the record. After: The parser reads the file, and the validator checks the fields. The writer then saves the record.
Prefer long, explanatory sentences over short, punchy ones. In ordinary prose, write the way people explain things out loud: longer sentences with commas, and the simplest way to say the point. Do not break one thought into a stack of short sentences, and don't write catchy short phrases. Short lines are fine only in labeled briefs, bullets, or a First / Second / Third sequence, e.g., "To do: validate recall on long queries." Before: The gate runs on every merge. It blocks regressions. Nobody bypasses it. After: The gate runs on every merge, and it blocks changes that fail a regression case. A regression cannot make it to production, unless someone deliberately overrides the check. Before: Search ranking now uses a scored model instead of heuristics. The change reduced p95 latency from 900 ms to 220 ms. We still need to validate recall on long queries. After: Search ranking now uses a scored model instead of heuristics, and p95 latency fell from 900 ms to 220 ms. To do: validate recall on long queries.
Be precise and unambiguous, and cut unnecessary clauses. Say exactly what changes, who does what, or by what mechanism. Prefer a concrete statement over an evocative abstraction, e.g., don't say things like "improvement stops being guesswork". Also drop trailing or side clauses that add no fact, e.g., "before we call the work done", "as we move forward", or "for the time being". Keep the sentence long when the content needs it, but do not pad it. Before: With trusted scores, improvement stops being guesswork. After: With trusted scores, you can measure whether each change helped, so you keep or revert each change based on the measured result. Before: We still need to validate recall on long queries before we call the work done. After: To do: validate recall on long queries.
In chat, give context on the problem. When you are chatting back and
forth, write for a smart reader who does not have context on the problem,
or who forgot it. Give context on the problem and on what was happening
before. Then say what changed. Keep the setup short. Do not dump the whole
history. Ignore this rule if you are writing an essay.
Before: The exporter now waits on the reset header, and dotnet test is
green.
After: The Okta System Log exporter was rereading whole hours, so a retry
could write the same event twice. It now waits using the response reset
header, and the six acceptance tests pass.
No dashes or middle dots. Do not use em dashes or en dashes, including in number ranges. Join clauses with a period or "and", and write ranges with "to". Do not use the middle dot (·) as a separator; use a comma, "and", or separate lines instead. Before: The build is fast — it finishes in 10 to 20 seconds. After: The build is fast. It finishes in 10 to 20 seconds.
Don't use colons to join clauses in ordinary prose. Do not use a colon to glue two clauses or to set up a point in essay-like writing. A colon is fine when you introduce a list. A colon is also fine as a short label in updates, briefs, status notes, and PR descriptions, e.g., "Summary:", "Changes:", or "Remaining work:". Before: Read for the schema: the feature fires. After: Read for the schema. The feature fires. Before (allowed in a PR or update): Summary: Replace em dashes in generated docs. After (same text is fine): Summary: Replace em dashes in generated docs.
Use straight quotes, not curly quotes. Before: The system logs each “event” as it happens. After: The system logs each "event" as it happens.
Keep the formatting plain. Use sentence case in headings. Do not use bold for decoration. Before: ## How To Install The Skill After: ## How to install the skill
You can use lists, but do not overuse them. Keep a list to three or four points, and nest extra points if you need more. When you are writing an essay, use lists and tables very sparingly. Before: Shipped this week:
Do not give inanimate things fake agency. Do not write as if a system or object transforms, decides, or intends on its own when a person or process is the real actor. Ordinary factual verbs for tools and systems are fine, e.g., "The API returns JSON", "The job writes the file", or "The paper argues". Prefer a human or process subject when that is clearer. Before: The logs become searchable records, once the job finishes. After: You can search the logs, once the job finishes.
No analogies or imagery. Do not explain by comparing to something else, and do not use metaphor. Describe the actual thing in literal terms. Write in a boring way. Before: The feature index is like a card catalog that the optimizer can flip through. After: The feature index is a list of named features. The optimizer can look up which feature matches a request.
Never use negative parallelism of the form "not just X, it is Y" or "not only X, but Y". State what the thing is. A plain refusal or correction is fine, including a short quote of a customer's hype phrase when you replace it with a concrete fact. Before: It is not just a parser, it is a full toolchain. After: It is a parser and a formatter. Before: We do not describe the API as "enterprise-grade robust," because that phrase can mean different things. After: The API has a 99.9% monthly uptime SLO.
Do not stack rhetorical questions. AI writing often asks two or three rhetorical questions in a row to sound thoughtful. Don't do this. Just state the problem directly. Before: Does the tool keep the writer's voice? Does it make the argument stronger or weaker? After: We do not yet know whether the tool keeps the writer's voice, or whether it makes the argument stronger or weaker.
Do not use vague demonstrative pronouns. Do not use "This", "That", "These", or "Those", especially do not start a sentence with a demonstrative pronoun, and never begin a paragraph with a sentence that contains a demonstrative anywhere in it. Before: That context carries into the next turn. After: The agent applies the rules you saved on the next turn.
Do not open with a count of things. Never start by announcing how many points are coming, e.g., "Two cautions." or "Three things to keep in mind." State the first point directly. If you absolutely must present many things, use a bullet list instead. Before: Two cautions. First, the section can drift out of date. Second, it can balloon if every item gets a sentence. After: The section can drift out of date, because it duplicates facts that live elsewhere. It can also balloon if every item gets a sentence.
When the user says /plain-writing deslopify, rewrite the previous agent
response, or the text after the command, for a sharp CEO or technical reader
who has no project context. Return only the rewrite.
Start with the main conclusion, then cover the background, how it works, and present all information logically and sequentially. Include technical details the reader needs (standardize on existing well-known terminology, not new terminology), and define unfamiliar terms.
Follow the plain-writing rules above.
© docwriter-org, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/plain-writing of docwriter-org/plain-writing-skill.
Open the folder on GitHubat commit f0d3630
Plain Writing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Plain Writing this skilldocwriter-org/plain-writing-skill | 461 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Writing Stylepydantic/monty | 8.6k | — | ~3.2k | Automated safety check: Pass | MIT | |
| Prosestatic-web-server/static-web-server | 2.4k | — | ~971 | Automated safety check: Pass | Apache-2.0 | |
| Prepare PR FilesQwenLM/qwen-code | 28k | — | ~538 | Automated safety check: Pass | Apache-2.0 | |
| Google Devdocs StyleEpicenterHQ/epicenter | 4.8k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Technical Writingsreichholf/dreamDroid | 116 | — | ~199 | Automated safety check: Pass | GPL-3.0 |
pydantic/monty
How to write prose that reads like human technical documentation rather than LLM output.
static-web-server/static-web-server
Author or edit any prose for the Static Web Server (SWS) project — documentation, design docs, READMEs, PR descriptions, issue bodies, commit message bodies, or other human-readable text — following…
QwenLM/qwen-code
Writes a PR title file and a template-filled PR body file from the current branch diff, without pushing, commenting or creating the pull request.
EpicenterHQ/epicenter
Write and review developer documentation in Google Developer Documentation Style.
sreichholf/dreamDroid
Write maintainable technical docs, RFCs, READMEs, PR descriptions, and commit messages.
OutThisLife/brooklyn-skills
Detect and eliminate common AI writing tropes from generated text.
Works with
Categories
Writes and edits prose in a plain and boring style: simple everyday words, complete sentences, no dashes, no jargon, and no analogies. Plain Writing is an agent skill from docwriter-org/plain-writing-skill. Writes and edits prose in a plain and boring style: simple everyday words, complete sentences, no dashes, no jargon, and no analogies.
Plain Writing fits situations like: revising documents; commit messages; PR descriptions; the user asks to simplify.
Run `npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a claude-code`. Or copy the skill folder (skills/plain-writing in docwriter-org/plain-writing-skill) into .claude/skills/plain-writing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a codex`. Or copy the skill folder (skills/plain-writing in docwriter-org/plain-writing-skill) into .agents/skills/plain-writing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add docwriter-org/plain-writing-skill --skill plain-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/plain-writing, .gemini/skills/plain-writing, .github/skills/plain-writing and .opencode/skills/plain-writing in your project.
Going by SKILL.md and its folder, Plain Writing needs the command-line tools its instructions call (dotnet).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Plain Writing is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Plain Writing: Writing Style (pydantic/monty, 8.6k stars), Prose (static-web-server/static-web-server, 2.4k stars), Prepare PR Files (QwenLM/qwen-code, 28k stars) and Google Devdocs Style (EpicenterHQ/epicenter, 4.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
docwriter-org (a GitHub organization) maintains it in docwriter-org/plain-writing-skill, which has 461 GitHub stars. The repository was last updated on August 23, 2026.
Source: docwriter-org/plain-writing-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.