2.4 KiB
2.4 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a custom status line binary for Claude Code, written in Go. It replaces shell-based status line scripts with a compiled binary for better performance. The binary reads JSON from stdin (provided by Claude Code) and outputs a formatted status line with ANSI colors.
Build and Development Commands
This project uses Task as its build tool.
# Build (default)
task build # Build with stripped symbols to bin/statusline
# Testing
task test # Run unit tests (go test -v ./...)
task test:cover # Run tests with coverage
task test:fixture # Test with fixture JSON and show timing
# Linting
task lint # Run golangci-lint
task lint:fix # Run golangci-lint with auto-fix
# Other
task run # Build and run with test fixture
task tidy # Run go mod tidy
task install # Install binary to ~/.claude/
task size # Show binary size
task clean # Remove bin/ directory
Architecture
Single-file Go application (main.go) that:
- Reads JSON from stdin - Parses Claude Code's status hook payload
(
StatusInputstruct) - Gathers system state:
- Gitea process status via gopsutil (cross-platform process listing)
- Git repository info via go-git (branch name, dirty state)
- Terminal width via unix ioctl
- Outputs formatted status line with ANSI colors, padding to terminal width
Key functions:
formatContextInfo()- Formats token usage as "Xk/Yk"getGiteaStatus()- Returns green/red dot based on gitea process runninggetGitInfo()- Returns git branch and dirty indicatorstripANSI()- Removes ANSI codes for visible length calculation
JSON Input Format
The binary expects Claude Code's status hook JSON via stdin. See
test/fixture.json for the complete structure. Key fields used:
model.display_name- Model name to displayworkspace.current_dir- Current directory pathcontext_window.context_window_size- Total context window tokenscontext_window.current_usage- Current token usage (may be null)
Dependencies
github.com/go-git/go-git/v6- Pure Go git implementationgithub.com/shirou/gopsutil/v4- Cross-platform process/system infogolang.org/x/sys- Unix system calls (terminal size)