피드로 돌아가기
Build a Custom Claude Code Statusline (with Rate Limits and a Bell on Done)
Dev.toDev.to
DevOps

Bash/jq 기반 커스텀 Statusline 구축을 통한 LLM 리소스 가시성 확보

Build a Custom Claude Code Statusline (with Rate Limits and a Bell on Done)

Francesco Di Donato2026년 5월 7일9beginner

Context

Claude Code의 기본 Statusline은 모델명과 경로 등 최소 정보만 제공하여 Context Window 사용량 및 Rate Limit 임계치 파악이 불가능한 한계 존재. TUI 내부 렌더링 구조로 인해 일반적인 제어 문자를 통한 알림 구현에 제약이 있는 상황.

Technical Solution

  • stdin으로 전달되는 JSON Payload를 jq로 파싱하여 모델명, Context 사용량, Git 브랜치, Rate Limit 잔여 시간을 실시간 추출하는 파이프라인 설계
  • API 응답 지연이나 /clear 명령 직후 발생하는 데이터 부재 상황을 처리하기 위한 Null 처리 및 기본값 할당 로직 구현
  • TUI 렌더링 엔진이 stdout을 캡처하여 ASCII Bell(\a)이 무시되는 문제를 분석하고, 실제 쉘 환경에서 실행되는 Stop Hook으로 알림 로직 분리
  • macOS afplay 및 Linux paplay를 백그라운드 프로세스(&)로 실행하여 훅 실행 시의 메인 루프 블로킹 방지
  • git --no-optional-locks 옵션을 적용하여 동시 Git 작업 발생 시의 락 충돌 방지 및 상태 표시 안정성 확보

- TUI 기반 도구의 Statusline 커스텀 시 stdin JSON 구조를 먼저 분석하여 필수 필드 식별 - UI 렌더링 루프와 시스템 이벤트 알림(Notification)의 실행 컨텍스트 분리 필요성 검토 - 외부 쉘 스크립트 호출 시 $HOME 확장 문제 및 절대 경로 설정 여부 확인 - 런타임 성능 저하 방지를 위해 무거운 명령어는 백그라운드 실행 또는 비동기 처리 적용

원문 읽기