A GitHub Action for tried and tired maintainers.
JavaScript
117
92 commits
updated Jan 13, 2026
Turn issues into non-issues quicker
A GitHub Action for tried and tired maintainers. This action is meant to help maintainers of open-source projects by automating some of the more tedious/repetitive tasks that come with the job.
nissuer comes with a default configuration, but you can override certain behaviors. Below is a list of features and the corresponding inputs.
| Input | Description | Default Value |
|---|---|---|
comment-add-explainer | Add an explainer to a comment that was marked as off-topic. | true |
comment-unhelpful-weight | If an issue comment is below this rate, it will be marked as off-topic and hidden. | 0.3 |
| Input | Description | Default Value |
|---|---|---|
reproduction-comment | Either a string or a path to a .md file inside the repository. | .github/invalid-reproduction.md |
reproduction-hosts | Comma-separated list of hostnames allowed for reproductions. | github.com |
reproduction-blocklist | Comma-separated list of regular expression string that are not allowed for reproductions. (Eg.: "github.com/.*/fork-of-non-reproduction"') | |
reproduction-invalid-label | Label to apply to issues without a valid reproduction. | invalid-reproduction |
reproduction-issue-labels | Comma-separated list of issue labels. If configured, only verify reproduction URLs of issues with one of these labels present. A comma at the end will handle issues without any label as non-valid. | |
reproduction-link-section | A regular expression string with "(.*)" matching a valid URL in the issue body. The result is trimmed. | ### Link to reproduction(.*)### To reproduce |
| Input | Description | Default Value |
|---|---|---|
label-comments | Autocomment on issues based on the added label. It should be a JSON object, where the key is a label, and the value is a file path or a comment text. | {"invalid reproduction": ".github/invalid-reproduction.md"} |
label-area-prefix | Only look for these labels when autolabeling based on the user selection. (Can be set to an empty string "" to match all labels.) | area: |
label-area-match | Whether to look for the label names or description, when matching. | description |
label-area-section | A regular expression string with "(.*)" matching a section in the issue body to look for user-selected areas. The result is trimmed. Labeling is skipped if this is not configured |
| Input | Description | Default Value |
|---|---|---|
webhook-url | Webhook URL to send notifications to. | |
webhook-secret | Secret to use for the webhook. It will be part of the JSON body of the request as secret. | |
delete-vulnerability-report | Delete the vulnerability report after sending it to the webhook. | false |
Here is a minimal setup of nissuer. Add a workflow (eg. .github/workflows/nissuer.yml):
name: Triage via nissuer
on:
issues:
types: [opened, labeled]
issue_comment:
types: [created]
permissions:
issues: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
issue-validator:
runs-on: ubuntu-latest
steps:
- name: Nissuer
uses: balazsorban44/nissuer@1.10.0
Add a comment file (by default we look for .github/invalid-reproduction.md):
NOTE: Developers are coming to your project with all sorts of backgrounds/skill levels or understanding of the open-source world. Show empathy while using this action. 💚 We recommend adding comments that not only dismiss unhelpful issues/comments, but educate the user on how to be more helpful in the future.
Thanks for opening an issue!
Unfortunately, we can't help you without a reproduction URL.
It was closed automatically, but feel free to reopen it once you have a reproduction URL.
A good example of a comment is in the Next.js repository.
91 commits
1 commits
JavaScript
100.0%
A GitHub Action for tried and tired maintainers.
JavaScript
117
92 commits
updated Jan 13, 2026
Turn issues into non-issues quicker
A GitHub Action for tried and tired maintainers. This action is meant to help maintainers of open-source projects by automating some of the more tedious/repetitive tasks that come with the job.
nissuer comes with a default configuration, but you can override certain behaviors. Below is a list of features and the corresponding inputs.
| Input | Description | Default Value |
|---|---|---|
comment-add-explainer | Add an explainer to a comment that was marked as off-topic. | true |
comment-unhelpful-weight | If an issue comment is below this rate, it will be marked as off-topic and hidden. | 0.3 |
| Input | Description | Default Value |
|---|---|---|
reproduction-comment | Either a string or a path to a .md file inside the repository. | .github/invalid-reproduction.md |
reproduction-hosts | Comma-separated list of hostnames allowed for reproductions. | github.com |
reproduction-blocklist | Comma-separated list of regular expression string that are not allowed for reproductions. (Eg.: "github.com/.*/fork-of-non-reproduction"') | |
reproduction-invalid-label | Label to apply to issues without a valid reproduction. | invalid-reproduction |
reproduction-issue-labels | Comma-separated list of issue labels. If configured, only verify reproduction URLs of issues with one of these labels present. A comma at the end will handle issues without any label as non-valid. | |
reproduction-link-section | A regular expression string with "(.*)" matching a valid URL in the issue body. The result is trimmed. | ### Link to reproduction(.*)### To reproduce |
| Input | Description | Default Value |
|---|---|---|
label-comments | Autocomment on issues based on the added label. It should be a JSON object, where the key is a label, and the value is a file path or a comment text. | {"invalid reproduction": ".github/invalid-reproduction.md"} |
label-area-prefix | Only look for these labels when autolabeling based on the user selection. (Can be set to an empty string "" to match all labels.) | area: |
label-area-match | Whether to look for the label names or description, when matching. | description |
label-area-section | A regular expression string with "(.*)" matching a section in the issue body to look for user-selected areas. The result is trimmed. Labeling is skipped if this is not configured |
| Input | Description | Default Value |
|---|---|---|
webhook-url | Webhook URL to send notifications to. | |
webhook-secret | Secret to use for the webhook. It will be part of the JSON body of the request as secret. | |
delete-vulnerability-report | Delete the vulnerability report after sending it to the webhook. | false |
Here is a minimal setup of nissuer. Add a workflow (eg. .github/workflows/nissuer.yml):
name: Triage via nissuer
on:
issues:
types: [opened, labeled]
issue_comment:
types: [created]
permissions:
issues: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
issue-validator:
runs-on: ubuntu-latest
steps:
- name: Nissuer
uses: balazsorban44/nissuer@1.10.0
Add a comment file (by default we look for .github/invalid-reproduction.md):
NOTE: Developers are coming to your project with all sorts of backgrounds/skill levels or understanding of the open-source world. Show empathy while using this action. 💚 We recommend adding comments that not only dismiss unhelpful issues/comments, but educate the user on how to be more helpful in the future.
Thanks for opening an issue!
Unfortunately, we can't help you without a reproduction URL.
It was closed automatically, but feel free to reopen it once you have a reproduction URL.
A good example of a comment is in the Next.js repository.
91 commits
1 commits
JavaScript
100.0%