diff --git a/.luacheckrc b/.luacheckrc
new file mode 100644
index 0000000000000000000000000000000000000000..f087d303bf7a587d53e4ec6b30f808ab84735e19
--- /dev/null
+++ b/.luacheckrc
@@ -0,0 +1,17 @@
+unused_args = false
+allow_defined_top = true
+
+read_globals = {
+	"DIR_DELIM",
+	"minetest", "core",
+	"dump",
+	"vector", "nodeupdate",
+	"VoxelManip", "VoxelArea",
+	"PseudoRandom", "ItemStack",
+}
+
+-- Overwrites minetest.handle_node_drops
+files["mods/creative/init.lua"].globals = { "minetest" }
+
+-- Don't report on legacy definitions of globals.
+files["mods/default/legacy.lua"].global = false
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..805fe08c750c60717dfbf03d2a17a3a62299cced
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+language: generic
+
+branches:
+  only:
+    - master
+
+sudo: required
+
+before_install:
+  - sudo apt-get update
+  - sudo apt-get install -y luarocks
+  - sudo luarocks install luacheck
+
+script: luacheck --no-color ./mods