--- stage: Create group: Source Code info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments" type: reference --- # Instance template repository **(PREMIUM SELF)** > - [Improved](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52360) to behave like group-level templates in GitLab 13.9. > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/321247) in GitLab 14.0. In hosted systems, enterprises often have a need to share their own templates across teams. This feature allows an administrator to pick a project to be the instance-wide collection of file templates. These templates are then exposed to all users [via the web editor](../../project/repository/web_editor.md#template-dropdowns) while the project remains secure. ## Configuration To select a project to serve as the custom template repository: 1. On the top bar, select **Main menu > Admin**. 1. On the left sidebar, select **Settings > Templates**. 1. Expand **Templates** 1. From the dropdown list, select the project to use as the template repository. 1. Select **Save changes**. 1. Add custom templates to the selected repository. After you add templates, you can use them for the entire instance. They are available in the [Web Editor's dropdown](../../project/repository/web_editor.md#template-dropdowns) and through the [API settings](../../../api/settings.md). ## Supported file types and locations Templates must be added to a specific subdirectory in the repository, corresponding to the kind of template. The following types of custom templates are supported: | Type | Directory | Extension | | :---------------: | :-----------: | :-----------: | | `Dockerfile` | `Dockerfile` | `.dockerfile` | | `.gitignore` | `gitignore` | `.gitignore` | | `.gitlab-ci.yml` | `gitlab-ci` | `.yml` | | `LICENSE` | `LICENSE` | `.txt` | | `metrics-dashboard.yml` | `metrics-dashboards` | `.yml` | Each template must go in its respective subdirectory, have the correct extension and not be empty. So, the hierarchy should look like this: ```plaintext |-- README.md |-- Dockerfile |-- custom_dockerfile.dockerfile |-- another_dockerfile.dockerfile |-- gitignore |-- custom_gitignore.gitignore |-- another_gitignore.gitignore |-- gitlab-ci |-- custom_gitlab-ci.yml |-- another_gitlab-ci.yml |-- LICENSE |-- custom_license.txt |-- another_license.txt |-- metrics-dashboards |-- custom_metrics-dashboard.yml |-- another_metrics-dashboard.yml ``` Your custom templates are displayed on the dropdown menu when a new file is added through the GitLab UI: ![Custom template dropdown menu](img/file_template_user_dropdown.png) If this feature is disabled or no templates are present, no **Custom** section displays in the selection dropdown.