Fusion de main (1f, prompts à copier) dans nouvelle-partie-directe

Conflits résolus en gardant les deux apports : la feuille du prompt et la
correction de reviewFinishedGame dans app.ts ; prompts et nouvelle-partie
dans tests/browser.sh.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-11 22:41:42 +01:00
co-authored by Claude Opus 5.5
47 changed files with 3531 additions and 159 deletions
@@ -108,3 +108,13 @@ avec Gherkin et l'exécution de bout en bout par l'interface.
- **Perspective** : si les scénarios peuvent un jour être joués dans une
instance réelle de l'application, la même exécution produira les captures
d'écran de l'aide, toujours à jour avec la version installée.
### 2026-11-10 — Les prompts pour une IA, même principe
Avec « Demander à une IA » (étape 1f), les gabarits des prompts suivent la
même règle que le glossaire, les scénarios, le tutoriel et les phrases du
maître : une seule source, `docs/prompts/` (un fichier par gabarit, sous
CC BY-SA 4.0), copiée dans le site par `make site` et lue par l'application
à l'exécution ; jamais recopiée dans le code. `make test` remplit chaque
gabarit avec de vraies analyses du moteur (`app/tests/prompts.test.ts`) et
le scénario `docs/scenarios/demander-a-une-ia.feature` en fait l'aide.
+18
View File
@@ -60,3 +60,21 @@ couleur, en monochrome et en taille réelle d'icône (48 et 24 px).
en dessous de 32 px.
- Les icônes Android (premier plan, arrière-plan, monochrome) sont fournies en
SVG ; leur conversion en `VectorDrawable` se fera avec l'application Android.
## Amendements
### 2026-11-11 — Pions blancs et noirs, avec un contour
Retour des premiers joueurs, relayé par Pierre : les pions sombres se voyaient
mal sur la barre, et les joueurs préféraient le blanc et le noir à l'ivoire et
au noyer. Après comparaison sur le canevas (rangée « Retours des premiers
joueurs »), Pierre retient le blanc et le noir, avec un contour.
- Pions du joueur blancs (`#FAFAF7`), contour et filet gris foncé
(`#6E6E69`) ; pions de l'ordinateur noirs (`#1C1C1C`), contour et filet gris
clair (`#B5B5B0`), dans les deux thèmes. Dés et videau suivent les pions.
- Le contour assure la lisibilité partout : pions noirs sur la barre (6,8:1
en thème clair, 8,5:1 en sombre), pions blancs sur le fond clair (3,8:1).
- Le logo ne change pas : ses pions restent ivoire et noyer, qui sont la
matière de la marque, distincte des pièces du jeu.
- Valeurs dans `docs/identite/charte/tokens.json`.
+33
View File
@@ -159,3 +159,36 @@ non, lancer, jouer), à partir de 1, sur sa ligne courante.
- Comme la feuille d'explication, ces adresses n'ont de sens que sur
l'appareil qui a joué la partie. Une partie absente donne un message,
jamais une page cassée.
### 2026-11-10 — Adresses de la feuille du prompt pour une IA
Ajoutées avec « Demander à une IA » (étape 1f), dans le même schéma. La
feuille montre le prompt pour qu'on le relise avant de le copier : c'est un
écran à part entière, elle a donc son adresse, celle de l'écran d'où on la
demande suivie de `/ia` :
| Écran | Adresse |
| --- | --- |
| Prompt d'une décision, depuis la feuille d'explication du maître | `#/explication/<événement>/ia` |
| Prompt du bilan d'une partie | `#/parties/<id>/bilan/ia` |
| Prompt de la décision d'un coup, depuis l'analyse | `#/parties/<id>/analyse/<coup>/ia` (ou `…/analyse/ia`, sur le coup à revoir) |
| Prompt d'un terme du glossaire | `#/glossaire/<fiche sans .md>/ia` |
- Une seule feuille à la fois : depuis la feuille du maître ou le bilan,
la page du prompt prend la place de leur contenu, à la même hauteur ;
depuis l'analyse ou le glossaire, elle monte dans sa propre feuille.
« ‹ Explication » (« ‹ Bilan », « ‹ Analyse », « ‹ Glossaire »), Échap et
le retour du téléphone reviennent à l'écran d'où on l'a demandée ; la
croix et « Fermer » ferment la feuille, et avec elle la feuille du maître
ou le bilan dont elle avait pris la place. Ouverte par son adresse, sans
historique, le retour remplace l'adresse par celle de l'écran d'avant.
- Rechargée, l'adresse rouvre la même feuille : le prompt est recalculé à
partir du journal enregistré. Comme ses écrans, elle n'a de sens que sur
l'appareil qui a joué la partie (sauf pour le glossaire). Une décision
sans conseil, une partie absente ou pas encore analysée donne un message,
jamais une page cassée.
- La confirmation de la copie (« Copié » sur le bouton, 2 s) n'a pas
d'adresse.
- Le prompt contient, lui, le lien public de la position
(`https://ustagammon.sans.pub/#/position/<Position ID>/<Match ID>`),
qui se partage.
+1 -1
View File
@@ -22,7 +22,7 @@ Repris du cadrage (modules, écrans clés, IA générative en V1) et des ADR 001
| 1c. Match et réglages (fait) | Partie libre ou match en N points, règle Crawford, règle Jacoby, choix du niveau de l'ordinateur, conseil du maître activable ou non ; écran de nouvelle partie | 1a, 1b |
| 1d. Conseil du maître (fait) | Après chaque coup du joueur, jamais avant (ADR 0011) : appréciation du moteur (bon coup, imprécision, erreur, grosse erreur) avec mot, icône et couleur, phrase du maître fondée sur les chiffres du moteur, coup recommandé montré sur demande ; aussi pour les décisions de videau ; calcul en arrière-plan sans retarder le jeu | 1a |
| 1e. Fin de partie et analyse (fait) | Bilan (ADR 0011) : résultat, coups par appréciation, taux d'erreur comparé à la chance, « le coup à revoir » ; écran d'analyse : graphe d'équité (toucher un point ouvre la position), liste des erreurs filtrable, visualiseur pas à pas coup joué contre meilleur coup, « Rejouer d'ici » | 1a, 1b, 1d |
| 1f. Prompts à copier | Gabarits versionnés et testés (`docs/prompts/` ou équivalent, source unique), bouton « Demander à une IA » sur le plateau, le conseil du maître, l'analyse et la fin de partie ; le moteur décide, l'IA explique | 1d, 1e |
| 1f. Prompts à copier (fait) | Gabarits versionnés et testés (`docs/prompts/` ou équivalent, source unique), bouton « Demander à une IA » sur le plateau, le conseil du maître, l'analyse et la fin de partie ; le moteur décide, l'IA explique | 1d, 1e |
| 1g. Accueil, tutoriel et leçons | Accueil (reprendre, nouvelle partie, prochaine leçon, progression résumée), tutoriel des règles interactif et illustré (0e.5), cinq premières leçons numérotées (ADR 0011) avec positions et « à vous de jouer », progression locale ; contenus CC BY-SA 4.0 en brouillon, à relire par un joueur fort | 0e.5, 1a |
| 1h. Progression | Historique des parties et courbe du taux d'erreur | 1b, 1e |
| 1i. Plateau soigné | Dessin du plateau aligné sur la charte (`docs/identite/charte/board.js`), animations des pions, glisser-déposer en plus du toucher, double toucher pour le seul coup évident | 0e.3 |
+1
View File
@@ -68,6 +68,7 @@ exportée. `make test` vérifie le lien dans les deux sens : chaque fiche avec
| [Pli](pli.md) | Ply |
| [Point](point.md) | Point |
| [Prendre](prendre.md) | Take |
| [Prompt](prompt.md) | Prompt |
| [Règle de Crawford](regle-de-crawford.md) | Crawford rule |
| [Règle de Jacoby](regle-de-jacoby.md) | Jacoby rule |
| [SGF](sgf.md) | SGF |
+16
View File
@@ -0,0 +1,16 @@
---
term: Prompt
english: Prompt
code: Prompt
---
# Prompt
**En bref** : la question toute prête que l'application copie pour une IA (« Demander à une IA ») : la position, les chiffres de GNU Backgammon, et ce qu'on demande ; il suffit de la coller dans l'IA de votre choix.
L'application n'appelle aucune IA et n'envoie rien : elle prépare le texte,
vous le relisez, vous le copiez. Le moteur décide, l'IA explique : le prompt
lui demande de ne pas contredire les évaluations de GNU Backgammon, qui
restent celles que l'application affiche. Il contient aussi le lien de la
position, pour la retrouver dans l'application.
Voir aussi : [Lien de position](lien-de-position.md), [Moteur](moteur.md), [Conseil du maître](conseil-du-maitre.md)
+34 -15
View File
@@ -76,9 +76,11 @@ interrompre.
demande au moteur si le coup du joueur fait partie des coups permis attendus.
- **Les pions bougent** : sur un écran d'explication, le coup illustré se joue
tout seul après une seconde, pion par pion (`duration-fast`), puis reste
affiché ; « Revoir » le rejoue. Sur les écrans à flèches (sens du jeu), un
tracé en pointillés `text` sur un liseré ivoire, jamais en brique (la brique
veut dire « à faire »).
affiché ; « Revoir » le rejoue. Sur l'écran du sens du jeu, **deux flèches
circulaires** : une claire pour vos pions, une sombre pour ceux de
l'ordinateur, chacune dans le sens de son joueur et finissant par une pointe,
dessinées sous les pions, avec un liseré de la couleur opposée pour rester
lisibles sur le plateau ; jamais en brique (la brique veut dire « à faire »).
- Un geste juste : coche `verdict-good`, vibration « pion posé », phrase
courte, « Continuer » devient l'action principale. Un geste faux : le pion
revient, et une phrase dit pourquoi, sans le mot « erreur ».
@@ -87,14 +89,14 @@ interrompre.
### Texte, première version
1. **Le but du jeu.** « Vous avez quinze pions ivoire, l'ordinateur quinze
pions noyer. Chacun fait faire le tour du plateau à ses pions, puis les
1. **Le but du jeu.** « Vous avez quinze pions blancs, l'ordinateur quinze
pions noirs. Chacun fait faire le tour du plateau à ses pions, puis les
sort. Le premier qui a sorti tous les siens gagne la partie. »
2. **Dans quel sens avancer.** « Vos pions ivoire font le tour du plateau dans
le sens des pointillés : ils partent d'en haut à droite, passent à gauche,
puis reviennent en bas jusqu'aux six dernières flèches, en bas à droite.
C'est là que vous les rassemblerez avant de les sortir. Les pions noyer de
l'ordinateur font le même chemin, en sens inverse. »
2. **Dans quel sens avancer.** « Vos pions suivent la flèche claire : ils
partent d'en haut à droite, passent à gauche, puis reviennent en bas jusqu'à
votre jan intérieur, les flèches 1 à 6. C'est là que vous les rassemblez
avant de les sortir. Les pions de l'ordinateur suivent la flèche sombre, en
sens inverse, jusqu'à son jan intérieur, les flèches 19 à 24. »
3. **Les dés et les doubles.** « Chaque dé déplace un pion d'autant de
flèches. Avec 5 et 2, vous jouez un pion de 5 et un pion de 2, ou le même
pion de 5 puis de 2. Un double se joue quatre fois : avec 4-4, vous avancez
@@ -106,16 +108,16 @@ interrompre.
point 7 avec 6-1.
5. **Rentrer depuis la barre.** « Votre pion frappé attend sur la barre, au
milieu. Avant de jouer quoi que ce soit d'autre, il doit rentrer dans le
camp adverse, en haut à droite. Chaque dé indique une flèche d'entrée :
jan intérieur de l'ordinateur, en haut à droite. Chaque dé indique une flèche d'entrée :
avec 3 et 4, la 22 ou la 21. Si les deux flèches sont fermées, votre tour
passe. »
6. **Sortir ses pions.** « Quand vos quinze pions sont dans les six dernières
flèches, vous pouvez commencer à les sortir : un 6 sort un pion de la
6. **Sortir ses pions.** « Quand vos quinze pions sont dans votre jan intérieur
(flèches 1 à 6), vous pouvez commencer à les sortir : un 6 sort un pion de la
flèche 6, un 1 un pion de la flèche 1. Touchez le pion, puis la sortie à
droite. » *À vous* : sortir deux pions avec 6-3.
7. **Gammon et backgammon.** « Une partie gagnée vaut 1 point. Si
l'adversaire n'a sorti aucun pion, c'est un gammon : 2 points ; s'il lui
reste en plus un pion sur la barre ou dans votre camp, c'est un
reste en plus un pion sur la barre ou dans votre jan intérieur, c'est un
backgammon : 3 points. En partie libre, gammon et backgammon ne comptent
que si le videau a été doublé : c'est la règle de Jacoby. »
8. **Le videau.** « Le cube aux faces 2, 4, 8, 16, 32 et 64 sert à miser.
@@ -164,7 +166,7 @@ ouvrir, partager et retrouver avec le bouton « retour » du téléphone.
| « Je découvre », « Toutes les leçons » | `#/tutoriel/1` |
| Étape *n* du tutoriel (« Continuer », « Retour », segments de la barre de progression) | `#/tutoriel/<n>` |
| « Je connais les règles », « Reprendre la partie » | l'écran de jeu |
| Un terme du jeu dans un texte (blot, barre, camp…) | `#/glossaire/<terme>` |
| Un terme du jeu dans un texte (blot, barre, jan intérieur…) | `#/glossaire/<terme>` |
| Une position illustrée, « Voir sur le plateau » | `#/position/<Position ID>/<Match ID>` |
| Aide, onglet « Jouer » | `#/aide` ; une question ouverte : `#/aide/<scénario>` |
| Menu | `#/menu` |
@@ -174,3 +176,20 @@ ouvrir, partager et retrouver avec le bouton « retour » du téléphone.
- Le bouton « retour » du téléphone ferme d'abord la feuille ou la question
ouverte, puis revient à l'écran précédent ; il ne quitte jamais une partie
sans retour possible.
## Vocabulaire : les jans
Le plateau se partage en quatre jans de six flèches. Les nommer simplifie les
explications (retour des premiers joueurs, 2026-11-11) :
| Flèches | Nom |
| --- | --- |
| 1 à 6 | votre jan intérieur |
| 7 à 12 | votre jan extérieur |
| 13 à 18 | le jan extérieur de l'ordinateur |
| 19 à 24 | le jan intérieur de l'ordinateur |
Le tutoriel, l'aide, le maître et les leçons emploient ces mots, avec un lien
vers leur fiche du glossaire à la première apparition. Fiches à créer :
`jan-interieur.md` (anglais : home board) et `jan-exterieur.md` (anglais :
outer board). « Camp » n'est plus employé dans les textes.
+15 -3
View File
@@ -206,9 +206,21 @@ Sur ordinateur, `←` et `→` passent d'un coup à l'autre.
Le bouton est secondaire partout, jamais l'action principale, avec l'icône
de copie : dans la feuille du maître (1d), dans la carte « Le coup à
revoir » du bilan, dans le visualiseur de l'analyse, et dans une fiche du
glossaire. Après la copie, le bandeau « Prompt copié » (`verdict-good`, 2 s),
puis le texte du prompt reste lisible dans une zone `surface-sunken`
repliable, pour qui veut le relire avant de le coller (composant `AskAI`).
glossaire. Le bouton ouvre la feuille du prompt : le texte y est lisible
dans une zone `surface-sunken`, pour qui veut le relire avant de le copier
(composant `AskAI`).
Recette de 1f :
- **Une seule feuille à la fois.** Depuis la feuille du maître, la feuille
du prompt en remplace le contenu, à la même hauteur, avec « ‹ Explication »
en haut à gauche pour revenir ; de même depuis le bilan (« ‹ Bilan »).
Depuis l'analyse et le glossaire, elle monte seule (« ‹ Analyse »,
« ‹ Glossaire »). Le retour du téléphone ramène à l'écran précédent.
- **La copie se confirme sur le bouton**, sans bandeau : « Copier le
prompt » devient « ✓ Copié » (coche, `verdict-good`) pendant 2 s, puis
revient. Si le navigateur refuse la copie, le texte est sélectionné et
une phrase invite à le copier avec le menu du téléphone.
## 1g. Leçons (`#/lecons`, `#/lecons/<n>/<écran>`)
+1 -1
View File
@@ -22,7 +22,7 @@ La palette, c'est le bois, les pions et le café, avec **un seul accent : le rou
- `accent-soft` : fond léger pour signaler « c'est à vous », avec du texte `text` dessus.
- Les appréciations de coups ont leurs propres couleurs, distinctes de la brique : `verdict-good` (vert), `verdict-doubtful` (ocre), `verdict-bad` (lie-de-vin). **Toujours avec le mot et l'icône**, jamais la couleur seule.
- `brand-laiton` (via `last-move`) marque le dernier coup joué, comme les charnières en laiton d'un plateau de tavla. Rien d'autre.
- Le plateau : cadre `frame` en noyer, fond `bed`, flèches impaires en `point-a` (noyer clair) et paires en `point-b` (chêne), barre `bar`, sorties `tray`. Le joueur a les pions ivoire (`checker-player`, l'apprenti), l'ordinateur les pions noyer (`checker-computer`, le maître), comme dans le logo.
- Le plateau : cadre `frame` en noyer, fond `bed`, flèches impaires en `point-a` (noyer clair) et paires en `point-b` (chêne), barre `bar`, sorties `tray`. Le joueur a les pions blancs (`checker-player`), l'ordinateur les pions noirs (`checker-computer`), chacun avec un contour et un filet (`checker-player-edge`, `checker-computer-edge`) qui le détachent de tous les fonds ; les pions du logo restent ivoire et noyer (ADR 0010, amendement du 2026-11-11).
- **À éviter** : le vert feutre de casino, le noir et or, les dégradés, les néons.
Les deux thèmes, clair et sombre, sont complets. Tous les textes atteignent 4,5:1 sur leurs fonds dans les deux thèmes ; les contours et marques porteuses de sens, 3:1.
+2
View File
@@ -8,6 +8,8 @@ Référence : `interaction.md`, maquettes « Révision UX » du canevas.
## Toutes tailles
- [ ] Flèches impaires en `point-a`, paires en `point-b` ; 12 et 13 de couleurs différentes.
- [ ] Numéros des flèches à l'extérieur du plateau, sur le cadre (bande haute et bande basse), en portrait comme en paysage ; jamais dans le fond du plateau entre les deux rangées.
- [ ] Pions de l'ordinateur lisibles partout : contour et filet `checker-computer-edge` (gris clair) visibles sur la barre, sur les flèches sombres et en thème sombre.
- [ ] Une seule action principale (brique) visible à la fois.
- [ ] Aucun `window.confirm` ni `alert` dans le code de l'app (`grep -rn "confirm(\|alert(" app/src` vide).
- [ ] Aucune cible tactile sous 44 × 44 px (boutons, pictogrammes, dés, videau).
+32 -32
View File
@@ -216,96 +216,96 @@
{
"name": "checker-player",
"value": {
"light": "#F7F0E2",
"dark": "#EDE3CF"
"light": "#FAFAF7",
"dark": "#F2F2EF"
},
"usage": "Pions du joueur : ivoire, l'apprenti."
"usage": "Pions du joueur : blancs."
},
{
"name": "checker-player-edge",
"value": {
"light": "#8C7A62",
"dark": "#8E7C64"
"light": "#6E6E69",
"dark": "#6E6E69"
},
"usage": "Contour et filet des pions du joueur."
"usage": "Contour et filet des pions blancs : gris foncé, pour qu'ils se détachent du fond clair du plateau."
},
{
"name": "checker-computer",
"value": {
"light": "#2E1C12",
"dark": "#140D09"
"light": "#1C1C1C",
"dark": "#141414"
},
"usage": "Pions de l'ordinateur : noyer sombre, le maître."
"usage": "Pions de l'ordinateur : noirs."
},
{
"name": "checker-computer-edge",
"value": {
"light": "#120A05",
"dark": "#A8957D"
"light": "#B5B5B0",
"dark": "#B5B5B0"
},
"usage": "Contour et filet des pions de l'ordinateur ; clair en thème sombre pour rester visible."
"usage": "Contour et filet des pions noirs : gris clair dans les deux thèmes, pour qu'ils se détachent de la barre, des flèches sombres et du fond sombre."
},
{
"name": "count-player",
"value": {
"light": "#2B1D15",
"dark": "#2B1D15"
"light": "#1C1C1C",
"dark": "#1C1C1C"
},
"usage": "Nombre écrit sur une pile de pions du joueur."
"usage": "Nombre écrit sur une pile de pions blancs."
},
{
"name": "count-computer",
"value": {
"light": "#F3EAD8",
"dark": "#F3EAD8"
"light": "#FAFAF7",
"dark": "#FAFAF7"
},
"usage": "Nombre écrit sur une pile de pions de l'ordinateur."
"usage": "Nombre écrit sur une pile de pions noirs."
},
{
"name": "die-player",
"value": {
"light": "#F7F0E2",
"dark": "#EDE3CF"
"light": "#FAFAF7",
"dark": "#F2F2EF"
},
"usage": "Dés du joueur."
"usage": "Dés du joueur, blancs comme ses pions."
},
{
"name": "pip-player",
"value": {
"light": "#2B1D15",
"dark": "#2B1D15"
"light": "#1C1C1C",
"dark": "#1C1C1C"
},
"usage": "Points des dés du joueur."
},
{
"name": "die-computer",
"value": {
"light": "#2E1C12",
"dark": "#140D09"
"light": "#1C1C1C",
"dark": "#141414"
},
"usage": "Dés de l'ordinateur."
"usage": "Dés de l'ordinateur, noirs comme ses pions."
},
{
"name": "pip-computer",
"value": {
"light": "#F3EAD8",
"dark": "#EDE3CF"
"light": "#FAFAF7",
"dark": "#F2F2EF"
},
"usage": "Points des dés de l'ordinateur."
},
{
"name": "cube",
"value": {
"light": "#F7F0E2",
"dark": "#EDE3CF"
"light": "#FAFAF7",
"dark": "#F2F2EF"
},
"usage": "Face du videau."
},
{
"name": "cube-text",
"value": {
"light": "#2B1D15",
"dark": "#2B1D15"
"light": "#1C1C1C",
"dark": "#1C1C1C"
},
"usage": "Valeur du videau (2, 4, 8…)."
},
-42
View File
@@ -1,42 +0,0 @@
# Prompts à copier (1f)
- **Date** : 2026-11-03
- **Étape** : 1f (`docs/etape-1.md`)
- **Statut** : prévu (après 1e)
- **Exécutant** : sous-agent general-purpose, dans un worktree
## Objectif
Mettre en place la section « IA générative en V1 » du cadrage. Un bouton « Demander à une IA » copie un prompt rempli avec le contexte exact. Le moteur décide, l'IA explique. L'app n'appelle aucune IA.
## Consignes
1. **Gabarits.** Les cinq gabarits du cadrage sont versionnés dans une source unique sous `docs/prompts/`, sous licence CC BY-SA 4.0 :
- « pourquoi ce coup est meilleur » ;
- « expliquer cette décision de videau » ;
- « bilan de ma partie » ;
- « expliquer ce concept » ;
- « créer des exercices », à garder pour la progression.
Chaque gabarit contient :
- le rôle et le niveau du joueur ;
- le Position ID et le Match ID ;
- un diagramme texte de la position, produit à partir du plateau décodé par le moteur ;
- les chiffres du moteur, avec le niveau d'évaluation ;
- la consigne de ne pas contredire ces chiffres ;
- la langue.
Ajouter aussi le lien `#/position/...` de l'ADR 0013, avec l'adresse publique du site.
2. **Remplissage.** Une fonction pure remplit les gabarits. Elle est testée sur des analyses réelles du moteur : aucun champ vide ni `{inconnu}`, et les chiffres sont identiques à ceux du moteur.
3. **Boutons.** Ils sont placés sur le conseil du maître (feuille d'explication), le bilan, l'analyse et la fiche d'un terme du glossaire. La copie passe par `navigator.clipboard`, avec un repli de sélection du texte. Un bandeau « Prompt copié » l'accompagne, et le texte reste visible pour qui veut le relire.
4. **Tests.**
- Scénarios Gherkin : copier le prompt d'une erreur, et celui d'un bilan.
- `make lint`, `make test` et `make test-browser`, avec lecture du presse-papiers dans Chromium et captures.
## Critères de réussite
Le prompt copié après une erreur contient la position, les identifiants gnubg et le top 3 du moteur avec les mêmes chiffres que l'app. Les trois commandes passent.
## Résultat
À remplir à la clôture.
+58
View File
@@ -0,0 +1,58 @@
# Les prompts à copier pour une IA
Les textes que l'application copie dans le presse-papiers quand on touche
« Demander à une IA » (étape 1f ; `docs/cadrage.md`, « IA générative en
V1 »). L'application n'appelle aucune IA : elle prépare une question
complète, que le joueur colle dans l'IA de son choix. Règle d'or : **le
moteur décide, l'IA explique**.
Une seule source (ADR 0008) : `make site` copie ce dossier dans le site
publié (`docs/prompts/`), l'application lit les gabarits à l'exécution
(`app/src/domain/prompts/`), et `make test` remplit chacun d'eux avec de
vraies analyses du moteur (`app/tests/prompts.test.ts`) : aucun repère
laissé vide, et les chiffres du prompt sont ceux que l'application affiche.
Textes sous licence **CC BY-SA 4.0**. Version 1, rédigée par Claude Code
d'après le cadrage, **à relire** par Pierre.
## Les gabarits
| Fichier | Bouton | Où |
| --- | --- | --- |
| [coup.md](coup.md) | Pourquoi ce coup est meilleur | Feuille du maître, bilan, analyse |
| [videau.md](videau.md) | Expliquer cette décision de videau | Feuille du maître, bilan, analyse |
| [bilan.md](bilan.md) | Bilan de ma partie | Bilan de fin de partie |
| [concept.md](concept.md) | Expliquer ce concept | Fiche d'un terme du glossaire |
| [exercices.md](exercices.md) | Créer des exercices | Progression (étape 1h, pas encore de bouton) |
Chaque prompt contient :
- le rôle de l'IA (un coach) et, quand il est mesuré, le niveau du joueur ;
- la position : Position ID et Match ID de GNU Backgammon, le lien qui
l'ouvre dans l'application (`https://ustagammon.sans.pub/#/position/…`,
ADR 0013) et un diagramme texte dessiné d'après le plateau décodé par le
moteur ;
- les chiffres du moteur, avec le niveau d'évaluation (en plis) ;
- la consigne de ne pas recalculer ni contredire ces chiffres ;
- la langue de la réponse.
## Format
Dans chaque fichier, le gabarit est le bloc de texte qui suit le titre
`## Gabarit`. Le reste du fichier n'est pas lu. Les mots entre accolades sont
remplis par l'application ; un repère inconnu ou une valeur vide est une
erreur, vérifiée par les tests.
Repères communs à plusieurs gabarits :
| Repère | Ce qu'il devient |
| --- | --- |
| `{joueur}` | « Je suis un joueur de niveau Avancé. », le niveau que donne GNU Backgammon d'après l'erreur par décision, seulement à partir de 20 décisions analysées ; en dessous, « Je débute au backgammon. ». Le taux d'erreur lui-même n'apparaît que dans le bilan. |
| `{position_id}`, `{match_id}` | les identifiants de GNU Backgammon de la position |
| `{au_trait}` | « moi » ou « l'ordinateur » : celui dont les identifiants décrivent le point de vue |
| `{lien}` | l'adresse de la position dans l'application publiée |
| `{diagramme}` | le plateau en texte : vos pions X, ceux de l'ordinateur O, dans votre numérotation |
| `{score}` | « partie libre » ou le score du match |
| `{videau}` | sa valeur et qui le possède |
| `{niveau_eval}` | le niveau d'évaluation de GNU Backgammon, « analyse à 2 plis » |
| `{langue}` | la langue de la réponse : « français » |
+44
View File
@@ -0,0 +1,44 @@
# Bilan de ma partie
Bouton « Demander à une IA » de la carte « Le coup à revoir » du bilan de
fin de partie. Texte sous licence CC BY-SA 4.0 (voir
[README.md](README.md)).
Repères propres à ce gabarit :
| Repère | Ce qu'il devient |
| --- | --- |
| `{ordinateur}` | le niveau de l'ordinateur, « Intermédiaire » |
| `{resultat}` | le résultat de la partie, et le score du match s'il y en a un |
| `{decomptes}` | vos décisions par appréciation, comme les trois cases du bilan |
| `{taux}`, `{decisions}`, `{niveau_jeu}` | votre erreur par décision, le nombre de décisions comptées et le niveau correspondant, comme « Voir les chiffres du moteur » de l'analyse |
| `{taux_ordinateur}` | la même mesure pour l'ordinateur |
| `{chance}`, `{chance_mots}`, `{chance_ordinateur}` | la chance par tour de vos dés, en chiffres et en mots, et celle de l'ordinateur |
| `{erreurs}` | vos imprécisions et erreurs, coup par coup, avec leur coût |
| `{position_titre}` | ce que montre la position : le coup à revoir, ou la position finale s'il n'y en a pas |
## Gabarit
```text
Tu es un coach de backgammon, bienveillant et précis. {joueur}
Je viens de finir une partie contre l'ordinateur (niveau {ordinateur}), analysée par GNU Backgammon ({niveau_eval}).
Résultat : {resultat}.
Mes décisions : {decomptes}.
Mon erreur par décision : {taux} sur {decisions}, soit le niveau {niveau_jeu} ; celle de l'ordinateur : {taux_ordinateur}.
La chance de mes dés par tour : {chance} ({chance_mots}) ; celle de l'ordinateur : {chance_ordinateur}.
Mes imprécisions et erreurs, avec leur coût en équité :
{erreurs}
{position_titre} (GNU Backgammon, Position ID : {position_id}, Match ID : {match_id} ; ces identifiants la décrivent du point de vue du joueur qui a la main : {au_trait}).
Elle s'ouvre aussi à cette adresse : {lien}
{diagramme}
Score : {score}. Videau : {videau}.
Ces évaluations font foi : ne les recalcule pas et ne les contredis pas.
À partir de ce bilan, identifie trois thèmes que je devrais travailler en priorité, avec pour chacun un conseil concret.
Réponds en {langue}, simplement, en moins de 300 mots.
```
+36
View File
@@ -0,0 +1,36 @@
# Expliquer ce concept
Bouton « Demander à une IA » sur la fiche d'un terme du glossaire (« Les
mots du jeu »). La position d'exemple est celle de la partie en cours, ou la
position de départ s'il n'y en a pas. Texte sous licence CC BY-SA 4.0 (voir
[README.md](README.md)).
Repères propres à ce gabarit :
| Repère | Ce qu'il devient |
| --- | --- |
| `{concept}` | le terme, et son nom anglais s'il en a un |
| `{definition}` | la phrase « En bref » de sa fiche |
| `{position_titre}` | « une position de ma partie en cours » ou « la position de départ » |
| `{evaluation}` | les chances de gagner et l'équité du joueur au trait, avant de lancer les dés |
## Gabarit
```text
Tu es un coach de backgammon, bienveillant et précis. {joueur}
Explique-moi le concept {concept}.
Mon application le définit ainsi : {definition}
Pour l'illustrer, voici {position_titre} (GNU Backgammon, Position ID : {position_id}, Match ID : {match_id} ; ces identifiants la décrivent du point de vue du joueur qui a la main : {au_trait}).
Elle s'ouvre aussi à cette adresse : {lien}
{diagramme}
Score : {score}. Videau : {videau}.
Évaluation de GNU Backgammon ({niveau_eval}), pour le joueur qui a la main ({au_trait}), avant de lancer les dés : {evaluation}.
Ces évaluations font foi : ne les recalcule pas et ne les contredis pas.
Explique ce concept simplement, avec une analogie de la vie courante, puis dis s'il joue un rôle dans cette position et comment.
Réponds en {langue}, en moins de 250 mots.
```
+36
View File
@@ -0,0 +1,36 @@
# Pourquoi ce coup est meilleur
Bouton « Demander à une IA » sur un coup du joueur : feuille d'explication
du maître, carte « Le coup à revoir » du bilan, visualiseur de l'analyse.
Texte sous licence CC BY-SA 4.0 (voir [README.md](README.md)).
Repères propres à ce gabarit :
| Repère | Ce qu'il devient |
| --- | --- |
| `{des}` | le jet joué, « 3-1 » |
| `{coup_joue}` | votre coup, dans la notation de GNU Backgammon |
| `{appreciation}` | le mot du maître : « Bon coup », « Imprécision », « Erreur » ou « Grosse erreur » |
| `{rang}` | « le meilleur coup » ou « le 4e choix sur 15 coups possibles » |
| `{classement}` | le classement du moteur : les trois meilleurs coups, et le vôtre s'il n'en est pas, avec leur équité et leur écart au meilleur, comme dans « Voir les chiffres du moteur » |
## Gabarit
```text
Tu es un coach de backgammon, bienveillant et précis. {joueur}
Voici la position avant mon coup (GNU Backgammon, Position ID : {position_id}, Match ID : {match_id} ; ces identifiants la décrivent du point de vue du joueur qui a la main : {au_trait}).
Elle s'ouvre aussi à cette adresse : {lien}
{diagramme}
Score : {score}. Videau : {videau}. Dés : {des}.
J'ai joué {coup_joue} : {rang}, jugé « {appreciation} ».
Classement de GNU Backgammon ({niveau_eval}), équités du point de vue du joueur qui joue :
{classement}
Ces évaluations font foi : ne les recalcule pas et ne les contredis pas.
Explique-moi pourquoi le meilleur coup est supérieur au mien : quels concepts sont en jeu, et ce que je dois retenir pour la prochaine fois.
Réponds en {langue}, simplement, en moins de 200 mots.
```
+36
View File
@@ -0,0 +1,36 @@
# Créer des exercices
Prévu pour l'écran de progression (étape 1h) : le gabarit est écrit et
testé, sans bouton pour l'instant. Il rassemble les erreurs de vos
dernières parties analysées. Texte sous licence CC BY-SA 4.0 (voir
[README.md](README.md)).
Repères propres à ce gabarit :
| Repère | Ce qu'il devient |
| --- | --- |
| `{parties}` | le nombre de parties analysées |
| `{erreurs}` | vos erreurs les plus coûteuses sur ces parties, avec leur coût |
| `{position_titre}` | la plus coûteuse d'entre elles |
## Gabarit
```text
Tu es un coach de backgammon, bienveillant et précis. {joueur}
Voici mes {parties} dernières parties contre l'ordinateur, analysées par GNU Backgammon ({niveau_eval}).
Mes erreurs les plus coûteuses, avec leur coût en équité :
{erreurs}
{position_titre} (GNU Backgammon, Position ID : {position_id}, Match ID : {match_id} ; ces identifiants la décrivent du point de vue du joueur qui a la main : {au_trait}).
Elle s'ouvre aussi à cette adresse : {lien}
{diagramme}
Score : {score}. Videau : {videau}.
Ces évaluations font foi : ne les recalcule pas et ne les contredis pas.
Repère les thèmes qui reviennent dans ces erreurs, puis propose-moi cinq exercices ciblés : pour chacun, le thème, une position type décrite simplement, et ce que je dois y chercher.
Réponds en {langue}, en moins de 350 mots.
```
+40
View File
@@ -0,0 +1,40 @@
# Expliquer cette décision de videau
Bouton « Demander à une IA » sur une décision de videau du joueur (doubler,
lancer sans doubler, prendre, passer) : feuille d'explication du maître,
carte « Le coup à revoir » du bilan, visualiseur de l'analyse. Texte sous
licence CC BY-SA 4.0 (voir [README.md](README.md)).
Repères propres à ce gabarit :
| Repère | Ce qu'il devient |
| --- | --- |
| `{decision}` | la question posée : « doubler ou lancer les dés sans doubler » ou « prendre ou passer le double de l'ordinateur » |
| `{choix}` | votre décision, « passer » |
| `{choix_moteur}` | la décision que préfère GNU Backgammon |
| `{appreciation}` | le mot du maître : « Bonne décision », « Imprécision », « Erreur » ou « Grosse erreur » |
| `{qui_double}` | « moi » ou « l'ordinateur » : celui qui double ou non |
| `{equites}` | les équités sans double, double et prise, double et refus, comme dans « Voir les chiffres du moteur » |
| `{ecart}` | l'équité perdue par votre décision |
## Gabarit
```text
Tu es un coach de backgammon, bienveillant et précis. {joueur}
Voici la position au moment d'une décision de videau (GNU Backgammon, Position ID : {position_id}, Match ID : {match_id} ; ces identifiants la décrivent du point de vue du joueur qui a la main : {au_trait}).
Elle s'ouvre aussi à cette adresse : {lien}
{diagramme}
Score : {score}. Videau : {videau}.
Il fallait choisir : {decision}. J'ai choisi de {choix}, jugé « {appreciation} » ; GNU Backgammon aurait choisi de {choix_moteur}.
Équités calculées par GNU Backgammon ({niveau_eval}), du point de vue de celui qui double ou non ({qui_double}), pour un videau de 1 :
{equites}
Écart de ma décision : {ecart}.
Ces évaluations font foi : ne les recalcule pas et ne les contredis pas.
Explique-moi cette décision : pourquoi doubler ou non, prendre ou passer, quels repères de la position comptent, et ce que je dois retenir.
Réponds en {langue}, simplement, en moins de 200 mots.
```
+1
View File
@@ -59,6 +59,7 @@ Règles d'écriture :
| [jouer-un-match.feature](jouer-un-match.feature) | Choisir sa partie (libre ou match, niveau) et jouer un match | Étape 1c |
| [comprendre-mes-coups.feature](comprendre-mes-coups.feature) | Comprendre ses coups avec le conseil du maître | Étape 1d |
| [revoir-ma-partie.feature](revoir-ma-partie.feature) | Revoir sa partie : bilan, coup à revoir, analyse, rejouer d'ici | Étape 1e |
| [demander-a-une-ia.feature](demander-a-une-ia.feature) | Demander à une IA d'expliquer un coup, une partie ou un mot | Étape 1f |
| [mes-parties.feature](mes-parties.feature) | Retrouver mes parties, leurs branches, les exporter en SGF | Étape 1b |
| [partager-une-position.feature](partager-une-position.feature) | Ouvrir et partager le lien d'une position | Étape 0e.4 |
| [regler-l-application.feature](regler-l-application.feature) | Régler l'application (menu), la mettre à jour | Étape 0e |
+45
View File
@@ -0,0 +1,45 @@
# language: fr
Fonctionnalité: Demander à une IA d'expliquer un coup, une partie ou un mot
Le maître dit quel coup il aurait joué ; pour comprendre pourquoi, vous
pouvez demander à une IA de votre choix. Touchez « Demander à une IA »
dans l'explication du maître, sur le bilan, dans l'analyse ou sur la fiche
d'un mot du jeu : l'application prépare une question complète, avec la
position, son lien et les chiffres de GNU Backgammon. Relisez-la, copiez-la,
puis collez-la dans l'IA. L'application n'appelle aucune IA et n'envoie
rien : le moteur décide, l'IA explique, et la question lui demande de ne
pas contredire les chiffres du moteur.
Scénario: Comment demander à une IA d'expliquer mon erreur ?
Touchez « Demander à une IA » dans l'explication du maître : la question
donne la position avant votre coup, dessinée en texte, ses identifiants
de GNU Backgammon et son lien, puis les trois meilleurs coups du maître et
le vôtre, avec les mêmes chiffres que l'explication du maître.
Étant donné que vous avez joué 24/23 13/10 avec un 3-1 d'ouverture
Quand vous demandez à une IA d'expliquer ce coup
Alors la question donne la position, avec son Position ID, son Match ID et son lien
Et elle donne les trois meilleurs coups du maître et le vôtre, avec les chiffres de l'explication
Et elle demande à l'IA de ne pas contredire ces chiffres, et de répondre en français
Scénario: Comment demander à une IA le bilan de ma partie ?
Sur le bilan, « Demander à une IA » prépare une question sur toute la
partie : le résultat, vos décisions par appréciation, votre niveau, la
chance des dés, vos erreurs et leur coût, et la position du coup à
revoir. L'IA vous propose trois thèmes à travailler.
Étant donné une partie finie où vous avez joué 6/5 5/off avec 6-1, puis passé le double de l'ordinateur
Quand vous demandez à une IA le bilan de votre partie
Alors la question donne vos décisions, votre niveau et la chance des dés, comme le bilan
Et elle cite votre coup 6/off, le coup du maître 6/off 1/off et leur écart
Et elle donne la position du coup à revoir
Scénario: Puis-je demander à une IA d'expliquer un mot du jeu ?
Oui : sur la fiche d'un mot du glossaire, la question reprend sa
définition et l'illustre par la position de votre partie en cours, ou par
la position de départ, avec l'évaluation de GNU Backgammon.
Étant donné qu'aucune partie n'est en cours
Quand vous demandez à une IA d'expliquer le mot « Videau »
Alors la question reprend la définition de sa fiche
Et elle l'illustre par la position de départ, avec les chances de gagner selon GNU Backgammon