npx claudepluginhub waynebrantley/aitools --plugin ai-toolsThis skill uses the workspace's default tool permissions.
Systematically address unresolved review comments on GitHub pull requests for the current branch.
Retrieves texts, DMs, one-time codes, and inspects threads in ECC workflows. Provides evidence of exact sources checked for verification before replies.
Delivers expertise for HS tariff classification, customs documentation, duty optimization, restricted party screening, and trade compliance across jurisdictions.
Process documents with Nutrient API: convert formats (PDF, DOCX, XLSX, images), OCR scans (100+ languages), extract text/tables, redact PII, sign, fill forms.
Systematically address unresolved review comments on GitHub pull requests for the current branch.
gh CLI installed and authenticated (gh auth status)node ${CLAUDE_PLUGIN_ROOT}/skills/address-pr-comments/scripts/fetch-pr-comments.mjs
This returns JSON with:
If no PR found: Prompt user to push branch or create PR first.
Display comments in a numbered summary format, grouped by file:
## Unresolved Review Comments for PR #142
### src/components/Form.tsx
1. [C-1001] @alice (line 23): "Add aria-label for accessibility"
2. [C-1002] @bob (line 45): "Validation should happen on blur"
### src/utils/validate.ts
3. [C-1003] @alice (line 12): "Email regex is too permissive"
---
Total: 3 unresolved comments across 2 files
Sorting Priority:
If selection argument was provided, use it. Otherwise:
Selection Syntax:
1,3,5 - Select specific items1-5 - Select rangeall - Select all unresolvedskip - Skip and end skillFor each selected comment, display:
## Comment #1 - src/components/Form.tsx:23
### Code Context (lines 20-26):
```tsx
20: export function Form({ onSubmit }) {
21: const [email, setEmail] = useState('');
22:
23: return <input type="email" value={email} /> // <-- Comment here
24:
25: // ...
26: }
@alice (2 days ago):
Add aria-label for accessibility. Screen readers need this to identify the input.
@you (1 day ago):
Good catch, will fix.
### Step 5: Implement Fixes
For each selected comment, spawn a fix subagent:
Task: Address review comment on {filename}:{line}
Context:
Requirements:
Success: Comment feedback addressed appropriately
**Parallel Execution:**
- Use calculate-parallelism to determine MAX_PARALLEL
- Process multiple files concurrently when comments are in different files
- Process sequentially when multiple comments affect the same file
### Step 6: Verify Changes
After fixing each comment:
1. **Run related tests** (if any):
```bash
# Detect test framework and run tests for modified files
node ${CLAUDE_PLUGIN_ROOT}/skills/test-doctor/scripts/detect-test-environment.mjs
# Based on detected environment
pnpm exec prettier --check {files}
pnpm exec eslint {files}
pnpm exec tsc --noEmit
## Summary
✅ Addressed 3 comments:
- src/components/Form.tsx:23 - Added aria-label
- src/components/Form.tsx:45 - Changed validation to onBlur
- src/utils/validate.ts:12 - Improved email regex
Tests: PASS
Linting: PASS
Ready to commit? (y/n)
fetch-pr-comments.mjsFetches PR comments for the current branch:
node scripts/fetch-pr-comments.mjs [--open-only]
Output (JSON):
{
"pull_request": {
"number": 142,
"title": "Add form validation",
"html_url": "https://github.com/org/repo/pull/142",
"head_branch": "feature/validation",
"base_branch": "main"
},
"discussions": [...],
"open_discussions": [...]
}
parse-comments.mjsParses and formats comments for display:
node scripts/parse-comments.mjs < comments.json
Output: Formatted markdown summary
get-code-context.mjsGets code context around a specific line:
node scripts/get-code-context.mjs <file> <line> [--context=3]
Output: Code snippet with line numbers
CRITICAL: Do NOT work around script failures.
If any script in this skill produces no output, fails, or returns unexpected results:
If a script fails, ask the user how to proceed before continuing.
Common Errors:
| Error | Resolution |
|---|---|
| No PR found | gh pr create or push branch first |
| Auth failed | Run gh auth login |
| Rate limited | Wait and retry with backoff |
| File not found | Comment may be on deleted/renamed file - skip |
This skill is used by pr-doctor as part of the complete PR health workflow: