From linear-bug-sweep
Systematically work through Linear issues from a project one by one — verifying, fixing, or closing each with build verification and status updates. Use when the user wants to "go through bugs", "work through Linear issues", "sweep bugs", "fix Linear issues one by one", "triage issues", or resolve a backlog of issues from a Linear project. Also trigger when the user asks to "resolve non-idiomatic code", "clean up code issues", or "work through tech debt" and has Linear issues tracking them.
How this skill is triggered — by the user, by Claude, or both
Slash command
/linear-bug-sweep:sweepThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Work through a Linear project's Todo issues one by one: verify each against the codebase, fix or close it, confirm
Work through a Linear project's Todo issues one by one: verify each against the codebase, fix or close it, confirm the build, update Linear, and move to the next.
Use list_teams and list_projects to discover available teams and projects. If multiple projects exist, ask the
user which one to sweep. If only one exists, auto-select it and tell the user.
Use list_issue_statuses with the selected team to find the "Todo" state ID.
Fetch Todo issues in batches of 10 using list_issues with the selected project and Todo state. For each issue,
extract only:
identifier (e.g., "TEAM-42")titlepriority.nameassigneelabels (exclude the "AI" label)Page through using the cursor until all issues are fetched.
Sort by priority (1=Urgent first, 2=High, 3=Medium, 4=Low, 0=No priority last) and present as a table:
| ID | Priority | Title | Labels | Assignee |
|---|
If there are no Todo issues, tell the user and stop.
Confirm with the user: "Ready to start from the top?" before proceeding.
For each issue, follow this sequence:
Format each issue header like this — always include the file path and line numbers so the user can orient themselves immediately:
**TEAM-XX (Priority): Title**
**File:** `path/to/file.ext:line-numbers`
Read the issue description to understand what file(s) and lines are affected. Then read the referenced file(s) to understand the current state of the code.
Before proposing any fix, verify the issue still exists in the codebase. Search for the specific pattern described in the issue (the function name, the anti-pattern, the problematic line). If the code has already been fixed or the file/route/class no longer exists:
save_issueIf the issue is still present:
After agreement:
./gradlew build -x test, npm run build, cargo check) to verify
compilation and linting passAfter each issue is resolved (whether fixed, already resolved, or won't fix), use save_issue to update it:
state to Done or Canceled as appropriatedescription with two sections:## Description
[1-2 sentence summary of the original problem]
## Resolution
[What was done to fix it, or why it was closed as won't fix]
For won't fix issues, use ## Resolution — Won't Fix as the heading.
After updating Linear, present the next issue. Keep momentum — don't ask "ready for the next one?" every time unless the previous fix was complex or the user seems to want a pause.
Won't Fix — If a reported issue turns out to be intentional design (e.g., duplication exists for type safety reasons, a "redundant" qualifier is actually needed for disambiguation), explain why to the user and recommend closing as Canceled. Update the description with the rationale so the reasoning is preserved.
In Progress — If an issue requires a larger refactor that shouldn't be done in this sweep, mark it as In Progress and add notes about what was found and what needs to happen. Tell the user why you're deferring it.
Overlapping Issues — If fixing one issue also resolves another (e.g., removing dead code fixes both the "commented-out code" and "hardcoded path" issues), close both and note the connection in each issue's description.
User Disagrees — If the user disagrees with a proposed fix or wants to revert a change, do it immediately and update the Linear issue accordingly (Canceled with explanation, or In Progress with notes).
Adjacent Fixes — If two issues affect the same file on adjacent lines, propose fixing both together to avoid redundant file reads and build cycles. Call out that you're combining them.
When every issue has been addressed:
Provide a summary table:
| Status | Count | Issues |
|---|---|---|
| Done (fixed) | N | TEAM-XX, TEAM-YY |
| Done (already resolved) | N | TEAM-ZZ |
| Canceled (won't fix) | N | TEAM-AA |
| In Progress | N | TEAM-BB |
Ask: "Would you like me to update project documentation (README, CLAUDE.md, llms.txt, etc.) to reflect these changes?"
If the user agrees, identify what changed (renamed files, new utilities, removed endpoints, new conventions) and update the relevant docs.
After docs are updated (or skipped), ask: "Want me to commit and push?"
npx claudepluginhub mattbobambrose/mattbobambrose-claude-skills --plugin linear-bug-sweepExecutes code tasks from Linear sub-issues: resolves dependencies, implements changes, validates Done Criteria, and syncs status. Use when asked to work on a Linear issue (e.g. PRI-42).
Triages GitHub issues and PRs, links active work to Linear, and keeps GitHub public while Linear remains the internal execution layer. Use for backlog control, PR triage, or GitHub-to-Linear coordination.
Interact with Linear to view, create, and update issues using MCP or the Linear CLI, with varlock-based secret management.