Agent skill

Writing Review

by mxpv in mxpv/openusd

Revise drafted prose into the plain, reader-facing register this project uses: commit messages, doc comments and inline comments, README and docs/ pages, ROADMAP notes, and the prose in plans and…

Apache-2.0Auto-check passedDevelopment

Install Writing Review

skills CLI
$ npx skills add mxpv/openusd --skill writing-review -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mxpv/openusd writing-review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mxpv/openusd.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/writing-review .claude/skills/writing-review && rm -rf skills-src

Use ~/.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/

Facts

Skill name
writing-review
GitHub stars
129
Token cost
~3.4k tokens
SKILL.md length
1,728 words
Files
6 (incl. references)
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Revise drafted prose into the plain, reader-facing register this project uses: commit messages, doc comments and inline comments, README and docs/ pages, ROADMAP notes, and the prose in plans and…

  • Works in 6 steps: name the artifact and its reader → cut what the reader never asked for → flatten the register → …
  • Tasks that involve Technical documentation
  • SKILL.md covers Two ways to run, Scope, Step 1: name the artifact and… and Step 2: cut what the reader…, plus 5 more sections
  • Calls rg, git and cargo

What it does

Writing Review is an agent skill from mxpv/openusd. Revise drafted prose into the plain, reader-facing register this project uses: commit messages, doc comments and inline comments, README and docs/ pages, ROADMAP notes, and the prose in plans and reports. Use after writing or editing any of those and before committing or handing them over, and whenever asked to review, tighten, or clean up wording. Covers framing the reader cannot verify (contrast tails, historical framing, restated consequences, answers to concerns only the author had), the sentence-level tics…

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/code-comments.md`, `references/commit-messages.md` and `references/docs-and-readmes.md`).

It sits in Development, covering Technical documentation and Commit messages. It works with Rust. The repository describes itself as: Native Rust USD library. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Technical documentation
  • Tasks that involve Commit messages

Example prompts

  • “/writing-review”

Requirements

  • Pre-approved tools (allowed-tools): Read, Edit, Grep, Glob, Bash(git *), Bash(rg *), Bash(cargo *)

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. name the artifact and its reader
  2. cut what the reader never asked for
  3. flatten the register
  4. apply the artifact rules
  5. re-verify every claim you rewrote
  6. grep for the tells

What it can do on your machine

Read from SKILL.md and the folder at commit 37d0f2a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Edit
    • Grep
    • Glob
    • Bash(git *)
    • Bash(rg *)
    • Bash(cargo *)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • rg
    • git
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Writing Review loads about 3.4k tokens when it runs, and up to ~8.2k if it reads all its reference files. Until then it costs about 193 tokens; SKILL.md has 1,728 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~193
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from mxpv/openusd at commit 37d0f2a, republished under its Apache-2.0 licence (© mxpv). 1,728 words, ~3,364 tokens.

Download SKILL.mdSave it as .claude/skills/writing-review/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
writing-review
description
Revise drafted prose into the plain, reader-facing register this project uses: commit messages, doc comments and inline comments, README and docs/ pages, ROADMAP notes, and the prose in plans and reports. Use after writing or editing any of those and before committing or handing them over, and whenever asked to review, tighten, or clean up wording. Covers framing the reader cannot verify (contrast tails, historical framing, restated consequences, answers to concerns only the author had), the sentence-level tics that mark model-drafted prose, the project's commit subject and body conventions, doc altitude and causal attribution, and the claim re-verification a wording sweep requires. Given paths, it sweeps those files and applies the fixes in place.
allowed-tools
Read, Edit, Grep, Glob, Bash(git *), Bash(rg *), Bash(cargo *)
argument-hint
[paths...] [notes]
disable-model-invocation
false

Writing review

A revision pass over text that already exists. The project's comment and doc rules live in CLAUDE.md's Code Quality and ROADMAP.md Style sections; this skill is the sentence-level pass on top of them, and where the two overlap CLAUDE.md wins. The reference files carry the longer derivations; open one when the summary here is not enough.

  • references/register.md: the ten sentence-level tics, a worked rewrite from this repository, coined terms, metaphors, and filler.
  • references/commit-messages.md: subject and body conventions, when a body earns its place, what never goes in one, and how to sample the maintainer's voice from the history.
  • references/code-comments.md: what to cut from a comment, what rustdoc needs, and what has to stay grammatical.
  • references/docs-and-readmes.md: stating the rule, writing at the document's altitude, ROADMAP rows, self-standing plans, and README audience.

The arguments are: $ARGUMENTS

Two ways to run

Bounded. With no paths, the pass is bounded by the working tree: the comments and docs the current diff touches, and the commit message being drafted. This is how the commit skill runs it. Rewording a neighbouring comment the change did not require draws "why this change?" in review and gets reverted, so a line the diff does not touch stays as it is.

Sweep. With paths (files, directories, or a glob), read every comment and doc page under them, apply steps 2 through 5 in place with the Edit tool, run step 6 over the result, and report what changed and what was left alone with the reason. A sweep fixes meaning: contrast tails, historical framing, restatements, unverifiable claims, fragments. It does not chase punctuation tics through untouched sentences; rules 7 and 10 below apply to sentences the sweep is rewriting anyway. After editing Rust files, run cargo clippy -p <crate> --all-targets --all-features -- -D warnings, since clippy::doc_markdown is denied and a bare identifier in a doc comment fails the build, and cargo doc -p <crate> --no-deps when an intra-doc link moved.

Scope

Apply this to prose written for a reader: commit messages, /// and //! doc comments, // comments, README files, docs/ pages, ROADMAP notes, and the prose in plans and reports.

Five kinds of text are out of scope.

  • Instruction files written for a model: CLAUDE.md, the skills under .claude/, agent memory. The contrast and negation rules do not apply to them.
  • Generated text. The schema views openusd-build emits, and the golden files under its tests/ and fixtures/, are generator output: a wording problem there is fixed in the generator (doc.rs), and the goldens are regenerated, never edited by hand.
  • Vendored material under vendor/, and quoted text anywhere: a passage from the AOUSD spec or a C++ doc comment. Fix the framing around a quotation, never the quotation.
  • Deliberate authored voice. A warning a README carries on purpose stays.
  • Lines the current change does not touch, in the bounded mode.

Step 1: name the artifact and its reader

Each rule below resolves differently depending on who is reading.

ArtifactReader
Commit messageSomeone reading git log, who sees this diff against its parent and no earlier state
/// doc commentSomeone reading rustdoc, who sees the signature and the first sentence in an item list, and never the body of the function
//! module docSomeone deciding where to start reading, who has the module's item list beside the text
// commentA reader of the code, who can see the next lines
READMEA user of the crate deciding whether and how to depend on it
docs/ page or planSomeone who did not attend the discussion, deciding or implementing from the page alone
ROADMAP rowSomeone checking what is supported and what remains
ReportA disinterested reader with no memory of the deliberation

Step 2: cut what the reader never asked for

A concern that was only yours. Before keeping an explanatory sentence, ask whether a reader who sees only the final artifact has that question. If the question exists because you worked through an alternative or hit a worry, cut it. A commit body that says a helper's return "sufficed" answers the author's earlier worry; the reader sees the diff and never had it.

A contrast against something the reader cannot see. Strip trailing instead of, rather than, not just, unlike, and no longer clauses, and drop promotional intensifiers (powerful, seamlessly). Explain from the constraint that forces the design. CLAUDE.md states the same rule for comments: "we use A so we don't B", "instead of calling Z", "a subtree walk rather than a full scan" only make sense to someone who saw the alternative.

BAD   An empty taxonomy or interval is refused rather than answering with
      nothing.
GOOD  An empty taxonomy or interval is refused.

A contrast is wanted when both sides are in front of the reader: a body that names a problem and the approach taken, two tests that coexist in the tree, the C++ behaviour a doc comment says this code departs from. The rule targets defending a design against a rejected alternative the reader never raised.

Historical framing. Describe current behaviour in the present tense. No "no longer X", no "used to X", no "now keyed by path". This bites hardest in a squashed commit, where the contrast points at a state that never exists in history.

BAD   asks the attributes whether they may vary over time rather than
      recording that at construction
GOOD  asks the attributes whether they may vary over time

A sentence that restates the one before it. Three forms, all cut:

  1. A closing sentence re-expressing a term already used. "EARLIEST is f64::MIN. The read reaches the earliest sample." The name already says it; the second sentence goes.
  2. A comment describing the lines directly beneath it. Keep the requirement, drop the "so both are passed" tail.
  3. An example re-deriving the rule stated above it.

Check each sentence against the one before it and against the code beneath it. If a reader who understood the previous sentence learns nothing, cut it.

A hypothetical written in the present indicative. An option that was evaluated and not adopted does not have real behaviour. Put its consequences in the conditional: "a per-prim bump would under-invalidate", not "a per-prim bump under-invalidates". Drop concessions that grant a merit before the disqualifying property. Cut forward-looking Status sections; describe the current state.

Vague filler. "wire up the plumbing", "lay the groundwork", "improve robustness". Name the concrete file, function, or change, or say nothing.

Show full SKILL.md (711 more words)Show less

Step 3: flatten the register

Ten tics. The derivation, on a sentence from this repository, is in references/register.md.

  1. Proposition as modifier. A complete claim folded into a trailing that- or where-clause hanging off a noun. Assert one proposition per sentence.
  2. Definition by negation. Saying what does not happen, to whom, under what condition. Find the positive form.
  3. Preemptive qualifier. A trailing phrase answering an objection no reader raised.
  4. so-chaining. More than one so clause performs the derivation instead of stating the result. State cause, then effect, once.
  5. Counterfactual narration. Describing the behaviour of a design that does not exist.
  6. Diff-anchored imperative. "Keep the sort after the merge" means something only to someone reading the change. Describe the code: "Sort after the merge."
  7. Clause-joining commas. A comma before and or but linking two independent clauses reads as a pause for drama. This is a frequency correction: prefer two sentences, keep the join when it earns the pause. List commas are unaffected.
  8. Plain verb over the compressed negative. "does not check the type" over "performs no type check"; "does not require a registry" over "requires no registry". has no X stays where X is the noun the reader is looking for ("an attribute with no samples").
  9. Keep the noun. "are privileged operations", not "are privileged". "A layer with ...", not "A layer created with ..." when the participle adds nothing.
  10. No comma before a restrictive because or so. Delete the comma before because. At so, split into two sentences, which also clears rule 4.

Three more that belong to the same pass:

  • No metaphors. "the first run leaks the layer, the second fails on it", not "seed then bite". The reader has to decode a metaphor back into the literal fact.
  • No coined terms. Use the name the domain already has: the C++ OpenUSD name for a concept (UsdResolveInfo, "prim index", "layer stack"), the exact identifier, the field name. If a word needs a footnote, or you reached for it because no ordinary verb fit, it is the wrong word. A coined term does not stay in the prose: it reaches the plan, then a type name.
  • Terse does not mean fragmentary. No subjectless fragments, no reflexive passive. "so the sweep can tell them apart from unrelated layers", not "Used to filter test-only layers".

Dashes are project style in doc comments and Markdown. A sentence with two of them, or a dash carrying a whole second clause, reads better as two sentences.

Step 4: apply the artifact rules

Open the matching reference.

Step 5: re-verify every claim you rewrote

A wording sweep across many sites is where a true statement quietly becomes a false one. A scoped claim and a general one read as stylistic variants of each other, and the edit feels lossless while dropping the qualifier that made it true.

When a sweep touches a sentence carrying a technical claim, re-derive the claim against the source before writing the replacement, and keep the scope explicit by naming the operations. Three sources matter here:

  • The code the comment sits on. Read the function, not the neighbouring comment.
  • The C++ OpenUSD source, for any "as C++ does" or "C++ differs" claim. A parity claim echoed from a nearby doc comment has been wrong before; check it against the C++ file before keeping it.
  • The AOUSD core spec in docs/, for a claim about what the spec requires.

A claim you cannot verify is left as it was and named in the report, not rewritten.

Step 6: grep for the tells

Run these over the finished text. A correction applies to the pattern, not to the phrase that was quoted, so sweep the whole change. rg scopes the Rust searches to comment lines.

sh
# Contrast tails and historical framing, in comments and Markdown
rg -n --type rust '^\s*(//|///|//!).*\b(instead of|rather than|not just|unlike |no longer|used to |previously|formerly|now )' PATHS
rg -nEi 'instead of|rather than|not just|unlike |no longer|used to |previously|formerly' FILE.md

# Compressed negatives (rule 8)
rg -n --type rust '^\s*(//|///|//!).*\b(requires?|needs?|performs?|provides?|makes?|offers?) no [a-z]' PATHS

# Comma before a restrictive clause (rule 10), in the sentences being rewritten
rg -n --type rust '^\s*(//|///|//!).*, (because|so) ' PATHS

# Planning-phase references, which CLAUDE.md forbids in code and comments
rg -n --type rust '\b(Phase|Step) [0-9]' PATHS

A match can span a line break. Join the lines before searching a file:

sh
tr '\n' ' ' < FILE | grep -oE '.{60}(instead of|rather than|no longer).{60}'

For a commit message, check the subject length and the body wrap before committing:

sh
git log -1 --format=%s | awk 'length>50'
git log -1 --format=%b | awk 'length>72'

Provenance

Adapted from the writing-review skill in https://github.com/samuelkarp/skills, copyright 2026 Samuel Karp, licensed under the Apache License 2.0 (see LICENSE). The rules are kept; the examples, the artifact table, the trailer policy, and the sweep mode are this project's.

© mxpv, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in .claude/skills/writing-review of mxpv/openusd.

  • SKILL.md
  • LICENSE
  • references/code-comments.md
  • references/commit-messages.md
  • references/docs-and-readmes.md
  • references/register.md

Open the folder on GitHubat commit 37d0f2a

Compare with similar skills

Writing Review 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.

Writing Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Writing Review this skillmxpv/openusd129—~3.4kAutomated safety check: PassApache-2.0
Deepwiki Rssopaco/deepwiki-rs3.1k—~748Automated safety check: PassMIT
Cut Releasedelexw/claude-code-trace3771 repos~1.4kAutomated safety check: PassMIT
Commit ScopeDevolutions/IronRDP3.2k—~854Automated safety check: PassApache-2.0
Swig Conventionsswig/swig6.3k—~2.7kAutomated safety check: PassCustom licence
Rocketmq Rust PR Submittermxsm/rocketmq-rust1.5k—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Deepwiki Rs

    sopaco/deepwiki-rs

    AI-powered Rust documentation generation engine for comprehensive codebase analysis, C4 architecture diagrams, and automated technical documentation.

    3.1k GitHub stars~748 tokensUpdated 24 days ago
    DevelopmentAuto-check passed
  • Cut Release

    delexw/claude-code-trace

    Cuts a new versioned release of claude-code-trace end-to-end without asking any questions.

    377 GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed
  • Commit Scope

    Devolutions/IronRDP

    Derive and validate the canonical scope for IronRDP Conventional Commit and pull-request titles.

    3.2k GitHub stars~854 tokensUpdated today
    DevelopmentAuto-check passed
  • SWIG source and contribution conventions: clang-format / code formatting, C/C++ comment style (quotes, widths, function header blocks), parser.y new-code rules, alphabetical ordering of makefile…

    6.3k GitHub stars~2.7k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Rocketmq Rust PR Submitter

    mxsm/rocketmq-rust

    A skill your agent uses when the user asks to prepare, submit, publish, or optimize a pull request for the rocketmq-rust project, especially when the PR title or commit message must follow the [ISSUE

    1.5k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    jaemk/self_update

    Prepare a release (bump the crate version, update CHANGELOG.md with a migration guide for breaking changes, regenerate README, commit), or run a pre-release review.

    961 GitHub stars~2.2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from mxpv/openusd

  • Commit

    mxpv/openusd

    Stage and commit changes with pre-flight checks, doc updates, and roadmap tracking.

    129 GitHub stars~982 tokensUpdated 4 days ago
    Auto-check passed
  • Release

    mxpv/openusd

    Publish a new release of the openusd workspace crates. An agent skill from mxpv/openusd.

    129 GitHub stars~1.7k tokensUpdated 4 days ago
    Auto-check passed

Works with

Categories

Questions about Writing Review

What does Writing Review do?

Revise drafted prose into the plain, reader-facing register this project uses: commit messages, doc comments and inline comments, README and docs/ pages, ROADMAP notes, and the prose in plans and…. Writing Review is an agent skill from mxpv/openusd. Revise drafted prose into the plain, reader-facing register this project uses: commit messages, doc comments and inline comments, README and docs/ pages, ROADMAP notes, and the prose in plans and reports.

When should I use Writing Review?

Writing Review fits situations like: tasks that involve Technical documentation; tasks that involve Commit messages.

How do I install Writing Review in Claude Code?

Run `npx skills add mxpv/openusd --skill writing-review -a claude-code`. Or copy the skill folder (.claude/skills/writing-review in mxpv/openusd) into .claude/skills/writing-review in your project. Claude Code loads it when a task matches its description.

How do I install Writing Review in Codex?

Run `npx skills add mxpv/openusd --skill writing-review -a codex`. Or copy the skill folder (.claude/skills/writing-review in mxpv/openusd) into .agents/skills/writing-review in your project. Codex loads it when a task matches its description.

Can I use Writing Review in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mxpv/openusd --skill writing-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-review, .gemini/skills/writing-review, .github/skills/writing-review and .opencode/skills/writing-review in your project.

What does Writing Review need to run?

Going by SKILL.md and its folder, Writing Review needs the command-line tools its instructions call (rg, git and cargo). Its frontmatter pre-approves these tools: Read, Edit, Grep, Glob, Bash(git *), Bash(rg *), Bash(cargo *).

Does Writing Review access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Writing Review safe to install?

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.

What licence does Writing Review use?

Writing Review is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Writing Review use?

About 3.4k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.8k tokens, read only when the agent opens those files.

What are the alternatives to Writing Review?

Skills that share tags, products or a category with Writing Review: Deepwiki Rs (sopaco/deepwiki-rs, 3.1k stars), Cut Release (delexw/claude-code-trace, 377 stars), Commit Scope (Devolutions/IronRDP, 3.2k stars) and Swig Conventions (swig/swig, 6.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Writing Review?

mxpv (a GitHub user) maintains it in mxpv/openusd, which has 129 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 4, 2026.

Source: mxpv/openusd on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.