writing-commit-messages

Draft commit messages and PR descriptions with inverted-pyramid structure.

Updated Apr 28, 2026
One-click install
npx skills add https://github.com/ceejbot/ceej-skills --skill writing-commit-messages-ceejbot
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: writing-commit-messages
Source: https://github.com/ceejbot/ceej-skills/tree/main/skills/writing-commit-messages
Command: npx skills add https://github.com/ceejbot/ceej-skills --skill writing-commit-messages-ceejbot

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It solves the problem of writing unclear, noisy, or incorrectly structured commit messages that fail to explain why a change was made and how it should be understood later.

Core Features & Use Cases

  • Inverted-pyramid commit structure: produces a clear headline, a lede explaining the behavioral change and rationale, and optional technical details when warranted.
  • Trunk-focused workflow guidance: steers users toward writing PR descriptions that can be used as the durable squash-merged trunk commit message.
  • Consistency and quality guardrails: enforces practical constraints like hard-wrapping to a readable width and avoiding mixed tenses, plus anti-pattern callouts.

Quick Start

Ask the skill to draft a commit message and PR description for your change landing on main, based on the diff you provide.

Frequently Asked Questions about writing-commit-messages

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

FAQPage Schema
How do I write a commit message that explains why a change was made?

To write a commit message that explains why a change was made, use an inverted-pyramid structure with a ~50 character headline, a why-focused lede explaining the behavioral change, and optional technical details to preserve durable intent for future maintainers.

What is the best way to format pull request descriptions for a squash and merge workflow?

The best way to format pull request descriptions for a squash and merge workflow is to draft them as durable trunk commit messages, ensuring the PR description preserves the rationale and behavioral change details directly in the repository history.

How do I structure a git commit message for future maintainers?

Structure a git commit message for future maintainers using an inverted-pyramid format: start with a ~50 character headline, follow with a why-focused lede, add optional technical details, hard-wrap text to ~80 characters, and maintain consistent tense selection.

Why do my commit messages fail to explain the intent of trunk changes?

Commit messages fail to explain the intent of trunk changes when they lack a clear rationale, use mixed tenses, or omit a why-focused lede, creating noisy repository history that future maintainers cannot easily understand.

Can I use a specific commit message structure for direct trunk commits?

Yes, you can use the inverted-pyramid commit message structure for direct trunk commits, applying the same ~50 character headline, why-focused lede, and consistent tense selection to ensure high-quality repository history.

What character limits should I apply when drafting technical commit messages?

When drafting technical commit messages, apply a ~50 character limit to the headline and hard-wrap the body text to ~80 characters to ensure readability and consistency across the repository history.