---
title: "How to Create a Custom Starter in Prismic"
description: "Learn how to reuse code, slices, and types across projects."
meta_title: "How to Create a Custom Starter in Prismic"
audience: developers
lastUpdated: "2025-11-06T01:07:50.000Z"
---

With starters, you can skip much of the boilerplate involved in setting up a website. If you create many websites (for clients or internal use), starters might save you a lot of time.

* Starters will let you reuse slices and types across projects (especially if your projects have the same structure).
* Starters can take care of boilerplate code, like search, analytics, components, and animations.

## Creating a starter

To create a starter, you'll need a working Prismic project as a base and a GitHub repository for your project code.<br /> Either create a basic project with your boilerplate — third-party integrations, components, routes, pages, types, slices, and styles or use an existing Prismic project.

Create a new GitHub repository for your starter and push all of your files.

## Using your starter to create a new repo

To use your custom starter, clone your starter project from GitHub:

```bash
git clone https://github.com/your-project-url.git
```

Then `cd` into your new directory:

```bash
cd your-project-name
```

Then init Slice Machine:

```bash
npx @slicemachine/init@latest --repository your-project-name
```

The commands will do the following:

1. Start a new Prismic project using this starter.
2. Ask you to log in to Prismic or [create an account](https://prismic.io/dashboard/signup).
3. Create a new Prismic content repository with the models in your cloned project.

After that, run your project and you're ready to continue customizing from there.

```
npm run dev
```

## Set up the languages in your repository

Go to your newly created repository in Prismic `https://your-repository-name.prismic.io` and choose your master locale from the popup.

> **Important**
>
> If you have not set your repository language, you will not be able to add pages in the next steps. Multi-language starters are not yet supported.

## Add pages from your starter repository to your new repository (optional)

Follow the steps below to add all pages and assets from your starter repository to your new repository:

Download the script and install dependencies:

```sh
git clone https://github.com/prismicio-solution-engineering/repo-clone-script
cd repo-clone-script
npm install
```

[Configure](https://github.com/prismicio-solution-engineering/repo-clone-script/blob/main/README.md#installation--configuration) the script with a `.env` file. There is an `.env.sample` file provided in the script.

Run the script using the following command

```sh
npm run start -- YOUR_PROJECT_NAME
```

Running this script will do the following:

1. Retrieve all published pages from your starter repository via the Content API.
2. Upload all assets in those pages into your new repository's media library via the Prismic Asset API.
3. Prepare requests to the Migration API in the required format.
4. Create all master language pages from your starter in your new repository. These pages will now be available in the Migration Release screen of your new repository.
