AI/TLDR

triagebot-action

A GitHub Action that reproduces, diagnoses and fixes reported bugs through a label-driven state machine, then asks the reporter to verify

AI SDLC AutomationOpen source
Updated
4 Aug 2026
Language
TypeScript
Coverage
1 story

What's new

4 Aug 2026

Cloudflare and Astro open-sourced triagebot-action. On Astro's own repository it cut the open-issue count from more than 200 to about 30.

Latest news

Overview

triagebot-action is an AI-powered issue triage bot for GitHub repositories, built by the Astro team with Cloudflare. It runs as a GitHub Action on issue and comment events and works through a label-driven state machine: it tries to reproduce the reported bug, diagnoses the root cause, attempts a fix, and asks the reporter to verify the result before a pull request is opened. Because state lives in labels, the whole pipeline is visible in the issue tracker rather than hidden in a service.

The states it moves an issue through are needs_triage, not_actionable, needs_reproduction, skipped, unable_to_reproduce, unable_to_fix, fix_pending, fix_rejected, fix_verified and failed. An issue that cannot be reproduced or fixed lands in an explicit state instead of silently stalling, which is what makes the bot's output auditable by a maintainer.

It is model-agnostic: the action accepts Anthropic, OpenAI, or Cloudflare Workers AI credentials, defaulting to Claude Opus 4.6 for triage and Sonnet 4.6 for verification when the Anthropic key is used. The triage behaviour itself is supplied as a skill directory in your own repository, so each project can teach the bot how its bugs are usually reproduced. In production on Astro's repository the maintainers report the open-issue count fell from over 200 to about 30.

What it does

  • Label-driven state machine with ten explicit states, so triage progress is visible on the issue itself
  • Reproduces the bug, diagnoses the root cause, attempts a fix and asks the reporter to verify it
  • Provider-agnostic: Anthropic, OpenAI or Cloudflare Workers AI credentials
  • Triage behaviour supplied as a skill directory in your own repository
  • Split read and write tokens, so the bot commits under a separate identity
  • Optional build command, custom labels and an auto-PR mode

Getting started

Add the action to a workflow that listens for issue events, give it a read token, a write token and one model provider key, and point it at your triage skill.

Create the workflow

The README's example triggers on issue and comment events and keeps one concurrency group per issue number.

yamlyaml
# .github/workflows/triage.yml
name: Issue Triage

on:
  issues:
    types: [opened, reopened, closed]
  issue_comment:
    types: [created]

permissions: {}

concurrency:
  group: triage-${{ github.event.issue.number }}
  cancel-in-progress: false

Add the action step

Check the repository out first, then call the action with your tokens and skill path.

yamlyaml
jobs:
  triage:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    permissions:
      contents: read
      issues: read
      id-token: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          persist-credentials: false

      - uses: withastro/triagebot-action@v1
        with:
          read-token: ${{ secrets.GITHUB_TOKEN }}
          write-token: ${{ secrets.BOT_GITHUB_TOKEN }}
          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
          triage-skill: .agents/skills/triage
          bot-logins: my-bot-username

Choose a provider

Exactly one provider credential is required: anthropic-api-key, openai-api-key, or cloudflare-api-key together with cloudflare-account-id.

texttext
# anthropic-api-key | openai-api-key | cloudflare-api-key + cloudflare-account-id

Write the triage skill

The triage-skill input points at a directory in your repository describing how issues in this project should be reproduced and judged. That is where project-specific knowledge lives.

texttext
.agents/skills/triage

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Work down a large open-issue backlog on a busy open-source repository
  • Ask for a reproduction and close out issues that cannot be reproduced, without a maintainer doing it by hand
  • Turn a verified fix into a pull request only after the original reporter confirms it
  • Keep triage state auditable in labels rather than in an external service

How triagebot-action compares

triagebot-action alongside other open-source ai sdlc automation tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
Multica★ 50.4kSelf-hostable workspace where coding agents are assigned issues like teammates: 26 agent CLIs, runtimes you own, a replayable execution log per run, and review gates before anything ships.
GPT-Pilot★ 33.7kAutonomous AI developer that breaks down an app description into tasks, writes and runs code incrementally, and asks clarifying questions to produce a working production application.
oh-my-codex (OMX)★ 33.2kA workflow layer for the OpenAI Codex CLI that adds agent teams, git-worktree isolation, hooks and HUDs behind a set of canonical plan, code-review and QA commands.
Vibe Kanban★ 28.1kVibe Kanban lets you plan tasks on a kanban board, run coding agents like Claude Code and Codex in isolated workspaces, then review their diffs and ship pull requests.
Beads★ 27.3kA Dolt-backed dependency-graph issue tracker for coding agents: hash IDs avoid multi-agent collisions, `bd ready` surfaces unblocked work, and `bd remember` keeps durable project memory.
Archon★ 23.5kA workflow engine for AI coding agents: describe plan, implement, validate, review and PR phases as YAML, and every run repeats them in its own git worktree.
Keploy★ 18.5kAn API testing tool that records real traffic with eBPF — including database and queue calls — and replays it as deterministic tests and data mocks, with no SDK to import and no code changes.
triagebot-action★ 212A GitHub Action that reproduces, diagnoses and fixes reported bugs through a label-driven state machine, then asks the reporter to verify