erplibre/.claude/rules/04-code-conventions.md

37 lines
1.7 KiB
Markdown
Raw Normal View History

# Conventions de code
[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
Le formatage et le lint sont entièrement décrits par les fichiers de
configuration du dépôt — les lire plutôt que de supposer : `.flake8`,
`.editorconfig`, et les sections `[tool.black]` / `[tool.isort]` de
`pyproject.toml`. `make format` applique l'ensemble.
[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
Prettier (via npm) formate XML/JSON/YAML ; `.editorconfig` donne les
indentations par type de fichier.
## Git
- Branches : `develop` (développement), `master` (production)
- Pas de submodules Git — utilise **Google Repo** pour les addons
- Manifests XML dans `manifest/` pour chaque version Odoo
[UPD] claude: align the commit command with the AI policy The template wrote « Generated by Claude Code », the form AI_POLICY.md replaces with the Assisted-by trailer. Three defects rode along: the model came from ~/.claude/settings.json, which has no model key here, so it declared the sonnet default rather than the truth; --author alone failed on the committer, this checkout having no git identity; and [UPD] was missing from the tag table while being the most used tag, 134 of the last 400. The model now comes from the session transcript, the only source that follows a /model switch — checked, it prints Claude Opus 5. The timezone is left to the system so contributors keep their own, and the menu substitutes name and email separately, the placeholders no longer being adjacent. --- FR --- Le gabarit écrivait « Generated by Claude Code », la forme que AI_POLICY.md remplace par le trailer Assisted-by. Trois défauts l'accompagnaient : le modèle venait de ~/.claude/settings.json, sans clé model ici, si bien qu'il déclarait le défaut sonnet plutôt que la vérité ; --author seul échouait sur le committer, ce checkout n'ayant aucune identité git ; et [UPD] manquait au tableau des tags alors qu'il est le plus utilisé, 134 des 400 derniers. Le modèle vient désormais de la transcription de session, seule source qui suive un changement par /model — vérifié, elle rend Claude Opus 5. Le fuseau est laissé au système, pour que chaque contributeur garde le sien, et le menu substitue nom et courriel séparément, les jetons n'étant plus accolés. Assisted-by: Claude Opus 5
2026-08-07 01:56:11 -04:00
- Format de commit : `[TYPE] portée : sujet`, sujet à l'impératif, 72
caractères au plus. Tags réellement utilisés : `[UPD]`, `[FIX]`, `[ADD]`,
`[IMP]`, `[REF]`.
### Tout commit assisté par IA
Trois exigences, sans exception — `AI_POLICY.md` en donne la raison :
- Trailer `Assisted-by: <modèle>`, une ligne par modèle. C'est **binaire** :
il y a eu IA ou non, aucun seuil à apprécier.
- **Jamais** d'IA dans `Co-authored-by:` — ce champ est réservé aux humains.
- Corps **bilingue** : le corps, puis `--- FR ---` (ou `--- EN ---`, le
marqueur nomme la langue de ce qui SUIT), puis la traduction.
Court et direct : **10 lignes par langue**, 15 est déjà long. Le corps dit
pourquoi c'était nécessaire, puis s'arrête. Rien de ce que le diff montre
déjà ; on garde le symptôme, le chiffre mesuré et la vérification.
Le mode d'emploi complet — résolution dynamique du modèle, gabarit, identité
git, taille des correctifs — est dans
`conf/template_claude_commands_commit.md`, déployable en `/commit` par
`TODO › Execute › GPT code › Claude configs`.