💻 개발/코딩

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
🔒 잠금 해제 후 전체 보기

AI에서 열기

공유하기