Create a PR (GitHub) or MR (GitLab) from the current branch with an auto-generated title and description.
Provider detection: Check the remote URL:
- If
github.com→ useghCLI - If
gitlab.comorgitlab.→ useglabCLI
Arguments
base-branch(optional): Branch to merge into (defaults tomainor repo default)
Prerequisites
You should be working in a repository cloned to /workspace/personal/<repo-name>.
Workflow
- Verify state — confirm you're in a git repo, not on main/master, and have commits to push.
- Run PR checks (MANDATORY) — Run ALL checks listed in the "PR Checks" section of your Repository Guidelines. Run each command/task sequentially. If ANY check fails, fix the issue and re-run until all pass. If no guidelines are defined, check the project's CLAUDE.md for a pre-PR checklist and run those. Do NOT proceed until all checks pass.
- Push the branch —
git push -u origin HEAD - Gather context — review commit messages and changed files since diverging from base.
- Generate title and description. Follow the conventions of the repository you are working in, not a fixed format:
- Title: Concise summary (conventional commit style if the repo uses it)
- Description: If the repo has a PR/MR template, use its headings as the structure and fill every section. GitHub looks for
pull_request_template.mdin.github/,docs/, or the repo root (plus an optionalPULL_REQUEST_TEMPLATE/directory), and falls back to the org's.githubrepo. GitLab uses.gitlab/merge_request_templates/. Also follow any PR rules in the repo'sCLAUDE.md,AGENTS.md, orCONTRIBUTING.md. If the repo defines none, include: summary of changes, notable items, testing done, related issues. - Show the change, do not narrate it. Aim for about 250 prose words; code blocks, mermaid, tables and
<details>do not count. No file-by-file changelog: that belongs in your task output. - Review map: build it from
git diff --stat <base>...HEAD. One row per area, biggest risk first, with(+N/-M), a depth (🔍 deep, 👀 skim, ⏭ skip for tests and generated files) and what could break. - Change outline: 1 or 2 views of the shape of the change. Pseudocode with
+/-lines for logic, mermaid for flow, a tree with paths on the nodes for structure. - Swarm provenance (when you run in the swarm): fill it from your task context. Link the task (
$APP_URL/tasks/<taskId>) and its tree ($APP_URL/sessions/<rootTaskId>), the Slack permalink of the ask if the task came from Slack, any workflow run, and the plan or research as anagent-fs share-createlink plus its durablelive.agent-fs.devpath. These auth-gated links go in this section only. - Media: images and mp4s as GitHub user attachments (
github-attachskill), docs asagent-fs share-createlinks. Never a presigned agent-fs URL for docs or videos.
- Create the PR/MR using
gh pr createorglab mr create.gh pr create --bodydoes not apply the repo template, so write the filled description to a file and pass it with--body-file <file>. - Check CI status — After creating the PR, wait ~30 seconds, then check CI with
gh pr checks <pr-number>(GitHub) orglab mr view --json pipelines(GitLab). If any check is failing, investigate the failure, fix it, push the fix, and re-check. Repeat until CI is green. - Report the PR/MR URL and CI status.
Tips
- Link related issues using
Fixes #123orCloses #123in the description - If the repo ships
scripts/check-pr-body.ts, run it on the body file before creating the PR - Keep PRs focused — one logical change per PR
- If the branch has many commits, summarize the overall change rather than listing each commit