- Managing issues in a GitHub repository can become overwhelming, especially when users submit vague or improperly categorized reports. By using GitHub’s custom issue templates, you can streamline the issue reporting process and ensure contributors provide all the necessary details upfront.
In this guide, I’ll show you how to create a set of issue templates that offer users four clear options when creating an issue:
- Bug Report
- Feature Request
- Documentation
- General Report
- When users click on New Issue, they'll be guided to select the type of issue they want to create, and a predefined template will help them provide the right information.
Why Use Issue Templates?
- Consistency: Predefined templates ensure issues include all required information.
- Clarity: Users are prompted to categorize their issues properly, helping maintainers prioritize and resolve them efficiently.
- Efficiency: Saves time for both contributors and maintainers by reducing back-and-forth communication.
Step 1: Setting Up Your Repository
- First, create a .github/ISSUE_TEMPLATE directory in your repository. This is where all issue templates and their configuration file will live.
your-repo/
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ ├── feature_request.md
│ ├── documentation.md
│ ├── general_report.md
│ └── config.yml
Step 2: Creating the Configuration File
- The config.yml file defines the options users see when they click New Issue. Here’s how it looks:
blank_issues_enabled: false
issue_templates:
- name: "Bug Report"
description: "Report a bug in the system."
title: "[Bug]: "
labels: ["bug"]
body: "./ISSUE_TEMPLATE/bug_report.md"
- name: "Feature Request"
description: "Propose a new feature or improvement."
title: "[Feature]: "
labels: ["enhancement"]
body: "./ISSUE_TEMPLATE/feature_request.md"
- name: "Documentation"
description: "Suggest updates or additions to the documentation."
title: "[Docs]: "
labels: ["documentation"]
body: "./ISSUE_TEMPLATE/documentation.md"
- name: "General Report"
description: "Provide general feedback or inquiries."
title: "[General]: "
labels: ["general"]
body: "./ISSUE_TEMPLATE/general_report.md"
- This file ensures that the New Issue button displays four options: Bug Report, Feature Request, Documentation, and General Report. Each option links to a specific Markdown template.
Step 3: Creating Markdown Templates
- Now, create the individual Markdown files for each issue type.
bug_report.md
---
name: Bug Report
about: Report a bug in the system
title: "[Bug]: "
labels: bug
assignees: ''
---
### Description
A clear and concise description of the bug.
### Steps to Reproduce
1. Go to '...'
2. Click on '...'
3. See the error.
### Expected Behavior
Explain what you expected to happen.
### Screenshots
Add screenshots if applicable.
### Environment
- OS: [e.g., Windows, macOS, Linux]
- Browser: [e.g., Chrome, Firefox]
- Version: [e.g., 1.0.0]
### Additional Context
Add any other context about the problem here.
feature_request.md
---
name: Feature Request
about: Suggest a new feature or improvement
title: "[Feature]: "
labels: enhancement
assignees: ''
---
### Feature Description
What feature would you like to see?
### Why Is This Needed?
Explain the problem or need for this feature.
### Suggested Solutions
Describe how this feature could be implemented.
### Additional Context
Add any relevant screenshots, links, or resources.
documentation.md
---
name: Documentation
about: Suggest updates or additions to documentation
title: "[Docs]: "
labels: documentation
assignees: ''
---
### Documentation Update
What part of the documentation needs to be updated or added?
### Why Is This Needed?
Explain the importance of this update.
### Suggested Changes
Provide a detailed description of the changes.
### Additional Context
Include any related resources.
general_report.md
---
name: General Report
about: Provide general feedback or inquiries
title: "[General]: "
labels: general
assignees: ''
---
### Feedback or Inquiry
Provide your feedback or inquiry.
### Additional Information
Add any other relevant details here.
Step 4: Pushing the Changes to GitHub
Add the .github/ISSUE_TEMPLATE/ directory and its contents to your repository.
Commit and push the changes:
git add .github/ISSUE_TEMPLATE/
git commit -m "Add custom issue templates"
git push origin main
Step 5: Testing Your Templates
- Head to your GitHub repository and click on the Issues tab. When you click New Issue, you’ll see the four options you’ve created. Selecting an option will open the corresponding template, ensuring users provide relevant information.
Conclusion
With these custom issue templates, you can simplify issue management and improve communication between contributors and maintainers. By guiding users to provide the right details upfront, you’ll save time and ensure issues are resolved more efficiently.
Let me know if you try this approach or have any questions in the comments below. Happy coding!
Top comments (0)