Skip to main content

health-data-analysis

Biotrackr health data schema, metric extraction patterns, and analysis techniques for Fitbit activity data

来源信息

仓库
willvelida/biotrackr
最近来源活动
2026年4月11日 23:32
检测到的 SKILL.md 语言
英语
星标
6
分支
3

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
health-data-analysis
description
Biotrackr health data schema, metric extraction patterns, and analysis techniques for Fitbit activity data
# Health Data Analysis ## Data Schema Biotrackr health data arrives as a JSON object with an `items` array. Each item represents one day: ```json { "items": [ { "date": "2026-04-05", "activity": { "activities": [ { "name": "Strength training", "calories": 665, "duration": 5271000, "steps": 4972, "startTime": "06:57", "distance": 2.52 } ], "summary": { "steps": 15732, "caloriesOut": 4049, "activityCalories": 2341, "fairlyActiveMinutes": 47, "veryActiveMinutes": 78, "lightlyActiveMinutes": 234, "sedentaryMinutes": 567, "distances": [{"activity": "total", "distance": 12.02}], "floors": 238, "restingHeartRate": 51 } } } ], "totalCount": 7, "note": "Optional note about missing data" } ``` ## Metric Extraction * **Steps**: `item["activity"]["summary"]["steps"]` * **Calories (total)**: `item["activity"]["summary"]["caloriesOut"]` * **Activity calories**: `item["activity"]["summary"]["activityCalories"]` * **Active minutes**: `fairlyActiveMinutes + veryActiveMinutes` (combine both fields) * **Distance**: Extract from `distances` array where `activity == "total"`: `next(d["distance"] for d in distances if d["activity"] == "total")` * **Floors**: `item["activity"]["summary"]["floors"]` * **Resting heart rate**: `item["activity"]["summary"]["restingHeartRate"]` ## Duration Conversion Activity durations in the data are in **milliseconds**. Convert to minutes by dividing by 60000: ```python duration_minutes = round(activity["duration"] / 60000) ``` ## Goal Definitions Standard daily goals for achievement tracking: | Goal | Target | Field | |------|--------|-------| | Steps | ≥ 10,000 | `steps` | | Distance | ≥ 8.0 km | total distance | | Active Minutes | ≥ 30 min | `fairlyActiveMinutes + veryActiveMinutes` | | Calories | ≥ 2,500 kcal | `caloriesOut` | Goal achievement per day = count of how many of the 4 goals were met. ## Standout Day Identification Identify these standout categories across the reporting period: * **Highest steps day**: `max(days, key=lambda d: d["steps"])` * **Highest calories day**: `max(days, key=lambda d: d["caloriesOut"])` * **Most active minutes day**: `max(days, key=lambda d: d["activeMinutes"])` * **Best goal achievement day**: `max(days, key=lambda d: d["goals_met"])` * **Longest single session**: Find the activity with the maximum `duration` across all days ## Weekly Aggregates Calculate these summary statistics: * **Averages**: steps, calories, active minutes, distance, floors, resting heart rate (divide totals by number of days with data) * **Totals**: steps, distance, floors, calories, active minutes * **Heart rate range**: min and max resting heart rate with corresponding days * **Trend**: Compare first day to last day for resting heart rate direction ## Handling Missing Days * Not all 7 days in a week may have data (the `note` field indicates gaps). * Calculate averages using actual day count (`len(items)`), not 7. * Clearly label missing days in output tables and narratives.
在 GitHub 查看