Health Body — метрики тела

SkillMonitoring & ops

Body metrics: weight, blood pressure, BMI, body composition. Trends and correlations with WHOOP. Triggers: «вес», «давление», «BMI», «взвесился», «измерил давление», «body metrics»

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Health Body — метрики тела skill

What this skill tells your AI

The instructions your AI receives, as published by alxyrgin/health-os in .claude/skills/body/SKILL.md and read by ahel’s review.

Профиль. До чтения и записи определи активный профиль по .claude/shared/profile-resolution.md. Короткий путь Data/X в этом файле означает Data/profiles/<активный>/X — буквально по нему писать нельзя. Перед записью назови, в чей профиль она идёт.

Назначение

Фиксация и анализ метрик тела: вес, давление, BMI, состав тела. Тренды и корреляции.

Неотложные пороги — проверяются первыми

До записи и любого анализа сверься с Блоком 3 файла .claude/shared/critical-values.md.

ПоказательПорогДействие
Артериальное давление≥ 180/120Гипертонический криз. Это неотложное состояние, а не «повышенное давление». Вывести первым сообщением, рекомендовать вызвать скорую при боли в груди, одышке, нарушении зрения, речи или асимметрии лица
Артериальное давление< 90/60 с обмороком, спутанностью или холодным потомНеотложно
ЧСС в покое< 40 или > 150Неотложно
Веспотеря > 5% массы за месяц без намеренияК врачу

При срабатывании — записать алерт с severity: "critical" и не продолжать обычный workflow, пока не выведено предупреждение.

Workflow

Добавление измерения

Спросить (все поля опциональны, кроме веса):

  • вес (кг)
  • давление (систолическое/диастолическое)
  • пульс
  • процент жира (если есть весы с анализатором)
  • мышечная масса
  • обхват талии
  • заметки

Структура Data/body-metrics.csv — 11 колонок:

date,weight_kg,height_cm,bmi,body_fat_pct,muscle_mass_kg,systolic,diastolic,heart_rate,waist_cm,notes

→ Добавить строку:

2026-03-21,82.5,191,22.6,18.2,,120,80,65,,"утро, натощак"

Правила записи:

  • Заметку с запятой обязательно брать в двойные кавычки — иначе строка получит лишнее поле и сломает разбор всего файла
  • height_cm заполняется всегда, значение берётся из Data/profile.jsonbasic.height_cm
  • BMI рассчитывается как вес / (рост в метрах)², округление до одного знака
  • Пустое поле оставляется пустым, пробел не ставится
  • Дата в ISO 8601, не из будущего
  • При существующей записи за ту же дату — спросить, заменить или добавить второе измерение

Проверка правдоподобия перед записью: вес 30–250 кг, систолическое 70–250, диастолическое 40–150, пульс 30–220. При выходе за диапазон — переспросить, возможна опечатка.

Просмотр трендов

  1. Прочитать Data/body-metrics.csv
  2. Показать последние 10 измерений:
| Дата | Вес | BMI | Жир% | Давление | Пульс |
|------|-----|-----|------|----------|-------|
  1. Тренд за период:
📊 Вес за последний месяц:
  Начало: 84.0 кг → Сейчас: 82.5 кг (−1.5 кг)
  Min: 82.0 | Max: 84.5 | Avg: 83.2
  1. Целевой вес берётся из Data/goals/YYYY.jsonfitness_target.target_weight_kg. Если значение null — блок цели не показывать, вместо него предложить задать цель:
🎯 Цель: 80 кг | Осталось: 2.5 кг | Темп: −1.5 кг/мес → ~2 мес

Данные InBody

Измерения состава тела с InBody лежат в Data/labs/*_inbody.json и частично продублированы в CSV вручную.

Владелец записи — Data/labs/, CSV только отражает сводные значения. При расхождении верны данные InBody. Не создавать новую CSV-строку из InBody, если строка за эту дату уже есть.

Корреляции с WHOOP

  1. Подтянуть WHOOP за период через MCP-сервер whoop. Если сервер недоступен — сказать об этом и продолжить без корреляций
  2. Показать связь веса с recovery, strain, sleep

Корреляция на выборке из одного человека — уровень доказательности D.

Контекст жизни

При интерпретации динамики веса и давления учитывать (Блок 4 холистической рамки):

  • фазу питания из Data/profile.jsonlifestyle.nutrition — дефицит или профицит объясняет большинство изменений веса
  • вещества: кальян, кофеин, алкоголь — прямое влияние на давление и пульс
  • нагрузку и восстановление

Алерты

Записывать в Cache/alerts/YYYY-MM-DD.json по схеме из Блока 5 critical-values.md.

УсловиеSeverity
Давление ≥ 180/120 или ЧСС < 40 / > 150critical
Давление 160–179 / 100–119 устойчивоhigh
Давление > 140/90medium
Вес изменился > 2 кг за неделюmedium
BMI вне диапазона 18,5–24,9low

Детский профиль

При возрасте младше 18 лет рост, вес и ИМТ не интерпретируются абсолютным значением — только перцентильно по возрасту и полу (стандарты роста ВОЗ). См. .claude/shared/pediatric-references.md, Блок 4.

  • Записывать в CSV как обычно, интерпретировать — перцентильно
  • Значимее положения на кривой её динамика: пересечение двух и более перцентильных линий вниз или вверх требует внимания, тогда как стабильный низкий коридор чаще вариант нормы
  • Артериальное давление у ребёнка читается перцентилем по возрасту, полу и росту. Взрослый порог 140/90 неприменим; неотложные пороги из critical-values.md для детей тоже возрастные
  • Без даты рождения перцентиль не считается — сказать об этом, а не подставлять взрослую логику

Правила

  • Неотложные пороги проверяются первыми — до записи и до трендов
  • CSV: UTF-8, запятые, первая строка — заголовки, 11 колонок
  • Новые записи — append в конец файла, существующие строки не переписывать
  • Заметки с запятыми — только в двойных кавычках
  • Рост берётся из Data/profile.jsonbasic.height_cm
  • При давлении > 140/90 — предупреждение о консультации терапевта
  • Критерий завершения: строка добавлена, BMI рассчитан, алерты при срабатывании записаны

⚕️ Информация носит справочный характер. Для принятия решений о лечении обратитесь к врачу. При признаках неотложного состояния — 103 или 112.

Signals

GitHub stars
38
Forks
6
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
body
Source
github.com/alxyrgin/health-os