name: health-check-in description: Guided daily or weekly health check-in workflow with adaptive questioning version: 1.0.0
Health Check-In Skill
This skill provides a structured, interactive health check-in workflow that adapts to the user's active conditions and medications. Use this for daily or weekly health monitoring.
Purpose
Guide users through a comprehensive health check-in that covers medication adherence, vital measurements, symptoms, and diet. The check-in adapts based on active conditions and produces a summary at the end.
Prerequisites
Before starting the check-in, gather context:
- Get active conditions:
condition_list(status="active") - Get active medications:
medication_list(active_only=true) - Get recent measurements to understand what vitals the user typically tracks
Check-In Flow
Follow this structured flow in order. Use progressive disclosure — ask one question at a time and wait for response before proceeding.
1. Medication Adherence (if applicable)
If the user has active medications:
For each active medication:
- Ask: "Did you take [medication name] [dosage] today?" (or "this week" for weekly check-ins)
- If yes: Log the dose using
medication_log_dose(medication_id=..., notes=...) - If no: Ask if there was a specific reason and record in notes
- If skipped doses: Remind about importance of adherence
2. Vital Measurements
Based on active conditions, prompt for relevant measurements:
Standard vitals for everyone:
- Weight (if tracked regularly)
- Ask: "Would you like to log your weight today?"
- Use:
measurement_log(type="weight", value=..., unit="kg")
Condition-specific vitals:
If user has diabetes or "blood sugar" condition:
- Ask: "What's your blood glucose reading?"
- Use:
measurement_log(type="blood_glucose", value=..., unit="mg/dL")
If user has hypertension or cardiovascular condition:
- Ask: "What's your blood pressure reading?"
- Accept format like "120/80"
- Use:
measurement_log(type="blood_pressure", value={"systolic": 120, "diastolic": 80}, unit="mmHg")
If user has respiratory condition:
- Ask: "What's your oxygen saturation (SpO2)?"
- Use:
measurement_log(type="oxygen_saturation", value=..., unit="%")
If user tracks heart rate:
- Ask: "What's your resting heart rate?"
- Use:
measurement_log(type="heart_rate", value=..., unit="bpm")
Progressive approach:
- Start with most critical measurements based on conditions
- Offer to log additional measurements if user volunteers them
- Don't overwhelm with too many questions at once
3. Symptom Screening
Screen for symptoms based on active conditions:
General screening:
- Ask: "Are you experiencing any new or unusual symptoms today?"
- If yes: Ask for symptom name, severity (1-10), and any additional details
- Use:
symptom_log(name=..., severity=..., notes=...)
Condition-specific screening:
- If diabetes: Ask about fatigue, thirst, frequent urination, blurred vision
- If cardiovascular: Ask about chest pain, shortness of breath, dizziness, palpitations
- If respiratory: Ask about coughing, wheezing, shortness of breath
- If gastrointestinal: Ask about nausea, pain, changes in appetite
- If chronic pain: Ask about pain location and intensity
For each reported symptom:
- Ask severity on 1-10 scale (1=mild, 10=severe)
- Ask if symptom is new or ongoing
- Log using
symptom_log(name=..., severity=..., notes=...)
Important: Only ask about condition-relevant symptoms. If user has no active conditions, do general screening only.
4. Diet and Nutrition (optional)
Ask: "Would you like to log any meals from today?"
If yes:
- For each meal: Ask when it was eaten (approximate time is fine), get description, approximate calories if known, and any relevant nutrients
- Always pass
eaten_at— this is required. Use the user's stated or estimated time. If they say "lunch around noon", use today at 12:00. For planned/future meals, use the expected time. - Use:
meal_log(type=..., description=..., eaten_at=..., nutrition={...})
If user is tracking specific dietary concerns (based on conditions):
- Diabetes: Ask about carbohydrate intake
- Cardiovascular: Ask about sodium intake
- Weight management: Suggest using
nutrition_summaryto review calorie intake
5. Summary Generation
After completing the check-in, generate a summary using this template:
# Health Check-In Summary
**Date:** [current date]
**Type:** [daily/weekly]
## Medication Adherence
[List each medication with adherence status]
- [Medication name]: ✓ Taken / ✗ Missed [reason if provided]
## Vital Signs
[List measurements logged]
- [Type]: [value] [unit] [trend indicator if available]
## Symptoms
[List symptoms reported]
- [Symptom name]: Severity [1-10] [notes]
[Or "No new symptoms reported" if none]
## Diet
[Summary of meals logged or "No meals logged"]
## Notes
[Any additional observations or concerns]
## Follow-Up Actions
[Suggest any recommended actions based on the check-in]
- [Action item 1]
- [Action item 2]
Trend indicators:
- Get latest previous measurement using
measurement_latest(type=...) - Compare current vs previous value
- Show: ↑ (increased), ↓ (decreased), → (stable)
Follow-up recommendations:
- If missed multiple medications: Suggest setting reminders
- If concerning symptom severity (≥7): Suggest contacting healthcare provider
- If vital signs outside normal range: Suggest monitoring or medical consultation
- If tracking incomplete: Offer to set up scheduled check-ins
Summary Storage
After presenting the summary to the user:
- Offer to save summary as a research note
- If accepted:
research_save(topic="Health Check-In [date]", content="[summary text]") - This makes check-in summaries searchable later via
research_search
Adaptive Tips
For daily check-ins:
- Focus on medications and symptoms
- Keep vital measurements light (2-3 key metrics)
- Quick flow, 5-10 minutes
For weekly check-ins:
- More comprehensive measurement review
- Use
trend_reportto show weekly trends - Review medication adherence rate using
medication_history - More detailed nutrition review using
nutrition_summary
User preferences:
- After first check-in, ask user preference for daily vs weekly
- Note preference in AGENTS.md for future sessions
- Adapt questioning style based on user engagement
Error Handling
- If user doesn't know a measurement: Skip it, don't pressure
- If user reports concerning symptoms: Prioritize logging those first
- If check-in is interrupted: Offer to resume where left off next time
- If medication ID lookup fails: Use medication name to search and confirm with user
Example Check-In Flow
Bot: "Good morning! Let's do your daily health check-in. First, let's check on your medications."
Bot: "Did you take your Metformin 500mg this morning?" User: "Yes, just took it." Bot: [Logs dose] "Great! Did you take your Lisinopril 10mg?" User: "Not yet, I'll take it with breakfast." Bot: [Notes for reminder] "Okay, I'll note that. Now let's check your vitals."
Bot: "What's your blood glucose reading this morning?" User: "112 mg/dL" Bot: [Logs measurement] "That's within normal range. Would you like to log your blood pressure today?" User: "Yes, it's 128 over 82." Bot: [Logs measurement] "Got it. Any symptoms you'd like to report today?" User: "No, feeling good." Bot: [Generates summary and offers to save]
Bot: "Here's your check-in summary: [displays formatted summary]. Would you like me to save this summary for future reference?"