Bug Tracker
Work the public bug tracker — the separate GitHub repo where users and testers file bug reports, feedback, and feature requests against a shipped product — through its actionable queue one issue at a time: investigate & verify, tag, mark in-progress, solve via subagent (similar to work-on-issues), comment on the tracker with resolution details, mark resolved, and close.
This handles public reports filed against a separate tracker repo with the source code located in the current working directory. The label taxonomy it drives is the one /init-bug-tracker creates.
Every comment posted to the tracker during a run starts with:
> *This was generated by AI during bug-tracker triage.*
Resolve the tracker repo
In order:
- An explicit argument:
/bug-tracker <owner/repo>. A bare issue number (/bug-tracker 42) resolves against the tracker below and jumps straight to step 2.
- A tracker already recorded for this repo — the
### Bug tracker sub-block under ## Agent skills in CLAUDE.md or AGENTS.md.
- Ask the maintainer which repo holds the reports, then record it there so the next run doesn't ask again.
If the taxonomy is missing or looks stale on the tracker (labels the workflow names don't exist), suggest the maintainer run /init-bug-tracker first.
Filter: actionable vs waiting
An issue is actionable when all of these hold:
- State is
OPEN.
- It is not waiting on the reporter — no
needs-info, or the reporter has commented after needs-info was applied.
- It matches one of: unlabeled (never triaged);
needs-triage; ready-for-agent or ready-for-human; or a bug / enhancement / feedback label with no blocking label.
Ignored: needs-info without reporter activity, in-progress with an active assignee/run, wontfix, resolved (already closed/resolved).
Workflow
1. Fetch and present the queue
REPO="<owner/repo>"
gh issue list -R "$REPO" --state open --json number,title,labels,author,createdAt,updatedAt,comments
Sort into queues, oldest first, and present one table (# | Title | Category | State | Author | Age):
- Queue A — needs attention: unlabeled or
needs-triage.
- Queue B — reporter replied:
needs-info with reporter comments newer than the last triage note.
- Queue C — ready for execution:
ready-for-agent / ready-for-human.
Begin with the oldest issue in Queue A or B; the maintainer may override the pick by naming an issue number.
2. Investigate, verify, and tag
Read the full conversation and timeline:
gh issue view <number> -R "$REPO" --comments
Read the initial description, environment details (OS, version), reproduction steps, and every subsequent comment and reply from the reporter, testers, and maintainers. Parse prior triage notes to avoid re-asking what was already clarified.
Extract and inspect attachments (screenshots, sample files, logs):
- Parse all URLs, image markdown (
), GitHub asset uploads (https://github.com/user-attachments/assets/... or https://github.com/.../assets/...), and attached logs from the issue body and comments.
- Screenshots & UI images: Download and inspect visually via multimodal
Read (or curl to /tmp/ and inspect) to examine error dialogs, visual glitches, unexpected layouts, or clipping.
- Sample files & documents: Download sample files to
/tmp/ (e.g., curl -sL "<url>" -o /tmp/issue-<number>-sample.pdf) and inspect their structure (headers, streams, metadata) using local tools or scripts.
- Console logs & crash reports: Inspect full stack traces, IPC call names, unhandled rejections, and version info.
Cross-reference the source in this working directory:
- Locate the relevant subsystem, recent commits, and existing tests.
- Trace the exact code path indicated by logs, attachments, or reproduction steps.
- Verify whether the problem reproduces locally and pinpoint the root cause.
Tag the issue with suitable labels:
Determine the appropriate taxonomy tags:
- Category:
bug, enhancement, feedback, documentation, or question
- Priority:
priority:critical, priority:high, priority:medium, or priority:low
- Area:
area:<slug> (matching the product components initialized by /init-bug-tracker)
- Verification:
tester-verified (if reproduced/verified in code) or needs-reproduction (if reproduction steps are missing or cannot reproduce)
Apply the classification labels to the issue on the tracker:
gh issue edit <number> -R "$REPO" \
--add-label "bug,area:<component>,priority:<level>,tester-verified"
Handle non-solvable or blocked outcomes:
- Out of scope / wontfix:
gh issue close <number> -R "$REPO" --reason "not planned" \
--comment "> *This was generated by AI during bug-tracker triage.*\n\nClosed as out of scope / working as intended: <explanation>."
gh issue edit <number> -R "$REPO" --add-label "wontfix" --remove-label "needs-triage,in-progress"
Advance to next issue.
- Needs information from reporter (
needs-info):
Post a comment naming the exact missing reproduction step, sample file, or log (never "please provide more info"):gh issue comment <number> -R "$REPO" \
--body "> *This was generated by AI during bug-tracker triage.*\n\n### Needs Information\n<specific questions for reporter>"
gh issue edit <number> -R "$REPO" --add-label "needs-info" --remove-label "needs-triage,in-progress"
Advance to next issue.
- Requires human action (
ready-for-human):
If the issue requires manual UX design, product decision, or physical hardware testing:gh issue comment <number> -R "$REPO" \
--body "> *This was generated by AI during bug-tracker triage.*\n\n### Triage Note\nRequires manual/human action: <reason>"
gh issue edit <number> -R "$REPO" --add-label "ready-for-human" --remove-label "needs-triage,in-progress"
Advance to next issue.
3. Mark as in-progress & prepare workspace
When proceeding to solve the issue:
Mark in-progress on the tracker:
gh issue edit <number> -R "$REPO" \
--add-label "in-progress" \
--remove-label "needs-triage,ready-for-agent"
Create isolated git worktree:
git worktree add .claude/worktrees/issue-<number> -b work-on-issue-<number>
Copy .env files:
Copy .env and .env.* files into the worktree directory if they exist in the root.
4. Solve in subagent
Sub-agent only. The orchestrator delegates implementation to a dispatched subagent inside .claude/worktrees/issue-<number>. The orchestrator does not edit code or run tests directly.
Dispatch the subagent (using haiku or configured model) with a complete, self-contained prompt:
Implement bug fix / feature for issue #<number>: <title>.
Issue body (verbatim):
<full issue description — reproduction steps, environment, symptoms>
Issue comments & attachments summary:
<all relevant comments and investigation findings, root cause, reproduction details>
Working Directory / Worktree:
.claude/worktrees/issue-<number> on branch work-on-issue-<number>
Implementation instructions:
1. Fix the verified root cause in the codebase.
2. Write tests covering the reproduction case to prevent regression (TDD).
3. Research: If you encounter 2+ consecutive failures or unfamiliar APIs, search via `context7`, `/brightdata-plugin:search`, `/search`, or WebSearch before retrying.
4. Parallel subtasks: Decompose and dispatch child sub-agents if subtasks are independent and touch non-overlapping files.
5. Post-implementation verification:
- Run tests to verify the fix passes and no existing tests break.
- Run `/find-mismatch` skill on modified files only.
- If TypeScript/JavaScript codebase, run `npx fallow audit` (install fallow if not present) and resolve any findings.
6. Commit changes:
Format: `fix: resolve #<number> — <short description>` (or `feat: resolve #<number> — <short description>`)
Return: Summary of root cause, changes made, tests run, and commit hash.
5. Submit, comment, mark resolved, and close
Once the subagent completes the fix and commits changes:
Propagate .env files back:
Copy any modified env files from the worktree back to the main directory:
WT=.claude/worktrees/issue-<number>
for wtf in "$WT"/.env "$WT"/.env.*; do
[ -f "$wtf" ] || continue
base=$(basename "$wtf")
if [ ! -f "$base" ] || ! cmp -s "$base" "$wtf"; then
cp "$wtf" "$base" && echo "Propagated $base back"
fi
done
Merge changes & clean up worktree:
Merge the branch into the active branch (or submit PR if repository workflow requires it):
git merge --no-ff work-on-issue-<number> -m "fix: resolve #<number> — <short description>"
git worktree remove .claude/worktrees/issue-<number>
git branch -d work-on-issue-<number>
Add resolution comment to the public tracker repo:
Post a comprehensive resolution summary with the required AI disclaimer:
gh issue comment <number> -R "$REPO" --body "> *This was generated by AI during bug-tracker triage.*
### Resolution summary
- **Root cause**: <explanation of root cause>
- **Fix**: <summary of changes applied in source repo>
- **Verification**: <tests added/run and verification results>"
Mark as resolved and close the issue on the tracker:
gh issue edit <number> -R "$REPO" \
--add-label "resolved" \
--remove-label "in-progress,ready-for-agent,needs-triage"
gh issue close <number> -R "$REPO" --reason "completed"
6. Advance
Announce the resolution of #<number>, display the updated queue status table, and load the next actionable issue. Continue until the actionable queue is empty or the maintainer stops the session.
1---2name: bug-tracker3description: Use to work the actionable queue of a public GitHub bug tracker — investigating, tagging, solving issues in subagents, commenting on the tracker, and closing.4---56# Bug Tracker78Work the public **bug tracker** — the separate GitHub repo where users and testers file bug reports, feedback, and feature requests against a shipped product — through its actionable queue one issue at a time: investigate & verify, tag, mark in-progress, solve via subagent (similar to `work-on-issues`), comment on the tracker with resolution details, mark resolved, and close.910This handles public reports filed against a separate tracker repo with the source code located in the current working directory. The label taxonomy it drives is the one `/init-bug-tracker` creates.1112Every comment posted to the tracker during a run starts with:1314```markdown15> *This was generated by AI during bug-tracker triage.*16```1718## Resolve the tracker repo1920In order:21221. An explicit argument: `/bug-tracker <owner/repo>`. A bare issue number (`/bug-tracker 42`) resolves against the tracker below and jumps straight to step 2.232. A tracker already recorded for this repo — the `### Bug tracker` sub-block under `## Agent skills` in `CLAUDE.md` or `AGENTS.md`.243. Ask the maintainer which repo holds the reports, then record it there so the next run doesn't ask again.2526If the taxonomy is missing or looks stale on the tracker (labels the workflow names don't exist), suggest the maintainer run `/init-bug-tracker` first.2728## Filter: actionable vs waiting2930An issue is **actionable** when all of these hold:31321. State is `OPEN`.332. It is not waiting on the reporter — no `needs-info`, or the reporter has commented after `needs-info` was applied.343. It matches one of: unlabeled (never triaged); `needs-triage`; `ready-for-agent` or `ready-for-human`; or a `bug` / `enhancement` / `feedback` label with no blocking label.3536**Ignored:** `needs-info` without reporter activity, `in-progress` with an active assignee/run, `wontfix`, `resolved` (already closed/resolved).3738## Workflow3940### 1. Fetch and present the queue4142```bash43REPO="<owner/repo>"44gh issue list -R "$REPO" --state open --json number,title,labels,author,createdAt,updatedAt,comments45```4647Sort into queues, oldest first, and present one table (`# | Title | Category | State | Author | Age`):4849- **Queue A — needs attention:** unlabeled or `needs-triage`.50- **Queue B — reporter replied:** `needs-info` with reporter comments newer than the last triage note.51- **Queue C — ready for execution:** `ready-for-agent` / `ready-for-human`.5253Begin with the oldest issue in Queue A or B; the maintainer may override the pick by naming an issue number.5455---5657### 2. Investigate, verify, and tag58591. **Read the full conversation and timeline:**60 ```bash61 gh issue view <number> -R "$REPO" --comments62 ```63 Read the initial description, environment details (OS, version), reproduction steps, and every subsequent comment and reply from the reporter, testers, and maintainers. Parse prior triage notes to avoid re-asking what was already clarified.64652. **Extract and inspect attachments (screenshots, sample files, logs):**66 - Parse all URLs, image markdown (``), GitHub asset uploads (`https://github.com/user-attachments/assets/...` or `https://github.com/.../assets/...`), and attached logs from the issue body and comments.67 - **Screenshots & UI images**: Download and inspect visually via multimodal `Read` (or curl to `/tmp/` and inspect) to examine error dialogs, visual glitches, unexpected layouts, or clipping.68 - **Sample files & documents**: Download sample files to `/tmp/` (e.g., `curl -sL "<url>" -o /tmp/issue-<number>-sample.pdf`) and inspect their structure (headers, streams, metadata) using local tools or scripts.69 - **Console logs & crash reports**: Inspect full stack traces, IPC call names, unhandled rejections, and version info.70713. **Cross-reference the source** in this working directory:72 - Locate the relevant subsystem, recent commits, and existing tests.73 - Trace the exact code path indicated by logs, attachments, or reproduction steps.74 - Verify whether the problem reproduces locally and pinpoint the root cause.75764. **Tag the issue with suitable labels**:77 Determine the appropriate taxonomy tags:78 - **Category**: `bug`, `enhancement`, `feedback`, `documentation`, or `question`79 - **Priority**: `priority:critical`, `priority:high`, `priority:medium`, or `priority:low`80 - **Area**: `area:<slug>` (matching the product components initialized by `/init-bug-tracker`)81 - **Verification**: `tester-verified` (if reproduced/verified in code) or `needs-reproduction` (if reproduction steps are missing or cannot reproduce)8283 Apply the classification labels to the issue on the tracker:84 ```bash85 gh issue edit <number> -R "$REPO" \86 --add-label "bug,area:<component>,priority:<level>,tester-verified"87 ```88895. **Handle non-solvable or blocked outcomes**:90 - **Out of scope / wontfix**:91 ```bash92 gh issue close <number> -R "$REPO" --reason "not planned" \93 --comment "> *This was generated by AI during bug-tracker triage.*\n\nClosed as out of scope / working as intended: <explanation>."94 gh issue edit <number> -R "$REPO" --add-label "wontfix" --remove-label "needs-triage,in-progress"95 ```96 Advance to next issue.97 - **Needs information from reporter (`needs-info`)**:98 Post a comment naming the exact missing reproduction step, sample file, or log (never "please provide more info"):99 ```bash100 gh issue comment <number> -R "$REPO" \101 --body "> *This was generated by AI during bug-tracker triage.*\n\n### Needs Information\n<specific questions for reporter>"102 gh issue edit <number> -R "$REPO" --add-label "needs-info" --remove-label "needs-triage,in-progress"103 ```104 Advance to next issue.105 - **Requires human action (`ready-for-human`)**:106 If the issue requires manual UX design, product decision, or physical hardware testing:107 ```bash108 gh issue comment <number> -R "$REPO" \109 --body "> *This was generated by AI during bug-tracker triage.*\n\n### Triage Note\nRequires manual/human action: <reason>"110 gh issue edit <number> -R "$REPO" --add-label "ready-for-human" --remove-label "needs-triage,in-progress"111 ```112 Advance to next issue.113114---115116### 3. Mark as in-progress & prepare workspace117118When proceeding to solve the issue:1191201. **Mark `in-progress` on the tracker**:121 ```bash122 gh issue edit <number> -R "$REPO" \123 --add-label "in-progress" \124 --remove-label "needs-triage,ready-for-agent"125 ```1261272. **Create isolated git worktree**:128 ```bash129 git worktree add .claude/worktrees/issue-<number> -b work-on-issue-<number>130 ```1311323. **Copy `.env` files**:133 Copy `.env` and `.env.*` files into the worktree directory if they exist in the root.134135---136137### 4. Solve in subagent138139**Sub-agent only.** The orchestrator delegates implementation to a dispatched subagent inside `.claude/worktrees/issue-<number>`. The orchestrator does not edit code or run tests directly.140141Dispatch the subagent (using `haiku` or configured model) with a complete, self-contained prompt:142143```markdown144Implement bug fix / feature for issue #<number>: <title>.145146Issue body (verbatim):147<full issue description — reproduction steps, environment, symptoms>148149Issue comments & attachments summary:150<all relevant comments and investigation findings, root cause, reproduction details>151152Working Directory / Worktree:153.claude/worktrees/issue-<number> on branch work-on-issue-<number>154155Implementation instructions:1561. Fix the verified root cause in the codebase.1572. Write tests covering the reproduction case to prevent regression (TDD).1583. Research: If you encounter 2+ consecutive failures or unfamiliar APIs, search via `context7`, `/brightdata-plugin:search`, `/search`, or WebSearch before retrying.1594. Parallel subtasks: Decompose and dispatch child sub-agents if subtasks are independent and touch non-overlapping files.1605. Post-implementation verification:161 - Run tests to verify the fix passes and no existing tests break.162 - Run `/find-mismatch` skill on modified files only.163 - If TypeScript/JavaScript codebase, run `npx fallow audit` (install fallow if not present) and resolve any findings.1646. Commit changes:165 Format: `fix: resolve #<number> — <short description>` (or `feat: resolve #<number> — <short description>`)166167Return: Summary of root cause, changes made, tests run, and commit hash.168```169170---171172### 5. Submit, comment, mark resolved, and close173174Once the subagent completes the fix and commits changes:1751761. **Propagate `.env` files back**:177 Copy any modified env files from the worktree back to the main directory:178 ```bash179 WT=.claude/worktrees/issue-<number>180 for wtf in "$WT"/.env "$WT"/.env.*; do181 [ -f "$wtf" ] || continue182 base=$(basename "$wtf")183 if [ ! -f "$base" ] || ! cmp -s "$base" "$wtf"; then184 cp "$wtf" "$base" && echo "Propagated $base back"185 fi186 done187 ```1881892. **Merge changes & clean up worktree**:190 Merge the branch into the active branch (or submit PR if repository workflow requires it):191 ```bash192 git merge --no-ff work-on-issue-<number> -m "fix: resolve #<number> — <short description>"193 git worktree remove .claude/worktrees/issue-<number>194 git branch -d work-on-issue-<number>195 ```1961973. **Add resolution comment to the public tracker repo**:198 Post a comprehensive resolution summary with the required AI disclaimer:199 ```bash200 gh issue comment <number> -R "$REPO" --body "> *This was generated by AI during bug-tracker triage.*201202 ### Resolution summary203 - **Root cause**: <explanation of root cause>204 - **Fix**: <summary of changes applied in source repo>205 - **Verification**: <tests added/run and verification results>"206 ```2072084. **Mark as `resolved` and close the issue on the tracker**:209 ```bash210 gh issue edit <number> -R "$REPO" \211 --add-label "resolved" \212 --remove-label "in-progress,ready-for-agent,needs-triage"213214 gh issue close <number> -R "$REPO" --reason "completed"215 ```216217---218219### 6. Advance220221Announce the resolution of `#<number>`, display the updated queue status table, and load the next actionable issue. Continue until the actionable queue is empty or the maintainer stops the session.222