Remove `--template=skeleton` and add a placeholder error message instead. (#160695)

Closes https://github.com/flutter/flutter/issues/160673.

Does the following:

- Renames `FlutterProjectType` to `FlutterTemplateType`; did some
enhanced enum cleanups while at it
- Creates a hierarchy of `RemovedFlutterTemplateType` from
`ParsedFlutterTemplateType`
- Removes the `skeleton` directory
- Merges `app_shared` back into `app` (no longer required now that
`skeleton` is removed)

Final cleanups are tracked in
https://github.com/flutter/flutter/issues/160692.

(Added @zanderso just to spot check this is what he meant by
https://github.com/flutter/flutter/issues/160673#issuecomment-2557742347)
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart
index 8edafdf..e79fbd0 100644
--- a/dev/bots/analyze.dart
+++ b/dev/bots/analyze.dart
@@ -2443,7 +2443,7 @@
   'packages',
   'flutter_tools',
   'templates',
-  'app_shared',
+  'app',
   'windows.tmpl',
   'runner',
 );
diff --git a/engine/src/flutter/shell/platform/windows/README.md b/engine/src/flutter/shell/platform/windows/README.md
index 56c8d59..db1686c 100644
--- a/engine/src/flutter/shell/platform/windows/README.md
+++ b/engine/src/flutter/shell/platform/windows/README.md
@@ -19,7 +19,7 @@
 
 1. [Flutter tool's Windows logic](https://github.com/flutter/flutter/tree/master/packages/flutter_tools/lib/src/windows) - Builds and runs Flutter Windows apps on
 the command line.
-1. [Windows app template](https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/app_shared/windows.tmpl) - The entrypoint for Flutter Windows app. This
+1. [Windows app template](https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/app/windows.tmpl) - The entrypoint for Flutter Windows app. This
 launches the Windows embedder.
 1. [`platform-windows` GitHub issues label](https://github.com/flutter/flutter/issues?q=is%3Aopen+label%3Aplatform-windows+sort%3Aupdated-desc)
 1. [`#hackers-desktop` Discord channel](https://discord.com/channels/608014603317936148/608020180177780791)
diff --git a/packages/flutter_tools/.gitignore b/packages/flutter_tools/.gitignore
new file mode 100644
index 0000000..14759db
--- /dev/null
+++ b/packages/flutter_tools/.gitignore
@@ -0,0 +1,6 @@
+# Normally (from the root) we ignore .idea folders, but the ones present
+# in ide_templates/ and templates/ are real folders we intend to copy as part of
+# "flutter create".
+
+!ide_templates/intellij/.idea
+!templates/**/.idea
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index b031cc0..f3193af 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -104,13 +104,16 @@
       hide: !verboseHelp,
     );
     addPlatformsOptions(customHelp: kPlatformHelp);
+
+    final List<ParsedFlutterTemplateType> enabledTemplates =
+        ParsedFlutterTemplateType.enabledValues(featureFlags);
     argParser.addOption(
       'template',
       abbr: 't',
-      allowed: FlutterProjectType.enabledValues.map<String>((FlutterProjectType e) => e.cliName),
+      allowed: enabledTemplates.map((ParsedFlutterTemplateType t) => t.cliName),
       help: 'Specify the type of project to create.',
       valueHelp: 'type',
-      allowedHelp: CliEnum.allowedHelp(FlutterProjectType.enabledValues),
+      allowedHelp: CliEnum.allowedHelp(enabledTemplates),
     );
     argParser.addOption(
       'sample',
@@ -228,13 +231,28 @@
     }
   }
 
-  FlutterProjectType _getProjectType(Directory projectDir) {
-    FlutterProjectType? template;
-    FlutterProjectType? detectedProjectType;
+  FlutterTemplateType _getProjectType(Directory projectDir) {
+    FlutterTemplateType? template;
+    FlutterTemplateType? detectedProjectType;
     final bool metadataExists = projectDir.absolute.childFile('.metadata').existsSync();
     final String? templateArgument = stringArg('template');
     if (templateArgument != null) {
-      template = FlutterProjectType.fromCliName(templateArgument);
+      final ParsedFlutterTemplateType? parsedTemplate = ParsedFlutterTemplateType.fromCliName(
+        templateArgument,
+      );
+      switch (parsedTemplate) {
+        case RemovedFlutterTemplateType():
+          throwToolExit(
+            'The template ${parsedTemplate.cliName} is no longer available. For '
+            'your convenience the former help text is repeated below with context '
+            'about the removal and other possible resources:\n\n'
+            '${parsedTemplate.helpText}',
+          );
+        case FlutterTemplateType():
+          template = parsedTemplate;
+        case null:
+          break;
+      }
     }
     // If the project directory exists and isn't empty, then try to determine the template
     // type from the project directory.
@@ -250,7 +268,7 @@
         );
       }
     }
-    template ??= detectedProjectType ?? FlutterProjectType.app;
+    template ??= detectedProjectType ?? FlutterTemplateType.app;
     if (detectedProjectType != null && template != detectedProjectType && metadataExists) {
       // We can only be definitive that this is the wrong type if the .metadata file
       // exists and contains a type that doesn't match.
@@ -279,27 +297,27 @@
     String? sampleCode;
     final String? sampleArgument = stringArg('sample');
     final bool emptyArgument = boolArg('empty');
-    final FlutterProjectType template = _getProjectType(projectDir);
+    final FlutterTemplateType template = _getProjectType(projectDir);
     if (sampleArgument != null) {
-      if (template != FlutterProjectType.app) {
+      if (template != FlutterTemplateType.app) {
         throwToolExit(
           'Cannot specify --sample with a project type other than '
-          '"${FlutterProjectType.app.cliName}"',
+          '"${FlutterTemplateType.app.cliName}"',
         );
       }
       // Fetch the sample from the server.
       sampleCode = await _fetchSampleFromServer(sampleArgument);
     }
-    if (emptyArgument && template != FlutterProjectType.app) {
+    if (emptyArgument && template != FlutterTemplateType.app) {
       throwToolExit('The --empty flag is only supported for the app template.');
     }
 
-    final bool generateModule = template == FlutterProjectType.module;
-    final bool generateMethodChannelsPlugin = template == FlutterProjectType.plugin;
-    final bool generateFfiPackage = template == FlutterProjectType.packageFfi;
-    final bool generateFfiPlugin = template == FlutterProjectType.pluginFfi;
+    final bool generateModule = template == FlutterTemplateType.module;
+    final bool generateMethodChannelsPlugin = template == FlutterTemplateType.plugin;
+    final bool generateFfiPackage = template == FlutterTemplateType.packageFfi;
+    final bool generateFfiPlugin = template == FlutterTemplateType.pluginFfi;
     final bool generateFfi = generateFfiPlugin || generateFfiPackage;
-    final bool generatePackage = template == FlutterProjectType.package;
+    final bool generatePackage = template == FlutterTemplateType.package;
 
     final List<String> platforms = stringsArg('platforms');
     // `--platforms` does not support module or package.
@@ -359,7 +377,7 @@
     final bool includeLinux;
     final bool includeMacos;
     final bool includeWindows;
-    if (template == FlutterProjectType.module) {
+    if (template == FlutterTemplateType.module) {
       // The module template only supports iOS and Android.
       includeIos = true;
       includeAndroid = true;
@@ -367,7 +385,7 @@
       includeLinux = false;
       includeMacos = false;
       includeWindows = false;
-    } else if (template == FlutterProjectType.package) {
+    } else if (template == FlutterTemplateType.package) {
       // The package template does not supports any platform.
       includeIos = false;
       includeAndroid = false;
@@ -443,7 +461,7 @@
     int generatedFileCount = 0;
     final PubContext pubContext;
     switch (template) {
-      case FlutterProjectType.app:
+      case FlutterTemplateType.app:
         final bool skipWidgetTestsGeneration = sampleCode != null || emptyArgument;
 
         generatedFileCount += await generateApp(
@@ -455,17 +473,7 @@
           projectType: template,
         );
         pubContext = PubContext.create;
-      case FlutterProjectType.skeleton:
-        generatedFileCount += await generateApp(
-          <String>['skeleton'],
-          relativeDir,
-          templateContext,
-          overwrite: overwrite,
-          printStatusWhenWriting: !creatingNewProject,
-          generateMetadata: false,
-        );
-        pubContext = PubContext.create;
-      case FlutterProjectType.module:
+      case FlutterTemplateType.module:
         generatedFileCount += await _generateModule(
           relativeDir,
           templateContext,
@@ -473,7 +481,7 @@
           printStatusWhenWriting: !creatingNewProject,
         );
         pubContext = PubContext.create;
-      case FlutterProjectType.package:
+      case FlutterTemplateType.package:
         generatedFileCount += await _generatePackage(
           relativeDir,
           templateContext,
@@ -481,7 +489,7 @@
           printStatusWhenWriting: !creatingNewProject,
         );
         pubContext = PubContext.createPackage;
-      case FlutterProjectType.plugin:
+      case FlutterTemplateType.plugin:
         generatedFileCount += await _generateMethodChannelPlugin(
           relativeDir,
           templateContext,
@@ -490,7 +498,7 @@
           projectType: template,
         );
         pubContext = PubContext.createPlugin;
-      case FlutterProjectType.pluginFfi:
+      case FlutterTemplateType.pluginFfi:
         generatedFileCount += await _generateFfiPlugin(
           relativeDir,
           templateContext,
@@ -499,7 +507,7 @@
           projectType: template,
         );
         pubContext = PubContext.createPlugin;
-      case FlutterProjectType.packageFfi:
+      case FlutterTemplateType.packageFfi:
         generatedFileCount += await _generateFfiPackage(
           relativeDir,
           templateContext,
@@ -667,7 +675,7 @@
     Map<String, Object?> templateContext, {
     bool overwrite = false,
     bool printStatusWhenWriting = true,
-    required FlutterProjectType projectType,
+    required FlutterTemplateType projectType,
   }) async {
     // Plugins only add a platform if it was requested explicitly by the user.
     if (!argResults!.wasParsed('platforms')) {
@@ -763,7 +771,7 @@
     Map<String, Object?> templateContext, {
     bool overwrite = false,
     bool printStatusWhenWriting = true,
-    required FlutterProjectType projectType,
+    required FlutterTemplateType projectType,
   }) async {
     // Plugins only add a platform if it was requested explicitly by the user.
     if (!argResults!.wasParsed('platforms')) {
@@ -844,7 +852,7 @@
     Map<String, Object?> templateContext, {
     bool overwrite = false,
     bool printStatusWhenWriting = true,
-    required FlutterProjectType projectType,
+    required FlutterTemplateType projectType,
   }) async {
     int generatedCount = 0;
     final String? description =
@@ -1025,7 +1033,7 @@
   required String templateGradleVersion,
   required String templateAgpVersion,
   required String templateAgpVersionForModule,
-  required FlutterProjectType projectType,
+  required FlutterTemplateType projectType,
   required String projectDirPath,
 }) {
   // Determine if the Java version specified conflicts with the template Gradle or AGP version.
@@ -1041,7 +1049,7 @@
   );
   String relevantTemplateAgpVersion = templateAgpVersion;
 
-  if (projectType == FlutterProjectType.module &&
+  if (projectType == FlutterTemplateType.module &&
       Version.parse(templateAgpVersion)! < Version.parse(templateAgpVersionForModule)!) {
     // If a module is being created, make sure to check for Java/AGP compatibility between the highest used version of AGP in the module template.
     javaAgpVersionsCompatible = gradle.validateJavaAndAgp(
@@ -1066,7 +1074,7 @@
       );
 
   if (!javaGradleVersionsCompatible) {
-    if (projectType == FlutterProjectType.plugin || projectType == FlutterProjectType.pluginFfi) {
+    if (projectType == FlutterTemplateType.plugin || projectType == FlutterTemplateType.pluginFfi) {
       // Only impacted files could be in sample code.
       return;
     }
@@ -1157,24 +1165,26 @@
 
 // Returns path of the gradle-wrapper.properties file for the specified
 // generated project type.
-String? _getGradleWrapperPropertiesFilePath(FlutterProjectType projectType, String projectDirPath) {
+String? _getGradleWrapperPropertiesFilePath(
+  FlutterTemplateType projectType,
+  String projectDirPath,
+) {
   String gradleWrapperPropertiesFilePath = '';
   switch (projectType) {
-    case FlutterProjectType.app:
-    case FlutterProjectType.skeleton:
+    case FlutterTemplateType.app:
       gradleWrapperPropertiesFilePath = globals.fs.path.join(
         projectDirPath,
         'android/gradle/wrapper/gradle-wrapper.properties',
       );
-    case FlutterProjectType.module:
+    case FlutterTemplateType.module:
       gradleWrapperPropertiesFilePath = globals.fs.path.join(
         projectDirPath,
         '.android/gradle/wrapper/gradle-wrapper.properties',
       );
-    case FlutterProjectType.plugin:
-    case FlutterProjectType.pluginFfi:
-    case FlutterProjectType.package:
-    case FlutterProjectType.packageFfi:
+    case FlutterTemplateType.plugin:
+    case FlutterTemplateType.pluginFfi:
+    case FlutterTemplateType.package:
+    case FlutterTemplateType.packageFfi:
       // TODO(camsim99): Add relevant file path for packageFfi when Android is supported.
       // No gradle-wrapper.properties files not part of sample code that
       // can be determined.
@@ -1186,18 +1196,17 @@
 // Returns the path(s) of the build.gradle file(s) for the specified generated
 // project type.
 List<String>? _getBuildGradleConfigurationFilePaths(
-  FlutterProjectType projectType,
+  FlutterTemplateType projectType,
   String projectDirPath,
 ) {
   final List<String> buildGradleConfigurationFilePaths = <String>[];
   switch (projectType) {
-    case FlutterProjectType.app:
-    case FlutterProjectType.skeleton:
-    case FlutterProjectType.pluginFfi:
+    case FlutterTemplateType.app:
+    case FlutterTemplateType.pluginFfi:
       buildGradleConfigurationFilePaths.add(
         globals.fs.path.join(projectDirPath, 'android/build.gradle'),
       );
-    case FlutterProjectType.module:
+    case FlutterTemplateType.module:
       const String moduleBuildGradleFilePath = '.android/build.gradle';
       const String moduleAppBuildGradleFlePath = '.android/app/build.gradle';
       const String moduleFlutterBuildGradleFilePath = '.android/Flutter/build.gradle';
@@ -1206,12 +1215,12 @@
         globals.fs.path.join(projectDirPath, moduleAppBuildGradleFlePath),
         globals.fs.path.join(projectDirPath, moduleFlutterBuildGradleFilePath),
       ]);
-    case FlutterProjectType.plugin:
+    case FlutterTemplateType.plugin:
       buildGradleConfigurationFilePaths.add(
         globals.fs.path.join(projectDirPath, 'android/app/build.gradle'),
       );
-    case FlutterProjectType.package:
-    case FlutterProjectType.packageFfi:
+    case FlutterTemplateType.package:
+    case FlutterTemplateType.packageFfi:
       // TODO(camsim99): Add any relevant file paths for packageFfi when Android is supported.
       // No build.gradle file because there is no platform-specific implementation.
       return null;
diff --git a/packages/flutter_tools/lib/src/commands/create_base.dart b/packages/flutter_tools/lib/src/commands/create_base.dart
index 37c3a9a..830f92d 100644
--- a/packages/flutter_tools/lib/src/commands/create_base.dart
+++ b/packages/flutter_tools/lib/src/commands/create_base.dart
@@ -158,7 +158,7 @@
   /// Throws assertion if [projectDir] does not exist or empty.
   /// Returns null if no project type can be determined.
   @protected
-  FlutterProjectType? determineTemplateType() {
+  FlutterTemplateType? determineTemplateType() {
     assert(projectDir.existsSync() && projectDir.listSync().isNotEmpty);
     final File metadataFile = globals.fs.file(
       globals.fs.path.join(projectDir.absolute.path, '.metadata'),
@@ -167,7 +167,7 @@
       metadataFile,
       globals.logger,
     );
-    final FlutterProjectType? projectType = projectMetadata.projectType;
+    final FlutterTemplateType? projectType = projectMetadata.projectType;
     if (projectType != null) {
       return projectType;
     }
@@ -184,7 +184,7 @@
     if (exists(<String>['android', 'app']) ||
         exists(<String>['ios', 'Runner']) ||
         exists(<String>['ios', 'Flutter'])) {
-      return FlutterProjectType.app;
+      return FlutterTemplateType.app;
     }
     // Since we can't really be definitive on nearly-empty directories, err on
     // the side of prudence and just say we don't know.
@@ -472,11 +472,11 @@
     bool pluginExampleApp = false,
     bool printStatusWhenWriting = true,
     bool generateMetadata = true,
-    FlutterProjectType? projectType,
+    FlutterTemplateType? projectType,
   }) async {
     int generatedCount = 0;
     generatedCount += await renderMerged(
-      <String>[...templateNames, 'app_shared'],
+      <String>[...templateNames],
       directory,
       templateContext,
       overwrite: overwrite,
diff --git a/packages/flutter_tools/lib/src/flutter_project_metadata.dart b/packages/flutter_tools/lib/src/flutter_project_metadata.dart
index b05c46d..942ecaa 100644
--- a/packages/flutter_tools/lib/src/flutter_project_metadata.dart
+++ b/packages/flutter_tools/lib/src/flutter_project_metadata.dart
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'package:meta/meta.dart';
 import 'package:yaml/yaml.dart';
 
 import 'base/file_system.dart';
@@ -12,73 +13,122 @@
 import 'template.dart';
 import 'version.dart';
 
-enum FlutterProjectType implements CliEnum {
-  /// This is the default project with the user-managed host code.
-  /// It is different than the "module" template in that it exposes and doesn't
-  /// manage the platform code.
-  app,
+/// The result of parsing `--template=` for `flutter create` and related commands.
+@immutable
+sealed class ParsedFlutterTemplateType implements CliEnum {
+  static const List<ParsedFlutterTemplateType> _values = <ParsedFlutterTemplateType>[
+    ...FlutterTemplateType.values,
+    ...RemovedFlutterTemplateType.values,
+  ];
 
-  /// A List/Detail app template that follows community best practices.
-  skeleton,
-
-  /// The is a project that has managed platform host code. It is an application with
-  /// ephemeral .ios and .android directories that can be updated automatically.
-  module,
-
-  /// This is a Flutter Dart package project. It doesn't have any native
-  /// components, only Dart.
-  package,
-
-  /// This is a Dart package project with external builds for native components.
-  packageFfi,
-
-  /// This is a native plugin project.
-  plugin,
-
-  /// This is an FFI native plugin project.
-  pluginFfi;
-
-  @override
-  String get cliName => snakeCase(name);
-
-  @override
-  String get helpText => switch (this) {
-    FlutterProjectType.app => '(default) Generate a Flutter application.',
-    FlutterProjectType.skeleton =>
-      'Generate a List View / Detail View Flutter application that follows community best practices.',
-    FlutterProjectType.package =>
-      'Generate a shareable Flutter project containing modular Dart code.',
-    FlutterProjectType.plugin =>
-      'Generate a shareable Flutter project containing an API '
-          'in Dart code with a platform-specific implementation through method channels for Android, iOS, '
-          'Linux, macOS, Windows, web, or any combination of these.',
-    FlutterProjectType.pluginFfi =>
-      'Generate a shareable Flutter project containing an API '
-          'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
-          'Linux, macOS, Windows, or any combination of these.',
-    FlutterProjectType.packageFfi =>
-      'Generate a shareable Dart/Flutter project containing an API '
-          'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
-          'Linux, macOS, and Windows.',
-    FlutterProjectType.module =>
-      'Generate a project to add a Flutter module to an existing Android or iOS application.',
-  };
-
-  static FlutterProjectType? fromCliName(String value) {
-    for (final FlutterProjectType type in FlutterProjectType.values) {
-      if (value == type.cliName) {
+  /// Parses and returns a [ParsedFlutterTemplateType], if any, for [cliName].
+  ///
+  /// If no match was found `null` is returned.
+  static ParsedFlutterTemplateType? fromCliName(String cliName) {
+    for (final ParsedFlutterTemplateType type in _values) {
+      if (cliName == type.cliName) {
         return type;
       }
     }
     return null;
   }
 
-  static List<FlutterProjectType> get enabledValues {
-    return <FlutterProjectType>[
-      for (final FlutterProjectType value in values)
-        if (value != FlutterProjectType.packageFfi || featureFlags.isNativeAssetsEnabled) value,
-    ];
+  /// Returns template types that are enabled based on the current [featureFlags].
+  static List<ParsedFlutterTemplateType> enabledValues(FeatureFlags featureFlags) {
+    return _values.toList()..retainWhere((ParsedFlutterTemplateType templateType) {
+      return templateType.isEnabled(featureFlags);
+    });
   }
+
+  /// Whether the flag is enabled based on a flag being set.
+  bool isEnabled(FeatureFlags featureFlags) => true;
+}
+
+/// A [ParsedFlutterTemplateType] that is no longer operable.
+///
+/// The CLI can give a hint to a developer that the [cliName] _did_ use to exist,
+/// but does no longer, and provides [helpText] for other resources to use instead.
+enum RemovedFlutterTemplateType implements ParsedFlutterTemplateType {
+  skeleton(
+    helpText:
+        'Formerly generated a list view / detail view Flutter application that '
+        'followed some community best practices. For up to date resources, see '
+        'https://flutter.github.io/samples, https://docs.flutter.dev/codelabs, '
+        'and external resources such as https://flutter-builder.app/.',
+  );
+
+  const RemovedFlutterTemplateType({required this.helpText});
+
+  @override
+  bool isEnabled(FeatureFlags featureFlags) => true;
+
+  @override
+  final String helpText;
+
+  @override
+  String get cliName => snakeCase(name);
+}
+
+/// The result of parsing a recognized `--template` for `flutter create` and related commands.
+enum FlutterTemplateType implements ParsedFlutterTemplateType {
+  /// The default project with the user-managed host code.
+  ///
+  /// It is different than the "module" template in that it exposes and doesn't
+  /// manage the platform code.
+  app(helpText: '(default) Generate a Flutter application.'),
+
+  /// A project that has managed platform host code.
+  ///
+  /// It is an application with ephemeral .ios and .android directories that can be updated automatically.
+  module(
+    helpText:
+        'Generate a project to add a Flutter module to an existing Android or iOS application.',
+  ),
+
+  /// A Flutter Dart package project.
+  ///
+  /// It doesn't have any native components, only Dart.
+  package(helpText: 'Generate a shareable Flutter project containing modular Dart code.'),
+
+  /// A Dart package project with external builds for native components.
+  packageFfi(
+    helpText:
+        'Generate a shareable Dart/Flutter project containing an API '
+        'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
+        'Linux, macOS, and Windows.',
+  ),
+
+  /// A native plugin project.
+  plugin(
+    helpText:
+        'Generate a shareable Flutter project containing an API '
+        'in Dart code with a platform-specific implementation through method channels for Android, iOS, '
+        'Linux, macOS, Windows, web, or any combination of these.',
+  ),
+
+  /// This is an FFI native plugin project.
+  pluginFfi(
+    helpText:
+        'Generate a shareable Flutter project containing an API '
+        'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
+        'Linux, macOS, Windows, or any combination of these.',
+  );
+
+  const FlutterTemplateType({required this.helpText});
+
+  @override
+  bool isEnabled(FeatureFlags featureFlags) {
+    return switch (this) {
+      FlutterTemplateType.packageFfi => featureFlags.isNativeAssetsEnabled,
+      _ => true,
+    };
+  }
+
+  @override
+  final String helpText;
+
+  @override
+  String get cliName => snakeCase(name);
 }
 
 /// Verifies the expected yaml keys are present in the file.
@@ -135,7 +185,13 @@
       }
     }
     if (_validateMetadataMap(yamlRoot, <String, Type>{'project_type': String}, _logger)) {
-      _projectType = FlutterProjectType.fromCliName(yamlRoot['project_type'] as String);
+      final ParsedFlutterTemplateType? templateType = ParsedFlutterTemplateType.fromCliName(
+        yamlRoot['project_type'] as String,
+      );
+      _projectType = switch (templateType) {
+        RemovedFlutterTemplateType() || null => null,
+        FlutterTemplateType() => templateType,
+      };
     }
     final Object? migrationYaml = yamlRoot['migration'];
     if (migrationYaml is YamlMap) {
@@ -148,7 +204,7 @@
     required this.file,
     required String? versionRevision,
     required String? versionChannel,
-    required FlutterProjectType? projectType,
+    required FlutterTemplateType? projectType,
     required this.migrateConfig,
     required Logger logger,
   }) : _logger = logger,
@@ -165,8 +221,8 @@
   String? _versionChannel;
   String? get versionChannel => _versionChannel;
 
-  FlutterProjectType? _projectType;
-  FlutterProjectType? get projectType => _projectType;
+  FlutterTemplateType? _projectType;
+  FlutterTemplateType? get projectType => _projectType;
 
   /// Metadata and configuration for the migrate command.
   MigrateConfig migrateConfig;
diff --git a/packages/flutter_tools/lib/src/ios/application_package.dart b/packages/flutter_tools/lib/src/ios/application_package.dart
index e3d5e70..62f2c8b 100644
--- a/packages/flutter_tools/lib/src/ios/application_package.dart
+++ b/packages/flutter_tools/lib/src/ios/application_package.dart
@@ -201,7 +201,7 @@
   }
 
   String _templateImageAssetDirNameSuffix(String asset) =>
-      globals.fs.path.join('app_shared', 'ios.tmpl', 'Runner', 'Assets.xcassets', asset);
+      globals.fs.path.join('app', 'ios.tmpl', 'Runner', 'Assets.xcassets', asset);
 
   String get _appIconAsset => 'AppIcon.appiconset';
   String get _launchImageAsset => 'LaunchImage.imageset';
diff --git a/packages/flutter_tools/lib/src/reporting/github_template.dart b/packages/flutter_tools/lib/src/reporting/github_template.dart
index 2d6bef1..b7ca3ed 100644
--- a/packages/flutter_tools/lib/src/reporting/github_template.dart
+++ b/packages/flutter_tools/lib/src/reporting/github_template.dart
@@ -129,7 +129,7 @@
         return 'No pubspec in working directory.';
       }
       final FlutterProjectMetadata metadata = FlutterProjectMetadata(project.metadataFile, _logger);
-      final FlutterProjectType? projectType = metadata.projectType;
+      final FlutterTemplateType? projectType = metadata.projectType;
       final StringBuffer description =
           StringBuffer()
             ..writeln('**Type**: ${projectType == null ? 'malformed' : projectType.cliName}')
diff --git a/packages/flutter_tools/lib/src/template.dart b/packages/flutter_tools/lib/src/template.dart
index 0843be0..6b6a7e8 100644
--- a/packages/flutter_tools/lib/src/template.dart
+++ b/packages/flutter_tools/lib/src/template.dart
@@ -173,13 +173,22 @@
     required Logger logger,
     required TemplateRenderer templateRenderer,
   }) async {
+    // TODO(matanl): Remove this once https://github.com/flutter/packages/pull/8336 is merged and published.
+    // See https://github.com/flutter/flutter/issues/160692.
+    final List<String> imageNames;
+    if (names.contains('app')) {
+      // Emulates what used to happen when app_shared existed. It still exist in package:flutter_template_images.
+      imageNames = <String>[...names, 'app_shared'];
+    } else {
+      imageNames = names;
+    }
     // All named templates are placed in the 'templates' directory
     return Template._(
       <Directory>[
         for (final String name in names) templatePathProvider.directoryInPackage(name, fileSystem),
       ],
       <Directory>[
-        for (final String name in names)
+        for (final String name in imageNames)
           if ((await templatePathProvider.imageDirectory(name, fileSystem, logger)).existsSync())
             await templatePathProvider.imageDirectory(name, fileSystem, logger),
       ],
diff --git a/packages/flutter_tools/templates/README.md b/packages/flutter_tools/templates/README.md
deleted file mode 100644
index f3e5f6d..0000000
--- a/packages/flutter_tools/templates/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-This directory contains templates for `flutter create`.
-
-The `*_shared` subdirectories provide files for multiple templates.
-
-* `app_shared` for `app` and `skeleton`.
-* `plugin_shared` for (method channel) `plugin` and `plugin_ffi`.
-
-For example, there are two app templates: `app` (the counter app)
-and `skeleton` (the more advanced list view/detail view app).
-
-```plain
-  ┌────────────┐
-  │ app_shared │
-  └──┬──────┬──┘
-     │      │
-     │      │
-     ▼      ▼
-┌─────┐    ┌──────────┐
-│ app │    │ skeleton │
-└─────┘    └──────────┘
-```
-
-Thanks to `app_shared`, the templates for `app` and `skeleton` can contain
-only the files that are specific to them alone, and the rest is automatically
-kept in sync.
diff --git a/packages/flutter_tools/templates/app_shared/.gitignore.tmpl b/packages/flutter_tools/templates/app/.gitignore.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.gitignore.tmpl
rename to packages/flutter_tools/templates/app/.gitignore.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl b/packages/flutter_tools/templates/app/.idea/libraries/Dart_SDK.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/libraries/Dart_SDK.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl b/packages/flutter_tools/templates/app/.idea/libraries/KotlinJavaRuntime.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/libraries/KotlinJavaRuntime.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/modules.xml.tmpl b/packages/flutter_tools/templates/app/.idea/modules.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/modules.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/modules.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl b/packages/flutter_tools/templates/app/.idea/runConfigurations/main_dart.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/runConfigurations/main_dart.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/workspace.xml.tmpl b/packages/flutter_tools/templates/app/.idea/workspace.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/workspace.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/workspace.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/analysis_options.yaml.tmpl b/packages/flutter_tools/templates/app/analysis_options.yaml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/analysis_options.yaml.tmpl
rename to packages/flutter_tools/templates/app/analysis_options.yaml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/app/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/app/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/projectName_android.iml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/projectName_android.iml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/projectName_android.iml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/projectName_android.iml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/.gitignore b/packages/flutter_tools/templates/app/android.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/android.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable/launch_background.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable/launch_background.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values-night/styles.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values-night/styles.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values/styles.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values/styles.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/gradle.properties.tmpl b/packages/flutter_tools/templates/app/android.tmpl/gradle.properties.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/gradle.properties.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/gradle.properties.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl b/packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/settings.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android.tmpl/settings.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/settings.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/settings.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.h
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.m
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.m
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/main.m b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/main.m
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/main.m
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/main.m
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl b/packages/flutter_tools/templates/app/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/AppDelegate.swift
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/AppDelegate.swift
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/Runner-Bridging-Header.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/Runner-Bridging-Header.h
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl b/packages/flutter_tools/templates/app/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/.gitignore b/packages/flutter_tools/templates/app/ios.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/ios.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist b/packages/flutter_tools/templates/app/ios.tmpl/Flutter/AppFrameworkInfo.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist
rename to packages/flutter_tools/templates/app/ios.tmpl/Flutter/AppFrameworkInfo.plist
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig b/packages/flutter_tools/templates/app/ios.tmpl/Flutter/Debug.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig
rename to packages/flutter_tools/templates/app/ios.tmpl/Flutter/Debug.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Release.xcconfig b/packages/flutter_tools/templates/app/ios.tmpl/Flutter/Release.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Release.xcconfig
rename to packages/flutter_tools/templates/app/ios.tmpl/Flutter/Release.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/Main.storyboard
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/Main.storyboard
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Info.plist.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Info.plist.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/.gitignore b/packages/flutter_tools/templates/app/linux.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/linux.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl b/packages/flutter_tools/templates/app/linux.tmpl/CMakeLists.txt.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl
rename to packages/flutter_tools/templates/app/linux.tmpl/CMakeLists.txt.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/flutter/CMakeLists.txt b/packages/flutter_tools/templates/app/linux.tmpl/flutter/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/flutter/CMakeLists.txt
rename to packages/flutter_tools/templates/app/linux.tmpl/flutter/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/CMakeLists.txt b/packages/flutter_tools/templates/app/linux.tmpl/runner/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/CMakeLists.txt
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/main.cc b/packages/flutter_tools/templates/app/linux.tmpl/runner/main.cc
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/main.cc
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/main.cc
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.cc.tmpl b/packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.cc.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.cc.tmpl
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.cc.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.h b/packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.h
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.h
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/.gitignore b/packages/flutter_tools/templates/app/macos.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/macos.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Debug.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Debug.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Release.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Release.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
copy from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
copy to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/AppDelegate.swift b/packages/flutter_tools/templates/app/macos.tmpl/Runner/AppDelegate.swift
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/AppDelegate.swift
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/AppDelegate.swift
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Base.lproj/MainMenu.xib
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Base.lproj/MainMenu.xib
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Debug.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Debug.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Release.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Release.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Warnings.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Warnings.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements b/packages/flutter_tools/templates/app/macos.tmpl/Runner/DebugProfile.entitlements
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/DebugProfile.entitlements
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Info.plist b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Info.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Info.plist
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Info.plist
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift b/packages/flutter_tools/templates/app/macos.tmpl/Runner/MainFlutterWindow.swift
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/MainFlutterWindow.swift
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Release.entitlements b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Release.entitlements
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Release.entitlements
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Release.entitlements
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/projectName.iml.tmpl b/packages/flutter_tools/templates/app/projectName.iml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/projectName.iml.tmpl
rename to packages/flutter_tools/templates/app/projectName.iml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/favicon.png.copy.tmpl b/packages/flutter_tools/templates/app/web/favicon.png.copy.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/favicon.png.copy.tmpl
rename to packages/flutter_tools/templates/app/web/favicon.png.copy.tmpl
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-192.png.copy.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-192.png.copy.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-192.png.copy.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-192.png.copy.tmpl
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-512.png.copy.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-512.png.copy.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-512.png.copy.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-512.png.copy.tmpl
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-maskable-192.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-maskable-192.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-maskable-512.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-maskable-512.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/index.html.tmpl b/packages/flutter_tools/templates/app/web/index.html.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/index.html.tmpl
rename to packages/flutter_tools/templates/app/web/index.html.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/manifest.json.tmpl b/packages/flutter_tools/templates/app/web/manifest.json.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/manifest.json.tmpl
rename to packages/flutter_tools/templates/app/web/manifest.json.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/.gitignore b/packages/flutter_tools/templates/app/windows.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/windows.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/CMakeLists.txt.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/CMakeLists.txt.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/flutter/CMakeLists.txt b/packages/flutter_tools/templates/app/windows.tmpl/flutter/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/flutter/CMakeLists.txt
rename to packages/flutter_tools/templates/app/windows.tmpl/flutter/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/CMakeLists.txt b/packages/flutter_tools/templates/app/windows.tmpl/runner/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/CMakeLists.txt
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/runner/Runner.rc.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/Runner.rc.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.cpp
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.h
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/main.cpp.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/runner/main.cpp.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/main.cpp.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/main.cpp.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resource.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/resource.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resource.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/resource.h
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/runner/resources/app_icon.ico.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/resources/app_icon.ico.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/runner.exe.manifest b/packages/flutter_tools/templates/app/windows.tmpl/runner/runner.exe.manifest
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/runner.exe.manifest
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/runner.exe.manifest
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/utils.cpp
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.cpp
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/utils.cpp
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/utils.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/utils.h
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.cpp
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.cpp
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.cpp
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.h
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDEDidComputeMac32BitWarning</key>
-	<true/>
-</dict>
-</plist>
diff --git a/packages/flutter_tools/templates/skeleton/README.md.tmpl b/packages/flutter_tools/templates/skeleton/README.md.tmpl
deleted file mode 100644
index b7e3461a..0000000
--- a/packages/flutter_tools/templates/skeleton/README.md.tmpl
+++ /dev/null
@@ -1,29 +0,0 @@
-# {{projectName}}
-
-{{description}}
-
-## Getting Started
-
-This project is a starting point for a Flutter application that follows the
-[simple app state management
-tutorial](https://flutter.dev/to/state-management-sample).
-
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
-
-## Assets
-
-The `assets` directory houses images, fonts, and any other files you want to
-include with your application.
-
-The `assets/images` directory contains [resolution-aware
-images](https://flutter.dev/to/resolution-aware-images).
-
-## Localization
-
-This project generates localized messages based on arb files found in
-the `lib/src/localization` directory.
-
-To support additional languages, please visit the tutorial on
-[Internationalizing Flutter apps](https://flutter.dev/to/internationalization).
diff --git a/packages/flutter_tools/templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl b/packages/flutter_tools/templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl
deleted file mode 100644
index e69de29..0000000
--- a/packages/flutter_tools/templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl
+++ /dev/null
diff --git a/packages/flutter_tools/templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl b/packages/flutter_tools/templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl
deleted file mode 100644
index e69de29..0000000
--- a/packages/flutter_tools/templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl
+++ /dev/null
diff --git a/packages/flutter_tools/templates/skeleton/assets/images/flutter_logo.png.img.tmpl b/packages/flutter_tools/templates/skeleton/assets/images/flutter_logo.png.img.tmpl
deleted file mode 100644
index e69de29..0000000
--- a/packages/flutter_tools/templates/skeleton/assets/images/flutter_logo.png.img.tmpl
+++ /dev/null
diff --git a/packages/flutter_tools/templates/skeleton/l10n.yaml.tmpl b/packages/flutter_tools/templates/skeleton/l10n.yaml.tmpl
deleted file mode 100644
index d480072..0000000
--- a/packages/flutter_tools/templates/skeleton/l10n.yaml.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-arb-dir: lib/src/localization
-template-arb-file: app_en.arb
-output-localization-file: app_localizations.dart
diff --git a/packages/flutter_tools/templates/skeleton/lib/main.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/main.dart.tmpl
deleted file mode 100644
index eb568f2..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/main.dart.tmpl
+++ /dev/null
@@ -1,20 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'src/app.dart';
-import 'src/settings/settings_controller.dart';
-import 'src/settings/settings_service.dart';
-
-void main() async {
-  // Set up the SettingsController, which will glue user settings to multiple
-  // Flutter Widgets.
-  final settingsController = SettingsController(SettingsService());
-
-  // Load the user's preferred theme while the splash screen is displayed.
-  // This prevents a sudden theme change when the app is first displayed.
-  await settingsController.loadSettings();
-
-  // Run the app and pass in the SettingsController. The app listens to the
-  // SettingsController for changes, then passes it further down to the
-  // SettingsView.
-  runApp(MyApp(settingsController: settingsController));
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/app.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/app.dart.tmpl
deleted file mode 100644
index 7ba2c2f..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/app.dart.tmpl
+++ /dev/null
@@ -1,85 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-import 'package:flutter_localizations/flutter_localizations.dart';
-
-import 'sample_feature/sample_item_details_view.dart';
-import 'sample_feature/sample_item_list_view.dart';
-import 'settings/settings_controller.dart';
-import 'settings/settings_view.dart';
-
-/// The Widget that configures your application.
-class MyApp extends StatelessWidget {
-  const MyApp({
-    super.key,
-    required this.settingsController,
-  });
-
-  final SettingsController settingsController;
-
-  @override
-  Widget build(BuildContext context) {
-    // Glue the SettingsController to the MaterialApp.
-    //
-    // The ListenableBuilder Widget listens to the SettingsController for changes.
-    // Whenever the user updates their settings, the MaterialApp is rebuilt.
-    return ListenableBuilder(
-      listenable: settingsController,
-      builder: (BuildContext context, Widget? child) {
-        return MaterialApp(
-          // Providing a restorationScopeId allows the Navigator built by the
-          // MaterialApp to restore the navigation stack when a user leaves and
-          // returns to the app after it has been killed while running in the
-          // background.
-          restorationScopeId: 'app',
-
-          // Provide the generated AppLocalizations to the MaterialApp. This
-          // allows descendant Widgets to display the correct translations
-          // depending on the user's locale.
-          localizationsDelegates: const [
-            AppLocalizations.delegate,
-            GlobalMaterialLocalizations.delegate,
-            GlobalWidgetsLocalizations.delegate,
-            GlobalCupertinoLocalizations.delegate,
-          ],
-          supportedLocales: const [
-            Locale('en', ''), // English, no country code
-          ],
-
-          // Use AppLocalizations to configure the correct application title
-          // depending on the user's locale.
-          //
-          // The appTitle is defined in .arb files found in the localization
-          // directory.
-          onGenerateTitle: (BuildContext context) =>
-              AppLocalizations.of(context)!.appTitle,
-
-          // Define a light and dark color theme. Then, read the user's
-          // preferred ThemeMode (light, dark, or system default) from the
-          // SettingsController to display the correct theme.
-          theme: ThemeData(),
-          darkTheme: ThemeData.dark(),
-          themeMode: settingsController.themeMode,
-
-          // Define a function to handle named routes in order to support
-          // Flutter web url navigation and deep linking.
-          onGenerateRoute: (RouteSettings routeSettings) {
-            return MaterialPageRoute<void>(
-              settings: routeSettings,
-              builder: (BuildContext context) {
-                switch (routeSettings.name) {
-                  case SettingsView.routeName:
-                    return SettingsView(controller: settingsController);
-                  case SampleItemDetailsView.routeName:
-                    return const SampleItemDetailsView();
-                  case SampleItemListView.routeName:
-                  default:
-                    return const SampleItemListView();
-                }
-              },
-            );
-          },
-        );
-      },
-    );
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/localization/app_en.arb.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/localization/app_en.arb.tmpl
deleted file mode 100644
index 5c21115..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/localization/app_en.arb.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "appTitle": "{{projectName}}",
-  "@appTitle": {
-    "description": "The title of the application"
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl
deleted file mode 100644
index b376e0d..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-/// A placeholder class that represents an entity or model.
-class SampleItem {
-  const SampleItem(this.id);
-
-  final int id;
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl
deleted file mode 100644
index 37df4a8..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl
+++ /dev/null
@@ -1,20 +0,0 @@
-import 'package:flutter/material.dart';
-
-/// Displays detailed information about a SampleItem.
-class SampleItemDetailsView extends StatelessWidget {
-  const SampleItemDetailsView({super.key});
-
-  static const routeName = '/sample_item';
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        title: const Text('Item Details'),
-      ),
-      body: const Center(
-        child: Text('More Information Here'),
-      ),
-    );
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl
deleted file mode 100644
index 78066e9..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl
+++ /dev/null
@@ -1,71 +0,0 @@
-import 'package:flutter/material.dart';
-
-import '../settings/settings_view.dart';
-import 'sample_item.dart';
-import 'sample_item_details_view.dart';
-
-/// Displays a list of SampleItems.
-class SampleItemListView extends StatelessWidget {
-  const SampleItemListView({
-    super.key,
-    this.items = const [SampleItem(1), SampleItem(2), SampleItem(3)],
-  });
-
-  static const routeName = '/';
-
-  final List<SampleItem> items;
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        title: const Text('Sample Items'),
-        actions: [
-          IconButton(
-            icon: const Icon(Icons.settings),
-            onPressed: () {
-              // Navigate to the settings page. If the user leaves and returns
-              // to the app after it has been killed while running in the
-              // background, the navigation stack is restored.
-              Navigator.restorablePushNamed(context, SettingsView.routeName);
-            },
-          ),
-        ],
-      ),
-
-      // To work with lists that may contain a large number of items, it’s best
-      // to use the ListView.builder constructor.
-      //
-      // In contrast to the default ListView constructor, which requires
-      // building all Widgets up front, the ListView.builder constructor lazily
-      // builds Widgets as they’re scrolled into view.
-      body: ListView.builder(
-        // Providing a restorationId allows the ListView to restore the
-        // scroll position when a user leaves and returns to the app after it
-        // has been killed while running in the background.
-        restorationId: 'sampleItemListView',
-        itemCount: items.length,
-        itemBuilder: (BuildContext context, int index) {
-          final item = items[index];
-
-          return ListTile(
-            title: Text('SampleItem ${item.id}'),
-            leading: const CircleAvatar(
-              // Display the Flutter Logo image asset.
-              foregroundImage: AssetImage('assets/images/flutter_logo.png'),
-            ),
-            onTap: () {
-              // Navigate to the details page. If the user leaves and returns to
-              // the app after it has been killed while running in the
-              // background, the navigation stack is restored.
-              Navigator.restorablePushNamed(
-                context,
-                SampleItemDetailsView.routeName,
-              );
-            }
-          );
-        },
-      ),
-    );
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_controller.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_controller.dart.tmpl
deleted file mode 100644
index e32c0df..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_controller.dart.tmpl
+++ /dev/null
@@ -1,50 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'settings_service.dart';
-
-/// A class that many Widgets can interact with to read user settings, update
-/// user settings, or listen to user settings changes.
-///
-/// Controllers glue Data Services to Flutter Widgets. The SettingsController
-/// uses the SettingsService to store and retrieve user settings.
-class SettingsController with ChangeNotifier {
-  SettingsController(this._settingsService);
-
-  // Make SettingsService a private variable so it is not used directly.
-  final SettingsService _settingsService;
-
-  // Make ThemeMode a private variable so it is not updated directly without
-  // also persisting the changes with the SettingsService.
-  late ThemeMode _themeMode;
-
-  // Allow Widgets to read the user's preferred ThemeMode.
-  ThemeMode get themeMode => _themeMode;
-
-  /// Load the user's settings from the SettingsService. It may load from a
-  /// local database or the internet. The controller only knows it can load the
-  /// settings from the service.
-  Future<void> loadSettings() async {
-    _themeMode = await _settingsService.themeMode();
-
-    // Important! Inform listeners a change has occurred.
-    notifyListeners();
-  }
-
-  /// Update and persist the ThemeMode based on the user's selection.
-  Future<void> updateThemeMode(ThemeMode? newThemeMode) async {
-    if (newThemeMode == null) return;
-
-    // Do not perform any work if new and old ThemeMode are identical
-    if (newThemeMode == _themeMode) return;
-
-    // Otherwise, store the new ThemeMode in memory
-    _themeMode = newThemeMode;
-
-    // Important! Inform listeners a change has occurred.
-    notifyListeners();
-
-    // Persist the changes to a local database or the internet using the
-    // SettingService.
-    await _settingsService.updateThemeMode(newThemeMode);
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_service.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_service.dart.tmpl
deleted file mode 100644
index 6f94dc3..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_service.dart.tmpl
+++ /dev/null
@@ -1,17 +0,0 @@
-import 'package:flutter/material.dart';
-
-/// A service that stores and retrieves user settings.
-///
-/// By default, this class does not persist user settings. If you'd like to
-/// persist the user settings locally, use the shared_preferences package. If
-/// you'd like to store settings on a web server, use the http package.
-class SettingsService {
-  /// Loads the User's preferred ThemeMode from local or remote storage.
-  Future<ThemeMode> themeMode() async => ThemeMode.system;
-
-  /// Persists the user's preferred ThemeMode to local or remote storage.
-  Future<void> updateThemeMode(ThemeMode theme) async {
-    // Use the shared_preferences package to persist settings locally or the
-    // http package to persist settings over the network.
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_view.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_view.dart.tmpl
deleted file mode 100644
index 7aae644..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_view.dart.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'settings_controller.dart';
-
-/// Displays the various settings that can be customized by the user.
-///
-/// When a user changes a setting, the SettingsController is updated and
-/// Widgets that listen to the SettingsController are rebuilt.
-class SettingsView extends StatelessWidget {
-  const SettingsView({super.key, required this.controller});
-
-  static const routeName = '/settings';
-
-  final SettingsController controller;
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        title: const Text('Settings'),
-      ),
-      body: Padding(
-        padding: const EdgeInsets.all(16),
-        // Glue the SettingsController to the theme selection DropdownButton.
-        //
-        // When a user selects a theme from the dropdown list, the
-        // SettingsController is updated, which rebuilds the MaterialApp.
-        child: DropdownButton<ThemeMode>(
-          // Read the selected themeMode from the controller
-          value: controller.themeMode,
-          // Call the updateThemeMode method any time the user selects a theme.
-          onChanged: controller.updateThemeMode,
-          items: const [
-            DropdownMenuItem(
-              value: ThemeMode.system,
-              child: Text('System Theme'),
-            ),
-            DropdownMenuItem(
-              value: ThemeMode.light,
-              child: Text('Light Theme'),
-            ),
-            DropdownMenuItem(
-              value: ThemeMode.dark,
-              child: Text('Dark Theme'),
-            )
-          ],
-        ),
-      ),
-    );
-  }
-}
diff --git a/packages/flutter_tools/templates/skeleton/pubspec.yaml.tmpl b/packages/flutter_tools/templates/skeleton/pubspec.yaml.tmpl
deleted file mode 100644
index f4f092f..0000000
--- a/packages/flutter_tools/templates/skeleton/pubspec.yaml.tmpl
+++ /dev/null
@@ -1,32 +0,0 @@
-name: {{projectName}}
-description: {{description}}
-
-# Prevent accidental publishing to pub.dev.
-publish_to: 'none'
-
-version: 1.0.0+1
-
-environment:
-  sdk: {{dartSdkVersionBounds}}
-
-dependencies:
-  flutter:
-    sdk: flutter
-  flutter_localizations:
-    sdk: flutter
-
-dev_dependencies:
-  flutter_test:
-    sdk: flutter
-
-  flutter_lints: ^5.0.0
-
-flutter:
-  uses-material-design: true
-
-  # Enable generation of localized Strings from arb files.
-  generate: true
-
-  assets:
-    # Add assets from the images directory to the application.
-    - assets/images/
diff --git a/packages/flutter_tools/templates/skeleton/test/implementation_test.dart.test.tmpl b/packages/flutter_tools/templates/skeleton/test/implementation_test.dart.test.tmpl
deleted file mode 100644
index 746ac01..0000000
--- a/packages/flutter_tools/templates/skeleton/test/implementation_test.dart.test.tmpl
+++ /dev/null
@@ -1,73 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:{{projectName}}/src/app.dart';
-import 'package:{{projectName}}/src/sample_feature/sample_item_details_view.dart';
-import 'package:{{projectName}}/src/settings/settings_controller.dart';
-import 'package:{{projectName}}/src/settings/settings_service.dart';
-import 'package:{{projectName}}/src/settings/settings_view.dart';
-
-void main() {
-  group('ListDetailApp', () {
-    testWidgets('displays a list of items', (WidgetTester tester) async {
-      final service = SettingsService();
-      final controller = SettingsController(service);
-
-      await controller.loadSettings();
-      await tester.pumpWidget(MyApp(settingsController: controller));
-
-      expect(find.byType(ListTile), findsNWidgets(3));
-    });
-
-    testWidgets('navigates to an item page', (WidgetTester tester) async {
-      final service = SettingsService();
-      final controller = SettingsController(service);
-
-      await controller.loadSettings();
-      await tester.pumpWidget(MyApp(settingsController: controller));
-      await tester.tap(find.byType(ListTile).first);
-      await tester.pumpAndSettle();
-
-      expect(find.byType(SampleItemDetailsView), findsOneWidget);
-    });
-
-    testWidgets('changes the app theme', (WidgetTester tester) async {
-      final service = SettingsService();
-      final controller = SettingsController(service);
-
-      // Navigate to Settings
-      await controller.loadSettings();
-      await tester.pumpWidget(MyApp(settingsController: controller));
-      await tester.tap(find.byType(IconButton));
-      await tester.pumpAndSettle();
-
-      // Verify defaults in place
-      expect(controller.themeMode, ThemeMode.system);
-      expect(find.byType(SettingsView), findsOneWidget);
-      expect(findApp(ThemeMode.system), findsOneWidget);
-
-      // Change to Dark Theme
-      await tester.tap(find.text('System Theme'));
-      await tester.pumpAndSettle();
-      await tester.tap(find.text('Dark Theme').last);
-      await tester.pumpAndSettle();
-
-      // Verify Dark Theme rendered
-      expect(controller.themeMode, ThemeMode.dark);
-      expect(findApp(ThemeMode.dark), findsOneWidget);
-
-      // Change to Light Theme
-      await tester.tap(find.text('Dark Theme'));
-      await tester.pumpAndSettle();
-      await tester.tap(find.text('Light Theme').last);
-      await tester.pumpAndSettle();
-
-      // Verify light theme enabled
-      expect(controller.themeMode, ThemeMode.light);
-      expect(findApp(ThemeMode.light), findsOneWidget);
-    });
-  });
-}
-
-Finder findApp(ThemeMode themeMode) => find.byWidgetPredicate(
-    (widget) => widget is MaterialApp && widget.themeMode == themeMode,
-);
diff --git a/packages/flutter_tools/templates/skeleton/test/unit_test.dart.tmpl b/packages/flutter_tools/templates/skeleton/test/unit_test.dart.tmpl
deleted file mode 100644
index 026f329..0000000
--- a/packages/flutter_tools/templates/skeleton/test/unit_test.dart.tmpl
+++ /dev/null
@@ -1,15 +0,0 @@
-// This is an example unit test.
-//
-// A unit test tests a single function, method, or class. To learn more about
-// writing unit tests, visit
-// https://flutter.dev/to/unit-testing
-
-import 'package:flutter_test/flutter_test.dart';
-
-void main() {
-  group('Plus Operator', () {
-    test('should add two numbers together', () {
-      expect(1 + 1, 2);
-    });
-  });
-}
diff --git a/packages/flutter_tools/templates/skeleton/test/widget_test.dart.tmpl b/packages/flutter_tools/templates/skeleton/test/widget_test.dart.tmpl
deleted file mode 100644
index 1d8332f..0000000
--- a/packages/flutter_tools/templates/skeleton/test/widget_test.dart.tmpl
+++ /dev/null
@@ -1,31 +0,0 @@
-// This is an example Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility in the flutter_test package. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-//
-// Visit https://flutter.dev/to/widget-testing for
-// more information about Widget testing.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-void main() {
-  group('MyWidget', () {
-    testWidgets('should display a string of text', (WidgetTester tester) async {
-      // Define a Widget
-      const myWidget = MaterialApp(
-        home: Scaffold(
-          body: Text('Hello'),
-        ),
-      );
-
-      // Build myWidget and trigger a frame.
-      await tester.pumpWidget(myWidget);
-
-      // Verify myWidget shows some text
-      expect(find.byType(Text), findsOneWidget);
-    });
-  });
-}
diff --git a/packages/flutter_tools/templates/template_manifest.json b/packages/flutter_tools/templates/template_manifest.json
index 70b73ae..3b8ff3b 100644
--- a/packages/flutter_tools/templates/template_manifest.json
+++ b/packages/flutter_tools/templates/template_manifest.json
@@ -1,388 +1,368 @@
 {
-    "version": 1.0,
-    "_comment": "A listing of all possible template output files. Files ending in .img.tmpl correspond to files checked in to the flutter_template_images package in the flutter/packages repo, located at the same path, excluding the .img.tmpl suffix.",
-    "files": [
-        "templates/app/lib/main.dart.tmpl",
-        "templates/app/pubspec.yaml.tmpl",
-        "templates/app/README.md.tmpl",
+  "version": 1.0,
+  "_comment": "A listing of all possible template output files. Files ending in .img.tmpl correspond to files checked in to the flutter_template_images package in the flutter/packages repo, located at the same path, excluding the .img.tmpl suffix.",
+  "files": [
+    "templates/app/.gitignore.tmpl",
+    "templates/app/.idea/libraries/Dart_SDK.xml.tmpl",
+    "templates/app/.idea/libraries/KotlinJavaRuntime.xml.tmpl",
+    "templates/app/.idea/modules.xml.tmpl",
+    "templates/app/.idea/runConfigurations/main_dart.xml.tmpl",
+    "templates/app/.idea/workspace.xml.tmpl",
+    "templates/app/.metadata.tmpl",
+    "templates/app/analysis_options.yaml.tmpl",
+    "templates/app/android-java.tmpl/app/build.gradle.kts.tmpl",
+    "templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl",
+    "templates/app/android-java.tmpl/build.gradle.kts.tmpl",
+    "templates/app/android-java.tmpl/projectName_android.iml.tmpl",
+    "templates/app/android-kotlin.tmpl/app/build.gradle.kts.tmpl",
+    "templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl",
+    "templates/app/android-kotlin.tmpl/build.gradle.kts.tmpl",
+    "templates/app/android-kotlin.tmpl/projectName_android.iml.tmpl",
+    "templates/app/android.tmpl/.gitignore",
+    "templates/app/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl",
+    "templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl",
+    "templates/app/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml",
+    "templates/app/android.tmpl/app/src/main/res/drawable/launch_background.xml",
+    "templates/app/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png",
+    "templates/app/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png",
+    "templates/app/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png",
+    "templates/app/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png",
+    "templates/app/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png",
+    "templates/app/android.tmpl/app/src/main/res/values-night/styles.xml",
+    "templates/app/android.tmpl/app/src/main/res/values/styles.xml",
+    "templates/app/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl",
+    "templates/app/android.tmpl/gradle.properties.tmpl",
+    "templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl",
+    "templates/app/android.tmpl/settings.gradle.kts.tmpl",
+    "templates/app/android.tmpl/settings.gradle",
+    "templates/app/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
+    "templates/app/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
+    "templates/app/ios-objc.tmpl/Runner/AppDelegate.h",
+    "templates/app/ios-objc.tmpl/Runner/AppDelegate.m",
+    "templates/app/ios-objc.tmpl/Runner/main.m",
+    "templates/app/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl",
+    "templates/app/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
+    "templates/app/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
+    "templates/app/ios-swift.tmpl/Runner/AppDelegate.swift",
+    "templates/app/ios-swift.tmpl/Runner/Runner-Bridging-Header.h",
+    "templates/app/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl",
+    "templates/app/ios.tmpl/.gitignore",
+    "templates/app/ios.tmpl/Flutter/AppFrameworkInfo.plist",
+    "templates/app/ios.tmpl/Flutter/Debug.xcconfig",
+    "templates/app/ios.tmpl/Flutter/Release.xcconfig",
+    "templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
+    "templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+    "templates/app/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
+    "templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl",
+    "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
+    "templates/app/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard",
+    "templates/app/ios.tmpl/Runner/Base.lproj/Main.storyboard",
+    "templates/app/ios.tmpl/Runner/Info.plist.tmpl",
+    "templates/app/lib/main.dart.tmpl",
+    "templates/app/linux.tmpl/.gitignore",
+    "templates/app/linux.tmpl/CMakeLists.txt.tmpl",
+    "templates/app/linux.tmpl/flutter/CMakeLists.txt",
+    "templates/app/linux.tmpl/runner/CMakeLists.txt",
+    "templates/app/linux.tmpl/runner/main.cc",
+    "templates/app/linux.tmpl/runner/my_application.cc.tmpl",
+    "templates/app/linux.tmpl/runner/my_application.cc",
+    "templates/app/linux.tmpl/runner/my_application.h",
+    "templates/app/macos.tmpl/.gitignore",
+    "templates/app/macos.tmpl/Flutter/Flutter-Debug.xcconfig",
+    "templates/app/macos.tmpl/Flutter/Flutter-Release.xcconfig",
+    "templates/app/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
+    "templates/app/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/app/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
+    "templates/app/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
+    "templates/app/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/app/macos.tmpl/Runner/AppDelegate.swift",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl",
+    "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
+    "templates/app/macos.tmpl/Runner/Base.lproj/MainMenu.xib",
+    "templates/app/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl",
+    "templates/app/macos.tmpl/Runner/Configs/Debug.xcconfig",
+    "templates/app/macos.tmpl/Runner/Configs/Release.xcconfig",
+    "templates/app/macos.tmpl/Runner/Configs/Warnings.xcconfig",
+    "templates/app/macos.tmpl/Runner/DebugProfile.entitlements",
+    "templates/app/macos.tmpl/Runner/Info.plist",
+    "templates/app/macos.tmpl/Runner/MainFlutterWindow.swift",
+    "templates/app/macos.tmpl/Runner/Release.entitlements",
+    "templates/app/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl",
+    "templates/app/projectName.iml.tmpl",
+    "templates/app/pubspec.yaml.tmpl",
+    "templates/app/README.md.tmpl",
+    "templates/app/web/favicon.png.copy.tmpl",
+    "templates/app/web/icons/Icon-192.png.copy.tmpl",
+    "templates/app/web/icons/Icon-512.png.copy.tmpl",
+    "templates/app/web/icons/Icon-maskable-192.png.img.tmpl",
+    "templates/app/web/icons/Icon-maskable-512.png.img.tmpl",
+    "templates/app/web/index.html.tmpl",
+    "templates/app/web/manifest.json.tmpl",
+    "templates/app/windows.tmpl/.gitignore",
+    "templates/app/windows.tmpl/CMakeLists.txt.tmpl",
+    "templates/app/windows.tmpl/flutter/CMakeLists.txt",
+    "templates/app/windows.tmpl/runner/CMakeLists.txt",
+    "templates/app/windows.tmpl/runner/flutter_window.cpp",
+    "templates/app/windows.tmpl/runner/flutter_window.h",
+    "templates/app/windows.tmpl/runner/main.cpp.tmpl",
+    "templates/app/windows.tmpl/runner/resource.h",
+    "templates/app/windows.tmpl/runner/resources/app_icon.ico.img.tmpl",
+    "templates/app/windows.tmpl/runner/runner.exe.manifest",
+    "templates/app/windows.tmpl/runner/Runner.rc.tmpl",
+    "templates/app/windows.tmpl/runner/utils.cpp",
+    "templates/app/windows.tmpl/runner/utils.h",
+    "templates/app/windows.tmpl/runner/win32_window.cpp",
+    "templates/app/windows.tmpl/runner/win32_window.h",
 
-        "templates/app_shared/.gitignore.tmpl",
-        "templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl",
-        "templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl",
-        "templates/app_shared/.idea/modules.xml.tmpl",
-        "templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl",
-        "templates/app_shared/.idea/workspace.xml.tmpl",
-        "templates/app_shared/.metadata.tmpl",
-        "templates/app_shared/analysis_options.yaml.tmpl",
-        "templates/app_shared/android-java.tmpl/app/build.gradle.kts.tmpl",
-        "templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl",
-        "templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl",
-        "templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl",
-        "templates/app_shared/android-kotlin.tmpl/app/build.gradle.kts.tmpl",
-        "templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl",
-        "templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl",
-        "templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl",
-        "templates/app_shared/android.tmpl/.gitignore",
-        "templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl",
-        "templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl",
-        "templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml",
-        "templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml",
-        "templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png",
-        "templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png",
-        "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png",
-        "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png",
-        "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png",
-        "templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml",
-        "templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml",
-        "templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl",
-        "templates/app_shared/android.tmpl/gradle.properties.tmpl",
-        "templates/app_shared/android.tmpl/settings.gradle.kts.tmpl",
-        "templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl",
-        "templates/app_shared/android.tmpl/settings.gradle",
-        "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
-        "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
-        "templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h",
-        "templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m",
-        "templates/app_shared/ios-objc.tmpl/Runner/main.m",
-        "templates/app_shared/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl",
-        "templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
-        "templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
-        "templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift",
-        "templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h",
-        "templates/app_shared/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl",
-        "templates/app_shared/ios.tmpl/.gitignore",
-        "templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist",
-        "templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig",
-        "templates/app_shared/ios.tmpl/Flutter/Release.xcconfig",
-        "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
-        "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
-        "templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
-        "templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl",
-        "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
-        "templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard",
-        "templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard",
-        "templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl",
-        "templates/app_shared/linux.tmpl/.gitignore",
-        "templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl",
-        "templates/app_shared/linux.tmpl/flutter/CMakeLists.txt",
-        "templates/app_shared/linux.tmpl/runner/CMakeLists.txt",
-        "templates/app_shared/linux.tmpl/runner/main.cc",
-        "templates/app_shared/linux.tmpl/runner/my_application.cc",
-        "templates/app_shared/linux.tmpl/runner/my_application.cc.tmpl",
-        "templates/app_shared/linux.tmpl/runner/my_application.h",
-        "templates/app_shared/macos.tmpl/.gitignore",
-        "templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig",
-        "templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig",
-        "templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
-        "templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
-        "templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
-        "templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/app_shared/macos.tmpl/Runner/AppDelegate.swift",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
-        "templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib",
-        "templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl",
-        "templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig",
-        "templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig",
-        "templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig",
-        "templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements",
-        "templates/app_shared/macos.tmpl/Runner/Info.plist",
-        "templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift",
-        "templates/app_shared/macos.tmpl/Runner/Release.entitlements",
-        "templates/app_shared/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl",
-        "templates/app_shared/projectName.iml.tmpl",
-        "templates/app_shared/web/favicon.png.copy.tmpl",
-        "templates/app_shared/web/icons/Icon-192.png.copy.tmpl",
-        "templates/app_shared/web/icons/Icon-512.png.copy.tmpl",
-        "templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl",
-        "templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl",
-        "templates/app_shared/web/index.html.tmpl",
-        "templates/app_shared/web/manifest.json.tmpl",
-        "templates/app_shared/windows.tmpl/.gitignore",
-        "templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl",
-        "templates/app_shared/windows.tmpl/flutter/CMakeLists.txt",
-        "templates/app_shared/windows.tmpl/runner/CMakeLists.txt",
-        "templates/app_shared/windows.tmpl/runner/flutter_window.cpp",
-        "templates/app_shared/windows.tmpl/runner/flutter_window.h",
-        "templates/app_shared/windows.tmpl/runner/main.cpp.tmpl",
-        "templates/app_shared/windows.tmpl/runner/resource.h",
-        "templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl",
-        "templates/app_shared/windows.tmpl/runner/runner.exe.manifest",
-        "templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl",
-        "templates/app_shared/windows.tmpl/runner/utils.cpp",
-        "templates/app_shared/windows.tmpl/runner/utils.h",
-        "templates/app_shared/windows.tmpl/runner/win32_window.cpp",
-        "templates/app_shared/windows.tmpl/runner/win32_window.h",
+    "templates/app_test_widget/test/widget_test.dart.tmpl",
 
-        "templates/app_test_widget/test/widget_test.dart.tmpl",
+    "templates/app_integration_test/integration_test/plugin_integration_test.dart.tmpl",
 
-        "templates/app_integration_test/integration_test/plugin_integration_test.dart.tmpl",
+    "templates/cocoapods/Podfile-ios-objc",
+    "templates/cocoapods/Podfile-ios-swift",
+    "templates/cocoapods/Podfile-macos",
 
-        "templates/cocoapods/Podfile-ios-objc",
-        "templates/cocoapods/Podfile-ios-swift",
-        "templates/cocoapods/Podfile-macos",
+    "templates/module/android/deferred_component/build.gradle.tmpl",
+    "templates/module/android/deferred_component/src/main/AndroidManifest.xml.tmpl",
+    "templates/module/android/gradle/build.gradle.tmpl",
+    "templates/module/android/gradle/gradle.properties.tmpl",
+    "templates/module/android/gradle/settings.gradle.tmpl",
+    "templates/module/android/gradle/src/main/AndroidManifest.xml.tmpl",
+    "templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl",
+    "templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl",
+    "templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl",
+    "templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml",
+    "templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png",
+    "templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml",
+    "templates/module/android/host_app_editable/settings.gradle.copy.tmpl",
+    "templates/module/android/host_app_ephemeral/settings.gradle.tmpl",
+    "templates/module/android/library/Flutter.tmpl/build.gradle.tmpl",
+    "templates/module/android/library/Flutter.tmpl/flutter.iml.copy.tmpl",
+    "templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
+    "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java.tmpl",
+    "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java.tmpl",
+    "templates/module/android/library/include_flutter.groovy.copy.tmpl",
+    "templates/module/android/library/settings.gradle.copy.tmpl",
+    "templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl",
+    "templates/module/android/library_new_embedding/Flutter.tmpl/flutter.iml.copy.tmpl",
+    "templates/module/android/library_new_embedding/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
+    "templates/module/android/library_new_embedding/include_flutter.groovy.copy.tmpl",
+    "templates/module/android/library_new_embedding/settings.gradle.copy.tmpl",
+    "templates/module/common/.gitignore.tmpl",
+    "templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl",
+    "templates/module/common/.idea/modules.xml.tmpl",
+    "templates/module/common/.idea/workspace.xml.tmpl",
+    "templates/module/common/.metadata.tmpl",
+    "templates/module/common/analysis_options.yaml.tmpl",
+    "templates/module/common/lib/main.dart.tmpl",
+    "templates/module/common/projectName.iml.tmpl",
+    "templates/module/common/projectName_android.iml.tmpl",
+    "templates/module/common/pubspec.yaml.tmpl",
+    "templates/module/common/README.md.tmpl",
+    "templates/module/common/test/widget_test.dart.tmpl",
+    "templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig",
+    "templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig",
+    "templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl",
+    "templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m",
+    "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl",
+    "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
+    "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+    "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme",
+    "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
+    "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
+    "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig",
+    "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig",
+    "templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl",
+    "templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m",
+    "templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist",
+    "templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl",
+    "templates/module/ios/library/Flutter.tmpl/README.md",
+    "templates/module/README.md",
 
-        "templates/module/android/deferred_component/build.gradle.tmpl",
-        "templates/module/android/deferred_component/src/main/AndroidManifest.xml.tmpl",
-        "templates/module/android/gradle/build.gradle.tmpl",
-        "templates/module/android/gradle/gradle.properties.tmpl",
-        "templates/module/android/gradle/settings.gradle.tmpl",
-        "templates/module/android/gradle/src/main/AndroidManifest.xml.tmpl",
-        "templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl",
-        "templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl",
-        "templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl",
-        "templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml",
-        "templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png",
-        "templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml",
-        "templates/module/android/host_app_editable/settings.gradle.copy.tmpl",
-        "templates/module/android/host_app_ephemeral/settings.gradle.tmpl",
-        "templates/module/android/library/Flutter.tmpl/build.gradle.tmpl",
-        "templates/module/android/library/Flutter.tmpl/flutter.iml.copy.tmpl",
-        "templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
-        "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java.tmpl",
-        "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java.tmpl",
-        "templates/module/android/library/include_flutter.groovy.copy.tmpl",
-        "templates/module/android/library/settings.gradle.copy.tmpl",
-        "templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl",
-        "templates/module/android/library_new_embedding/Flutter.tmpl/flutter.iml.copy.tmpl",
-        "templates/module/android/library_new_embedding/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
-        "templates/module/android/library_new_embedding/include_flutter.groovy.copy.tmpl",
-        "templates/module/android/library_new_embedding/settings.gradle.copy.tmpl",
-        "templates/module/common/.gitignore.tmpl",
-        "templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl",
-        "templates/module/common/.idea/modules.xml.tmpl",
-        "templates/module/common/.idea/workspace.xml.tmpl",
-        "templates/module/common/.metadata.tmpl",
-        "templates/module/common/analysis_options.yaml.tmpl",
-        "templates/module/common/lib/main.dart.tmpl",
-        "templates/module/common/projectName.iml.tmpl",
-        "templates/module/common/projectName_android.iml.tmpl",
-        "templates/module/common/pubspec.yaml.tmpl",
-        "templates/module/common/README.md.tmpl",
-        "templates/module/common/test/widget_test.dart.tmpl",
-        "templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig",
-        "templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig",
-        "templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl",
-        "templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m",
-        "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl",
-        "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
-        "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
-        "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme",
-        "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
-        "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
-        "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig",
-        "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig",
-        "templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl",
-        "templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m",
-        "templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist",
-        "templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl",
-        "templates/module/ios/library/Flutter.tmpl/README.md",
-        "templates/module/README.md",
+    "templates/package/.gitignore.tmpl",
+    "templates/package/.idea/libraries/Dart_SDK.xml.tmpl",
+    "templates/package/.idea/modules.xml.tmpl",
+    "templates/package/.idea/workspace.xml.tmpl",
+    "templates/package/.metadata.tmpl",
+    "templates/package/analysis_options.yaml.tmpl",
+    "templates/package/CHANGELOG.md.tmpl",
+    "templates/package/lib/projectName.dart.tmpl",
+    "templates/package/LICENSE.tmpl",
+    "templates/package/projectName.iml.tmpl",
+    "templates/package/pubspec.yaml.tmpl",
+    "templates/package/README.md.tmpl",
+    "templates/package/test/projectName_test.dart.tmpl",
 
-        "templates/package/.gitignore.tmpl",
-        "templates/package/.idea/libraries/Dart_SDK.xml.tmpl",
-        "templates/package/.idea/modules.xml.tmpl",
-        "templates/package/.idea/workspace.xml.tmpl",
-        "templates/package/.metadata.tmpl",
-        "templates/package/analysis_options.yaml.tmpl",
-        "templates/package/CHANGELOG.md.tmpl",
-        "templates/package/lib/projectName.dart.tmpl",
-        "templates/package/LICENSE.tmpl",
-        "templates/package/projectName.iml.tmpl",
-        "templates/package/pubspec.yaml.tmpl",
-        "templates/package/README.md.tmpl",
-        "templates/package/test/projectName_test.dart.tmpl",
+    "templates/package_ffi/.gitignore.tmpl",
+    "templates/package_ffi/.metadata.tmpl",
+    "templates/package_ffi/analysis_options.yaml.tmpl",
+    "templates/package_ffi/CHANGELOG.md.tmpl",
+    "templates/package_ffi/ffigen.yaml.tmpl",
+    "templates/package_ffi/hook/build.dart.tmpl",
+    "templates/package_ffi/lib/projectName_bindings_generated.dart.tmpl",
+    "templates/package_ffi/lib/projectName.dart.tmpl",
+    "templates/package_ffi/LICENSE.tmpl",
+    "templates/package_ffi/pubspec.yaml.tmpl",
+    "templates/package_ffi/README.md.tmpl",
+    "templates/package_ffi/src.tmpl/projectName.c.tmpl",
+    "templates/package_ffi/src.tmpl/projectName.h.tmpl",
+    "templates/package_ffi/test/projectName_test.dart.tmpl",
 
-        "templates/package_ffi/.gitignore.tmpl",
-        "templates/package_ffi/.metadata.tmpl",
-        "templates/package_ffi/analysis_options.yaml.tmpl",
-        "templates/package_ffi/CHANGELOG.md.tmpl",
-        "templates/package_ffi/ffigen.yaml.tmpl",
-        "templates/package_ffi/hook/build.dart.tmpl",
-        "templates/package_ffi/lib/projectName_bindings_generated.dart.tmpl",
-        "templates/package_ffi/lib/projectName.dart.tmpl",
-        "templates/package_ffi/LICENSE.tmpl",
-        "templates/package_ffi/pubspec.yaml.tmpl",
-        "templates/package_ffi/README.md.tmpl",
-        "templates/package_ffi/src.tmpl/projectName.c.tmpl",
-        "templates/package_ffi/src.tmpl/projectName.h.tmpl",
-        "templates/package_ffi/test/projectName_test.dart.tmpl",
+    "templates/plugin/android-java.tmpl/build.gradle.tmpl",
+    "templates/plugin/android-java.tmpl/projectName_android.iml.tmpl",
+    "templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl",
+    "templates/plugin/android-java.tmpl/src/test/java/androidIdentifier/pluginClassTest.java.tmpl",
+    "templates/plugin/android-kotlin.tmpl/build.gradle.tmpl",
+    "templates/plugin/android-kotlin.tmpl/projectName_android.iml.tmpl",
+    "templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl",
+    "templates/plugin/android-kotlin.tmpl/src/test/kotlin/androidIdentifier/pluginClassTest.kt.tmpl",
+    "templates/plugin/android.tmpl/.gitignore",
+    "templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties",
+    "templates/plugin/android.tmpl/gradle.properties.tmpl",
+    "templates/plugin/android.tmpl/settings.gradle.tmpl",
+    "templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl",
+    "templates/plugin/ios-objc.tmpl/projectName.podspec.tmpl",
+    "templates/plugin/ios-swift.tmpl/projectName.podspec.tmpl",
+    "templates/plugin/ios.tmpl/.gitignore",
+    "templates/plugin/lib/projectName.dart.tmpl",
+    "templates/plugin/lib/projectName_platform_interface.dart.tmpl",
+    "templates/plugin/lib/projectName_method_channel.dart.tmpl",
+    "templates/plugin/linux.tmpl/CMakeLists.txt.tmpl",
+    "templates/plugin/linux.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl",
+    "templates/plugin/linux.tmpl/pluginClassSnakeCase.cc.tmpl",
+    "templates/plugin/linux.tmpl/pluginClassSnakeCase_private.h.tmpl",
+    "templates/plugin/linux.tmpl/test/pluginClassSnakeCase_test.cc.tmpl",
+    "templates/plugin/README.md.tmpl",
+    "templates/plugin/test/projectName_test.dart.tmpl",
+    "templates/plugin/test/projectName_method_channel_test.dart.tmpl",
+    "templates/plugin/windows.tmpl/CMakeLists.txt.tmpl",
+    "templates/plugin/windows.tmpl/include/projectName.tmpl/pluginClassSnakeCase_c_api.h.tmpl",
+    "templates/plugin/windows.tmpl/test/pluginClassSnakeCase_test.cpp.tmpl",
+    "templates/plugin/windows.tmpl/pluginClassSnakeCase.cpp.tmpl",
+    "templates/plugin/windows.tmpl/pluginClassSnakeCase.h.tmpl",
+    "templates/plugin/windows.tmpl/pluginClassSnakeCase_c_api.cpp.tmpl",
+    "templates/plugin/lib/projectName_web.dart.tmpl",
 
-        "templates/plugin/android-java.tmpl/build.gradle.tmpl",
-        "templates/plugin/android-java.tmpl/projectName_android.iml.tmpl",
-        "templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl",
-        "templates/plugin/android-java.tmpl/src/test/java/androidIdentifier/pluginClassTest.java.tmpl",
-        "templates/plugin/android-kotlin.tmpl/build.gradle.tmpl",
-        "templates/plugin/android-kotlin.tmpl/projectName_android.iml.tmpl",
-        "templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl",
-        "templates/plugin/android-kotlin.tmpl/src/test/kotlin/androidIdentifier/pluginClassTest.kt.tmpl",
-        "templates/plugin/android.tmpl/.gitignore",
-        "templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties",
-        "templates/plugin/android.tmpl/gradle.properties.tmpl",
-        "templates/plugin/android.tmpl/settings.gradle.tmpl",
-        "templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl",
-        "templates/plugin/ios-objc.tmpl/projectName.podspec.tmpl",
-        "templates/plugin/ios-swift.tmpl/projectName.podspec.tmpl",
-        "templates/plugin/ios.tmpl/.gitignore",
-        "templates/plugin/lib/projectName.dart.tmpl",
-        "templates/plugin/lib/projectName_platform_interface.dart.tmpl",
-        "templates/plugin/lib/projectName_method_channel.dart.tmpl",
-        "templates/plugin/linux.tmpl/CMakeLists.txt.tmpl",
-        "templates/plugin/linux.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl",
-        "templates/plugin/linux.tmpl/pluginClassSnakeCase.cc.tmpl",
-        "templates/plugin/linux.tmpl/pluginClassSnakeCase_private.h.tmpl",
-        "templates/plugin/linux.tmpl/test/pluginClassSnakeCase_test.cc.tmpl",
-        "templates/plugin/README.md.tmpl",
-        "templates/plugin/test/projectName_test.dart.tmpl",
-        "templates/plugin/test/projectName_method_channel_test.dart.tmpl",
-        "templates/plugin/windows.tmpl/CMakeLists.txt.tmpl",
-        "templates/plugin/windows.tmpl/include/projectName.tmpl/pluginClassSnakeCase_c_api.h.tmpl",
-        "templates/plugin/windows.tmpl/test/pluginClassSnakeCase_test.cpp.tmpl",
-        "templates/plugin/windows.tmpl/pluginClassSnakeCase.cpp.tmpl",
-        "templates/plugin/windows.tmpl/pluginClassSnakeCase.h.tmpl",
-        "templates/plugin/windows.tmpl/pluginClassSnakeCase_c_api.cpp.tmpl",
-        "templates/plugin/lib/projectName_web.dart.tmpl",
+    "templates/plugin_ffi/android.tmpl/build.gradle.tmpl",
+    "templates/plugin_ffi/android.tmpl/projectName_android.iml.tmpl",
+    "templates/plugin_ffi/ffigen.yaml.tmpl",
+    "templates/plugin_ffi/ios.tmpl/.gitignore",
+    "templates/plugin_ffi/ios.tmpl/Classes/projectName.c.tmpl",
+    "templates/plugin_ffi/ios.tmpl/projectName.podspec.tmpl",
+    "templates/plugin_ffi/lib/projectName_bindings_generated.dart.tmpl",
+    "templates/plugin_ffi/lib/projectName.dart.tmpl",
+    "templates/plugin_ffi/linux.tmpl/CMakeLists.txt.tmpl",
+    "templates/plugin_ffi/linux.tmpl/include/projectName.tmpl/plugin_ffiClassSnakeCase.h.tmpl",
+    "templates/plugin_ffi/macos.tmpl/Classes/projectName.c.tmpl",
+    "templates/plugin_ffi/README.md.tmpl",
+    "templates/plugin_ffi/src.tmpl/CMakeLists.txt.tmpl",
+    "templates/plugin_ffi/src.tmpl/projectName.c.tmpl",
+    "templates/plugin_ffi/src.tmpl/projectName.h.tmpl",
+    "templates/plugin_ffi/windows.tmpl/CMakeLists.txt.tmpl",
 
-        "templates/plugin_ffi/android.tmpl/build.gradle.tmpl",
-        "templates/plugin_ffi/android.tmpl/projectName_android.iml.tmpl",
-        "templates/plugin_ffi/ffigen.yaml.tmpl",
-        "templates/plugin_ffi/ios.tmpl/.gitignore",
-        "templates/plugin_ffi/ios.tmpl/Classes/projectName.c.tmpl",
-        "templates/plugin_ffi/ios.tmpl/projectName.podspec.tmpl",
-        "templates/plugin_ffi/lib/projectName_bindings_generated.dart.tmpl",
-        "templates/plugin_ffi/lib/projectName.dart.tmpl",
-        "templates/plugin_ffi/linux.tmpl/CMakeLists.txt.tmpl",
-        "templates/plugin_ffi/linux.tmpl/include/projectName.tmpl/plugin_ffiClassSnakeCase.h.tmpl",
-        "templates/plugin_ffi/macos.tmpl/Classes/projectName.c.tmpl",
-        "templates/plugin_ffi/README.md.tmpl",
-        "templates/plugin_ffi/src.tmpl/CMakeLists.txt.tmpl",
-        "templates/plugin_ffi/src.tmpl/projectName.c.tmpl",
-        "templates/plugin_ffi/src.tmpl/projectName.h.tmpl",
-        "templates/plugin_ffi/windows.tmpl/CMakeLists.txt.tmpl",
+    "templates/plugin_shared/.gitignore.tmpl",
+    "templates/plugin_shared/.idea/libraries/Dart_SDK.xml.tmpl",
+    "templates/plugin_shared/.idea/modules.xml.tmpl",
+    "templates/plugin_shared/.idea/runConfigurations/example_lib_main_dart.xml.tmpl",
+    "templates/plugin_shared/.idea/workspace.xml.tmpl",
+    "templates/plugin_shared/.metadata.tmpl",
+    "templates/plugin_shared/analysis_options.yaml.tmpl",
+    "templates/plugin_shared/android.tmpl/.gitignore",
+    "templates/plugin_shared/android.tmpl/settings.gradle.tmpl",
+    "templates/plugin_shared/android.tmpl/src/main/AndroidManifest.xml.tmpl",
+    "templates/plugin_shared/CHANGELOG.md.tmpl",
+    "templates/plugin_shared/LICENSE.tmpl",
+    "templates/plugin_shared/macos.tmpl/projectName.podspec.tmpl",
+    "templates/plugin_shared/projectName.iml.tmpl",
+    "templates/plugin_shared/pubspec.yaml.tmpl",
+    "templates/plugin_shared/windows.tmpl/.gitignore",
 
-        "templates/plugin_shared/.gitignore.tmpl",
-        "templates/plugin_shared/.idea/libraries/Dart_SDK.xml.tmpl",
-        "templates/plugin_shared/.idea/modules.xml.tmpl",
-        "templates/plugin_shared/.idea/runConfigurations/example_lib_main_dart.xml.tmpl",
-        "templates/plugin_shared/.idea/workspace.xml.tmpl",
-        "templates/plugin_shared/.metadata.tmpl",
-        "templates/plugin_shared/analysis_options.yaml.tmpl",
-        "templates/plugin_shared/android.tmpl/.gitignore",
-        "templates/plugin_shared/android.tmpl/settings.gradle.tmpl",
-        "templates/plugin_shared/android.tmpl/src/main/AndroidManifest.xml.tmpl",
-        "templates/plugin_shared/CHANGELOG.md.tmpl",
-        "templates/plugin_shared/LICENSE.tmpl",
-        "templates/plugin_shared/macos.tmpl/projectName.podspec.tmpl",
-        "templates/plugin_shared/projectName.iml.tmpl",
-        "templates/plugin_shared/pubspec.yaml.tmpl",
-        "templates/plugin_shared/windows.tmpl/.gitignore",
+    "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.h.tmpl",
+    "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.m.tmpl",
+    "templates/plugin_cocoapods/ios-swift.tmpl/Classes/pluginClass.swift.tmpl",
+    "templates/plugin_cocoapods/ios.tmpl/Assets/.gitkeep",
+    "templates/plugin_cocoapods/ios.tmpl/Resources/PrivacyInfo.xcprivacy",
+    "templates/plugin_cocoapods/macos.tmpl/Classes/pluginClass.swift.tmpl",
+    "templates/plugin_cocoapods/macos.tmpl/Resources/PrivacyInfo.xcprivacy",
 
-        "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.h.tmpl",
-        "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.m.tmpl",
-        "templates/plugin_cocoapods/ios-swift.tmpl/Classes/pluginClass.swift.tmpl",
-        "templates/plugin_cocoapods/ios.tmpl/Assets/.gitkeep",
-        "templates/plugin_cocoapods/ios.tmpl/Resources/PrivacyInfo.xcprivacy",
-        "templates/plugin_cocoapods/macos.tmpl/Classes/pluginClass.swift.tmpl",
-        "templates/plugin_cocoapods/macos.tmpl/Resources/PrivacyInfo.xcprivacy",
+    "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/include/projectName.tmpl/pluginClass.h.tmpl",
+    "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.m.tmpl",
+    "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Package.swift.tmpl",
+    "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
+    "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Package.swift.tmpl",
+    "templates/plugin_swift_package_manager/ios.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
+    "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/Resources/.gitkeep",
+    "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
+    "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Package.swift.tmpl",
+    "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
 
-        "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/include/projectName.tmpl/pluginClass.h.tmpl",
-        "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.m.tmpl",
-        "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Package.swift.tmpl",
-        "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
-        "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Package.swift.tmpl",
-        "templates/plugin_swift_package_manager/ios.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
-        "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/Resources/.gitkeep",
-        "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
-        "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Package.swift.tmpl",
-        "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
+    "templates/widget_preview_scaffold/lib/main.dart.tmpl",
+    "templates/widget_preview_scaffold/pubspec.yaml.tmpl",
+    "templates/widget_preview_scaffold/README.md.tmpl",
 
-        "templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl",
-        "templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl",
-        "templates/skeleton/assets/images/flutter_logo.png.img.tmpl",
-        "templates/skeleton/l10n.yaml.tmpl",
-        "templates/skeleton/lib/main.dart.tmpl",
-        "templates/skeleton/lib/src/app.dart.tmpl",
-        "templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl",
-        "templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl",
-        "templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl",
-        "templates/skeleton/lib/src/localization/app_en.arb.tmpl",
-        "templates/skeleton/lib/src/settings/settings_controller.dart.tmpl",
-        "templates/skeleton/lib/src/settings/settings_service.dart.tmpl",
-        "templates/skeleton/lib/src/settings/settings_view.dart.tmpl",
-        "templates/skeleton/pubspec.yaml.tmpl",
-        "templates/skeleton/README.md.tmpl",
-        "templates/skeleton/test/implementation_test.dart.test.tmpl",
-        "templates/skeleton/test/unit_test.dart.tmpl",
-        "templates/skeleton/test/widget_test.dart.tmpl",
-
-        "templates/widget_preview_scaffold/lib/main.dart.tmpl",
-        "templates/widget_preview_scaffold/pubspec.yaml.tmpl",
-        "templates/widget_preview_scaffold/README.md.tmpl",
-
-        "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.pbxproj",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
-        "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme.tmpl"
-    ]
+    "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.pbxproj",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+    "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme.tmpl"
+  ]
 }
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
index df4b856..9377f45 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
@@ -1868,9 +1868,9 @@
       const String projectIconImagePath =
           'ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
       final String templateIconContentsJsonPath =
-          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
+          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
       const String templateIconImagePath =
-          '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
+          '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
 
       fakeProcessManager.addCommands(<FakeCommand>[
         xattrCommand,
@@ -1962,9 +1962,9 @@
       const String projectIconImagePath =
           'ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
       final String templateIconContentsJsonPath =
-          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
+          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
       const String templateIconImagePath =
-          '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
+          '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
 
       fakeProcessManager.addCommands(<FakeCommand>[
         xattrCommand,
@@ -2484,9 +2484,9 @@
       const String projectLaunchImagePath =
           'ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
       final String templateLaunchImageContentsJsonPath =
-          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
+          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
       const String templateLaunchImagePath =
-          '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
+          '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
 
       fakeProcessManager.addCommands(<FakeCommand>[
         xattrCommand,
@@ -2576,9 +2576,9 @@
       const String projectLaunchImagePath =
           'ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
       final String templateLaunchImageContentsJsonPath =
-          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
+          '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
       const String templateLaunchImagePath =
-          '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
+          '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
 
       fakeProcessManager.addCommands(<FakeCommand>[
         xattrCommand,
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
index d13276e..2b575e1 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
@@ -93,7 +93,6 @@
               'templates',
               'app_integration_test',
             ),
-            globals.fs.path.join('flutter', 'packages', 'flutter_tools', 'templates', 'app_shared'),
             globals.fs.path.join(
               'flutter',
               'packages',
@@ -102,7 +101,6 @@
               'app_test_widget',
             ),
             globals.fs.path.join('flutter', 'packages', 'flutter_tools', 'templates', 'cocoapods'),
-            globals.fs.path.join('flutter', 'packages', 'flutter_tools', 'templates', 'skeleton'),
             globals.fs.path.join(
               'flutter',
               'packages',
@@ -195,9 +193,6 @@
         await runner.run(<String>['create', '--no-pub', '--template=app', 'testy1']);
         expect((await command.usageValues).commandCreateProjectType, 'app');
 
-        await runner.run(<String>['create', '--no-pub', '--template=skeleton', 'testy2']);
-        expect((await command.usageValues).commandCreateProjectType, 'skeleton');
-
         await runner.run(<String>['create', '--no-pub', '--template=package', 'testy3']);
         expect((await command.usageValues).commandCreateProjectType, 'package');
 
diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
index 130788e..a01a674 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
@@ -29,7 +29,7 @@
 import 'package:flutter_tools/src/commands/create_base.dart';
 import 'package:flutter_tools/src/dart/pub.dart';
 import 'package:flutter_tools/src/features.dart';
-import 'package:flutter_tools/src/flutter_project_metadata.dart' show FlutterProjectType;
+import 'package:flutter_tools/src/flutter_project_metadata.dart' show FlutterTemplateType;
 import 'package:flutter_tools/src/globals.dart' as globals;
 import 'package:flutter_tools/src/project.dart';
 import 'package:flutter_tools/src/version.dart';
@@ -237,60 +237,6 @@
   );
 
   testUsingContext(
-    'can create a skeleton (list/detail) app',
-    () async {
-      await _createAndAnalyzeProject(
-        projectDir,
-        <String>['-t', 'skeleton', '-i', 'objc', '-a', 'java', '--implementation-tests'],
-        <String>[
-          '.dart_tool/flutter_gen/pubspec.yaml',
-          '.dart_tool/flutter_gen/gen_l10n/app_localizations.dart',
-          'analysis_options.yaml',
-          'android/app/src/main/java/com/example/flutter_project/MainActivity.java',
-          'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java',
-          'flutter_project.iml',
-          'ios/Flutter/AppFrameworkInfo.plist',
-          'ios/Runner/AppDelegate.m',
-          'ios/Runner/GeneratedPluginRegistrant.h',
-          'lib/main.dart',
-          'l10n.yaml',
-          'assets/images/2.0x/flutter_logo.png',
-          'assets/images/flutter_logo.png',
-          'assets/images/3.0x/flutter_logo.png',
-          'test/unit_test.dart',
-          'test/widget_test.dart',
-          'test/implementation_test.dart',
-          'lib/src/localization/app_en.arb',
-          'lib/src/app.dart',
-          'lib/src/sample_feature/sample_item_details_view.dart',
-          'lib/src/sample_feature/sample_item_list_view.dart',
-          'lib/src/sample_feature/sample_item.dart',
-          'lib/src/settings/settings_controller.dart',
-          'lib/src/settings/settings_view.dart',
-          'lib/src/settings/settings_service.dart',
-          'lib/main.dart',
-          'pubspec.yaml',
-          'README.md',
-        ],
-        expectedGitignoreLines: flutterPluginsIgnores,
-      );
-      return _runFlutterTest(projectDir);
-    },
-    overrides: <Type, Generator>{
-      Pub:
-          () => Pub.test(
-            fileSystem: globals.fs,
-            logger: globals.logger,
-            processManager: globals.processManager,
-            usage: globals.flutterUsage,
-            botDetector: globals.botDetector,
-            platform: globals.platform,
-            stdio: mockStdio,
-          ),
-    },
-  );
-
-  testUsingContext(
     'can create a default project if empty directory exists',
     () async {
       await projectDir.create(recursive: true);
@@ -1559,7 +1505,7 @@
       ]);
 
       void expectExists(String relPath) {
-        expect(globals.fs.isFileSync('${projectDir.path}/$relPath'), true);
+        expect(globals.fs.file('${projectDir.path}/$relPath'), exists);
       }
 
       expectExists('lib/main.dart');
@@ -4344,6 +4290,30 @@
   });
 
   testUsingContext(
+    'show an error message for removed --template=skeleton',
+    () async {
+      final CreateCommand command = CreateCommand();
+      final CommandRunner<void> runner = createTestCommandRunner(command);
+      await expectLater(
+        runner.run(<String>['create', '--no-pub', '--template=skeleton', projectDir.path]),
+        throwsToolExit(message: 'The template skeleton is no longer available'),
+      );
+    },
+    overrides: <Type, Generator>{
+      Pub:
+          () => Pub.test(
+            fileSystem: globals.fs,
+            logger: globals.logger,
+            processManager: globals.processManager,
+            usage: globals.flutterUsage,
+            botDetector: globals.botDetector,
+            platform: globals.platform,
+            stdio: mockStdio,
+          ),
+    },
+  );
+
+  testUsingContext(
     'create an FFI plugin with ios, then add macos',
     () async {
       final CreateCommand command = CreateCommand();
@@ -4629,15 +4599,14 @@
     () async {
       final CreateCommand command = CreateCommand();
       final CommandRunner<void> runner = createTestCommandRunner(command);
-      final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
-        FlutterProjectType.app,
-        FlutterProjectType.skeleton,
-        FlutterProjectType.module,
+      final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+        FlutterTemplateType.app,
+        FlutterTemplateType.module,
       ];
 
-      for (final FlutterProjectType projectType in relevantProjectTypes) {
+      for (final FlutterTemplateType projectType in relevantProjectTypes) {
         final String relevantAgpVersion =
-            projectType == FlutterProjectType.module
+            projectType == FlutterTemplateType.module
                 ? _kIncompatibleAgpVersionForModule
                 : templateAndroidGradlePluginVersion;
         final String expectedMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4657,7 +4626,7 @@
           'create',
           '--no-pub',
           '--template=${projectType.cliName}',
-          if (projectType != FlutterProjectType.module) '--platforms=android',
+          if (projectType != FlutterTemplateType.module) '--platforms=android',
           projectDir.path,
         ]);
 
@@ -4674,7 +4643,7 @@
         );
 
         // Check expected file for updating Gradle version is present.
-        if (projectType == FlutterProjectType.app || projectType == FlutterProjectType.skeleton) {
+        if (projectType == FlutterTemplateType.app) {
           expect(
             logger.warningText,
             contains(
@@ -4716,17 +4685,16 @@
     () async {
       final CreateCommand command = CreateCommand();
       final CommandRunner<void> runner = createTestCommandRunner(command);
-      final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
-        FlutterProjectType.app,
-        FlutterProjectType.skeleton,
-        FlutterProjectType.pluginFfi,
-        FlutterProjectType.module,
-        FlutterProjectType.plugin,
+      final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+        FlutterTemplateType.app,
+        FlutterTemplateType.pluginFfi,
+        FlutterTemplateType.module,
+        FlutterTemplateType.plugin,
       ];
 
-      for (final FlutterProjectType projectType in relevantProjectTypes) {
+      for (final FlutterTemplateType projectType in relevantProjectTypes) {
         final String relevantAgpVersion =
-            projectType == FlutterProjectType.module
+            projectType == FlutterTemplateType.module
                 ? _kIncompatibleAgpVersionForModule
                 : templateAndroidGradlePluginVersion;
         final String expectedMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4746,7 +4714,7 @@
           'create',
           '--no-pub',
           '--template=${projectType.cliName}',
-          if (projectType != FlutterProjectType.module) '--platforms=android',
+          if (projectType != FlutterTemplateType.module) '--platforms=android',
           projectDir.path,
         ]);
 
@@ -4759,14 +4727,13 @@
         );
 
         // Check expected file(s) for updating AGP version is/are present.
-        if (projectType == FlutterProjectType.app ||
-            projectType == FlutterProjectType.skeleton ||
-            projectType == FlutterProjectType.pluginFfi) {
+        if (projectType == FlutterTemplateType.app ||
+            projectType == FlutterTemplateType.pluginFfi) {
           expect(
             logger.warningText,
             contains(globals.fs.path.join(projectDir.path, 'android/build.gradle')),
           );
-        } else if (projectType == FlutterProjectType.plugin) {
+        } else if (projectType == FlutterTemplateType.plugin) {
           expect(
             logger.warningText,
             contains(globals.fs.path.join(projectDir.path, 'android/app/build.gradle')),
@@ -4808,17 +4775,16 @@
     () async {
       final CreateCommand command = CreateCommand();
       final CommandRunner<void> runner = createTestCommandRunner(command);
-      final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
-        FlutterProjectType.app,
-        FlutterProjectType.skeleton,
-        FlutterProjectType.pluginFfi,
-        FlutterProjectType.module,
-        FlutterProjectType.plugin,
+      final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+        FlutterTemplateType.app,
+        FlutterTemplateType.pluginFfi,
+        FlutterTemplateType.module,
+        FlutterTemplateType.plugin,
       ];
 
-      for (final FlutterProjectType projectType in relevantProjectTypes) {
+      for (final FlutterTemplateType projectType in relevantProjectTypes) {
         final String relevantAgpVersion =
-            projectType == FlutterProjectType.module
+            projectType == FlutterTemplateType.module
                 ? _kIncompatibleAgpVersionForModule
                 : templateAndroidGradlePluginVersion;
         final String unexpectedIncompatibleAgpMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4839,7 +4805,7 @@
           'create',
           '--no-pub',
           '--template=${projectType.cliName}',
-          if (projectType != FlutterProjectType.module) '--platforms=android',
+          if (projectType != FlutterTemplateType.module) '--platforms=android',
           projectDir.path,
         ]);
 
@@ -4866,17 +4832,16 @@
     () async {
       final CreateCommand command = CreateCommand();
       final CommandRunner<void> runner = createTestCommandRunner(command);
-      final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
-        FlutterProjectType.app,
-        FlutterProjectType.skeleton,
-        FlutterProjectType.pluginFfi,
-        FlutterProjectType.module,
-        FlutterProjectType.plugin,
+      final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+        FlutterTemplateType.app,
+        FlutterTemplateType.pluginFfi,
+        FlutterTemplateType.module,
+        FlutterTemplateType.plugin,
       ];
 
-      for (final FlutterProjectType projectType in relevantProjectTypes) {
+      for (final FlutterTemplateType projectType in relevantProjectTypes) {
         final String relevantAgpVersion =
-            projectType == FlutterProjectType.module
+            projectType == FlutterTemplateType.module
                 ? _kIncompatibleAgpVersionForModule
                 : templateAndroidGradlePluginVersion;
         final String unexpectedIncompatibleAgpMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4897,7 +4862,7 @@
           'create',
           '--no-pub',
           '--template=${projectType.cliName}',
-          if (projectType != FlutterProjectType.module) '--platforms=android',
+          if (projectType != FlutterTemplateType.module) '--platforms=android',
           projectDir.path,
         ]);
 
@@ -4924,17 +4889,16 @@
     () async {
       final CreateCommand command = CreateCommand();
       final CommandRunner<void> runner = createTestCommandRunner(command);
-      final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
-        FlutterProjectType.app,
-        FlutterProjectType.skeleton,
-        FlutterProjectType.pluginFfi,
-        FlutterProjectType.module,
-        FlutterProjectType.plugin,
+      final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+        FlutterTemplateType.app,
+        FlutterTemplateType.pluginFfi,
+        FlutterTemplateType.module,
+        FlutterTemplateType.plugin,
       ];
 
-      for (final FlutterProjectType projectType in relevantProjectTypes) {
+      for (final FlutterTemplateType projectType in relevantProjectTypes) {
         final String relevantAgpVersion =
-            projectType == FlutterProjectType.module
+            projectType == FlutterTemplateType.module
                 ? _kIncompatibleAgpVersionForModule
                 : templateAndroidGradlePluginVersion;
         final String unexpectedIncompatibleAgpMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4955,7 +4919,7 @@
           'create',
           '--no-pub',
           '--template=${projectType.cliName}',
-          if (projectType != FlutterProjectType.module) '--platforms=android',
+          if (projectType != FlutterTemplateType.module) '--platforms=android',
           projectDir.path,
         ]);
 
diff --git a/packages/flutter_tools/test/general.shard/application_package_test.dart b/packages/flutter_tools/test/general.shard/application_package_test.dart
index 5642396..f8d8459 100644
--- a/packages/flutter_tools/test/general.shard/application_package_test.dart
+++ b/packages/flutter_tools/test/general.shard/application_package_test.dart
@@ -560,7 +560,7 @@
           'packages',
           'flutter_tools',
           'templates',
-          'app_shared',
+          'app',
           'ios.tmpl',
           iconDirSuffix,
         ),
@@ -604,7 +604,7 @@
         globals.fs.path.absolute(
           'flutter_template_images',
           'templates',
-          'app_shared',
+          'app',
           'ios.tmpl',
           iconDirSuffix,
         ),
@@ -643,7 +643,7 @@
           'packages',
           'flutter_tools',
           'templates',
-          'app_shared',
+          'app',
           'ios.tmpl',
           launchImageDirSuffix,
         ),
@@ -687,7 +687,7 @@
         globals.fs.path.absolute(
           'flutter_template_images',
           'templates',
-          'app_shared',
+          'app',
           'ios.tmpl',
           launchImageDirSuffix,
         ),
diff --git a/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart b/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart
index e8e4699..5c50f79 100644
--- a/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart
+++ b/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart
@@ -61,7 +61,7 @@
 project_type: plugin
       ''');
     final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
-    expect(projectMetadata.projectType, FlutterProjectType.plugin);
+    expect(projectMetadata.projectType, FlutterTemplateType.plugin);
     expect(projectMetadata.versionChannel, isNull);
     expect(projectMetadata.versionRevision, isNull);
 
@@ -79,7 +79,7 @@
 project_type: plugin
       ''');
     final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
-    expect(projectMetadata.projectType, FlutterProjectType.plugin);
+    expect(projectMetadata.projectType, FlutterTemplateType.plugin);
     expect(projectMetadata.versionChannel, isNull);
     expect(projectMetadata.versionRevision, isNull);
 
@@ -169,7 +169,7 @@
   unmanaged_files: {}
       ''');
     final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
-    expect(projectMetadata.projectType, FlutterProjectType.app);
+    expect(projectMetadata.projectType, FlutterTemplateType.app);
     expect(
       projectMetadata.migrateConfig.platformConfigs[SupportedPlatform.root]?.createRevision,
       'abcdefg',
@@ -213,7 +213,7 @@
     - 'file1'
       ''');
     final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
-    expect(projectMetadata.projectType, FlutterProjectType.app);
+    expect(projectMetadata.projectType, FlutterTemplateType.app);
     expect(
       projectMetadata.migrateConfig.platformConfigs[SupportedPlatform.root]?.createRevision,
       'abcdefg',
@@ -240,15 +240,27 @@
   });
 
   testUsingContext('enabledValues does not contain packageFfi if native-assets not enabled', () {
-    expect(FlutterProjectType.enabledValues, isNot(contains(FlutterProjectType.packageFfi)));
-    expect(FlutterProjectType.enabledValues, contains(FlutterProjectType.plugin));
+    expect(
+      ParsedFlutterTemplateType.enabledValues(featureFlags),
+      isNot(contains(FlutterTemplateType.packageFfi)),
+    );
+    expect(
+      ParsedFlutterTemplateType.enabledValues(featureFlags),
+      contains(FlutterTemplateType.plugin),
+    );
   });
 
   testUsingContext(
     'enabledValues contains packageFfi if natives-assets enabled',
     () {
-      expect(FlutterProjectType.enabledValues, contains(FlutterProjectType.packageFfi));
-      expect(FlutterProjectType.enabledValues, contains(FlutterProjectType.plugin));
+      expect(
+        ParsedFlutterTemplateType.enabledValues(featureFlags),
+        contains(FlutterTemplateType.packageFfi),
+      );
+      expect(
+        ParsedFlutterTemplateType.enabledValues(featureFlags),
+        contains(FlutterTemplateType.plugin),
+      );
     },
     overrides: <Type, Generator>{FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true)},
   );
diff --git a/packages/flutter_tools/test/general.shard/template_test.dart b/packages/flutter_tools/test/general.shard/template_test.dart
index ec21166..2f25e7e 100644
--- a/packages/flutter_tools/test/general.shard/template_test.dart
+++ b/packages/flutter_tools/test/general.shard/template_test.dart
@@ -115,12 +115,8 @@
 }
 ''');
         expect(
-          (await templatePathProvider.imageDirectory(
-            'app_shared',
-            globals.fs,
-            globals.logger,
-          )).path,
-          globals.fs.path.absolute('flutter_template_images', 'templates', 'app_shared'),
+          (await templatePathProvider.imageDirectory('app', globals.fs, globals.logger)).path,
+          globals.fs.path.absolute('flutter_template_images', 'templates', 'app'),
         );
       },
       overrides: overrides,
diff --git a/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart b/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart
index ee3e9b2..fc53190 100644
--- a/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart
+++ b/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart
@@ -13,14 +13,7 @@
 
 void main() {
   group('pass analyze template:', () {
-    final List<String> templates = <String>[
-      'app',
-      'module',
-      'package',
-      'plugin',
-      'plugin_ffi',
-      'skeleton',
-    ];
+    final List<String> templates = <String>['app', 'module', 'package', 'plugin', 'plugin_ffi'];
     late Directory tempDir;
 
     setUp(() {