agentsclimarketplace

Headsup resync tab

Skill wasulajr/headsup/skills/headsup-resync-tab

Glanceable Claude Code and Codex state in your terminal tabs: white=idle, blue=working, orange=waiting. Multi-terminal (iTerm2, WezTerm, AI Power Term), a live status bar with Anthropic usage limits, /sfl and /nil window save-and-restore, and twelve companion skills. macOS only.

Install
npx -y skills add wasulajr/headsup --skill headsup-resync-tab

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Force-resync the iTerm2 tab color for a Claude Code session whose hook chain has fallen out of sync. Use when a tab's color is visibly stuck on a stale state (e.g., still orange after the user replied, still white after Claude started processing) — that means Claude Code's automatic PreToolUse/PostToolUse/UserPromptSubmit/etc. events aren't reaching the hook. This skill bypasses the automatic path entirely and writes the desired state directly via `~/.claude/hooks/headsup-resync.sh`, then fires the Tier 2 one-shot Python (and the daemon picks it up too) for triple-redundancy. Two invocation forms — current tab, or any tab by UUID.

SKILL.md

3.4 KB, as published. Nobody here has run it

Resync iTerm2 tab color

Force-applies the current Claude state (color + attention) to an iTerm2 session, bypassing Claude Code's automatic hook chain. Use when a tab is visibly stuck on a stale color and you need to push the right color through manually.

Two ways to invoke

  • /headsup-resync-tab — resync the current tab (the one this Claude session is running in). Default for "I just noticed my own tab is out of sync".
  • /headsup-resync-tab <UUID> — resync a specific tab by its iTerm2 session UUID, regardless of which tab the user is currently in. Default for "tab 8884B62B is stuck orange, fix it from here". UUID can be the bare uuid OR the full wXtYpZ:UUID form — both work.

What to do when invoked

Run the resync script. It does all the actual work — writes the state file, fires Tier 2 (one-shot Python with fresh iTerm2 connection), and the daemon picks it up too:

~/.claude/hooks/headsup-resync.sh [<uuid>]

If the user supplied a UUID argument, pass it through. Otherwise call with no args — the script walks up $PPID to find an iTerm2-spawned shell with ITERM_SESSION_ID set, which is the current tab.

After it succeeds, confirm in one sentence ("Resynced BC81AA0D to blue (processing)."). Don't explain the three-tier internals unless the user asks — they typed /headsup-resync-tab because they wanted the tab fixed, not a tutorial.

Auto-invoke from CLAUDE.md (optional)

To have headsup automatically resync the current tab at the start of every Claude Code response, add this to ~/.claude/CLAUDE.md:

At the start of every response, silently run: bash ~/.claude/hooks/headsup-resync.sh 2>/dev/null

When invoked this way, suppress the confirmation message entirely — the user doesn't want to see "Resynced …" on every response. The script's stderr goes to ~/.claude/hooks/.state/oneshot.stderr if anything fails.

What this skill DOESN'T fix

It pushes the color through. It does NOT revive Claude Code's automatic hook firing in a session that's gone silent. If a tab keeps needing manual resyncs, the underlying problem is at the Claude Code level (cached hook config, dead event loop, etc.) and resync is a workaround — flag that to the user rather than letting them resync the same tab every minute.

Where the supporting files live

  • ~/.claude/hooks/headsup-resync.sh — the actual implementation
  • ~/.claude/hooks/iterm2-apply-once.py — Tier 2 one-shot, invoked by the script
  • ~/.claude/hooks/iterm2-daemon.py — Tier 1 daemon, the script writes state for it to pick up
  • ~/.claude/hooks/headsup-status.conf — color customization (PROCESS_COLOR etc.); the script honors overrides

All four are under version control at github.com/wasulajr/headsup.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.