feat(wiki-lint): Linter mécanique pour wiki/ (frontmatter, wikilinks, orphelins, chemins raw/)
Provenance : adapté depuis
fyl-guidelines#8. Fait partie de l'EPIC #3.
Contexte
Aucune vérification mécanique n'existe aujourd'hui entre la rédaction d'une page par l'agent ingest et sa publication dans wiki/. Le README liste "liens brisés", "pages orphelines" et "frontmatter invalide" parmi les cas que consolidate doit détecter — mais uniquement via jugement LLM en batch hebdomadaire, jamais via un script déterministe exécutable à la demande ou en continu.
Détails d'implémentation
Stack recommandée (écosystème remark/unified.js) :
-
Frontmatter contre schéma : générer un JSON Schema par type de page à partir de
wiki.config.json(types[].id, champs requis documentés dansdocs/wiki.config.md) —remark-lint-frontmatter-schemaoumdschema. -
Liens
[[slug]]:remark-wiki-linkou équivalent — vérifie que chaque cible existe dans le graphe de pages du projet hôte. -
Orphelins : script dédié — construit le graphe des
[[slug]], vérifie que chaque page est atteignable depuis lesnavPagesdéclarées danswiki.config.json. -
Chemins vers
raw/: vérifie que chaque chemin cité comme source existe sur disque.
Livrable : script wiki-lint.mjs (Node), qui lit la config du projet hôte, exit code non-nul si un check échoue. Publié comme script du template (scripts/), pas comme ajout local à un fork particulier.
Critères d'acceptation
-
Schéma JSON Schema par type de page généré dynamiquement depuis wiki.config.json -
Validation frontmatter opérationnelle sur un wiki d'exemple -
Détection des liens [[slug]]cassés opérationnelle -
Détection des pages orphelines opérationnelle (non atteignables depuis les navPages) -
Validation des chemins raw/cités opérationnelle -
Script exécutable en une commande ( npm run wiki:lint), rapport lisible en sortie console -
Documenté dans docs/comme partie du template