Claude Code ist mein tägliches Hauptwerkzeug zum KI-gestützten Coden. Out of the Box funktioniert es schon gut, aber ein paar Dinge habe ich angepasst.
Shell alias
Ich bin zu faul, jedes mal den kompletten Command auszuschreiben. Deswegen habe ich meiner .zshrc config folgenden Alias hinzugefügt:
alias cc='claude --dangerously-skip-permissions'
Jetzt muss ich also nur noch cc tippen, um Claude Code zu starten.
Mein persönliches CLAUDE.md
Claude Code erlaubt neben dem CLAUDE.md im Projekt auch eine globale Datei unter ~/.claude/CLAUDE.md. Die wird immer geladen, egal in welchem Repo ich gerade bin. Als Freelancer springe ich ständig zwischen Tech-Stacks, da lohnt es sich, stackübergreifende Dinge zentral zu hinterlegen. Bei mir steht dort zum Beispiel, dass Python-Projekte uv und ruff nutzen sollen, oder dass “discuss” und “show me” bedeuten: erklären, nicht coden.
Eigenes statusline-command.sh
Claude Code erlaubt es, die Statusline am unteren Rand per Shellskript anzupassen. Das Skript kann man natürlich von Claude Code schreiben lassen, aber ich habe es einfach aus diesem Artikel kopiert:
#!/bin/bash
input=$(cat)
# Extract data from JSON
cwd=$(echo "$input" | jq -r '.workspace.current_dir')
input_tokens=$(echo "$input" | jq -r '.context_window.current_usage.input_tokens // 0')
cache_creation=$(echo "$input" | jq -r '.context_window.current_usage.cache_creation_input_tokens // 0')
cache_read=$(echo "$input" | jq -r '.context_window.current_usage.cache_read_input_tokens // 0')
context_window_size=$(echo "$input" | jq -r '.context_window.context_window_size // empty')
current_dir=$(basename "$cwd")
# Git branch + dirty status
git_info=""
if git -C "$cwd" rev-parse --git-dir > /dev/null 2>&1; then
branch=$(git -C "$cwd" --no-optional-locks branch --show-current 2>/dev/null)
if [ -n "$branch" ]; then
if [ -n "$(git -C "$cwd" --no-optional-locks status --porcelain 2>/dev/null)" ]; then
git_info=" git:($branch)✗"
else
git_info=" git:($branch)"
fi
fi
fi
# Context usage with color coding
context_info=""
ctx_color=""
total_input=$((input_tokens + cache_creation + cache_read))
if [ "$total_input" -gt 0 ] && [ -n "$context_window_size" ] && [ "$context_window_size" -gt 0 ]; then
input_k=$(printf "%.0f" "$(echo "$total_input / 1000" | bc -l)")
window_k=$(printf "%.0f" "$(echo "$context_window_size / 1000" | bc -l)")
percentage=$(( (total_input * 100 + context_window_size / 2) / context_window_size ))
context_info=" ctx:${input_k}k/${window_k}k (${percentage}%)"
if [ "$percentage" -lt 50 ]; then ctx_color="\\033[32m"
elif [ "$percentage" -lt 80 ]; then ctx_color="\\033[33m"
else ctx_color="\\033[31m"; fi
fi
printf "\\033[36m%s\\033[0m" "$current_dir"
[ -n "$git_info" ] && printf "\\033[34m%s\\033[0m" "$git_info"
[ -n "$context_info" ] && printf "${ctx_color}%s\\033[0m" "$context_info"
Es zeigt mir das Repo, die Branch und wie viel Context ich verbraucht habe.

Das war’s auch schon
Ich würde sagen, dass mein Setup unspektakulär ist, aber mit den meisten Defaults komme ich gut klar. Und außerdem will ich mich gar nicht zu sehr auf ein Tool festlegen, da nächsten Monat wahrscheinlich eh wieder ein anderer Anbieter das beste Produkt hat und wir alle wechseln müssen…