Skip to content
Move custom links under /@handle
Sniptide

GitHub issue templates

GitHub issue templates are YAML issue forms in .github/ISSUE_TEMPLATE that turn a blank issue into required fields. Copy the three files below into that folder on your default branch, change the labels and links, and the next person who opens an issue picks a form.

Updated

Files

.github/ISSUE_TEMPLATE/bug_report.ymlRaw
name: Bug report
description: Something doesn't work the way the docs say it should.
title: "[Bug]: "
labels: ["bug", "triage"]
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to report this. Please search open issues first, since
        someone may have reported it already.
  - type: textarea
    id: what-happened
    attributes:
      label: What happened?
      description: What you did, what you expected and what you saw instead.
      placeholder: I exported invoices to CSV with a date filter, and the file included every invoice.
    validations:
      required: true
  - type: textarea
    id: steps
    attributes:
      label: Steps to reproduce
      placeholder: |
        1. Open Invoices
        2. Set the date filter to October
        3. Choose Export
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: Version
      description: Shown under Settings > About, or the package version you use.
      placeholder: "2.4.0"
    validations:
      required: true
  - type: dropdown
    id: browsers
    attributes:
      label: Browsers
      description: Where you see the problem. Leave it empty if it isn't browser-specific.
      multiple: true
      options:
        - Chrome
        - Firefox
        - Safari
        - Edge
  - type: textarea
    id: logs
    attributes:
      label: Logs or screenshots
      description: Paste any error output. It's formatted as code automatically.
      render: shell
  - type: checkboxes
    id: terms
    attributes:
      label: Before you submit
      options:
        - label: I searched the open issues and this isn't a duplicate.
          required: true
.github/ISSUE_TEMPLATE/feature_request.ymlRaw
name: Feature request
description: Suggest something Acme should do that it doesn't yet.
title: "[Feature]: "
labels: ["enhancement"]
body:
  - type: textarea
    id: problem
    attributes:
      label: What problem would this solve?
      description: Describe the situation and what it costs you today. This helps more than a proposed solution.
      placeholder: Every month I export invoices and delete half the rows by hand, because the export ignores my filters.
    validations:
      required: true
  - type: textarea
    id: solution
    attributes:
      label: What would you like to happen?
    validations:
      required: true
  - type: textarea
    id: alternatives
    attributes:
      label: What do you do today instead?
      description: Workarounds you use or other tools you've tried.
  - type: dropdown
    id: frequency
    attributes:
      label: How often do you run into this?
      options:
        - Every day
        - Every week
        - Every month
        - Rarely
    validations:
      required: true
.github/ISSUE_TEMPLATE/config.ymlRaw
blank_issues_enabled: false
contact_links:
  - name: Questions and help
    url: https://github.com/acme/acme/discussions
    about: Ask how to do something in Discussions, where answers stay findable.
  - name: Security issues
    url: https://acme.com/security
    about: Report vulnerabilities privately. Please don't open a public issue.

Save with your agent

Connect the Sniptide MCP server once, then ask your agent to keep this template in your library. It reads the files from the JSON version of this page and saves them as a private snippet you can edit and file into a collection.

Terminal
claude mcp add --transport http sniptide https://app.sniptide.com/api/mcp
Prompt
Read https://sniptide.com/templates/github-issue-templates.json and save its files as a private Sniptide snippet titled "GitHub issue templates".

Why forms instead of Markdown templates

GitHub supports two kinds of issue template. A Markdown template pre-fills the issue body, and people delete it. An issue form, the .yml files here, shows labeled fields and refuses to submit until the required ones are filled, so every bug arrives with steps and a version. GitHub documents the syntax for both.

The files only take effect on the repository's default branch.

What each file does

File
What it does
bug_report.yml
Asks what happened, how to reproduce it and which version, and adds the bug and triage labels.
feature_request.yml
Asks for the problem before the solution, and how often it happens, which is what you need to prioritize.
config.yml
Turns off blank issues and links to Discussions for questions and to a private page for security reports.

The fields you'll change

Key
What it does
Note
name, description
The choice people see on the New issue page.
Keep the description to the one case the form is for.
title
Pre-fills the issue title.
A prefix such as [Bug]: makes the list scannable.
labels
Labels added on submit.
Create the labels in the repository first.
type
The field: markdown, textarea, input, dropdown or checkboxes.
markdown shows text and collects nothing.
render
Formats a textarea as a code block.
Use it for logs, so nobody has to add the fences.
validations.required
Blocks submit until the field is filled.
Require only what you can't triage without. Every extra required field loses reports.

Ask for the problem first

The feature form asks "What problem would this solve?" before "What would you like to happen?". Requests that start with a solution tend to describe one person's workaround. The problem tells you whether other users share it and whether something you already planned would cover it.

Once an issue is accepted, rewrite it as a user story with acceptance criteria before anyone builds it.

Variant: a pull request template

Pull requests use a Markdown file rather than a form. Put it at .github/pull_request_template.md:

.github/pull_request_template.md
## What this changes

## How I tested it

- [ ] Tests added or updated
- [ ] Docs updated
All templates
  • User stories
    SpecsUser story template with acceptance criteria

    A user story template with the As a, I want, so that format and Given, When, Then acceptance criteria, shown on an example feature with three stories.

  • Changelog
    WritingChangelog and release notes template

    A CHANGELOG.md template in the Keep a Changelog format, with a summary per release, the six change types and comparison links you can copy.

  • Project setupGitHub Actions Node CI

    A GitHub Actions workflow for Node.js that lints, type checks, tests and builds on every push and pull request, with pnpm, matrix and Postgres variants.

Pick where your library lives.

Use sniptide.com

Save your first pattern in the app, then connect Claude Code, Cursor or Codex with one sign-in in the browser.

Run it on your own server

One image and a database give you the app, the API and the MCP endpoint. Sniptide is open source under AGPL-3.0.

$docker compose up -d