pr-update
Open a PR/MR if missing, or refresh an existing one's title and description so they match the current diff.
Skill by OutThisLife
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/outthislife-pr-update
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/pr-update
What's inside
- Skill name
pr-update- Description
- Open a PR/MR if missing, or refresh an existing one's title and description so they match the current diff. Preserves any media already in the body. Use when the user says /pr-update, open a PR, update the PR, refresh the PR title/description, or wants the PR opener/manager flow.
- License
- MIT
- Instructions
- 122 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# PR Update (open or refresh)
One skill for **create** and **update**. Make the title + body match the branch
as it is now. Do not strip media from an existing description.
## Steps
1. `git status` / `git diff` / `git log` / `git diff <default>...HEAD` (and
remote tracking) so you know the full change set — not just the latest
commit.
2. Detect an existing PR/MR for this branch (`gh pr view` / `glab mr view`).
- **None** → create (push upstream with `-u` if needed).
- **Exists** → edit title + body in place. Do not open a duplicate.
3. Draft a title and body from **all** commits/files in the PR, not one commit.
4. If updating: fetch the current body **first**. Preserve every media item
exactly (see below). Then rewrite text so Summary / Test plan (or the
repo's usual sections) stay accurate.
5. Apply with `gh pr create` / `gh pr edit` (or `glab` equivalents).
6. End with the PR/MR as a markdown link — the number **and** the full forge
URL (`[#123](https://github.com/org/repo/pull/123)`, GitLab `!` equivalent).
Never a bare `#123`. This is the one place the rule is written down; the
other skills just follow it.
## Title + body
- Title: concise, why-focused; match repo PR style when obvious.
- Body: use the repo's template when one exists; otherwise:
```markdown
## Summary
<1-3 bullets of what changed and why>
## Test plan
- [ ] <concrete checks>
```
- Run the prose through `no-tropes` before publishing.
- Do not invent reviewers, labels, or milestone unless asked.
## Commits
Shape the branch's commits as part of opening/refreshing the PR.
- Check effective `user.name` and `user.email` before committing. GitHub login
does not set commit attribution. If email is unset or Git infers a local-host
address, stop before publishing and confirm an account-associated email.
Never publish after ignoring Git's inferred-identity warning.
- One concern per commit. Default to a topical split (2–5 is typical) even if
not asked; don't dump everything into one blob unless the user wants it.
- Match the repo's recent commit style (`git log --oneline -15`); subject = why.
No "WIP" / "fix stuff".
- Rebuild with soft reset + path-staged commits (no `git rebase -i` — needs a
TTY). Show the final `git log --oneline <default>..HEAD` before force-push.
Two traps in that recipe:
- Soft-reset to the branch's **real base SHA** (`git merge-base HEAD origin/<default>`),
never to `origin/<default>` itself — it moves mid-task and will stage other
people's commits as yours.
- `git reset <base> -- <path>` leaves that path **unstaged**, so the next
`git commit` silently captures its pre-edit version. Verify the content
landed (`git show <sha>:<path> | grep <new symbol>`) before force-push.
- Keep authorship when reshaping others' work (`Co-authored-by` / cherry-pick),
especially during `pr-triage` salvage.
- Don't mix pure formatting with logic, commit secrets/`.env`, or rewrite
commits already on the default branch without asking.
## Preserve media (hard rule)
When a PR/MR already has a body, **never delete media**.
Treat as media (keep verbatim, same URLs/markup/order when possible):
- Markdown images / links to images or video (``, `[...](...)` to
media)
- HTML `<img>`, `<video>`, `<source>`, `<br>` used between media blocks
- GitHub/GitLab upload / user-attachments / moved-image URLs
- Image/video-only paragraphs or HTML comments wrapping media
Update flow:
1. Read the existing body. Extract JSON descriptions to plain Markdown with `jq -r '.description'` before using line-oriented file tools; one long escaped JSON string can be truncated even when the overall file fits. Reject truncated content rather than rebuilding a partial description.
2. Extract and keep the media blocks.
3. Rewrite textual sections so they match the current diff.
4. Re-attach the preserved media (same block(s), typically at the end unless
they were interleaved on purpose — then keep interleaving).
5. Before submit, diff old body vs new: every media URL/markup from the old
body must still be present.
If a refresh would drop media, stop and keep the old body (or only edit the
title) rather than publishing a media-stripped description.
## Scope
- **In:** open PR/MR, push if needed for create, shape commits, retitle, rewrite
description, preserve media, print URL.
- **Out:** rebase, CI, and review threads (`pr-ready`), triage/salvage
(`pr-triage`), merging.
## Forge cheatsheet
```bash
# GitHub — read
gh pr view --json url,title,body,baseRefName,headRefName
# GitHub — create
gh pr create --title "…" --body "$(cat <<'EOF'
…
EOF
)"
# GitHub — update (body from file avoids shell-eating newlines/media)
gh pr view --json body -q .body > /tmp/pr-body.md
# …edit /tmp/pr-body.md carefully…
gh pr edit --title "…" --body-file /tmp/pr-body.md
# GitLab
glab mr view
glab mr create
glab mr update <N> --title "…" --description-file /tmp/pr-body.mdFrom OutThisLife/brooklyn-skills, MIT.
More from OutThisLife/brooklyn-skills
- 0.796score
engraved-figures
OutThisLife
Create scientific figures, technical plates, research posters and diagram collections in a monochrome engraved-paper style.
SkillAFreshness: A★ 206Claude Code +9 - 0.791score
triage
OutThisLife
Use when triaging issues as a maintainer.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
runtime-debug
OutThisLife
Debug broken runtime/environments by checking logs and observability first, then code.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
draft-tweet
OutThisLife
Draft X/Twitter posts about shipped work.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
work
OutThisLife
Kick off a task in a fresh isolated git worktree instead of the current checkout.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
ui-system
OutThisLife
Reuse existing UI primitives, CSS vars, and DESIGN.md patterns instead of inventing new buttons, colors, borders, shadows, or helpers — including when…
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
list-open-work
OutThisLife
List my open MRs/PRs in the current repo/worktree, each with its tracker ticket.
SkillAFreshness: A★ 206Claude Code +9 - 0.787score
ticket-ship
OutThisLife
Take a tracker ticket through to shipped: find or start the PR, drive it to mergeable, update the ticket state, draft the stakeholder message.
SkillAFreshness: A★ 206Claude Code +9 - 0.787score
babysit
OutThisLife
Watch an open PR/MR until it's green or merged — poll checks, kick stalled CI, rerun flakes, catch late review threads.
SkillAFreshness: A★ 206Claude Code +9 - 0.787score
perf
OutThisLife
The general profile-driven perf loop for any language or runtime: baseline, profile, fix the real hot path, re-measure.
SkillAFreshness: A★ 206Claude Code +9 - 0.787score
pr-ready
OutThisLife
Clear everything blocking an existing PR/MR from merging — rebase onto the default branch, get CI green, and resolve review threads (Copilot and human).
SkillAFreshness: A★ 206Claude Code +9 - 0.787score
pr-triage
OutThisLife
Maintainer triage on OTHER people's PRs/MRs — verdict of approve, supersede, or close, salvage with credit, close the cluster.
SkillAFreshness: A★ 206Claude Code +9
Signals
- Stars
- 206
- Forks
- 6
- Open issues
- 0
- Last commit (this folder)
- Sep 25, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/OutThisLife/brooklyn-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from OutThisLife
- 0.796score
engraved-figures
OutThisLife
Create scientific figures, technical plates, research posters and diagram collections in a monochrome engraved-paper style.
SkillAFreshness: A★ 206Claude Code +9 - 0.791score
triage
OutThisLife
Use when triaging issues as a maintainer.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
runtime-debug
OutThisLife
Debug broken runtime/environments by checking logs and observability first, then code.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
list-open-work
OutThisLife
List my open MRs/PRs in the current repo/worktree, each with its tracker ticket.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
draft-tweet
OutThisLife
Draft X/Twitter posts about shipped work.
SkillAFreshness: A★ 206Claude Code +9 - 0.790score
ui-system
OutThisLife
Reuse existing UI primitives, CSS vars, and DESIGN.md patterns instead of inventing new buttons, colors, borders, shadows, or helpers — including when…
SkillAFreshness: A★ 206Claude Code +9
Cite this page
pr-update skill. Agent Mart. https://agentmart.dev/skills/outthislife-pr-update (last updated 2026-10-24)