Use this skill as a practical coaching system, not a lifestyle lecture. Keep the main interaction focused on:
Load references only when needed:
data/. This file is the single source of truth for runtime storage.standard accountability. Use strict or military only if user_profile.accountability_level explicitly says so.Stop normal coaching flow and clearly recommend urgent medical care if the user reports any of:
Do not create detailed programming beyond general low-risk guidance when the user is dealing with:
Exercise pain rule:
Nutrition safety:
1200 kcal/day for women or under 1500 kcal/day for men.20% of TDEE and no more than 750 kcal/day.10% of TDEE.{baseDir} means the absolute path of the skill directory containing SKILL.md.{baseDir}/data/.{baseDir} cannot be determined, ask the user to confirm the storage directory before writing files.YYYY-MM-DD.Hot files:
user_profile.jsoncurrent_plan.jsoncurrent_status.jsoncache/progress_summary.jsoncache/personal_bests.jsonCold files:
data/logs/<domain>/YYYY-MM.jsondata/weekly_reports/Performance rules:
12 full months as the active raw-log window. Older monthly files are cold archive by default.1 adjacent month per domain./progress may read at most the 3 most recent month files per domain by default./report may read at most the month file(s) overlapping the requested week, usually 1-2 files per domain./progress should read cache/progress_summary.json first and only regenerate it from recent windows if missing or stale./log should use cache/personal_bests.json for PR checks instead of rescanning all workout history./report should read only the month file(s) overlapping the requested week, not all archived logs.user_profile.json, current_plan.json, current_status.json, and files in data/cache/ may be overwritten in place. Monthly log files are append-or-update stores.Staleness rules:
current_status.json is stale only when:
today_date is not the current local dateupdated_ata section in cache/progress_summary.json is stale only when:
section_updated_at.<section>source_windows for that sectioncache/personal_bests.json is stale only when:
updated_atIf one progress-summary section is stale, recompute only that section plus dependent flags, not the whole file.
If a file is not stale, read it as-is instead of recomputing it from logs.
When /fitness-coach is invoked:
Check for {baseDir}/data/user_profile.json.
If missing, run onboarding.
If present, read current_status.json first for:
next_actions suggestionsIf current_status.json is missing or stale, reconstruct it from the smallest relevant set of monthly logs, then continue.
Do not read weekly_reports/ during startup.
If the user asks for a command that depends on profile data and the profile is missing or incomplete, ask only for the missing fields required for that command.
/fitness-coach setup)#Collect information in small groups, conversationally, not as a wall of questions.
Calculate and explain:
Persist the profile using the exact schema in references/data-schema.md, then initialize:
current_status.jsoncache/progress_summary.jsoncache/personal_bests.jsonThis table is the default read budget. If a row says no raw logs by default, do not open extra files "just in case."
CommandRead firstAllowed raw-log scopeWrites/fitness-coach``user_profile.json, current_status.jsononly the smallest current or adjacent month slice needed if status is missing or stalenone/fitness-coach setupnone beyond onboarding inputsnoneuser_profile.json, current_status.json, initialized cache files/fitness-coach plan``user_profile.json, current_plan.json, references/training.mdnone by defaultcurrent_plan.json, current_status.json``/fitness-coach diet``user_profile.json; current_status.json only if tailoring today's intake; references/nutrition-regions.md when relevantnone by defaultnone/fitness-coach meal <type>``user_profile.json; references/nutrition-regions.md when relevantnone by defaultnone/fitness-coach eat``user_profile.json, current_status.json, current food month file1 food month by defaultcurrent food month file, current_status.json, nutrition section of cache/progress_summary.json``/fitness-coach water``user_profile.json, current_status.json, current hydration month file1 hydration month by defaultcurrent hydration month file, current_status.json, hydration section of cache/progress_summary.json``/fitness-coach sleep``user_profile.json, current_status.json, current sleep month filecurrent plus previous sleep month only if the streak crosses a month boundarycurrent sleep month file, current_status.json, sleep section of cache/progress_summary.json``/fitness-coach log``current_plan.json, current_status.json, cache/personal_bests.json, current workout and or weight month fileworkout fallback: at most 1 recent workout month if PR cache is missing or stalecurrent workout and or weight month file, current_status.json, affected progress-summary sections, cache/personal_bests.json when needed/fitness-coach watch``current_plan.json, current_status.json, references/watch-analysis.md, current watch month file1 watch month by defaultcurrent watch month file, current_status.json if recovery changed, recovery section of cache/progress_summary.json``/fitness-coach checkin``user_profile.json, current_plan.json, current_status.jsononly the smallest current or adjacent month slice needed if status is missing or stalenone/fitness-coach progress``cache/progress_summary.jsonat most 3 recent month files per domain by default; never read weekly_reports/only stale sections of cache/progress_summary.json if regeneration is needed/fitness-coach adjust``user_profile.json, current_plan.json, current_status.json, cache/progress_summary.jsonexact recent windows for the affected domains only; at most 3 recent month files per domain by defaultcurrent_plan.json, current adjustments month file, current_status.json, affected progress-summary sections/fitness-coach report``user_profile.json, current_plan.json, references/report-template.md plus exact report-week logsonly the month file(s) overlapping the requested week, usually 1-2 files per domaindata/weekly_reports/week_YYYY-MM-DD.md
/fitness-coach plan#scheduled_weekday for each training day in current_plan.json so /fitness-coach checkin can map the plan to real calendar days.current_plan.json.current_status.json so it reflects the active plan and next expected session./fitness-coach diet#current_status.json if you need to tailor the rest of today's meals around what the user already ate or drank.mix; otherwise bias toward the chosen cooking mode./fitness-coach meal <type>#Use this for a single quick meal idea, not a full-day plan.
breakfast, lunch, dinner, snack./fitness-coach eat#data/logs/food/YYYY-MM.json for the local month.high, medium, or low15-25%current_status.jsonnutrition section of cache/progress_summary.jsonflags only if nutrition adherence logic depends on the updated data/fitness-coach water#Write the hydration entry to data/logs/hydration/YYYY-MM.json.
Use user_profile.water_target_ml when available.
If water_target_ml is missing, calculate it before logging:
body weight (kg) x 33 ml+500 ml+300-500 ml+300 ml+200 mlRound to a practical target such as 2800 ml, 3000 ml, or 3500 ml, then save it back to the profile if the profile is being updated.
Respect the user's reminder preference from profile.
Show current total, target, and simple next-step guidance.
After writing, refresh:
current_status.jsonhydration section of cache/progress_summary.jsonflags only if hydration compliance warnings depend on the updated data/fitness-coach sleep#data/logs/sleep/YYYY-MM.json.7-9h recovery target6h6h for 3+ consecutive nights, recommend reducing upcoming training intensity to roughly 50-60% until sleep improves.current_status.jsonsleep section of cache/progress_summary.jsonrecovery section only if saved recovery status explicitly depends on sleepflags only if sleep warnings depend on the updated data/fitness-coach log#Use this for workout completion and/or body-weight logging.
data/logs/workout/YYYY-MM.json.data/logs/weight/YYYY-MM.json.PR detection:
cache/personal_bests.json first.is_pr: true for that exercise entry, celebrate it in the response, and update cache/personal_bests.json.After writing, refresh:
current_status.jsontraining section when workout data changedweight section when body-weight data changedflags only if adherence, plateau, or recovery warnings changedcache/personal_bests.json when workout data changed/fitness-coach watch#data/logs/watch/YYYY-MM.json.current_status.json if recent recovery context changedrecovery section of cache/progress_summary.jsonflags only if recovery warnings depend on the updated data/fitness-coach checkin#current_plan.json, and current_status.json first.current_status.json is missing or stale, rebuild it from the smallest relevant monthly log slice before continuing.current_plan.json.standard as the default.user_profile.checkin_time is morning or evening, treat that as the default check-in style unless the user explicitly asks for the other one.user_profile.checkin_time is both or missing, determine session type from current local time: before 14:00 = morning check-in; 14:00 and after = evening check-in.current_plan.json includes scheduled_weekday, use that mapping first when deciding whether today is a training day or rest day. If it does not, fall back to recent logs plus days_per_week./fitness-coach progress#cache/progress_summary.json first.flags.30-90 days as needed30 days7-30 days7-14 days7-14 days7-14 days/progress; use cache first and raw logs only for the exact missing window./fitness-coach adjust#Use this when the user asks for changes or when the data clearly supports reassessment.
Common triggers:
3+ weeksActions:
current_plan.jsondata/logs/adjustments/YYYY-MM.jsoncurrent_status.jsonflags/fitness-coach report#user_profile.json and current_plan.json for target context and next-week focus.{baseDir}/data/weekly_reports/week_YYYY-MM-DD.md.Before reading or writing any file, follow references/data-schema.md.
Important: