chore(ci): add label sync and PR triage workflows (#1575)
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
---
|
||||
description: GitHub Agentic Workflows (gh-aw) - Create, debug, and upgrade AI-powered workflows with intelligent prompt routing
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# GitHub Agentic Workflows Agent
|
||||
|
||||
This agent helps you work with **GitHub Agentic Workflows (gh-aw)**, a CLI extension for creating AI-powered workflows in natural language using markdown files.
|
||||
|
||||
## What This Agent Does
|
||||
|
||||
This is a **dispatcher agent** that routes your request to the appropriate specialized prompt based on your task:
|
||||
|
||||
- **Creating new workflows**: Routes to `create` prompt
|
||||
- **Updating existing workflows**: Routes to `update` prompt
|
||||
- **Debugging workflows**: Routes to `debug` prompt
|
||||
- **Upgrading workflows**: Routes to `upgrade-agentic-workflows` prompt
|
||||
- **Creating report-generating workflows**: Routes to `report` prompt — consult this whenever the workflow posts status updates, audits, analyses, or any structured output as issues, discussions, or comments
|
||||
- **Creating shared components**: Routes to `create-shared-agentic-workflow` prompt
|
||||
- **Fixing Dependabot PRs**: Routes to `dependabot` prompt — use this when Dependabot opens PRs that modify generated manifest files (`.github/workflows/package.json`, `.github/workflows/requirements.txt`, `.github/workflows/go.mod`). Never merge those PRs directly; instead update the source `.md` files and rerun `gh aw compile --dependabot` to bundle all fixes
|
||||
- **Analyzing test coverage**: Routes to `test-coverage` prompt — consult this whenever the workflow reads, analyzes, or reports on test coverage data from PRs or CI runs
|
||||
|
||||
Workflows may optionally include:
|
||||
|
||||
- **Project tracking / monitoring** (GitHub Projects updates, status reporting)
|
||||
- **Orchestration / coordination** (one workflow assigning agents or dispatching and coordinating other workflows)
|
||||
|
||||
## Files This Applies To
|
||||
|
||||
- Workflow files: `.github/workflows/*.md` and `.github/workflows/**/*.md`
|
||||
- Workflow lock files: `.github/workflows/*.lock.yml`
|
||||
- Shared components: `.github/workflows/shared/*.md`
|
||||
- Configuration: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/github-agentic-workflows.md
|
||||
|
||||
## Problems This Solves
|
||||
|
||||
- **Workflow Creation**: Design secure, validated agentic workflows with proper triggers, tools, and permissions
|
||||
- **Workflow Debugging**: Analyze logs, identify missing tools, investigate failures, and fix configuration issues
|
||||
- **Version Upgrades**: Migrate workflows to new gh-aw versions, apply codemods, fix breaking changes
|
||||
- **Component Design**: Create reusable shared workflow components that wrap MCP servers
|
||||
|
||||
## How to Use
|
||||
|
||||
When you interact with this agent, it will:
|
||||
|
||||
1. **Understand your intent** - Determine what kind of task you're trying to accomplish
|
||||
2. **Route to the right prompt** - Load the specialized prompt file for your task
|
||||
3. **Execute the task** - Follow the detailed instructions in the loaded prompt
|
||||
|
||||
## Available Prompts
|
||||
|
||||
### Create New Workflow
|
||||
**Load when**: User wants to create a new workflow from scratch, add automation, or design a workflow that doesn't exist yet
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/create-agentic-workflow.md
|
||||
|
||||
**Use cases**:
|
||||
- "Create a workflow that triages issues"
|
||||
- "I need a workflow to label pull requests"
|
||||
- "Design a weekly research automation"
|
||||
|
||||
### Update Existing Workflow
|
||||
**Load when**: User wants to modify, improve, or refactor an existing workflow
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/update-agentic-workflow.md
|
||||
|
||||
**Use cases**:
|
||||
- "Add web-fetch tool to the issue-classifier workflow"
|
||||
- "Update the PR reviewer to use discussions instead of issues"
|
||||
- "Improve the prompt for the weekly-research workflow"
|
||||
|
||||
### Debug Workflow
|
||||
**Load when**: User needs to investigate, audit, debug, or understand a workflow, troubleshoot issues, analyze logs, or fix errors
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/debug-agentic-workflow.md
|
||||
|
||||
**Use cases**:
|
||||
- "Why is this workflow failing?"
|
||||
- "Analyze the logs for workflow X"
|
||||
- "Investigate missing tool calls in run #12345"
|
||||
|
||||
### Upgrade Agentic Workflows
|
||||
**Load when**: User wants to upgrade workflows to a new gh-aw version or fix deprecations
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/upgrade-agentic-workflows.md
|
||||
|
||||
**Use cases**:
|
||||
- "Upgrade all workflows to the latest version"
|
||||
- "Fix deprecated fields in workflows"
|
||||
- "Apply breaking changes from the new release"
|
||||
|
||||
### Create a Report-Generating Workflow
|
||||
**Load when**: The workflow being created or updated produces reports — recurring status updates, audit summaries, analyses, or any structured output posted as a GitHub issue, discussion, or comment
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/report.md
|
||||
|
||||
**Use cases**:
|
||||
- "Create a weekly CI health report"
|
||||
- "Post a daily security audit to Discussions"
|
||||
- "Add a status update comment to open PRs"
|
||||
|
||||
### Create Shared Agentic Workflow
|
||||
**Load when**: User wants to create a reusable workflow component or wrap an MCP server
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/create-shared-agentic-workflow.md
|
||||
|
||||
**Use cases**:
|
||||
- "Create a shared component for Notion integration"
|
||||
- "Wrap the Slack MCP server as a reusable component"
|
||||
- "Design a shared workflow for database queries"
|
||||
|
||||
### Fix Dependabot PRs
|
||||
**Load when**: User needs to close or fix open Dependabot PRs that update dependencies in generated manifest files (`.github/workflows/package.json`, `.github/workflows/requirements.txt`, `.github/workflows/go.mod`)
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/dependabot.md
|
||||
|
||||
**Use cases**:
|
||||
- "Fix the open Dependabot PRs for npm dependencies"
|
||||
- "Bundle and close the Dependabot PRs for workflow dependencies"
|
||||
- "Update @playwright/test to fix the Dependabot PR"
|
||||
|
||||
### Analyze Test Coverage
|
||||
**Load when**: The workflow reads, analyzes, or reports test coverage — whether triggered by a PR, a schedule, or a slash command. Always consult this prompt before designing the coverage data strategy.
|
||||
|
||||
**Prompt file**: https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/test-coverage.md
|
||||
|
||||
**Use cases**:
|
||||
- "Create a workflow that comments coverage on PRs"
|
||||
- "Analyze coverage trends over time"
|
||||
- "Add a coverage gate that blocks PRs below a threshold"
|
||||
|
||||
## Instructions
|
||||
|
||||
When a user interacts with you:
|
||||
|
||||
1. **Identify the task type** from the user's request
|
||||
2. **Load the appropriate prompt** from the GitHub repository URLs listed above
|
||||
3. **Follow the loaded prompt's instructions** exactly
|
||||
4. **If uncertain**, ask clarifying questions to determine the right prompt
|
||||
|
||||
## Quick Reference
|
||||
|
||||
```bash
|
||||
# Initialize repository for agentic workflows
|
||||
gh aw init
|
||||
|
||||
# Generate the lock file for a workflow
|
||||
gh aw compile [workflow-name]
|
||||
|
||||
# Debug workflow runs
|
||||
gh aw logs [workflow-name]
|
||||
gh aw audit <run-id>
|
||||
|
||||
# Upgrade workflows
|
||||
gh aw fix --write
|
||||
gh aw compile --validate
|
||||
```
|
||||
|
||||
## Key Features of gh-aw
|
||||
|
||||
- **Natural Language Workflows**: Write workflows in markdown with YAML frontmatter
|
||||
- **AI Engine Support**: Copilot, Claude, Codex, or custom engines
|
||||
- **MCP Server Integration**: Connect to Model Context Protocol servers for tools
|
||||
- **Safe Outputs**: Structured communication between AI and GitHub API
|
||||
- **Strict Mode**: Security-first validation and sandboxing
|
||||
- **Shared Components**: Reusable workflow building blocks
|
||||
- **Repo Memory**: Persistent git-backed storage for agents
|
||||
- **Sandboxed Execution**: All workflows run in the Agent Workflow Firewall (AWF) sandbox, enabling full `bash` and `edit` tools by default
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Always reference the instructions file at https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/github-agentic-workflows.md for complete documentation
|
||||
- Use the MCP tool `agentic-workflows` when running in GitHub Copilot Cloud
|
||||
- Workflows must be compiled to `.lock.yml` files before running in GitHub Actions
|
||||
- **Bash tools are enabled by default** - Don't restrict bash commands unnecessarily since workflows are sandboxed by the AWF
|
||||
- Follow security best practices: minimal permissions, explicit network access, no template injection
|
||||
- **Network configuration**: Use ecosystem identifiers (`node`, `python`, `go`, etc.) or explicit FQDNs in `network.allowed`. Bare shorthands like `npm` or `pypi` are **not** valid. See https://github.com/github/gh-aw/blob/v0.66.1/.github/aw/network.md for the full list of valid ecosystem identifiers and domain patterns.
|
||||
- **Single-file output**: When creating a workflow, produce exactly **one** workflow `.md` file. Do not create separate documentation files (architecture docs, runbooks, usage guides, etc.). If documentation is needed, add a brief `## Usage` section inside the workflow file itself.
|
||||
@@ -0,0 +1,150 @@
|
||||
- name: 'apps/stage-pocket'
|
||||
description: 'Mobile App: iOS / Android'
|
||||
color: 'b8d5ff'
|
||||
- name: 'apps/stage-tamagotchi'
|
||||
description: 'Desktop App: Windows & macOS & Linux'
|
||||
color: 'a1f7ef'
|
||||
- name: 'apps/stage-web'
|
||||
description: 'Web App: PWA & Browser'
|
||||
color: 'abedff'
|
||||
- name: 'bug'
|
||||
description: "Something isn't working"
|
||||
color: 'd73a4a'
|
||||
- name: 'bug/providers'
|
||||
description: "Some providers aren't working"
|
||||
color: 'd73a4a'
|
||||
- name: 'bug/renderer/pixi-live2d'
|
||||
description: 'Bugs related to PIXI.js & Live2D renderer'
|
||||
color: 'd73a4a'
|
||||
- name: 'bug/renderer/three-vrm'
|
||||
description: 'Bugs related to Three.js & VRM renderer'
|
||||
color: 'd73a4a'
|
||||
- name: 'codex'
|
||||
description: ''
|
||||
color: 'ededed'
|
||||
- name: 'dependencies'
|
||||
description: 'Pull requests that update a dependency file'
|
||||
color: '0366d6'
|
||||
- name: 'duplicate'
|
||||
description: 'This issue or pull request already exists'
|
||||
color: 'cfd3d7'
|
||||
- name: 'env/os-all'
|
||||
description: 'All operating systems (most of the time Windows & macOS & Linux)'
|
||||
color: 'e2e1be'
|
||||
- name: 'env/os-linux'
|
||||
description: 'Linux (for GUI backend, this includes both X11 and Wayland)'
|
||||
color: 'bee2cc'
|
||||
- name: 'env/os-macos'
|
||||
description: 'OSX! (Nope, macOS)'
|
||||
color: 'cee2be'
|
||||
- name: 'env/os-windows'
|
||||
description: 'Everyone use Windows, ok Windows'
|
||||
color: 'd8e2be'
|
||||
- name: 'extension/channel-discord'
|
||||
description: 'Official supported extensions, related to Discord channel'
|
||||
color: '95ded9'
|
||||
- name: 'feature'
|
||||
description: 'Related to feature'
|
||||
color: 'dbf2a8'
|
||||
- name: 'feature-request/accepted'
|
||||
description: 'Feature request that accepted'
|
||||
color: 'aef2a8'
|
||||
- name: 'feature-request/needs-more-info'
|
||||
description: 'Feature request that needs more information, either user story, use case, or scenario description'
|
||||
color: 'dbf2a8'
|
||||
- name: 'feature-request/rejected'
|
||||
description: 'Feature request that got rejected'
|
||||
color: 'f2b3a8'
|
||||
- name: 'good first issue'
|
||||
description: 'Good for newcomers'
|
||||
color: '7057ff'
|
||||
- name: 'help wanted'
|
||||
description: 'Extra attention is needed'
|
||||
color: '008672'
|
||||
- name: 'invalid'
|
||||
description: "This doesn't seem right"
|
||||
color: 'e4e669'
|
||||
- name: 'pending triage'
|
||||
description: 'Not yet confirmed.'
|
||||
color: 'f9d0c4'
|
||||
- name: 'pr-review/hold'
|
||||
description: 'Pull Request that holds to prevent merging'
|
||||
color: 'e0c5c2'
|
||||
- name: 'pr-review/hold/needs-rebase'
|
||||
description: 'Pull Request that needs rebase to either main branch or specific branch'
|
||||
color: 'e0c2d9'
|
||||
- name: 'pr-review/hold/unsure'
|
||||
description: 'Pull Request that unsure about purpose, not sure if needed'
|
||||
color: 'd4c2e0'
|
||||
- name: 'pr-review/ok-to-deploy'
|
||||
description: 'Pull Request that confirmed to be deploy to either Preview or Prod safe'
|
||||
color: 'd8e0c2'
|
||||
- name: 'pr-review/ok-to-merge'
|
||||
description: 'Pull Request that looks good to maintainers, equivalent to LGTM'
|
||||
color: 'c2e0c6'
|
||||
- name: 'pr-review/way-too-large'
|
||||
description: 'Pull Request that way too large, not easy to review, be careful when reviewing'
|
||||
color: 'e0d0c2'
|
||||
- name: 'pr-review/well-informed'
|
||||
description: 'Pull Request that well described, with screenshots or tests, or explained well, easier to review'
|
||||
color: 'c2e0e0'
|
||||
- name: 'priority/general'
|
||||
description: 'Issue, or Pull Request that could be included in current release'
|
||||
color: 'ff75ba'
|
||||
- name: 'priority/nice-to-have'
|
||||
description: 'Issue, or Pull Request that nice to have but can be handled later'
|
||||
color: 'ff75ba'
|
||||
- name: 'priority/urgent'
|
||||
description: 'Issue, or Pull Request that urgent to be fixed or processed'
|
||||
color: 'ff75ba'
|
||||
- name: 'question'
|
||||
description: 'Further information is requested'
|
||||
color: 'd876e3'
|
||||
- name: 'scope/agent'
|
||||
description: 'Scope related to how we harness agent, or build the agent workflow'
|
||||
color: '4468eb'
|
||||
- name: 'scope/audio-input'
|
||||
description: 'Scope related to audio input (ASR, Whisper, STT, etc.)'
|
||||
color: '4468eb'
|
||||
- name: 'scope/audio-output'
|
||||
description: 'Scope related to audio output (TTS, Voice cloning, etc.)'
|
||||
color: '4468eb'
|
||||
- name: 'scope/avatar'
|
||||
description: 'Scope related how we work with the avatar to be rendered, controlled, or interacted'
|
||||
color: '4468eb'
|
||||
- name: 'scope/avatar/live2d'
|
||||
description: 'Scope related to Live2D'
|
||||
color: '4468eb'
|
||||
- name: 'scope/avatar/vrm'
|
||||
description: 'Scope related to VRM'
|
||||
color: '4468eb'
|
||||
- name: 'scope/documentation'
|
||||
description: 'Improvements or additions to documentation'
|
||||
color: '4468eb'
|
||||
- name: 'scope/engineering'
|
||||
description: 'Scope related to toolchain, workflow, workspace, and CI/CD, deploy, packaging, etc.'
|
||||
color: '4468eb'
|
||||
- name: 'scope/extension'
|
||||
description: 'Scope related to extension api, or internally known as tentacle api, mod api, plugin api'
|
||||
color: '4468eb'
|
||||
- name: 'scope/game-playing-ai'
|
||||
description: 'Scope related to game playing AI, or game AI, AI that interacts the game'
|
||||
color: '4468eb'
|
||||
- name: 'scope/i18n'
|
||||
description: ''
|
||||
color: '4468eb'
|
||||
- name: 'scope/providers'
|
||||
description: 'Scope related to providers we support'
|
||||
color: '4468eb'
|
||||
- name: 'scope/server-api'
|
||||
description: 'Scope related to the server api we maintained, the public service of AIRI'
|
||||
color: '4468eb'
|
||||
- name: 'scope/ui'
|
||||
description: 'Scope related to UI/UX, or interface improve, perf, and bugs'
|
||||
color: '4468eb'
|
||||
- name: 'security'
|
||||
description: 'Security issue, Pull Request, or advisory related.'
|
||||
color: 'fdf122'
|
||||
- name: 'wontfix'
|
||||
description: 'This will not be worked on'
|
||||
color: 'ffffff'
|
||||
@@ -0,0 +1,26 @@
|
||||
name: 'Copilot Setup Steps'
|
||||
|
||||
# This workflow configures the environment for GitHub Copilot Agent with gh-aw MCP server
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
paths:
|
||||
- .github/workflows/copilot-setup-steps.yml
|
||||
|
||||
jobs:
|
||||
# The job MUST be called 'copilot-setup-steps' to be recognized by GitHub Copilot Agent
|
||||
copilot-setup-steps:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Set minimal permissions for setup steps
|
||||
# Copilot Agent receives its own token with appropriate permissions
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
- name: Install gh-aw extension
|
||||
uses: github/gh-aw-actions/setup-cli@73ae9ce231580f337133352d321d42b6bf54b6a9 # v0.66.1
|
||||
with:
|
||||
version: v0.66.1
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,199 @@
|
||||
---
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
pull_request_number:
|
||||
description: "Pull request number to triage manually"
|
||||
required: true
|
||||
type: string
|
||||
pull_request:
|
||||
types: [opened, reopened, ready_for_review]
|
||||
forks: ["*"]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: read
|
||||
pull-requests: read
|
||||
|
||||
engine: copilot
|
||||
|
||||
tools:
|
||||
github:
|
||||
toolsets: [repos, issues, pull_requests, labels]
|
||||
|
||||
network: defaults
|
||||
|
||||
safe-outputs:
|
||||
add-labels:
|
||||
max: 12
|
||||
target: ${{ github.event.pull_request.number || github.event.inputs.pull_request_number }}
|
||||
allowed:
|
||||
- bug
|
||||
- feature
|
||||
- pending triage
|
||||
- apps/stage-pocket
|
||||
- apps/stage-tamagotchi
|
||||
- apps/stage-web
|
||||
- env/os-all
|
||||
- env/os-linux
|
||||
- env/os-macos
|
||||
- env/os-windows
|
||||
- priority/general
|
||||
- priority/nice-to-have
|
||||
- priority/urgent
|
||||
- scope/agent
|
||||
- scope/audio-input
|
||||
- scope/audio-output
|
||||
- scope/avatar
|
||||
- scope/avatar/live2d
|
||||
- scope/avatar/vrm
|
||||
- scope/documentation
|
||||
- scope/engineering
|
||||
- scope/extension
|
||||
- scope/game-playing-ai
|
||||
- scope/i18n
|
||||
- scope/providers
|
||||
- scope/server-api
|
||||
- scope/ui
|
||||
remove-labels:
|
||||
max: 24
|
||||
target: ${{ github.event.pull_request.number || github.event.inputs.pull_request_number }}
|
||||
allowed:
|
||||
- bug
|
||||
- feature
|
||||
- pending triage
|
||||
- apps/stage-pocket
|
||||
- apps/stage-tamagotchi
|
||||
- apps/stage-web
|
||||
- env/os-all
|
||||
- env/os-linux
|
||||
- env/os-macos
|
||||
- env/os-windows
|
||||
- priority/general
|
||||
- priority/nice-to-have
|
||||
- priority/urgent
|
||||
- scope/agent
|
||||
- scope/audio-input
|
||||
- scope/audio-output
|
||||
- scope/avatar
|
||||
- scope/avatar/live2d
|
||||
- scope/avatar/vrm
|
||||
- scope/documentation
|
||||
- scope/engineering
|
||||
- scope/extension
|
||||
- scope/game-playing-ai
|
||||
- scope/i18n
|
||||
- scope/providers
|
||||
- scope/server-api
|
||||
- scope/ui
|
||||
---
|
||||
|
||||
# PR Triage
|
||||
|
||||
Classify the target pull request with content labels.
|
||||
|
||||
## Goal
|
||||
|
||||
Read the target pull request and keep only the relevant automatically-managed triage labels in sync.
|
||||
|
||||
The target pull request is:
|
||||
|
||||
- the triggering PR for `pull_request` events
|
||||
- PR `#${{ github.event.inputs.pull_request_number }}` for `workflow_dispatch`
|
||||
|
||||
Managed labels:
|
||||
|
||||
- Type: `bug`, `feature`
|
||||
- App surface: `apps/stage-pocket`, `apps/stage-tamagotchi`, `apps/stage-web`
|
||||
- Environment: `env/os-all`, `env/os-linux`, `env/os-macos`, `env/os-windows`
|
||||
- Scope: `scope/agent`, `scope/audio-input`, `scope/audio-output`, `scope/avatar`, `scope/avatar/live2d`, `scope/avatar/vrm`, `scope/documentation`, `scope/engineering`, `scope/extension`, `scope/game-playing-ai`, `scope/i18n`, `scope/providers`, `scope/server-api`, `scope/ui`
|
||||
- Priority: `priority/general`, `priority/nice-to-have`, `priority/urgent`
|
||||
- Fallback: `pending triage`
|
||||
|
||||
Never add or remove any label outside that managed set.
|
||||
|
||||
## Required inputs
|
||||
|
||||
Inspect, in order:
|
||||
|
||||
1. PR title
|
||||
2. PR body
|
||||
3. Linked issues explicitly referenced in the PR title or body
|
||||
4. Changed files
|
||||
5. Existing labels on the PR
|
||||
|
||||
Do not use web search. Do not use bash or edit tools. Do not post comments. Do not update the PR body or title. Do not request reviewers.
|
||||
|
||||
## Classification rules
|
||||
|
||||
### Confidence and fallback
|
||||
|
||||
- Only apply a managed label when the evidence is explicit from the PR text, linked issues, or changed file paths.
|
||||
- If the PR is too vague, too short, intentionally a test, or the classification is meaningfully ambiguous, remove all currently-present managed labels and leave only `pending triage`.
|
||||
- If you can classify it confidently, remove `pending triage`.
|
||||
|
||||
### Type labels
|
||||
|
||||
- Do not apply both `bug` and `feature`.
|
||||
- For documentation-first PRs, do not apply `feature`.
|
||||
|
||||
### Documentation
|
||||
|
||||
- Apply `scope/documentation` when the PR is primarily documentation, manuals, tutorials, guides, README work, or mostly touches `docs/` and similar documentation files.
|
||||
- Documentation PRs may still receive environment labels if the docs are explicitly platform-specific, but they should not receive `feature`.
|
||||
|
||||
### App labels
|
||||
|
||||
- Apply `apps/stage-web` when files under `apps/stage-web/` change, or the PR text explicitly says the change is for the web app or PWA/browser surface.
|
||||
- Apply `apps/stage-tamagotchi` when files under `apps/stage-tamagotchi/` change, or the PR text explicitly says desktop/Electron/Windows/macOS/Linux app.
|
||||
- Apply `apps/stage-pocket` when files under `apps/stage-pocket/` change, or the PR text explicitly says mobile/iOS/Android app.
|
||||
- Multiple app labels are allowed when the evidence is explicit.
|
||||
|
||||
### Environment labels
|
||||
|
||||
- Apply `env/os-windows`, `env/os-macos`, or `env/os-linux` only when the PR text or linked issues explicitly call out that platform.
|
||||
- Apply `env/os-all` only when the PR explicitly describes all major desktop platforms or a clearly cross-platform OS fix.
|
||||
- Do not infer OS labels from maintainers' guesses alone.
|
||||
- `env/os-all` should replace per-OS labels when the evidence is clearly all-platform.
|
||||
|
||||
### Scope labels
|
||||
|
||||
- Apply `scope/ui` for UI, UX, settings, layouts, views, components, visual behavior, or interaction flows.
|
||||
- Apply `scope/providers` for provider integrations, provider configuration, model/provider selection, or supported provider behavior.
|
||||
- Apply `scope/audio-input` for ASR, STT, microphone capture, VAD, hearing, transcription input pipelines.
|
||||
- Apply `scope/audio-output` for TTS, voice output, speech synthesis, voice playback, or voice cloning.
|
||||
- Apply `scope/avatar` for general avatar rendering/control/interaction.
|
||||
- Apply `scope/avatar/live2d` when the work is specifically about Live2D.
|
||||
- Apply `scope/avatar/vrm` when the work is specifically about VRM.
|
||||
- Apply `scope/engineering` for CI, build, release, packaging, toolchain, workflow, infrastructure, repository automation.
|
||||
- Apply `scope/extension` for extensions, plugins, mod APIs, tentacle APIs, or channel integrations.
|
||||
- Apply `scope/agent` for agent workflow, orchestration, LLM runtime, prompt routing, agent behavior.
|
||||
- Apply `scope/server-api` for the maintained server API or public server service behavior.
|
||||
- Apply `scope/i18n` for translation keys, locale additions, localization-only or localization-heavy work.
|
||||
- Apply `scope/game-playing-ai` when the change is specifically about game-playing agent behavior.
|
||||
- Multiple scope labels are allowed when the evidence is explicit and non-conflicting.
|
||||
- If a PR is clearly documentation-first, use `scope/documentation` instead of trying to classify it as another primary scope unless the non-documentation scope is also explicit and substantial.
|
||||
|
||||
### Priority labels
|
||||
|
||||
- Apply at most one priority label.
|
||||
- Apply `priority/urgent` only when the PR or linked issue clearly says urgent, critical, blocker, severe regression, production breakage, or similarly high urgency.
|
||||
- Apply `priority/general` when the PR or linked issue clearly says it should be in the current release or treated as normal release work.
|
||||
- Apply `priority/nice-to-have` when the PR or linked issue clearly frames it as polish, optional, low urgency, or explicitly nice-to-have.
|
||||
- If urgency is not explicit, do not apply any priority label.
|
||||
|
||||
## Label synchronization behavior
|
||||
|
||||
When you finish classification:
|
||||
|
||||
1. Compute the desired managed labels for this PR.
|
||||
2. Compare them against the PR's existing managed labels only.
|
||||
3. Remove managed labels that are no longer desired.
|
||||
4. Add desired managed labels that are missing.
|
||||
|
||||
Important constraints:
|
||||
|
||||
- Never remove unmanaged labels.
|
||||
- Never add more labels than the evidence supports.
|
||||
- If confident classification is possible, do not leave `pending triage`.
|
||||
- If confident classification is not possible, the only managed label that should remain is `pending triage`.
|
||||
@@ -0,0 +1,26 @@
|
||||
name: Sync Labels
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- .github/labels.yml
|
||||
- .github/workflows/sync-labels.yml
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
sync-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Sync repository labels
|
||||
uses: micnncim/action-label-syncer@v1.3.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
manifest: .github/labels.yml
|
||||
Reference in New Issue
Block a user