git-commit-messages
Git Commit Message Formatting
When to Use This Skill
Use this skill when creating git commits with the Bash tool, especially for commits with:
- Multi-line messages
- Body text or explanations
- Co-authored-by footers
- Claude Code attribution
Core Principle
Avoid HEREDOC syntax - Use -m with multiline strings instead.
Pattern to Follow
✅ DO - Use multiline string with -m
git commit -m "feat(github): add github plugin
This adds comprehensive GitHub workflow support including
commands for PR management and review workflows.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>"
Key points:
- Single
-mflag with entire message in quotes - Newlines preserved within the quoted string
- No special syntax or escaping needed
- Works reliably across all environments
❌ DON'T - Use HEREDOC syntax
# This FAILS in Claude Code's Bash tool
git commit -m "$(cat <<'EOF'
feat(github): add github plugin
This adds comprehensive GitHub workflow support.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Why this fails:
- HEREDOC syntax has shell interpretation issues
- Fails in certain execution contexts
- More complex than necessary
- Unreliable across environments
Examples
Simple commit
git commit -m "fix: resolve path configuration issue"
Commit with body
git commit -m "feat: add progressive disclosure pattern
Skills now support references/ subdirectory for
detailed documentation that loads on-demand."
Full conventional commit
git commit -m "feat(tools): add git commit message skill
This skill teaches Claude to format git commit messages
using multiline strings instead of HEREDOC syntax, which
fails in certain shell environments.
The pattern uses a single -m flag with the entire message
in quotes, preserving newlines naturally."
Why It Matters
Using -m with multiline strings is:
- Reliable: Works consistently in all environments
- Simple: No complex shell syntax needed
- Portable: Standard git behavior
- Direct: Git handles newlines correctly
HEREDOC syntax causes issues because:
- Shell interpretation varies by environment
- Execution context in Claude Code differs from terminal
- Quote handling becomes complex
- Unnecessary complexity for the task
Quick Reference
- One
-mflag - Entire message in double quotes
- Newlines work naturally
- No HEREDOC needed
More from boneskull/claude-plugins
zod-v4
Expert guidance on Zod v4 validation library including breaking changes from v3, migration patterns, core API usage, and common validation patterns. Use when working with Zod schemas, validation, type inference, or migrating from Zod v3.
10git-rebase-interactive
Use this skill when asked to perform an interactive git rebase programmatically, absorb/fixup commits into other commits, squash commits together, reorder commits, or drop commits. Provides a portable approach that works on macOS and Linux without interactive user input.
6git-directory-management
Manage git-tracked directories correctly - never create .gitkeep files in directories that will immediately contain tracked files
6bupkis-assertion-patterns
How to write idiomatic assertions with the Bupkis assertion library for TypeScript and JavaScript
6