mcpbeat

Multiline Commit Messages

prisma/multiline-commit-messages

>- Use single-quoted strings for multiline git commit messages in the Shell tool. Prevents heredoc escaping failures that produce garbled commit messages.

354 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
4
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/prisma/prisma --skill multiline-commit-messages

The instruction itself

4 sections, as written by the author

Multiline commit messages

The Shell tool sends commands as a single string. Heredoc syntax (<<'EOF') inside $(cat ...) is fragile and can fail silently — the literal $(cat <<'EOF' ... ends up as the commit message instead of the intended text.

Rule

Prefer single-quoted strings with embedded newlines over $(cat <<'EOF' ...):

git commit -s -m 'short summary line

Longer body paragraph explaining why the change exists.
Additional context if needed.'

Why heredocs are fragile

The Shell tool passes the command as a single string argument. When you write:

git commit -m "$(cat <<'EOF'
message
EOF
)"

the EOF delimiter, newlines, and nested quoting can interact unpredictably, and the result is the raw $(cat <<'EOF' ... text appearing as the commit message.

Single-quoted strings with literal newlines are simple, portable, and always work. If the message itself must contain a single quote, close and reopen the quote ('\'') or fall back to a temp file passed via -F.

Sign off

Every commit still needs its Signed-off-by trailer — see git-staging. Pass -s on the same git commit invocation.

How to use it

Copy the folder

Take prisma/multiline-commit-messages from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.