Skip to content

Comments

fix(pull-request skill): reply and resolve all threads including non-actionable#3573

Open
PierreBrisorgueil wants to merge 2 commits intomasterfrom
fix/pull-request-skill-resolve-all-threads
Open

fix(pull-request skill): reply and resolve all threads including non-actionable#3573
PierreBrisorgueil wants to merge 2 commits intomasterfrom
fix/pull-request-skill-resolve-all-threads

Conversation

@PierreBrisorgueil
Copy link
Collaborator

@PierreBrisorgueil PierreBrisorgueil commented Feb 24, 2026

Summary

  • What changed: Updated .claude/skills/pull-request/SKILL.md — loop step 6 now requires replying to and resolving all open threads (including non-actionable/informational ones); stop condition updated to zero open threads.
  • Why: Non-actionable threads were being skipped, leaving unresolved threads on PRs after merging. The stop condition "zero actionable comments" allowed PRs to be marked done with open threads still present.
  • Related issues: Closes fix(pull-request skill): reply and resolve all threads including non-actionable #3572

Scope

  • Modules impacted: .claude/skills/pull-request/SKILL.md (skill definition only)
  • Cross-module impact: none
  • Risk level: low

Validation

  • npm run lint
  • npm run test:unit
  • npm run build
  • Manual checks done (if applicable)

Guardrails check

  • No secrets or credentials introduced (.env*, secrets/**, keys, tokens)
  • No risky rename/move of core stack paths
  • Changes remain merge-friendly for downstream projects
  • Tests added or updated when behavior changed

Notes for reviewers

  • Security considerations: none — skill file only, no application code changed.
  • Mergeability considerations: clean skill-only diff, no conflicts expected with downstream merges.
  • Follow-up tasks (optional): Mirror this fix to the Node stack's equivalent pull-request skill if one exists.

Summary by CodeRabbit

  • Documentation
    • Clarified PR monitoring steps to explicitly handle non-actionable unresolved review threads and their resolution flow
    • Expanded guidance for informational items and false positives, including examples and when a brief reply plus thread resolution is expected
    • Adjusted termination and branch-protection checks to reflect the updated control flow after all unresolved threads are addressed

…actionable

Informational/false-positive threads must be explicitly replied to and
resolved before the stop condition is met — not silently skipped.

- Loop procedure: add step 6 for non-actionable open threads (reply, resolve)
- Stop condition: zero open threads (not just zero actionable)
@coderabbitai
Copy link

coderabbitai bot commented Feb 24, 2026

📝 Walkthrough

Walkthrough

The pull-request skill docs were updated to require replying to and resolving non-actionable/informational review threads, added an explicit loop step to handle those replies/resolutions, and changed the stop condition to wait for zero unresolved threads before checking branch protection and stopping.

Changes

Cohort / File(s) Summary
PR Monitor Skill Documentation
/.claude/skills/pull-request/SKILL.md
Step 6 split to require replying and resolving non-actionable/unresolved threads; 6b expanded with examples and resolution instructions; actionable workflow retained and step 7 added to check branch protection once zero unresolved threads remain.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Monitor as PR Monitor
  participant GH as GitHub API (GraphQL/Threads)
  participant CI as Branch Protection / CI

  Monitor->>GH: Fetch review threads
  GH-->>Monitor: Return threads (actionable + non-actionable)
  alt non-actionable/unresolved exist
    Monitor->>GH: Post brief reply to each non-actionable thread
    Monitor->>GH: Resolve threads via GraphQL
    Monitor-->>Monitor: GOTO fetch threads (loop)
  else zero unresolved threads
    Monitor->>CI: Check branch protection / CI status
    CI-->>Monitor: Return status
    Monitor->>Monitor: Stop if checks pass
  end
Loading

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related issues

Possibly related PRs

Suggested labels

Refactor

Poem

🐰
I hop through threads both small and tall,
Replying, resolving — I answer all.
No note left open, no comment unspun,
We loop and tidy till the job is done.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: updating the pull-request skill to require replying and resolving all threads, including non-actionable ones.
Description check ✅ Passed The description follows the template well, covering summary, scope, validation, guardrails, and reviewer notes with appropriate detail and context.
Linked Issues check ✅ Passed All code changes directly address issue #3572 requirements: step 6 now handles non-actionable threads, stop condition updated to zero unresolved threads, and informational guidance expanded.
Out of Scope Changes check ✅ Passed All changes are scoped to the .claude/skills/pull-request/SKILL.md file as stated in objectives; no out-of-scope modifications to application code or other files detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/pull-request-skill-resolve-all-threads

Comment @coderabbitai help to get the list of available commands and usage tips.

@PierreBrisorgueil PierreBrisorgueil marked this pull request as ready for review February 24, 2026 12:07
Copilot AI review requested due to automatic review settings February 24, 2026 12:07
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.claude/skills/pull-request/SKILL.md (2)

239-242: ⚠️ Potential issue | 🟡 Minor

Stop condition text contradicts the loop update.

Section 6f still says “zero unresolved actionable threads,” but the loop now stops on “zero open threads.” Please align this stop condition with the new policy.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pull-request/SKILL.md around lines 239 - 242, Update the
stop-condition wording in the "6f. Stop condition" section: replace the phrase
“zero unresolved actionable threads” with “zero open threads” (or otherwise
mirror the loop's stop condition) so the text matches the new policy; ensure the
paragraph under the "6f. Stop condition" heading and any nearby references use
the exact same term (“zero open threads”) as the loop update.

3-3: ⚠️ Potential issue | 🟡 Minor

Align description with new “zero open threads” stop condition.

Line 3 still says “zero actionable threads,” which conflicts with the updated loop logic. Update the description to “zero open threads” to avoid confusion.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pull-request/SKILL.md at line 3, Replace the phrase "zero
actionable threads" with "zero open threads" in the PR lifecycle description so
it matches the updated loop logic; edit the description line in SKILL.md (the
"Full PR lifecycle — branch, commit, issue, draft PR, CI, ready, autonomous
monitor loop (fix comments, resolve threads, iterate until CI green and zero
actionable threads)." string) to read "...iterate until CI green and zero open
threads."
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.claude/skills/pull-request/SKILL.md:
- Around line 239-242: Update the stop-condition wording in the "6f. Stop
condition" section: replace the phrase “zero unresolved actionable threads” with
“zero open threads” (or otherwise mirror the loop's stop condition) so the text
matches the new policy; ensure the paragraph under the "6f. Stop condition"
heading and any nearby references use the exact same term (“zero open threads”)
as the loop update.
- Line 3: Replace the phrase "zero actionable threads" with "zero open threads"
in the PR lifecycle description so it matches the updated loop logic; edit the
description line in SKILL.md (the "Full PR lifecycle — branch, commit, issue,
draft PR, CI, ready, autonomous monitor loop (fix comments, resolve threads,
iterate until CI green and zero actionable threads)." string) to read
"...iterate until CI green and zero open threads."

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4ca1822 and ff776c8.

📒 Files selected for processing (1)
  • .claude/skills/pull-request/SKILL.md

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a workflow issue in the pull-request skill where non-actionable review threads (e.g., informational comments, approvals, false positives) were being skipped instead of replied to and resolved, leaving open threads on merged PRs. The solution updates the autonomous monitor loop to require handling ALL thread types and changes the stop condition from "zero actionable comments" to "zero open threads."

Changes:

  • Added new step 6 in the monitor loop to handle non-actionable threads by replying and resolving them
  • Renumbered the stop condition from step 6 to step 7 and updated it to check for "zero open threads" instead of "zero actionable comments"
  • Updated the "Informational" category definition to clarify that these threads must be replied to and resolved (not skipped)

@codecov
Copy link

codecov bot commented Feb 24, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.93%. Comparing base (a671a71) to head (2dd1ce2).
⚠️ Report is 3 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #3573   +/-   ##
=======================================
  Coverage   95.93%   95.93%           
=======================================
  Files          20       20           
  Lines         516      516           
  Branches      140      140           
=======================================
  Hits          495      495           
  Misses         21       21           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…tency

- Terminology: 'open threads' → 'unresolved threads' throughout loop procedure
- Step 6: add 'all' to match step 5 explicitness (reply all, resolve all)
- Informational section: reformat as bullet list, clarify review threads vs PR-level comments
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.claude/skills/pull-request/SKILL.md (2)

3-3: ⚠️ Potential issue | 🟠 Major

Align summary description with new stop condition (“zero unresolved threads”).

The description still says “zero actionable threads,” which conflicts with the updated loop. Update to “zero unresolved threads” to reflect the new behavior.

Proposed fix
-description: Full PR lifecycle — branch, commit, issue, draft PR, CI, ready, autonomous monitor loop (fix comments, resolve threads, iterate until CI green and zero actionable threads).
+description: Full PR lifecycle — branch, commit, issue, draft PR, CI, ready, autonomous monitor loop (fix comments, resolve threads, iterate until CI green and zero unresolved threads).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pull-request/SKILL.md at line 3, Update the description line
in SKILL.md to match the new stop condition by replacing the phrase "zero
actionable threads" with "zero unresolved threads" (edit the value for the
description key shown in the diff); ensure the single-line summary now reads
"...CI, ready, autonomous monitor loop (fix comments, resolve threads, iterate
until CI green and zero unresolved threads)."

244-245: ⚠️ Potential issue | 🟠 Major

Stop condition still references “unresolved actionable” instead of “unresolved.”

Section 6f contradicts the new loop logic by limiting to “unresolved actionable threads.” This can cause the loop to stop while non-actionable unresolved threads remain. Update to “zero unresolved threads.”

Proposed fix
-All CI checks pass **and** a complete polling pass (after the grace period) produces **zero unresolved actionable threads**.
+All CI checks pass **and** a complete polling pass (after the grace period) produces **zero unresolved threads**.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pull-request/SKILL.md around lines 244 - 245, Update the stop
condition text in Section 6f to match the loop logic by replacing the phrase
"zero unresolved actionable threads" with "zero unresolved threads" so the stop
condition no longer excludes non-actionable unresolved threads; locate the
Section 6f wording (search for "unresolved actionable threads" or the stop
condition sentence) and change it to explicitly state "zero unresolved threads."
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.claude/skills/pull-request/SKILL.md:
- Line 3: Update the description line in SKILL.md to match the new stop
condition by replacing the phrase "zero actionable threads" with "zero
unresolved threads" (edit the value for the description key shown in the diff);
ensure the single-line summary now reads "...CI, ready, autonomous monitor loop
(fix comments, resolve threads, iterate until CI green and zero unresolved
threads)."
- Around line 244-245: Update the stop condition text in Section 6f to match the
loop logic by replacing the phrase "zero unresolved actionable threads" with
"zero unresolved threads" so the stop condition no longer excludes
non-actionable unresolved threads; locate the Section 6f wording (search for
"unresolved actionable threads" or the stop condition sentence) and change it to
explicitly state "zero unresolved threads."

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ff776c8 and 2dd1ce2.

📒 Files selected for processing (1)
  • .claude/skills/pull-request/SKILL.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(pull-request skill): reply and resolve all threads including non-actionable

1 participant