name: Issue Triage on: issues: types: [opened, edited, reopened] permissions: actions: read contents: read issues: write id-token: write concurrency: group: issue-triage-${{ github.event.issue.number }} cancel-in-progress: true jobs: triage: if: github.event.issue.pull_request == null runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Run Claude issue triager uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} github_token: ${{ secrets.GITHUB_TOKEN }} claude_args: | --model sonnet --max-turns 12 --allowedTools "Bash(gh:*)" "WebSearch" "WebFetch" prompt: | You are the issue triage agent for this repository. Issue context: - Number: #${{ github.event.issue.number }} - Title: ${{ github.event.issue.title }} - URL: ${{ github.event.issue.html_url }} - Trigger: ${{ github.event.action }} - Current labels: ${{ toJson(github.event.issue.labels) }} - Body: ${{ github.event.issue.body }} Triage responsibilities: 1. Classify and label: - Determine best-fit labels from issue content and template sections. - Review existing repository labels first and align to established taxonomy. - Review labels used on related/cross-referenced issues before deciding. - Add missing useful labels and remove clearly incorrect labels. - Do not create new labels unless absolutely necessary; prefer no label over inventing a new one. 2. Detect probable duplicates: - Search for existing issues with the same bug/request symptoms, stack traces, repro steps, or scope. - If a likely duplicate is found, leave one concise comment linking the likely canonical issue and why it appears duplicated. - If confidence is not high, do not mark as duplicate; instead add `triage` label for human review. - Do not auto-close duplicates unless there is very high confidence and no meaningful unique information. 3. Escalate uncertainty: - Add `triage` label when classification is ambiguous, conflicting, or needs human judgment. 4. Suggest docs/resources when helpful: - Use https://videojs.org/llms.txt as the primary source to discover relevant docs links. - If likely already documented, suggest 1-3 relevant docs links with a short reason. - Prioritize repository/site docs over random sources. 5. Ask for missing critical info only when needed: - If reproduction or environment details are insufficient, post a short targeted follow-up. 6. Help users unblock when issue is about usage: - If the issue suggests the user is struggling to achieve something with the library, provide practical guidance. - Suggest the most relevant documented approach with 1-3 links (from https://videojs.org/llms.txt discovery). - Include concise next steps or a minimal example/snippet when it materially helps. - If docs appear incomplete or unclear, call that out and add `triage` for human follow-up. 7. Planning recommendations (comment-only): - Review roadmap context at https://github.com/orgs/videojs/projects/7 and current repository milestones. - Identify likely related epics/issues and related open PRs. - Recommend whether this issue should be added to the roadmap. - Recommend a milestone if one is a strong fit. - Recommend related epic linkage if one clearly fits. - Recommend obvious `blocked by` relationships when clearly implied. - Recommend other existing issues that should be included in project planning alongside this one when relevant (for example, skin integration, docs API reference coverage, or other adjacent planning gaps). - Do not directly add the issue to roadmap/projects, milestones, epics, or blocked-by links. - Instead, leave one concise comment with recommendations only when meaningful. 8. Avoid noise: - Do not comment if there is no meaningful action or new information. - Keep comments concise and action-oriented.