Repository navigation
Conversation
bin/claude-sessions lists every live Claude session and background agent from `claude agents --json`, with what an open prompt waits for, the git and PR state of its worktree, and the tail of its transcript. The /sessions skill groups those sessions by what each one needs next. `git pr --json` prints the PR as JSON so the script can read its base.
There was a problem hiding this comment.
🟡 Changes recommended
Queue classification, swallowed PR lookup failures, and inaccurate untracked-file counts need correction.
1 open finding
What changed in this PR
Adds a session dashboard to the repository’s Claude tooling, showing which sessions need attention and offering confirmed continuation messages.
Changes:
- Replaces the Supacode-only listing with
claude-sessionsand adds/sessions. - Adds structured
git pr --jsonoutput and updates bundled copies. - Adds regression tests, CI coverage, and documentation.
| File | Description |
|---|---|
| README.md | Documents the new command and skill. |
| bin/supacode-claude-sessions | Removes the Supacode-only command. |
| bin/lib/test-git-pr.sh | Tests structured PR output. |
| bin/lib/test-claude-sessions.sh | Tests session facts and formatting. |
| bin/git-pr | Adds JSON output without stack lookups. |
| bin/claude-sessions | Collects session, transcript, and PR information. |
| ai/skills/wait-for-pr-reviews/scripts/git-pr | Updates the bundled helper. |
| ai/skills/sessions/SKILL.md | Defines classification and confirmed messaging. |
| ai/skills/address-pr-reviews/scripts/git-pr | Updates the bundled helper. |
| ai/README.md | Documents the session test command. |
| ai/codex/excluded-skills.txt | Excludes the Claude-specific skill. |
| .github/workflows/test.yml | Runs session tests in CI. |
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
Comment on lines
+61
to
+63
| 2. **Needs you**: `waiting` is set, `signing` is `blocked`, the PR status is Changes requested, the PR status is Approved with no Trunk queue state (only the user can merge it), or the last assistant text asks a question that only the user can answer. The next step names the decision, such as "approve the `gh pr merge` prompt" or "choose between the two schemas it proposed". | ||
| 3. **Claude can continue**: `status` is `idle`, and the last assistant text offers a next step that needs no decision from the user, such as "Next I'll run the tests" or "Want me to push?". A yes or no offer to do work it already described is an offer, not a question. The next step names the offered step briefly. | ||
| 4. **Waiting on something outside**: the PR status shows a Trunk queue state, Review required, or Not approved, or the last assistant text says that it waits on CI or a reviewer. |
haacked
marked this pull request as ready for review
October 8, 2026 01:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

With 20+ Claude sessions running, nothing shows in one place which ones need me (an open permission prompt or question), which could continue on their own, which wait on CI or a reviewer, which sit on another session's PR, and which are done.
bin/claude-sessions(renamed fromsupacode-claude-sessions) now lists sessions fromclaude agents --json, so it covers sessions outside Supacode and background agents too. For each session it shows what an open prompt waits for, the branch and uncommitted file count, the PR status, and, for a stacked PR, the base branch and the session that has it checked out.--jsonadds the transcript's last prompt and reply. The new/sessionsskill reads that output, puts each session in a bucket with a one-line next step, and with--actoffers to tell the sessions that can continue to continue, sending only what I confirm.WAITING comes from the
waitingForfield that Claude Code 2.1.292 and later report while a prompt is open ("permission prompt" or "input needed"). I had planned a Notification hook that wrote state files, but the native field already covers permission prompts and AskUserQuestion. Sessions still running 2.1.289 show as busy until they restart.git pr --jsonprints the PR as one object (url, number, state, head, base, status) and skips the stack lookups, so the script reads the base branch instead of parsing terminal output. Pipedgit prwithout the flag still prints the bare URL.Test plan
bin/lib/test-claude-sessions.shandbin/lib/test-git-pr.shpasswaitingFor"permission prompt" and "input needed"claude-sessionsand compare the table with the live sessions/sessions, then/sessions --actand decline the send