L’IA n’est plus un simple outil de suggestion : c’est devenu un véritable coéquipier de développement.
Voici comment nous avons construit Claude Agent, un service autonome qui exécute des tâches de développement sur commande.
Le contexte Z&V
Initialement, notre écosystème était composé de plusieurs repositories, ce qui ne facilite pas la vue globale de la code-base.
Autant pour un être humain la segmentation a du sens (séparation des responsabilités - notamment sur le scope front-end / backend)
Autant désormais, pour un agent, l’objectif est plutôt de partir sur un meta repo, qui contient l’ensemble de la code-base permettant ainsi une compréhension totale et générale du projet.
Notre écosystème technique actuel comprend quatre dépôts git que nous avons mutualisés en submodules dans un repository workspace, chacun avec sa stack :
- nuxt/ : Frontend Nuxt 3 avec 200+ composants Vue
- magento/ : Backend Magento 2 avec nos extensions custom
- lambda/ : 24 services Node.js en Lambda AWS
- infra/ : Infrastructure-as-Code Terraform + Docker
Le tout sert un site multi-pays et multi-région, ~15 millions de visiteurs mensuels, et une équipe de 3 développeurs qui jonglent entre ces univers. Avec l’introduction de l’IA dans notre process de développement (Cursor -> Windsurf -> Claude Code), la code review devenait un goulot d’étranglement, et les questions du métier sur la code-base consommaient un temps précieux.
L’architecture agent
Notre solution : un microservice Node.js 22 + Express qui orchestre Claude Code CLI en tant qu’agent autonome.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ GitLab │ │ Slack │ │ Jira │
│ Webhooks │ │ Commands │ │ Webhooks │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
│
┌──────▼──────┐
│ Express │
│ Validator │
└──────┬──────┘
│
┌──────▼──────┐
│ AWS SQS │
│ Queue │
└──────┬──────┘
│
┌──────▼──────┐ ┌─────────────┐
│ Claude Code │────▶│ PVC │
│ Worker │◀────│ Codebase │
└──────┬──────┘ └─────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ GitLab │ │ Slack │ │ Jira │
│ Comments │ │ Messages │ │ Updates │
└─────────────┘ └─────────────┘ └─────────────┘
Le flux est simple mais robuste : un événement arrive (webhook ou commande Slack), le service valide la signature, enqueue le message dans SQS, puis un worker dédié synchronise les submodules et exécute Claude Code avec le contexte complet.
Les 5 tâches automatisées
Notre agent gère cinq types de tâches, chacune auto-enregistrée via un pattern Task Registry :
// Exemple du pattern Task Registry
import { z } from 'zod';
import { TaskRegistry } from './registry';
const CodeReviewSchema = z.object({
type: z.literal('code-review'),
mergeRequestUrl: z.string().url(),
projectPath: z.string(),
sourceBranch: z.string(),
targetBranch: z.string(),
diffContent: z.string().optional()
});
TaskRegistry.register({
type: 'code-review',
schema: CodeReviewSchema,
handler: async (payload) => {
// Spawn Claude Code avec contexte MR
return spawnClaudeCode({
prompt: buildCodeReviewPrompt(payload),
addDirs: ['nuxt', 'lambda', 'magento', 'infra']
});
}
});
1. Code Review
À chaque Merge Request sur GitLab, l’agent analyse le diff, identifie les patterns problématiques, vérifie la cohérence avec nos conventions, et poste des commentaires inline. Un filtre intelligent ignore les updates de metadata (labels, assignees) pour ne déclencher que sur les vrais changements de code.


2. Feature Development
La commande /claude-dev ZV-1234 récupère le ticket Jira, analyse les specs, et implémente la feature dans une branche dédiée. L’agent pousse le code et crée la MR automatiquement.

3. Codebase Q&A
Besoin de comprendre comment fonctionne le système de cache produit ? /claude-ask "Comment fonctionne le cache des pages produit dans Nuxt ?" interroge l’agent qui a accès aux 4 submodules et répond avec les fichiers et lignes de code pertinents.

4. Ticket Creation
/claude-ticket "Crée un ticket pour la mise en place d'un blog technique sur Astro 5" crée un ticket Jira enrichi par l’IA : bloc d’info du besoin, todo technique clairement explicité, QA steps intégrés.

5. Daily Standup
Chaque matin à 9h, l’agent agrège les commits, MRs mergées, et tickets en cours pour générer un résumé Slack de l’activité de l’équipe.

L’intégration Slack
Slack est le hub d’interaction quotidien. Chaque commande suit le même pattern UX :
- Réponse immédiate (< 3 secondes, obligation Slack)
- Traitement asynchrone via SQS
- Update du message original via
message_tsune fois terminé
# Exemples d'utilisation
/claude-review https://gitlab.com/zv/nuxt/-/merge_requests/847
/claude-dev ZV-9523
/claude-ask "Quels sont les délais de livraison sur le site ?"
/claude-ticket "Feature: ajouter le support Apple Pay sur checkout mobile"
/claude-standup
Les développeurs n’ont plus besoin de quitter leur flow - l’agent travaille en background et notifie quand c’est prêt, n’importe qui peut directement trigger un développement au besoin depuis Slack.

Résultats et métriques
Après 3 semaines de production :
| Métrique | Avant | Après | Delta |
|---|---|---|---|
| Pipelines en échec post-merge | 12% | 4% | -67% |
| MRs mergées par semaine | 19 | 27 | +42% |
| Issues détectées en pre-review | 8% | 31% | +287% |
| Incidents sécurité (code) | 1/mois | 0 | -100% |
*Sur le nouveau code uniquement
Les défis techniques
Prompt engineering multi-contexte
Chaque submodule a son propre univers : Vue/TypeScript (Nuxt3) pour le front, Node.js/AWS pour lambda, PHP/Magento pour le backend, Terraform pour infra. Nos prompts système incluent le CLAUDE.md spécifique au projet détecté dans le diff.
Le gamebreaker assez récent (ajouté à Claude code sur la version v2.1.20 - 26 janvier 2026) :
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude \
--add-dir nuxt \
--add-dir lambda \
--add-dir magento \
--add-dir infra
Cette commande permet de charger l’ensemble des fichiers CLAUDE.md de chaque dossier, avec chacun leurs spécificités.
Ces derniers doivent être parfaitement optimisés pour éviter de charger trop de contexte, dans tous les cas l’efficience est là et le modèle a une connaissance globale de toute la code-base.
Le workflow idéal : séparation des contextes
L’un des enseignements clés de notre utilisation : la qualité vient de la séparation des tâches.
-
Création du ticket - Claude a accès à toute la code-base. Il sait exactement ce qu’il faut faire, quels fichiers sont impactés, et génère un ticket Jira parfaitement détaillé techniquement.
-
Développement - Claude repart avec un contexte vide, mais un ticket précis. Pas de bruit, pas d’hypothèses : il implémente exactement ce qui est spécifié.
-
Code review - Évaluation finale du rendu technique. Approbation ou rejet avec feedback actionnable.
Cette séparation évite les hallucinations et garantit une traçabilité complète : chaque décision technique est documentée dans le ticket avant l’implémentation.
Gestion de la fenêtre de contexte
L’agent charge les 4 submodules via --add-dir, lui donnant accès à l’intégralité de la code-base (~300K lignes). Mais chaque tâche démarre avec une conversation vide : pas d’historique pollué, pas de contexte résiduel.
Ce reset systématique :
- Évite les confusions entre tâches successives
- Garantit des réponses déterministes
- Permet de tourner 24/7 sans dégradation de qualité
La suite
- Automatiser la QA : pour tenir le rythme et la vélocité globale, c’est désormais le principal gouleau d’étrenglement.
- Intégrer une connexion directe avec Teams
- Ajouter d’autres cas d’usages automatisables
“Claude Agent ne remplace pas notre expertise — il amplifie notre capacité à l’appliquer. On passe moins de temps sur le code trivial et plus sur l’architecture qui compte.” — L’équipe Tech Z&V