Conventions de rédaction - pas de caractères "IA"
Règle transverse, valable pour tout texte produit dans ce dépôt : documentation .md, commentaires de code, messages de commit, libellés backoffice (<Name>, <Description> des document types et propriétés), clés de dictionnaire, texte visible dans les vues Razor, contenu SCSS (content:), chaînes JavaScript.
Le principe
Certains caractères typographiques sont devenus la signature visuelle d'un texte généré par une IA. Ils ne sont pas fautifs en français, mais dans un dépôt Spektrum ils trahissent l'origine du texte et cassent l'homogénéité entre ce qu'écrit un humain au clavier et ce qu'écrit un agent.
On ne les utilise pas. On utilise l'équivalent ASCII.
Les accents restent obligatoires : ce ne sont pas des caractères "IA", c'est de l'orthographe. On écrit "Paramètres", pas "Parametres". Un éditeur suisse romand lit du français correct.
Formulé autrement, et c'est la forme qui sert à la vérification :
Un fichier ne doit contenir que des caractères ASCII imprimables et des lettres accentuées françaises. Tout le reste est suspect.
Table de substitution
Les caractères interdits sont désignés par leur code point, pour que ce fichier reste lui-même lisible sans les contenir.
| Code point | Nom | À écrire à la place |
|---|---|---|
| U+2014 | tiret cadratin (em dash) | - (tiret ASCII entouré d'espaces) |
| U+2013 | tiret demi-cadratin (en dash) | - |
| U+2019 | apostrophe courbe | ' |
| U+201C / U+201D | guillemets anglais courbes | " |
| U+00AB / U+00BB | guillemets français | " |
| U+2026 | points de suspension | ... |
| U+2192 / U+21D2 / U+2190 | flèches | ->, =>, <- |
| U+2022 | puce | - |
| U+2713 / U+2717 / U+26A0 / U+2705 | coches, croix, panneau d'alerte | un mot : OK, NON, ATTENTION |
| U+1F300 a U+1FAFF | emojis | un mot |
| U+00A0 | espace insécable | espace normale |
| U+2032 / U+2033 | primes | ' et " |
Restent autorisés, en plus de l'ASCII imprimable :
- Les lettres accentuées françaises, majuscules comprises :
à â ä ç é è ê ë î ï ô ö ù û ü ÿ œ æetÀ Â Ä Ç É È Ê Ë Î Ï Ô Ö Ù Û Ü Ÿ Œ Æ. - Les caractères de dessin de boîte (U+2500 a U+257F), uniquement pour les arborescences de fichiers en bloc de code. La carte du dépôt dans
CLAUDE.mds'en sert. Ce ne sont pas des marqueurs d'IA : c'est la conventiontreehabituelle, et elle reste lisible en terminal. - Le BOM UTF-8 (U+FEFF) en tête de fichier. uSync en écrit un dans chaque
.configqu'il sérialise, et les.csprojen portent un. C'est un artefact d'outil, pas un choix de rédaction : le retirer serait réécrit au prochain export. - Les symboles éditoriaux
© ® ™ ° € £ µ. Ils portent du sens et n'ont pas d'équivalent ASCII acceptable. La mention de copyright du dictionnaire (footer.copyrights) s'en sert. À ne pas confondre avec les symboles décoratifs (coches, croix, emojis), eux interdits.
Exemples
Dans les blocs ci-dessous, les caractères interdits sont écrits sous forme de marqueur (<em dash>, <fleche>, ...) pour ne pas les introduire dans ce fichier.
Documentation
NON
## Modele de contenu <em dash> les blocs
Le rendu est partagé <fleche> ne jamais forker un element type.
<panneau alerte> Piège : l<apostrophe courbe>icône doit exister.
OUI
## Modèle de contenu - les blocs
Le rendu est partagé -> ne jamais forker un element type.
ATTENTION : l'icône doit exister.Libellé backoffice (uSync)
NON
<Name>Paramètres de la page <em dash> SEO</Name>
<Description>Titre affiché dans l<apostrophe courbe>onglet<points de suspension></Description>
OUI
<Name>Paramètres de la page - SEO</Name>
<Description>Titre affiché dans l'onglet du navigateur...</Description>Commentaire de code
// NON
// Résout le thème <fleche> slug de feuille de style (défaut : <guillemet courbe>gilliard<guillemet courbe>).
// OUI
// Résout le thème -> slug de feuille de style (défaut : "gilliard").Message de commit
NON
feat(blocks): ajoute le bloc childListing <em dash> remplace les 4 templates de liste
OUI
feat(blocks): ajoute le bloc childListing - remplace les 4 templates de listeVérification
Un seul contrôle : signaler tout caractère qui n'est ni ASCII imprimable, ni l'un des caractères tolérés ci-dessus. Prise par la négative, la vérification attrape aussi les caractères exotiques absents de la table (espaces fines, tirets rares, symboles décoratifs). Retour vide = conforme.
# Depuis la racine du depot.
LC_ALL=C.UTF-8 grep -rnI \
--exclude-dir={node_modules,bin,obj,.git,wwwroot,logs} \
--exclude=conventions-redaction.md \
-P '[^\x00-\x7FàâäçéèêëîïñôöùûüÿœæÀÂÄÇÉÈÊËÎÏÑÔÖÙÛÜŸŒÆ©®™°€£µ\x{2500}-\x{257F}\x{FEFF}]' \
.En PowerShell :
Get-ChildItem -Recurse -File -Include *.md,*.cs,*.cshtml,*.scss,*.js,*.config |
Where-Object {
$_.FullName -notmatch '\\(node_modules|bin|obj|\.git|wwwroot|logs)\\' -and
$_.Name -ne 'conventions-redaction.md'
} |
Select-String -Pattern '[^\x00-\x7FàâäçéèêëîïñôöùûüÿœæÀÂÄÇÉÈÊËÎÏÑÔÖÙÛÜŸŒÆ©®™°€£µ─-╿]'Le ñ est inclus parce qu'il apparaît dans des noms propres courants en Suisse romande. Ajouter au besoin les lettres d'autres langues effectivement utilisées par le projet, plutôt que de désactiver la vérification.
Cas particuliers
- Ce fichier est la seule exception et il est exclu de la vérification : il doit nommer les caractères qu'il interdit.
- Contenu saisi par un client ou repris d'un site existant : on ne le normalise pas. Un contenu importé qui contient des guillemets courbes reste tel quel. La règle porte sur ce que nous écrivons.
- Dépendances et sorties de build (
node_modules,bin,obj,wwwroot) : hors périmètre. - Fichiers générés (
umbraco/Models/*.generated.cs, sortie Vite) : hors périmètre, on ne les édite pas de toute façon. - Typographie de rendu : si un design impose un vrai tiret cadratin à l'écran, il se fait en CSS (
content: "\2014") ou dans le contenu éditorial, pas dans le code source rédigé.
Pourquoi ça compte ici
La documentation .claude/docs/**/*.md de ce dépôt est publiée automatiquement sur la documentation interne Spektrum par le composant CI sync-claude-docs (voir le skill spektrum-doc-interne). Ce qui est écrit ici est lu par toute l'agence, pas seulement par l'équipe du projet.

