diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 5be40e9..0000000
--- a/.eslintrc
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-    "parser": "babel-eslint",
-    "rules": {
-        "curly": [2, "multi-line"],
-        "eol-last": [2],
-        "indent": [2, 4],
-        "linebreak-style": [2, "unix"],
-        "max-len": [2, 120, 4],
-        "no-trailing-spaces": [2, { "skipBlankLines": true }],
-        "no-unused-vars": [2, {"args": "after-used", "varsIgnorePattern": "^_"}],
-        "quotes": [2, "single"],
-        "semi": [2, "always"],
-        "space-before-function-paren": [2, "always"],
-        "strict": [2, "never"]
-    },
-    "env": {
-        "browser": true,
-        "es6": true,
-        "node": true
-    },
-    "extends": ["eslint:recommended"]
-}
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..36ff570
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+    extends: ['scratch', 'scratch/node']
+};
diff --git a/package.json b/package.json
index 2f90211..351192c 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
     "babel-loader": "^6.4.1",
     "babel-preset-es2015": "^6.24.1",
     "eslint": "^3.19.0",
+    "eslint-config-scratch": "^3.1.0",
     "json": "^9.0.6",
     "minilog": "^3.0.1",
     "soundfont-player": "0.10.5",
diff --git a/src/.eslintrc.js b/src/.eslintrc.js
new file mode 100644
index 0000000..bfdc88d
--- /dev/null
+++ b/src/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+    root: true,
+    extends: ['scratch', 'scratch/es6'],
+    env: {browser: true}
+};