#!/usr/bin/env bash # Claude Code status line: shows topic, model, and context usage # Reads session JSON from stdin, displays topic from per-session file set -euo pipefail DATA=$(cat) SESSION_ID=$(echo "$DATA" | jq -r '.session_id // empty') MODEL=$(echo "$DATA" | jq -r '.model.display_name // "unknown"') CONTEXT_PCT=$(echo "$DATA" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1) TOPIC="" if [[ -n "$SESSION_ID" ]]; then # Write session ID to a known location so Claude can discover it CWD=$(echo "$DATA" | jq -r '.cwd // empty') if [[ -n "$CWD" ]]; then HASH=$(echo -n "$CWD" | md5sum | cut -d' ' -f1) echo "$SESSION_ID" > "/tmp/claude-session-id-$HASH" # Apply any pending topic that was set before the session ID existed PENDING_FILE="/tmp/claude-pending-topic-$HASH" if [[ -f "$PENDING_FILE" ]]; then TOPIC_DIR="$HOME/.claude/status/$SESSION_ID" mkdir -p "$TOPIC_DIR" mv "$PENDING_FILE" "$TOPIC_DIR/claude-topic.txt" fi fi TOPIC_FILE="$HOME/.claude/status/$SESSION_ID/claude-topic.txt" if [[ -f "$TOPIC_FILE" ]]; then TOPIC=$(cat "$TOPIC_FILE") fi fi if [[ -n "$TOPIC" ]]; then echo "[$MODEL] $TOPIC | ${CONTEXT_PCT}% context" else echo "[$MODEL] ${CONTEXT_PCT}% context" fi