commit
FreeCreate a conventional commit for PX4 changes
The English summary is being prepared. Showing the original description.
Review a pull request with structured, domain-aware feedback
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
Review a pull request with domain-aware checks based on which files are changed.
No Claude attribution anywhere.
Fetch PR context. Run these in parallel:
gh pr view <PR> --json number,title,body,baseRefName,headRefName,files,commits,reviewRequests,reviews,authorgh pr checks <PR> (exit code 8 means some checks are pending, this is normal, not an error)gh pr diff <PR> -- if this fails with HTTP 406 (300+ files), do NOT retry. Instead use gh api repos/OWNER/REPO/pulls/NUMBER/files --paginate to get the full file list in one call, then fetch patches for key infrastructure files individually and sample representative changes from each domain touched.gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate --jq '.[] | {user: .user.login, body: .body, path: .path, created_at: .created_at}' to get inline review commentsgh api repos/OWNER/REPO/issues/NUMBER/comments --paginate --jq '.[] | {user: .user.login, body: .body, created_at: .created_at}' to get PR conversation commentsFrom the PR metadata, note:
reviewRequests)reviews -- approved, changes_requested, commented, dismissed)Check CI status. From the gh pr checks output in step 1, summarize pass/fail/pending. If there are failures, fetch logs with gh run view <run-id> --log-failed. Include CI status in the output.
Recommend merge strategy. Analyze the commit history and recommend squash or rebase merge. This decision informs all subsequent commit hygiene feedback.
Recommend rebase merge when:
type(scope): description messageRecommend squash merge when:
Include the recommendation in the output. If recommending rebase, flag any commits that break atomicity or have bad messages. If recommending squash, don't bother flagging individual commit messages (they'll be discarded) but ensure the PR title is correct since it becomes the squash commit message.
Check conventional commit title. Verify the PR title follows type(scope): description per CONTRIBUTING.md. The PR title becomes the commit message on squash-merge, so it must be accurate and descriptive. Verify the scope matches the primary area of changed files. If the PR introduces breaking changes, the title must include ! before the colon. If rebase merge was recommended in step 3, also scan individual commit messages for anti-patterns: vague messages ("fix", "update"), missing type prefix, review-response noise ("apply suggestions from code review", "do make format"), or WIP markers. Flag these for rewording.
Identify domains touched. Classify changed files into domains based on paths (a PR may touch multiple):
src/modules/ekf2/, src/lib/wind_estimator/, src/lib/world_magnetic_model/src/modules/mc_*control*/, src/modules/fw_*control*/, src/modules/flight_mode_manager/, src/lib/rate_control/, src/lib/npfg/, src/modules/vtol_att_control/src/drivers/, src/modules/cyphal/, src/drivers/uavcan*/src/modules/simulation/, Tools/simulation/src/modules/commander/, src/modules/logger/, src/systemcmds/, platforms/, src/modules/dataman/boards/{manufacturer}/{board}/ (new directories only, not modifications to existing boards).github/, CMakeLists.txt, Makefile, cmake/, Tools/, Kconfigmsg/, src/modules/mavlink/, src/modules/uxrce_dds_client/Apply core checks (always):
uint64_t for absolute timemain unless it is a backport or release-specific fix.make format / make check_format (astyle) for C/C++ files; clang-tidy clean. Python files checked with mypy and flake8. PRs failing CI format or lint checks will not be merged.Apply domain checks based on step 5:
Estimation:
Control:
PX4_ISFINITE before magnitude checksDrivers/CAN:
hrt_abstime over iteration countsSimulation:
System:
SubscriptionCallback), not extra threadsstd::string on embedded, minimize SubscriptionData usageCI/Build:
Messages/Protocol:
timestamp for publication metadata, timestamp_sample close to physical sample, include device_idBoard Addition:
docs/en/flight_controller/ with pinout, where-to-buy, connector types, version badge, and manufacturer-supported notice blockboards/{manufacturer}/{board}/, both lowercase, hyphens for board nameboards/boards.json, no collisionsCONFIG_DRIVERS_COMMON_RC over legacy CONFIG_DRIVERS_RC_INPUTnuttx-config/bootloader/defconfig) or explanation of shared bootloaderFormat output as:
After the structured output, also display a draft PR comment formatted using the PR comment formatting rules from step 9. This gives the user a preview of what would be posted.
Interactive dialog. After displaying the review, present the user with these options:
Present options based on the verdict:
If verdict is approve:
What would you like to do?
1. Chat about this PR (ask questions, explore code) [default]
2. Approve this PR and post the review comment
3. Adjust the review or draft (tell me what to change)
4. Done for now
If verdict is request changes:
What would you like to do?
1. Chat about this PR (ask questions, explore code) [default]
2. Request changes on this PR and post the review comment
3. Adjust the review or draft (tell me what to change)
4. Done for now
If verdict is needs discussion:
What would you like to do?
1. Chat about this PR (ask questions, explore code) [default]
2. Post the review as a comment (no approval or rejection)
3. Adjust the review or draft (tell me what to change)
4. Done for now
Wait for the user to choose before proceeding. If they pick:
gh api repos/OWNER/REPO/collaborators/$(gh api user --jq .login)/permission --jq .permission -- if admin or write, submit as a formal review with gh pr review <PR> --approve --body "..." or gh pr review <PR> --request-changes --body "..." based on the verdict. If no write access, fall back to gh pr comment <PR> --body "...". Always confirm with the user before posting.PR comment formatting rules (for the draft): When writing the GitHub comment, rewrite the review to sound like a human reviewer, not a structured report. Do NOT include the full skill output. Instead:
gh pr comment <PR> --body "$(cat <<'EOF' ... EOF)". Do not post without explicit confirmation.If the user provided arguments, use them as context: $ARGUMENTS
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Create a conventional commit for PX4 changes
The English summary is being prepared. Showing the original description.
Create a pull request with conventional commit title and description
The English summary is being prepared. Showing the original description.
Rebase a branch onto main, handling squash-merged parent branches cleanly
The English summary is being prepared. Showing the original description.