Use ONLY when the user is a COACH and asks to set up, configure, customize or update their personal coaching style — phrases like "set up my coaching profile", "teach me your coaching rules", "configure my coach skill", "onboard me as a coach", "I want you to coach like me", "save my coaching philosophy". Conducts a structured interview about periodization, volume, intensity distribution, workout structure, recovery rules and communication style, then writes a personalised coach profile that every other Koval coach skill (training creation, plan building, athlete review, club sessions) reads as ground truth.
Role gate: Only run this skill if getMyProfile().role == "COACH". Otherwise reply: "This setup is for coaches — your account is set as ATHLETE. Switch roles in your profile if you also coach."
Produce (or update) a coach-profile document that captures how this specific coach prescribes training, so every other coach skill (koval-plan-my-week, koval-find-workout, koval-coach-weekly-review, training creation flows, club session creation) can read it and generate trainings that match the coach's voice and rules — instead of falling back to generic Coggan defaults.
The canonical schema for the output file ships with this skill at resources/coach-profile.template.md. Treat it as the source of truth for section names and ordering.
Gate + context (parallel):
getMyProfile → confirm COACH role, capture name, default sport, FTP/threshold, club membershiplistAthletes → roster size (informs volume defaults)listZoneSystems → existing zone systems already in uselistPlans (limit 5) → spot any plans the coach already authored, infer style hints from titles/structureCheck for an existing profile:
coach-profile.md already exists for this coach, ask: "You already have a coaching profile from <date>. Do you want to review and update it section by section, start over, or just show it?"Interview — ask the questions in grouped batches (not one at a time). Wait for the coach's answer before moving to the next group. Always offer a "skip / use defaults" option per group.
listGroups)Confirm zone systems exist:
getDefaultZoneSystem(sport).createZoneSystem(...) to materialise them.koval-zone-setup for that sport before continuing.Compile the profile into the structure shipped at resources/coach-profile.template.md and save it as coach-profile.md in the user's skills folder (same directory this skill lives in). Copy the headings verbatim, fill in every placeholder, and write _(using defaults)_ in any group the coach chose to skip. Also store a one-line digest in conversation memory so subsequent skills can detect it.
Show the result to the coach as a markdown card and ask: "Want to tweak anything? Tell me a section name (e.g. 'change Group 4') or say 'looks good' to lock it in."
coach-profile.mdThe output file follows the exact schema in resources/coach-profile.template.md. Open the template, copy its structure verbatim, then fill in each placeholder.
_(using defaults)_ in that section and pick sensible Coggan/polarized defaults so the file is still complete.Last updated.coach-profile.draft.md) so the coach can resume later with "continue my coach setup".koval-plan-my-weekkoval-coach-weekly-reviewcreateTraining with the drill structure.