diff --git a/.githooks/prepare-commit-msg b/.githooks/prepare-commit-msg
new file mode 100755
index 0000000..d7bf4c7
--- /dev/null
+++ b/.githooks/prepare-commit-msg
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+# Do not edit this file. It is automatically generated by https://www.oliverdavies.uk/build-configs.
+
+set -euo pipefail
+
+# Load the issue ID from an `.issue-id` file within the project and replace the
+# `ISSUE_ID` placeholder within a Git commit message.
+#
+# For example, running `echo "OD-123" > .issue-id` will add `Refs: OD-123` to
+# the commit message.
+#
+# This also works with multiple issue IDs in the same string, e.g.
+# "OD-123 OD-456".
+
+PROJECT_DIR=$(git rev-parse --show-toplevel) # Get the root directory of the repo
+ISSUE_FILE="$PROJECT_DIR/.issue-id"
+
+if [ -f "${ISSUE_FILE}" ]; then
+  ISSUE_ID=$(cat "${ISSUE_FILE}" | sed 's/ /, /g')
+
+  if [ -n "${ISSUE_ID}" ]; then
+    sed -i.bak "s/# Refs:/Refs: $ISSUE_ID/" "$1"
+  fi
+fi