session-costlisted
Install: claude install-skill dewil/claude-toolkit
# session-cost
Считает токены сессии Claude Code по ее транскрипту, программно и без внешних API. `/usage` дает только % лимита аккаунта, `/cost` - ручной вызов; этот скилл дает сырые токены по типам, пригодные для сметы, отчета и автоматизации.
## Как работает
Claude Code пишет каждую сессию в `~/.claude/projects/<encoded-project>/<session-id>.jsonl`. У каждого assistant-сообщения есть `message.usage` с полями `input_tokens`, `output_tokens`, `cache_creation_input_tokens` (запись кэша), `cache_read_input_tokens` (чтение кэша). Скрипт суммирует их за сессию.
Имя папки проекта - абсолютный путь рабочей папки, где каждый не-alnum символ заменен на `-` (`/Users/x/My.Proj` -> `-Users-x-My-Proj`).
## Запуск
```bash
python3 scripts/session-cost.py # текущая сессия (env CLAUDE_CODE_SESSION_ID), проект по CWD
python3 scripts/session-cost.py --session <id> # конкретная сессия
python3 scripts/session-cost.py --file <path.jsonl>
python3 scripts/session-cost.py --project <dir> --all-sessions
python3 scripts/session-cost.py --json # машиночитаемо
```
## Что знать про цифры (важно для честной сметы)
- **Текущая сессия** определяется по env `CLAUDE_CODE_SESSION_ID` (его ставит Claude Code) - надежно. Без него - свежайшая по mtime, а при **параллельных сессиях** в одном проекте это может оказаться ЧУЖАЯ сессия. Тогда указывай `--session` явно.
- **`cache_read` обычно доминирует** (десятки млн) - это перечитывание постоянного контекста (системный промпт, прав