DOCUMENTATION

Installer et utiliser Forge

Forge est un plugin Claude Code stack-agnostique. Il découpe le cycle de développement en étapes courtes, chacune produisant un artefact markdown qui alimente la suivante. Cette page couvre l'installation, les concepts, la référence des 25 skills et la configuration.

Sommaire

Démarrer

Prérequis

Forge n'est ni un binaire ni une dépendance de votre projet : c'est un ensemble d'instructions markdown que Claude Code charge. Il n'y a donc rien à compiler et aucun runtime à installer.

  • Claude Code, dans n'importe laquelle de ses formes (CLI, application desktop, web ou extension IDE).
  • Un dépôt git initialisé. Les skills /forge:commit et /forge:release écrivent dans git ; les autres se contentent de lire le code et d'écrire des fichiers markdown.
  • Le CLI gh authentifié, uniquement pour /forge:release, qui publie la release sur GitHub.
  • Un serveur MCP Playwright, uniquement pour /forge:test-scenario, qui pilote un navigateur en live.

Aucune contrainte de langage ou de framework : le pipeline est stack-agnostique. Il détecte Symfony et Sylius pour charger des règles plus précises, mais fonctionne sur n'importe quelle base de code.

Installation

Les trois commandes se tapent dans une session Claude Code, pas dans un terminal. Elles valent pour n'importe quel projet.

  1. Ajouter la marketplace

    Enregistre le catalogue de plugins depuis GitHub. Rien n'est installé à ce stade.

    /plugin marketplace add gabrielmustiere/forge
  2. Installer le plugin

    La syntaxe est plugin@marketplace. Le plugin forge et la marketplace forge portent le même nom — la répétition est normale.

    /plugin install forge@forge
  3. Recharger les plugins

    Rend les 25 skills disponibles dans la session courante.

    /reload-plugins

Vérifier l'installation

Lancez le sommaire du pipeline. S'il répond, tout est en place.

session claude-code
/forge:help

Toutes les skills sont préfixées

Le préfixe vient du nom du plugin : on écrit /forge:feature-pitch, jamais /feature-pitch. Si votre session ne connaît que /help, c'est le /help natif de Claude Code — pas celui de Forge.

Aucune skill ne se déclenche toute seule : c'est un choix de conception. Le triage automatique entre skills voisines est probabiliste, donc faux un jour sur N — et un mauvais aiguillage produit le mauvais document. C'est vous qui appelez la skill.

Mettre à jour

Forge évolue en continu. Pour récupérer la dernière version publiée :

session claude-code
/plugin marketplace update forge
/reload-plugins

Les versions suivent le SemVer et sont annoncées dans le CHANGELOG au format Keep a Changelog.

Concepts

La règle d'or

Jamais d'étape suivante sans validation explicite

Chaque skill s'arrête et attend un « ok », « go », « validé » avant de continuer. C'est ce qui distingue le pipeline d'un agent qui part seul : vous relisez chaque artefact avant qu'il ne serve d'entrée au suivant.

La conséquence pratique : un artefact bancal se corrige à l'étape où il naît, pas trois étapes plus loin dans du code déjà écrit.

Artefacts et docs/story/

Tous les artefacts vivent à plat dans docs/story/, numérotés globalement puis taggés par track. Le numéro vient en premier pour que le tri lexicographique d'un simple ls donne la timeline du projet.

arborescence
docs/story/042-f-checkout-express/   # f = feature
docs/story/043-r-extract-pricing/    # r = refacto
docs/story/044-t-redis-cache/        # t = évolution technique

Le format est NNN-<f|r|t>-<slug>. Les numéros s'incrémentent globalement, tous tracks confondus : 042-f → 043-r → 044-t → 045-f.

Les documents d'une story

FichierRegistreQuestion à laquelle il répond
brief.mdFonctionnelQuel est le besoin, encore flou ?
pitch.mdFonctionnelQuel problème utilisateur, pour qui, pourquoi maintenant ?
plan.mdTechniqueComment on le construit, étape par étape ?
review.mdTechniqueLe diff est-il sûr, propre et conforme au plan ?
report.mdFactuelQu'a-t-on livré, comparé à ce qui était prévu ?
estimate.mdÉconomiqueCombien de temps « tout compris » à facturer ?
metadata.jsonTitre, dates, tags, changelog, livraison (lu par le Forge Board)

Un document sert un seul but, dans un seul registre, annoncé dans son en-tête. Le brief et le pitch sont fonctionnels : aucun nom de classe, de service ou de framework n'y a sa place. Les plans et la review sont techniques. Les documents de décision (review, report, estimation) ouvrent sur leur section ## Synthèse — on doit pouvoir ne lire qu'elle.

Un artefact, un seul écrivain

Chaque document a une skill propriétaire ; les autres le lisent. Deux exceptions assumées : metadata.json, append-only par construction, et les documents projet que /forge:sync co-écrit via les modes de leurs propriétaires.

Choisir son track

Quatre questions, dans l'ordre. La première qui répond « oui » donne le track.

QuestionSi oui
Un utilisateur final ou un admin peut décrire ce qu'il voit de nouveau ?Feature (f-)
Le comportement externe reste strictement identique (mêmes réponses, events, logs, timings) et on restructure juste le code ?Refacto (r-)
Un observateur externe peut détecter la différence, mais c'est pour mieux (plus rapide, plus résilient, plus observable, plus sûr) sans nouvelle valeur utilisateur ?Tech (t-)
Moins de 3 fichiers, pas de migration, pas d'impact transverse ?Fast

Piège : le changement qui mélange les catégories

Si vous ne pouvez pas scinder votre diff en commits distincts — le refacto pur, puis l'ajout de la brique technique, puis la feature qui s'en sert — vous avez probablement mélangé deux tracks. Séparez.

Le track fast

Tout ne mérite pas un pitch. Le track fast couvre les bugfixes et petits changements, sous trois conditions cumulatives :

  • Moins de 3 fichiers modifiés ;
  • Pas de changement de schéma (migration) ni de nouveau service ou entité ;
  • Pas d'impact transverse (multi-channel, multi-thème, API publique…).
processus
coder → QA du stack → tests ciblés → /forge:review (optionnel) → /forge:commit

En cas de doute, partez sur le track approprié : on peut toujours basculer du structurant vers le fast si l'analyse révèle que c'est trivial. L'inverse coûte plus cher.

Référence des skills

Vingt-cinq skills. Perdu en cours de route ? /forge:help réaffiche le pipeline complet et oriente vers la bonne.

Phase 0 — poser le décor

Une fois en début de projet, puis révisé lors d'un pivot. Ces trois documents sont vivants : ils supportent quatre modes (Création, Enrichir, Éditer, Pivot) et tiennent leur propre changelog.

SkillRôleProduit
/forge:visionAtelier challengeur : problème, audience, valeur, North Star, principes, anti-objectifsdocs/vision.md
/forge:product-backlogDomaines → capacités → parcours → règles transverses → backlog priorisé MVP/V2/V3docs/product-backlog.md
/forge:stackScanne les manifestes, interroge pour combler les trous, prouve chaque techno par un fichier sourcedocs/stack.md

docs/vision.md est lu par /forge:product-backlog puis par /forge:feature-pitch à chaque feature, pour challenger l'alignement. docs/stack.md est lu en priorité par les skills techniques. Il constate l'existant — il ne justifie pas un choix (c'est /forge:adr) ni ne décide d'une évolution (c'est /forge:tech-plan).

/forge:product-backlog est facultatif : on peut aller directement de la vision au pitch. Il devient recommandé dès qu'on a plus de trois ou quatre features pressenties.

Track feature — valeur utilisateur

Pour tout changement qui introduit une fonctionnalité ou modifie un comportement observable par l'utilisateur.

#SkillRôleProduit
0*/forge:feature-interviewOptionnel — découvrir un besoin flou par interview avant de pouvoir le pitcherbrief.md
1/forge:feature-pitchCadrer et challenger la fonctionnalité (lit le brief s'il existe)pitch.md
2/forge:feature-planConcevoir la solution technique à partir du pitchplan.md
3/forge:feature-implemImplémenter sous-tâche par sous-tâche avec QA continueCode + migrations + tests
4/forge:reviewCode review : sécu, perf, qualité, conformité au planreview.md
5/forge:commitConventional Commits en français + pushCommit
6/forge:reportDocumenter ce qui a été fait vs ce qui était prévureport.md
7/forge:syncRéaligner pitch et plan avec la réalité du codeMise à jour des docs

Track refacto — comportement figé

Pour restructurer sans toucher au comportement externe : dette, couplage, extraction d'un service, décomposition d'une god class, préparation d'une feature à venir.

Principe

Comportement externe strictement préservé. Verrou de tests de caractérisation posé avant de toucher au code. Exécution incrémentale et réversible — souvent un commit par étape.

#SkillRôleProduit
1/forge:refactor-planCadrer le refacto : motivation, cible, tests de caractérisationplan.md
2/forge:refactor-implemExécuter verrou-tests-d'abord, par étapes réversiblesCode + tests
3/forge:review/forge:commit/forge:report/forge:sync

Track tech — perf, résilience, sécu

Pour les évolutions qu'un observateur externe peut détecter, mais qui n'apportent pas de valeur utilisateur nouvelle : performance, résilience, observabilité, sécurité.

#SkillRôleProduit
1/forge:tech-planCadrer avec une métrique cible chiffrée, une baseline et un kill switchplan.md
2/forge:tech-implemExécuter : baseline, kill switch, mesure après chaque étapeCode + mesures
3/forge:review (kill switch, compatibilité, non-régression) → /forge:commit/forge:report (cible vs mesuré) → /forge:sync

Clôture — commune aux trois tracks

Après l'implémentation, les trois tracks partagent les mêmes étapes. Seuls le contenu et le ton des artefacts changent.

SkillCe qu'elle fait
/forge:reviewCode review du diff : sécurité, qualité, conformité au plan, non-régression.
/forge:commitLit le diff, regroupe les changements en lots cohérents, propose des messages Conventional Commits en français, demande validation, commit et push.
/forge:reportLa mémoire factuelle de la livraison : écart entre intention et exécution, ajouts non prévus, dette laissée, métriques obtenues. Écrit une fois pour toutes.
/forge:syncMet à jour les documents d'intention en place, comme une révision documentaire, ainsi que les docs projet (vision, stack, product-backlog).
/forge:report-and-syncEnchaîne les deux en une passe. Court-circuite le sync si le report conclut à une conformité totale.

report et sync sont complémentaires

/forge:report fige la trace de ce qui s'est passé ; /forge:sync rend les documents d'intention à nouveau fiables pour les futurs lecteurs. On garde les deux.

Utilitaires — hors pipeline

SkillRôle
/forge:helpLe sommaire du pipeline, des tracks, des skills et des artefacts.
/forge:claude-mdGénère ou met à jour le CLAUDE.md : analyse du codebase prouvée par fichier — aucune commande inventée — et injection des principes comportementaux.
/forge:rulesÉcrit les règles projet dans .claude/rules/, chargées seulement quand Claude ouvre un fichier de la zone concernée.
/forge:adrRédige un Architecture Decision Record (format MADR léger) depuis un artefact ou un topic libre, avec backlinks et index automatiques. Produit docs/adr/NNNN-slug.md.
/forge:estimateChiffre le temps « tout compris » à facturer — cadrage, implémentation, tests, review, doc, release — en heures, sur deux colonnes : référence sans IA et temps réel avec assistant. Du temps, jamais de montant.
/forge:test-scenarioJoue un scénario utilisateur en live via Playwright MCP.
/forge:doc-featureCartographie une feature existante en lisant le code (entités, flux, routes, services, points d'extension). Produit docs/feature-map/NNN-slug/overview.md.
/forge:backfill-metadataReconstruit rétroactivement le metadata.json des stories antérieures depuis l'historique git. N'écrit que des valeurs vraies — jamais de date inventée.
/forge:releaseDétermine le bump SemVer depuis les Conventional Commits, met à jour le CHANGELOG.md, crée un tag annoté, push et publie la release GitHub via gh. Demande validation avant toute action publique.

Ne pas confondre sync et doc-feature

/forge:sync recale un document d'intention récent que vous venez de modifier dans un track structuré. /forge:doc-feature cartographie une feature ancienne ou jamais passée par le pipeline, en partant du code livré, sans dossier de track préalable.

Configuration

Permissions et outillage

Les skills d'implémentation n'imposent aucun outillage : elles ne présument ni de votre gestionnaire de paquets, ni de votre lanceur de tests. Elles lisent les commandes réelles dans votre CLAUDE.md, la référence stack, ou votre manifeste de tâches (Makefile, package.json, composer.json, justfile…) — et si elles ne les trouvent pas, elles demandent au lieu de deviner.

Conséquence pratique : c'est à votre projet de pré-autoriser son outillage dans son .claude/settings.json. Sans ça, Claude Code demandera confirmation à chaque commande de build ou de test — c'est fonctionnel, juste bavard.

.claude/settings.json
{
  "permissions": {
    "allow": ["Bash(make:*)", "Bash(vendor/bin/*:*)", "Bash(npm:*)"]
  }
}

C'est aussi le bon endroit pour poser une interdiction dure via permissions.deny : contrairement aux allowed-tools d'une skill — qui ne font que pré-autoriser — un deny projet est souverain et ne se contourne pas.

Le CLAUDE.md du projet

Les références stack embarquées dans le plugin couvrent le générique. Ce qui est propre à votre projet — commandes QA exactes, identifiants de test, noms de thèmes, conventions de branches — vit dans le CLAUDE.md à la racine. Les skills le lisent en complément.

/forge:claude-md le génère pour vous, en prouvant chaque affirmation par un fichier du dépôt. Si une règle est scopable à une zone du code, préférez /forge:rules : elle produit un fichier dans .claude/rules/ qui n'est chargé que quand Claude ouvre un fichier concerné — le contexte reste léger.

Règles framework

Le workflow détecte le stack via composer.json / package.json et charge les références correspondantes, bundlées avec le plugin :

  • la procédure de détection du stack ;
  • les règles Symfony — Doctrine, services, forms, Twig, QA, sécu, perf ;
  • le delta e-commerce Sylius — Resources, channels, thèmes, Twig Hooks…

Le chargement est automatique après détection : rien à lire manuellement. Des marketplaces complémentaires (par exemple gabrielmustiere/skills) exposent des skills plus tactiques, propres à un framework, qui se combinent naturellement avec le pipeline.

Aide

Dépannage

/forge:xxx est introuvable

Lancez /reload-plugins. C'est nécessaire après l'installation et après chaque mise à jour de la marketplace. Vérifiez aussi le préfixe : c'est /forge:help, pas /help.

Une skill ne se déclenche pas toute seule

C'est le comportement attendu, pas un bug : aucune skill Forge ne s'auto-déclenche. Le triage automatique entre skills voisines est probabiliste, et un mauvais aiguillage produirait le mauvais document. Appelez la skill explicitement.

Claude demande confirmation à chaque commande

Votre projet n'a pas pré-autorisé son outillage. Voir Permissions et outillage.

Le Forge Board n'affiche pas mes stories correctement

Le Board lit le metadata.json de chaque story et ne l'écrit jamais. Sur des stories antérieures à cette convention, le fichier n'existe pas : lancez /forge:backfill-metadata pour le reconstruire depuis l'historique git.

Développer le plugin

Pour tester une modification locale du plugin avant publication, lancez Claude Code depuis n'importe quel projet en pointant le dossier du plugin :

terminal
claude --plugin-dir /chemin/vers/forge/plugins/forge

Pendant la session, /reload-plugins recharge après chaque modification.

Le piège classique

Une skill qui ne se déclenche pas comme prévu, c'est presque toujours sa description : trop vague, ou sans les mots-clés que l'utilisateur emploierait naturellement. Rendez-la plus spécifique et incluez les phrases déclencheurs. Au-delà de 250 caractères, la description est tronquée dans la liste chargée en contexte.

Structure d'une skill : un dossier skills/<nom>/SKILL.md, dont le name en frontmatter YAML doit matcher le nom du dossier. Les dossiers skills/, commands/, agents/ et hooks/ vivent à la racine du plugin — seul plugin.json habite .claude-plugin/.

Le code, l'inventaire complet des skills et le changelog sont sur GitHub.