Docs review pre-commit quality pass

VerifiedCaution

Review documentation and blog post quality for style, accuracy, and best practices before committing. Works on open files, current branch, or PR, outputting to the conversation.

Sby Skills Guide Bot
DocumentationIntermediate
9/9/2026
Claude Code
#docs-review#vale#style-linting#pull-request#content-quality

Recommended for

Automated summary

Reviews the quality of docs and blog posts (style, accuracy, Pulumi best practices) on open files, uncommitted changes, the current branch or a given PR, printing findings into the conversation.

Strengths

  • Automatic scope detection in a fixed order: open IDE files, then uncommitted changes, then branch diff against master.
  • Runs Vale on content/docs and content/blog and splits near-zero-false-positive blockers from low-confidence style suggestions via a categorization filter.
  • Read-only PR mode using gh pr view and gh pr diff, and it never posts to GitHub.
  • Ships outcome-scraping and weekly-digest scripts so the review rules can be tuned over time.

Limitations

  • Relies on internal reference files and scripts (.claude/commands/docs-review/…) being present in the repo.
  • The Vale step is skipped with a one-line note when vale is missing, so style checks may silently not run.
  • Criteria and paths (content/docs, content/blog, Pulumi best practices) are specific to a Pulumi documentation repository.
When to use it

Use it before pushing content changes, for a quality pass on currently open files, the current branch or an open PR.

When not to use it

Don't use it to work through findings CI already posted on a PR — that is what /address-review is for.

Security analysis

Caution
Quality score88/100

The skill uses standard development tools for legitimate docs review purposes: git diff, gh pr view/diff, vale linting, and telemetry scripts. All actions are read-only with respect to the repository and GitHub, and it explicitly states it never posts to GitHub. No destructive commands, secret exfiltration, or obfuscation are present.

Findings
  • •Executes shell commands including git, gh, vale, and custom Python scripts; gh performs network requests to GitHub.
  • •Runs local scripts (vale-findings-filter.py, scrape-review-outcomes.py) that are not shown, but no destructive or exfiltrating behavior is indicated.
How this analysis is made

Examples

Review local docs edits
/docs-review
Review a specific PR
/docs-review 4821
Pre-push quality pass
I just finished editing a couple of blog posts locally — run a docs review on what I have open before I commit and push.

name: docs-review description: Review docs and blog post quality before committing (style, accuracy, Pulumi best practices). Use when you've made content changes locally and want a quality pass on open files, the current branch, or a specific PR — outputs to the conversation, never posts to GitHub. user-invocable: true

Docs Review (interactive)

Output goes into the conversation. This skill never posts to GitHub.

This is the pre-push pass. Once a PR is open and CI has posted its pinned review, /address-review is the skill that works those findings to zero with the author.

Usage

/docs-review [PR_NUMBER]

If PR_NUMBER is provided, review the PR via gh pr view / gh pr diff. If omitted, auto-detect scope from the current IDE/terminal context.

Scope detection (when no PR number is provided)

Walk these steps in order; stop at the first that yields a scope.

  1. Open files in the IDE. Check the conversation context for system reminders that list open files. If any are present, treat those files as the scope.

  2. Uncommitted changes. Check the gitStatus block (or run git status) for modified (M) and untracked (??) files. Use git diff and read the affected files.

  3. Branch changes vs. master:

    git diff $(git merge-base --fork-point master HEAD)...HEAD
    

    If --fork-point fails (no reflog), fall back to git diff $(git merge-base master HEAD)...HEAD. Review every changed file in the branch.

Performing the review

Route each file to a domain via docs-review:references:domain-routing, then apply that domain's criteria plus docs-review:references:shared-criteria. Render the output per docs-review:references:output-format.

For files under content/docs/ or content/blog/, also run Vale and surface its findings per the Style-suggestions render contract in docs-review:references:output-format: entries with "blocker": true (near-zero-false-positive correctness rules) go in 🚨 Outstanding as [style-blocker] bullets; everything else goes under ⚠️ Low-confidence (the **line N:** [style] _category_ — <message> bullet form, grouped under a #### Style suggestions H4, expanded, not counted). Pipe through the categorize filter so the JSON has a deterministic category field — never surface the raw rule name:

vale --no-exit --output=JSON <files> > /tmp/vale-raw.json
python3 .claude/commands/docs-review/scripts/vale-findings-filter.py \
    --in /tmp/vale-raw.json --out /tmp/vale-findings.json
# Render bullets from /tmp/vale-findings.json: use .category, not .rule.

Omit --pr in interactive mode (no diff to intersect; the filter accepts all findings, categorizes, caps). If vale --version fails or vale is not on PATH, skip the Vale step with a one-line note (e.g., "Skipping Vale: not installed. Install via mise install to enable style nits.") and continue the review without Vale findings — don't hard-fail.

For PR-number invocations:

gh pr view {{arg}} --json title,body,files,additions,deletions,labels
gh pr diff {{arg}}

Format for terminal display. Include the scope in the summary, and offer to broaden if useful.

Outcome telemetry (quarterly review)

Every closed PR's pinned review encodes what happened to its findings (✅ Resolved = fixed, concede: = conceded, 🛡️ Disputed … model held = disputed, still-🚨-at-merge = ignored). .claude/commands/docs-review/scripts/scrape-review-outcomes.py derives per-finding outcomes from that structure; the weekly digest (scripts/weekly-digest/digest.py) aggregates the trailing week automatically. Quarterly, run the long-window tuning report:

uv run .claude/commands/docs-review/scripts/scrape-review-outcomes.py \
    --closed-since <quarter-start> --stats

What to do with the numbers: verdict categories with high concede or ignored-at-merge rates are candidates for demoting from the always-🚨 carve-out list (or pruning entirely — edit docs-review:references:output-format §Bucket rules in a PR); recurring prose findings with high fix rates are candidates for promotion into Vale rules so they're caught pre-review. High unconfirmed_at_merge counts mean reviews are routinely stale at merge — evidence for auto-refreshing on trivial deltas. Telemetry informs the tuning; humans make the edits.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/docs-review-pre-commit-quality-pass-mttmx7cq/download' --output '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md.part' && mv '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md.part' '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md' && test -s '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/docs-review' && cp -R '.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq' '.claude/skills/docs-review'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq'

openskills read 'docs-review-pre-commit-quality-pass-mttmx7cq'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/docs-review-pre-commit-quality-pass-mttmx7cq/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills