triage-public · git:20260827.670aa60 · 2026-08-27 · sha256 8775b4acc965f5cb
triage-public git:20260827.670aa60A
Immutable. This exact content never changes and is served at /api/v1/blob/8775b4acc965f5cb.
---
name: triage-public
description: Triage public issue tracker items through labels, reproduction, scope decisions, and agent briefs, then promote ready work into the private execution engine. Use when the user wants to review incoming issues, classify bugs or enhancements, ask reporters for info, publish agent briefs, or promote public work into private execution.
---
# Triage Public
Operate a project's public collaboration layer. The public tracker is declared in `.brain/project.yaml`
(`public-tracker:`); execution itself is planned and tracked privately through `operate-execution`.
This skill is tracker-agnostic — it owns the triage workflow. The tracker's CLI mechanics and label
vocabulary live in the tracker reference ([references/github.md](references/github.md) for GitHub).
The private execution engine is the source of truth for all work. The public tracker holds issues
raised by reporters or intentionally opened for contributor collaboration. When one is accepted,
record it in the private engine as a work item that references the public origin. This flow is
inward only: private designs, epics, and beads never generate public tracking issues.
Every comment posted to a public issue during intake must start with:
```markdown
> *This was generated by AI during triage.*
```
## Context files
Read at session start, before doing anything else:
1. **`.brain/project.yaml`** — selects the public tracker (`public-tracker:`).
- `none` — nothing to intake; all work lives in the private engine. Tell the user and stop.
- `gh` — operate GitHub Issues; load [references/github.md](references/github.md) for CLI
mechanics and labels. Infer the repo from the adopter remote; use `public-tracker-id` only
when it is explicitly set.
2. **`.brain/AGENTS.md`** (Project section) — project tracker conventions shared with
`operate-execution`: linking rules, ADR policy, priority deviations. Absent or empty means pure defaults.
## Triage roles
Every triaged issue carries exactly one **category** and one **state**:
- Category: `bug`, `enhancement`
- State: `needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`
These are the public layer's vocabulary, realized as the tracker's native mechanism (GitHub labels;
see [references/github.md](references/github.md)). Private work uses the engine's native fields
instead: when promoting inward, `operate-execution` translates a role to the right field (type,
status, close reason) rather than copying it as a label. A project records any mapping deviations
in `.brain/docs/labels.md` (owned by `operate-execution`).
## Public boundary
Use the public tracker when the issue itself is a collaboration artifact: external intake,
reporter follow-up, maintainer/contributor discussion, or work intentionally offered to public
contributors. Use a PR to surface code review without manufacturing an issue. Planning,
dependencies, readiness, ownership, and status stay exclusively in the private execution engine.
## Show what needs attention
Query the tracker and present, in order: unlabeled issues, `needs-triage`, then `needs-info` with
reporter activity since the last intake note. Show counts and a one-line summary per issue; let the
maintainer pick.
## Intake a specific issue
1. **Gather context.** Read the issue body, comments, labels, reporter, and dates. Parse previous
intake notes. Explore the codebase with the project vocabulary and ADRs. Check `.out-of-scope/`
for similar rejected enhancements.
2. **Recommend.** Recommend category and state with reasoning. Wait for maintainer direction before
any public write.
3. **Reproduce bugs.** Attempt reproduction before grilling; report confirmed repro, failed repro,
or missing information.
4. **Grill if needed.** Use `grill-decisions` when the issue needs design or terminology clarification.
5. **Apply the outcome.**
- `ready-for-agent`: post an agent brief (see [agent brief](references/agent-brief.md));
promote to a private work item via `operate-execution`.
- `ready-for-human`: post a brief-style summary and explain why it needs human work.
- `needs-info`: ask specific reporter questions; summarize what is already established.
- `wontfix` bug: explain and close.
- `wontfix` enhancement: write/update `.out-of-scope/` (see
[out-of-scope guide](references/out-of-scope.md)), link it from the issue, close.
- `needs-triage`: apply the state, with a comment only if useful.
## Quick override
If the maintainer says to move an issue to a state, trust them. Confirm public mutations, apply the
roles, and ask only whether they want an agent brief or private work item created. This applies to
an issue already on the public tracker; it never authorizes projecting unrelated private work there.
## Needs-info template
```markdown
## Triage Notes
**What we've established so far:**
- point 1
**What we still need from you (@reporter):**
- question 1
```
Do not ask vague questions like "please provide more info."