diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.md b/.github/ISSUE_TEMPLATE/BUG_REPORT.md
deleted file mode 100644
index b368e5009c4..00000000000
--- a/.github/ISSUE_TEMPLATE/BUG_REPORT.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-name: "\U0001F41E Bug report"
-about: Report an issue with ESLint or rules bundled with ESLint
-title: ''
-labels: bug, repro:needed
-assignees: ''
-
----
-
-
-
-
-**Tell us about your environment**
-
-
-
-* **ESLint Version:**
-* **Node Version:**
-* **npm Version:**
-* **Operating System:**
-
-**What parser (default, `@babel/eslint-parser`, `@typescript-eslint/parser`, etc.) are you using?**
-
-
-
-**Please show your full configuration:**
-
-
-Configuration
-
-
-```js
-
-```
-
-
-
-**What did you do? Please include the actual source code causing the issue, as well as the command that you used to run ESLint.**
-
-
-```js
-
-```
-
-
-```bash
-
-```
-
-**What did you expect to happen?**
-
-
-**What actually happened? Please copy-paste the actual, raw output from ESLint.**
-
-
-**Steps to reproduce this issue:**
-
-
-
-1.
-2.
-3.
-
-**Are you willing to submit a pull request to fix this bug?**
diff --git a/.github/ISSUE_TEMPLATE/CHANGE.md b/.github/ISSUE_TEMPLATE/CHANGE.md
deleted file mode 100644
index ef8437a4ef6..00000000000
--- a/.github/ISSUE_TEMPLATE/CHANGE.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-name: "\U0001F4DD Non-rule change request"
-about: Request a change that is not a bug fix, rule change, or new rule
-title: ''
-labels: enhancement, triage, core
-assignees: ''
-
----
-
-
-
-
-
-**The version of ESLint you are using.**
-
-
-**The problem you want to solve.**
-
-
-**Your take on the correct solution to problem.**
-
-
-**Are you willing to submit a pull request to implement this change?**
diff --git a/.github/ISSUE_TEMPLATE/NEW_RULE.md b/.github/ISSUE_TEMPLATE/NEW_RULE.md
deleted file mode 100644
index 31dfc8cb38b..00000000000
--- a/.github/ISSUE_TEMPLATE/NEW_RULE.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-name: "\U0001F680 New rule proposal"
-about: Propose a new rule to be added to ESLint
-title: ''
-labels: triage, rule, feature
-assignees: ''
-
----
-
-
-
-
-**Please describe what the rule should do:**
-
-
-**What new ECMAScript feature does this rule relate to?**
-
-
-
-**What category of rule is this? (place an "X" next to just one item)**
-
-[ ] Warns about a potential error (problem)
-[ ] Suggests an alternate way of doing something (suggestion)
-[ ] Other (please specify:)
-
-**Provide 2-3 code examples that this rule will warn about:**
-
-
-```js
-
-```
-
-**Why should this rule be included in ESLint (instead of a plugin)?**
-
-
-**Are you willing to submit a pull request to implement this rule?**
diff --git a/.github/ISSUE_TEMPLATE/RULE_CHANGE.md b/.github/ISSUE_TEMPLATE/RULE_CHANGE.md
deleted file mode 100644
index ced29fac37b..00000000000
--- a/.github/ISSUE_TEMPLATE/RULE_CHANGE.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-name: "\U0001F4DD Rule change request"
-about: Request a change to an existing rule
-title: ''
-labels: enhancement, triage, rule
-assignees: ''
-
----
-
-
-
-
-**What rule do you want to change?**
-
-**Does this change cause the rule to produce more or fewer warnings?**
-
-**How will the change be implemented? (New option, new default behavior, etc.)?**
-
-**Please provide some example code that this change will affect:**
-
-
-```js
-
-```
-
-**What does the rule currently do for this code?**
-
-**What will the rule do after it's changed?**
-
-**Are you willing to submit a pull request to implement this change?**
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 00000000000..0e1b0d29f08
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,75 @@
+name: "\U0001F41E Report a problem"
+description: "Report an issue with ESLint or rules bundled with ESLint"
+title: "Bug: (fill in)"
+labels:
+ - bug
+ - "repro:needed"
+body:
+- type: markdown
+ attributes:
+ value: ESLint adheres to the [Open JS Foundation Code of Conduct](https://eslint.org/conduct). By opening an issue, you agree to abide by the code of conduct.
+- type: textarea
+ attributes:
+ label: Environment
+ description: |
+ Please tell us about how you're running ESLint (Run `npx eslint --env-info`.)
+ value: |
+ Node version:
+ npm version:
+ Local ESLint version:
+ Global ESLint version:
+ Operating System:
+ validations:
+ required: true
+- type: dropdown
+ attributes:
+ label: What parser are you using?
+ description: |
+ Please keep in mind that some problems are parser-specific.
+ options:
+ - "Default (Espree)"
+ - "@typescript-eslint/parser"
+ - "@babel/eslint-parser"
+ - "vue-eslint-parser"
+ - "@angular-eslint/template-parser"
+ - Other
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What did you do?
+ description: |
+ Please include a *minimal* reproduction case with source code, configuration file, any other information about how you're using ESLint. You can use Markdown in this field.
+ value: |
+
+ Configuration
+
+ ```js
+
+ ```
+
+ render: markdown
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What did you expect to happen?
+ description: |
+ You can use Markdown in this field.
+ render: markdown
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What actually happened?
+ description: |
+ Please copy-paste the actual ESLint output. You can use Markdown in this field.
+ render: markdown
+ validations:
+ required: true
+- type: checkboxes
+ attributes:
+ label: Participation
+ options:
+ - label: I am willing to submit a pull request for this issue.
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/change.yml b/.github/ISSUE_TEMPLATE/change.yml
new file mode 100644
index 00000000000..b03711b118d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/change.yml
@@ -0,0 +1,44 @@
+name: "\U0001F4DD Request a change (not rule-related)"
+description: "Request a change that is not a bug fix, rule change, or new rule"
+title: "Change Request: (fill in)"
+labels:
+ - enhancement
+ - triage
+ - core
+body:
+- type: markdown
+ attributes:
+ value: ESLint adheres to the [Open JS Foundation Code of Conduct](https://eslint.org/conduct). By opening an issue, you agree to abide by the code of conduct.
+- type: input
+ attributes:
+ label: ESLint version
+ description: |
+ What version of ESLint are you currently using? (Run `npx eslint --version`.)
+ placeholder: |
+ e.g. v8.0.0
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What problem do you want to solve?
+ description: |
+ Please explain your use case in as much detail as possible.
+ placeholder: |
+ ESLint currently...
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What do you think is the correct solution?
+ description: |
+ Please explain how you'd like to change ESLint to address the problem.
+ placeholder: |
+ I'd like ESLint to...
+ validations:
+ required: true
+- type: checkboxes
+ attributes:
+ label: Participation
+ options:
+ - label: I am willing to submit a pull request for this change.
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/new-rule.yml b/.github/ISSUE_TEMPLATE/new-rule.yml
new file mode 100644
index 00000000000..49b585bfab0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/new-rule.yml
@@ -0,0 +1,50 @@
+name: "\U0001F680 Propose a new core rule"
+description: "Propose a new rule to be added to the ESLint core"
+title: "New Rule: (fill in)"
+labels:
+ - rule
+ - feature
+body:
+- type: markdown
+ attributes:
+ value: ESLint adheres to the [Open JS Foundation Code of Conduct](https://eslint.org/conduct). By opening an issue, you agree to abide by the code of conduct.
+- type: input
+ attributes:
+ label: Rule details
+ description: What should the new rule do?
+ validations:
+ required: true
+- type: input
+ attributes:
+ label: Related ECMAScript feature
+ description: What new ECMAScript feature does this rule relate to? Note that we only accept new core rules related to new ECMAScript features.
+ validations:
+ required: true
+- type: dropdown
+ attributes:
+ label: What type of rule is this?
+ options:
+ - Warns about a potential problem
+ - Suggests an alternate way of doing something
+ - Enforces a formatting/stylistic preference
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: Example code
+ description: Please provide some example JavaScript code that this rule will warn about. This field will render as JavaScript.
+ render: js
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: Why should this rule be in the core instead of a plugin?
+ description: In general, we prefer that rules be implemented in plugins where they can be tailored to your specific use case.
+ validations:
+ required: true
+- type: checkboxes
+ attributes:
+ label: Participation
+ options:
+ - label: I am willing to submit a pull request to implement this rule.
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/rule-change.yml b/.github/ISSUE_TEMPLATE/rule-change.yml
new file mode 100644
index 00000000000..4240aeef075
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/rule-change.yml
@@ -0,0 +1,56 @@
+name: "\U0001F4DD Request a rule change"
+description: "Request a change to an existing core rule"
+title: "Rule Change: (fill in)"
+labels:
+ - enhancement
+ - rule
+body:
+- type: markdown
+ attributes:
+ value: ESLint adheres to the [Open JS Foundation Code of Conduct](https://eslint.org/conduct). By opening an issue, you agree to abide by the code of conduct.
+- type: input
+ attributes:
+ label: What rule do you want to change?
+ validations:
+ required: true
+- type: dropdown
+ attributes:
+ label: Does this change cause the rule to produce more or fewer warnings?
+ options:
+ - More warnings
+ - Fewer warnings
+ - No change to warnings
+ validations:
+ required: true
+- type: dropdown
+ attributes:
+ label: How do you think the change should be implemented?
+ options:
+ - A new option
+ - A new default behavior
+ - Other
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: Example code
+ description: Please provide some example code that this change will affect. This field will render as JavaScript.
+ render: js
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What does the rule currently do for this code?
+ validations:
+ required: true
+- type: textarea
+ attributes:
+ label: What will the rule do after it's changed?
+ validations:
+ required: true
+- type: checkboxes
+ attributes:
+ label: Participation
+ options:
+ - label: I am willing to submit a pull request to implement this change.
+ required: false