From pr-workflow
This skill should be used when the user asks to "integrate Gemini review", "merge Gemini suggestions", "add Gemini comments to PR review", "sync Gemini code assist", "combine Gemini feedback", or mentions integrating gemini-code-assist suggestions into the PR review comment. Fetches Gemini Code Assist review comments and integrates non-duplicate, non-outdated suggestions into the pr-review-and-document PR comment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pr-workflow:gemini-review-integratorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Integrate Gemini Code Assist review suggestions into the pr-review-and-document PR comment.
Integrate Gemini Code Assist review suggestions into the pr-review-and-document PR comment.
Invoke this skill when:
PR_NUMBER=$("${CLAUDE_PLUGIN_ROOT}/scripts/get-pr-number.sh")
This uses the branch-to-PR-number cache (branch-map.json) with 1-hour TTL, falling back to GitHub API on cache miss.
If no PR exists, inform the user and stop.
Verify pr-review-and-document comment exists:
${CLAUDE_PLUGIN_ROOT}/scripts/find-review-comment.sh "$PR_NUMBER"
If no review comment exists, inform the user to run pr-review-and-document skill first.
Fetch all PR review comments (inline code comments):
${CLAUDE_PLUGIN_ROOT}/scripts/fetch-gemini-comments.sh "$PR_NUMBER"
The script returns JSON with Gemini suggestions, including:
id: Comment ID for deduplicationpriority: high, medium, or lowis_security: Whether it's a security issueis_outdated: Whether the comment is outdated (code changed)file: File pathline: Line number (null if file-level)body: Full comment bodysuggestion: Extracted code suggestion (if any)Apply filters to Gemini suggestions:
is_outdated: truereview_sources.gemini.consumed_comment_ids; fall back to legacy gemini_integrated_idsMap Gemini priorities to pr-review-and-document categories:
| Gemini Priority | PR Review Category |
|---|---|
high + is_security | 🔴 Critical Issues |
high | 🟡 Important Issues |
medium + is_security | 🟡 Important Issues |
medium | 💡 Suggestions |
low | 💡 Suggestions |
For each new Gemini suggestion, format as:
<details>
<summary><b>N. ⚠️ [Gemini] Issue Title</b></summary>
**Source:** Gemini Code Assist
**File:** `path/to/file.ts:line`
**Problem:** Description from Gemini comment.
**Suggested Fix:**
```suggestion
code here
```
Key formatting rules:
[Gemini] to identify source⚠️ status indicator (pending review)**Source:** Gemini Code Assist line<!-- pr-review-metadata ... --> blockUpgrade metadata to schema 1.1 with the shared helper when needed:
METADATA_JSON=$(printf '%s\n' "$EXISTING_CONTENT" | ${CLAUDE_PLUGIN_ROOT}/scripts/review-metadata-upgrade.sh --stdin --last-writer gemini-review-integrator)
Replace the updated hidden metadata block. Run this after all metadata edits (including the dual-write jq step below) have been applied to $METADATA_JSON:
# Set up a temp file for the modified metadata JSON.
# (If this code block already declares its own trap, extend it instead of adding a second line.)
METADATA_FILE=$(mktemp)
trap 'rm -f "$METADATA_FILE"' EXIT
# Write the fully-edited metadata JSON to the temp file.
printf '%s' "$METADATA_JSON" > "$METADATA_FILE"
# Replace the metadata block in the comment.
UPDATED_CONTENT=$(printf '%s\n' "$EXISTING_CONTENT" | ${CLAUDE_PLUGIN_ROOT}/scripts/review-metadata-replace.sh --stdin --metadata-file "$METADATA_FILE")
Mirror new consumed Gemini comment IDs into BOTH review_sources.gemini.consumed_comment_ids AND legacy gemini_integrated_ids (Phase 2 compatibility window)
Mirror the integration timestamp into BOTH review_sources.gemini.last_integrated_at AND legacy gemini_integration_date
Once Phase 2 ships, the legacy fields will be removed in a future release; until then, every write keeps both fields in sync so a Phase-1 reader still sees up-to-date IDs. The shared review-metadata-upgrade.sh helper only preserves existing legacy fields — it never back-fills new IDs — so this skill MUST perform the dual-write itself.
Apply the dual-write atomically with jq:
# Dual-write new Gemini IDs + integration timestamp during Phase 2 compat window.
# Both nested (1.1 canonical) and top-level (1.0 legacy) are kept in sync until
# the legacy fields are removed in a future release.
METADATA_JSON=$(printf '%s' "$METADATA_JSON" | jq \
--argjson new_ids "$NEW_INTEGRATED_IDS" \
--arg now "$(date -u +%Y-%m-%dT%H:%M:%SZ)" '
.review_sources.gemini.consumed_comment_ids = ((.review_sources.gemini.consumed_comment_ids // []) + $new_ids | unique)
| .review_sources.gemini.last_integrated_at = $now
| .gemini_integrated_ids = ((.gemini_integrated_ids // []) + $new_ids | unique)
| .gemini_integration_date = $now
')
$NEW_INTEGRATED_IDS must be a JSON array of the integer comment IDs newly consumed in this run (e.g. [2726014213, 2726014217]).
Preserve review_sources.codex, review_sources.claude, [Codex] issues, and untagged Claude issues
Increment issue counts in issues object
Update updated_at timestamp
Pipe updated content to cache-write-comment.sh via --stdin:
EXPECTED_CONTENT_HASH=$(jq -r '.content_hash // ""' ".pr-review-cache/pr-${PR_NUMBER}.json" 2>/dev/null || echo "")
if [ -n "$EXPECTED_CONTENT_HASH" ]; then
printf '%s\n' "$UPDATED_CONTENT" | ${CLAUDE_PLUGIN_ROOT}/scripts/cache-write-comment.sh --stdin "$PR_NUMBER" --expected-content-hash "$EXPECTED_CONTENT_HASH"
else
printf '%s\n' "$UPDATED_CONTENT" | ${CLAUDE_PLUGIN_ROOT}/scripts/cache-write-comment.sh --stdin "$PR_NUMBER"
fi
This updates local cache and syncs to GitHub in one step, without temp files.
If the script exits 4, another tool updated the cache; re-read the latest comment, merge only the new Gemini integrations, and retry once.
Summarize what was integrated:
Gemini Review Integration Complete:
- Found: X Gemini comments
- Outdated (skipped): Y
- Already integrated (skipped): Z
- Newly integrated: W
- Critical: A
- Important: B
- Suggestions: C
The pr-review-and-document metadata is extended with schema 1.1 source fields:
{
"review_sources": {
"gemini": {
"consumed_comment_ids": [2726014213, 2726014217],
"last_integrated_at": "2026-01-26T12:00:00Z"
}
},
"gemini_integrated_ids": [2726014213, 2726014217],
"gemini_integration_date": "2026-01-26T12:00:00Z"
}
This enables:
gemini_integrated_ids and gemini_integration_date are legacy compatibility fields. Read from review_sources.gemini.* first, but preserve legacy fields while older skills may still read them.
Use ${CLAUDE_PLUGIN_ROOT}/scripts/review-metadata-upgrade.sh to normalize old metadata before applying Gemini-specific updates, then ${CLAUDE_PLUGIN_ROOT}/scripts/review-metadata-replace.sh to write the updated JSON back without changing unrelated sections.
Gemini Code Assist comments have these characteristics:
Priority Indicators (in body):
 - High priority - Medium priority or  - Security-relatedOutdated Detection:
position: null indicates the code has changedCode Suggestions:
Gemini may perform multiple review rounds on a PR. The integration handles this by:
review_sources.gemini.consumed_comment_ids grows with each integrationconsumed_comment_ids are processedTo re-integrate after Gemini runs another review:
| Indicator | Meaning |
|---|---|
| ⚠️ | Pending review (newly integrated from Gemini) |
| ✅ | Fixed / Resolved |
| ⏭️ | Deferred / Not applicable |
| 🔴 | Escalated to blocking |
Initial status for all Gemini integrations is ⚠️ (pending review).
Before (pr-review-and-document comment):
### 🟡 Important Issues
<details>
<summary><b>1. ✅ Some Claude-found issue</b></summary>
...
</details>
After integration:
### 🟡 Important Issues
<details>
<summary><b>1. ✅ Some Claude-found issue</b></summary>
...
</details>
<details>
<summary><b>2. ⚠️ [Gemini] Suppress stderr hides errors</b></summary>
**Source:** Gemini Code Assist
**File:** `.claude/skills/pr-review-and-document/scripts/find-review-comment.sh:19`
**Problem:** Suppressing stderr with `2>/dev/null` can hide important underlying errors.
**Suggested Fix:**
```suggestion
PR_NUMBER=$(gh pr view --json number -q '.number' || echo "")
```
Before completing integration:
| Error | Action |
|---|---|
| No PR found | Inform user, stop |
| No review comment | Suggest running pr-review-and-document first |
| No Gemini comments | Inform user, nothing to integrate |
| API failure | Report error with details |
| All comments outdated | Inform user, nothing to integrate |
| All comments already integrated | Inform user, up to date |
npx claudepluginhub marxbiotech/pr-review-toolkit --plugin pr-workflowGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.