Aller au contenu

Stack technique

Le kit est volontairement minimaliste : rien qu'une équipe ne puisse comprendre en une demi-journée, rien qu'un admin système ne puisse auditer. Pas de framework, pas de base de données, pas de service en ligne obligatoire.

Vue d'ensemble

flowchart LR
    subgraph DEP[Dépendances zéro runtime]
        N[Node.js ≥ 18]
        P[PowerShell 7]
        G[Git]
    end
    subgraph KIT[Composants du kit]
        CLI[sdlc/*.js<br/>CLI + schéma]
        HOOK[scripts/*.ps1<br/>hooks PowerShell]
        PROMPT[.github/prompts/<br/>16 skills Copilot]
        AGENT[.github/agents/<br/>1 agent orchestrateur]
    end
    subgraph DOC[Documentation]
        MD[MkDocs Material<br/>+ plugins Python]
        GEN[tools/docs/*.js<br/>générateurs Node]
    end
    N --> CLI
    N --> GEN
    P --> HOOK
    G --> CLI
    GEN --> MD

Dépendances runtime

Composant Version Rôle Pourquoi
Node.js ≥ 18 Exécuter sdlc/sdlc.js et les générateurs de doc Ubiquitaire, aucun package externe requis — uniquement la stdlib (fs, path, child_process).
PowerShell 7+ (pwsh) Exécuter les 4 hooks scripts/*.ps1 Multi-plateforme depuis PS7, manipulation JSON native, signature Microsoft disponible pour environnements stricts.
Git ≥ 2.30 Versioner le registre, poser les commits de transition, servir de mécanisme de submodule Unique mécanisme pérenne pour distribuer le kit (voir ADR 0001).

Aucun node_modules. Aucun npm install au runtime. Le kit clone → le kit marche.

Dépendances de documentation

Installées uniquement pour construire le site (requirements-docs.txt) :

Paquet Version épinglée Rôle
mkdocs 1.6.1 Générateur statique
mkdocs-material 9.5.49 Thème, navigation, recherche FR, palette
mkdocs-include-markdown-plugin 7.1.2 Inclusion chirurgicale via marqueurs <!-- BEGIN:x -->
mkdocs-git-revision-date-localized-plugin 1.3.0 Date de dernière mise à jour par page (marqueur de fraîcheur)
mkdocs-mermaid2-plugin 1.2.1 Diagrammes Mermaid (portes, états, archi)
pymdown-extensions 10.12 Admonitions, snippets, tabs, tooltips

Les versions sont épinglées pour éviter une régression silencieuse sur une mise à jour majeure de plugin (voir ADR 0007 — MkDocs Material).

Choix structurants

Prompts Copilot plutôt que MCP

Le kit livre 16 assistants spécialisés sous forme de fichiers .github/prompts/*.prompt.md. Ils s'invoquent dans GitHub Copilot Chat avec #nom. Pas de serveur MCP, pas de binding runtime.

Raison : un prompt Copilot est un fichier markdown qu'un dev lit, comprend, modifie. Un serveur MCP est un binaire opaque. Voir ADR 0002.

Schema.js comme source de vérité

La machine d'états (méta-états, transitions, portes, préconditions, invariants, checks) est encodée dans sdlc/schema.js — pas dans un document Markdown ni une base de données. La CLI et les générateurs de doc la lisent directement.

Raison : un schéma exécutable ne peut pas diverger de la doc qui le décrit, car la doc est générée depuis le schéma. Voir ADR 0004.

PowerShell pour les hooks

Les 4 hooks Claude Code sont en PowerShell, pas en Bash ni en Node.

Raison :

  • Les projets consommateurs cibles sont majoritairement sous Windows (contexte entreprise).
  • PowerShell 7 est multi-plateforme → les hooks tournent aussi en CI Linux si besoin.
  • Manipulation JSON native via ConvertFrom-Json / ConvertTo-Json, sans dépendance tierce.

Voir ADR 0003.

Distribution par submodule git

Le kit est consommé par un projet en étant cloné comme submodule dans .sdeg/. Pas de paquet npm, pas d'image Docker, pas de registry privé.

Raison : la traçabilité est première. Chaque projet consommateur sait exactement quelle commit du kernel il utilise, peut auditer la diff, peut rester sur une version si nécessaire. Voir ADR 0001.

Outils de documentation

Les 4 générateurs Node (tools/docs/) produisent le site depuis les sources faisant autorité. Ils sont idempotents et lecture seule sur les sources :

Script Source Cible
copy-embeds.js docs/as-is/*.html docs/assets/embeds/*.html
gen-portes.js sdlc/schema.js docs/portes/p{N}-*.md + _annotations/p{N}.md
gen-skills.js .github/prompts/*.prompt.md docs/skills/*.md
gen-agent.js .github/agents/*.agent.md docs/skills/agent-coach-emergent.md

Orchestrés par package.json :

npm run docs:gen      # lance les 4 générateurs
npm run docs:serve    # mkdocs serve (hot reload)
npm run docs:build    # docs:gen + mkdocs build --strict
npm run docs:clean    # rm -rf site .cache

Voir tools/docs/README.md pour le détail d'implémentation.

Ce que le kit ne contient pas

  • Pas de base de données. Le registre est un fichier JSON versionné.
  • Pas de serveur. La CLI est un processus Node qui vit le temps d'une commande.
  • Pas d'API web. L'intégration avec un projet se fait par filesystem (registre + événements).
  • Pas de secret. Rien à chiffrer, rien à rotate.
  • Pas de télémétrie. Aucune donnée ne sort du projet consommateur.

Voir aussi : Vue d'ensemble architecture · CLI sdlc · Hooks · Invariant sécurité.