plugins/git/skills/triage/SKILL.md
Use when reviewing git state across worktrees, stashes, and branches - helps decide what to clean up, resume, or address
npx skillsauth add technicalpickles/pickled-claude-plugins triageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Full inventory of your git work state with rich context for decision-making. Shows worktrees, stashes, branches, and uncommitted work with enough detail to decide what to clean up, resume, or address.
Announce: "Using git:triage to inventory your work in progress..."
Full inventory by default. User can scope to:
worktrees - just worktreesstash - just stashesbranches - just local branches# Worktrees
git worktree list --porcelain
# Stashes
git stash list
# Local branches with tracking info
git branch -vv
# Current status
git status --porcelain
For each worktree, gather:
# Get branch and status
cd {worktree_path}
branch=$(git branch --show-current)
git status --porcelain
# Check for associated PR
gh pr list --head {branch} --json number,title,state,url
# Check for plan file
ls docs/plans/*{branch-keywords}* 2>/dev/null
If uncommitted changes exist:
# Get stash details
git stash show stash@{N} --stat
# Check if source branch still exists
git branch --list {branch_from_stash_message}
# Check if merged to main
git branch --merged main | grep {branch}
# Get associated PR
gh pr list --head {branch} --state all --json number,state,url
# Last commit age
git log -1 --format="%cr" {branch}
Format with full context:
## Git Triage
### Worktrees
#### `.worktrees/feature-oauth` (feature/oauth)
- **PR:** https://github.com/owner/repo/pull/1234 (open, 2 approvals)
- **Plan:** `docs/plans/2025-01-15-oauth-design.md`
- **Uncommitted:** 3 files in `src/auth/`
- Adding Google OAuth provider configuration
- `oauth.ts`, `config.ts`, `types.ts` modified
- **Unpushed:** 1 commit - "Add OAuth config scaffolding"
- **Recommendation:** Resume - PR is approved, needs final push
#### `.worktrees/pr-999-fix-typo`
- **PR:** https://github.com/owner/repo/pull/999 (merged)
- **Clean:** No uncommitted changes
- **Recommendation:** Safe to delete - PR merged
---
### Stashes
#### `stash@{0}` - "WIP on feature/auth: debugging session"
- **Age:** 3 weeks
- **Source branch:** feature/auth (exists)
- **Files:** 5 files in `src/auth/`
- **Recommendation:** Review - branch exists, may be superseded
#### `stash@{1}` - "WIP on old-feature: abandoned work"
- **Age:** 2 months
- **Source branch:** old-feature (deleted)
- **Recommendation:** Likely safe to drop - source branch gone
---
### Branches
#### `feature/old-experiment`
- **Last commit:** 6 weeks ago
- **PR:** https://github.com/owner/repo/pull/800 (closed, not merged)
- **Tracking:** origin/feature/old-experiment (gone)
- **Recommendation:** Safe to delete - PR closed, remote deleted
---
## Summary
- **2 worktrees** (1 active, 1 safe to delete)
- **2 stashes** (1 to review, 1 likely droppable)
- **1 branch** safe to delete
Ready to clean up?
Use AskUserQuestion for cleanup decisions:
What would you like to do?
(A) Delete merged worktree `.worktrees/pr-999-fix-typo`
(B) Review stash@{0} contents
(C) Delete stale branch `feature/old-experiment`
(D) Clean up all safe-to-delete items
(E) Nothing right now
Never auto-delete - always require user confirmation.
For option (D), list exactly what will be deleted and confirm:
This will delete:
- Worktree: .worktrees/pr-999-fix-typo
- Branch: feature/old-experiment
- Stash: stash@{1}
Proceed?
(A) Yes, delete all
(B) Let me pick individually
(C) Cancel
| Item | Key Info | Commands |
|------|----------|----------|
| Worktree | Branch, PR, plan, uncommitted | git worktree list, gh pr list --head |
| Stash | Age, source branch, files | git stash list, git stash show |
| Branch | Merged?, PR, tracking, age | git branch -vv, gh pr list --head |
git:checkout - Resume work on a worktreegit:inbox - PRs awaiting your review (inbound work)superpowers:finishing-a-development-branch - Clean up after completing worktools
--- name: writing-for-scannability description: Use when structuring prose so readers can skim it - drafting or restructuring READMEs, docs, PR or issue bodies, design docs, RFCs, or any long-form text where a wall of prose hides the structure. Also use when explicitly asked to make something scannable or skimmable, convert prose to a list, surface a buried list, fix a wall of text, or decide whether bullets or prose fit. Strong signal: text with parallel sentence shapes, contrast markers ("that
development
Ignore actually-lsp nudges for an ecosystem in this project. Use when the user wants to silence, dismiss, or ignore the LSP setup nudges for a specific ecosystem (Rust, TypeScript, Ruby), or invokes `/actually-lsp-ignore` directly. Writes `dismissed=true` to `.claude/actually-lsp.json`. Persistent across sessions for this project only.
tools
Diagnose and fix LSP setup for the current project's detected ecosystems (Rust, TypeScript, Ruby). Use when the SessionStart hook nudged about a missing LSP plugin, when the env isn't ready (no `bundle install`, no `cargo build`, missing server binary), when LSP calls are failing, or when the user invokes `/actually-lsp-doctor` directly. Walks the per-ecosystem state machine, reports what's missing, then runs the fix.
tools
--- name: investigating-runs description: Use whenever the user mentions a GitHub Actions / GHA run, even casually — invoke this skill before reaching for raw `gh` commands, because the bundled `gha-snapshot` helper distills `gh run view --log-failed` (a firehose) into a readable block with per-job status, failed-step log tails, and annotations. Specific triggers (any one is enough): a `github.com/.../actions/runs/...` URL; the phrase "GitHub Actions" or "GHA"; the `gh run` CLI; a failing workfl