Automate triage reviews and add a LiveKit skill

Merged
JS
8h ago
+1927-58

A bare /codetrial-triage now acts on the PRs it grades: a conflicting PR gets the fixed rebase text as a Request changes review, hygiene.sh posts one fixed-text Request changes review for the recurring requests maintainers type by hand (make hooks, make indent, merge commits, a fork's main, agent co-author trailers, CI regressions, missing screenshots), and each low or blocked PR gets a multi-agent review whose verified findings post-inline.sh posts inline. A request a maintainer already made at the current head is never repeated.

codetrial-livekit covers the Rust interviewer's side of LiveKit, and scripts/check-skill-routing.py checks that each request routes to the skill that owns it; the full query set routes 96 of 96 runs correctly.

Validated with scripts/test.sh portable, the skill-script tests (each new rule mutation-checked), and read-only sweeps over the open PRs.


Summary by cubic

A bare /codetrial-triage now acts on the PRs it grades instead of only listing them: a conflicting PR gets the fixed rebase text as a Request changes review, hygiene.sh posts one fixed-text Request changes review for the recurring requests maintainers type by hand, and each low or blocked PR gets a multi-agent review whose verified findings post-inline.sh posts inline. A request a maintainer already made at the current head is never repeated, including one made on a line of the head.

The sweep's reviewer runs with the maintainer's GitHub token nulled so a prompt injection in a contributor's diff cannot post or approve. A similar-work mirror is posted only to an open PR; a pair skipped because a head moved stays out of the ledger and is retried next sweep. The rebase recheck reads per reason: a conflicts entry needs CONFLICTING at the same head, a stale_base entry only the head.

New Features

  • codetrial-livekit covers the Rust interviewer's room loop, join tokens, agent dispatch, egress, and upgrading the LiveKit crates.
  • scripts/check-skill-routing.py verifies each request in scripts/skill-routing-queries.json routes to the skill that owns it; the full query set routes 96 of 96 runs correctly, and a run count below one or a launch failure fails plainly.
  • A failed hygiene.sh run is skipped and reported as unchecked, never posted, and a review's summary waits until every finding landed.