Aller au contenu

ADR-047 : Couche de guidance agent IA dans les applications Forge

Statut

Accepté, bêta publique 1.0 (1.0.0-beta.x).
Décision prise ; mise en œuvre par les tickets AGENTS-* listés plus bas.


Date

2026-06-24


Contexte

Le développement de Forge a produit un capital de conception important : la charte (CHARTE_DOC.md), les ADR, les conventions (docs/contributing/), et le briefing des agents IA (CLAUDE.md, config .claude/).
Ce capital vise le développement du framework.

Quand forge new génère une application, le squelette est volontairement nu (ADR-024) : il n'embarque aucune guidance pour les agents IA (CLAUDE.md, AGENTS.md) ni convention de développement applicatif.
Conséquence : un développeur, et son agent IA, qui travaille sur une application Forge ne bénéficie pas de l'expérience accumulée ; l'agent peut proposer des solutions qui combattent le framework (ORM maison, écriture dans le code généré, SQL caché), faute de cadre.

Le squelette ship déjà du tooling pour l'application (.vscode/, schemas/ JSON) : transmettre une guidance agent en est l'extension naturelle.


Décision

Forge distille son expérience en une couche de guidance agent, générée dans l'application et taillée pour le développement applicatif (pas pour le développement du framework).

  1. Contenu : un briefing concis et actionnable.
    Conventions (entités JSON, routes /contrôleur/méthode, SQL visible), générateurs CLI à utiliser (forge make:*, forge doctor), ce qu'il faut éviter (ORM maison, écrire dans le code généré, casser les contrats), où vivent les choses (mvc/...), comment valider (pytest, forge doctor).
    Pas la gouvernance interne du framework (charte complète, ADR, processus).

  2. Cibles : CLAUDE.md (Claude Code) et AGENTS.md (Codex et standard d'agents), avec le même contenu, écrits par défaut par forge new.
    Optionnellement, un .claude/settings.json qui pré-autorise forge, pytest, ruff.

  3. Source canonique et fraîcheur : le gabarit du briefing vit dans le framework, versionné avec lui (donnée de paquet).
    forge new l'écrit (write-if-new, principe 9 : le développeur en devient propriétaire).
    Une commande forge agents:init (re)génère ou met à jour le briefing depuis la version installée, pour les applications existantes aussi ; un mode --check signale un briefing périmé.


Conséquences

Positives :

  • l'expérience de conception de Forge profite à chaque application et à son agent IA, dès forge new ;
  • le briefing reste cohérent avec la version de Forge installée, via la commande de rafraîchissement ;
  • couverture des deux principaux agents (CLAUDE.md, AGENTS.md) sans duplication de contenu (même texte) ;
  • le développeur possède les fichiers (write-if-new) et peut les adapter.

Coûts et limites :

  • déviation assumée d'ADR-024 : le projet généré n'est plus strictement « nu », il gagne une couche de guidance (voir ci-dessous) ;
  • un gabarit de plus à maintenir dans le framework, à garder distillé (ne pas y recopier la charte ni les ADR) ;
  • le briefing est un instantané au moment de l'écriture ; sa fraîcheur dépend de la commande de rafraîchissement, pas d'une magie automatique.

Relation avec ADR-024 (projet nu)

ADR-024 garde tout son sens pour le code applicatif : forge new ne génère pas de contrôleurs, d'entités ni de pages métier.
Cet ADR précise que le projet généré peut porter du tooling et de la guidance (DX), au même titre que .vscode/ et schemas/ déjà présents.
La frontière reste : pas de code métier généré, mais un cadre de travail fourni.


Alternatives écartées

Snapshot figé à forge new, sans rafraîchissement.
Simple, mais l'application diverge de l'expérience Forge au fil des versions, et le développeur doit recopier à la main.

Briefing minimal renvoyant uniquement vers forgemvc.com.
Toujours à jour, mais dépend d'un accès en ligne et oblige l'agent à aller chercher ; moins actionnable hors connexion.

Guidance en opt-in seulement (hors forge new).
Préserve le projet nu, mais l'expérience n'est transmise que si le développeur y pense ; la décision retenue est de la fournir par défaut.


Mise en œuvre (tickets AGENTS-*)

  • AGENTS-BRIEFING-TEMPLATE-001 : rédiger le gabarit canonique du briefing applicatif (donnée de paquet), distillé et versionné.
  • AGENTS-SEED-ADR-001 : fournir un ADR-001 d'amorçage (« Adopter Forge et ses conventions ») écrit dans docs/adr/001-adopter-forge.md du projet, qui acte une décision réelle et sert d'exemple de format.
  • AGENTS-SKELETON-EMIT-001 : forge new écrit CLAUDE.md, AGENTS.md et l'ADR-001 (write-if-new) depuis les gabarits.
  • AGENTS-INIT-COMMAND-001 : commande forge agents:init (génération / rafraîchissement) avec mode --check.
  • AGENTS-SETTINGS-001 : .claude/settings.json applicatif optionnel (commandes pré-autorisées).
  • AGENTS-DOCS-001 : documenter la couche guidance et la commande.
  • AGENTS-CLOSING-001 : audit de clôture et suite complète.

Liens

  • Projet nu : ADR-024.
  • Convention de route : ADR-029.
  • Briefing du framework (référence interne, à ne pas confondre) : CLAUDE.md.