pr-feedback — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited pr-feedback (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Fetch all review feedback and CI status from the PR associated with the current branch, triage each item, implement fixes, and propose responses.
All commands auto-detect the repository and PR from the current branch.
Run the three fetch commands to collect all feedback:
python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py threads # unresolved inline review threads
python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py ci # CI check status and failures
python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py comments # general PR comments and PR descriptionIf any fails (no PR for current branch, auth issues), report the error and stop.
threads returns unresolved_threads with thread_id, path, line, and comments (each with node_id, database_id, diff_hunk).
ci returns ci_summary (pass/fail/pending counts) and failed_checks (with run_id, job_id for log fetching).
comments returns pr_body (may contain bot-appended review content), pr_comments (each with node_id, database_id), and pr_author.
For each unresolved thread, read the file at the commented path and lines for context. Read the entire thread (including replies) to understand the final ask. Classify into one of three actions:
Implement when the comment is:
Dismiss (with concise, respectful explanation) when:
Ask (escalate to user) when:
When in doubt between Implement and Ask, prefer Ask.
Process comments from pr_comments that contain actionable review feedback. Skip CI status messages, merge bot noise, and other non-review content. Look for:
Triage these using the same Implement / Dismiss / Ask criteria. Since these are not tied to specific lines, read the relevant files mentioned in the comment for context.
Scan pr_body for bot-appended review sections. Common patterns:
Extract actionable items and triage them. Pay particular attention to "must-fix" items -- they indicate merge-blocking concerns from the bot's perspective.
Flag any findings that are factually incorrect (hallucinations). These need correction in the response phase.
If ci_summary.failed is 0, skip this step.
For each entry in failed_checks, fetch the failed job logs:
gh run view {run_id} --log-failed 2>&1 | tail -200Diagnose each failure and classify:
Fix when:
Skip (with explanation) when:
When fixing, read the relevant test file and source file to understand the failure, then apply the fix.
After processing all feedback and CI failures, present results grouped by action:
Wait for user review of code changes before proceeding to Step 5.
After the user approves the code changes, propose a response plan. Present the full plan and wait for approval before executing any of it.
python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py resolve THREAD_IDpython3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py reply DATABASE_ID "Fixed: ..."python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py reply DATABASE_ID "Explanation..."python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py react review DATABASE_IDDraft a single follow-up PR comment addressing multiple non-threaded items together:
python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py comment "Response text..."Use this for:
To react to a general PR comment: python3 ~/.claude/skills/pr-feedback/scripts/pr_feedback.py react issue DATABASE_ID
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.