.agents/skills/issue-bulk-process/SKILL.md
Orchestrate bulk triage and reproduction of multiple SkiaSharp issues by delegating to
issue-triage and issue-repro skills via sub-agents.
Parse the user's message to determine the issue list:
#, or numbers in a space/comma-separated list that the user
clearly intends as issue numbers (e.g., #3400 #3428, issues 3400, 3428, 3429, triage 123 456 789).
Issue numbers may be 2–5 digits.ask_user tool.gh repo view --json owner,name -q '"\(.owner.login)/\(.name)"'
Store the {owner} and {repo} for use in all subsequent phases.
Use the gh CLI for all issue lookups. It handles pagination automatically via the -L (limit) flag —
no manual page iteration needed.
If explicit numbers given: Use them directly — they refer to the current repository.
If "newest N issues" or similar:
gh issue list --state open -L {N} --json number,title -q '.[] | "\(.number)\t\(.title)"'
If search query (e.g., "all blazor issues", "issues about WASM", "label:area/foo"):
gh issue list -S "{search terms}" --state open -L 500 --json number,title -q '.[] | "\(.number)\t\(.title)"'
For label-based queries, use --label instead of -S:
gh issue list --label "area/SkiaSharp.Views" --state open -L 500 --json number,title -q '.[] | "\(.number)\t\(.title)"'
Note:
-L 500is a generous upper bound.ghfetches exactly as many pages as needed and stops when results are exhausted, so over-specifying the limit is fine.
Extract issue numbers from the output. Present the list to the user and confirm before proceeding.
Before launching triage/repro agents, check for existing result files:
# Check for existing triage results
ls .data-cache/repos/{owner}-{repo}/ai-triage/{number}.json 2>/dev/null
# Check for existing repro results
ls .data-cache/repos/{owner}-{repo}/ai-repro/{number}.json 2>/dev/null
Found 33 issues. 15 already triaged, 12 already reproduced.
Will triage: 18 | Will reproduce: 21
Triage is read-only — safe to parallelize.
Launch one general-purpose background agent per issue. Each agent's prompt is exactly:
triage issue {number}
This triggers the issue-triage skill in each agent.
Steps:
mode: "background" via the task tool. Collect all returned agent_id values.read_agent for each agent_id with wait: true, timeout: 300. You can call multiple read_agent in parallel.read_agent again with another 300s timeout (600s total max).Type: type/bug (0.95), Severity: high, Action: needs-investigation in the response text.issue-triage or ai-triage, it failed to invoke the skill — report it.Batch size limit: Launch at most 12 agents at once. If more issues, wait for the current batch to complete before launching the next.
Reproduction may build projects, create files, open simulators — must run in series.
Launch one general-purpose sync agent per issue, sequentially. Each agent's prompt is exactly:
reproduce issue #{number}
This triggers the issue-repro skill in each agent.
Steps:
task agent with mode: "sync". The call blocks until the agent completes.reproduced, not-reproduced, needs-platform,
needs-hardware, inconclusive, partial). Look for Conclusion: in the response text.Present a consolidated summary table using data extracted from the agent responses in Phases 2 and 3:
## Bulk Process Results
| # | Issue | Type | Severity | Triage Action | Repro Conclusion |
|---|-------|------|----------|---------------|------------------|
| 1 | #3400 | Bug | medium | needs-investigation | ⏭️ needs-platform |
| 2 | #3472 | Bug | medium | needs-investigation | ❌ reproduced |
...
### Stats
- Triaged: {N}
- Reproduced: {reproduced}
- Not reproduced: {not_reproduced}
- Blocked (needs-platform/hardware): {blocked}
- Inconclusive: {inconclusive}
Conclusion icons: ❌ reproduced · ✅ not-reproduced · ⏭️ needs-platform/hardware · ❓ inconclusive · ⏱️ timeout · ⏩ skipped (already processed)
| Situation | Action |
|---|---|
| Agent times out after 600s total | Record as ⏱️ timeout in the summary and continue |
| Agent response doesn't mention the skill | Record as failed in the summary and continue |
| GitHub API fails for "newest N" | Ask user to provide explicit issue numbers |