Aller au contenu

Vous ne programmez pas ? Restez sur Claude ou Claude Cowork : vous exportez vos courses, ils les lisent. Claude Code est le seul des quatre qui va chercher les données tout seul, mais il demande un terminal.

turf.bzh dans Claude Code

Deux fichiers à poser dans votre dépôt, et Claude Code écrit du code correct contre l'API sans que vous ayez à lui rappeler quoi que ce soit. C'est le seul des quatre assistants qui va chercher les données lui-même.

Pour qui vous développez, et vous voulez un contexte durable plutôt qu'un rappel à chaque session.

Licence API et abonnement actif requis. Gardez la clé dans une variable d'environnement, jamais dans le dépôt : ajoutez .env à votre .gitignore avant la première ligne de code.

Le fichier à donner à votre assistant

Un seul fichier décrit l'API en entier : les adresses, les paramètres, les quotas, et surtout les pièges qui font perdre du temps. Votre assistant en a besoin, sinon il invente des adresses qui n'existent pas.

Le fichier n'est pas encore en place sur le serveur.

Compris dans la Licence API

Et pour aller beaucoup plus loin : le pack IA

Le fichier ci-dessus apprend à votre assistant où sont les données. Le pack, lui, lui apprend le métier : le vocabulaire du turf, la lecture d'une musique et d'une ferrure, les mathématiques du pari mutuel, la physionomie du Quinté+, les pièges de raisonnement, et la façon de ne jamais conclure plus que ce que les chiffres autorisent.

C'est un dossier à décompresser, pas un fichier à coller. 11 fiches de référence, 17 savoir-faire, 10 rôles spécialisés, et un guide de paramétrage pour que vous régliez tout vous-même. Surtout, il fait ce que ChatBZH ne peut pas : aller lire la presse, les déclarations des entraîneurs et la météo. Et quand vous demandez son avis, il le donne. Deux archives au choix, une pour Claude, une pour Codex.

Découvrir le pack IA réservé aux comptes ayant la Licence API

Pas à pas

  1. Posez le fichier de référence dans le dépôt
    Téléchargez turf-bzh-api.md et rangez-le, par exemple dans docs/.
  2. Ajoutez un CLAUDE.md à la racine
    Claude Code le lit à chaque session. Il doit rester court : le contexte permanent, pas la documentation. Le bloc ci-dessous tient en 30 lignes exprès.
  3. Ajoutez le skill
    Un skill ne se charge que lorsqu'il sert. C'est ce qui évite de payer la référence complète à chaque question, tout en l'ayant sous la main dès qu'il est question de l'API.
  4. Exportez votre clé
    export TBZ_KEY=tbz_live_... dans votre shell, ou un .env ignoré par git.
  5. Vérifiez
    Demandez à Claude Code d'appeler /v1/me et /v1/statut. Si les deux passent, tout le reste suivra.

CLAUDE.md, à la racine du dépôt

Court par construction. Il dit où trouver le détail, il ne le recopie pas.

CLAUDE.md
# Contexte projet : API turf.bzh

Ce dépôt consomme l'API hippique de turf.bzh.

## Référence
La description complète de l'API est dans `docs/turf-bzh-api.md`.
**Lis-la avant d'écrire ou de modifier un appel.** N'utilise aucune adresse
qui n'y figure pas : les inventer coûte du quota et ne rend rien.
Spécification machine : https://www.turf.bzh/api/openapi.json

## Accès
- Base : `https://www.turf.bzh/api`
- En-tête : `Authorization: Bearer $TBZ_KEY` (variable d'environnement, jamais en dur)
- Quotas : 60 requêtes/minute, 10 000/jour. Sur 429, respecter `Retry-After`.
  Chaque réponse porte `meta.quota` et les en-têtes `X-RateLimit-*` : lis-les
  plutôt que d'attendre le 429.

## Règles d'appel
- Une course entière : `/v1/courses/{date}/{rc}/dossier` (un appel, pas vingt).
- Une journée entière : `/v1/journees/{date}/partants`.
- Un historique long : `/v1/exports` (fichiers mensuels), jamais une boucle.
- Le jour J, la colonne `Cote` de la base est périmée : utiliser `/cotes` ou `Cote_BZH`.
- Un 404 peut signifier « pas de donnée », pas seulement « mauvaise adresse ».
  Lire `error.message` et `error.route_proposee`.

## Cadre
Ces données décrivent des courses, elles n'en prédisent aucune. Ne jamais produire
de promesse de gain. Tout taux ou rendement doit être accompagné de son nombre
d'observations. Les contenus éditoriaux (Renifleur, EcurieBZH, LigneBZH) portent un
champ `avertissement` : le reprendre tel quel.

Adaptez le chemin docs/turf-bzh-api.md à votre arborescence.

Le skill, dans .claude/skills/turf-bzh/SKILL.md

Créez le dossier .claude/skills/turf-bzh/, mettez-y ce SKILL.md, et copiez turf-bzh-api.md à côté sous le nom reference.md.

.claude/skills/turf-bzh/SKILL.md
---
name: turf-bzh-api
description: Appeler l'API hippique turf.bzh (programme, partants, cotes PMU en direct,
  arrivees, rapports, indicateurs, dossier complet d'une course). A utiliser des qu'il
  est question de courses, de partants, de cotes, de turf.bzh ou d'une adresse en /v1/.
---

# API turf.bzh

La référence complète est dans `reference.md`, à côté de ce fichier. **Lis-la avant
d'écrire un appel.**

## À retenir sans même ouvrir la référence

- Base `https://www.turf.bzh/api`, en-tête `Authorization: Bearer $TBZ_KEY`.
- Une course entière = `/v1/courses/{date}/{rc}/dossier`. Un seul appel de quota.
  Paramètres utiles : `inclure=`, `historique=0`, `format=csv|xlsx`.
- Une journée entière = `/v1/journees/{date}/partants`.
- Un historique long = `/v1/exports`, pas une boucle d'appels.
- 60 requêtes/minute, 10 000/jour. Chaque réponse porte `meta.quota` : lis le
  restant plutôt que d'attendre le 429. Sur 429 : attendre `Retry-After`.
- Réponse : `{"data": ..., "meta": ...}`. Erreur : `{"error": {...}}`.

## Avant de conclure quoi que ce soit

Vérifier `/v1/schema` : une quinzaine de colonnes sont remplies à moins de 65 %.
Ne jamais promettre de gain ; toujours donner le nombre d'observations d'un taux.

Le champ description décide quand le skill se charge : gardez-y les mots que vous employez vraiment.

Le premier appel

Vérification
export TBZ_KEY=tbz_live_XXXXXXXX

curl -s -H "Authorization: Bearer $TBZ_KEY" \
  https://www.turf.bzh/api/v1/me | python3 -m json.tool

curl -s -H "Authorization: Bearer $TBZ_KEY" \
  "https://www.turf.bzh/api/v1/courses/$(date +%F)/R1C4/dossier?historique=0" \
  | python3 -c "import sys,json; d=json.load(sys.stdin)['meta']; print(d['sections_servies'], d['appels_economises'], 'appels economises')"

Si /v1/me répond et que le dossier annonce ses sections, votre installation est bonne.

Deux consignes à donner à votre assistant, et qu'il oubliera sinon

Qu'il accompagne toujours un taux ou un rendement de son nombre d'observations, et qu'il reprenne les champs avertissement que l'API renvoie avec les contenus éditoriaux. Le fichier turf-bzh-api.md le dit déjà dans sa dernière section : c'est voulu, pour que l'assistant le lise. Le reste, vous le savez : le prélèvement PMU s'applique à chaque mise, et un avantage mesuré sur le passé n'est pas une garantie sur l'avenir.

Questions fréquentes

CLAUDE.md ou skill : lequel ?
Les deux, ils ne servent pas au même moment. Le CLAUDE.md est lu à chaque session et doit rester court. Le skill ne se charge que lorsque le sujet arrive, et peut donc porter le détail sans peser sur les sessions qui parlent d'autre chose.
Faut-il versionner turf-bzh-api.md ?
Oui. C'est un fichier de contexte : le figer dans le dépôt garantit que votre code et sa référence avancent ensemble. Retéléchargez-le quand l'API évolue, la page de doc annonce les changements.
Comment éviter de brûler le quota en développant ?
Mettez en cache les réponses pendant que vous mettez au point. Une journée de partants sur disque vous évite des centaines d'appels identiques, et le contenu ne change plus une fois la course courue.

Ce que la licence comprend : la Licence API · Le pack IA : pack-ia.php · Documentation complète : api-docs.php · Votre clé : api-cle.php · Spécification machine : openapi.json