aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 04:10:29 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 04:19:50 +0300
commit1586fc420942122c7b5948397becca9ddb602b15 (patch)
tree7db45490dd1ef08a30c7a4f92f7f80a165441083 /.github
parentdb6f9afad27142248150096aa886f1057c1ebcd6 (diff)
chore: refine issue contributor intent flow
Diffstat (limited to '.github')
-rw-r--r--.github/ISSUE_TEMPLATE/bug.yml61
-rw-r--r--.github/ISSUE_TEMPLATE/change.yml (renamed from .github/ISSUE_TEMPLATE/proposal.yml)25
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml2
-rw-r--r--.github/workflows/label-intends-to-pr.yml9
4 files changed, 81 insertions, 16 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 00000000..408707b1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,61 @@
+name: Bug report
+description: Report something broken in herdr.
+body:
+ - type: markdown
+ attributes:
+ value: |
+ **Before you start:** Read [CONTRIBUTING.md](https://github.com/ogulcancelik/herdr/blob/master/CONTRIBUTING.md).
+
+ New PRs from unapproved contributors are auto-closed by default. Open an issue first and wait for maintainer approval. Issues that do not meet the quality bar in [CONTRIBUTING.md](https://github.com/ogulcancelik/herdr/blob/master/CONTRIBUTING.md) may be closed or left without a reply.
+
+ Keep this short. If it does not fit on one screen, it is too long. Write in your own voice.
+
+ - type: textarea
+ id: current-behavior
+ attributes:
+ label: Current behavior
+ description: What is happening now?
+ validations:
+ required: true
+
+ - type: textarea
+ id: expected-behavior
+ attributes:
+ label: Expected behavior
+ description: What should happen instead?
+ validations:
+ required: true
+
+ - type: textarea
+ id: reproduction
+ attributes:
+ label: Reproduction
+ description: What are the shortest steps that show the problem?
+ validations:
+ required: true
+
+ - type: textarea
+ id: impact
+ attributes:
+ label: Impact
+ description: How does this affect you?
+ validations:
+ required: true
+
+ - type: textarea
+ id: environment
+ attributes:
+ label: Environment
+ description: Herdr version, OS, terminal, shell, and any relevant config.
+ validations:
+ required: false
+
+ - type: checkboxes
+ id: contribution-intent
+ attributes:
+ label: Contribution intent
+ options:
+ - label: I intend to open a PR for this issue.
+ required: false
+ - label: I understand this does not mean the issue is approved.
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/proposal.yml b/.github/ISSUE_TEMPLATE/change.yml
index 01080b6e..a6cfbc48 100644
--- a/.github/ISSUE_TEMPLATE/proposal.yml
+++ b/.github/ISSUE_TEMPLATE/change.yml
@@ -1,11 +1,14 @@
-name: Change proposal
-description: Propose a bug fix, feature, workflow change, or first-time contribution.
-title: "[proposal]: "
+name: Feature or behavior change
+description: Propose a feature, behavior change, documentation change, or direction check.
body:
- type: markdown
attributes:
value: |
- Before opening your first PR, describe the change here and wait for maintainer approval.
+ **Before you start:** Read [CONTRIBUTING.md](https://github.com/ogulcancelik/herdr/blob/master/CONTRIBUTING.md).
+
+ New PRs from unapproved contributors are auto-closed by default. Open an issue first and wait for maintainer approval. Issues that do not meet the quality bar in [CONTRIBUTING.md](https://github.com/ogulcancelik/herdr/blob/master/CONTRIBUTING.md) may be closed or left without a reply.
+
+ Keep this short. If it does not fit on one screen, it is too long. Write in your own voice.
- type: textarea
id: current-behavior
@@ -16,18 +19,18 @@ body:
required: true
- type: textarea
- id: proposed-change
+ id: requested-change
attributes:
- label: Proposed change
+ label: Requested change
description: What do you want to change?
validations:
required: true
- type: textarea
- id: why-herdr
+ id: reason
attributes:
- label: Why this belongs in herdr
- description: Explain why this fits herdr's direction.
+ label: Reason
+ description: Why does this belong in herdr?
validations:
required: true
@@ -53,7 +56,7 @@ body:
attributes:
label: Contribution intent
options:
- - label: I intend to open a PR for this change.
+ - label: I intend to open a PR for this issue.
required: false
- - label: I understand this does not mean the change is approved.
+ - label: I understand this does not mean the issue is approved.
required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 64eb98dc..8005e322 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,2 +1,2 @@
-blank_issues_enabled: true
+blank_issues_enabled: false
contact_links: []
diff --git a/.github/workflows/label-intends-to-pr.yml b/.github/workflows/label-intends-to-pr.yml
index 11136ec3..731f0f82 100644
--- a/.github/workflows/label-intends-to-pr.yml
+++ b/.github/workflows/label-intends-to-pr.yml
@@ -24,9 +24,10 @@ jobs:
const body = context.payload.issue.body || '';
const issueNumber = context.payload.issue.number;
const { owner, repo } = context.repo;
- const checkedIntentPattern = /^\s*-\s*\[[xX]\]\s*I intend to open a PR for this change\.\s*$/m;
- const uncheckedIntentPattern = /^\s*-\s*\[ \]\s*I intend to open a PR for this change\.\s*$/m;
- const shouldAddLabel = checkedIntentPattern.test(body);
+ const checkedIntentPattern = /^\s*-\s*\[[xX]\]\s*I intend to open a PR for this (?:change|issue)\.\s*$/m;
+ const uncheckedIntentPattern = /^\s*-\s*\[ \]\s*I intend to open a PR for this (?:change|issue)\.\s*$/m;
+ const cliIntentPattern = /^\s*\/i-intend-to-pr\s*$/m;
+ const shouldAddLabel = checkedIntentPattern.test(body) || cliIntentPattern.test(body);
const shouldRemoveLabel = uncheckedIntentPattern.test(body);
const labels = context.payload.issue.labels.map((item) =>
typeof item === 'string' ? item : item.name,
@@ -44,7 +45,7 @@ jobs:
}
if (!shouldAddLabel && !shouldRemoveLabel) {
- console.log(`No contribution intent checkbox found for #${issueNumber}.`);
+ console.log(`No contribution intent signal found for #${issueNumber}.`);
return;
}