Claude Code Skill: реальное время и трекинг сессий
Как skill для Claude Code решает проблему отсутствия реального времени и трекинга сессий — разбор архитектуры, установка одной командой, open source.
Claude Code Skill: реальное время и трекинг сессий за одну команду
Представьте: вы отдаёте Claude Code задачу отрефакторить модуль и уходите на кофе. Через час возвращаетесь — и не можете понять, когда именно он начал работу, сколько времени прошло и в рамках какой сессии всё это происходит. Claude просто не знает, который час.
Эта, казалось бы, мелкая проблема превращается в настоящий раздражитель при серьёзной ежедневной работе с агентом. Именно её решает open-source skill для Claude Code, который добавляет агенту понимание реального местного времени и трекинг сессий — и устанавливается буквально одной командой.
В этой статье разберём: почему Claude Code «слеп» ко времени, как работает механизм Skills в архитектуре инструмента, что именно делает этот skill, и как его интегрировать в свой рабочий процесс.
Почему Claude Code не знает, который час
Claud Code — это не просто чат-бот. Это не chatbot и не autocomplete. По сути это бесконечный цикл в терминале — агент получает задачу, выбирает инструмент, выполняет его, смотрит на результат и определяет следующий шаг. Продолжает до завершения или до момента, когда нужна помощь пользователя.
Однако у этого агента есть принципиальное ограничение: он не имеет доступа к системным часам. Языковая модель в основе Claude Code — это статичный артефакт обучения с датой среза знаний. Когда агент работает над задачей в 23:47 по московскому времени, он об этом попросту не знает.
Почему это важно на практике?
- Агент не может корректно логировать время начала и конца задач
- Временны́е метки в комментариях к коду или документации — неверные
- Невозможно связать работу агента с реальными рабочими сессиями разработчика
- Дебаг сложных задач без временно́го контекста превращается в головоломку
Архитектура расширений Claude Code: Skills, Hooks и Plugins
Прежде чем говорить о конкретном skill, нужно понять, на чём он построен. Слой расширений Claude Code включает: MCP для подключения внешних сервисов (баз данных, GitHub, Sentry); Hooks — гарантированное выполнение shell-команд вне зависимости от поведения модели; Skills — встроенная доменная экспертиза, которую Claude применяет автоматически; Plugins — пакеты всего перечисленного для дистрибуции.
graph TD
A[Claude Code Core] --> B[Extension Layer]
B --> C[Skills]
B --> D[Hooks]
B --> E[MCP Servers]
B --> F[Plugins]
C --> G[Markdown-файл в ~/.claude/skills/]
D --> H[Shell-скрипты на события]
E --> I[JSON-RPC процессы]
F --> J[Бандл Skills + Hooks + MCP]
G --> K[Авто-загрузка при релевантном контексте]
H --> L[PreToolUse / PostToolUse / UserPromptSubmit]
Что такое Skill в Claude Code
Skill — это .md-файл в ~/.claude/skills/. Никакого SDK, никакого API, никакого шага сборки. Вы пишете инструкции в markdown, и Claude Code следует им, когда они релевантны.
Skill — это markdown-файл по пути .claude/skills/<name>/SKILL.md с YAML-фронтматтером. Он автоматически обнаруживается и загружается прогрессивно — только когда это актуально.
По сути, skill — это способ «научить» агента вести себя определённым образом в конкретном контексте. Это YAML-сконфигурированные поведения, расширяющие Claude Code доменно-специфическими знаниями. Думайте о них как о плагинах, которые обучают Claude тому, как работает ваша команда.
Чем Skills отличаются от Hooks
Используйте hooks для действий, которые должны происходить каждый раз без исключений. Hooks запускают скрипты автоматически в определённых точках рабочего процесса Claude. В отличие от инструкций CLAUDE.md, которые носят рекомендательный характер, hooks детерминированы и гарантируют выполнение действия.
| Механизм | Формат | Когда загружается | Гарантия выполнения |
|---|---|---|---|
| CLAUDE.md | Markdown | Каждая сессия | Нет (инструкция) |
| Skill | Markdown + YAML | По релевантности | Нет (инструкция) |
| Hook | Shell-скрипт | По событию | Да (детерминировано) |
| MCP | Процесс JSON-RPC | Постоянно | Да (вызов инструмента) |
| Plugin | Бандл всего | При установке | Зависит от содержимого |
Проблема, которую решает skill: время и контекст сессии
Основная идея skill для локального времени и трекинга сессий проста до элегантности: при запуске каждой сессии автоматически инжектировать в контекст агента текущее местное время и метаданные текущей сессии.
Вот что происходит без этого skill:
Пользователь: Создай changelog с временными метками.
Claude: // Updated: [date unknown]
// Refactored on: [timestamp unavailable]
И что происходит после его установки:
Пользователь: Создай changelog с временными метками.
Claude: // Updated: 2026-05-04 14:32 MSK
// Session: #A4F2 | Duration: 47min | Tokens: ~12k
Разница кардинальная — особенно при работе с задачами, где порядок операций и их время имеют значение.
Как технически реализован skill
Скилл использует механизм hooks — конкретно событие UserPromptSubmit — чтобы при каждом новом промпте выполнять shell-команду, получающую системное время, и инжектировать результат в контекст перед тем, как модель начнёт обработку.
#!/bin/bash
# .claude/hooks/inject-time.sh
# Получаем время в нужном формате
LOCAL_TIME=$(date '+%Y-%m-%d %H:%M:%S %Z')
SESSION_START=$(cat ~/.claude/session_start 2>/dev/null || echo $LOCAL_TIME)
# Считаем длительность сессии
START_EPOCH=$(date -d "$SESSION_START" +%s 2>/dev/null || date -j -f "%Y-%m-%d %H:%M:%S" "$SESSION_START" +%s)
CURRENT_EPOCH=$(date +%s)
DURATION=$(( (CURRENT_EPOCH - START_EPOCH) / 60 ))
# Формируем JSON-ответ для Claude Code
jq -n \
--arg time "$LOCAL_TIME" \
--arg duration "${DURATION}min" \
'{system_context: {local_time: $time, session_duration: $duration}}'
А вот как выглядит сам SKILL.md — файл с инструкциями для модели:
---
name: local-time-context
description: >
Provides Claude with real local time and session tracking.
Always use when creating timestamps, logs, changelogs,
or when the user asks about time.
triggers:
- timestamp
- time
- session
- changelog
- log
---
## Context Awareness
At the start of each response, you have access to:
- `system_context.local_time` — current local time of the user's machine
- `system_context.session_duration` — how long this session has been active
Always use these values when:
1. Creating timestamps in code, comments, or documentation
2. Answering questions about "when" something happened
3. Generating changelogs, commit messages, or session summaries
4. Logging task start/end times
Never hallucinate timestamps. Always use provided system_context.
Установка: одна команда
Одним из главных преимуществ экосистемы Claude Code является то, что marketplace — это GitHub-репозиторий, который распространяет множество плагинов в одном реестре. Скопируйте команду установки со страницы нужного инструмента и выполните её в терминале. Большинство устанавливается одной командой.
Для skill реального времени и трекинга сессий установка выглядит так:
claude plugin marketplace add https://github.com/your-skill-author/local-time-skill.git
Или через прямую установку плагина:
claude plugin install local-time-context
Аналогичным образом устанавливается, например, WakaTime-плагин для трекинга времени: установка через claude plugin marketplace add https://github.com/wakatime/claude-code-wakatime.git — одна команда, никакой ручной конфигурации.
Что происходит при установке
После выполнения одной команды:
- Claude Code скачивает репозиторий в
~/.claude/plugins/cache/ - Регистрирует hooks из папки
hooks/плагина - Копирует skill-файлы в
~/.claude/skills/ - При следующем запуске агента — skill уже активен
# Проверка что skill установлен
ls ~/.claude/skills/
# local-time-context/
# SKILL.md
# Проверка что hook зарегистрирован
cat ~/.claude/settings.json | jq '.hooks'
# {
# "UserPromptSubmit": [
# { "type": "command", "command": "~/.claude/hooks/inject-time.sh" }
# ]
# }
Экосистема доступных инструментов мониторинга
По состоянию на начало мая 2026 года в экосистеме насчитывается более 4200 skills и 770+ MCP-серверов. Среди решений для трекинга времени и сессий — несколько зрелых проектов:
Claude-Code-Usage-Monitor — красивый real-time инструмент для мониторинга токенов Claude AI с продвинутой аналитикой, ML-предсказаниями и Rich UI. Позволяет отслеживать потребление токенов, скорость расхода и стоимость, с умными предсказаниями о лимитах сессий.
ccusage предлагает трекинг стоимости в USD по дням/месяцам/сессиям, поддержку кэш-токенов, офлайн-режим, встроенную интеграцию MCP и поддержку множества часовых поясов.
Трекинг сессий: как это работает изнутри
Помимо времени, skill решает вторую задачу — трекинг сессий. Здесь важно понять, что Claude Code уже сохраняет подробные логи локально.
Claude Code записывает детальные логи использования локально — количество токенов, модели, сессии, проекты — вне зависимости от вашего тарифного плана. Dashboard читает эти логи и превращает их в графики и оценки стоимости.
Claude Code пишет по одному JSONL-файлу на сессию в ~/.claude/projects/. Skill для трекинга сессий читает эти файлы и предоставляет агенту сводку прямо в контексте:
{
"session_context": {
"session_id": "sess_A4F2x9",
"started_at": "2026-05-04T14:00:00+03:00",
"duration_minutes": 47,
"tokens_used": 12480,
"tokens_remaining_estimate": 31520,
"session_expires_at": "2026-05-04T19:00:00+03:00",
"local_time": "2026-05-04T14:47:23+03:00"
}
}
Цикл работы skill
sequenceDiagram
participant U as Пользователь
participant CC as Claude Code
participant H as Hook (inject-time.sh)
participant S as Skill (SKILL.md)
participant M as Модель Claude
U->>CC: Отправляет промпт
CC->>H: Событие UserPromptSubmit
H->>H: date, считывает ~/.claude/projects/*.jsonl
H-->>CC: JSON с local_time + session_context
CC->>S: Загружает skill если триггер совпал
CC->>M: Промпт + system_context + skill
M-->>U: Ответ с реальными временными метками
Ключевой момент: hooks — это скрипты, срабатывающие по событиям в Claude Code. В отличие от промптов, полагающихся на интерпретацию модели, hooks запускают детерминированный код, неспособный к галлюцинациям. Именно поэтому время всегда будет точным — оно берётся из системных часов, а не «угадывается» моделью.
Без skill:
Пользователь: Залогируй начало рефакторинга.
Claude: # Refactoring started at [TIME NOT AVAILABLE]
Со skill:
Пользователь: Залогируй начало рефакторинга.
Claude: # Refactoring started at 2026-05-04 14:47 MSK
# Session: A4F2x9 | ~47min active | ~31.5k tokens left
Сравнение подходов к трекингу времени и сессий
Существует несколько способов добавить временно́й контекст и трекинг в Claude Code. Сравним их:
| Подход | Установка | Точность | Контекст в агенте | Open Source |
|---|---|---|---|---|
| Skill + Hook | 1 команда | Точная (системное время) | Да, нативно | Да |
| CLAUDE.md вручную | Ручная правка | Нет (статичный текст) | Частично | N/A |
| ccusage CLI | npx ccusage | Точная (из логов) | Нет (внешний дашборд) | Да |
| Claude-Code-Usage-Monitor | pip install | Точная | Нет (отдельный терминал) | Да |
| WakaTime Plugin | 1 команда | Точная | Нет (внешний сервис) | Да |
| OpenTelemetry стек | Docker Compose | Точная | Нет (отдельный стек) | Да |
Видно, что Skill + Hook — единственный подход, который даёт точное время прямо внутри контекста агента, а не в отдельном дашборде. Это принципиальное отличие: агент сам знает время, а не вы смотрите его в другом окне.
Практика: пишем собственный skill для времени
Если хотите создать аналогичный skill самостоятельно, вот минимальная рабочая реализация:
Шаг 1. Создайте директорию и skill-файл:
mkdir -p ~/.claude/skills/local-time
cat > ~/.claude/skills/local-time/SKILL.md << 'EOF'
---
name: local-time
description: Inject real local time into Claude's context for timestamps and logging.
triggers: [time, timestamp, log, changelog, date, session]
---
Use `system_context.local_time` for all timestamps.
Never guess or approximate the current time.
Always reference session_context for session duration and token estimates.
EOF
Шаг 2. Создайте hook-скрипт:
mkdir -p ~/.claude/hooks
cat > ~/.claude/hooks/time-inject.sh << 'EOF'
#!/bin/bash
TIME=$(date '+%Y-%m-%d %H:%M:%S %Z')
TZ_OFFSET=$(date '+%z')
jq -n --arg t "$TIME" --arg tz "$TZ_OFFSET" \
'{system_context: {local_time: $t, timezone_offset: $tz}}'
EOF
chmod +x ~/.claude/hooks/time-inject.sh
Шаг 3. Зарегистрируйте hook в настройках:
# Добавьте в ~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{
"type": "command",
"command": "~/.claude/hooks/time-inject.sh"
}
]
}
}
Всего три шага — и агент получает точное время при каждом промпте.
Skills — это знание, Hooks — это гарантия. Именно их комбинация превращает Claude Code из умного собеседника в надёжный инструмент производства.
Заключение
Проблема отсутствия реального времени у Claude Code — это не баг, это архитектурная особенность языковых моделей. Но экосистема Skills и Hooks позволяет элегантно закрыть этот пробел без сложной инфраструктуры.
Главные выводы:
Claude Code имеет мощную систему расширений — hooks для lifecycle-автоматизации, subagents для параллельного делегирования задач и skills для переиспользуемых шаблонов поведения.
Skills — это markdown-файлы, доступные без SDK и сборки. В отличие от содержимого CLAUDE.md, тело skill загружается только при вызове, поэтому длинные референсные материалы почти ничего не стоят, пока не нужны.
Hooks детерминированы — они не зависят от того, поняла ли модель инструкцию. Системное время из
dateвсегда точное.Экосистема огромна: уже более 4200 skills и 770+ MCP-серверов доступны для установки. Большинство устанавливается одной командой.
Локальные логи уже существуют: Claude Code пишет локальные логи использования вне зависимости от типа подписки. Этот инструмент читает их и даёт видимость, которую UI Anthropic не предоставляет.
Если вы работаете с Claude Code ежедневно — добавьте skill реального времени. Это займёт меньше пяти минут, а разница в удобстве работы с агентом ощутима сразу.
Источники
- Claude-Code-Usage-Monitor: Real-time Claude Code usage monitor
- ccusage: CLI tool for analyzing Claude Code usage from local JSONL files
- Best practices for Claude Code
- Understanding Claude Code's Full Stack: MCP, Skills, Subagents, and Hooks
- Claude Code CLI: The Complete Guide — Hooks, MCP, Skills
- Our Claude Code Setup: 30 Skills, MCPs, and Self-Learning Hooks
- My Claude Code Setup After 4 Months of Daily Use (2026)
- Here's a Free Claude Plugin to Easily Keep Track of Your Claude Code Usage