Agent skill · operations · bitbonsai
triage
Activate for the daily repository triage run, or when the user asks to triage CI failures, open issues, or recent commits. Reads yesterday's signals, dedupes against the state file, drafts fixes in isolated worktrees with a reviewer pass, opens PRs on green, and keeps people out of limbo with comments in the maintainer's voice. The state file is the spine: it remembers what was tried, what passed, and what is still open, so each run resumes where the last one stopped.
Why this skill is useful
Adds a comprehensive triage automation script that integrates with GitHub and manages CI failures, issues, and commits, providing capabilities beyond standard practices.
What it needs
Requires gh installed locally. Requires github account access. About 5k tokens when loaded. Last updated 2026-08-06. 1,593 stars on the source repository.
What this skill does
Triage Skill A self-resuming morning loop. One run = gather → load state → triage → fan-out fix → persist → spill. Everything personal (state, inbox, runs, voice) lives under .triage/, which is gitignored. This skill file and the scripts are committed; the data never leaves the machine. Preconditions gh authenticated (gh auth status). All issue/PR/CI reads and writes go through it. .triage/ exists. If missing, run scripts/triage/bootstrap.sh first, it scaffolds state.json, inbox.md, runs/, and bootstraps voice.md from past comments. Clean working tree on main. The loop only mutates .triage/ on the base checkout; all code changes happen in worktrees. The loop 1. Gather (read-only) Collect yesterday's signals. Compute the window from state.json.lastrun (fall back to 24h if absent). Then scan for open commitments, promises the maintainer made in a comment that have not shipped. NOT time-windowed: check every open issue/PR. A commitment is language that promised an action: "I'll fix this", "will add", "shipping next release", "on it", "going to look", etc. It is broken/open if the thread is still open and no merged PR resolved it. See finding-rules.md. 2. Load state Read .triage/state.json. Build a map of known findings by id. The id is a stable hash of source + signature (see resources/state-schema.md), so the same failing test or issue always maps to the same finding across runs. 3. Triage For each gathered signal compute its id and classify with resources/finding-rules.md: known + terminal (propen, resolved, wontfix) → skip, only bump lastseen. known + open under the attempt cap → retry. new + worth-doing → append as status: open, proceed to fan-out. new + needs judgment / ambiguous / out of scope → inbox, needshuman. noise (flaky already tracked, dependabot, etc.) → ignore, log only. 4. Fan-out (bounded) First, for every finding, check whether a contributor PR already addresses it (finding-rules.md, "Prefer reviewing an existing PR"). …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills bitbonsai/triage