This repository contains shared GitHub Actions workflows and scripts used across the Nuxt organization.
AI-powered issue triage using GitHub Models. These workflows automatically:
| Workflow | Trigger | Description |
|---|---|---|
triage-opened.yml |
issues: [opened] |
Triage newly opened issues |
triage-comment.yml |
issue_comment: [created] |
Analyze comments for reproductions |
triage-edited.yml |
issues: [edited] |
Check edited issues for reproductions |
triage-spam-transfer.yml |
issues: [labeled] |
Transfer spam-labeled issues |
Create workflow files in your repository’s .github/workflows/ directory:
triage-issue-opened.ymlname: triage
on:
issues:
types: [opened]
concurrency:
group: issue-triage-${{ github.event.issue.number }}
cancel-in-progress: true
jobs:
triage:
uses: nuxt/.github/.github/workflows/triage-opened.yml@main
with:
enable-translation: true
enable-body-translation: true
spam-repo-id: ${{ vars.TRIAGE_SPAM_REPO_ID }}
project-name: 'Your Project Name'
permissions:
contents: read
issues: write
models: read
triage-issue-comment.ymlname: triage
on:
issue_comment:
types: [created]
concurrency:
group: llm-triage-comment-${{ github.event.issue.number }}
cancel-in-progress: false
jobs:
triage:
uses: nuxt/.github/.github/workflows/triage-comment.yml@main
permissions:
contents: read
issues: write
models: read
triage-issue-edited.ymlname: triage
on:
issues:
types: [edited]
concurrency:
group: llm-triage-edit-${{ github.event.issue.number }}
cancel-in-progress: false
jobs:
triage:
uses: nuxt/.github/.github/workflows/triage-edited.yml@main
permissions:
contents: read
issues: write
models: read
triage-spam-transfer.ymlname: triage
on:
issues:
types: [labeled]
jobs:
transfer-spam:
if: |
github.event.label.name == 'spam' &&
vars.TRIAGE_SPAM_REPO_ID != ''
uses: nuxt/.github/.github/workflows/triage-spam-transfer.yml@main
with:
spam-repo-id: ${{ vars.TRIAGE_SPAM_REPO_ID }}
permissions:
contents: read
issues: write
Set these in your repository’s Settings > Secrets and variables > Actions > Variables:
| Variable | Required | Default | Description |
|---|---|---|---|
TRIAGE_SPAM_REPO_ID |
No | - | Node ID of spam repository for issue transfers |
triage-opened.yml| Input | Type | Default | Description |
|---|---|---|---|
enable-translation |
boolean | true |
Translate non-English issue titles |
enable-body-translation |
boolean | true |
Also translate issue body |
spam-repo-id |
string | '' |
Node ID for spam transfer target |
scripts-ref |
string | 'main' |
Git ref for scripts |
add-pending-label |
boolean | true |
Add ‘pending triage’ to new issues |
project-name |
string | 'Nuxt.js framework' |
Project name for AI context |
triage-comment.yml / triage-edited.yml| Input | Type | Default | Description |
|---|---|---|---|
scripts-ref |
string | 'main' |
Git ref for scripts |
triage-spam-transfer.yml| Input | Type | Required | Description |
|---|---|---|---|
spam-repo-id |
string | Yes | Node ID of spam repository |
All triage workflows require:
permissions:
contents: read # To checkout shared scripts
issues: write # To add labels, update issues
models: read # To use GitHub Models AI
The workflows use these labels (create them in your repository):
| Label | Description |
|---|---|
pending triage |
Issue awaiting review |
needs reproduction |
Bug report missing reproduction |
possible regression |
May be a regression from upgrade |
nitro |
Related to deployment/Nitro |
spam |
Spam content |
duplicate |
Duplicate issue |
triage-opened.yml)pending triage label to new issues without labelsneeds reproduction labelpossible regression labeltriage-comment.yml)needs reproduction issuesneeds reproduction when valid reproduction is providedtriage-edited.yml)needs reproduction labeltriage-spam-transfer.yml)spam label is addedTo find a repository’s Node ID for spam transfers:
gh api graphql -f query='
query {
repository(owner: "nuxt", name: "spam") {
id
}
}
'
For production use, pin to a specific commit or tag:
uses: nuxt/.github/.github/workflows/triage-opened.yml@v1.0.0
# or
uses: nuxt/.github/.github/workflows/triage-opened.yml@abc1234
We use cookies
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.