GitHub Template Repository Setup
How to configure a GitHub template repository for code assignment stages, and how reviewers get access to candidate repositories.
GitHub Template Repository Setup
Code assignment stages create a private GitHub repository for each candidate from a template repository. This guide covers how to configure your template repository correctly.
What is a Template Repository?
Template repositories let users generate new repositories with the same directory structure and files. When a candidate reaches a code assignment stage, Kit uses the GitHub API to create a fresh private copy of your template repository for them.
Important: The source repository must be explicitly marked as a template on GitHub. A regular repository cannot be used as a template – the GitHub API will reject the request.
How to Mark a Repository as a Template
- Go to your repository on GitHub
- Click Settings (gear icon in the repository navigation)
- Under General, find the Template repository section near the top
- Check the box labeled Template repository
- Click Save changes (the setting takes effect immediately)
Once enabled, GitHub will show a “Template” badge on the repository page.
Requirements Checklist
| Requirement | Details |
|---|---|
| GitHub App installed | Your organization must have the Kit GitHub App installed and active (Integrations > GitHub) |
| Repository exists | The org/repo specified in the stage config must exist on GitHub |
| Marked as template | The repository must have “Template repository” checked in Settings > General |
| App has access | The Kit GitHub App installation must have access to the template repository |
| Organization match | The GitHub App installation must cover the organization where candidate repos will be created |
| Reviewers connected | Every reviewer assigned to the stage must connect their own GitHub account in Kit, or they get no access to candidate repos (see Reviewer Access to Candidate Repositories) |
Configuring the Template in Kit
- Go to your Job Posting > Stages
- Select or create a Code Assignment stage
- In the GitHub Template field, select a repository from the dropdown or type the
org/reponame - The dropdown only shows repositories already marked as templates – if your repo does not appear, verify it is marked as a template on GitHub
- Save the stage configuration
Kit will automatically validate that the repository is a valid template after you save. If there is an issue, a warning will appear on the stage card.
Reviewer Access to Candidate Repositories
Candidate repositories are private. When a candidate submits, Kit invites the stage’s assigned reviewers to their repository with read access – by each reviewer’s personal GitHub handle. Kit only knows that handle if the reviewer has connected their own GitHub account inside Kit.
Important
Three GitHub things are easy to confuse. Only the third one gives a reviewer access to code.
| Connection | Who does it | What it gets you |
|---|---|---|
| Organization connection – Integrations > GitHub | An admin, once per account | Lets Kit create candidate repos from your template |
| GitHub organization membership – on GitHub itself | A GitHub org owner | Nothing in Kit. Inviting a reviewer to your GitHub organization does not give them access to candidate repos |
| Personal GitHub connection – Settings > Connected Accounts | Each reviewer, once per person | Lets Kit invite that reviewer to candidate repos |
Your organization can be fully connected and every one of your reviewers still be unable to open a single candidate repository.
Reviewers: Connect GitHub Once
- Open Settings > Connected Accounts
- Under Connect a Provider, click GitHub
- Authorize Kit on GitHub
That is the whole job, once per person. From then on Kit invites you to candidate repos as submissions come in – and it catches you up on the ones you missed: the moment you connect, Kit grants you access to every code assignment repository you should already have had. Nobody has to redo a stage or re-send an invitation.
The first time you are added as a reviewer on a code assignment stage, Kit emails you a welcome note. If your GitHub account is not connected yet, that email leads with a Connect GitHub button.
Admins: Find the Reviewers Who Are Missing
Kit flags the gap before a candidate ever submits:
- The stage’s Reviewers section shows an amber warning naming exactly which reviewers have no GitHub account connected.
- The stage carries a warning icon in the stage list, and the posting counts it in its needs setup summary.
- If a candidate submits while a reviewer is still unconnected, Kit emails and notifies in-app both that reviewer and the stage leads.
Nobody can do this for the reviewer – not you, not a GitHub organization owner. Ask each named reviewer to run the three steps above, or reassign the review to someone who is already connected.
Best Practices for Template Repositories
- Include a clear README with assignment instructions, expectations, and submission guidelines
-
Add a
.gitignoreappropriate to the language and framework - Include starter code or boilerplate that candidates should build on
- Keep it minimal – only include what candidates need to get started
- Add CI configuration (GitHub Actions) if you want automated tests on candidate submissions
- Do not include secrets, API keys, or proprietary code
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Candidate stuck on “Setting Up” spinner | Template repository is not marked as a template | Go to the repo’s Settings > General and check “Template repository” |
| “Setup encountered an issue” error | Template repo not found or not a template | Verify the repo exists and is marked as a template, then re-trigger setup |
| Template repo missing from dropdown | Repo is not marked as a template | Mark it as a template in GitHub Settings, then reload the page |
| “GitHub App not installed” warning | No active GitHub connection | Install the Kit GitHub App from Integrations settings |
| “GitHub template repository not set” warning | The github_template field is empty |
Select a template in the stage configuration |
| Candidate cannot access their repo | GitHub invitation was not sent or accepted | Check the candidate’s GitHub username and the repo invitation status |
| Reviewer cannot open a candidate’s repo | That reviewer has no personal GitHub account connected in Kit | Ask them to connect GitHub at Settings > Connected Accounts – access to the repos they missed is granted automatically once they do |
| Reviewer is in our GitHub organization but still has no access | Organization membership is not the same as connecting GitHub in Kit | Same fix: the reviewer connects GitHub in Kit themselves |
| Installed on GitHub but not connected in Kit | The app reached your organization, but GitHub never confirmed you own it, so the install is still waiting | Open Integrations > GitHub, choose Finish connecting, then Confirm with GitHub |
| Waiting for an organization owner | You are not an owner of the organization, so GitHub sent the installation to an owner for approval | Ask an owner to approve the Kit GitHub App on GitHub, then run Install GitHub App again |
Related
- Process Template Configuration – YAML configuration for code assignment stages
- Reviews and Feedback – how reviewers are assigned, notified, and how their votes decide a stage
- GitHub’s template repository documentation