diff --git a/example/settings.gradle.kts b/example/settings.gradle.kts
index 5f8cba2..13a00ec 100644
--- a/example/settings.gradle.kts
+++ b/example/settings.gradle.kts
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024 The Android Open Source Project
+ * Copyright 2024-2025 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -39,7 +39,7 @@
     id("com.android.security.autorepro.submission") version "1.0.1-alpha1" apply false
 }
 
-rootProject.name = "autorepro-example"
+rootProject.name = "autorepro-submission"
 
 // glob and include gradle projects
 fileTree(rootDir) {
diff --git a/sync-common.sh b/sync-common.sh
new file mode 100755
index 0000000..5b2dfd2
--- /dev/null
+++ b/sync-common.sh
@@ -0,0 +1,119 @@
+#!/bin/bash
+#
+# Copyright 2025 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+###############################################################################
+# What this script does and why we need it?
+# This script synchronizes common configuration files from `example/` (the
+# source of truth) to all project templates in `templates/*/`. This ensures all
+# templates are up-to-date with shared configurations.
+#
+# When to run this script?
+# - After updating files/dirs listed below in the `example/` project.
+#   This can happen when updating the autorepro plugin version (see
+#   go/autorepro#releasing-to-gmaven) or making other manual changes.
+# - After adding a new project template under `templates/` to ensure it receives
+#   the common files followed by validating the newly synced template.
+#
+# Files/dirs synced between `example/` and `templates/*/`:
+# - .gitignore
+# - .run/
+# - gradle/
+# - gradle.properties
+# - gradlew
+# - gradlew.bat
+# - settings.gradle.kts
+#
+# Updating the above files/dirs in example and syncing:
+# 1. Make and validate changes in the `example/` project. This may include:
+#    - Updating `settings.gradle.kts` (e.g., plugin versions).
+#    - Running a Gradle sync in Android Studio which may update wrapper files.
+#    - Modifying shared `.run/` configurations or `.gitignore`.
+# 2. Run this script to propagate the changes to all templates:
+#    ./sync-common.sh
+###############################################################################
+
+set -euo pipefail
+
+readonly SCRIPT_DIR=$(realpath "$(dirname "$0")")
+readonly SOURCE_DIR="${SCRIPT_DIR}/example"
+
+_ERROR_MESSAGE=""
+
+die() {
+  _ERROR_MESSAGE="${@:2}"
+  exit "$1"
+}
+
+on_exit() {
+  local exit_code=$?
+  if [[ ${exit_code} -eq 0 ]]; then
+    printf "\nSYNC COMPLETED SUCCESSFULLY.\n"
+    return
+  fi
+
+  # If an error message was set by die(), print it to stderr.
+  if [[ -n "${_ERROR_MESSAGE}" ]]; then
+    printf "\nERROR: %s\n" "${_ERROR_MESSAGE}" >&2
+  fi
+
+  # Instructions on a failed sync
+  cat <<EOF
+
+SYNC FAILED WITH EXIT CODE: ${exit_code}.
+The target directories may be in an inconsistent state.
+Please do not commit any of the resulting changes.
+EOF
+}
+
+trap on_exit EXIT
+
+main() {
+  declare -a target_dirs=()
+
+  # Add all templates/* folders in target_dirs
+  for d in "${SCRIPT_DIR}"/templates/*; do
+    if [[ -d "$d" ]]; then
+      target_dirs+=("$d")
+    fi
+  done
+
+  if [[ ${#target_dirs[@]} -eq 0 ]]; then
+    die 1 "No template directories found. Nothing to sync."
+  fi
+
+  # List all directories from target_dirs
+  printf "\n- Identified target directory: [%s]\n" "${target_dirs[@]}"
+
+  # Create array of files/dirs to sync
+  declare -a files_to_sync=(
+    "${SOURCE_DIR}/./.gitignore"
+    "${SOURCE_DIR}/./.run/"
+    "${SOURCE_DIR}/./gradle/"
+    "${SOURCE_DIR}/./gradle.properties"
+    "${SOURCE_DIR}/./gradlew"
+    "${SOURCE_DIR}/./gradlew.bat"
+    "${SOURCE_DIR}/./settings.gradle.kts"
+  )
+
+  # Start syncing
+  for target in "${target_dirs[@]}"; do
+    printf "\n- Syncing from [%s] to [%s]\n" "$SOURCE_DIR" "$target"
+    rsync -avR "${files_to_sync[@]}" "$target" \
+      || die "$?" "Failed to sync [${target}] (see previous errors)"
+  done
+}
+
+main "$@"
diff --git a/templates/same-app-id/gradle/wrapper/gradle-wrapper.properties b/templates/same-app-id/gradle/wrapper/gradle-wrapper.properties
index b350ef3..56a6388 100644
--- a/templates/same-app-id/gradle/wrapper/gradle-wrapper.properties
+++ b/templates/same-app-id/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-#Wed Aug 07 16:22:12 UTC 2024
+#Fri Jul 11 10:56:54 UTC 2025
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
diff --git a/templates/same-app-id/settings.gradle.kts b/templates/same-app-id/settings.gradle.kts
index b549fe0..13a00ec 100644
--- a/templates/same-app-id/settings.gradle.kts
+++ b/templates/same-app-id/settings.gradle.kts
@@ -1,5 +1,5 @@
 /*
- * Copyright 2025 The Android Open Source Project
+ * Copyright 2024-2025 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -39,7 +39,7 @@
     id("com.android.security.autorepro.submission") version "1.0.1-alpha1" apply false
 }
 
-rootProject.name = "autorepro-example"
+rootProject.name = "autorepro-submission"
 
 // glob and include gradle projects
 fileTree(rootDir) {
