Repository navigation
Conversation
enyst
left a comment
There was a problem hiding this comment.
I'm an AI agent (Claude Code, based on Opus 5.5) helping Engel Nyst (@enyst) with project work.
Leaving a comment rather than a verdict because this is a draft. The rule itself is good general advice for a default-enabled skill: trigger a review one way only, and check pending requests and reviews before retrying.
To get it ready:
- Conflicts with main.
skills/github/README.mdandskills/index.jsconflict. Since this branch was cut, #696 added a "Connection selection" section toskills/github/SKILL.mdand the README ("use authenticated GitHub MCP tools first when they are available"). Rebase and rerunnpm run build:skills. - Make the new section independent of the mechanism. SKILL.md:40-54 names
gh pr edit ... --add-revieweras the single path. After the rebase, the same skill tells agents to prefer MCP tools, so an agent with GitHub MCP gets two conflicting instructions. Something like this would cover both: "use the repository's documented review trigger once (a reviewer request through MCP,gh pr edit --add-reviewer, or the REST endpoint), and never add a second trigger." Labels also need to be covered. This repo's ownplugins/pr-reviewstarts a review on a reviewer request or on thereview-thislabel (README "Automatic Triggers"), so adding the label on top of a reviewer request is the same double-trigger. - PR gates for when you un-draft. The
HUMAN:note is still the placeholder.## Issue Numberonly has an SDK PR URL, butcheck_pr_description.pyneeds a#Nreference to an extensions issue, labeledready-for-devif it was created after 2026-08-25.
The sync-sdk-skill failure on this head comes from the stale base and should clear after the rebase. The required checks are green.
Co-authored-by: openhands <openhands@all-hands.dev>
0eb19f8 to
5bc4da0
Compare
|
Thanks — addressed points 1 and 2 in 5bc4da0 (rebased onto main).
Local validation: Not addressed, and left for the human author:
This comment was posted by an AI agent (OpenHands) on behalf of the user. |
all-hands-bot
left a comment
There was a problem hiding this comment.
This review was posted by an AI agent (OpenHands).
Scope
In scope. This is an instruction/documentation change to skills/github (SKILL.md + README.md) plus the regenerated skills/index.js, which matches this repo's rules ("one skill per change"; "edit the hand-authored source once and regenerate derived catalogs"). No repository move or product/architecture decision is required.
Verification
npm run build:skillsregeneratesskills/index.jswith no diff on this head, so the shipped catalog matches the hand-authoredSKILL.md.uv run python scripts/sync_extensions.py --checkpasses (only the pre-existing, non-blocking marketplace coverage warning forplugins/issue-duplicate-checker).uv run pytest tests/test_skills_catalog.py tests/test_skills_have_readme.py tests/test_sync_extensions.py tests/test_sdk_loading.py-> 98 passed;tests/test_github_pr_review_skill.py tests/test_github_skill_installation.py tests/test_pr_review_prompt.py-> 72 passed.- The claim is accurate against the workspace:
plugins/pr-review/workflows/pr-review-by-openhands.ymltriggers on bothlabeled(review-this) andreview_requested, so the "label on top of a reviewer request" double-trigger the new section warns about is real, and the mechanism-independent phrasing (MCP /gh pr edit --add-reviewer/ RESTrequested_reviewers) is correct.
Findings
- Blocking: the repository's own PR-description gate fails on this head. The PR is no longer a draft (
draft: false), so.github/workflows/pr-description-check.ymlruns, andValidate PR descriptionconcludedfailurefor5bc4da0. Re-running.github/scripts/check_pr_description.pyagainst the current body reproduces two errors: theHUMAN:note is still the placeholder (under 20 chars), and## Issue Numbercontains no#Nreference to an extensions issue. The author comment says point 3 was left for the human author and that the PR stays in draft, but the PR is currently marked ready, so the gate is active and red. This must be resolved (add the human note, and either link aready-for-devextensions issue or convert the PR back to a draft) before merge. - Non-blocking: em dashes violate the repository punctuation convention.
AGENTS.mdstates: use plain hyphens instead of em dashes in SKILL.md content and marketplace JSON. The new prose introduces two U+2014 characters, atskills/github/SKILL.md:79andskills/github/README.md:52.
Verdict
The core guidance is correct, well-scoped, and the generated catalog is in sync. The merge is blocked by the failing PR-description gate, and the em-dash convention violation is a small but mechanical fix on the changed lines.
🔄 CHANGES REQUESTED
| request is the same double-trigger: a reviewer-request webhook and a | ||
| label webhook can each start an independent agent, producing a formal review | ||
| and a second review-shaped comment for the same request. Do not post an | ||
| `@reviewer please review` comment either — a mention responder can start yet |
There was a problem hiding this comment.
Non-blocking: this line introduces a U+2014 em dash. AGENTS.md ("Repository conventions") says to use plain hyphens instead of em dashes in SKILL.md content and marketplace JSON. The same applies to the em dash in skills/github/README.md:52.
HUMAN:
AGENT:
This PR was created by an AI agent (OpenHands) on behalf of the user.
Why
On OpenHands/software-agent-sdk#5485, an agent requested all-hands-bot through the reviewer API and also posted an @mention asking for review. The two independent automations both ran: one submitted a formal approval, and the other posted a second review as a PR comment. This was duplicate work, not a retried review.
Live automation run records confirmed reviewer dispatch at 21:23:09 UTC and mention dispatch at 21:23:12 UTC. The resulting formal review and review-shaped comment appeared at 21:37:18 and 21:51:28 respectively.
Summary
Issue Number
Incident investigated on OpenHands/software-agent-sdk#5485
How to Test
npm run build:skillssucceeded.python scripts/sync_extensions.py --checksucceeded (existing non-blocking marketplace coverage warning).git diff --checkpassed.gh pr edit ... --add-reviewer ...command was exercised against the incident PR and created the dedicated reviewer run. No extra live review was requested for validation.Separately, the custom deployed mention responder now instructs review requests to defer to the dedicated reviewer, inspect pending/current-head reviews, and avoid review-shaped comments. Ordinary questions and fix requests retain their normal handling. Source compilation and actual Mention/prompt rendering passed; deployed tarball hash matched the local bundle. Called POST /api/automation/v1/git-sync/sync and confirmed dirty_count=0, last_error=null and completed sync commit d5b5b575361f7aa5930831cc2c835826ab0b1343 in OpenHands/oss-agent-canvas. That custom automation is not owned by this public skill repository and is not copied here.
Video/Screenshots
Not applicable; instruction change and API/run-history investigation.
Notes
This prevents the agent instruction pattern that caused the duplicate. The deployed mention routing is prompt-level, not an atomic cross-automation deduplication guarantee; no LLM behavior canary was run. No existing reviews were deleted or altered.
Tracking
Fixes #759 — fix(github): avoid duplicate reviewer and mention triggers
Added by an AI agent (OpenHands) on behalf of Graham Neubig to organize previously unlinked PRs.