How this skill is triggered — by the user, by Claude, or both
Slash command
/github:check-pr [PR number][PR number]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
PR のレビューコメントと CI ステータスを確認し、問題を解決する。
PR のレビューコメントと CI ステータスを確認し、問題を解決する。
If you don't understand which PR you should look into, ask user first.
CRITICAL: You MUST actually execute these commands and retrieve ALL comments. Do not skip this step or make assumptions about what comments exist.
EXECUTION REQUIREMENT: You MUST run ALL of these commands and display the raw output before proceeding to evaluation.
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments --paginate --jq '
[.[] | select(.performed_via_github_app == null or (.performed_via_github_app.name == "GitHub Actions" | not)) | select(has("minimized_reason") | not)]
| sort_by(.created_at) | reverse
| .[]
| "Created: \(.created_at)\nFile: \(.path)\nLine: \(.line // .original_line)\nAuthor: \(.user.login)\nComment: \(.body)\n---"
'
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/reviews --paginate --jq '
[.[] | select(has("body") and .body)]
| group_by(.user.login)
| map(sort_by(.submitted_at) | reverse | .[0])
| sort_by(.submitted_at) | reverse
| .[]
| "Submitted: \(.submitted_at)\nReviewer: \(.user.login)\nState: \(.state)\nBody: \(.body)\n---"
'
gh pr view [PR_NUMBER] --comments
minimized_reason field (hidden by GitHub)STOP: Before proceeding to evaluation, you MUST complete this verification checklist and report the results:
Run these verification commands and report the counts:
# Count inline comments (non-minimized)
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments --paginate --jq '[.[] | select(has("minimized_reason") | not)] | length'
# List all reviewers who left inline comments
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments --paginate --jq '[.[] | select(has("minimized_reason") | not) | .user.login] | unique'
# Count review summaries
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/reviews --paginate --jq '[.[] | select(has("body") and .body)] | group_by(.user.login) | length'
# List all reviewers who left review summaries
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/reviews --paginate --jq '[.[] | select(has("body") and .body)] | .user.login] | unique'
You MUST create a summary table like this BEFORE evaluation:
## Comment Retrieval Verification
### Inline Comments Retrieved:
- Total count: X comments
- Reviewers: [list all reviewer names including bots]
- Breakdown by reviewer:
- Copilot: X comments
- user1: X comments
- etc.
### Review Summaries Retrieved:
- Total count: X reviews
- Reviewers: [list all]
### Cross-check with review summaries:
- Review summary claimed: "X comments" ✅/❌ Matches actual count
- All reviewers accounted for: ✅/❌
### Verification Status:
- [ ] Retrieved all inline comments
- [ ] Retrieved all review summaries
- [ ] Counted and verified comment counts
- [ ] Listed all reviewers (humans AND bots)
- [ ] Cross-checked claimed vs actual comment counts
- [ ] Ready to proceed to evaluation
**DO NOT PROCEED** until all checkboxes are marked.
CRITICAL: You MUST independently evaluate EVERY review comment that was verified in step 2.5, regardless of the reviewer's suggested priority.
Count verification: The number of comments you evaluate MUST match the count from step 2.5. If you verified 11 inline comments, you MUST evaluate all 11.
IMPORTANT: The category (🔴 critical, ⚠️ issue, 💡 suggestion) is just a label from the reviewer. Your decision must be based ONLY on:
A "suggestion" with high impact and low cost should be fixed. An "issue" that's actually a false positive should be skipped. Never defer something simply because it's labeled as a "suggestion".
DEFERRAL RULE: You can ONLY defer a finding when it is explicitly planned in a future task. Before deciding to defer:
.spec-workflow/specs/*/tasks.md for pending tasks that would address the finding## Review Comment #1: Missing test coverage for error states
- **Category**: 🔴 Critical
- **Impact**: High - ensures error handling works correctly
- **Cost**: Medium - need to add 2-3 test cases
- **Alignment**: Follows AGENTS.md testing requirements
- **Future task**: No
- **Decision**: ✅ FIX NOW
- **Reasoning**: High impact on correctness, aligns with project standards, reasonable effort
## Review Comment #2: Extract complex composable into separate function
- **Category**: 💡 Suggestion
- **Impact**: Medium - improves readability and reusability
- **Cost**: Low - straightforward refactoring
- **Alignment**: Follows Compose best practices in AGENTS.md
- **Future task**: No
- **Decision**: ✅ FIX NOW
- **Reasoning**: Good impact/cost ratio, aligns with project patterns, low cost = do it now
## Review Comment #3: Add notification helper implementation binding
- **Category**: 🔴 Critical
- **Impact**: High - required for Hilt DI
- **Cost**: Low - stub implementation needed
- **Alignment**: Required for runtime
- **Future task**: Yes - Task 20 "Create ReminderNotificationHelper implementation"
- **Decision**: ⏭️ DEFER to Task 20
- **Reasoning**: Explicitly planned in Task 20, not needed until UI integration (Tasks 27-30)
## Review Comment #4: Use named parameters for Java API call
- **Category**: ⚠️ Issue
- **Impact**: N/A - not applicable to Java interop
- **Cost**: N/A - cannot be implemented
- **Alignment**: Named parameters rule applies to Kotlin code only
- **Future task**: N/A
- **Decision**: ❌ SKIP (False Positive)
- **Reasoning**: Java APIs don't support named parameters; this is expected behavior
## Review Comment #5: Add logging for debugging
- **Category**: 💡 Suggestion
- **Impact**: Medium - helps with production debugging
- **Cost**: Low - add a few Timber.d() calls
- **Alignment**: Good practice for observability
- **Future task**: No
- **Decision**: ✅ FIX NOW
- **Reasoning**: Low cost, practical value, no future task = implement now
After evaluating all comments, present your complete analysis to the user with:
Verification before proceeding:
Then wait for user confirmation before proceeding with fixes.
For each comment decided FIX NOW in step 3, assess whether a project rule / skill / doc update could prevent the same mistake from recurring on future edits.
Propose an entry only when all three are true:
If any of the three is "no", skip that comment.
Pick the location that best matches the nature of the rule:
.claude/rules/*.md — reference knowledge loaded automatically via globs (use when the rule applies to a specific file pattern).claude/skills/*.md — workflow / procedure that can be invoked (use when the rule is a multi-step process)CLAUDE.md — project-wide always-on guidance (use sparingly; only for rules that apply everywhere)AGENTS.md — agent-specific guidanceCONTRIBUTING.md, style guides)Present a table of all proposed entries:
## Preventive Update Proposals
| # | Review comment summary | Where to record | What to record | Rationale |
|---|---|---|---|---|
| 1 | Global `TooManyFunctions` bump instead of local suppress | `.claude/rules/detekt.md` (globs `detekt-config.yml`, `**/*ViewModel.kt`) | "Suppress TooManyFunctions locally on ViewModels; don't bump the global threshold" | Prevents future contributors from re-bumping the global config |
Ask the user per-row whether to add each proposal, using the same UX as the FIX NOW / DEFER / SKIP decision flow in step 3.
Proposed updates MUST be concise and specific, not generic best-practice dumps. If the rule cannot be expressed in 1–3 sentences, it is too vague to be useful.
If no comments meet all three heuristics, report:
## Preventive Update Proposals
No preventive updates identified.
Then proceed to step 4.
Approved entries land as separate commits scoped docs(claude): ... (or the project equivalent, e.g. docs(rules): ...). Do NOT bundle preventive updates with code fixes — they belong to different concerns and reviewers may want to evaluate them independently.
You MUST create one commit for each problem you fix.
Check if the build, test and lint succeeds once you finished fixing:
./gradlew assembleDebug testDebugUnitTest lint
When it's ok, commit the fix and push.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub yshrsmz/cc-plugins --plugin github