multiline-commit-messages
$
npx mdskill add prisma/prisma-next/multiline-commit-messagesFixes multiline git commit messages in Shell tool commands
- Solves garbled commit messages from heredoc escaping failures
- Uses single-quoted strings in bash for git commit -m
- Avoids fragile heredoc syntax with explicit newline characters
- Ensures reliable commit message formatting across environments
SKILL.md
.github/skills/multiline-commit-messagesView on GitHub ↗
--- name: multiline-commit-messages description: >- Use single-quoted strings for multiline git commit messages in the Shell tool. Prevents heredoc escaping failures that produce garbled commit messages. --- # Multiline commit messages The Shell tool sends commands as a single string. Heredoc syntax (`<<'EOF'`) inside `$(cat ...)` is fragile and fails silently — the literal `$(cat <<'EOF' ...` ends up as the commit message instead of the intended text. ## Rule **Never** use `$(cat <<'EOF' ...)` or `$(cat <<EOF ...)` for commit messages. Use single-quoted strings with embedded newlines: ```bash git commit -m 'short summary line Longer body paragraph explaining why the change exists. Additional context if needed.' ``` ## Why heredocs fail The Shell tool passes the command as a single string argument. When you write: ```bash git commit -m "$(cat <<'EOF' message EOF )" ``` The shell may not parse the heredoc correctly in this context — the `EOF` delimiter, newlines, and nested quoting interact unpredictably. 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.