Skills¶
ai-running-coach fournit 30 skills que les agents chargent à la demande pour des tâches spécifiques.
Vue d'ensemble¶
reply, aucune écriture distante sans « OK » dans un message suivant ni approbation, aucune suppressionarc pour la persistance structurée des donnéesComment les skills sont utilisés¶
Les agents chargent les skills à la demande via l'outil skill de leur IDE. Par exemple :
- L'agent coach charge
weather-forecastavant chaque validation hebdomadaire - L'agent coach charge
garmin-workout-schedulingavant de pousser des séances dans Garmin - L'agent course-strategist charge
gpx-analysispour analyser un parcours
Sept skills sont aussi des commandes courtes, invocables directement par
leur nom (/today, /why, /week, /race, /log, /inspection, /shoes) plutôt que chargées par
un agent : format de sortie prévisible, pensées pour un usage rapide depuis
le téléphone. Les quatre premières délèguent en lecture seule à coach
(jamais d'écriture) ; /log écrit dans activities//medical/ via coach,
nutritionist ou medical selon le staff installé ; /inspection désigne la paire
et reçoit les photos, puis laisse gear-inspection écrire dans gear/ ; /shoes désigne le rôle,
puis laisse shoe-selection écrire, avec votre accord, dans gear/.
Structure d'un skill¶
skills/<nom-du-skill>/
├── SKILL.md # Instructions du skill
├── scripts/ # Scripts Python (optionnel)
└── examples/ # Exemples de sortie (optionnel)
Scripts Python¶
Certains skills incluent des scripts Python, dans leur propre dossier :
| Script | Skill | Dépendances |
|---|---|---|
analyze_gpx.py |
gpx-analysis | stdlib uniquement |
compare_course.py |
course-comparison | stdlib uniquement |
analyze_session_parts.py |
session-parts-analyzer | stdlib uniquement |
mywhoosh_route.py |
mywhoosh-route | stdlib uniquement (API MyWhoosh non officielle pour fetch) |
download_fit.py |
fit-download | garminconnect + fitparse (environnement garmin-mcp) ; Intervals.icu : fitparse (environnement intervals-icu-mcp) |
coach_setup.py |
coach-setup | stdlib uniquement |
coach_doctor.py |
coach-doctor | stdlib uniquement |
D'autres vivent directement dans scripts/ (le moteur), appelés par les
agents ou par les commandes courtes plutôt que par un skill dédié :
| Script | Appelé par | Rôle |
|---|---|---|
arc_index.py |
tous les agents, /today /why /week /race, le tableau de bord |
Index SQLite dérivé + toutes les commandes de lecture (voir ci-dessous) |
arc_guardrails.py |
coach, garmin-workout-scheduling, /week |
Garde-fous déterministes (check) et drapeau composite de risque de blessure (injury-risk) — voir Les garde-fous |
arc_log.py |
skill log (/log) |
Arithmétique, correspondance catalogue et fusion idempotente pour la saisie libre |
arc_race_pacing.py |
course-strategist |
Allures de course par segment depuis le modèle personnel pente → allure (#59) |
arc_race_debrief.py |
coach, course-strategist |
Débrief post-course plan vs réalisé, par segment (#61) |
arc_workout_targets.py |
coach |
Cibles personnelles d'une séance structurée — zones FC, allure GAP, D+ de côte (#60), plage en % de la vitesse critique quand l'ajustement est valide (#169) |
arc_vanoor.py |
coach, course-strategist (skill vanoor-export) |
Séances de la semaine et plan de course au format .vanoor de l'app Vanoor (Apple Watch), validés contre les limites du format — opt-in [vanoor].export |
arc_strength.py |
coach, arc_index.py strength |
Bibliothèque de renforcement/mobilité et programmes par phase ou usage (#191) : validation, repli matériel, charge utile Garmin vérifiée ou texte intervals.icu — voir Renforcement et mobilité |
arc_cs.py |
arc_index.py pace-curve, arc_workout_targets.py |
Courbe allure-durée en GAP, vitesse critique et D′ (#169) — fonctions pures, voir Vitesse critique |
arc_plan_templates.py |
coach |
Gabarits de périodisation (config/plans/*.json) : chargement, validation contre les garde-fous, résolution semaine par semaine (#189) — voir Gabarits de périodisation |
arc_trail_shape.py |
coach, /race |
Score Trail Shape, préparation à l'objectif actif (#63) |
arc_load_forecast.py |
coach, /race |
Projection de condition/fatigue/forme jusqu'à la course, comparaison de plans (#172) |
garmin_gear_backfill.py |
coach (interactif, sur accord), à la main |
Rattrape le matériel Garmin sur l'historique (#145) : simulation par défaut, --apply ; dépend de garminconnect (via l'environnement garmin-mcp), voir Rattraper le matériel de l'historique |
Sous-commandes de arc_index.py¶
python3 scripts/arc_index.py <commande> [options]
| Commande | Rôle |
|---|---|
index |
(Re)construit l'index SQLite dérivé depuis le Markdown du workspace |
status |
État de l'index (fichiers indexés/hors contrat, couverture des échantillons FIT) |
backfill-plan |
Liste les fichiers hors contrat et les collisions de semaine à corriger |
hrv-baseline |
Baseline HRV personnelle (moyenne glissante 7 j de ln(HRV) vs référence 60 j ± 0,5 ET) |
sleep-debt |
Dette de sommeil sur 7 jours (#37) |
heat-acclimation |
Séances « chaudes » sur 14 jours vs [health].heat_threshold_c (#38) |
altitude-exposure |
Séances et temps au-dessus de 1 500 / 2 000 m sur 14 et 28 jours (--days N), d'après les échantillons FIT ; altitude manquante dite, jamais comptée comme nulle (#185) |
gear |
Kilométrage des chaussures et seuils d'alerte (#40) |
gear-attribution |
Priorité d'attribution du matériel d'une séance : déclaration de l'athlète > Garmin > défaut (--garmin-gear, --chat-gear, #133) |
equipment |
Matériel hors chaussures : usage (km, h, séances, jours), déclencheurs typés, kits (--kit), alerte unique (--activities, --since), contrôle du matériel d'un plan de course (--race-plan) (#134) |
performance-index |
Lecture des indices ITRA/UTMB déclarés au profil (#62) |
fueling |
Plafond de glucides/h réellement toléré (sorties longues running/trail, #41) |
samples |
Échantillons FIT bruts d'une activité (--activity) |
zones |
Temps en zone + polarisation 80/20 (#43) |
gap |
Allure ajustée à la pente (GAP, modèle de Kay, voir gap.md) |
decoupling |
Découplage Pa:HR / efficacité aérobie |
vam |
Vitesse ascensionnelle moyenne, par montée détectée et par fenêtre (#46) |
descent |
Efficacité en descente |
durability |
Fade d'endurance sur séance longue (> 90 min) |
energy |
Dépense énergétique modèle (RE3 + marche) vs Garmin, contrôle d'écart |
pace-curve |
Courbe allure-durée en GAP (42/90/365 j), vitesse critique et D′, tendance ; --days N, --lt-speed-ms V (contrôle avec le seuil lactique Garmin) (#169) |
climb-history |
Historique d'une montée reconnue d'une séance à l'autre (--segment, #49) |
decisions |
Journal des décisions tracées (filtrable par date, fenêtre, déclencheur, issue) |
slope-model |
Modèle personnel pente → allure (#58) |
trail-shape |
Score Trail Shape (#63) |
load-forecast |
Projection de charge jusqu'à la course : forme prévue le jour J, --compare (#172) |
plan-skeleton |
Squelette de bloc semaine par semaine (gabarit + date de course + volume tenu + disponibilité) : dry run JSON/--text, --write pour planning/Semaine_<lundi>.md sans écrasement, garde-fous par semaine, forme prévue le jour J (#190) ; mise en route qui fait monter le volume (--lead-in ramp|flat, --lead-in-weeks K) et contrôle face aux exigences de la course (race_demand, #204) |
plan-templates |
Gabarits de périodisation : liste, choix par distance (--distance-km), détail résolu (--format, --weeks) ; JSON par défaut, --text pour un tableau lisible (#189) |
python3 scripts/arc_index.py --help liste toutes les options associées à
chaque commande.
