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.