Installation
Install via CLI
npx @vector-labs/skills add setup-statusline-cost Or target a specific tool
npx @vector-labs/skills add setup-statusline-cost --tool cursor Skill Files (2)
SKILL.md 2.9 KB
---
name: setup-statusline-cost
description: Configura statusline no Claude Code que exibe custo da sessao, modelo, duracao, tokens e uso de contexto em tempo real. Use quando o usuario quiser monitorar custo ou configurar a statusline.
license: Apache-2.0
compatibility: claude-code
disable-model-invocation: true
allowed-tools: Bash Read Edit Write AskUserQuestion
metadata:
author: vector-labs-payments
version: "1.0"
---
# Setup Statusline de Custo
Configura uma statusline no rodape do Claude Code que exibe metricas de custo e uso em tempo real.
Formato exibido:
```
Opus 4.6 | $0.42 | 3m 12s | in 45.2k / out 8.7k | 32% ctx
```
---
## FASE 0: PRE-REQUISITOS
### 0.1 Verificar jq
```bash
command -v jq >/dev/null 2>&1 && echo "OK" || echo "MISSING"
```
**Se MISSING:**
- Informe: "O comando `jq` e necessario. Instale com: `brew install jq` (macOS) ou `apt install jq` (Linux)."
- **PARE a execucao.**
### 0.2 Verificar se ja existe statusline configurada
```bash
jq -r '.statusLine // empty' "$HOME/.claude/settings.json" 2>/dev/null
```
**Se ja existe**, pergunte ao usuario:
- **Pergunta:** "Ja existe uma statusline configurada. Deseja substituir?"
- **Opcoes:**
- `Sim` - Substituir pela statusline de custo
- `Nao` - Cancelar
- **Se `Nao`:** **PARE a execucao.**
---
## FASE 1: INSTALAR SCRIPT
### 1.1 Copiar script para ~/.claude/
Leia o conteudo do arquivo `scripts/statusline.sh` que esta nesta skill e escreva em `$HOME/.claude/statusline.sh`.
### 1.2 Tornar executavel
```bash
chmod +x "$HOME/.claude/statusline.sh"
```
---
## FASE 2: CONFIGURAR SETTINGS
### 2.1 Criar settings.json se nao existir
```bash
mkdir -p "$HOME/.claude"
[ -f "$HOME/.claude/settings.json" ] || echo '{}' > "$HOME/.claude/settings.json"
```
### 2.2 Adicionar statusLine (merge nao-destrutivo)
Use jq para fazer merge preservando TODAS as chaves existentes:
```bash
TEMP_FILE=$(mktemp)
jq '.statusLine = {"type": "command", "command": "~/.claude/statusline.sh"}' "$HOME/.claude/settings.json" > "$TEMP_FILE" && mv "$TEMP_FILE" "$HOME/.claude/settings.json"
```
---
## FASE 3: CONFIRMAR
Exiba esta mensagem EXATA:
```
Statusline de custo configurada!
Arquivo instalado:
~/.claude/statusline.sh
Configuracao adicionada em:
~/.claude/settings.json โ statusLine
Reinicie o Claude Code para ativar.
Saia com /exit ou Ctrl+C e inicie novamente com `claude`.
Formato exibido:
Opus 4.6 | $0.42 | 3m 12s | in 45.2k / out 8.7k | 32% ctx
Cores do contexto:
Verde โ < 50%
Amarelo โ 50-74%
Vermelho โ >= 75%
Para personalizar, edite ~/.claude/statusline.sh
```
**PARE a execucao apos exibir esta mensagem.**
---
## NOTAS PARA O AGENTE
1. **Nao sobrescreva** configuracoes existentes no settings.json - use jq merge
2. **Se o usuario cancelar** em qualquer fase, pare e nao altere nada
3. **Use SEMPRE `$HOME`** ao inves de `~` em variaveis bash para evitar problemas de expansao
4. **SEMPRE informe sobre o restart** ao final
scripts/
statusline.sh 1.7 KB
#!/bin/bash
# Claude Code statusline โ uses pre-calculated fields for accuracy
# Docs: https://code.claude.com/docs/en/statusline
export LC_ALL=C
input=$(cat)
# Extract pre-calculated fields (accurate, no manual math needed)
MODEL=$(echo "$input" | jq -r '.model.display_name // "Unknown"')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
IN_TOK=$(echo "$input" | jq -r '.context_window.total_input_tokens // 0')
OUT_TOK=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
# Format token counts with k suffix for readability
format_tokens() {
local n=$1
if [ "$n" -ge 1000 ]; then
printf "%.1fk" "$(awk -v n="$n" 'BEGIN { printf "%.1f", n / 1000 }')"
else
printf "%d" "$n"
fi
}
IN_TOK_FMT=$(format_tokens "$IN_TOK")
OUT_TOK_FMT=$(format_tokens "$OUT_TOK")
# Format cost
COST_FMT=$(printf '$%.2f' "$COST")
# Format duration
DURATION_SEC=$((DURATION_MS / 1000))
MINS=$((DURATION_SEC / 60))
SECS=$((DURATION_SEC % 60))
if [ "$MINS" -gt 59 ]; then
HOURS=$((MINS / 60))
MINS=$((MINS % 60))
TIME_FMT="${HOURS}h ${MINS}m"
else
TIME_FMT="${MINS}m ${SECS}s"
fi
# Color context by usage threshold
GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'
DIM='\033[2m'; RESET='\033[0m'
if [ "$PCT" -ge 75 ]; then CTX_COLOR="$RED"
elif [ "$PCT" -ge 50 ]; then CTX_COLOR="$YELLOW"
else CTX_COLOR="$GREEN"; fi
printf "${DIM}%s${RESET} | ${DIM}%s${RESET} | ${DIM}%s${RESET} | ${DIM}in %s / out %s${RESET} | ${CTX_COLOR}%s%% ctx${RESET}\n" \
"$MODEL" "$COST_FMT" "$TIME_FMT" "$IN_TOK_FMT" "$OUT_TOK_FMT" "$PCT"
License (Apache-2.0)
Apache-2.0
Source: vlabsai/skills-hub
View full license text
Licensed under Apache-2.0