Agent Native

pr-writing-review

Extracts editorial feedback and suggested text changes from GitHub pull requests, then provides tools to analyze the differences between original and revised…

by evalstateCommunityNot reviewed

Community author

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
License
Apache-2.0 (permissive)
Pin
70e2189pinned Oct 9, 2026
Context cost
about 1,800 tokenswhen the skill loads
GitHub stars
3,928on evalstate/fast-agent
Scripts
1 script

What it does

“Extract and analyze writing improvements from GitHub PR review comments. Use when asked to show review feedback, style changes, or editorial improvements from a GitHub pull request URL. Handles both explicit suggestions and plain text feedback. Produces structured output comparing original phrasing with reviewer suggestions to help refine future writing.”
The author's description, from SKILL.md

Generated summary from the skill's own text

Extracts editorial feedback and suggested text changes from GitHub pull requests, then provides tools to analyze the differences between original and revised versions. The skill uses the GitHub CLI to fetch review comments and a Python script to parse explicit suggestions and plain-text feedback, producing structured output for learning writing improvement patterns.

When to use it

  • Learning from peer review feedback on writing projects
  • Extracting before-and-after text examples from GitHub PR reviews
  • Cataloging grammar, clarity, and style patterns across multiple reviewers
  • Analyzing how authors incorporated editorial suggestions into final versions

When not to

  • Reviewing PRs with only code changes, not editorial content
  • Extracting comments from GitHub issues or PR descriptions
  • When you cannot authenticate with GitHub CLI or lack repo access

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add evalstate/fast-agent --skill pr-writing-review

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install evalstate/fast-agent pr-writing-review@70e2189bd46d1d658012b8a908c85b4bd23f9954

Installs the commit we checked (70e2189).

Copy by hand

Download the folder at 70e2189 and put it in .claude/skills/pr-writing-review for Claude Code and in .agents/skills/pr-writing-review for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 70e2189

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "pr-writing-review" by evalstate.

Source, pinned to commit 70e2189bd46d1d658012b8a908c85b4bd23f9954:
https://github.com/evalstate/fast-agent/tree/70e2189bd46d1d658012b8a908c85b4bd23f9954/examples/hf-toad-cards/skills/pr-writing-review

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/pr-writing-review/ for Claude Code and .agents/skills/pr-writing-review/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/evalstate/pr-writing-review

SKILL.md at the pin

---
name: pr-writing-review
description: Extract and analyze writing improvements from GitHub PR review comments. Use when asked to show review feedback, style changes, or editorial improvements from a GitHub pull request URL. Handles both explicit suggestions and plain text feedback. Produces structured output comparing original phrasing with reviewer suggestions to help refine future writing.
---

# PR Writing Review

Extract editorial feedback from GitHub PRs to learn from review improvements.

## Prerequisites

- **GitHub CLI**: `gh` installed
- **Authenticated `gh` session**: `gh auth status` should show you’re logged in
  - For private repos, your token needs appropriate scopes (typically `repo`).
- **Python**: 3.12+
- **uv** (recommended): https://github.com/astral-sh/uv

## Division of Labor

| Tool              | Responsibility                                                          |
| ----------------- | ----------------------------------------------------------------------- |
| **Python script** | API calls, parsing, file tracking across renames, structured extraction |
| **LLM analysis**  | Pattern recognition, paragraph comparison, style lesson synthesis       |

## Quick Start

```bash

> **All paths are relative to the directory containing this SKILL.md file.**
> Before running any script, first `cd` to that directory or use the full path.

# Get suggestions and feedback
uv run scripts/extract_pr_reviews.py <pr_url>

# Get full first→final comparison for deep analysis
uv run scripts/extract_pr_reviews.py <pr_url> --diff

# Same as above, but cap each FIRST/FINAL dump to 2k chars for LLM prompting
uv run scripts/extract_pr_reviews.py <pr_url> --diff --max-file-chars 2000
```

## Workflow

### Step 1: Extract with `--diff`

```bash
uv run scripts/extract_pr_reviews.py https://github.com/org/repo/pull/123 --diff
```

This outputs:

1. **Explicit Suggestions** — exact before/after text from `suggestion` blocks (supports multiple suggestion blocks per comment)
2. **Reviewer Feedback** — plain text comments (the "why" behind changes)
3. **File Evolution** — first draft and final version of each text file

> Tip: add `--max-file-chars 2000` to keep each FIRST/FINAL dump lightweight, or pair `--diff` with `--no-files` if you only need the suggestion/feedback summaries.

### Step 2: Analyze the Output

With the script output, perform this analysis:

#### A. Catalog the Explicit Suggestions

Create a table of mechanical fixes:

| Pattern        | Original           | Fixed              |
| -------------- | ------------------ | ------------------ |
| Grammar        | "Its easier"       | "It's easier"      |
| Filler removal | "using this way"   | "this way"         |
| Capitalization | "Image Generation" | "image generation" |

#### B. Map Feedback to Changes

For each reviewer feedback comment:

1. Find the relevant section in FIRST DRAFT
2. Find the same section in FINAL VERSION
3. Document what changed and why

Example:

> **Feedback:** "would be nice to end more enthusiastically"
>
> **First draft:** "...it's simple to add new tools to Claude and use them straight away."
>
> **Final:** "...Let us know what you find and create in the comments below!"
>
> **Lesson:** End blog posts with a call-to-action

#### C. Paragraph-by-Paragraph Comparison

Compare FIRST DRAFT to FINAL VERSION section by section:

- What was added?
- What was removed?
- What was reworded?
- What structural changes were made?

#### D. Synthesize Style Patterns

Group findings into categories:

| Category      | Patterns Found                                   |
| ------------- | ------------------------------------------------ |
| **Clarity**   | Passive→active, shorter sentences, remove filler |
| **Precision** | Vague→specific, "Create"→"Generate"              |
| **Tone**      | Added enthusiasm, call-to-action endings         |
| **Structure** | Added transitions, better section flow           |
| **Grammar**   | its/it's, subject-verb agreement                 |
| **Content**   | Added links, examples, context                   |

## Script Options

> 📁 **All paths are relative to the directory containing this SKILL.md file.**

| Flag                 | Output                                                                           | Use Case                                                    |
| -------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| _(none)_             | Suggestions + feedback                                                           | Quick review of what reviewers said                         |
| `--diff`             | Adds FIRST/FINAL file dumps to the default output                                | Deep analysis of how the author responded                   |
| `--max-file-chars N` | Truncates each FIRST/FINAL block to _N_ chars (appends `...[truncated X chars]`) | Keep prompts within LLM token limits                        |
| `--no-files`         | Suppresses FIRST/FINAL dumps even when `--diff` is set                           | When you only need explicit suggestions + reviewer feedback |
| `--json`             | Raw JSON (includes `file_evolutions` when `--diff` without `--no-files`)         | Programmatic processing                                     |

> Input formats: pass either a full PR URL, `owner/repo PR_NUMBER`, or `owner repo PR_NUMBER`.

## Output Structure

### Default Output

- **Writing Suggestions**: Grouped by reviewer, shows original→suggested text (fenced blocks) along with any reviewer note and a permalink back to GitHub
- **Reviewer Feedback**: Plain comments without code suggestions, each tagged with its GitHub link

### With `--diff`

- **Explicit Suggestions**: Compact before/after pairs, reviewer notes, and GitHub permalinks in one place
- **Reviewer Feedback**: Numbered list of requests (same as default view)
- **File Evolution**: FIRST DRAFT and FINAL VERSION for each `.md`/`.txt`/`.rst`/`.mdx` file; add `--max-file-chars` to truncate each block with a visible `...[truncated X chars]` indicator

## Handling File Renames

The script traces files through renames by:

1. Checking each commit for rename operations
2. Building a path history (e.g., `claudeimages.md` → `claude-images.md` → `claude-and-mcp.md`)
3. Fetching content using the correct path for each commit

## Example Analysis Output

After running the script and performing LLM analysis, produce a summary like:

```markdown
## Style Lessons from PR #123

### Mechanical Fixes

- Fix grammar: "Its" → "It's" (contraction)
- Lowercase generic terms: "Image Generation" → "image generation"
- Remove filler: "the output quality of" → "the quality of"

### Reviewer-Driven Changes

- **"end more enthusiastically"** → Added call-to-action in conclusion
- **"emphasize these are SoTA"** → Changed "latest" to "state-of-the-art"
- **"add blurb about MCP Server"** → Added explanatory paragraph

### Structural Improvements

- Added transition sentence between sections
- Simplified setup instructions (3 sentences → 1)
- Added new bullet point for model flexibility
```

## Limitations

- Only extracts **inline PR review comments** (not issue comments or the PR description)
- Extremely long files can still be heavy; when that happens, lower `--max-file-chars` or pass `--no-files` to keep outputs prompt-friendly

{{currentDate}}
{{env}}

From evalstate/fast-agent at 70e2189, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at 70e2189

Files

2 files, 32 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 70e2189
All Docs and writing skills
  • markdown-no-artificial-line-wraps

    This skill instructs the agent to write and edit Markdown files by keeping prose paragraphs as single lines rather than inserting manual hard line breaks at…

    by PrismaOfficial publisher

    Claude Code, Codex, Cursor +4 · about 340 tokens · pinned 6 days ago

  • release-notes

    Generates a GitHub release note draft for an Obsidian plugin by analyzing git history and code diffs since the previous release.

    by RAIT-09Community

    Claude Code · about 4.1K tokens · pinned 6 days ago

  • changelog-writing

    Transforms raw commits, pull requests, and tickets into well-structured release notes that readers can scan quickly to understand what changed and what breaks.

    by samberCommunity

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 6K tokens · pinned 6 days ago

  • n8n-docs-assistant

    This skill answers questions about n8n configuration, setup, credentials, nodes, and troubleshooting by retrieving information from current n8n documentation.

    by n8nOfficial publisher

    Claude Code, Codex, Cursor +3 · about 450 tokens · pinned 6 days ago

  • algodocs-automation

    This skill automates Algodocs document processing tasks through Composio's toolkit via the Rube MCP server.

    by ComposioOfficial publisher

    Claude Code, Codex, Cursor +3 · about 690 tokens · pinned 6 days ago

  • remotion-docs

    This skill enables agents to search and retrieve Remotion documentation via the Algolia API and fetch pages as Markdown.

    by RemotionOfficial publisher

    Claude Code, Codex, Cursor +3 · about 320 tokens · pinned 6 days ago

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use