diff --git a/lib/config/presets/__snapshots__/index.spec.ts.snap b/lib/config/presets/__snapshots__/index.spec.ts.snap
index f96377310cc9c43debfecb29cdb9631707d4ee95..ef54430677792db2bb498836ae58ad534becd1fa 100644
--- a/lib/config/presets/__snapshots__/index.spec.ts.snap
+++ b/lib/config/presets/__snapshots__/index.spec.ts.snap
@@ -6,6 +6,7 @@ Object {
     "All lint-related packages",
   ],
   "extends": Array [
+    "packages:emberTemplateLint",
     "packages:eslint",
     "packages:stylelint",
     "packages:tslint",
@@ -424,6 +425,7 @@ Object {
     "remark-lint",
   ],
   "packagePatterns": Array [
+    "^ember-template-lint",
     "^@typescript-eslint/",
     "^eslint",
     "^stylelint",
@@ -449,6 +451,7 @@ Object {
         "remark-lint",
       ],
       "packagePatterns": Array [
+        "^ember-template-lint",
         "^@typescript-eslint/",
         "^eslint",
         "^stylelint",
diff --git a/lib/config/presets/index.spec.ts b/lib/config/presets/index.spec.ts
index eff63344cd71448c67fb123904bea0d2c22c50f2..33082e4bbde87ea96aab1a7e48bf713c7dba154a 100644
--- a/lib/config/presets/index.spec.ts
+++ b/lib/config/presets/index.spec.ts
@@ -150,7 +150,7 @@ describe('config/presets', () => {
       const res = await presets.resolveConfigPresets(config);
       expect(res).toMatchSnapshot();
       expect(res.packageNames).toHaveLength(3);
-      expect(res.packagePatterns).toHaveLength(4);
+      expect(res.packagePatterns).toHaveLength(5);
     });
     it('resolves nested groups', async () => {
       config.extends = [':automergeLinters'];
@@ -159,7 +159,7 @@ describe('config/presets', () => {
       const rule = res.packageRules[0];
       expect(rule.automerge).toBe(true);
       expect(rule.packageNames).toHaveLength(3);
-      expect(rule.packagePatterns).toHaveLength(4);
+      expect(rule.packagePatterns).toHaveLength(5);
     });
     it('migrates automerge in presets', async () => {
       config.extends = ['ikatyang:library'];
@@ -324,7 +324,7 @@ describe('config/presets', () => {
       const res = await presets.getPreset('packages:linters', {});
       expect(res).toMatchSnapshot();
       expect(res.packageNames).toHaveLength(1);
-      expect(res.extends).toHaveLength(3);
+      expect(res.extends).toHaveLength(4);
     });
     it('gets parameterised configs', async () => {
       const res = await presets.getPreset(
diff --git a/lib/config/presets/internal/packages.ts b/lib/config/presets/internal/packages.ts
index 22b46ce61f36197392b269d6a36ec7a14e57bb10..3dc3dff7e68bf1f7c81d7855a98a0566b5700dca 100644
--- a/lib/config/presets/internal/packages.ts
+++ b/lib/config/presets/internal/packages.ts
@@ -18,6 +18,10 @@ export const presets: Record<string, Preset> = {
     description: 'All mapbox-related packages',
     packagePatterns: ['^(leaflet|mapbox)'],
   },
+  emberTemplateLint: {
+    description: 'All ember-template-lint packages',
+    packagePatterns: ['^ember-template-lint'],
+  },
   eslint: {
     description: 'All eslint packages',
     packageNames: ['babel-eslint'],
@@ -34,7 +38,12 @@ export const presets: Record<string, Preset> = {
   },
   linters: {
     description: 'All lint-related packages',
-    extends: ['packages:eslint', 'packages:stylelint', 'packages:tslint'],
+    extends: [
+      'packages:emberTemplateLint',
+      'packages:eslint',
+      'packages:stylelint',
+      'packages:tslint',
+    ],
     packageNames: ['remark-lint'],
   },
   postcss: {