From project-toolkit
Coordinates GitHub PR review responses: extracts context, triages comments by domain and actionability, tracks threads, acknowledges feedback, and maps resolutions. Use for handling PR feedback or review threads.
npx claudepluginhub rjmurillo/ai-agents --plugin project-toolkitThis skill uses the workspace's default tool permissions.
Coordinates PR review responses through context gathering, comment tracking, and orchestrator delegation.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Coordinates PR review responses through context gathering, comment tracking, and orchestrator delegation.
| Phrase | Action |
|---|---|
respond to PR comments | Full workflow |
address review feedback on PR #123 | Full workflow |
handle PR review comments | Full workflow |
fix PR review issues | Full workflow |
reply to reviewer on PR #123 | Target specific PR |
ALWAYS extract PR context from prompt first. Never prompt for information already provided.
SCRIPTS_DIR="${CLAUDE_PLUGIN_ROOT:-.claude}/skills/github/scripts"
# Extract PR number and owner/repo from user prompt
python3 "$SCRIPTS_DIR/utils/extract_github_context.py" --text "[prompt]" --require-pr
Supported patterns:
PR 806, PR #806, pull request 123, #806github.com/owner/repo/pull/123See references/workflow.md Phase -1 for full details.
| Operation | Script |
|---|---|
| Context extraction | extract_github_context.py |
| PR metadata | get_pr_context.py |
| Comments | get_pr_review_comments.py --include-issue-comments |
| Domain classification | get_pr_review_comments.py --group-by-domain |
| Reviewers | get_pr_reviewers.py |
| Reply | post_pr_comment_reply.py |
| Reaction | add_comment_reaction.py |
| Resolve thread | resolve_pr_review_thread.py |
| Priority | Reviewer | Signal |
|---|---|---|
| P0 | cursor[bot] | 100% actionable |
| P1 | Human reviewers | High |
| P2 | coderabbitai[bot] | ~50% |
| P2 | Copilot | ~44% |
Comments are classified into domains for priority-based triage:
| Priority | Domain | Keywords | Use Case |
|---|---|---|---|
| P0 | Security | CWE-*, vulnerability, injection, XSS, SQL, CSRF, auth, secrets, credentials, TOCTOU, symlink, traversal | Process FIRST - security-critical issues |
| P1 | Bug | error, crash, exception, fail, null, undefined, race condition, deadlock, memory leak | Address functional issues |
| P2 | Style | formatting, naming, indentation, whitespace, convention, prefer, consider, suggest | Apply improvements when time permits |
| P3 | Summary | Bot-generated summaries (## Summary, ### Overview) | Informational only |
Domain-First Processing Workflow:
SCRIPTS_DIR="${CLAUDE_PLUGIN_ROOT:-.claude}/skills/github/scripts"
# Get comments grouped by domain
comments=$(python3 "$SCRIPTS_DIR/pr/get_pr_review_comments.py" --pull-request 908 --group-by-domain --include-issue-comments)
# Process security FIRST (CWE, vulnerabilities, injection)
echo "$comments" | jq -r '.Security[]' | while read -r comment; do
# Handle security-critical issues immediately
# Route to security agent if needed
echo "Processing security comment"
done
# Then bugs (errors, crashes, null references)
echo "$comments" | jq -r '.Bug[]' | while read -r comment; do
# Address functional issues
echo "Processing bug comment"
done
# Then style (formatting, naming, conventions)
echo "$comments" | jq -r '.Style[]' | while read -r comment; do
# Apply style improvements
echo "Processing style comment"
done
# Finally general comments (everything else)
echo "$comments" | jq -r '.General[]' | while read -r comment; do
# Process general feedback
echo "Processing general comment"
done
# Skip summary comments (bot-generated noise)
# .Summary contains informational summaries only
Benefits:
Use this skill when:
Use direct post_pr_comment_reply.py instead when:
extract_github_context.pypr-comment-responder-skills memory--group-by-domain for priority triage).agents/pr-comments/PR-[N]/comments.mdSee references/workflow.md for full phase details.
See references/gates.md for gate implementation.
See references/templates.md for:
See references/bots.md for:
| Avoid | Why | Instead |
|---|---|---|
| Replying to bot summaries as actionable comments | Wastes time on informational noise | Skip Summary domain comments |
| Processing style before security | Misses critical issues | Process domains in P0-P3 priority order |
Using raw gh commands | Bypasses tested skill scripts | Use post_pr_comment_reply.py and other skill scripts |
| Prompting user for PR number already in prompt | Redundant and frustrating | Use extract_github_context.py to parse from input |
get_pr_review_comments.py --group-by-domainreferences/templates.md