Skip to content

refactor(scripts): #13 porter la décomposition install-guidelines.js → scripts/steps/ + scripts/lib/

Contexte

scripts/install-guidelines.js était un monolithe de 2217 lignes. oxa-guidelines a déjà fermé son EPIC::Modules (14 issues, oxa#194→#207) qui a fait passer son propre script d'installation à un orchestrateur mince de 59 lignes, découpé en scripts/steps/ (18 steps) + scripts/lib/ (utilitaires + formatters). Cette MR porte ce découpage tel quel dans shared/guidelines.

Changements

  • scripts/install-guidelines.js : orchestrateur mince, ctx explicite, InstallError typée remontée en un seul point dans install()
  • scripts/steps/ : 18 steps + index.js (source de vérité de l'ordre d'exécution)
  • scripts/lib/ : args, docs, errors, frontmatter, fs-scan, generated-paths, glob, helpers, targets, yaml + lib/formatters/ (cursor, copilot, claude-agent, claude-skill, agent-skills, antigravity, frontmatter-block)
  • Genericisation complète : lib/oxa-guidelines → lib/guidelines, aucune référence "oxa" restante
  • guidelines/technos/ déplacé vers guidelines/docs/shared/technos/ (le code porté attend un chemin source unifié avec la destination d'installation)
  • 125 tests portés depuis oxa-guidelines (node --test, aucune dépendance ajoutée), package.json : "test": "node --test"

Effet de bord assumé

Le portage est fidèle au code oxa actuel (pas de redesign). Plusieurs bugs déjà corrigés côté oxa arrivent donc avec, et résolvent au passage 5 issues ouvertes dans shared/guidelines : #1 (closed) (codex outil de premier rang), #7 (closed) (chemin technos unifié — implique le déplacement ci-dessus), #8 (closed) (bug scanDir), #10 (closed) (regex linkPath), #11 (closed) (schéma metadata.json : globs/applyTo/limite 12000 caractères). Chaque issue est commentée et close séparément avec le détail de ce qui la résout.

Vérification

  • node --test : 125/125 passent
  • Installeur exécuté de bout en bout sur un projet scratch (lib/guidelines en copie locale) : run par défaut, --techs java@25, --claude (vérifie que Codex est bien skip), --codex — tous en exit 0

Closes #13 (closed), #1 (closed), #7 (closed), #8 (closed), #10 (closed), #11 (closed)

Merge request reports

Loading