Markdown Editor

GitHub Issue Forms Template (Bug, Feature, Question)

Copy-ready GitHub issue forms in YAML: bug report, feature request, question, chooser config.yml, syntax rules, field-writing tips, rollout checks

Software & EngineeringStandardGitHub issue forms syntax (public preview, checked 2026-10-30)issueforms

How to use: Use it when you want structured issues instead of free-text templates. Create the labels first, then copy each YAML block into .github/ISSUE_TEMPLATE/ on the default branch. The main pitfall is too many required fields, and renaming field IDs that triage automation reads.

Preview

Issue Forms: [Repository name]

A ready-to-copy set of GitHub issue forms for an open-source or internal repository: a bug report form, a feature request form, a question form that steers support questions away from the tracker, and the template chooser configuration. Based on the GitHub documentation "Syntax for issue forms" and "Syntax for GitHub's form schema" (checked 30 October 2026; issue forms are in public preview and subject to change). Replace every [bracketed] value and every line marked Example. Worked examples use Brindlemark, a fictional open-source Markdown editor.

Document control

FieldValue
Document ID[ISSUE-FORMS-001]
Version[1.0]
Owner[@triage-lead]
Repository[Example: [owner]/brindlemark]
Location.github/ISSUE_TEMPLATE/ on the default branch
Last updatedYYYY-MM-DD
Syntax checked againstGitHub Docs, Syntax for issue forms and Syntax for GitHub's form schema, YYYY-MM-DD

Revision history

VersionDateAuthorChange
1.0YYYY-MM-DD[@name]First set: bug, feature, question, chooser config
1.1YYYY-MM-DD[@name]Example: Added upload field for screenshots to the bug form

1. Planning the forms

FormFilePurposeLabels appliedRequired fields
Bug reportbug_report.ymlA defect in a released versionbug, needs-triageVersion, steps to reproduce, expected and actual behaviour, duplicate check
Feature requestfeature_request.ymlA problem the product does not solve todayenhancement, needs-triageProblem statement, duplicate check
Questionquestion.ymlA short usage question that could not be answered by the docsquestionQuestion, what was tried
Chooser configconfig.ymlHides blank issues and links to support and security channelsNot applicableNot applicable

Security vulnerabilities never go through these forms. The chooser links to the private reporting route described in the Security Policy (dev/security-policy).

2. Syntax essentials

RuleDetail
LocationYAML files in .github/ISSUE_TEMPLATE/, merged to the default branch
Required top-level keysname, description, body
Optional top-level keystitle (default issue title), labels, assignees, projects, type (organisation issue type)
Body element typesmarkdown, input, textarea, dropdown, checkboxes, upload
Element keystype and attributes are required; id and validations are optional; markdown elements take no id
IDsLetters, digits, - and _ only, unique within the form; IDs let you prefill fields with URL query parameters
Dropdownsoptions must be a non-empty list of distinct strings; with default set, do not offer "None" or "n/a" as options
Textarea renderFormats the answer as a code block in a named language, useful for logs
UploadsOptional accept list of file extensions; GitHub applies size limits per file type
Validationrequired: true is enforced in public repositories only

3. Bug report form

Save as .github/ISSUE_TEMPLATE/bug_report.yml.

name: Bug report
description: Report something that does not work as documented in a released version.
title: "[Bug]: "
labels: ["bug", "needs-triage"]
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to report a problem. Please search open and closed issues first.
        Security vulnerabilities must not be reported here: see SECURITY.md for the private route.
  - type: checkboxes
    id: preflight
    attributes:
      label: Before you start
      options:
        - label: I searched existing issues and this is not a duplicate.
          required: true
        - label: I can reproduce this on the latest release.
          required: false
  - type: input
    id: version
    attributes:
      label: Version
      description: Shown under Help, About. Example 2.4.1
      placeholder: "2.4.1"
    validations:
      required: true
  - type: dropdown
    id: platform
    attributes:
      label: Platform
      multiple: true
      options:
        - Windows
        - macOS
        - Linux
        - Web browser
    validations:
      required: true
  - type: textarea
    id: steps
    attributes:
      label: Steps to reproduce
      description: Numbered steps from a fresh start. Attach a minimal sample file if you can.
      placeholder: |
        1. Open a new document
        2. Paste a table with a merged cell
        3. Switch to preview
    validations:
      required: true
  - type: textarea
    id: expected
    attributes:
      label: Expected behaviour
    validations:
      required: true
  - type: textarea
    id: actual
    attributes:
      label: Actual behaviour
    validations:
      required: true
  - type: textarea
    id: logs
    attributes:
      label: Relevant log output
      description: Remove personal data and tokens before pasting.
      render: shell
  - type: upload
    id: screenshots
    attributes:
      label: Screenshots or sample files
      description: Optional. Images or a small sample document that shows the problem.
    validations:
      required: false
      accept: ".png,.jpg,.gif,.txt,.zip"

4. Feature request form

Save as .github/ISSUE_TEMPLATE/feature_request.yml.

name: Feature request
description: Describe a problem the product does not solve today.
title: "[Feature]: "
labels: ["enhancement", "needs-triage"]
body:
  - type: checkboxes
    id: preflight
    attributes:
      label: Before you start
      options:
        - label: I searched existing issues and the roadmap, and this is not a duplicate.
          required: true
  - type: textarea
    id: problem
    attributes:
      label: Problem
      description: What are you trying to do that you cannot do today? Who is affected?
      placeholder: "I keep the same warning box in many documents and have to edit each copy by hand."
    validations:
      required: true
  - type: textarea
    id: workaround
    attributes:
      label: Current workaround
      description: What you do instead, and roughly what it costs you in time or effort.
  - type: textarea
    id: proposal
    attributes:
      label: Proposed solution (optional)
      description: Sketches or examples from other tools are welcome. Maintainers may solve the problem differently.
  - type: dropdown
    id: impact
    attributes:
      label: Impact for you
      options:
        - Nice to have
        - Would use regularly
        - Blocking my workflow
      default: 0
  - type: dropdown
    id: contribute
    attributes:
      label: Would you help build it?
      options:
        - Yes, code
        - Yes, testing and feedback
        - Not at the moment

5. Question form

Save as .github/ISSUE_TEMPLATE/question.yml.

name: Question
description: Ask a usage question that the documentation did not answer.
labels: ["question"]
body:
  - type: markdown
    attributes:
      value: |
        For open-ended discussion, please use the community forum linked in the template chooser.
  - type: textarea
    id: question
    attributes:
      label: Your question
    validations:
      required: true
  - type: textarea
    id: tried
    attributes:
      label: What you tried
      description: Links to the documentation pages you read and the steps you took.
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: Version
      placeholder: "2.4.1"

6. Template chooser configuration

Save as .github/ISSUE_TEMPLATE/config.yml.

blank_issues_enabled: false
contact_links:
  - name: Report a security vulnerability
    url: https://github.com/[owner]/[repository]/security/advisories/new
    about: Please report security issues privately, never in a public issue.
  - name: Community forum
    url: https://github.com/[owner]/[repository]/discussions
    about: Ask open-ended questions and share ideas with other users.

7. Writing good fields

PracticeWhy it helpsExample
One question per fieldCombined questions get half answersSeparate "Expected behaviour" and "Actual behaviour" fields
Show an example in placeholderPeople copy the shape of the example2.4.1 for the version field
Explain where to find the answer in descriptionSaves a follow-up comment"Shown under Help, About"
Use render for logsKeeps long output readable and stops Markdown from mangling itrender: shell
Prefer dropdowns for closed answersGives consistent values that labels and searches can rely onPlatform list
Make few fields requiredRequired fields are the main reason people abandon a formOnly version, steps, expected and actual result
Warn about personal dataLogs and screenshots often contain names, paths or tokens"Remove personal data and tokens before pasting"

Write the form in plain language for a reader who may not be a native English speaker, and keep the same field names across forms so that triage people learn one layout.

8. Rollout and maintenance

StepCheck
Validate YAMLLint each file; open the form in a test repository and submit one issue of each type
LabelsCreate bug, enhancement, question and needs-triage before merging
LinksOpen every contact_links URL; replace [owner] and [repository]
AutomationUpdate triage bots or saved searches that read field IDs
DocumentationMention the forms in CONTRIBUTING (dev/contributing) and the support channels in SUPPORT (dev/support)
ReviewEvery [6 months], read a sample of new issues and remove fields nobody fills well

Standard and licence note

Based on the GitHub documentation pages "Syntax for issue forms", "Syntax for GitHub's form schema" and "Configuring issue templates for your repository" (docs.github.com, checked 30 October 2026). Issue forms are a public preview feature, so check the current pages before relying on a field type or key. Key names are given as GitHub documents them; the forms, questions and wording are original. GitHub is a trademark of its owner; this template is not affiliated with or endorsed by GitHub. Brindlemark is fictional. Template licence: MIT.

Related templates