vitals-dashboard
Track blood pressure, heart rate, weight, blood glucose, and temperature over time with target range bands, trend analysis, alerts for out-of-range readings, correlation analysis, and CSV/PDF export. Use when a user needs to log vital sign readings, review trends, acknowledge alerts, or produce a health summary report.
Best use case
vitals-dashboard is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Track blood pressure, heart rate, weight, blood glucose, and temperature over time with target range bands, trend analysis, alerts for out-of-range readings, correlation analysis, and CSV/PDF export. Use when a user needs to log vital sign readings, review trends, acknowledge alerts, or produce a health summary report.
Teams using vitals-dashboard should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/vitals-dashboard/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How vitals-dashboard Compares
| Feature / Agent | vitals-dashboard | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Track blood pressure, heart rate, weight, blood glucose, and temperature over time with target range bands, trend analysis, alerts for out-of-range readings, correlation analysis, and CSV/PDF export. Use when a user needs to log vital sign readings, review trends, acknowledge alerts, or produce a health summary report.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# vitals-dashboard
Local-first vital signs tracker with trend analysis and export.
## When to use
- User wants to log a vital sign reading (blood pressure, heart rate, weight, blood glucose, temperature)
- User needs to review trends or rolling averages for a vital type
- User wants to check or acknowledge alerts for out-of-range readings
- User is preparing a vital signs summary for a healthcare provider
- User wants to explore correlations between vital sign pairs
## Privacy model
All data stored locally in SQLite at `./data/vitals.db`. No external transmission. Vital values never appear in log output.
## Prerequisites
- vitals-dashboard running: `pnpm dev` or `docker compose up -d`
- Server at `http://localhost:3849`
## Key API operations
### Log a reading
```bash
curl -X POST http://localhost:3849/api/vitals \
-H "Content-Type: application/json" \
-d '{"vital_type": "heart_rate", "value1": 72, "recorded_at": "2026-03-20T08:14:00"}'
```
### Log blood pressure (two values)
```bash
curl -X POST http://localhost:3849/api/vitals \
-H "Content-Type: application/json" \
-d '{"vital_type": "blood_pressure", "value1": 118, "value2": 76, "recorded_at": "2026-03-20T08:00:00"}'
```
### Get latest reading per vital type
```bash
curl http://localhost:3849/api/vitals/latest
```
### Get readings for a type with date range
```bash
curl "http://localhost:3849/api/vitals?type=blood_pressure&from=2026-03-01&to=2026-03-20"
```
### Get active alerts
```bash
curl http://localhost:3849/api/alerts
```
### Acknowledge an alert
```bash
curl -X PATCH http://localhost:3849/api/alerts/3/acknowledge
```
### Get correlations
```bash
curl "http://localhost:3849/api/correlations?days=90"
```
### Download CSV
```bash
curl -o vitals.csv http://localhost:3849/api/export/csv
```
### Download PDF report
```bash
curl -o report.pdf http://localhost:3849/api/export/pdf
```
## API Reference
| Endpoint | Method | Description |
|---|---|---|
| `/api/vital-types` | GET | List all vital types with thresholds |
| `/api/vitals` | POST | Log a reading |
| `/api/vitals` | GET | List readings (type, from, to, limit) |
| `/api/vitals/:id` | GET | Single reading |
| `/api/vitals/:id` | DELETE | Delete reading |
| `/api/vitals/latest` | GET | Latest per vital type |
| `/api/alerts` | GET | Unacknowledged alerts |
| `/api/alerts/:id/acknowledge` | PATCH | Mark acknowledged |
| `/api/correlations` | GET | Pearson r between vital pairs |
| `/api/export/csv` | GET | CSV download |
| `/api/export/pdf` | GET | PDF report download |
| `/api/settings` | GET | Settings |
| `/api/settings` | PATCH | Update settings |
## Vital Types
| key | label | unit | alert_high |
|---|---|---|---|
| `blood_pressure` | Blood Pressure | mmHg | 140 (systolic) |
| `heart_rate` | Heart Rate | bpm | 120 |
| `weight` | Weight | kg | none |
| `blood_glucose` | Blood Glucose | mmol/L | 11.0 |
| `temperature` | Temperature | degC | 38.5 |
## Alert thresholds
Alerts are generated automatically when a reading exceeds `alert_low` or `alert_high` for the vital type. The disclaimer "This tool does not provide medical advice. Consult your healthcare provider." must be shown wherever alerts are displayed.
## Environment Variables
| Variable | Default | Description |
|---|---|---|
| `PORT` | `3849` | Server port |
| `DATA_DIR` | `./data` | SQLite location |
| `EXPORT_DIR` | `./exports` | Output for CSV/PDF |
| `LOG_LEVEL` | `info` | debug / info / warn / error |
| `PIN_LOCK` | `0` | 1 to require PIN |
| `NODE_ENV` | `development` | development / production |
## Troubleshooting
### Alert not generated
1. Check that the vital type has `alert_high` or `alert_low` set: `GET /api/vital-types`
2. Verify the submitted value actually exceeds the threshold
3. Blood pressure: both value1 (systolic) and value2 (diastolic) are checked independently
### Correlation endpoint returns empty array
1. Ensure at least two vital types have 10+ readings on shared calendar dates
2. Increase the `days` query parameter to include more history
### PDF export hangs
1. Check that `EXPORT_DIR` exists and is writable
2. Verify pdfkit is installed: `pnpm list pdfkit`Related Skills
home-sensor-dashboard
No description provided.
time-series-dashboard
Manage dashboards, metrics, alert rules, and query time-series data in the time-series-dashboard application. Use this skill for all operations against the running server.
pomodoro-dashboard
Browser-only Pomodoro timer SPA with task tracking, focus stats, and a 12-week activity heatmap. All data stored in localStorage. No backend required.
weather-station-dashboard
Query live and historical weather sensor data, manage stations and alert thresholds, and retrieve daily summaries. Use when asked to check current temperature, view recent readings for a station, find the highest temperature recorded this week, dismiss an active alert, list which stations are online, or retrieve today's daily summary. Triggers include "current temperature", "sensor readings", "station status", "alert history", "daily summary", "wind speed", "humidity", "rainfall total", or any query about live or historical weather data.
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.
email-digest
Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.
websocket-realtime
Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".
poll-builder
Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.