// Comprehensive GitHub PR review with inline suggestions, approval/rejection criteria, and technology-agnostic checklists. Triggers when reviewing PRs, analyzing code changes, or when user requests PR review. ALWAYS approve or request changes after review.
| name | github-pr-review |
| description | Comprehensive GitHub PR review with inline suggestions, approval/rejection criteria, and technology-agnostic checklists. Triggers when reviewing PRs, analyzing code changes, or when user requests PR review. ALWAYS approve or request changes after review. |
This skill enables comprehensive GitHub pull request reviews with actionable suggested changes that developers can apply directly through GitHub's web UI using the "Commit suggestion" button.
Key Features:
After every PR review, you MUST submit a review decision:
# Approve (no critical/high issues)
gh pr review $PR --repo $REPO --approve --body "..."
# Request changes (critical/high issues found)
gh pr review $PR --repo $REPO --request-changes --body "..."
# Comment only (medium issues, can merge)
gh pr review $PR --repo $REPO --comment --body "..."
See: Approval Criteria for decision tree.
Automatically triggers when:
Manual trigger:
/github-pr-reviewAdd nullable directive at the top of the file.
\`\`\`suggestion
#nullable enable
namespace YourNamespace
\`\`\`
Result: Shows a "Commit suggestion" button in GitHub UI that applies the change when clicked.
# Get PR information
gh pr view <PR_NUMBER> --repo <OWNER/REPO> --json title,body,files,commits
# Get PR diff
gh pr diff <PR_NUMBER> --repo <OWNER/REPO>
theone-unity-standards)Use GitHub API to add inline comments with suggestions:
# Get latest commit ID
COMMIT_ID=$(gh pr view <PR> --repo <REPO> --json commits --jq '.commits[-1].oid')
# Add inline suggestion comment
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
/repos/<OWNER>/<REPO>/pulls/<PR_NUMBER>/comments \
-f body="<suggestion text with \`\`\`suggestion block>" \
-f commit_id="$COMMIT_ID" \
-f path="<file_path>" \
-F position=<line_number>
Add a general comment explaining:
Fix access modifier.
\`\`\`suggestion
public sealed class MyClass
\`\`\`
Add nullable directive and fix class.
\`\`\`suggestion
#nullable enable
namespace MyNamespace
{
public sealed class MyClass
{
// class body
}
}
\`\`\`
For major refactoring, provide complete fixed file in expandable section:
<details>
<summary>Click to expand: Complete fixed file</summary>
\`\`\`csharp
// entire file content
\`\`\`
</details>
Use inline suggestions for fixable issues
Add suggestions at correct line positions
gh pr diff to find exact line numbersposition parameter (diff position, not file line number)Group related changes
#nullable enable + sealed keyword togetherProvide context
Use batch suggestions for multiple fixes
Don't suggest changes for non-fixable issues
Don't create overlapping suggestions
Don't suggest changes without explanation
Important: The position parameter is the diff position, not the file line number.
# Get diff to see positions
gh pr diff <PR_NUMBER> --repo <OWNER/REPO>
# Position starts at 1 for first changed line
# Increments for each line in the diff (context + changes)
Example:
@@ -0,0 +1,10 @@
+namespace MyNamespace # position: 1
+{ # position: 2
+ public class Foo # position: 3
+ { # position: 4
Issue: Missing #nullable enable
Location: Line 1 (before namespace)
Position: Usually 1
Add \`#nullable enable\` directive at the top of the file.
\`\`\`suggestion
#nullable enable
namespace YourNamespace
\`\`\`
Issue: Class should be sealed
Location: Class declaration line
Position: Find in diff
Add \`sealed\` keyword to prevent inheritance.
\`\`\`suggestion
public sealed class YourClass
\`\`\`
Issue: Public fields instead of properties Location: Field declaration lines Position: Find in diff
Convert field to property with getter.
\`\`\`suggestion
public Dictionary<string, int> MyProperty { get; } = new();
\`\`\`
Issue: Using #region / #endregion
Location: Region block
Position: Find in diff
Remove \`#region\` comments - code should be self-organizing.
\`\`\`suggestion
private readonly UserDataManager userDataManager;
public MyController(UserDataManager userDataManager)
{
this.userDataManager = userDataManager;
}
\`\`\`
# 1. Get PR details
PR_NUMBER=984
REPO="The1Studio/TheOneFeature"
COMMIT_ID=$(gh pr view $PR_NUMBER --repo $REPO --json commits --jq '.commits[-1].oid')
# 2. Review code (use theone-unity-standards skill)
# ... analyze code against standards ...
# 3. Add suggestion for file1
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
/repos/$REPO/pulls/$PR_NUMBER/comments \
-f body="Add \`#nullable enable\` directive.
\`\`\`suggestion
#nullable enable
namespace MyNamespace
\`\`\`" \
-f commit_id="$COMMIT_ID" \
-f path="path/to/file1.cs" \
-F position=1
# 4. Add suggestion for file2
# ... repeat for each issue ...
# 5. Add summary comment
gh pr comment $PR_NUMBER --repo $REPO --body "## โ
Suggestions Ready
I've added 6 inline suggestions. Go to Files Changed tab and click 'Commit suggestion' on each, or use 'Add suggestion to batch' to apply all at once."
Works best with:
theone-unity-standards - For Unity C# code reviewstheone-react-native-standards - For React Native reviewstheone-cocos-standards - For Cocos reviewscode-review - For internal review practices (receiving feedback)docs-seeker - For finding latest library documentationExample workflow:
theone-unity-standards) for detailed analysisgithub-pr-reviewBefore diving into code, run through technology-agnostic checklists:
See: Review Checklists
Cause: Wrong position value
Fix: Verify position in diff output
gh pr diff <PR> --repo <REPO> | less
# Count lines from @@ hunk header
Cause: Invalid ````suggestion` syntax Fix: Ensure proper markdown formatting:
Cause: Incorrect indentation or incomplete context Fix:
This skill automates comprehensive GitHub PR reviews with actionable suggestions:
Result: Faster, more efficient PR reviews with instant applicability AND clear approval status.
| Reference | Purpose |
|---|---|
| Approval Criteria | Decision tree for APPROVE/REQUEST_CHANGES |
| Review Checklists | Technology-agnostic security, quality, performance checklists |
| API Reference | GitHub API commands and examples |
| Workflow Examples | Complete review workflow examples |
For The1Studio repositories, you can trigger automated PR reviews via webhook:
# Simply comment on any PR:
/review
# The webhook will:
# 1. Fetch PR files and diffs
# 2. Run Claude Code review with inline suggestions
# 3. Post review with "Apply suggestion" buttons
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GitHub PR Comment "/review" โ
โ โ โ
โ Webhook โ github-review-service (port 16300) โ
โ โ โ
โ Fetch PR files โ Generate prompt with diffs โ
โ โ โ
โ claude-service (port 16304) โ Claude Code analysis โ
โ โ โ
โ Post inline comments with ```suggestion blocks โ
โ โ โ
โ GitHub shows "Apply suggestion" button on each comment โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The service generates suggestions in GitHub's format:
๐ต **Suggestion**
Add `sealed` keyword to prevent inheritance.
\`\`\`suggestion
public sealed class MyClass
\`\`\`
**Category:** CodeQuality
Result: Users see "Apply suggestion" button and can commit fixes with one click.
| Service | Port | Purpose |
|---|---|---|
| github-review-service | 16300 | Webhook handler, review orchestration |
| claude-service | 16304 | Claude Code API gateway |
| postgres | 16305 | Review history storage |
| dashboard | 16302 | Monitoring UI |
# If webhook not working, trigger via API:
curl -X POST http://localhost:16300/api/review \
-H "Content-Type: application/json" \
-d '{
"owner": "The1Studio",
"repo": "YourRepo",
"prNumber": 123,
"installationId": 95277005
}'