health-setup
Skill50 starsChanged 7 months agoMITView on GitHub
Use when the user says /health-setup or /setup-health, asks to set up or connect a wearable (Apple Watch, Apple Health, Oura Ring, Fitbit, Garmin, Whoop), asks how to import Oura / Fitbit / Apple Health data, asks which wearable to use, hits a failing health_vendor_healthcheck, a 429 rate limit, or an expired Fitbit token during setup, or has health-mcp installed with an empty body track. Not for querying already-imported data or building new connectors.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- somz22/personal-health-fitbittheir own version, first seen Mar 21, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- somz22/personal-health-fitbit★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository39 other files it gives its agents.
- docs/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- setup-brainSkill
- backfill-journal-body-contextSkill
- cierre-de-llamadaSkill
- coachingSkill
- coachSkill
- daily-journalSkill
- deconstructSkill
- diagnoseSkill
- doubt-driven-developmentSkill
- evolveSkill
- for-my-teamSkill
- graphifySkill
- health-contextSkill
- health-doctorSkill
- ingest-githubSkill
- ingest-healthSkill
- ingest-youtubeSkill
- insightsSkill
- instinct-exportSkill
- instinct-importSkill
- interview-meSkill
- longitudinalSkill
- meeting-todosSkill
- nano-bananaSkill
- note-todosSkill
- optimize-brainSkill
- patternsSkill
- repurpose-talkSkill
- resolver-querySkill
- riseSkill
- second-brain-mappingSkill
- secret-warnSkill
- security-snapshotSkill
- setup-vault-typesSkill
- skillify-meta-loopSkill
- sunday-reviewSkill
- vault-systemSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 22
After a fresh install of the ai-brain-starter substrate
- Distinctive: line 23
After health-mcp v0.3+ is registered but no data is imported yet
- Distinctive: line 25
Do NOT use for:
- Very specific: line 34
Look for darwin / linux / a Windows path separator in the environment.
- Distinctive: line 46
If they say "multiple" — that's fine, the substrate's shared DuckDB schema accepts data from all vendors.
- Very specific: line 48
If they say "I don't have one" — close the wizard.
- Distinctive: line 52
Call the tool with the vendor + OS:
- Very specific: line 107
If the user wants their existing daily journals enriched with body context retroactively, point them to /backfill-journal-body-context.
- Distinctive: line 115
If the user is on Windows, never give them macOS commands as the "default"
- Distinctive: line 136
No vault writes, no global state changes.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
health-setup, interactive wearable connector wizard
Walks the user from "I have an Apple Watch / Oura / Fitbit" to "data is in my DuckDB and I can run /weekly with body track populated."
The wizard branches by:
- Which wearable(s) they have
- Which OS they're on (macOS / Windows / Linux)
- Whether they're starting fresh or adding a second device
It never installs anything they don't want. Each branch has its own setup path — most of them are 3-5 manual steps and a paste-into-shell to set env vars.
When to use
- User says
/health-setupor/setup-healthorsetup my health connector - User asks "how do I import Oura / Fitbit / my Apple Watch data"
- User says "which wearable should I use" — pick + walk through setup
- After a fresh install of the ai-brain-starter substrate
- After health-mcp v0.3+ is registered but no data is imported yet
Do NOT use for:
- Querying already-imported data (use
health_status,health_recovery_score, etc.) - Building new wearable connectors (that's a substrate dev task)
- Onboarding non-health skills
Wizard flow
Step 1: Detect the OS
Look for darwin / linux / a Windows path separator in the environment. Confirm with the user if uncertain. Map to one of: macos, linux, windows.
Step 2: Ask which wearable(s) they have
Multiple-select. The substrate currently supports first-class:
- Apple Watch / iPhone (Apple Health) — most common, free, works without iPhone-paired apps
- Oura Ring — free Personal Access Token, no app review needed
- Fitbit — free Personal app, slightly more setup (OAuth2)
- Garmin — sync to Apple Health on iPhone, then ingest via Apple Health path
- Whoop — deferred to v0.4
If they say "multiple" — that's fine, the substrate's shared DuckDB schema accepts data from all vendors. Run each vendor's setup in sequence.
If they say "I don't have one" — close the wizard. Recommend they journal manually + add labs (health_import_labs) for the parts of the substrate that don't need wearables.
Step 3: Run health_vendor_setup_guide for each chosen vendor
Call the tool with the vendor + OS:
health_vendor_setup_guide(vendor="oura", os_kind="macos")The returned dict contains: display_name, summary, common_steps, transfer_steps (OS-specific), env_vars (with explanations), tool_to_run, ongoing_cadence, notes.
Render it to the user as numbered steps. Do NOT paraphrase the env-var commands — copy them verbatim, the user will paste them into their shell.
Step 4: Verify before importing
Once env vars are set and Claude Code restarted, run:
health_vendor_healthcheck(vendor="oura") # for Oura
health_vendor_healthcheck(vendor="fitbit") # for Fitbit
health_status() # for Apple HealthEach returns either {ok: true, ...account-info} or {ok: false, error: "..."}. If ok: false, surface the error and walk back to the env-var step.
Step 5: First import
Once the healthcheck passes, run the vendor's import for a reasonable initial window. For backfill, propose Jan 1 of the current year to today:
health_import_apple_health("/path/to/export.zip") # Apple Health
health_import_oura(start="2026-01-01", end="2026-05-10") # Oura
health_import_fitbit(start="2026-01-01", end="2026-05-10") # Fitbit (may take 2-5min due to per-day API calls)Surface the row counts at the end. Confirm with a sample query:
health_recovery_score("2026-05-09")
health_cycle_context("2026-05-09")
health_longevity_panel("2026-05-09")Step 6: Suggest the ongoing cadence
For Apple Health: re-export from iOS every 1-4 weeks.
For Oura + Fitbit: a daily scheduled task. Suggest creating one via the /schedule skill — pull yesterday's data every morning at 6am. The scheduled task call is:
health_import_oura(start="<yesterday>", end="<yesterday>")
health_import_fitbit(start="<yesterday>", end="<yesterday>")Each runs in <30 seconds for a single day.
Step 7: Suggest the backfill
If the user wants their existing daily journals enriched with body context retroactively, point them to /backfill-journal-body-context. That skill walks every journal entry this year and appends a body-track section below the original content (verbatim preserved per the journal voice rule).
Voice rules
- Direct, warm, no fluff
- One step at a time — never dump the full wizard in one message
- Copy-paste blocks: indent and code-fence them so the user can copy without losing whitespace
- Match the user's language (Spanish if they Spanish, English if they English)
- If the user is on Windows, never give them macOS commands as the "default"
Multi-vendor merging
If the user has both Apple Watch AND an Oura Ring, the DuckDB schema accepts both. The recovery_score formula will use whichever metric has data for a given day. When both vendors record HRV on the same day, the LAST writer wins (no smart merging in v0.3). v0.4 will add per-source priority preferences.
Graceful failure modes
- Vendor API rate-limited: Fitbit has 150 req/hour. The importer respects the rate by serial single-day calls. If 429 surfaces, suggest a 1-hour wait or chunking the backfill into smaller windows.
- Token expired: Fitbit access tokens expire in 8 hours. If FITBIT_REFRESH_TOKEN + FITBIT_CLIENT_ID + FITBIT_CLIENT_SECRET are set, the client refreshes automatically. If only the access token is set, walk the user back through the OAuth flow.
- No iPhone available: Apple Health requires iOS export. If user has no iPhone, they cannot use the Apple Health path. Route them to Oura (free) or Fitbit.
- Vendor not supported yet: Whoop and direct Garmin support are v0.4. Today's substitute: sync Garmin to Apple Health on iPhone, then export via Apple Health.
Output contract
The wizard does not write any files. It only:
- Calls
health_vendor_setup_guideto render instructions - Asks the user to paste env vars into their shell themselves
- Calls
health_vendor_healthcheckand the import tools when they're ready - Surfaces the row counts + sample queries at the end
No vault writes, no global state changes. The substrate stays clean.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

