<!-- SPDX-FileCopyrightText: 2026 Com'Together -->
<!-- SPDX-License-Identifier: AGPL-3.0-only -->

# Modifier « Ma communication » avec votre propre Claude Code

Bienvenue. Cet outil de **Communication Alternative et Augmentée** est **libre**
(licence AGPL-3.0). Vous pouvez le lire, l'installer, l'adapter et le rediffuser.
Ce document explique comment le reprendre **proprement**, y compris avec l'assistant
[Claude Code](https://claude.com/claude-code).

> L'essentiel en une phrase : c'est un site web « à l'ancienne » (HTML + JavaScript,
> **sans framework ni étape de compilation**), qui tourne **100 % sur l'appareil**, hors-ligne.
> Vous éditez un fichier, vous rechargez la page, c'est tout.

---

## 1. Lancer l'outil en local (2 minutes)

Il faut le servir par une **adresse web** (le double-clic sur `index.html` ne suffit pas :
les modules et le mode hors-ligne ont besoin d'un vrai serveur). Le plus simple, avec Python :

```bash
python -m http.server 8765
```

Puis ouvrez **http://localhost:8765** dans Chrome ou Edge. (Alternative sans Python : `npx serve`.)

---

## 2. Modifier avec Claude Code

1. Installez **Claude Code**, puis, dans un terminal, placez-vous dans ce dossier et lancez :
   ```bash
   claude
   ```
2. Claude Code lit **automatiquement** le fichier `CLAUDE.md` fourni ici : il connaît donc
   déjà les règles du projet (voir §5) sans que vous ayez à les répéter.
3. Décrivez votre changement en langage naturel (« ajoute le mot… », « corrige la conjugaison de… »,
   « change la couleur… »). Claude modifie les fichiers concernés.
4. **Après chaque changement**, faites la boucle du §4 (incrémenter la version + vérifier + tests).

Claude Code peut aussi lancer le serveur, ouvrir les tests et vérifier la console pour vous.

---

## 3. Carte des fichiers

| Fichier | Rôle |
|---|---|
| `index.html` | La coquille : structure de la page, en-tête de sécurité (CSP), versions `?v=` |
| `app.js` | Cœur de l'appli : état, rendu de la grille, message, réglages, accès (balayage, regard, survol) |
| `grammar.js` | Conjugaison **à règles** (morphologie) + accords |
| `sentence.js` | Assemblage de la phrase : élision, contractions, négation, infinitif après préposition… |
| `custom.js` | Éditeur, scènes, pop-ups, recherche, mode « ancres » (compaction sémantique) |
| `piper.js` | Voix locale Piper (optionnelle ; la voix du système marche par défaut) |
| `service-worker.js` | Fonctionnement **hors-ligne** (cache) |
| `styles.css` | Toute la mise en forme |
| `vocab.default.json` | Le vocabulaire de base (colonnes, mots, pictos) |
| `dictionary.json` | Index mot → pictogramme |
| `assets/` | Les pictogrammes (Mulberry + originaux), icônes, animations |
| `tests/run.html` | Les tests du moteur de français (à garder **verts**) |
| `build/` | Scripts de génération (voir §4) |

---

## 4. La boucle de travail (toujours dans cet ordre)

1. **Modifier** le(s) fichier(s) voulu(s).
2. **Si les données ont changé** (vocabulaire / pictos) : régénérer avec
   `python build/build_vocab.py`.
   *Note :* ce script reconstruit `vocab.default.json` + `dictionary.json` à partir de la banque
   de pictogrammes Mulberry et d'un tableur de mots. Si vous ne disposez pas de ces sources,
   éditez directement `vocab.default.json` (et déposez le picto correspondant dans `assets/`).
3. **Incrémenter la version** (indispensable, sinon l'ancien cache reste) :
   ```bash
   python build/bump_version.py
   ```
   (met à jour le numéro de build dans `app.js`, le cache dans `service-worker.js`, et tous les `?v=`.)
4. **Vérifier** : rechargez http://localhost:8765, contrôlez **0 erreur** dans la console.
5. **Tests** : ouvrez `tests/run.html` — tout doit rester **vert**. Si vous touchez au français,
   ajoutez un « contrat » (un cas attendu) dans `tests/` avant de coder.

---

## 5. Règles NON négociables

Ces règles font la valeur de l'outil. Merci de les respecter dans toute version rediffusée.

- **Jamais moins de 49 cases** (au moins 7 colonnes). On n'appauvrit pas le langage d'une personne :
  on adapte la **perception** (zoom, contraste, espacement), pas le **nombre de mots**.
- **Aucune case sans pictogramme.** Pictos partout ; à défaut, une bulle de parole originale —
  **jamais** une carte-texte, **jamais** un emoji dans la grille.
- **Uniquement des ressources libres ET rediffusables** : **Mulberry Symbols** (CC BY-SA, avec
  attribution) + vos propres pictos originaux. **Jamais ARASAAC** (clause non-commerciale, incompatible).
- **100 % local, hors-ligne, RGPD** : aucune donnée ne quitte l'appareil. La politique de sécurité
  (`connect-src 'self'` dans `index.html`) l'empêche techniquement. **Ne l'assouplissez pas.**
- **La personne décide.** Chaque option reste **activable** par l'utilisateur (oral/écrit, ancres,
  survol…), jamais imposée. L'outil ne choisit pas à la place de la personne.
- Respect du français, anti-validisme, pro-diversité, pro-LGBTQ+.

---

## 6. Le moteur de français

La conjugaison est un **moteur à règles** (morphologie de type Bescherelle + irréguliers),
pas une simple liste de formes : il conjugue, accorde, élide et contracte tout seul.
Toute évolution du moteur doit être **verrouillée par un test** dans `tests/` (ajoutez le cas
attendu, puis codez jusqu'à ce qu'il passe). C'est ce qui garantit qu'on n'introduit pas de
régression en corrigeant un détail.

---

## 7. Licence AGPL-3.0 — vos obligations

L'outil est sous **GNU AGPL-3.0-only** (voir le fichier `LICENSE`).

- Vous pouvez l'utiliser, le modifier et le redistribuer **librement**.
- Vos versions modifiées doivent **rester sous AGPL-3.0**.
- **Spécificité AGPL** : si vous **mettez votre version en ligne** (accessible par le réseau),
  vous devez **offrir le code source** de cette version aux utilisateurs.
- Conservez les mentions de licence en tête des fichiers et l'attribution des pictogrammes Mulberry (CC BY-SA).

---

## 8. Publier votre version

C'est un dossier statique : déposez tout son contenu sur n'importe quel hébergement **HTTPS**
(le HTTPS est nécessaire au mode hors-ligne). Ouvrez l'adresse, et proposez « Installer »
(l'appli s'ajoute à l'écran d'accueil / s'installe comme un logiciel).

---

## Une question, une contribution ?

Écrivez-nous : **contact@comtogetherlearning.org**

Merci de faire vivre un outil libre au service de la communication de chacun·e.
