💻 개발/코딩
Claude Code 상태 표시줄 디자인
ANSI 색상 및 디스크 캐시된 git 상태를 사용하여 80자 미만의 가시 영역에 모델 이름, 프로젝트 디렉토리, git 상태, API 효율성을 표시하는 전문 Claude Code 사용자 지정 상태 표시줄 스크립트를 빌드합니다.
미리보기
# 작업: Claude Code용 전문 개발자 상태 표시줄 만들기
## 역할
당신은 Claude Code를 위한 고도로 최적화된 상태 표시줄 스크립트를 만드는 시스템 프로그래머입니다.
## 결과물
Claude Code의 상태 표시줄에 개발자에게 중요한 정보를 표시하는 단일 파일 Python 스크립트 (`~/.claude/statusline.py`).
## 입력 사양
표준 입력에서 JSON을 읽습니다:
```json
{
"model": {"display_name": "Opus|Sonnet|Haiku"},
"workspace": {"current_dir": "/path/to/workspace", "project_dir": "/path/to/project"},
"output_style": {"name": "explanatory|default|concise"},
"cost": {
"total_cost_usd": 0.0,
"total_duration_ms": 0,
"total_api_duration_ms": 0,
"total_lines_added": 0,
"total_lines_removed": 0
}
}
```
## 출력 요구 사항
### 형식
* 표준 출력으로 정확히 한 줄을 인쇄합니다.
* ANSI 256 색상 코드 사용: \033[38;5;Nm
* 스마트 잘림: 가시 텍스트 너비 ≤ 80자 (ANSI 코드는 제한에 포함되지 않음)
* 유니코드 기호: ● (깨끗함), + (추가됨), ~ (수정됨)
* 색상 팔레트: 주황색 208, 파란색 33, 녹색 154, 노란색 229, 빨간색 196, 회색 245
### 정보 구조 (왼쪽에서 오른쪽으로)
1. 모델 이름 (주황색)
2. 프로젝트 디렉토리 기본 이름 (파란색)
3. Git 상태: 브랜치 이름 (녹색), 깨끗함: ● (어두운 회색), 수정됨: ~N (노란색), 추가됨: +N (노란색)
4. 메타데이터 (어두운 회색): 커밋되지 않은 파일 !N (빨간색), API 비율 A:N%
## 기술 제약 조건
### 성능 (중요)
* 실행 시간: < 100ms (300ms마다 호출됨)
* 캐시 영속성: /tmp/claude_statusline_cache.json에 저장 (실행 간에 디스크에 영속되어야 함)
* 캐시 TTL: 캐시 수명이 5초를 초과하거나 .git/index mtime이 변경된 경우에만 Git 파일 수 새로고침
* Git 로직: 브랜치 이름 — .git/HEAD 직접 읽기 (하위 프로세스 없음); 파일 수 — 캐시 만료 시에만 `git status --porcelain` 호출
* 표준 라이브러리만 사용: sys, json, os, pathlib, subprocess, time
### 오류 처리
* JSON 파싱 오류 → 빈 문자열 "" 반환
* 누락된 필드 → 해당 섹션 생략 (충돌 없음)
* Git 디렉토리를 찾을 수 없음 → Git 섹션 전체 생략
* 모든 예외 → 빈 문자열 "" 반환
## 코드 구조
* 단일 파일, < 100줄
* 관심사별 최대 함수 하나 (파싱, git, 형식화)
* 모든 함수에 대한 타입 힌트 필수
* 각 함수에 대한 독스트링
## 통합 단계
1. 스크립트를 ~/.claude/statusline.py에 저장합니다.
2. chmod +x ~/.claude/statusline.py를 실행합니다.
3. ~/.claude/settings.json에 추가합니다:
```json
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.py",
"padding": 0
}
}
```
4. 테스트: echo '{"model":{"display_name":"Test"},"workspace":{"current_dir":"/tmp"}}' | ~/.claude/statusline.py
🔒 잠금 해제 후 전체 보기