Source profileQuality 91/100

mycelium-hq/ai-brain-starter/skills/health-setup/SKILL.md

health-setup

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.

Source repository stars
31
Declared platforms
0
Static risk flags
0
Last source update
2026-08-04
Source checked
2026-08-05

Decision brief

What it does—and where it fits

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."

Best for

  • User says /health-setup or /setup-health or setup 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

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/mycelium-hq/ai-brain-starter --skill "skills/health-setup"
Safe inspection promptEditorial

Inspect the Agent Skill "health-setup" from https://github.com/mycelium-hq/ai-brain-starter/blob/4b234a7bb81b4f7bafb4537b41060323f526771f/skills/health-setup/SKILL.md at commit 4b234a7bb81b4f7bafb4537b41060323f526771f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    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.

    Look for darwin / linux / a Windows path separator in the environment. Confirm with the user if uncertain. Map to one of: macos, linux, windows.
  2. 02

    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 appsOura Ring — free Personal Access Token, no app review neededFitbit — free Personal app, slightly more setup (OAuth2)
  3. 03

    Step 3: Run healthvendorsetupguide for each chosen vendor

    Call the tool with the vendor + OS:

    Call the tool with the vendor + OS:The returned dict contains: displayname, summary, commonsteps, transfersteps (OS-specific), envvars (with explanations), tooltorun, ongoingcadence, 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.
  4. 04

    Step 4: Verify before importing

    Once env vars are set and Claude Code restarted, run:

    Once env vars are set and Claude Code restarted, run:Each returns either {ok: true, ...account-info} or {ok: false, error: "..."}. If ok: false, surface the error and walk back to the env-var step.
  5. 05

    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:

    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:Surface the row counts at the end. Confirm with a sample query:

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars31SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
mycelium-hq/ai-brain-starter
Skill path
skills/health-setup/SKILL.md
Commit
4b234a7bb81b4f7bafb4537b41060323f526771f
License
MIT
Collected
2026-08-05
Default branch
main
View the original SKILL.md

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:

  1. Which wearable(s) they have
  2. Which OS they're on (macOS / Windows / Linux)
  3. 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-setup or /setup-health or setup 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 Health

Each 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_guide to render instructions
  • Asks the user to paste env vars into their shell themselves
  • Calls health_vendor_healthcheck and 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.