refactor(scripts): #15 scinder scripts/lib/helpers.js en modules mono-responsabilité
Contexte
scripts/lib/helpers.js (653 lignes, 22 fonctions exportées) mélangeait 7 responsabilités distinctes, contrairement à tous ses voisins de scripts/lib/. Seul module de scripts/lib/ sans aucun test.
Closes #15 (closed)
Découpage
| Fonctions | Nouveau module |
|---|---|
log, error, success, info, warning
|
scripts/lib/console.js |
resolveStepReferences, collectStepNames, removeStepReferences, extractStepDescription
|
scripts/lib/step-references.js |
checkSubmoduleExists, loadTechsRegistry, resolveInheritanceChain, loadArchRegistry
|
scripts/lib/tech-registry.js |
loadAgentManifest, walkAgentFolders, loadAllManifests
|
scripts/lib/agent-manifests.js |
buildStepSkillFile, generateClaudeStepSkills
|
scripts/lib/claude-skills.js |
scanDir, buildDocsCategoryIndex, buildDocsInjectionBlock
|
scripts/lib/docs-index.js |
copyDirectory |
scripts/lib/fs-scan.js (rejoint son voisinage naturel) |
Écart par rapport à la table proposée dans l'issue : buildPhase0Block est fusionné dans docs.js (son seul appelant) plutôt que déplacé vers docs-index.js. docs.js importait déjà buildPhase0Block depuis helpers.js, et helpers.js importait buildPhase0DocsBlock/humanizeFilename depuis docs.js — un cycle préexistant. Le placement retenu l'élimine au lieu de le déplacer entre deux nouveaux modules.
Tests
- Chaque module créé embarque son test miroir sous
tests/lib/, avec une couverture neuve sur les fonctions jusqu'ici non testées (loadAllManifests— fusion specific override shared,generateClaudeStepSkills— symlinks + cas d'erreur,checkSubmoduleExists,loadTechsRegistry,loadArchRegistry,copyDirectory, etc.). - Les tests unitaires historiquement logés dans
tests/install-guidelines.test.js(scanDir, resolveInheritanceChain, resolveStepReferences, loadAgentManifest) sont relocalisés vers leur module ; ce fichier ne garde que les tests d'intégration du pipeline. - Tous les imports des 26 fichiers consommateurs mis à jour.
Test plan
-
npm run lintvert -
npm testvert (236 tests, vs 182 avant) -
node scripts/install-guidelines.jsexécuté sur un projet témoin avant/après le split (main vs cette branche) : diff vide, hors timestamp d'installation et nom de dossier du projet