squash-message

Generates and maintains the copy-ready squash merge title and body as a PR comment.

Updated Nov 17, 2025
One-click install
npx skills add https://github.com/vzakharov/vovazakharov.com --skill squash-message-vzakharov
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: squash-message
Source: https://github.com/vzakharov/vovazakharov.com/tree/main/.claude/skills/squash-message
Command: npx skills add https://github.com/vzakharov/vovazakharov.com --skill squash-message-vzakharov

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Squash merge messages become the permanent git log record, yet they are often written hastily at merge time. This Skill produces a durable, high-altitude squash title and body for a pull request, posts it as a stable PR comment, and keeps it synchronized as the branch evolves. ## Core Features & Use Cases - Proposal generation: Composes a formatted squash title (<type>: #<issue> <essence> (pr #N)) and a tightened body from the branch's commit log, diff, and PR metadata. - Mandatory tighten pass: Rewrites drafts to a three-to-four paragraph target, enforcing a 72-character wrap, a 40-line cap, and a validation script before anything is posted. - Comment lifecycle management: Finds, creates, or patches the Proposed squash title/body: PR comment in place via the GitHub CLI, deduplicating stacked copies and supporting an update-only mode. - Use Case: After pushing new commits to an open PR, run /squash-message to refresh the proposal comment so the record a future git log reader sees always matches what the branch actually does. ## Quick Start Ask the assistant to run /squash-message on the current pull request branch to draft, tighten, and post the proposed squash title and body comment.

Frequently Asked Questions about squash-message

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a good squash merge commit message for a PR?

Gather the branch's commit log and diff against the base branch, then draft a body that explains why the change exists and what it does at a high level. Tighten it to three or four paragraphs, hard-wrap at 72 characters, and end with a Closes #N trailer and co-author byline.

How do I update an existing PR comment with the GitHub CLI?

List the PR's comments with gh api, find the one whose body leads with the proposal marker and whose author is you, then PATCH it with gh api -X PATCH -F body=@file. Edit in place rather than deleting and reposting so the comment anchor stays stable.

When should the squash message proposal be regenerated?

Regenerate it whenever a push changes what the permanent record should say: new behavior, changed scope, a new Closes reference, or a recreated PR number. Skip it for CI retriggers, formatting-only commits, and changes a future git log reader would never notice.

What is the difference between /squash-message and update-only mode?

The default mode creates the proposal if none exists or updates it in place. The update-only mode only reconciles an existing proposal and reports an absence without creating one, which is how /check-merge invokes it since creation belongs to /finalize.

Why must the squash body avoid session links and placeholders?

The body is pasted verbatim into permanent git history, so placeholders like #<tbd> or session URLs become permanent. Issue references are omitted until they resolve, and the co-author byline must be the final line with no session link after it.