티스토리 뷰

개요
Claude Code의 statusline 기능을 간단히 설정해보았다.
다음과 같이 Claude Code 입력창의 아래에 여러 상태정보들이 들어가는 것이다. 왼쪽부터 프로젝트 폴드명, 브랜치-상태, 모델명, 날짜시간 정보가 나오도록 하였다.
입력창에 /statusline <원하는 프롬프트> 명령으로 간단히 생성할 수도 있지만 색깔과 정보를 조금 더 커스텀하게 작업해보았다.
참고: 정보의 배경색도 바꾸어보기도 했는데 다시 RESET 되지가 않아서 글자색만 바꾸었다.

정보
- 앤트로픽 공식 페이지: https://docs.anthropic.com/ko/docs/claude-code/statusline
- 스크립트 gist: https://gist.github.com/nicewook/69400a054f4ed581e1e75ac6d1102ae0
설정
settings.json
$HOME/.claude/settings.json 파일에는 Claude Code의 여러 설정을 해줄수 있다. 여기에 다음 코드를 추가하자.
{
"statusLine": {
"type": "command",
"command": "$HOME/.claude/script/statusline.sh"
}
}
statusline.sh
$HOME/.claude/script/statusline.sh 파일을 생성하고 위에 공유했던 script gist의 내용을 붙여넣자.
전체 내용은 다음과 같다. 세세한 내용이 궁금하다면 AI의 도움을 받아 설명을 들으면 될 것이다.
#!/bin/bash
# Claude Code용 향상된 상태표시줄 스크립트
# 표시 형식: 프로젝트명 브랜치-상태 모델 YYYY-MM-DD HH:MM:SS
# 표준 입력(stdin)에서 JSON 형식의 입력 데이터를 읽어옴
# Claude Code에서 모델 정보 등을 JSON으로 전달
input=$(cat)
# Git 저장소인지 확인하고 브랜치 이름, 브랜치 상태를 알아냄
if git rev-parse --git-dir >/dev/null 2>&1; then
# 현재 활성화된 브랜치 이름을 가져옴
BRANCH=$(git branch --show-current 2>/dev/null)
# 브랜치 상태 확인: 원격 동기화 > 로컬 변경사항 > 깨끗한 상태
if [[ -n "$BRANCH" ]]; then
# 원격 저장소와의 동기화 상태를 먼저 확인 (최고 우선순위)
if git rev-parse --verify @{upstream} >/dev/null 2>&1; then
# 로컬과 원격 간의 앞서가는/뒤처지는 커밋 수를 계산
ahead_behind=$(git rev-list --count --left-right @{upstream}...HEAD 2>/dev/null)
if [[ -n "$ahead_behind" ]]; then
behind=$(echo "$ahead_behind" | cut -f1) # 뒤처진 커밋 수
ahead=$(echo "$ahead_behind" | cut -f2) # 앞선 커밋 수
if [[ "$ahead" -gt 0 && "$behind" -gt 0 ]]; then
status="↕" # 앞서면서 동시에 뒤처진 상태 (분기됨)
elif [[ "$ahead" -gt 0 ]]; then
status="↑" # 앞선 상태 (푸시 필요)
elif [[ "$behind" -gt 0 ]]; then
status="↓" # 뒤처진 상태 (풀 필요)
fi
fi
fi
# 원격 동기화 문제가 없다면 로컬 변경사항 확인
if [[ -z "$status" ]]; then
if git diff-index --quiet HEAD -- 2>/dev/null; then
status="✓" # 깨끗한 상태 (변경사항 없음)
else
status="*" # 더러운 상태 (로컬 변경사항 있음)
fi
fi
# 브랜치명과 상태를 결합
GIT_INFO="$BRANCH $status"
else
# 브랜치를 찾을 수 없는 경우
GIT_INFO=""
fi
fi
PROJECT_NAME=$(echo "$input" | jq -r '.workspace.project_dir' | xargs basename)
# 현재 날짜와 시간을 YYYY-MM-DD HH:MM:SS 형식으로 가져옴
DATETIME=$(date '+%Y-%m-%d %H:%M:%S')
# JSON 입력에서 모델명을 추출하고 'claude-' 접두사 제거
MODEL=$(echo "$input" | jq -r '.model.display_name')
# 상태표시줄 색상 설정 - 다크모드 가독성에 초점을 맞춘 글자색
# 🎨 팔레트 1 — Bright & Vivid (밝고 선명)
PROJECT_COLOR='\\033[38;5;81m' # 밝은 하늘
BRANCH_COLOR='\\033[38;5;118m' # 형광 라임
MODEL_COLOR='\\033[38;5;226m' # 선명한 노랑
DATETIME_COLOR='\\033[38;5;15m' # 밝은 회색
RESET='\\033[0m'
# 🎨 팔레트 2 — Soft Pastel (파스텔)
# PROJECT_COLOR='\\033[38;5;183m' # 연보라
# BRANCH_COLOR='\\033[38;5;157m' # 연두
# MODEL_COLOR='\\033[38;5;223m' # 파스텔 오렌지
# DATETIME_COLOR='\\033[38;5;15m' # 밝은 회색
# RESET='\\033[0m'
# 상태표시줄 구성: 프로젝트명 ⎇ 브랜치 상태 모델 날짜시간
if [[ -n "$GIT_INFO" ]]; then
printf "%b %s %b ⎇ %s %b %s %b %s%b\\n" \
"$PROJECT_COLOR" "$PROJECT_NAME" \
"$BRANCH_COLOR" "$GIT_INFO" \
"$MODEL_COLOR" "$MODEL" \
"$DATETIME_COLOR" "$DATETIME" \
"$RESET"
else
printf "%b %s %b %s %b %s%b\\n" \
"$PROJECT_COLOR" "$PROJECT_NAME" \
"$MODEL_COLOR" "$MODEL" \
"$DATETIME_COLOR" "$DATETIME" \
"$RESET"
fi
마무리
위와 같이 설정을 마치고 Claude Code를 실행하면 입력창 아래에 상태정보가 보일 것이다.
앤트로픽 문서를 참고하여 좀더 자신에 맞는 설정을 할 수 있겠다.
반응형
'develop-and-AI' 카테고리의 다른 글
| Claude Code 업데이트 오류 - 원인은 중복 설치 (0) | 2025.07.26 |
|---|---|
| Kiro: 소프트웨어 요구사항 표기법 - EARS (0) | 2025.07.21 |
| 옵시디언 - MCP Server (0) | 2025.07.15 |
| 옵시디언 - Git Sync (0) | 2025.07.15 |
| 영수증 프린터로 할 일 관리 - MCP 서버 코드(개선) (0) | 2025.07.15 |
반응형
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- OpenAI
- gocore
- 티스토리챌린지
- middleware
- 체호프
- 독서후기
- solid
- websocket
- 인텔리제이
- backend
- 잡학툰
- API
- Gin
- 오블완
- strange
- agile
- postgres
- intellij
- notion
- clean agile
- github
- 영화
- golang
- 클린 애자일
- ChatGPT
- MCP
- Echo
- bun
- 독서
- go
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함