--- name: pr description: Create a pull request with conventional commit title and description argument-hint: "[optional: target branch or description]" allowed-tools: Bash Read Glob Grep --- # PX4 Pull Request **The user is the author: no `Co-Authored-By`, no "Generated with " footers. Disclose AI assistance as the last line of the PR body, italicized: `*Assisted-by: :*`, matching the commit trailer.** ## Steps 1. Check branch. If on `main`, create a feature branch `/` where `` comes from `gh api user --jq .login`. 2. Gather context: `git status`, `git log --oneline main..HEAD`, `git diff main...HEAD --stat`, check for remote tracking branch. 3. Sanity-build **one** target the change can actually affect — a board for firmware changes, `px4_sitl` for POSIX-only or simulation changes. Skip the build entirely when the diff cannot reach any target (submodule pointer bumps, docs, ROMFS). Build with the `build-px4-linux` or `build-px4-macos` skill. Fix any build errors before opening the PR. 4. PR **title:** `type(scope): description` — under 72 chars, covers the overall change across all commits. If a maintainer squash-merges the PR, this becomes the commit message. 5. PR **body:** as short as it can be while still landing the point — a reviewer should take it in at a glance, and a long description is one nobody reads. Sections, in order: `## Summary`, `## Problem`, `## Solution`, a sentence or two each. Do not restate the diff (no file-changed lists, no code snippets), do not mention CI, and do not repeat what the title already says. If the PR closes an issue, the first line of `## Summary` is `fixes #`, then a blank line, then the summary. No boilerplate. 6. Optional `## Testing` section after `## Solution`, only for substantial testing: SITL scenarios, synthetic or replayed data, hardware-in-the-loop, bench or flight tests. Building and unit tests are not testing; never mention them. State what was run and what it showed, as tersely as the other sections. Never report testing that did not happen: ask the user what they actually ran. 7. Push with `-u` if needed, then `gh pr create`. Default base is `main` unless user says otherwise. 8. Return the PR URL.