diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99efd4374b2f7737d2cbd65617e6d511944dd6c1..b1d311260064522ef638da1b0135e35418c5c69e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## unreleased
+
+- Add commented out `.analysis_options` file to all templates.
+
 ## 1.0.11
 
 - Updated `web-angular` to `2.0.0-beta.20`.
diff --git a/lib/generators/console_full_data.dart b/lib/generators/console_full_data.dart
index a1fc5c738057ea4ac6463225034698ad211cf74b..b0061fc6f4f816446395f09ca39f85d9c309d529 100644
--- a/lib/generators/console_full_data.dart
+++ b/lib/generators/console_full_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/lib/generators/console_simple_data.dart b/lib/generators/console_simple_data.dart
index a4894526617fbaf2174f197249a24cb04324fae5..96693badf0d35f3c05a3ed3d5868ea83421b69fc 100644
--- a/lib/generators/console_simple_data.dart
+++ b/lib/generators/console_simple_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCnBh
diff --git a/lib/generators/package_simple_data.dart b/lib/generators/package_simple_data.dart
index 978af138b7c5f771451752b596affe295b20fb1e..3a52ffa1059de20a19a5f4c2659db4bbeee4ab31 100644
--- a/lib/generators/package_simple_data.dart
+++ b/lib/generators/package_simple_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/lib/generators/server_appengine_data.dart b/lib/generators/server_appengine_data.dart
index 04573f2820c9efe6b3f49e64a04db7052b3e3b3c..f6cac965de1e56d6ca07535c83132366de64df76 100644
--- a/lib/generators/server_appengine_data.dart
+++ b/lib/generators/server_appengine_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/lib/generators/server_shelf_data.dart b/lib/generators/server_shelf_data.dart
index b89c826476bbdfaf4bebbfefb2673a2060a901d9..2555180417f471ea710e0222f75bd813490d0393 100644
--- a/lib/generators/server_shelf_data.dart
+++ b/lib/generators/server_shelf_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/lib/generators/web_angular_data.dart b/lib/generators/web_angular_data.dart
index 70dd696e21950c4b825e4aed0a616441fc624919..fac1a10a7c6b42e003cdacea33805e29e13f461c 100644
--- a/lib/generators/web_angular_data.dart
+++ b/lib/generators/web_angular_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/lib/generators/web_polymer_data.dart b/lib/generators/web_polymer_data.dart
index 7a6ad8accca051321976b708715ef9708aa1e2da..6b8eb79d7532b2c5e7f32475652e2234475df844 100644
--- a/lib/generators/web_polymer_data.dart
+++ b/lib/generators/web_polymer_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/lib/generators/web_simple_data.dart b/lib/generators/web_simple_data.dart
index d502ffb34b83eac33f05c9dd1888a6632481414b..04916a72abd210b31a47ef31d54d0937009c659a 100644
--- a/lib/generators/web_simple_data.dart
+++ b/lib/generators/web_simple_data.dart
@@ -3,6 +3,16 @@
 // license that can be found in the LICENSE file.
 
 const List<String> data = const [
+  ".analysis_options",
+  "text",
+  """IyBUaGlzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIERhcnQgYW5hbHl6ZXIuCiMK
+IyBUaGUgY29tbWVudGVkIHBhcnQgYmVsb3cgaXMganVzdCBmb3IgaW5zcGlyYXRpb24uIFJlYWQg
+dGhlIGd1aWRlIGhlcmU6CiMgaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvdHJlZS9t
+YXN0ZXIvcGtnL2FuYWx5emVyI2NvbmZpZ3VyaW5nLXRoZS1hbmFseXplcgoKIyBhbmFseXplcjoK
+IyAgIHN0cm9uZy1tb2RlOiB0cnVlCiMgICBleGNsdWRlczoKIyAgICAgLSBwYXRoL3RvL2V4Y2x1
+ZGVkL2ZpbGVzLyoqCiMgbGludGVyOgojICAgcnVsZXM6CiMgICAgICMgc2VlIGNhdGFsb2d1ZSBo
+ZXJlOiBodHRwOi8vZGFydC1sYW5nLmdpdGh1Yi5pby9saW50ZXIvbGludHMvCiMgICAgIC0gaGFz
+aF9hbmRfZXF1YWxz""",
   ".gitignore",
   "text",
   """IyBGaWxlcyBhbmQgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSBwdWIKLnBhY2thZ2VzCi5wdWIvCmJ1
diff --git a/templates/console-full/.analysis_options b/templates/console-full/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/console-full/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/console-simple/.analysis_options b/templates/console-simple/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/console-simple/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/package-simple/.analysis_options b/templates/package-simple/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/package-simple/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/server-appengine/.analysis_options b/templates/server-appengine/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/server-appengine/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/server-shelf/.analysis_options b/templates/server-shelf/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/server-shelf/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/web-angular/.analysis_options b/templates/web-angular/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/web-angular/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/web-polymer/.analysis_options b/templates/web-polymer/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/web-polymer/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/templates/web-simple/.analysis_options b/templates/web-simple/.analysis_options
new file mode 100644
index 0000000000000000000000000000000000000000..c40a04b875f2f0b9819e68fb0ba2a8a2a1d9bc3c
--- /dev/null
+++ b/templates/web-simple/.analysis_options
@@ -0,0 +1,13 @@
+# This file allows you to configure the Dart analyzer.
+#
+# The commented part below is just for inspiration. Read the guide here:
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+
+# analyzer:
+#   strong-mode: true
+#   excludes:
+#     - path/to/excluded/files/**
+# linter:
+#   rules:
+#     # see catalogue here: http://dart-lang.github.io/linter/lints/
+#     - hash_and_equals
\ No newline at end of file
diff --git a/tool/grind.dart b/tool/grind.dart
index 5d116c9bbd46fe54908b7d599d3e0ba6347f00c3..b4c8c96be9b8ae37beba4804d325498e2f26385d 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -11,6 +11,11 @@ import 'package:grinder/grinder.dart';
 import 'package:path/path.dart' as path;
 import 'package:stagehand/stagehand.dart' as stagehand;
 
+const List<String> _allowedDotFiles = const <String>[
+  ".gitignore",
+  ".analysis_options"
+];
+
 final RegExp _binaryFileTypes = new RegExp(
     r'\.(jpe?g|png|gif|ico|svg|ttf|eot|woff|woff2)$',
     caseSensitive: false);
@@ -89,7 +94,7 @@ Iterable<String> _traverse(Directory dir, String root) sync* {
 
     String name = path.basename(entity.path);
     if (name == 'pubspec.lock') continue;
-    if (name.startsWith('.') && name != '.gitignore') continue;
+    if (name.startsWith('.') && !_allowedDotFiles.contains(name)) continue;
 
     if (entity is Directory) {
       yield* _traverse(entity, '${root}${name}/');