Note
This feature is currently in public preview and is subject to change.
This version of this article is for using repository custom instructions on the GitHub website. Click the tabs above for information on using custom instructions in other environments.
About repository custom instructions for Copilot
Repository custom instructions let you provide Copilot with repository-specific guidance and preferences. For a full introduction to custom instructions, see About customizing GitHub Copilot Chat responses.
Repository custom instructions are currently supported for:
- Copilot Chat in Visual Studio, VS Code, JetBrains IDEs, Xcode, and on the GitHub website
- Copilot coding agent
- Copilot code review
Prerequisites for repository custom instructions
- You must have a custom instructions file (see the instructions below).
-
Your personal choice of whether to use custom instructions must be set to enabled. This is enabled by default. See Enabling or disabling repository custom instructions later in this article.
-
During the public preview, if you're using a Copilot Business or Copilot Enterprise plan, the organization or enterprise that provides your plan must have the Opt in to preview features setting enabled. See Managing policies and features for Copilot in your organization and Managing policies and features for Copilot in your enterprise.
Creating a repository custom instructions file
-
In the root of your repository, create a file named
.github/copilot-instructions.md
.Create the
.github
directory if it does not already exist. -
Add natural language instructions to the file, in Markdown format.
Whitespace between instructions is ignored, so the instructions can be written as a single paragraph, each on a new line, or separated by blank lines for legibility.
To see your instructions in action, go to https://github.com/copilot, attach the repository containing the instructions file, and start a conversation.
Writing effective repository custom instructions
The instructions you add to the .github/copilot-instructions.md
file should be short, self-contained statements that provide Copilot with relevant information to help it work in this repository. Because the instructions are sent with every chat message, they should be broadly applicable to most requests you will make in the context of the repository.
The exact structure you utilize for your instructions file will vary by project and need, but the following guidelines provide a good starting point:
- Provide an overview of the project you're working on, including its purpose, goals, and any relevant background information.
- Include the folder structure of the repository, including any important directories or files that are relevant to the project.
- Specify the coding standards and conventions that should be followed, such as naming conventions, formatting rules, and best practices.
- Include any specific tools, libraries, or frameworks that are used in the project, along with any relevant version numbers or configurations.
The following instructions file is an example of these practices in action:
# Project Overview
This project is a web application that allows users to manage their tasks and to-do lists. It is built using React and Node.js, and uses MongoDB for data storage.
## Folder Structure
- `/src`: Contains the source code for the frontend.
- `/server`: Contains the source code for the Node.js backend.
- `/docs`: Contains documentation for the project, including API specifications and user guides.
## Libraries and Frameworks
- React and Tailwind CSS for the frontend.
- Node.js and Express for the backend.
- MongoDB for data storage.
## Coding Standards
- Use semicolons at the end of each statement.
- Use single quotes for strings.
- Use function based components in React.
- Use arrow functions for callbacks.
## UI guidelines
- A toggle is provided to switch between light and dark mode.
- Application should have a modern and clean design.
You should also consider the size and complexity of your repository. The following types of instructions may work for a small repository with only a few contributors, but for a large and diverse repository, these may cause problems:
- Requests to refer to external resources when formulating a response
- Instructions to answer in a particular style
- Requests to always respond with a certain level of detail
For example, the following instructions may not have the intended results:
Always conform to the coding styles defined in styleguide.md in repo my-org/my-repo when generating code.
Use @terminal when answering questions about Git.
Answer all questions in the style of a friendly colleague, using informal language.
Answer all questions in less than 1000 characters, and words of no more than 12 characters.
Repository custom instructions in use
The instructions in the .github/copilot-instructions.md
file are available for use by Copilot Chat as soon as you save the file. The complete set of instructions will be automatically added to requests that you submit to Copilot in the context of that repository. For example, they are added to the prompt you submit to Copilot Chat.
In Copilot Chat's immersive view (github.com/copilot), you can start a conversation that uses repository custom instructions by adding, as an attachment, the repository that contains the instructions file.
Whenever repository custom instructions are used by Copilot Chat, the instructions file is added as a reference for the response that's generated. To find out whether repository custom instructions were used, expand the list of references at the top of a chat response in the Chat panel and check whether the .github/copilot-instructions.md
file is listed.
You can click the reference to open the file.
Note
- It is possible for multiple types of custom instructions to apply to a conversation. Personal instructions take the highest priority, followed by repository instructions, with organization instructions prioritized last. However, all sets of relevant instructions are still combined and provided to Copilot Chat.
- Whenever possible, you should avoid providing conflicting sets of instructions. If you are concerned about response quality, you can also choose to temporarily disable repository instructions. See Adding repository custom instructions for GitHub Copilot.
Enabling or disabling repository custom instructions
You can choose whether or not you want Copilot to use repository-based custom instructions.
Enabling or disabling custom instructions for Copilot Chat
Custom instructions are enabled for Copilot Chat by default but you can disable, or re-enable, them at any time. This applies to your own use of Copilot Chat and does not affect other users.
-
On GitHub.com, do one of the following:
- Go to a repository with a custom instructions file and open the assistive chat panel.
- Go to the immersive view of Copilot Chat (github.com/copilot) and attach a repository that contains a custom instructions file.
-
Click the button at the top of the Chat panel, or the top right of the immersive page.
-
Click Disable custom instructions or Enable custom instructions.
Note
You will only see these options in the context of a repository that contains a custom instructions file.
Your choice persists, for all repositories containing a custom instructions file, until you change it.
Enabling or disabling custom instructions for Copilot code review
Custom instructions are enabled for Copilot code review by default but you can disable, or re-enable, them in the repository settings on GitHub.com. This applies to Copilot's use of custom instructions for all code reviews it performs in this repository.
-
On GitHub, navigate to the main page of the repository.
-
Under your repository name, click Settings. If you cannot see the "Settings" tab, select the dropdown menu, then click Settings.
-
In the "Code & automation" section of the sidebar, click Copilot, then Code review.
-
Toggle the “Use custom instructions when reviewing pull requests” option on or off.