Matt Pocock

지옥 같은 백로그를 뚫는 /triage — 라벨에 새긴 state machine

Matt Pocock

팀·오픈소스 백로그를 뚫는 /triage 스킬. 라벨에 새긴 state machine이 핵심 — bug·enhancement 두 category role과 needs triage·needs info·ready for agent·needs human·won't fix 다섯 state role, 이슈마다 정확히 하나씩. ready for agent로 넘기려면 에이전트용 브리프를 써야 하고, .out-of-scope 디렉토리의 ADR로 '만들지 않기로 한' 기능은 즉시 닫는다. 리포터 말을 곧이곧대로 믿지 말고 diagnose 스킬로 직접 재현·회귀 테스트부터 짜서 고친다. 결국 AFK 에이전트 관리는 인간과 AI 사이에서 큐를 정리하는 translation layer라는 통찰.

지옥 같은 백로그를 뚫는 /triage — 라벨에 새긴 state machine

생각 덩어리

솔로엔 좋지만 팀엔 부족 — triage가 채우는 자리

The problem with most skill based setups is that they are great for solo developers, but they're not so great when you get into teams.

...you will often need to triage other people's ideas to figure out if they're good or not, to even figure out if they're worth building, to figure out if it's a bug report, to see if you need to reproduce it, all that stuff.

This skill is called triage, and I run triage on every single open source repo that I run. It's great for working through GitHub issues, you can plug it into Jira, you can plug it into any backlog to essentially flesh out that backlog and turn it into actionable tasks that can be picked up by an agent.

triage = 라벨에 새긴 state machine

The thing that drives this is that it has ... essentially a state machine encoded into labels.

So, you have two category roles currently, this may change in future. We have a bug role and an enhancement role.

다섯 개의 state role — needs triage부터 won't fix까지

Each of these five state roles corresponds to a state that the ticket can be in. So, the ticket might be needs triage, in other words, it needs a maintainer to look at it.

It might be that it needs info, waiting on the reporter for more information. It might be ready for an agent to pick up, in other words, it's fully specified, ready for an AFK agent to go and slam through the task. Or it might need a human to look at it now and to actually implement it. Or we do a won't fix, where it just will not be actioned.

하나의 이슈엔 정확히 하나의 category + 하나의 state

This is a state machine because every single triaged issue should carry exactly one category role and one state role. In other words, you can't have it be ready for human and needs triage at the same time.

This is a good old state machine, and that's familiar to anyone who's followed my career, you'll know I would love state machines.

ready for agent — 브리프를 써야 넘어간다

ready for agent is a nice one because in order to move something to ready for agent, you need to write a brief for the agent that's going to pick it up.

And we have inside here a agent brief template, which allows you to kind of write this ticket really nicely.

The way that my plan prompt works for Sandcastle, which is my AFK agent kind of software factory thing, is it looks for the label ready for agent and it only touches ones that have been explicitly marked ready for agent.

.out-of-scope — 만들지 않기로 한 것들의 ADR

inside the repo I have a dot out of scope directory right at the top here, which is a few things that I've already triaged with the skill that marks it.

This is essentially like an architectural decision record, but specifically for features that we're not going to implement.

...this means that the agent, when it's looking at issues, especially enhancement issues, is essentially looking at the ADRs that I've created at these out of scope references and going, "Okay, I can just close this straight away because this is an enhancement that we're not going to commit to."

곧이곧대로 믿지 마라 — diagnose로 직접 재현

However, I think I want it to actually reproduce it itself. It's being a little bit too credulous about ... the stuff that it's received from the person who's tried this.

We can see that the diagnose skill actually uses a similar setup to my TDD skill, where it gets it to create the regression test first, create the feedback loop first, and then fix it within that feedback loop.

결국은 queue management — AFK 에이전트를 위한 백로그 정리

It's funny how much of AI and how much of managing AFK agents is essentially queue management. This is what we're doing here. We're just sort of pruning a queue and acting as a translation layer between the humans creating these tickets and the AI that's going to implement them.

...this is specifically designed for AFK agents. So you, in order to get your agent working properly, you need a backlog of tasks that it can pick up over time. And having specific labels for each of those means that the agent is not going to stumble around on crap tasks that aren't ready for it yet.

YouTube 원본 →원본 사이트 →