erplibre/.claude/skills/erplibre-commands/SKILL.md

111 lines
4 KiB
Markdown
Raw Normal View History

[REF] claude: trim the always-loaded guidance, and fix what it got wrong Every session paid ~4 000 tokens for CLAUDE.md and .claude/rules/, and part of that content no longer described this repository: CLAUDE.md and 05-environments.md gave .venv.odoo18/bin/python — a path that does not exist. The real one carries BOTH versions, .venv.odoo18.0_python3.12.10. 02-project-structure.md announced addons/ and odoo12.0/, absent from the checkout. That is the reason for the cuts, more than the token count: the files drifted from the repository, while « ls » cannot. What a session can rebuild by reading the code is now left to the code. 02-project-structure.md deleted — a tree that ls gives, and gives right 05-environments.md deleted — a venv list that was simply false 04-code-conventions.md reduced to a pointer at .flake8, .editorconfig and pyproject.toml, which already hold every value it repeated, plus the Git conventions, which they do not 01-versions.md table dropped for the pointer at conf/supported_version_erplibre.json, whose keys already pair Odoo with Python Two blocks move to lazy loading — their body costs nothing until invoked: 03-commands.md -> skill erplibre-commands (kept whole: there is no « make help » target, and the per-module test recipes carry flags nobody would guess) 07-documentation.md -> skill erplibre-doc-i18n for the how-to, while the prohibition « never edit a generated .md » STAYS in the rules: a rule that must hold at all times cannot live in a file loaded on demand Resident guidance: ~3 997 -> ~1 939 est. tokens per session. --- FR --- Chaque session payait environ 4 000 jetons pour CLAUDE.md et .claude/rules/, et une partie de ce contenu ne décrivait plus ce dépôt : CLAUDE.md et 05-environments.md donnaient .venv.odoo18/bin/python — un chemin qui n'existe pas. Le vrai porte les DEUX versions, .venv.odoo18.0_python3.12.10. 02-project-structure.md annonçait addons/ et odoo12.0/, absents du checkout. C'est la raison des coupes, plus encore que le nombre de jetons : les fichiers avaient dérivé par rapport au dépôt, ce que « ls » ne peut pas faire. Ce qu'une session peut reconstruire en lisant le code est désormais laissé au code. 02-project-structure.md supprimé — une arborescence que ls donne, et donne juste 05-environments.md supprimé — une liste de venvs simplement fausse 04-code-conventions.md réduit à un renvoi vers .flake8, .editorconfig et pyproject.toml, qui portent déjà toutes les valeurs qu'il répétait, plus les conventions Git, qu'ils ne portent pas 01-versions.md tableau abandonné au profit du renvoi vers conf/supported_version_erplibre.json, dont les clés apparient déjà Odoo et Python Deux blocs passent en chargement paresseux — leur corps ne coûte rien tant qu'il n'est pas invoqué : 03-commands.md -> skill erplibre-commands, conservée entière : il n'existe pas de cible « make help », et les recettes de test par module portent des drapeaux que personne ne devinerait 07-documentation.md -> skill erplibre-doc-i18n pour le mode d'emploi, tandis que l'interdiction « ne jamais éditer un .md généré » RESTE dans les règles : une règle qui doit tenir en permanence ne peut pas vivre dans un fichier chargé à la demande Consignes résidentes : environ 3 997 -> 1 939 jetons estimés par session. Assisted-by: Claude Opus 4.8
2026-08-02 03:16:36 -04:00
---
name: erplibre-commands
description: Commandes ERPLibre — changer de version Odoo, lancer/tester une instance, opérations base de données, tester un module précis avec couverture, formatage, Docker, Google Repo, installation. À charger dès qu'une commande make ou un script du dépôt est nécessaire.
---
## Changement de version Odoo
```bash
2026-03-17 04:00:55 -04:00
make switch_odoo_18 # Passer à Odoo 18 (défaut)
make switch_odoo_17 # Passer à Odoo 17
2026-03-17 04:00:55 -04:00
make switch_odoo_16 # Passer à Odoo 16
make switch_odoo_15 # Passer à Odoo 15
make switch_odoo_14 # Passer à Odoo 14
make switch_odoo_13 # Passer à Odoo 13
make switch_odoo_12 # Passer à Odoo 12
make switch_odoo_16_update # Passer + mettre à jour les dépendances
```
## Exécution
```bash
make run # Lancer Odoo (port 8069)
make run_test # Lancer avec la DB "test"
./run.sh -d ma_base # Lancer avec une DB spécifique
./odoo_bin.sh [args] # Exécuter odoo-bin directement
```
## Base de données
```bash
make db_create_db_test # Créer la DB "test"
make db_clone_test_to_test2 # Cloner test -> test2
./script/database/db_restore.py --database NOM --image IMAGE
./script/addons/install_addons_dev.sh DB module1,module2
./script/addons/update_addons_all.sh DB
```
## Tests
[ADD] make: une cible pour les tests unitaires, dépendance mobile déclarée Ces 382 tests ne tournaient que lancés à la main, donc jamais. « make test » demande une base de données et plusieurs minutes ; ceux-ci lisent le code et exécutent les fragments de shell générés, sudo, pgrep et pkill bouchonnés, en une dizaine de secondes. Deux cibles : test_unit, et test_unit_file pour la boucle d'écriture. La dépendance à mobile/erplibre_home_mobile est DITE plutôt que supposée : le lanceur l'annonce présente ou absente, et les tests du vrai transfert se déclarent ignorés — avec la commande qui manque — au lieu de passer en silence. Vérifié dans les trois états : dépôt absent, présent non compilé, compilé. Au passage, compile_and_run.sh vérifie le transfert des dépôts, comme l'installation d'une VM et par le même script. --- EN --- These 382 tests only ran when invoked by hand, so never. "make test" wants a database and several minutes; these read the code and run the generated shell fragments with sudo, pgrep and pkill stubbed, in about ten seconds. Two targets: test_unit, and test_unit_file for the writing loop. The dependency on mobile/erplibre_home_mobile is STATED rather than assumed: the runner announces it present or absent, and the real-transfer tests declare themselves skipped — naming the missing command — instead of passing quietly. Checked in all three states: repo absent, present but unbuilt, built. Along the way, compile_and_run.sh verifies the repo transfer, like a VM install and through the same script. Assisted-by: Claude Opus 5
2026-08-21 20:06:23 -04:00
### Unitaires python (rapides, sans base de données)
```bash
make test_unit # tout ce qui tourne sans DB ni Odoo
make test_unit_file F=test/test_qemu_motd.py # un seul fichier
```
Ils lisent le code et exécutent les fragments de shell générés par `todo.py`,
avec `sudo`, `pgrep` et `pkill` bouchonnés — quelques secondes. Le lanceur
annonce sa dépendance à `mobile/erplibre_home_mobile` : absent, les tests du
transfert mobile se déclarent ignorés au lieu de passer en silence.
### Suite complète (base de données requise)
```bash
make test # Tests de base + format
make test_full_fast # Tests complets en parallèle
make test_full_fast_coverage # Avec couverture de code
2026-03-17 04:00:55 -04:00
make open_test_coverage # Ouvrir le rapport HTML de couverture
```
2026-03-17 04:00:55 -04:00
### Tester un module spécifique
```bash
# 1. Supprimer la DB de test et lancer les tests du module
./odoo_bin.sh db --drop --database test_mon_module
./test.sh -d test_mon_module --db-filter test_mon_module -i mon_module
# 2. Lancer un fichier de test précis
./odoo_bin.sh db --drop --database test_mon_module
./script/addons/install_addons_dev.sh test_mon_module mon_module
./test.sh -d test_mon_module --db-filter test_mon_module -i mon_module \
--test-file=addons/MON_REPO/mon_module/tests/test_mon_fichier.py
# 3. Avec couverture de code
./.venv.erplibre/bin/coverage erase
./odoo_bin.sh db --drop --database test_mon_module
./test.sh -d test_mon_module --db-filter test_mon_module -i mon_module
./.venv.erplibre/bin/coverage combine -a
./.venv.erplibre/bin/coverage report -m
./.venv.erplibre/bin/coverage html
```
> `test.sh` est un alias de `run.sh` avec `ODOO_MODE_TEST=true --workers 0`.
## Formatage du code
```bash
make format # Fichiers à commiter uniquement
make format_all # Tout formater (parallèle)
```
## Docker
```bash
make docker_run_daemon # Lancer en production
make docker_build_odoo_18 # Builder l'image Odoo 18
```
## Google Repo (gestion multi-dépôts)
```bash
make repo_show_status # Statut de tous les dépôts addons
make repo_configure_all # Configurer tous les dépôts
make repo_do_stash # Stash tous les dépôts
.venv.erplibre/bin/repo sync # Synchroniser les dépôts
```
## Installation
```bash
make install_os # Dépendances système
make install_odoo_18 # Installer Odoo 18 complet
```
2026-03-17 04:00:55 -04:00
# Tester un seul module Odoo
./run.sh -d test --log-level=test --test-enable --stop-after-init -i nom_module
# Tester un fichier de test spécifique
./run.sh -d test --log-level=test --test-enable --stop-after-init --test-file chemin/vers/test.py