.claude/skills/cross-review/SKILL.md
Cross-model PR review. Claude Code and Cursor review a PR alternately on a shared Obsidian document, rallying until issues converge or disagreements are documented for human decision.
npx skillsauth add asonas/dotfiles cross-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Claude Code and Cursor review a PR alternately on a shared Obsidian document. Each reviewer appends findings independently. Disagreements are documented with Pros/Cons for human decision — neither model wins by attrition.
Language: All content written to the Obsidian document MUST be in English. This applies to PR descriptions, findings, discussion entries, and the final summary.
/cross-review <PR_URL>
Only critical and major drive continuation of rounds.
Fetch PR information using ghro (read-only):
# PR metadata
ghro pr view <PR_URL> --json title,body,author,baseRefName,headRefName,additions,deletions,changedFiles,number
ghro pr view <PR_URL> --comments
ghro api repos/{owner}/{repo}/pulls/{number}/comments
# Diff
ghro pr diff <PR_URL>
Extract repo name and PR number from the URL for the document filename.
Create reviews/PR-{repo}-{number}.md in Obsidian using obsidian_append_content.
Use this template — fill in the PR Info, Description, External Comments, and Diff sections. Leave the rest empty for now:
## PR Info
- URL: {url}
- Author: {author}
- Branch: {head} -> {base}
- Changes: +{additions}/-{deletions} across {changedFiles} files
## Description
{PR body}
## External Comments
{Existing review comments from greptile, humans, etc. Write "None" if empty}
## Diff
{Full diff, or for very large PRs: file-by-file summary with key sections}
## Review Findings
## Discussion
## Current Status
- Round: 0
- Unresolved: 0
- Resolved: 0
- Human Decision Needed: 0
- Next action: Claude Code Round 1
## Final Summary
Read the current document from Obsidian. Review the diff using the pr-review skill perspectives:
Also read previous round findings (if any) and respond to Cursor's points in the Discussion section.
Use obsidian_patch_content with target: "Review Findings" to add your findings under that section. Do NOT create a new ## Review Findings header — patch the existing one.
### Round {N} - Claude Code
- [{severity}] {finding} ({file}:{line})
- [{severity}] {finding} ({file}:{line})
Bullet point guidelines:
Use obsidian_patch_content with target: "Current Status" to replace the status values. Do NOT create a new ## Current Status header.
Pass the full review document content to cursor_review MCP:
composer-2Read the response and use obsidian_patch_content with target: "Review Findings" to add Cursor's findings under that section as ### Round {N} - Cursor. Do NOT create a new ## Review Findings header.
If Cursor's response needs follow-up, use cursor_continue to ask for clarification.
After each pair of rounds (Claude Code + Cursor), reconcile:
For disagreements, write in the Discussion section:
### {Topic}
- **Claude Code**: {position with reasoning}
- **Cursor**: {position with reasoning}
- **Status**: In Discussion
If a disagreement persists for 2 rounds, escalate:
- **Status**: Human Decision Needed
| | Pros | Cons |
|---|------|------|
| Option A ({who proposed}) | ... | ... |
| Option B ({who proposed}) | ... | ... |
IMPORTANT: If a reviewer changes position, the reason MUST be stated. No silent capitulation.
After reconciliation, check if the review should continue:
Use obsidian_patch_content with target: "Final Summary" to write the final summary into the existing section. Do NOT create a new ## Final Summary header.
## Final Summary
### Resolved Issues
{List of issues both reviewers agreed on, with recommended fixes}
### Human Decision Needed
{List of disagreements with Pros/Cons tables}
### All Findings by Severity
- Critical: {count}
- Major: {count}
- Minor: {count}
- Nit: {count}
### Reviewer Agreement
- Agreed: {count}
- Disagreed (human decides): {count}
Use obsidian_get_periodic_note to find today's daily note, then append a link:
- Reviewed [[PR-{repo}-{number}]] ({critical} critical, {major} major, {disagreements} disagreements)
These rules are non-negotiable:
data-ai
Summarize the day's work and append to the daily note in Obsidian.
data-ai
memory-vector と memory-graph を横断検索して過去の記憶を呼び出す。「思い出して」「覚えていますか」「前に話した」等の記憶呼び出し時に使う。
development
Review GitHub Pull Requests. When given a PR URL, fetches diff and comments using gh command, then performs objective and critical code review.
tools
Use when starting the day. Organizes tasks, calendar, and context from previous sessions, then coaches through blockers on Linear issues via interactive dialogue.