From ai-brain-starter
Walks daily journal entries in a date range, appends a 'Body track' section with health-mcp data (HRV, sleep, recovery, cycle, labs). Idempotent and preserves original text.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-brain-starter:backfill-journal-body-contextThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Reads existing daily journals, pulls health-mcp data for each entry's date, and appends a "Body track" section BELOW the original verbatim content. The original entry text is NEVER modified — the rule from `feedback_journal_verbatim_words.md` is non-negotiable.
Reads existing daily journals, pulls health-mcp data for each entry's date, and appends a "Body track" section BELOW the original verbatim content. The original entry text is NEVER modified — the rule from feedback_journal_verbatim_words.md is non-negotiable.
/backfill-journal-body-context/weekly and /monthly would surface if they had been pulling body data all along/health-setup for the first time and importing a backfill window of biometric dataDo NOT use for:
--year <current-year> (Jan 1 to today).[VAULT_PATH]/Meta/journal-index.json (rebuild if stale).## Body track (health-mcp, backfilled YYYY-MM-DD) section — if yes, skip (idempotent)health_journal_context(date, voice_profile="warm") for the data + rendered prosehealth_cycle_context(date) if cycle data exists (for women's cycle awareness)health_recovery_score(date) + health_sleep_score(date) for the scoreshealth_lab_panel(date, lookback_days=180) for any out-of-range markers active that periodfloor_level + floor)Append below the original journal content, after a blank line + horizontal rule:
---
## Body track (health-mcp, backfilled {{today_iso}})
*Auto-generated context. Original journal entry above is preserved verbatim.*
**Floor that day:** {{floor_name}} ({{floor_level}})
**Cycle phase** (if cycle data exists): {{phase}}, cycle day {{cycle_day}}{{ — irregularity flag if any}}
**The body that day:**
- HRV: {{hrv_ms}} ms ({{hrv_delta_pct}}% vs 30-day baseline)
- RHR: {{rhr_bpm}} bpm
- Sleep: {{sleep_asleep_min}} min ({{sleep_efficiency}}% efficiency, REM {{rem_min}}min, deep {{deep_min}}min)
- Steps: {{steps_total}}
- Workouts: {{workout_count}} ({{workout_min}}min)
- Mindful: {{mindful_min}}min
**Scores:**
- Recovery: {{recovery_score}}/100 ({{confidence}} confidence)
- Sleep: {{sleep_score}}/100
**Floor-paired interpretation** (1-3 sentences, see synthesis rule below): {{interpretation}}
**Lab markers** (if any out-of-range result from the prior 180 days, paired with today): {{lab_flags}}
The interpretation line must follow the same shape as the /weekly section 0d synthesis. Each line:
Examples (template SHAPES, not for verbatim use):
Floor was Fear and HRV ran 22% below baseline on a luteal day. The body and the mind both registered the threat. Without the journal entry the recovery score would have called this "rest more"; pairing with Fear shows the actual signal was "the worry is doing work the rest can't fix."
Floor was Joy after a strong gym week. HRV at baseline, sleep efficiency 94%. This is the high-water mark — note what conditions produced it.
Floor was Apathy and Vitamin D 25-OH came back at 26 ng/mL (below range) the month before. The mood floor may have had a metabolic floor under it. Worth a re-test after 3 months of supplementation.
Banned shapes (from /weekly section 0d, same rules apply):
The interpretation line is grunt-work prose. Use the cheapest model that produces a helpful sentence. Order of preference:
scripts/backfill-journal-body-context.py covers this."⚙️ Meta/scripts/minimax.sh" if the vault has it, otherwise skip the LLM step and use a fallback template.--high-quality flag passed and the user accepts the cost.The default is Python template + MiniMax fallback. Do NOT default to Sonnet for hundreds of journal entries.
The actual work runs in scripts/backfill-journal-body-context.py. The skill assembles arguments and hands off to the script.
When invoked:
Parse arguments:
--year YYYY (default: current year)--start YYYY-MM-DD and --end YYYY-MM-DD (override year)--vault-root PATH (default: $VAULT_ROOT or autodetect from cwd)--llm-model {python,minimax,haiku,sonnet} (default: python with minimax fallback)--dry-run (print what would change without writing)--force (overwrite an existing body-track section)Sanity checks:
health_status() to confirm there's biometric data in the DuckDB. If the count is zero, abort and suggest /health-setup first.Meta/journal-index.json and a journal folder. Rebuild the index if stale.Run the script:
/usr/bin/python3 "[REPO_ROOT]/scripts/backfill-journal-body-context.py" --year 2026 --vault-root "$VAULT_ROOT"
Surface the summary: N entries processed, M backfilled, K skipped, plus the date range covered.
The skill does NOT write to the vault itself — the Python script does the file mutations. The skill only:
The Python script checks each journal file for an existing ## Body track (health-mcp, backfilled line. If present, skip unless --force. Re-running the skill on the same range is safe.
After the initial backfill, the same script runs daily for yesterday's entry via a scheduled task (use the /schedule skill). Suggested cadence: 7am local, after Apple Watch has uploaded the previous night's sleep data.
Scheduled-task body:
/usr/bin/python3 "[REPO_ROOT]/scripts/backfill-journal-body-context.py" --start "$(date -v-1d +%F)" --end "$(date -v-1d +%F)" --vault-root "$VAULT_ROOT"
That's "backfill yesterday, every morning, forever." Set it up after the initial backfill completes successfully.
warm register (narrative sentences, not clinical exact-number dumps)language: field if present)[[Joy]] in English / [[Alegría]] in Spanish)The script reads journal files + the local DuckDB. It writes only to journal files (appending body-track sections). No data leaves the machine. The interpretation step (if LLM-backed) sends ONLY the structured body data + floor tag to the chosen model — never the journal body content.
npx claudepluginhub mycelium-hq/ai-brain-starter --plugin ai-brain-starterGenerates weekly and monthly insight reports from journal entries, including pattern recognition, floor trends, life coach feedback, therapist observations, and advisory panel thoughts.
Imports unimported sessions into journal and batch-enriches all unenriched entries. Use to process journal backlog or on 'process the journal' requests.
Aggregates daily work across repos, sessions, and notes into structured journal entries for content creation. Invoke via /journal to backfill missing days or extract a day's journey.