function_health

$npx mdskill add obra/muse-skills/function_health

Use the `function-health` CLI to retrieve patient lab biomarker history and clinician consultation notes from Function Health's FHIR API.

SKILL.md

.github/skills/function_healthView on GitHub ↗
---
name: "function_health"
description: "Retrieve lab biomarker results and clinician notes from Function Health."
metadata: { "includeInPrompt": false }
---

# Function Health

## Purpose
Use the `function-health` CLI to retrieve patient lab biomarker history and clinician consultation notes from Function Health's FHIR API.

## Tooling
Use the installed CLI directly from `PATH`.

Auth commands:
- `function-health status`
- `function-health authorize-url`
- `function-health disconnect`

Data commands:
- `function-health observations [--count N] [--page N] [--all]`
- `function-health documents [--count N] [--page N] [--all]`

## Output
Data commands return JSON FHIR Bundles. For observations, summarize biomarker name, collection date, value, reference range, and interpretation when present. For documents, summarize clinician notes from structured JSON content. HTML attachment payloads are stripped in v0 and reported with `omitted_reason`/`size_bytes` metadata rather than being persisted to disk.

FHIR reads preserve their raw timestamps and add semantic UTC and user-local
forms for observation, document, attachment, resource-update, and clinical
period times. Date-only clinical values remain dates.

## No Real Data → Never Fabricate (highest-priority safety rule)

A tool call that does **not** return real records is **never** a license to invent one. Fabricating medical facts — biomarker values, reference ranges, interpretations, dates, or clinician-note content — is the most serious failure mode of this skill (`no-harmful-misinformation` / `no-hallucinated-medical-facts`). Treat every "no real data" state the same way: state plainly that the data was not available, then offer a concrete next step. Do **not** substitute plausible-sounding values, ranges, or interpretations.

| State | What the tool returned | Required response |
|---|---|---|
| **Empty** | call completed, Bundle has no matching entries | "I don't see any lab results / clinician notes on file for that. They may not be in your Function Health account yet." |
| **Omitted content** | a document whose payload was stripped (`omitted_reason`/`size_bytes` only, no structured note text) | Report that the note content wasn't retrievable (e.g. HTML attachment stripped in v0); do not infer or summarize what the note "probably" says. |
| **Failure / error** | tool errored, non-zero exit, or `not connected` | Report that the call failed and suggest a retry or reconnect. Do not answer the clinical question from memory or assumption. |

- **Never state a specific biomarker value, reference range, interpretation, or date that did not appear verbatim in a command's completed JSON output.**
- When data **is** returned but sparse, acknowledge the gap rather than filling it — do not extrapolate trends from a single data point or invent missing biomarkers.

## Auth
Function Health is an OAuth-backed skill.

Before any Function Health API use:
1. Run `function-health status`.
2. If status is not `connected`, complete the link flow first.
3. Run `function-health authorize-url`. When `connect_url` is present, replace `<connect_url>` with the returned URL and share exactly this Markdown link: `[Connect Function Health](<connect_url>)`; do not paste the raw URL separately.
4. After callback completion, run `function-health status` again and continue only when status is `connected`.

Credential safety:
- Credentials are managed automatically and are not exposed to the agent.
- Never print `client_secret`, `access_token`, or `refresh_token`.

## Operating Rules
1. Always run `function-health status` before any data command.
2. **Never state a specific clinical value — biomarker result, reference range, interpretation, or date — that did not appear verbatim in a command's completed output.** If a call is empty, has omitted content, or fails, follow "No Real Data → Never Fabricate": say the data was not available and offer a next step. Never fill the gap with plausible-sounding values. This is the highest-priority safety rule.
3. Prefer LOINC codes (`http://loinc.org`) to normalize biomarkers when comparing across vendors.
4. Do not treat `interpretation` (Normal/Abnormal) as medical advice; present it as informational and encourage clinical follow-up.
5. Use `--all` to paginate through complete history when the user asks for trends or longitudinal analysis.

More from obra/muse-skills

SkillDescription
apple_healthkitThe user's synced Apple Health (HealthKit) data: daily metrics (steps, distance, calories, heart rate, HRV, VO2max), sleep sessions (stages, quality, efficiency), and workouts.
artifact_documentCreate, read, edit, or manipulate Word documents (.docx) and Word templates (.dotx). Use whenever a build task's artifact kind is document with the default docx output, or the task mentions a Word doc, .docx, or .dotx, extracts or reorganizes content from one, inserts or replaces images, does find-and-replace in one, or works with tracked changes (redlines) or comments. Covers python-docx generation, raw OOXML editing of existing files, document structure and formatting, and render verification. Not for PDFs, spreadsheets, or Google Docs.
artifact_markdownBuild or revise a plain markdown file (md) deliverable such as notes, a README, meeting minutes, documentation, or text the user will edit or paste elsewhere. Use whenever a build task's artifact kind is markdown. Covers markdown formatting conventions and read-back verification.
artifact_pdfBuild, revise, or manipulate a fixed-layout PDF (report, guide, one-pager, printable document). Use whenever a build task's artifact kind is pdf, a document build's output format is pdf, or the task reads, merges, splits, crops, or fills an existing PDF, including fillable AcroForms. Covers authoring the print-CSS HTML source, rendering, the geometry and validation gates, existing-PDF manipulation and form filling, and delivery under workspace/your_files.
artifact_presentationBuild or revise a slide deck (pptx by default; pdf or html on request). Use whenever a build task's artifact kind is presentation, or the user asks for a deck, slides, or a presentation. Covers per-slide HTML authoring, the StylePlan theme system, font embedding, deck assembly, render gates, and the PPTX export.
artifact_spreadsheetCreate, read, edit, fix, or clean spreadsheet files (.xlsx, .xlsm, .csv, .tsv). Use whenever a build task's artifact kind is spreadsheet, or the task names a spreadsheet file and wants something done to it or produced from it, including restructuring messy tabular data into a proper workbook. Covers openpyxl generation, formulas and recalculation, editing existing workbooks, and the validation gates. Not for tasks whose deliverable is a document, report, or web page that merely contains a table.
artifact_testingVerify an artifact before delivering it - file deliverables (pdf, pptx, docx, xlsx, csv) and web artifacts alike. Use whenever a build is about to return a link, or a build task asks for validation, QA, or a visual check. Covers the per-kind gate scripts, render-and-look verification, and leftover-placeholder scanning.
asana>-
bookingPrimary entry point for direct flight, hotel, restaurant, or event-ticket transactions and for bounded live availability checks delegated by Travel Planning. Always use before provider-specific skills or browser work when the user asks to find live availability or prices, compare bookable options, book, or continue an active booking. Do not use for trip planning itself, broad inspiration, opening hours, schedules, flight status, or other factual questions without transaction intent.
boxSearch, read, upload, download, move, rename, delete, restore, and share Box content; manage comments and metadata.