diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..76cf021da2a7edb308cf6787c1ee3222f0aa10c2
--- /dev/null
+++ b/.pre-commit-hooks.yaml
@@ -0,0 +1,14 @@
+---
+- id: tf-fmt
+  name: Format Terraform files
+  description: Format Terraform files using terraform fmt
+  language: script
+  types: [terraform]
+  entry: tff
+
+- id: tf-validate
+  name: Validate Terraform modules
+  description: Validate Terraform modules using terraform validate
+  language: script
+  types: [terraform]
+  entry: tfv
diff --git a/tff b/tff
new file mode 100755
index 0000000000000000000000000000000000000000..1d4850baa97ef84c51354fbe04b8b593ade41e15
--- /dev/null
+++ b/tff
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+command -v terraform >/dev/null || { echo "Can't find the terraform binary, aborting." >&2; exit 1; }
diff --git a/tfv b/tfv
new file mode 100755
index 0000000000000000000000000000000000000000..1d4850baa97ef84c51354fbe04b8b593ade41e15
--- /dev/null
+++ b/tfv
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+command -v terraform >/dev/null || { echo "Can't find the terraform binary, aborting." >&2; exit 1; }