reviewer skill posts change requests as issue comments, not pull reviews — webhook doesn't dispatch address-review #111
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#111
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As the operator, I want the reviewer agent to post
REQUEST_CHANGESfeedback via the formal pull-review API so the webhook'spull_request_rejectedevent fires on its own and boss gets auto-dispatched onaddress-review, instead of me having to manually escalate every change request.What happens today
On PR #110 (2026-04-19), the reviewer posted its
🔴 REQUEST_CHANGESfeedback viamcp__forgejo__create_issue_comment. The comment body renders correctly on the PR, but:list_pull_reviewson the PR shows only the originalREQUEST_REVIEWentry — no formal review withstate: REQUEST_CHANGESexists.pull_request_rejectedevent.webhook-handlers.ts::handleChangesRequestednever runs, so boss is not dispatched on theaddress-reviewskill.I had to manually call
mcp__forgejo__create_pull_reviewwithstate: REQUEST_CHANGESto escalate issuecomment-6067 into a formal review, which then fired the webhook and dispatched boss. Happened silently — the only signal was "PR sitting un-addressed longer than it should".Root cause
skills/review.md(or whichever skill the reviewer uses) instructs the agent to post its verdict viamcp__forgejo__create_issue_comment. That posts a comment, not a review. Forgejo's review lifecycle events only fire on formal reviews.Fix
Update the reviewer skill to:
APPROVEDverdicts viamcp__forgejo__create_pull_reviewwithstate: APPROVED(not a comment).REQUEST_CHANGESverdicts viamcp__forgejo__create_pull_reviewwithstate: REQUEST_CHANGES.Optional:
COMMENT-state reviews for purely informational findings (non-blocking notes), though today the reviewer already folds those into the must-fix body.Acceptance criteria
Skill
skills/review.mdinstructs the reviewer to callmcp__forgejo__create_pull_review(nevermcp__forgejo__create_issue_commentfor the verdict).statevalues and when to use each.statematching the verdict.Regression
list_pull_reviewsshows astate: REQUEST_CHANGESentry, and boss gets auto-dispatched onaddress-reviewwithout manual escalation.Out of scope
comments: [{path, new_position, body}]) — keep the reviewer's output as a single review body for now; per-line comments can come later.References
skills/review.md— the file to amend.mcp__forgejo__create_pull_review— the correct API, takesstate: APPROVED | REQUEST_CHANGES | COMMENT.src/webhook-handlers.ts::handleChangesRequested— the dispatch target that requires the formal event.Dependencies
main.