Agent skill
triage-followup
Produce a follow-up document from a .NET containers triage meeting. Takes a VTT transcript and correlates it with the user's recent GitHub activity to produce a markdown document with concrete to-dos and links. Use after a triage meeting when the user has a .vtt transcript file.
Install this agent skill to your Project
npx add-skill https://github.com/lbussell/agent-skills/tree/main/skills/triage-followup
SKILL.md
Workflow
Step 1: Gather inputs in parallel
- Read the VTT transcript — the user will provide the path.
- Fetch GitHub activity for the last hour — use the GitHub events API:
shellGroup by repo, extract issue numbers, actions (labeled, assigned, commented, opened, closed), and comment bodies.
gh api "users/lbussell/events?per_page=100" --jq '[.[] | select(.created_at > "<since>")]'
Step 2: Convert VTT to clean markdown
Use a sub-agent to transform the raw VTT into readable markdown:
- Remove all VTT formatting (timestamps, cue IDs,
<v>tags) - Merge consecutive lines from the same speaker into coherent paragraphs
- Remove filler words (um, uh, OK, yeah, let me) and incomplete/non-substantive sentences
- Group by topic/issue discussed
- Fix common transcription errors (see table below)
Save to triage-transcript.md in the same directory as the VTT.
Common transcription errors
| Transcribed As | Actual Meaning |
|---|---|
| Cousteau | "close to" |
| Coppola / Coppola | Copilot |
| teasy data | tzdata |
| Bill Varg | build arg |
| Donna Docker | dotnet-docker |
| Servicore | Server Core |
| violent issue | file an issue |
Step 3: Get full details for each issue touched
For every issue that appears in the GitHub events, fetch:
- Title, state, labels, assignees, URL (
gh issue view) - The user's triage comments from the last hour (
gh apion issue comments)
Step 4: Correlate and produce follow-up document
Create triage-followups.md with one section per issue/topic. Each section should include:
- Issue link with title
- Local repo path (see repo map below)
- Status — state, labels, assignees
- Triage comment — what the user wrote on GitHub
- Discussion — what was said in the meeting (from the transcript)
- Decision — what was decided
- To-Do — concrete action items as checkboxes
Step 5: Categorize each follow-up
Label each item with one of:
| Category | Emoji | When to use |
|---|---|---|
| Ready for Work | 🟢 | Root cause is known, fix is clear, can start and finish now |
| In Progress | 🔵 | Already being actively worked on |
| Needs Investigation | 🟡 | Root cause unknown, feasibility unclear, or requires repro/research first |
| Blocked | ⏳ | Waiting on someone else or an external dependency |
Apply the label in each section heading, e.g. ## 3. Fix foobar — 🟢 Ready for Work.
Heuristics:
- If the triage comment already identifies the root cause and the fix is a straightforward code change → Ready for Work
- If the triage comment says "I'll investigate" or "I'll look at this" → Needs Investigation
- If the meeting discussion mentions active development ("I have it working", "mostly done") → In Progress
- If it depends on someone else finishing something first → Blocked
- Filing a new issue to capture a known problem is Ready for Work (it's just writing)
- Doc updates where the correct content is already known are Ready for Work
Step 6: Annotate with local repo paths
Map GitHub repos to local clones using the table below. Do not point to dotnet-docker-internal for code changes — it contains no source code (see note below).
Repo Map
| GitHub Repo | Local Path | Notes |
|---|---|---|
dotnet/docker-tools |
~/src/docker-tools |
ImageBuilder, pipeline infrastructure, publish pipeline code |
dotnet/dotnet-docker |
~/src/dotnet-docker |
.NET Docker images (Dockerfiles, docs, tests) |
dotnet/dotnet-docker-internal |
~/src/dotnet-docker-internal |
No source code. Only publish result issues and image-info files. See below. |
microsoft/dotnet-framework-docker |
~/src/dotnet-framework-docker |
.NET Framework Docker images |
dotnet-docker-internal has no source code
Issues filed in dotnet/dotnet-docker-internal are almost always auto-generated "Publish Result" issues created by the pipeline infrastructure in dotnet/docker-tools. When triaging these issues:
- The code to fix is in
~/src/docker-tools(ImageBuilder / pipeline templates) - The pipeline YAML may live in
~/src/dotnet-dockeror~/src/dotnet-docker-internal - Always attribute the local repo as
~/src/docker-toolsfor these items, with a note that the issue is filed in dotnet-docker-internal
Tips
- The user's GitHub username is
lbussell. - Triage comments typically start with
[Triage]. - The meeting is usually between Logan Bussell and Matt Thalman.
- The
gh api "users/lbussell/events"endpoint is the fastest way to get all activity — it covers issue comments, label changes, assignments, and issue creation in one call. - Launch the VTT conversion as a background sub-agent while fetching GitHub data in parallel to save time.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
create-sub-agent-worktree
Spawn a Copilot CLI agent in its own git worktree and tmux window. Creates a new branch via worktrunk (`wt`), opens a tmux window in the target session, and launches `copilot -i` with a prompt. Use when the user asks to run a task in parallel, hand off work to another agent, or start a background coding task in a separate worktree.
triage-pull-requests
Triage open pull requests in a repository into actionable categories: ready to merge, needs review, needs action, stale, waiting. Use for daily PR triage to quickly identify what needs attention.
property-testing-cscheck
Write property-based tests in C# using CsCheck. Covers generator composition, property selection (round-trip, invariant, model-based, metamorphic), parallel linearizability testing, performance comparison, classification, and configuration. Use when writing, reviewing, or improving property-based tests in a .NET project that uses CsCheck.
investigating-pull-request
Shows the CI status for a single GitHub pull request. Displays PR metadata (title, author, fork, branch) and renders Azure Pipelines build timeline trees for each pipeline run. Use when a user provides a PR number or URL and wants to check its CI status or diagnose failures.
triage-pipelines
List all failing and warning Azure Pipelines for daily triage. Checks preconfigured pipeline folders and reports any with failed or warning builds. Use for daily pipeline health checks.
investigating-pipeline
Diagnoses a single Azure Pipelines build. Shows the build timeline tree with stages, jobs, and task results, and retrieves task logs for debugging failures. Use when a user provides a build ID or Azure DevOps build URL and wants to understand what failed and why.
Didn't find tool you were looking for?