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:commitet/forge:releaseécrivent dans git ; les autres se contentent de lire le code et d'écrire des fichiers markdown. - Le CLI
ghauthentifié, 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.
-
Ajouter la marketplace
Enregistre le catalogue de plugins depuis GitHub. Rien n'est installé à ce stade.
/plugin marketplace add gabrielmustiere/forge -
Installer le plugin
La syntaxe est
plugin@marketplace. Le pluginforgeet la marketplaceforgeportent le même nom — la répétition est normale./plugin install forge@forge -
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.
/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 :
/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.
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
| Fichier | Registre | Question à laquelle il répond |
|---|---|---|
brief.md | Fonctionnel | Quel est le besoin, encore flou ? |
pitch.md | Fonctionnel | Quel problème utilisateur, pour qui, pourquoi maintenant ? |
plan.md | Technique | Comment on le construit, étape par étape ? |
review.md | Technique | Le diff est-il sûr, propre et conforme au plan ? |
report.md | Factuel | Qu'a-t-on livré, comparé à ce qui était prévu ? |
estimate.md | Économique | Combien de temps « tout compris » à facturer ? |
metadata.json | — | Titre, 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.
| Question | Si 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…).
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.
| Skill | Rôle | Produit |
|---|---|---|
/forge:vision | Atelier challengeur : problème, audience, valeur, North Star, principes, anti-objectifs | docs/vision.md |
/forge:product-backlog | Domaines → capacités → parcours → règles transverses → backlog priorisé MVP/V2/V3 | docs/product-backlog.md |
/forge:stack | Scanne les manifestes, interroge pour combler les trous, prouve chaque techno par un fichier source | docs/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.
| # | Skill | Rôle | Produit |
|---|---|---|---|
| 0* | /forge:feature-interview | Optionnel — découvrir un besoin flou par interview avant de pouvoir le pitcher | brief.md |
| 1 | /forge:feature-pitch | Cadrer et challenger la fonctionnalité (lit le brief s'il existe) | pitch.md |
| 2 | /forge:feature-plan | Concevoir la solution technique à partir du pitch | plan.md |
| 3 | /forge:feature-implem | Implémenter sous-tâche par sous-tâche avec QA continue | Code + migrations + tests |
| 4 | /forge:review | Code review : sécu, perf, qualité, conformité au plan | review.md |
| 5 | /forge:commit | Conventional Commits en français + push | Commit |
| 6 | /forge:report | Documenter ce qui a été fait vs ce qui était prévu | report.md |
| 7 | /forge:sync | Réaligner pitch et plan avec la réalité du code | Mise à 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.
| # | Skill | Rôle | Produit |
|---|---|---|---|
| 1 | /forge:refactor-plan | Cadrer le refacto : motivation, cible, tests de caractérisation | plan.md |
| 2 | /forge:refactor-implem | Exécuter verrou-tests-d'abord, par étapes réversibles | Code + 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é.
| # | Skill | Rôle | Produit |
|---|---|---|---|
| 1 | /forge:tech-plan | Cadrer avec une métrique cible chiffrée, une baseline et un kill switch | plan.md |
| 2 | /forge:tech-implem | Exécuter : baseline, kill switch, mesure après chaque étape | Code + 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.
| Skill | Ce qu'elle fait |
|---|---|
/forge:review | Code review du diff : sécurité, qualité, conformité au plan, non-régression. |
/forge:commit | Lit le diff, regroupe les changements en lots cohérents, propose des messages Conventional Commits en français, demande validation, commit et push. |
/forge:report | La 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:sync | Met à jour les documents d'intention en place, comme une révision documentaire, ainsi que les docs projet (vision, stack, product-backlog). |
/forge:report-and-sync | Enchaî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
| Skill | Rôle |
|---|---|
/forge:help | Le sommaire du pipeline, des tracks, des skills et des artefacts. |
/forge:claude-md | Gé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:adr | Ré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:estimate | Chiffre 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-scenario | Joue un scénario utilisateur en live via Playwright MCP. |
/forge:doc-feature | Cartographie 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-metadata | Reconstruit 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:release | Dé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.
{
"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 :
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.