IBM Bob · formation en trois niveaux Docs
Formation interactive · documentation bob.ibm.com lue le 20 sept. 2026

Apprendre à travailler avec IBM Bob

Vous savez utiliser un éditeur et Git, vous connaissez les modèles de langage par l'usage, mais vous n'avez jamais travaillé avec un agent de code. Cette formation vous fait passer du premier dialogue à la personnalisation de l'outil pour votre équipe, en trois niveaux, avec un projet fil rouge et des travaux pratiques à refaire chez vous. Elle est construite sur deux sources recoupées : douze vidéos de démonstration et la documentation officielle de Bob.

Une conversation avec Bob, rejouée pas à pas

Cliquez sur les étapes : ce que vous tapez, ce que Bob répond, ce qu'il demande d'approuver. Scénario tiré du tutoriel « Inspect an unfamiliar codebase ».

3
niveaux : découverte, prise en main, approfondissement
12
vidéos de démonstration exploitées (une treizième est privée)
139
pages de documentation lues, Bob IDE et Bob Shell
10
modules interactifs : simulateur, modes, arbre de configuration, MCP, Bobcoins
Comment suivre cette formation

Chaque chapitre suit le même déroulé : un objectif (« à la fin, vous savez… »), une explication courte, une démonstration commentée tirée d'une vidéo, les précisions de la documentation, un travail pratique à faire dans votre éditeur, une liste de vérification cochable et un quiz. Chaque niveau se termine par un test. Les modules marqués Interactif reposent sur des données tirées des sources ; ceux marqués Illustration sont des maquettes dessinées pour la formation. La page n'exécute pas Bob et ne fait aucun appel réseau : elle vous guide, vous faites les gestes dans votre éditeur. Les termes de l'interface restent en anglais, comme dans le produit. Quand un point n'est ni documenté ni montré, la formation le dit.

Niveau 1

Découverte

Pour un développeur qui n'a jamais utilisé d'assistant agentique. À la fin : Bob est installé, vous savez choisir un mode, tenir une conversation utile et lire votre consommation.
Chapitre 1 · Niveau 1

Ce qu'est Bob, et ce qu'il n'est pas

Avant d'installer quoi que ce soit, il faut savoir de quelle catégorie d'outil on parle. Un agent de code n'est ni un moteur de complétion, ni un chatbot dans une barre latérale.

Objectif

À la fin de ce chapitre, vous savez expliquer à un collègue ce que Bob fait, en quoi il diffère d'un complément de code, et quelle est la différence entre Bob IDE et Bob Shell.

Dans ce chapitre
  • La définition officielle : un partenaire du cycle de vie logiciel, pas un générateur de lignes.
  • Bob IDE et Bob Shell : deux portes d'entrée, les mêmes capacités.
  • Ce qu'un agent fait de plus qu'une complétion : lire, décider, agir, demander l'approbation.
  • Une contradiction dans les sources, et comment la formation la tranche.

La définition officielle

La page d'accueil de la documentation définit Bob comme un « AI SDLC partner » : un partenaire pour le cycle de vie du logiciel, qui vient s'ajouter à vos façons de travailler et vous aide à intervenir sur de vraies bases de code [D ide]. Le mot important est cycle de vie : la documentation ne vend pas un outil qui écrit des lignes à votre place, mais un outil qui intervient sur la compréhension, l'écriture, la revue, la documentation et l'automatisation.

Les usages annoncés sont au nombre de sept : générer du code, refactoriser et déboguer, écrire et mettre à jour la documentation, répondre à des questions, automatiser des tâches, créer des fichiers et des projets, et suivre sa consommation pour l'optimiser [D ide].

Un agent, pas une complétion

Un moteur de complétion propose la suite de la ligne que vous tapez. Il ne lit pas votre dépôt, ne lance pas vos tests, ne vous demande rien. Bob fonctionne autrement : il dispose d'outils et s'en sert. Il lit des fichiers, cherche dans le code, exécute des commandes dans le terminal, appelle des serveurs externes, et découpe le travail en sous-tâches [D ide/core-concepts/tools].

Cette capacité d'action est précisément ce qui impose un garde-fou : Bob demande votre approbation avant les actions sensibles, et vous pouvez décider à l'avance lesquelles sont automatiquement approuvées. C'est le sujet du niveau 2. Pour les sous-agents, la documentation est explicite : vous approuvez chaque lancement avant qu'il démarre [D ide].

Doc · Accueil Bob IDE : la fenêtre de l'application avec l'explorateur de fichiers, l'éditeur et le panneau de chat de Bob.
Illustration d'origine (page /docs/ide, légende « Bob IDE ») : à gauche l'explorateur de fichiers, au centre l'éditeur, à droite le panneau de conversation. C'est l'écran dans lequel se déroule toute la formation.

Bob IDE et Bob Shell

Bob existe sous deux formes. Bob IDE est l'application graphique, celle de cette formation. Bob Shell apporte les mêmes capacités à la ligne de commande : sessions interactives, sessions non interactives pour l'automatisation, intégration dans le terminal d'un éditeur [D shell]. Les deux outils offrent « la même assistance, optimisée pour leur environnement respectif » [D llms.txt], et l'on retrouve dans les deux les trois mêmes modes. Bob Shell est traité au niveau 3, pour l'automatisation et l'intégration continue.

Une contradiction dans les sources, et ce que la formation retient

Les sources ne s'accordent pas sur la nature de Bob IDE. Trois pages de tutoriel et le guide de démarrage écrivent, dans leurs prérequis : « Bob is a standalone IDE application and not an extension » [D ide/getting-started/quickstart]. Le fichier llms.txt du site parle au contraire d'installer « l'extension Bob pour VS Code » [D llms.txt], et la page de connexion mentionne « l'extension IDE » parmi les clients [D ide/account/signing-in]. Les installateurs proposés au téléchargement sont un .pkg macOS et un .exe Windows, ce qui va dans le sens d'une application autonome. Cette formation enseigne donc l'application autonome, en suivant la documentation la plus explicite et la plus récente. Si vous lisez « extension » ailleurs, c'est un reste de l'ancienne distribution.

À retenir

Bob agit : il lit votre code, exécute des commandes et modifie des fichiers, sous votre approbation. Ce n'est pas un complément de code, et ce n'est pas non plus un outil auquel on délègue tout. Le reste de la formation consiste à apprendre à cadrer son travail pour qu'il soit utile et vérifiable.

Quiz · chapitre 1
Qu'est-ce qui distingue le mieux Bob d'un moteur de complétion de code ?
Chapitre 2 · Niveau 1

Installer Bob et créer son compte

Comptez environ cinq minutes. La seule subtilité est le choix de l'installateur sur Mac, et le fait que la session ne se partage pas entre les clients.

Objectif

À la fin de ce chapitre, Bob est installé sur votre machine, vous êtes connecté avec un IBMid, et le panneau de conversation s'ouvre au clavier.

Ce qu'il faut avant de commencer

La documentation annonce une installation d'environ cinq minutes et demande : un système macOS, Linux ou Windows, 4 Go de mémoire vive au minimum et 8 Go recommandés, 500 Mo d'espace disque, et une connexion internet active [D ide/getting-started/install].

Point non documenté

Linux figure dans la liste des systèmes pris en charge, mais la page d'installation ne donne aucune étape ni aucun format de paquet pour Linux. Les seules procédures détaillées concernent macOS et Windows. Si vous travaillez sous Linux, la documentation lue le 20 septembre 2026 ne vous dit pas comment procéder.

Installer

Le téléchargement se fait depuis bob.ibm.com/download. Sur Mac, il faut d'abord savoir quel processeur équipe la machine : menu Pomme, « About This Mac », ligne « Chip ». Une puce M1, M2 ou M3 appelle l'installateur mac-ARM ; un processeur Intel appelle l'installateur mac-Intel. On ouvre ensuite le fichier .pkg et on suit l'assistant. Sur Windows, on exécute le .exe, on garde le répertoire proposé par défaut, et on termine par « Finish » [D ide/getting-started/install].

Se connecter

Un IBMid est nécessaire. Tous les clients passent par le même point d'entrée, bob.ibm.com/login [D ide/account/signing-in]. Bob ouvre votre navigateur, vous saisissez votre adresse, Bob reconnaît le domaine et vous redirige soit vers IBMid, soit vers le système d'authentification unique de votre entreprise, puis vous ramène dans l'application. Il est possible de créer un IBMid à partir d'un compte Google. L'authentification unique par SAML ou OIDC demande un plan Enterprise.

Deux détails qui font perdre du temps si on les ignore : les sessions expirent après une période d'inactivité, et une session est propre à chaque client. Être connecté dans Bob IDE ne vous connecte pas dans Bob Shell.

Doc · Quickstart Clonage d'un dépôt depuis l'interface de Bob IDE.
Illustration d'origine : cloner un dépôt directement depuis Bob IDE, sans passer par le terminal.
Doc · Quickstart Le panneau de conversation de Bob ouvert à droite de l'éditeur.
Illustration d'origine : le panneau de conversation ouvert. C'est l'écran de départ de tous les travaux pratiques.
Le raccourci à mémoriser

Pour ouvrir le panneau de conversation : Option + Command + B sur macOS, Ctrl + Alt + B sur Windows [D ide/getting-started/quickstart]. Ce raccourci est répété dans presque tous les tutoriels ; c'est le seul à connaître par cœur pour démarrer.

Travail pratique 1 Installer Bob et ouvrir le projet fil rouge

Le projet fil rouge de cette formation est Galaxium Travels, un système fictif de réservation de voyages spatiaux utilisé par les tutoriels officiels. Vous le garderez du niveau 1 au niveau 3.

  1. Installez Bob depuis bob.ibm.com/download, en choisissant le bon installateur pour votre machine.
  2. Lancez l'application et connectez-vous avec votre IBMid.
  3. Clonez le projet fil rouge. En ligne de commande :
    git clone -b bob-learning-path-branch https://github.com/IBM/galaxium-travels
    La branche bob-learning-path-branch est celle qu'utilisent les tutoriels du parcours d'apprentissage.
  4. Ouvrez le dossier dans Bob avec « File > Open Folder », puis répondez « Yes, I trust the authors » à la demande de confiance.
  5. Ouvrez le panneau de conversation avec le raccourci, et laissez-le ouvert.
  • Bob est installé et se lance.
  • Je suis connecté avec mon IBMid et je vois mon compte dans l'application.
  • Le dépôt Galaxium Travels est cloné sur la branche bob-learning-path-branch.
  • Le dossier est ouvert dans Bob et j'ai accordé ma confiance aux auteurs.
  • J'ouvre et je ferme le panneau de conversation au clavier sans hésiter.
Quiz · chapitre 2
Vous êtes connecté dans Bob IDE. Vous ouvrez Bob Shell dans un terminal. Que se passe-t-il ?
Chapitre 3 · Niveau 1

Les trois modes : Agent, Plan, Ask

Le mode décide de ce que Bob a le droit de faire. C'est le réglage le plus structurant de l'outil, et le premier réflexe à prendre avant d'écrire un message.

Objectif

À la fin de ce chapitre, vous choisissez le mode adapté à votre intention, vous savez lequel peut modifier des fichiers ou lancer des commandes, et vous changez de mode au clavier.

Trois modes, trois niveaux de permission

La documentation annonce trois modes disponibles par défaut [D ide/features/modes]. Ce ne sont pas trois styles de réponse, mais trois jeux d'outils différents, donc trois niveaux de pouvoir sur votre projet.

Ask mode est en lecture seule : il lit, il explique, il ne modifie rien. Le guide de démarrage relie explicitement ce choix au principe du moindre privilège [D ide/getting-started/quickstart]. Agent mode est le mode complet : il lit, écrit et surtout c'est le seul à pouvoir exécuter des commandes dans le terminal. Plan mode se situe entre les deux, et sa position surprend souvent.

Le point contre-intuitif

Plan mode peut écrire des fichiers. On imagine volontiers un mode de réflexion en lecture seule ; ce n'est pas le cas. Plan dispose de l'outil d'édition, parce qu'il doit enregistrer le plan qu'il rédige, par exemple dans un fichier Markdown. En revanche il ne peut pas exécuter de commandes [D ide/features/modes]. Le mode vraiment inoffensif pour votre dépôt, c'est Ask.

Interactif

Ce que chaque mode peut et ne peut pas faire

Choisissez un mode : les groupes d'outils disponibles s'affichent, les groupes barrés lui sont interdits. Survolez un groupe pour voir les outils qu'il contient et son niveau de risque. Données tirées des pages Modes, Tools et Auto-approve.

Changer de mode

Quatre façons de changer de mode sont documentées : le menu déroulant à gauche du champ de saisie, le raccourci cyclique Command + point sur macOS ou Ctrl + point ailleurs, l'acceptation d'une suggestion de Bob, et le changement que Bob opère de lui-même en cours de tâche, par exemple lorsqu'il passe de Plan à Agent une fois le plan prêt [D ide/features/modes]. Les commandes /agent, /plan et /ask font également le travail [D ide/getting-started/quickstart].

Si vous lisez « Code mode » quelque part

Les vidéos de démonstration les plus anciennes parlent de « code mode », et le fichier llms.txt du site annonce cinq modes : Code, Ask, Plan, Advanced et Orchestrator [D llms.txt]. La documentation, elle, n'en décrit que trois. L'indice décisif se trouve dans les images de la documentation : la capture d'écran nommée code-mode.png porte la légende officielle « Switch to Agent mode ». « Code mode » est donc l'ancien nom d'Agent mode. Les modes « Advanced » et « Orchestrator » ne sont confirmés par aucune page de documentation : cette formation ne les enseigne pas.

Travail pratique 2 Éprouver la limite du mode Ask
  1. Passez en Ask mode avec le menu déroulant ou /ask.
  2. Demandez : What is the purpose of this application? Describe the project structure and the main responsibilities of each top-level directory.
  3. Lisez la réponse, puis demandez à Bob d'écrire cette description dans un fichier docs/ONBOARDING.md.
  4. Observez son refus, ou sa proposition de changer de mode : c'est le garde-fou du mode, pas une mauvaise volonté.
  5. Passez en Agent mode avec le raccourci, redemandez la même chose, et approuvez la création du fichier.

Ce contraste, ressenti une fois, vaut toutes les explications : le mode n'est pas un ton, c'est une permission.

  • Je change de mode au clavier sans chercher dans les menus.
  • J'ai vu Ask refuser d'écrire un fichier.
  • Je sais que Plan peut écrire mais pas exécuter de commande.
  • Je sais qu'Agent est le seul mode capable de lancer une commande dans le terminal.
  • Le fichier docs/ONBOARDING.md existe dans mon projet.
Quiz · chapitre 3
Vous êtes en Plan mode. Que peut faire Bob ?
Chapitre 4 · Niveau 1

Premier dialogue : comprendre une base de code

Le meilleur premier usage d'un agent n'est pas d'écrire du code, c'est de comprendre celui qui existe. C'est sans risque, et c'est là que le gain est le plus visible.

Objectif

À la fin de ce chapitre, vous savez faire décrire un dépôt inconnu, en obtenir l'architecture avec des diagrammes, le démarrer, et conserver le résultat dans un fichier pour votre équipe.

Trois questions suffisent

Les vidéos d'onboarding suivent un scénario simple et reproductible : un développeur arrive sur un projet qu'il ne connaît pas, et personne n'est disponible pour lui expliquer. Il pose trois questions, dans cet ordre : à quoi sert cette application, comment la démarrer, et comment elle est architecturée.

V05 À quoi sert cette application ? 2 min 11
  1. [00:20] Le présentateur bascule en Ask mode, présenté comme l'un des modes prédéfinis qui optimisent l'interaction.
  2. [00:45] Bob examine d'abord la structure des fichiers, reconnaît une application complète côté client et serveur, puis ouvre quelques fichiers clés avant de se prononcer.
  3. [01:10] En moins de vingt secondes, il rend le but de l'application, une vue d'architecture, les fonctionnalités principales et les cas d'usage visés.

Ordre remarquable : Bob part de la structure, pas du contenu. Il lit peu de fichiers, bien choisis. [V05]

V06 Comment démarrer cette application ? 2 min 28
  1. [00:30] Bob lit le README, le package.json et le Makefile.
  2. [00:55] Il explique qu'il faut lancer le serveur et le client, où les trouver, et quelle est la procédure de première installation.
  3. [01:15] C'est le présentateur qui exécute les commandes, l'une après l'autre. Bob, en Ask mode, n'exécute rien.
  4. [02:20] L'application tourne. Le présentateur conclut qu'il est opérationnel en moins d'une minute.

C'est la meilleure illustration concrète de la limite du mode Ask : Bob explique la commande, vous la lancez. [V06]

V07 Expliquer l'architecture 4 min 21
  1. [00:50] Bob distingue les couches, côté client et côté serveur, et nomme les patterns à connaître, par exemple l'injection de dépendances.
  2. [02:00] Il produit un modèle de données et un flux de données sous forme de diagrammes Mermaid, puis aborde la construction et la sécurité.
  3. [02:30] Le présentateur estime avoir obtenu en deux minutes ce qui demanderait des heures à la main.
  4. [03:00] Pour conserver l'analyse, il bascule en Agent mode, en restant dans la même tâche pour garder le contexte déjà accumulé, et demande la création d'un fichier Markdown.

Le geste à retenir est celui de la fin : rester dans la même tâche évite à Bob de relire tout le dépôt. [V07]

Interactif

Rejouer la conversation, étape par étape

Six scénarios reconstitués d'après les vidéos et les tutoriels. Avancez pas à pas : ce que vous tapez, les outils que Bob utilise, ses demandes d'approbation, et une note explicative à chaque étape. Les réponses de Bob sont reformulées, la page n'exécute rien.

Travail pratique 3 L'onboarding complet sur le projet fil rouge

Cet exercice reprend le déroulé du tutoriel officiel « Inspect an unfamiliar codebase » [D ide/tutorials/inspect-a-codebase], dont les prompts sont repris presque tels quels.

  1. En Ask mode, demandez le but de l'application et la responsabilité de chaque répertoire de premier niveau.
  2. Toujours en Ask, demandez comment démarrer l'application, puis lancez vous-même les commandes indiquées.
  3. Demandez l'architecture, en réclamant explicitement des diagrammes Mermaid pour le modèle de données et le flux principal.
  4. Sans ouvrir de nouvelle tâche, passez en Agent mode et demandez de tout consigner dans docs/ONBOARDING.md, avec les diagrammes et des tableaux.
  5. Relisez le fichier produit et corrigez ce qui est faux. C'est votre première relecture critique d'un travail d'agent.
  • J'ai obtenu une description du projet sans lire le code moi-même.
  • J'ai démarré l'application en suivant les indications de Bob.
  • J'ai obtenu au moins un diagramme Mermaid lisible.
  • J'ai gardé la même tâche pour passer de l'analyse à l'écriture du fichier.
  • J'ai relu le fichier produit et corrigé au moins une imprécision.
Quiz · chapitre 4
Après avoir analysé le dépôt en Ask mode, pourquoi passer en Agent mode dans la même tâche plutôt que d'ouvrir une nouvelle conversation ?
Chapitre 5 · Niveau 1

La fenêtre de contexte et les Bobcoins

C'est la notion que les débutants ignorent et que les utilisateurs expérimentés surveillent en permanence. Elle explique à la fois la qualité des réponses et le montant de la facture.

Objectif

À la fin de ce chapitre, vous lisez l'indicateur de contexte, vous savez quand ouvrir une nouvelle tâche, et vous comprenez ce qui fait monter votre consommation.

Un budget, pas une mémoire

Chaque tâche dispose d'une fenêtre de contexte plafonnée à 270 000 tokens [D ide/core-concepts/context-window-management]. La documentation insiste sur une formule utile : la fenêtre de contexte n'est pas un espace de stockage, c'est le budget de tokens actif à chaque étape.

Quand la conversation approche du plafond, une compaction se déclenche, généralement autour de 190 000 tokens. Elle conserve le récent et le pertinent, résume ou supprime l'ancien. La documentation prévient sans détour : la compaction perd de l'information. Environ 20 000 tokens sont par ailleurs réservés à la réponse du modèle.

Ce qui occupe la fenêtre

Le panneau détaille six postes : le system prompt, les définitions d'outils, les outils MCP, les Rules, les Skills et les Messages. Vos mentions de fichiers, les sorties de commandes et les résultats d'outils comptent tous dans Messages ; le contenu des fichiers n'apparaît pas sur une ligne séparée.

Sur le projet fil rouge, la documentation mesure une surcharge de départ d'environ 8 500 tokens avant même votre première vraie question. Le point décisif est ailleurs : Bob renvoie l'intégralité du contexte actif à chaque message. Une longue conversation coûte donc de plus en plus cher à chaque tour.

Doc · Context window Panneau de la fenêtre de contexte : tokens consommés et Bobcoins affichés dans l'interface.
Illustration d'origine (pages /account/bobcoins et /core-concepts/context-window-management) : l'indicateur qui réunit les tokens et les Bobcoins. C'est le cadran à surveiller pendant le travail.
Interactif

Que contient la fenêtre de contexte ?

Les six postes du panneau, avec les valeurs mesurées par la documentation sur le projet Galaxium Travels, et l'effet d'une conversation qui s'allonge. Le plafond et le seuil de compaction sont ceux de la documentation.

V02 La fenêtre de contexte vue par le présentateur extrait, 4 min 49 au total
  1. [02:25] Il ouvre l'indicateur et commente 44 000 tokens consommés sur 270 000.
  2. [02:50] Il détaille les postes à l'oral, avec des ordres de grandeur proches de ceux de la documentation sans être identiques.
  3. [03:10] Il énonce sa règle personnelle : ne jamais dépasser 100 000 tokens, 120 000 au grand maximum, et ouvrir une nouvelle conversation dès que possible.

Il qualifie la fenêtre de contexte de ressource la plus précieuse et de concept le plus important à maîtriser en codage assisté. [V02]

Les Bobcoins

La consommation se mesure en Bobcoins, des unités qui agrègent l'usage de ressources de calcul, tous modèles confondus [D ide/account/bobcoins]. Les tokens d'entrée comme de sortie comptent. Un Bobcoin vaut 0,50 dollar, un prix confirmé à deux endroits. Les allocations mensuelles documentées sont de 50 Bobcoins pour l'essai gratuit et le plan Pro, 180 pour Pro+, et 1 000 pour Ultra.

Le lien avec le chapitre précédent est direct, et c'est l'argument économique de la formation : puisque chaque message renvoie tout le contexte actif, une conversation qui traîne coûte plus cher à chaque tour. Ouvrir une nouvelle tâche quand on change de sujet n'est pas une coquetterie d'organisation, c'est une économie.

Interactif

Calculateur de Bobcoins

Les allocations par plan, le prix unitaire et le coût des packs sont ceux de la documentation. Ajustez votre consommation pour voir le dépassement et son coût. Le taux de conversion des tokens en Bobcoins n'étant pas documenté, le calcul part de Bobcoins consommés, pas de tokens.

Ce que la documentation ne dit pas

Trois chiffres manquent, et cette formation ne les invente pas. Le taux de conversion des tokens en Bobcoins n'est publié nulle part : la documentation indique seulement que Bob fait la conversion pour vous. Le prix mensuel en euros ou en dollars des plans Pro, Pro+ et Ultra n'apparaît pas dans les pages lues. Et le coût en Bobcoins d'une opération type, par exemple une lecture de fichier ou un sous-agent, n'est pas documenté. Vous pouvez donc suivre votre consommation, mais pas la prévoir à partir d'un nombre de tokens.

Les deux réflexes du niveau 1

Regardez l'indicateur de contexte comme vous regardez la jauge de carburant. Et ouvrez une nouvelle tâche à chaque changement de sujet : la documentation en fait une bonne pratique explicite, avec un repère utile, autour de 19 000 tokens de Messages il est raisonnable de repartir à zéro.

  • Je sais où lire le nombre de tokens consommés dans l'interface.
  • Je connais le plafond de 270 000 tokens et le seuil de compaction autour de 190 000.
  • J'ai compris que chaque message renvoie tout le contexte actif.
  • J'ouvre une nouvelle tâche quand je change de sujet.
  • Je sais où consulter ma consommation de Bobcoins.
Quiz · chapitre 5
Pourquoi une longue conversation coûte-t-elle de plus en plus cher à chaque message ?
Interactif

Test de fin de niveau 1

Cinq questions sur l'ensemble du niveau découverte. Répondez, puis corrigez : chaque explication renvoie au chapitre concerné.

Niveau 2

Prise en main

Pour un développeur qui veut produire avec Bob. À la fin : vous menez une fonctionnalité du plan à la pull request, en gardant le contrôle à chaque étape.
Chapitre 6 · Niveau 2

Le cycle plan, implémentation, revue

C'est la méthode centrale de la formation. Elle tient en cinq étapes, et l'essentiel du travail se joue avant la première ligne de code.

Objectif

À la fin de ce chapitre, vous savez faire produire un plan écrit, le relire de façon critique, le corriger, puis le faire implémenter dans une tâche neuve.

Cinq étapes

La vidéo 2 résume la méthode qu'on retrouve dans tous les tutoriels : donner le contexte, faire produire un plan, itérer sur le plan, implémenter, puis itérer sur l'implémentation. Le présentateur qualifie l'étape du plan de plus importante, et décrit l'implémentation comme « étonnamment peu spectaculaire » quand le plan est bon [V02].

Illustration

La méthode en cinq étapes

Schéma dessiné pour la formation d'après le récapitulatif de la vidéo 2. La flèche de retour rappelle qu'une implémentation qui dérape renvoie souvent à un plan incomplet.

Cadrer avant de demander

Le tutoriel sur les fonctionnalités complexes fait précéder le prompt de quatre questions, à se poser avant de toucher au clavier [D ide/tutorials/create-a-plan-and-implement-complex-features] : que fait la fonctionnalité, et surtout que ne fait-elle pas ? Quelles couches touche-t-elle, interface, service, base de données ? Quelles contraintes s'imposent, par exemple le nombre de fichiers ou la rétrocompatibilité ? Et à quoi reconnaîtra-t-on que c'est terminé ?

Ces quatre réponses se transposent directement en un prompt structuré en quatre blocs : ce que je veux, le périmètre, les contraintes, la définition de « terminé ». C'est le modèle à réutiliser pour toutes vos demandes de plan.

Faire écrire le plan dans un fichier

Un plan qui reste dans la conversation disparaît avec elle. La vidéo 2 en fait une consigne : toujours sauvegarder le plan dans un fichier pour pouvoir l'itérer [V02]. Le tutoriel obtient ce résultat en le demandant explicitement dans les contraintes, par exemple un dossier plans et au plus trois fichiers.

Une nuance entre les pages

Le tutoriel sur les fonctionnalités complexes écrit que Bob « génère un ensemble de fichiers Markdown », tandis que la page sur le binôme avec Bob dit qu'il « peut l'enregistrer comme fichier Markdown ». La persistance semble donc dépendre de la consigne. Retenez-en une règle pratique : demandez toujours explicitement l'enregistrement du plan, ne comptez pas dessus par défaut.

Relire le plan, vraiment

C'est ici que la vidéo 2 place la phrase la plus utile de toute la playlist : c'est le moment d'« utiliser son propre cerveau » [V02]. Trois critères de relecture sont proposés par le tutoriel.

  • Le périmètre correspond-il à ce que vous avez demandé, ni plus, ni moins ?
  • Traquez le vague. Des formules comme « ajouter au besoin » ou « mettre à jour de façon appropriée » sont des trous dans le plan, pas des détails de rédaction.
  • Chaque étape nomme-t-elle ses fichiers ? Une étape sans fichier identifié est une étape que personne ne peut vérifier.

Puis on corrige, dans la même conversation Plan, par une demande ciblée. Le tutoriel donne un exemple de correction portant sur des couleurs précises à associer à chaque classe de siège.

Implémenter dans une tâche neuve

Une fois le plan approuvé, on ouvre une nouvelle tâche avant d'implémenter. Le tutoriel donne trois raisons : la discussion de planification ne pèse plus sur le budget de tokens, le contexte se recentre sur le plan approuvé, et l'on évite de mélanger réflexion et exécution. Le prompt d'implémentation tient alors en une ligne, avec une mention du dossier de plans.

Build the features in the plans folder
@plans/
V09 Architecturer une fonctionnalité 5 min 51
  1. [00:20] Bascule en Plan mode, décrit comme servant à analyser les exigences puis produire un plan.
  2. [02:02] Une liste de tâches apparaît automatiquement pour les travaux longs, et se met à jour au fil de l'analyse.
  3. [02:30] Bob produit deux approches, chacune avec ses spécifications techniques et sa stratégie de test.
  4. [03:20] Il les compare : un calcul côté client, rapide à livrer mais refait à chaque rendu ; un calcul côté serveur, plus performant mais qui impose une migration des données existantes.
  5. [04:00] Le présentateur insiste : ce sont des points de discussion, l'avis de Bob, à confronter à des collègues.
  6. [04:40] La recommandation retenue respecte la contrainte de rapidité donnée au départ, et le plan inclut les étapes de déploiement.

Demander deux approches avec leurs avantages et inconvénients, plutôt qu'une solution, est la technique de prompt la plus rentable de ce chapitre. [V09]

V10 Implémenter la fonctionnalité 9 min 29
  1. [00:35] Bob crée les fichiers, puis détecte et corrige seul des erreurs de style.
  2. [01:00] Certains outils sont auto-approuvés, mais Bob demande une approbation pour créer un répertoire.
  3. [02:40] Un point de reprise est créé à chaque écriture de fichier, ce qui permet de revenir à la dernière configuration correcte.
  4. [04:40] Bob écrit des tests unitaires et les lance, puis adapte les tests existants au nouvel attribut.
  5. [08:00] La construction du projet réussit, les tests passent.
  6. [08:40] Bilan annoncé : de l'idée à l'implémentation en une quinzaine de minutes, avec un résumé réutilisable dans la pull request.

Pendant que Bob travaille, le présentateur relit les fichiers produits au fur et à mesure. C'est le bon usage du temps d'attente. [V10]

Travail pratique 4 Une fonctionnalité, du plan à l'implémentation

Sur le projet fil rouge, vous allez ajouter des classes de siège aux réservations. C'est l'exercice du tutoriel officiel.

  1. Écrivez d'abord, sur papier, vos réponses aux quatre questions de cadrage.
  2. Passez en Plan mode et rédigez un prompt en quatre blocs. Périmètre suggéré : un sélecteur de classe dans l'interface de réservation, une API qui accepte et stocke la classe, une colonne seat_class dans la table des réservations, et aucun changement au tableau de bord d'administration. Contraintes : un dossier plans, trois fichiers au maximum, un changement de base rétrocompatible.
  3. Approuvez les outils que Bob demande, puis répondez à ses questions de clarification.
  4. Relisez le plan avec les trois critères. Imposez-vous de trouver au moins une formulation vague et de la faire corriger.
  5. Ouvrez une nouvelle tâche, passez en Agent mode, et lancez l'implémentation en mentionnant @plans/.
  6. Lancez l'application et vérifiez que vous pouvez choisir une classe. Le tutoriel officiel s'arrête avant cette vérification : ne faites pas la même erreur.
  • J'ai répondu aux quatre questions de cadrage avant d'écrire le prompt.
  • Mon plan est enregistré dans des fichiers, pas seulement dans la conversation.
  • J'ai trouvé et fait corriger au moins une formulation vague dans le plan.
  • J'ai ouvert une nouvelle tâche avant d'implémenter.
  • J'ai vérifié moi-même que la fonctionnalité marche dans l'application.
Quiz · chapitre 6
Le plan est prêt et relu. Pourquoi ouvrir une nouvelle tâche avant de l'implémenter ?
Chapitre 7 · Niveau 2

Donner le bon contexte

La qualité d'une réponse dépend moins de la formulation que de ce que Bob a sous les yeux. Trop de contexte nuit autant que pas assez.

Objectif

À la fin de ce chapitre, vous mentionnez précisément un fichier, une plage de lignes, un diagnostic ou un diff, vous connaissez les pièges des mentions, et vous savez reconnaître un contexte empoisonné.

Les mentions de contexte

Une mention commence par @ et ouvre un menu. Sept types sont documentés [D ide/features/context-mentions].

MentionCe qu'elle fournitÀ savoir
@/chemin/fichier.tsLe contenu complet, avec les numéros de ligneCommence toujours par / depuis la racine. Les PDF et DOCX sont acceptés, pas les binaires.
@/src/app.js:10-20Seulement ces lignesLa meilleure façon d'économiser du contexte.
@/chemin/dossierLes fichiers texte du dossierNon récursif. Les sous-dossiers ne sont pas inclus.
@problemsErreurs et avertissements, groupés par fichierAvec les chemins, les lignes et les messages.
@terminalLa dernière commande et sa sortieLimité au contenu visible du terminal.
@a1b2c3dUn commit : message, auteur, date, diffUniquement dans un dépôt Git.
@git-changesL'état Git et le diff non commitéIdéal avant d'écrire un message de commit.
@https://exemple.comLa page convertie en MarkdownLes pages complexes se convertissent mal.
Le piège de sécurité à connaître

Les mentions de fichier et de dossier passent outre .bobignore et .gitignore : un fichier explicitement mentionné est lu, même s'il est censé être ignoré [D ide/features/context-mentions]. En revanche, @git-changes et la mention d'un commit respectent .gitignore. Autrement dit, .bobignore vous protège des lectures automatiques, pas de vos propres mentions. Ne mentionnez jamais un fichier de secrets en pensant qu'il sera filtré.

Précis plutôt que large

La documentation oppose deux prompts pour illustrer la différence entre viser et ratisser [D ide/core-concepts/context-window-management].

# Précis : Bob lit 23 lignes et répond
@/src/utils/validation.ts:45-67 Fix the email validation logic

# Trop large : Bob remplit sa fenêtre et répond vaguement
@/src @/tests @/docs Review everything and suggest improvements

Sur un gros projet, la page dédiée conseille aussi d'utiliser les outils de symboles plutôt que de mentionner un fichier entier : demander la liste des fonctions d'un fichier, puis n'agir que sur celle qui vous intéresse [D ide/core-concepts/large-projects].

Appeler Bob depuis l'éditeur

Les code actions évitent de décrire au clavier ce que vous avez sous les yeux : elles transmettent automatiquement le chemin et les numéros de ligne [D ide/features/code-actions]. On les atteint par l'ampoule dans la gouttière, par le clic droit au sous-menu « Bob », ou par la palette de commandes. Deux raccourcis valent la peine d'être retenus : Cmd ou Ctrl + K ouvre une conversation en ligne à l'endroit du curseur, Cmd ou Ctrl + L envoie la sélection au panneau de conversation.

Un contexte permanent avec /init

La commande /init fait analyser le projet par Bob et produit un fichier AGENTS.md à la racine, plus un jeu de règles par mode dans .bob/ [D ide/tutorials/start-a-project]. Ce fichier est rechargé à chaque conversation : il évite de réexpliquer le projet à chaque fois. La contrepartie est qu'il occupe du contexte en permanence, d'où le conseil répété de le garder court et opérationnel, limité aux commandes d'installation, de test et de style.

Doc · start-a-project Exécution de la commande /init dans Bob IDE.
Illustration d'origine : la commande /init lancée dans la conversation.
Doc · start-a-project Le fichier AGENTS.md visible dans l'explorateur de fichiers de Bob.
Illustration d'origine : le fichier AGENTS.md produit à la racine du projet.

Quand le contexte s'empoisonne

La documentation consacre une page entière à un phénomène qui surprend les débutants : une information fausse ou hors sujet entrée dans la conversation y reste et continue d'être renvoyée à chaque message [D ide/core-concepts/context-poisoning]. La phrase clé mérite d'être citée : Bob n'ignore pas de façon fiable un texte plausible simplement parce qu'il est faux.

Les symptômes sont reconnaissables : les réponses se dégradent, Bob se trompe d'outil, un travail en plusieurs étapes tourne en rond, les corrections ne tiennent pas. Les causes principales sont un fait erroné énoncé plus tôt, une documentation obsolète dans le dépôt, un collage trop volumineux, ou une compaction dont le résumé a fini par remplacer l'original.

Le réflexe correctif est contre-intuitif : ne corrigez pas par de nouvelles instructions, cela masque le problème un ou deux échanges. Ouvrez une nouvelle tâche. Elle vide les messages empoisonnés tout en conservant vos règles et vos fichiers sur le disque. La page ajoute une règle de départage utile en cas de contradiction entre un commentaire et le code : faites confiance aux tests plutôt qu'au texte.

Travail pratique 5 Viser juste, puis empoisonner exprès
  1. Mentionnez un dossier contenant des sous-dossiers et vérifiez que seuls les fichiers directs sont pris en compte.
  2. Reprenez un prompt trop large et réécrivez-le avec une plage de lignes. Comparez la pertinence des deux réponses.
  3. Déboguez une commande qui échoue en utilisant @terminal, sans recopier la sortie à la main.
  4. Sélectionnez une fonction et lancez « Explain with Bob » par les trois chemins d'accès, pour trouver celui qui vous convient.
  5. Expérience d'empoisonnement : affirmez à Bob un fait faux sur le projet, par exemple une base de données qui n'est pas la bonne. Posez trois questions de suite et observez la dérive. Ouvrez ensuite une nouvelle tâche et reposez la dernière question.
  • Je mentionne des plages de lignes plutôt que des fichiers entiers.
  • Je sais que la mention d'un fichier ignoré le lit quand même.
  • J'ai vu qu'une mention de dossier n'est pas récursive.
  • Mon projet a un AGENTS.md court et à jour.
  • J'ai provoqué puis corrigé un empoisonnement de contexte.
Quiz · chapitre 7
Bob a intégré une information fausse et s'entête. Quelle est la réponse recommandée par la documentation ?
Chapitre 8 · Niveau 2

Approuver sans perdre le contrôle

L'auto-approbation est le réglage qui fait gagner le plus de temps, et celui qui peut coûter le plus cher. La documentation est inhabituellement directe sur le sujet.

Objectif

À la fin de ce chapitre, vous réglez les approbations selon le risque, vous savez ce que chaque groupe autorise, et vous récupérez une situation avec un retour en arrière.

Le mécanisme

Par défaut, Bob demande avant d'agir, une action à la fois. Les contenus volumineux, comme un diff complet, sont repliés dans un aperçu. Surtout, une commande est modifiable avant d'être approuvée : vous pouvez corriger ce que Bob s'apprête à lancer [D ide/features/auto-approving-actions].

S'y ajoutent les approbations au niveau de la tâche, ces boutons « Approve … tools for task » que vous avez déjà rencontrés : ils ouvrent un groupe d'outils pour la tâche en cours seulement. Pour l'exécution de commandes, un écran supplémentaire demande de confirmer que vous comprenez les risques.

Neuf groupes, trois niveaux de risque

Le panneau des permissions liste neuf catégories, chacune avec un niveau de risque documenté. Edit et Execute sont classés à risque élevé, la première parce qu'elle crée, modifie et supprime des fichiers, la seconde parce qu'elle lance des commandes. Read et Skill sont à risque moyen, MCP entre moyen et élevé. Les quatre dernières, Todo, Subtask, Subagent et Mode, sont à risque faible.

Doc · Auto-approve Panneau des permissions d'auto-approbation montrant les actions disponibles.
Illustration d'origine (page /features/auto-approving-actions) : le panneau où l'on choisit ce que Bob peut faire sans demander. Les deux lignes à considérer en dernier sont l'édition et l'exécution.
L'avertissement de la documentation, mot pour mot

La page d'auto-approbation s'ouvre sur une mise en garde explicite : cela peut entraîner une perte de données, une corruption de fichiers, ou pire, et l'accès à la ligne de commande est signalé comme particulièrement dangereux. Cinq règles suivent : commencer restrictif, régler par projet, désactiver quand c'est inutile, relire régulièrement les changements, et ne jamais auto-approuver en production.

Deux points où la documentation reste muette

La page recommande un réglage « par projet » mais n'indique nulle part où il se règle. Elle mentionne aussi une liste de « commandes auto-approuvées » de confiance, sans décrire comment la constituer. Enfin, les revues de code tournent en auto-approbation complète, sans que la documentation précise ce que cette approbation couvre exactement. Ces trois points ne sont pas documentés ; la formation les signale plutôt que de les combler.

Revenir en arrière

Bob prend des instantanés des fichiers pendant une tâche : au démarrage, puis avant chaque modification [D ide/features/rollback]. La vidéo 10 parle de « points de reprise » créés à chaque écriture, et décrit le retour comme un retour à la dernière configuration correcte connue [V10]. Les deux vocabulaires désignent visiblement le même mécanisme, mais aucune source ne l'affirme.

La restauration se fait à deux granularités : en survolant un de vos messages dans la conversation, pour revenir à l'état d'avant ce message ; ou fichier par fichier depuis la vue des fichiers modifiés. Dans ce second cas, Bob est informé que vous avez annulé un fichier.

Les limites qu'il faut connaître avant d'en avoir besoin

Le retour en arrière est limité à la tâche : il ne couvre que les changements faits pendant une tâche Bob. Une modification que vous avez faite à la main, en dehors, n'est pas restaurable. La restauration écrase les modifications non enregistrées. Certains fichiers ne sont jamais capturés, notamment .env, les dossiers de dépendances et de construction, les médias et les journaux. Et un point subtil : .bobignore n'exclut pas du retour en arrière, seulement du contexte. La documentation précise que cette séparation est intentionnelle.

La page des bonnes pratiques en tire un conseil stratégique qui rejoint le chapitre précédent : si Bob produit un travail médiocre, revenez en arrière plutôt que de corriger par de nouvelles instructions [D ide/getting-started/best-practices]. Corriger laisse le mauvais contenu dans la conversation. Elle rappelle aussi que Git reste le vrai filet de sécurité.

Travail pratique 6 Régler les permissions et éprouver le retour en arrière
  1. Ouvrez le panneau des permissions et vérifiez l'état de chaque groupe. Partez de tout désactivé.
  2. Activez uniquement Read et Todo, puis relancez une analyse. Mesurez le confort gagné pour un risque quasi nul.
  3. Laissez Edit et Execute sous approbation manuelle. À la prochaine commande, modifiez-la avant de l'approuver pour voir que c'est possible.
  4. Faites modifier trois fichiers, puis revenez en arrière depuis un de vos messages. Vérifiez les trois fichiers.
  5. Éprouvez une limite : modifiez un fichier à la main, hors de toute tâche Bob, puis tentez un retour en arrière. Constatez que votre modification n'est pas restaurée.
  • Je sais quels groupes sont classés à risque élevé.
  • J'ai modifié une commande avant de l'approuver.
  • J'ai restauré des fichiers depuis un message précédent.
  • Je sais que les modifications faites hors tâche ne sont pas restaurables.
  • Je commite régulièrement : Git reste mon vrai filet.
Quiz · chapitre 8
Vous avez modifié un fichier à la main, puis Bob en a modifié d'autres. Vous faites un retour en arrière. Que se passe-t-il pour votre modification manuelle ?
Chapitre 9 · Niveau 2

Sous-agents et travail en parallèle

C'est la réponse de Bob au problème du chapitre 5 : explorer largement sans saturer la fenêtre de contexte principale.

Objectif

À la fin de ce chapitre, vous savez ce qu'un sous-agent isole, ce qu'il renvoie, en quoi il diffère d'une sous-tâche, et quand le travail en parallèle est pertinent.

Un contexte isolé, un résumé en retour

Un sous-agent est un agent indépendant, lancé par Bob pour une tâche autonome, avec sa propre fenêtre de contexte, et qui ne renvoie qu'un résumé [D ide/features/subagents]. L'isolation est stricte : il ne partage ni état, ni fichiers, ni résultats d'outils avec Bob, sauf si Bob les lui transmet explicitement dans la description de la tâche.

C'est tout l'intérêt : la lecture de vingt fichiers consomme la fenêtre du sous-agent, pas la vôtre. La conversation principale ne reçoit que la conclusion et reste utilisable plus longtemps [V02].

Un point de contrôle important : vous approuvez chaque lancement avant qu'il démarre, et Bob attend votre confirmation.

Illustration

L'agent principal et ses sous-agents

Schéma dessiné pour la formation d'après la page Subagents : ce qui entre dans un sous-agent, ce qui en ressort, et ce qui reste dans la conversation principale.

Deux types, deux usages

Le type explore est en lecture seule et utilise un modèle plus léger : recherche, résumé, compréhension d'une structure. Le type general a l'accès complet, y compris l'écriture et les commandes. La documentation ne nomme pas les modèles correspondants. Par défaut l'historique de la conversation n'est pas transmis ; une option permet de le faire.

Les modes encadrent ce qui est permis : Agent autorise tous les types, Plan et Ask se limitent à explore. Si un mode interdit les sous-agents, Bob fait simplement le travail lui-même, sans échouer.

Sous-agent ou sous-tâche ?

La confusion est fréquente. Un sous-agent travaille en silence, en arrière-plan, sans interaction possible, et rend un résumé. Une sous-tâche est visible, interactive, et ouvre un fil qu'on peut suivre. Le premier sert à collecter sans polluer, la seconde à mener un travail complexe en gardant la main.

V03 Une revue en arrière-plan, une autre tâche en parallèle 3 min 38
  1. [01:30] Le présentateur lance la revue de code. Bob démarre un sous-agent et annonce deux à quatre minutes.
  2. [01:45] Sans attendre, il ouvre une nouvelle tâche pour rédiger des notes de version. Il précise que plusieurs tâches peuvent tourner ensemble, et qu'il revient à l'utilisateur de juger si elles risquent d'interférer.
  3. [01:55] Les notes de version sont prêtes avant la fin de la revue.
  4. [02:00] La revue se termine et rend une liste de constats exploitables.

Notez la mesure : une revue en sous-agent, plus une tâche indépendante. Ce n'est pas une armée d'agents, et la documentation ne donne aucun nombre maximum de sous-agents. [V03]

Quand plusieurs sous-agents tournent, un panneau repliable les regroupe et affiche le nombre de terminés sur le total, le nombre d'outils utilisés, le cumul des tokens, du coût et du temps écoulé, ainsi que les appels d'outils en échec. Chaque entrée se déplie jusqu'aux appels individuels.

Quand y recourir

La documentation réserve les sous-agents aux lectures larges : explorer un dépôt entier, chercher une occurrence partout, résumer une arborescence. Elle les déconseille pour une lecture simple, une tâche à un seul outil, ou quand l'information est déjà dans le contexte. La règle tient en une phrase : un sous-agent se justifie quand le chemin pour trouver la réponse coûte plus cher que la réponse elle-même.

Travail pratique 7 Comparer avec et sans sous-agent
  1. Dans une tâche neuve, notez la consommation de départ dans l'indicateur de contexte.
  2. Demandez une analyse large du projet sans sous-agent, par exemple en mentionnant plusieurs dossiers. Relevez la consommation.
  3. Ouvrez une nouvelle tâche et demandez la même analyse en laissant Bob déléguer à un sous-agent. Approuvez le lancement.
  4. Comparez les deux consommations et la qualité des deux réponses.
  5. Pendant une revue longue, lancez une seconde tâche sans rapport et vérifiez qu'elles avancent toutes les deux.
  • J'ai approuvé le lancement d'un sous-agent en connaissance de cause.
  • J'ai constaté la différence de consommation entre lecture directe et sous-agent.
  • Je sais qu'un sous-agent ne rend qu'un résumé.
  • Je distingue un sous-agent d'une sous-tâche.
  • J'ai fait tourner deux tâches en parallèle.
Quiz · chapitre 9
Quel est le bénéfice principal d'une exploration confiée à un sous-agent ?
Chapitre 10 · Niveau 2

Sécurité proactive dans l'éditeur

Plutôt que d'attendre un audit, Bob signale certains problèmes à l'ouverture du fichier. C'est l'idée de détecter au plus tôt, avant que le coût de correction n'augmente.

Objectif

À la fin de ce chapitre, vous savez réagir à une annotation de Bob, demander plusieurs solutions avant de choisir, et configurer un espace de travail sûr.

V08 D'une annotation à la correction 3 min 28
  1. [00:20] En faisant défiler un fichier Python, le présentateur découvre une annotation ajoutée par Bob.
  2. [00:40] Le mécanisme est expliqué : à l'ouverture d'un fichier, Bob exécute des détecteurs. Le principe revendiqué est celui d'un éditeur proactif, qui attrape tôt.
  3. [01:20] Au survol, Bob signale une requête SQL construite par concaténation avec une entrée non fiable, et explique le risque.
  4. [01:45] Un bouton ouvre une nouvelle tâche pré-remplie avec le contexte du constat.
  5. [02:01] Le présentateur relève que le prompt pré-rempli demande plusieurs solutions, pas une seule, et en fait une bonne pratique générale.
  6. [02:20] Bob propose trois solutions avec leurs avantages et inconvénients, de la plus simple à la plus structurante.
  7. [02:50] Le choix de la première déclenche la correction du fichier.

Le geste à copier n'est pas la correction, c'est la demande : trois options argumentées avant de trancher. [V08]

Ce qui est montré et ce qui est documenté

La détection proactive de sécurité est montrée dans la vidéo 8, mais la page Security ne la décrit pas : cette page est une liste de recommandations de configuration. Le seul type de faille nommé dans les sources est l'injection SQL ; la liste complète des détecteurs n'est pas publiée. Le mécanisme documenté le plus proche s'appelle « Bob tips », et il porte sur la qualité du code, pas sur la sécurité : il mesure en continu la complexité et la maintenabilité des fonctions, souligne les cas problématiques et propose de corriger [D ide/features/bob-tips]. Les seuils documentés sont une complexité de 10 ou plus, et un indice de maintenabilité de 70 ou moins.

Configurer un espace de travail sûr

La page de recommandations de sécurité tient en cinq points [D ide/security/bob-security-guidance] : configurer .bobignore, limiter l'auto-approbation, garder les secrets hors des prompts et des fichiers accessibles, n'utiliser que des serveurs externes authentifiés et contrôlés, et relire les sorties de Bob avant de les appliquer.

L'exemple de .bobignore donné par la documentation vise directement les secrets.

.env
secrets/
*.key
config/credentials.json

Deux limites sont énoncées sans détour : .bobignore ne vaut que pour l'espace de travail courant, et ce n'est pas un bac à sable système. Combiné à ce que vous avez vu au chapitre 7, où une mention explicite passe outre, cela donne la règle prudente : un secret qui compte ne doit pas se trouver dans le projet.

Travail pratique 8 Trois solutions avant de choisir
  1. Créez un .bobignore à la racine du projet fil rouge, avec au minimum .env et un dossier de secrets.
  2. Ouvrez plusieurs fichiers du projet et cherchez des annotations ou des soulignements laissés par Bob.
  3. Sur un constat, utilisez l'action qui ouvre une conversation pré-remplie, et demandez explicitement trois approches avec leurs compromis avant toute correction.
  4. Choisissez-en une, faites-la appliquer, puis relisez le diff avant d'approuver.
  5. Activez ou désactivez les conseils de qualité dans les réglages pour voir l'effet sur le bruit à l'écran.
  • Mon projet a un .bobignore qui couvre les secrets.
  • J'ai réagi à une annotation laissée par Bob dans un fichier.
  • J'ai obtenu trois solutions argumentées avant de corriger.
  • J'ai relu le diff avant d'approuver la correction.
  • Je sais que .bobignore n'est pas une protection système.
Quiz · chapitre 10
Bob signale une faille. Quelle demande donne le meilleur résultat ?
Chapitre 11 · Niveau 2

Relire, committer, ouvrir la pull request

Dernière étape du cycle. L'idée directrice est de déplacer la revue vers l'amont, pour que le relecteur humain reçoive un travail déjà dégrossi.

Objectif

À la fin de ce chapitre, vous lancez une revue avant la pull request, vous traitez les constats, et vous menez la séquence commit, push, pull request en gardant le contrôle de chaque commande Git.

Relire avant de faire relire

La vidéo 11 pose le problème : la relecture par un collègue reste précieuse pour le partage de connaissances, mais elle devient un goulet d'étranglement. D'où l'idée d'un premier niveau de revue dans l'éditeur [V11]. La commande /review déclenche l'analyse ; Bob examine le diff et les fichiers complets, puis rend des constats classés.

Les critères examinés sont énoncés dans la vidéo : cas limites, sécurité, accessibilité, couverture de tests et conventions du projet. Chaque constat porte une explication, un lien vers l'emplacement exact, et une action pour approfondir dans la conversation. Une fois corrigé, un constat passe à l'état résolu.

Un prérequis qui a disparu

La vidéo 11, enregistrée en octobre 2025, indique qu'il faut d'abord passer en mode Advanced pour que Bob puisse examiner les diffs. Ce mode n'existe dans aucune page de la documentation lue en septembre 2026. Si vous regardez cette vidéo, ignorez cette étape : lancez simplement /review.

Le message de commit

Deux chemins mènent au même résultat. Par l'interface, une icône en forme d'étincelle à côté de la zone de message génère une proposition, et un second clic en donne une autre [D ide/features/commit-messages]. Bob s'appuie sur trois sources : les changements, le nom de la branche, et l'historique récent pour respecter le style du projet. D'où un conseil concret : mettez le numéro de l'issue dans le nom de branche, Bob le reprendra.

Par la conversation, on demande simplement le commit. La vidéo 3 relève un comportement appréciable : Bob a commité le code sans inclure les documents de planification [V03].

La pull request

Il faut des changements commités sur une branche et le droit de pousser. Trois points d'entrée existent : l'icône dans le panneau de contrôle de version, la palette de commandes, ou la commande /create-pr [D ide/features/pull-requests]. Bob propose les trois branches de base les plus probables, puis un titre et une description que vous pouvez faire réécrire autant de fois que nécessaire.

Détail qui fait gagner du temps en équipe : Bob cherche automatiquement un modèle de pull request dans six emplacements conventionnels, dont .github/pull_request_template.md. S'il en trouve plusieurs, il demande lequel utiliser.

Non documenté

La page sur les pull requests ne précise pas quelles plateformes sont prises en charge. Les tutoriels ne montrent que GitHub, avec une autorisation par le navigateur au premier usage. La page sur les revues de code indique par ailleurs que la validation par rapport à une issue exige GitHub.

Travail pratique 9 De la revue à la pull request

Avant de commencer : vous aurez besoin d'un fork du projet sur votre compte et du droit d'y pousser.

  1. Lancez /review sur vos changements. Choisissez la branche de comparaison.
  2. Traitez au moins deux constats : un que vous corrigez, un que vous écartez en sachant pourquoi.
  3. Demandez à Bob de créer une branche, puis d'indexer vos changements. Avant chaque approbation, prédisez la commande Git qu'il va proposer, puis vérifiez.
  4. Faites générer le message de commit par la conversation, puis refaites-le par l'icône dédiée, et comparez les deux.
  5. Poussez, puis demandez la pull request avec un titre et une description tirés des changements.
  6. Relisez la description produite et corrigez-la avant de valider. Vérifiez que la pull request vise bien votre fork.
  • J'ai lancé une revue avant d'ouvrir la pull request.
  • J'ai corrigé un constat et écarté un autre en connaissance de cause.
  • J'ai prédit correctement les commandes Git avant de les approuver.
  • J'ai comparé les deux façons de générer un message de commit.
  • Ma pull request a un titre et une description que j'ai relus.
Quiz · chapitre 11
Sur quoi Bob s'appuie-t-il pour rédiger un message de commit ?
Interactif

Vidéo ou documentation ?

Pour un geste donné, ce que montrent les vidéos et ce que précise la documentation, côte à côte, avec le recoupement. C'est ici qu'apparaissent les écarts de vocabulaire entre 2025 et 2026.

Interactif

Test de fin de niveau 2

Six questions sur le cycle complet, le contexte, les approbations et la revue.

Niveau 3

Approfondissement

Pour un développeur ou un lead qui veut adapter Bob à son équipe. À la fin : vous savez écrire des règles, fabriquer des modes et des skills, brancher un serveur MCP, automatiser Bob depuis la ligne de commande et situer les contrôles d'entreprise.
Chapitre 12 · Niveau 3

Rules : le contexte qui ne se tape pas

Aux niveaux 1 et 2, vous donniez le contexte à la main, conversation après conversation. Les trois mécanismes de personnalisation de Bob — Rules, modes, Skills — font la même chose sans que vous tapiez quoi que ce soit ; ils diffèrent par le quand et le comment. On commence par le plus simple et le plus coûteux : les « Rules ».

Objectif

À la fin de ce chapitre, vous savez où placer un fichier de règles selon la portée voulue, dans quel ordre Bob les charge, comment les partager avec votre équipe, et combien elles vous coûtent en fenêtre de contexte.

V04 Trois mécanismes, une seule différence 7 min 28
  1. [00:00] La thèse d'ouverture : chaque équipe construit différemment, donc il faut personnaliser Bob tôt. Trois mécanismes annoncés : rules, modes, skills.
  2. [00:30] Le point commun est énoncé clairement : tous les trois ajoutent du texte à la conversation sans que vous le tapiez. Toute la différence est dans le moment et la manière.
  3. [00:45] Les règles : un fichier rules.md, ou bien AGENTS.md ; ajoutées à chaque conversation, toujours. Conséquence immédiate tirée de là : il faut les garder courtes.
  4. [01:45] Démonstration sur .bob/rules/rules.md. Le contenu n'est presque pas « à propos de Bob » : c'est surtout à propos du dépôt — pièges rencontrés, problèmes connus, prérequis, commandes d'installation, de lancement et de test.
  5. [02:02] Point de méthode : c'est un document vivant, mis à jour par Bob plutôt qu'à la main. Le fichier fait 150 lignes, ce que le présentateur juge déjà long.
  6. [02:15] Il survole l'indicateur de contexte : 2 700 tokens sur 270 000 consommés par les règles. Le geste à retenir est celui-là — mesurer le coût de ses règles au lieu de le supposer.

La transcription automatique dit « roots.md » ; il s'agit de rules.md. Les noms de fichiers exacts sont à prendre dans la documentation, pas dans la vidéo. [V04]

Où vivent les règles

La documentation donne des chemins précis, et c'est la portée qui décide du chemin [D ide/configuration/rules].

PortéeCheminCe que ça couvre
Global, tous vos projets~/.bob/rules/Vos préférences personnelles. Sous Windows : %USERPROFILE%\.bob\rules\.
Projet, tous les modes.bob/rules/Les conventions du dépôt. C'est le cas le plus courant.
Projet, un mode précis.bob/rules-agent/, .bob/rules-plan/, .bob/rules-ask/Des consignes qui n'ont de sens que dans ce mode.
Projet, un mode personnalisé.bob/rules-{slug}/Se combine avec le champ customInstructions du mode.
Fichier unique (alternative).bobrules-{slug}Si le dossier rules-{slug}/ existe aussi, le dossier gagne.
Standard d'équipeAGENTS.md à la racineChargé automatiquement ; c'est le fichier que crée /init.

Il n'y a ni schéma ni en-tête à respecter : du Markdown ou du texte (.md, .txt). Les noms de fichiers cités par la documentation donnent le ton : coding-style.md, typescript.md, security.md, ou numérotés 01-style-guide.md et 02-formatting.txt quand l'ordre compte.

mkdir -p .bob/rules && echo "# Project standards" > .bob/rules/coding-style.md

Comment Bob les charge

Le comportement documenté est mécanique, et vaut la peine d'être connu précisément : lecture récursive des dossiers, fichiers traités dans l'ordre alphabétique — d'où la numérotation. Les fichiers vides sont ignorés, les liens symboliques suivis jusqu'à une profondeur de 5, et certains noms sont exclus d'office : .DS_Store, *.bak, *.cache, *.log, *.tmp, Thumbs.db.

La phrase la plus importante de la page est celle-ci : les règles sont injectées dans chaque conversation et dans tous les modes, et « un mode ne peut pas contourner une règle ». C'est ce qui distingue une règle d'une consigne de mode : la règle est un plancher, pas une option.

L'ordre de priorité documenté : le global (~/.bob/rules/) est chargé, puis le workspace (.bob/rules/) ; le workspace peut écraser le global. À l'intérieur d'un niveau, les règles de mode sont chargées avant les règles générales, et AGENTS.md se place entre les deux — après les règles de mode, avant les règles générales du workspace.

Une ambiguïté que la documentation ne lève pas

La page dit « mode-specific rules load before general rules », mais ne dit pas si « avant » signifie « plus prioritaire » ou « écrasé par ce qui suit ». Dans un cas de conflit réel entre une règle de mode et une règle générale, le résultat n'est donc pas prévisible à la lecture : il faut tester. C'est exactement le genre de point que le TP ci-dessous vous fait vérifier vous-même.

Un exemple conforme, et ce qu'il révèle

Le tutoriel « Standardize Bob's behavior » donne le contenu intégral d'un .bob/rules/basic_rules.md de trois règles [D ide/tutorials/standardize-bobs-behavior].

Always include concise JSDoc strings for every public function.
Be very concise in your wording.
Write a summary of every interaction into the folder `internal-monologue/`.
Name the file starting with a timestamp, followed by a concise description of the interaction.
Example: 2026-01-15_update-readme.md

Les trois règles ne jouent pas du tout dans le même registre, et c'est instructif : la première est un standard de documentation (une contrainte sur le code produit), la deuxième un style de communication (une contrainte sur les réponses), la troisième un journal persistant — un « monologue interne » qui donne une piste d'audit, une continuité entre sessions et une transparence vis-à-vis de l'équipe. Une règle peut donc porter sur le code, sur le dialogue, ou sur la trace laissée.

Doc · Tutoriel Le fichier .bob/rules/basic_rules.md créé dans l'arborescence du projet.
Illustration d'origine (tutoriel « Standardize Bob's behavior ») : l'emplacement du fichier dans le projet.
Doc · Tutoriel Le fichier basic_rules.md ouvert dans l'éditeur, avec les trois règles personnalisées.
Illustration d'origine : les trois règles dans le fichier. Aucun en-tête, aucune syntaxe particulière.

Partager, et payer le prix

Pour standardiser une équipe, la documentation propose trois approches : commiter .bob/rules/ (git add .bob/rules/) pour que la règle suive le dépôt ; cloner un dépôt de règles d'organisation dans ~/.bob/rules/ ; ou une approche hybride — l'organisation en global, le projet en workspace, sachant que le workspace l'emporte.

Reste le coût. Une règle est rechargée à chaque conversation, donc elle occupe une part fixe de vos 270 000 tokens, quoi que vous fassiez. La mesure de la vidéo 4 donne l'ordre de grandeur : 150 lignes ≈ 2 700 tokens, soit environ 1 % de la fenêtre. Ce n'est pas énorme, mais c'est permanent — et c'est précisément pour cette raison que la fonctionnalité suivante existe.

Deux réglages à connaître : AGENTS.md peut être désactivé avec "bob-code.useAgentRules": false côté IDE, "bob-shell.useAgentRules": false côté Shell.

Travail pratique 9 Écrire une règle, et vérifier qu'elle s'applique

Ce TP suit le tutoriel officiel. Pour la suite du niveau 3, le projet fil rouge devient Galaxium Travels, le dépôt de démonstration utilisé par tous les tutoriels IBM : git clone -b bob-learning-path-branch https://github.com/IBM/galaxium-travels. Ouvrez-le, passez en Agent mode, lancez /init et approuvez : vous devez obtenir un AGENTS.md à la racine et un dossier .bob/ contenant un AGENTS.md par mode.

  1. Créez .bob/rules/basic_rules.md et collez-y les trois règles ci-dessus, telles quelles.
  2. Ouvrez une nouvelle conversation en Agent mode et tapez exactement : Update the readme. Bob peut proposer plusieurs variantes (améliorer le dépannage, refonte complète, corriger des inexactitudes) : choisissez-en une.
  3. Résultat attendu : Bob met à jour README.md, et crée un dossier internal-monologue/ contenant un fichier <timestamp>_<description>.md. Vous n'avez rien demandé de tout ça : c'est la règle 3 qui a agi.
  4. Survolez l'indicateur de contexte et notez le nombre de tokens consommés par vos règles. Comparez à la mesure de la vidéo.
  5. Créez maintenant une règle contradictoire : la même consigne en global (~/.bob/rules/) et en workspace (.bob/rules/), avec deux valeurs différentes. Observez laquelle gagne, et vérifiez que c'est bien le workspace.
  6. Désactivez AGENTS.md avec "bob-code.useAgentRules": false, relancez la même demande, et mesurez la différence de contexte.
  7. Commitez .bob/rules/ : git add .bob/rules/. La règle voyage maintenant avec le dépôt.
  • Galaxium Travels est cloné, ouvert, et /init a été lancé.
  • J'ai une règle projet dans .bob/rules/ qui s'applique sans que je la mentionne.
  • J'ai constaté un effet que je n'avais pas demandé dans le prompt (le monologue interne).
  • Je connais le coût en tokens de mes règles, mesuré et pas supposé.
  • J'ai vérifié que le workspace l'emporte sur le global.
  • Mes règles sont commitées et suivent le dépôt.
Quiz · chapitre 12
Vous passez en mode Ask. Que devient une règle définie dans .bob/rules/ ?
Chapitre 13 · Niveau 3

Modes personnalisés : des permissions déterministes

Une règle demande. Un mode empêche. C'est toute la différence, et c'est ce qui rend les modes personnalisés intéressants pour travailler à plusieurs conversations en parallèle : vous pouvez garantir qu'une conversation d'analyse ne touchera pas un fichier.

Objectif

À la fin de ce chapitre, vous savez écrire un mode en YAML, restreindre l'édition à certains fichiers par expression régulière, surcharger un mode intégré, et expliquer pourquoi une permission de mode vaut mieux qu'une consigne en langage naturel.

V04 Un relecteur qui ne peut pas écrire extrait 02:40 – 04:35
  1. [02:40] Rappel : trois modes intégrés — agent, plan, ask. Les modes personnalisés vivent dans un fichier de configuration du projet.
  2. [03:00] Premier exemple : un mode « code reviewer », avec sa persona et des permissions explicites — lire, exécuter, activer des skills. Aucune édition.
  3. [03:30] L'usage qui justifie tout : avec plusieurs conversations en parallèle, on veut la garantie qu'une conversation d'analyse ne modifie rien. L'argument avancé : les permissions de mode sont « 100 % déterministes », contrairement à une consigne écrite en langage naturel, qui peut être ignorée.
  4. [03:50] Exemple plus fin : un mode « deployment engineer » qui n'a le droit d'éditer que dans un dossier de scripts — donc pas le code applicatif.
  5. [04:00] Activation : un clic sur le sélecteur de mode.
  6. [04:10] Le test qui compte. Le relecteur relève des points dans le README ; on lui demande de les appliquer ; il refuse. Et dans la liste des permissions activables, l'édition n'apparaît même pas : elle ne peut pas être accordée à la volée.

C'est la démonstration la plus convaincante de la série : la contrainte n'est pas une politesse du modèle, c'est une absence d'outil. [V04]

Le format : YAML, et dix groupes d'outils

Le format documenté est le YAML. Le JSON historique (custom_modes.json) est encore accepté mais migré automatiquement : le fichier global est converti au démarrage, le fichier projet lors d'une édition via l'interface [D ide/configuration/custom-modes].

ChampRôle
slugIdentifiant technique (lettres, chiffres, tirets), unique. Il sert aussi de commande /slug. Réutiliser le slug d'un mode intégré (agent, plan, ask) le surcharge.
nameNom affiché, émoji accepté.
descriptionOptionnel. Texte affiché dans le sélecteur de mode.
roleDefinitionLa persona. Remplace une partie du system prompt.
whenToUseOptionnel. Indique quand employer ce mode.
customInstructionsOptionnel. Instructions additionnelles, combinées avec .bob/rules-{slug}/.
groupsLes groupes d'outils autorisés. Sans groups, le mode n'a aucun outil groupé — donc ne sert à rien.
allowedSubagentsOptionnel. Restreint les sous-agents aux presets listés.

Les dix groupes d'outils côté IDE : read, edit (restreignable), execute, mcp, skill, workflow, todo, subtask, subagent, mode. Vous reconnaissez les neuf groupes de permissions du chapitre 8, plus workflow.

La restriction qui n'existe qu'en YAML

Le groupe edit accepte un fileRegex, et c'est le mécanisme du « deployment engineer » de la vidéo. Voici l'exemple complet de la documentation.

customModes:
  - slug: docs-writer
    name: 📝 Documentation Writer
    description: Writes and revises Markdown documentation.
    roleDefinition: You are a technical writer specializing in clear documentation.
    whenToUse: Use this mode for writing and editing documentation.
    customInstructions: Focus on clarity and completeness in documentation.
    groups:
      - read
      - - edit
        - fileRegex: ".*\\.(md|mdx)$"
          description: Markdown files only
      - skill

Notez la structure : le groupe edit restreint devient une liste à deux éléments — le nom du groupe, puis un objet de contrainte. C'est la partie de la syntaxe qui surprend le plus.

Les motifs cités par la documentation couvrent les cas courants : .*\.md$, ^src/.*, .*\.(css|scss)$, et le plus utile, ^(?!.*(test|spec)).*\.(js|ts)$ — tout le JavaScript et le TypeScript sauf les tests. La documentation suggère elle-même de demander à Bob de générer ces expressions.

Deux pièges documentés

D'abord : les restrictions fileRegex sont impossibles à créer depuis l'interface. Le formulaire ne les propose pas ; il faut éditer le YAML à la main. Ensuite : un fileRegex invalide peut empêcher le chargement du fichier entier — pas seulement du mode fautif. Une expression mal échappée fait donc disparaître tous vos modes personnalisés d'un coup.

Chemins et priorité

PortéeChemin (Bob IDE)Accès par l'interface
Global~/.bob/settings/custom_modes.yamlSettings → Modes → Edit Global Modes
Projet.bob/custom_modes.yamlSettings → Modes → Edit Project Modes

La priorité côté IDE est simple : projet > global > défaut. Côté Bob Shell, la chaîne est plus longue : CLI > projet > global > modes système > défauts.

Divergence entre deux pages de la documentation

La page IDE place les modes globaux dans ~/.bob/settings/custom_modes.yaml ; la page Bob Shell, elle, donne ~/.bob/custom_modes.yamlsans le sous-dossier settings/. Les deux pages sont à jour à la même date. Si un mode global n'est pas pris en compte, vérifiez les deux emplacements : la documentation ne tranche pas. [D shell/configuration/custom-modes-bobshell]

Doc · Tutoriel Le formulaire de création d'un mode personnalisé, rempli pour un mode product-manager.
Illustration d'origine (tutoriel « Add a custom mode ») : le formulaire rempli. Remarquez l'absence de tout champ de restriction par expression régulière.
Doc · Tutoriel Le fichier custom_modes.yaml créé par Bob dans le dossier .bob du projet.
Illustration d'origine : le custom_modes.yaml produit par le formulaire. C'est ce fichier qu'on édite ensuite à la main pour aller plus loin.

La documentation décrit trois parcours différents pour créer un mode par l'interface, selon la page consultée : Settings → onglet Modes → bouton de création ; sélecteur de modes → engrenage → + ; ou trois points de la barre latérale → Modes → Edit. Les trois mènent au même formulaire.

Interactif

Construire un mode, et voir ce qu'il interdit

Choisissez une persona et des groupes d'outils : le module produit le YAML conforme et affiche ce que le mode pourra et ne pourra pas faire. Les groupes et les champs sont ceux de la page custom-modes.

Travail pratique 10 Un mode qui refuse d'écrire

Suit le tutoriel « Add a custom mode ». Démarrez une nouvelle conversation avant de commencer, comme le conseille la documentation. Principe à garder en tête : un mode personnalisé ne remplace ni ne contourne les règles — le monologue interne du TP 9 continue de s'appliquer.

  1. Ouvrez le sélecteur de modes, cliquez l'engrenage, puis +. Créez le mode du tutoriel : slug product-management, name product-manager, Scope Project, Available Tools Read files, Edit files, Use MCP. Remplissez la définition de rôle et le « when to use » avec vos propres mots.
  2. Sauvegardez : Bob crée .bob/custom_modes.yaml. Ouvrez ce fichier et comparez-le à ce que vous avez saisi.
  3. Basculez sur le mode et testez avec le prompt du tutoriel : What feature should we build next? Vous devez obtenir des candidats, éventuellement précédés de questions de clarification.
  4. Maintenant le geste que l'interface ne permet pas : éditez le YAML à la main pour ajouter un fileRegex sur le groupe edit, par exemple .*\.(md|mdx)$. Relancez une demande d'édition sur un fichier de code et constatez le refus.
  5. Reproduisez le test de la vidéo : créez un mode sans le groupe edit du tout, demandez-lui d'appliquer ses propres recommandations, et vérifiez que l'édition n'apparaît pas dans la liste des permissions activables.
  6. Créez .bob/rules-product-management/01-style-guide.md et constatez qu'il se combine avec les customInstructions du mode au lieu de les remplacer.
  7. Vérifiez la priorité : surchargez un mode intégré en réutilisant son slug (ask par exemple) au niveau projet, et observez que le vôtre gagne.
  8. Commitez custom_modes.yaml pour partager le mode avec l'équipe.
  • J'ai un mode personnalisé de portée projet, créé par l'interface.
  • J'ai lu le YAML produit et je sais le modifier à la main.
  • J'ai ajouté une restriction fileRegex et vérifié qu'elle bloque.
  • J'ai constaté qu'une permission absente ne peut pas être accordée à la volée.
  • J'ai vérifié que les règles de mode se combinent avec customInstructions.
  • Je sais que la documentation donne deux chemins différents pour les modes globaux.
Quiz · chapitre 13
Vous voulez un mode qui n'édite que les fichiers Markdown. Comment procédez-vous ?
Chapitre 14 · Niveau 3

Skills : un savoir-faire chargé à la demande

Le troisième mécanisme résout le problème de coût des deux premiers. Une règle est toujours chargée, un mode remplace une partie du system prompt — un « skill » ne coûte qu'une description de deux phrases tant que Bob ne s'en sert pas. C'est ce qui permet d'en avoir beaucoup.

Objectif

À la fin de ce chapitre, vous savez écrire un SKILL.md conforme, rédiger la description qui fait que Bob active le skill tout seul, et choisir entre une règle, un mode et un skill pour un besoin donné.

V04 Fabriquer un skill avec un skill extrait 01:20 et 04:35 – 07:15
  1. [01:20] La définition posée d'emblée : un skill est un prompt potentiellement long qui décrit un comportement. Seule une description d'une ou deux phrases est chargée en permanence ; Bob charge le corps à la demande.
  2. [04:35] Démonstration : un dossier de skills, un seul skill dedans, un fichier Markdown. Le corps est le skill ; la description courte est toujours en contexte.
  3. [05:00] Mise en garde intéressante : l'écosystème de skills disponibles est « énorme et un peu écrasant ». Le conseil est de construire les siens.
  4. [05:15] Le geste marquant : il active explicitement le skill qui sert à créer des skills, et demande une variante du skill existant qui poserait trois questions au maximum, publierait le résultat dans une issue GitHub si elle existe, sinon rangerait les plans dans un dossier d'artefacts sous .bob, et produirait toujours une version HTML lisible.
  5. [05:50] Il assume le caractère arbitraire de ces choix : c'est exactement le point. Un skill encode votre façon de travailler, de manière répétable et partageable.
  6. [06:01] Rappel de portée : skills, règles et modes existent au niveau projet ou global. Il choisit le projet.
  7. [06:30] Test décisif : en mode agent, il formule une demande sans nommer le skill, et Bob l'active seul. Il concède avoir employé un mot-clé de la description, mais affirme qu'une description vague suffirait.
  8. [07:00] Résultat conforme à la commande : une page HTML, et une proposition de poster le plan en commentaire de l'issue 44.

Les noms de skills entendus dans la transcription automatique sont trop incertains pour être cités ; seul le mécanisme est fiable. [V04]

Le format, et le champ qui décide de tout

Un skill est un dossier contenant un SKILL.md : un front matter YAML, puis les instructions en Markdown [D ide/features/skills].

---
name: code-review
description: Review code for bugs, security issues, and best practices
---

When reviewing code, check for:
- Security vulnerabilities
- Performance issues
- Missing error handling at API boundaries
- Unused imports and dead code

Provide a summary with severity levels for each finding.

Deux champs seulement sont requis, et le second porte tout le poids. name est le nom affiché et le nom d'invocation (/code-review). description est ce que Bob lit pour décider d'activer le skill sans qu'on le lui demande — et la documentation est catégorique : « skills without descriptions are ignored ». Un skill sans description n'est pas un skill dégradé, il n'existe pas.

D'où le conseil de rédaction de la documentation, qui oppose deux formulations : « Review code for bugs, security issues, and best practices » est une bonne description, parce qu'elle contient les mots que l'utilisateur emploiera. « Code review skill » est une mauvaise description, parce qu'elle ne décrit rien. Un troisième champ apparaît dans le tutoriel : user-invocable: true, qui autorise l'appel explicite par /<nom>.

PortéeChemin
Projet (suivi par git).bob/skills/<nom>/SKILL.md
Global (tous vos projets)~/.bob/skills/<nom>/SKILL.md

À nom égal, le skill de projet l'emporte sur le global. Le dossier peut contenir des fichiers d'appui — la documentation cite checklist.md, severity-guide.md, analyze.sh, report-generator.py — que Bob lit automatiquement une fois le skill activé. C'est le mécanisme qui permet à un skill court d'ouvrir sur un corpus long.

Règle, mode ou skill ?

Vous avez maintenant les trois. Le choix se fait sur deux questions : ce texte doit-il être là toujours, et doit-il empêcher quelque chose ?

Toujours chargé
Rule

Une contrainte qui vaut pour toute conversation, dans tous les modes. Coût permanent en contexte : à garder court. Ne peut pas être contournée par un mode.

Pour : conventions du dépôt, commandes de build, pièges connus.

Activé explicitement
Mode

Une persona et un jeu de permissions. Le seul des trois qui peut retirer une capacité de façon déterministe.

Pour : garantir qu'une conversation d'analyse n'écrit pas.

Chargé à la demande
Skill

Une procédure, éventuellement longue, dont seule la description coûte en permanence. Activable par Bob seul, sur la foi de cette description.

Pour : une tâche répétitive avec une méthode précise.

Activation et approbation

Trois chemins d'invocation : explicite avec /<skill-name>, par le sélecteur $ en Bob Shell, ou implicite quand Bob reconnaît la correspondance avec la description. Pour créer : la commande /create-skill dans le chat, ou Bob Settings → Skills+. Les skills sont chargés une seule fois par conversation, pour éviter de dupliquer le prompt.

Par défaut, Bob demande votre permission avant d'activer un skill. On peut la retirer par Bob Settings → Auto-Approve → Skills, ou côté Shell par "autoApprove": { "skills": true }.

Deux clés concurrentes, et la documentation ne tranche pas

L'auto-approbation des skills apparaît sous deux formes différentes dans la documentation : autoApprove.skills d'un côté, et approval.allowed_permissions: ["skill"] de l'autre. Aucune page ne dit laquelle prime, ni si elles sont redondantes. Si le comportement ne correspond pas à votre réglage, vérifiez les deux.

Non documenté : aucune limite de taille pour un SKILL.md, aucune indication de langue, et l'emplacement des skills fournis par Bob lui-même (comme create-plan, utilisé en mode Plan) n'est nulle part précisé.

Travail pratique 11 Un skill que Bob active sans qu'on le nomme

Suit le tutoriel « Create and use skills ». Passez en Agent mode : c'est requis pour activer un skill et éditer des fichiers.

  1. Ouvrez Bob Settings → Skills → +. Créez le skill du tutoriel : nom changelog-entry, portée projet, « Allow Bob to use this skill » activé. Pour la description, prenez celle de la documentation, qui est un modèle du genre : « Adds an entry to CHANGELOG.md using the Keep a Changelog format, creating the file if it does not exist, so change history stays consistent and release-ready. »
  2. Dans les instructions, décrivez la procédure : format Keep a Changelog, entrées sous ## [Unreleased] et l'un des sous-titres ### Added / ### Changed / ### Fixed / ### Removed, une puce à l'impératif sans point final, fondée sur le diff réel (git diff) et non sur la formulation de la demande, et ne toucher que CHANGELOG.md.
  3. Créez : Bob écrit .bob/skills/changelog-entry/SKILL.md. Ouvrez le fichier et retrouvez-y votre front matter.
  4. Produisez une modification à journaliser : Add a one-line note to the end of the README.md that says "Powered by IBM Bob."
  5. Invocation explicite : tapez /changelog-entry, puis Add a changelog entry for this change. Bob crée CHANGELOG.md et y ajoute l'entrée.
  6. Le test qui compte. Ouvrez une nouvelle conversation, faites une autre modification, puis demandez Update the changelog for this edit.sans jamais nommer le skill. Bob doit le reconnaître à la description et l'activer seul.
  7. Retirez la description du SKILL.md et refaites l'essai : le skill est désormais ignoré.
  8. Créez un skill de même nom en global et en projet, avec deux comportements distincts, et vérifiez que le projet gagne.
  9. Ajoutez un fichier d'appui dans le dossier du skill (une checklist.md) et vérifiez que Bob la lit une fois le skill actif.
  • J'ai un skill de projet enregistré dans .bob/skills/.
  • Je l'ai invoqué explicitement avec /.
  • Bob l'a activé tout seul à partir de la description.
  • J'ai vérifié qu'un skill sans description est purement ignoré.
  • J'ai constaté que le skill de projet l'emporte sur le global.
  • Je sais choisir entre une règle, un mode et un skill pour un besoin donné.
Quiz · chapitre 14
Qu'est-ce qui est chargé en permanence dans le contexte pour un skill ?
Chapitre 15 · Niveau 3

Commandes slash et hooks de cycle de vie

Deux mécanismes d'automatisation qui n'ont rien à voir. Une commande slash est un raccourci que vous déclenchez. Un hook est un script que Bob déclenche, à des moments précis de son cycle de vie — et qui peut l'arrêter net.

Objectif

À la fin de ce chapitre, vous savez fabriquer une commande slash à partir d'un simple fichier Markdown, et écrire un hook qui bloque une action de Bob — en sachant exactement ce que ça implique côté sécurité.

Une commande, c'est un nom de fichier

Le mécanisme est d'une simplicité désarmante : vous déposez un fichier Markdown dans .bob/commands/ (projet) ou ~/.bob/commands/ (global), et le nom du fichier devient la commande [D ide/features/slash-commands]. review.md donne /review, test-api.md donne /test-api, deploy-check.md donne /deploy-check.

Le corps du fichier est le prompt, avec des arguments positionnels $1, $2. Un front matter optionnel améliore l'ergonomie : description s'affiche dans le menu, argument-hint affiche une indication grise sur les arguments attendus.

---
description: Create a new API endpoint
---
Create a new API endpoint called $1 that handles $2 requests.
Include proper error handling and documentation.

À nom égal, le projet l'emporte sur le global. Une protection est explicite : les commandes de mode (/agent, /plan, /ask, /<slug>) ne peuvent pas être surchargées. En revanche — et c'est un manque de la documentation — rien ne dit si une commande personnalisée peut surcharger une commande intégrée comme /review. Le nom de fichier review.md figure pourtant dans les exemples officiels. Testez avant de compter dessus.

Les commandes intégrées documentées côté IDE sont peu nombreuses et vous en connaissez déjà l'essentiel : /init (crée .bob et les AGENTS.md), /review avec ses variantes (/review <branche>, /review #<n> --issue-coverage), /create-pr, /create-skill. Bob Shell en ajoute une longue série propre au terminal — /compact, /hooks, /permissions, /resume, /mcp, /manage-secrets, /skills, /status, /logs — que vous retrouverez dans l'aide-mémoire.

Les hooks : cinq événements côté IDE, sept côté Shell

Un hook est une commande shell que Bob exécute à un moment donné, avec un payload JSON sur l'entrée standard [D ide/configuration/lifecycle-hooks].

HookQuandPeut bloquerQue devient sa sortie
SessionStartUne fois, au début d'une sessionNonInjectée comme contexte
UserPromptSubmitÀ chaque prompt soumisOui (exit 2)Injectée comme contexte
PreToolUseAvant l'exécution d'un outil filtréOui (exit 2)Ignorée
PostToolUseAprès l'exécution d'un outil filtréNonIgnorée
StopÀ l'arrêt de l'agentNonIgnorée

Bob Shell ajoute PreCompact (bloquant) et PostCompact, apparus en version 2.0.3. Deux hooks ont donc un pouvoir particulier : SessionStart et UserPromptSubmit, dont la sortie standard devient du contexte. C'est le moyen documenté d'injecter automatiquement l'état du dépôt — branche courante, version de Node, nom du projet — au début de chaque session.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "^write_file$",
        "hooks": [
          { "type": "command", "command": "sh .bob/hooks/check.sh", "timeout": 5 }
        ]
      }
    ]
  }
}

Le matcher est une expression régulière sur le nom de l'outil, et ne s'applique qu'à PreToolUse et PostToolUse ; omis, il attrape tous les outils. Le timeout est en secondes, 10 par défaut, 0 pour illimité. Le type "command" est le seul accepté côté IDE ; Bob Shell accepte en plus "https", qui appelle une URL.

Les codes de sortie portent toute la sémantique : 0 pour un succès, 2 pour bloquer l'action, et n'importe quel autre code non nul pour un échec non bloquant, journalisé puis ignoré. Un hook qui plante ne vous arrête donc pas — seul un exit 2 délibéré le fait.

Les emplacements suivent la logique habituelle, avec une nuance : ~/.bob/settings/settings.json pour le global, .bob/settings.json pour le workspace, et les hooks globaux s'exécutent toujours, les hooks du workspace étant fusionnés par-dessus.

Un hook n'est pas dans un bac à sable

La documentation le dit sans détour : « hooks run with your full user permissions ». Il n'y a ni isolation, ni restriction de chemin, ni télémétrie dédiée. Et le point d'attention qui suit est celui qui compte vraiment : vos hooks globaux s'exécutent dans tout dossier qui n'est pas explicitement marqué DONT_TRUSTy compris un dépôt que vous venez de cloner pour la première fois. Inversement, un .bob/settings.json présent dans un dépôt tiers contient du code qui s'exécutera chez vous. La recommandation de la documentation est de relire les hooks d'un dépôt « comme vous reliriez un Makefile ou une configuration de CI ».

Côté gouvernance, l'onglet Hooks des réglages (IDE 2.1.0) liste les hooks globaux et workspace avec leur type d'événement, leur matcher, leur portée et leur état, et permet de les activer individuellement ; l'équivalent en Bob Shell est /hooks. Une politique d'entreprise EnforcedHooks permet à un administrateur d'imposer des hooks exécutés avant tout hook utilisateur et non modifiables.

Les limites explicites de la page : pas de hooks planifiés, pas de réécriture de l'entrée, pas de blocage depuis PostToolUse ni Stop.

Travail pratique 12 Une commande à vous, et un hook qui dit non

Aucun tutoriel officiel ne couvre les hooks : les gestes ci-dessous sont construits à partir des exemples de configuration de la page de référence. Travaillez sur Galaxium Travels, pas sur un dépôt qui compte.

  1. Créez .bob/commands/deploy-check.md avec un front matter description et un corps utilisant $1. Tapez / dans le chat et vérifiez que votre commande apparaît dans le menu avec sa description.
  2. Lancez-la avec un argument et vérifiez que $1 a bien été substitué.
  3. Créez un hook SessionStart qui écrit sur la sortie standard la branche git courante (git rev-parse --abbrev-ref HEAD). Ouvrez une nouvelle session et vérifiez que Bob connaît la branche sans que vous la lui ayez dite.
  4. Créez un hook PreToolUse avec matcher: "^write_file$" qui journalise le payload reçu dans un fichier. Faites écrire Bob, puis lisez le journal : vous y trouverez event, session_id, tool et input.
  5. Faites-le bloquer : modifiez le script pour qu'il sorte en exit 2 quand le chemin visé est hors de src/. Demandez une écriture ailleurs et constatez le refus.
  6. Vérifiez la différence de sémantique : faites sortir le script en exit 1 au lieu de 2. L'action doit passer malgré l'échec du hook.
  7. Ouvrez l'onglet Hooks des réglages, retrouvez vos deux hooks, et désactivez-en un depuis l'interface.
  8. Pour finir, faites l'inventaire : listez les hooks globaux actuellement définis sur votre machine et demandez-vous lesquels vous accepteriez de voir tourner dans un dépôt inconnu.
  • J'ai une commande slash personnalisée qui apparaît dans le menu.
  • Elle reçoit correctement ses arguments positionnels.
  • Un hook SessionStart injecte du contexte que je n'ai pas tapé.
  • J'ai lu un payload de hook et j'en connais les champs.
  • J'ai bloqué une action de Bob avec exit 2, et vérifié qu'exit 1 ne bloque pas.
  • J'ai fait l'inventaire de mes hooks globaux en sachant qu'ils tournent partout.
Quiz · chapitre 15
Votre hook PreToolUse se termine avec le code 1. Que fait Bob ?
Chapitre 16 · Niveau 3

L'arbre de configuration et .bobignore

Vous avez maintenant écrit des règles, un mode et un skill. Il reste à savoir où tout cela vit, dans quel ordre Bob le charge, et ce qu'il ne doit jamais lire.

Objectif

À la fin de ce chapitre, vous situez chaque fichier de configuration, vous savez qui gagne en cas de conflit entre le global et le projet, et vous protégez vos fichiers sensibles en connaissant les limites de cette protection.

Deux niveaux, et un troisième pour les administrateurs

Toute la configuration de Bob se répartit entre deux emplacements. Le global, dans ~/.bob/, s'applique à tous vos projets. Le projet, dans .bob/ à la racine du dépôt, ne vaut que pour lui et se versionne avec le code, ce qui en fait le support du partage en équipe.

S'y ajoute, sur Bob IDE uniquement, un niveau système réservé aux administrateurs, par préférences gérées sur macOS, par le registre sur Windows, et par /etc/bob/policy.json sur Linux. Quatre politiques existent, dont celle qui désactive des groupes d'auto-approbation et celle qui impose des hooks. Elles priment sur tout et verrouillent le réglage dans l'interface [D ide/security/group-policies].

Interactif

Explorateur de l'arbre de configuration

Cliquez sur un dossier ou un fichier : son rôle, sa portée, sa page source et un exemple de contenu conforme à la documentation s'affichent à droite. Les chemins et les exemples sont ceux des pages Rules, Custom modes, Skills, MCP, Lifecycle hooks et .bobignore.

Qui gagne en cas de conflit

C'est la question qui fait perdre le plus de temps quand une règle « ne s'applique pas ». Les ordres documentés sont les suivants.

  • Modes : projet, puis global, puis les modes par défaut. Réutiliser le slug d'un mode intégré le surcharge.
  • Règles : le global est chargé, puis le workspace, qui peut le surcharger. Dans chaque niveau, les règles de mode se chargent avant les règles générales, et AGENTS.md se place entre les deux.
  • Serveurs MCP et skills : le projet prime sur le global à nom identique.
  • Hooks : les globaux s'exécutent toujours, ceux du workspace sont fusionnés par-dessus.
  • Commandes slash : projet avant global, et les commandes de mode ne sont jamais surchargeables.
Une ambiguïté que la documentation signale elle-même

Pour les règles, la formule employée est que « les règles de mode se chargent avant les règles générales ». La documentation ne dit pas si « avant » signifie prioritaire ou au contraire écrasé par ce qui suit [D ide/configuration/rules]. En cas de doute sur un conflit, la seule méthode fiable est l'essai.

Deux divergences de chemin existent aussi entre les pages de Bob IDE et celles de Bob Shell : les modes globaux sont donnés en ~/.bob/settings/custom_modes.yaml d'un côté et ~/.bob/custom_modes.yaml de l'autre ; les serveurs MCP globaux en ~/.bob/settings/mcp.json contre ~/.bob/mcp_settings.json. Vérifiez lequel votre installation utilise avant de créer le fichier à la main.

Ce que Bob ne doit pas lire

Le fichier .bobignore, à la racine du workspace, utilise exactement la syntaxe de .gitignore [D ide/configuration/bobignore]. Il est lui-même toujours implicitement ignoré, ce qui empêche Bob de modifier ses propres règles d'accès.

.env
secrets/
*.key
config/credentials.json
*password*
*credential*
*apikey*
node_modules/
dist/
*.log

L'application est stricte en lecture comme en écriture pour les outils principaux, et list_files masque les fichiers ignorés ou les marque d'un cadenas. Quand Bob se heurte à un fichier interdit, il reçoit un message explicite lui demandant de continuer sans ce fichier ou de vous demander de modifier la liste.

Les quatre limites à connaître, énoncées par la documentation

Ce n'est pas un bac à sable. La formule exacte de la page est « Not a full sandbox ». Précisément :

  • La portée est limitée au workspace courant ; ce qui est en dehors n'est pas concerné.
  • insert_content et search_and_replace peuvent contourner l'interdiction en écriture.
  • Pour l'exécution de commandes, seule une liste prédéfinie d'utilitaires est vérifiée ; un script maison ou un outil inhabituel peut passer. Cette liste n'est pas publiée.
  • Et, vu au chapitre 7 : une mention explicite avec @ passe outre.

Conclusion pratique, qui est aussi la recommandation de la documentation : ajoutez vos fichiers de secrets à .gitignore et à .bobignore, mais considérez qu'un secret qui compte vraiment n'a pas sa place dans le projet.

Une contradiction sur le rechargement

La page de Bob IDE affirme que le fichier est surveillé et les modifications rechargées automatiquement. La page « Ignoring files » de Bob Shell dit au contraire qu'il faut redémarrer la session pour qu'un changement prenne effet. Après avoir modifié .bobignore, le plus sûr est de redémarrer.

Travail pratique 13 Cartographier et protéger
  1. Dressez l'inventaire de votre configuration réelle. Dans un terminal, à la racine du projet fil rouge : ls -a .bob/ 2>/dev/null puis ls -a ~/.bob/. Comparez avec l'explorateur ci-dessus.
  2. Créez un .bobignore avec au moins .env, secrets/ et *.key.
  3. Créez un fichier .env factice contenant une fausse clé, puis demandez à Bob de le lire. Constatez le refus.
  4. Éprouvez la limite : mentionnez ce même fichier explicitement avec @. Constatez qu'il est lu. Retenez la leçon.
  5. Éprouvez la priorité : écrivez une règle dans ~/.bob/rules/ et une règle contradictoire dans .bob/rules/. Posez une question qui met les deux en jeu et vérifiez laquelle l'emporte.
  • Je sais distinguer ce qui vit dans ~/.bob/ et dans .bob/.
  • Je connais l'ordre de priorité pour les modes, les règles, MCP et les skills.
  • Mon projet a un .bobignore qui couvre les secrets.
  • J'ai vérifié qu'une mention explicite contourne .bobignore.
  • Je ne compte pas sur .bobignore comme sur un bac à sable.
Quiz · chapitre 16
Vous mettez .env dans .bobignore. Que pouvez-vous en conclure ?
Chapitre 17 · Niveau 3

MCP : comprendre, brancher, gouverner

Les règles, modes et skills changent la façon dont Bob travaille. MCP change ce à quoi il a accès : bases de données, services, outils internes.

Objectif

À la fin de ce chapitre, vous savez ce qu'est un serveur MCP, quel transport choisir, vous produisez un fichier de configuration valide, et vous savez à quoi regarder avant de brancher un serveur que vous n'avez pas écrit.

Un port universel

MCP, pour Model Context Protocol, est un protocole standardisé que la documentation compare à un port USB-C [D ide/configuration/mcp/understanding-mcp]. L'architecture est client-serveur : Bob est le client, et les serveurs exposent des capacités, qu'il s'agisse de fichiers, d'une base de données ou d'une interface de programmation. Les échanges se font en JSON-RPC 2.0.

L'intérêt est d'étendre Bob sans toucher à son cœur, et de ne charger les capacités que lorsqu'elles servent. Un point à savoir avant de chercher : aucun serveur MCP n'est pré-installé.

Trois transports, deux à retenir

TransportStatutQuand le choisir
STDIOlocal, standardLe serveur tourne sur votre machine. Bob le lance comme processus enfant et dialogue par l'entrée et la sortie standard. Pas d'exposition réseau, latence faible, cycle de vie lié à Bob. C'est le cas par défaut.
Streamable HTTPdistant, standard moderneLe serveur est ailleurs et sert plusieurs clients. Un seul point d'entrée accepte les requêtes, avec diffusion en flux optionnelle sur la même connexion. Demande des mesures de sécurité explicites.
SSEdistant, héritéRemplacé par Streamable HTTP. À ne pas choisir pour une nouvelle intégration.
Deux trous dans la documentation, utiles à connaître avant de déboguer

Côté Bob IDE, aucune configuration SSE n'est documentée : la valeur à donner au champ type pour ce transport est introuvable. Et l'exemple STDIO officiel n'a pas de champ type du tout, sans qu'on sache si "type": "stdio" est accepté. Côté Bob Shell, la convention est différente : la clé url désigne SSE et la clé httpURL désigne Streamable HTTP. Ne transposez pas une configuration de l'un à l'autre sans vérifier.

Interactif

Constructeur de configuration MCP

Choisissez la portée et le transport, remplissez les champs : le JSON attendu se construit au fur et à mesure, avec le chemin du fichier où le déposer. Les champs proposés sont ceux que documente la page « Utiliser MCP dans Bob » ; rien n'est inventé.

L'authentification déléguée

Pour les serveurs qui exigent un accès à votre compte, par exemple un service d'hébergement de code, Bob gère OAuth 2.1 automatiquement. Vous ajoutez le serveur sans en-tête ni variable d'environnement, Bob détecte les métadonnées d'autorisation à la première connexion, ouvre votre navigateur, puis stocke et rafraîchit les jetons [D ide/configuration/mcp/mcp-oauth].

Un piège à connaître, car il produit une panne silencieuse : un en-tête Authorization statique désactive complètement OAuth, et inversement, quand OAuth est actif, Bob retire cet en-tête. La documentation le dit en une phrase : n'utilisez qu'une seule méthode. Pour changer de compte, le redémarrage ne suffit pas, il faut le bouton de réinitialisation de l'authentification.

Gouverner ce qu'on branche

Chaque serveur ajoute ses définitions d'outils à la fenêtre de contexte, à chaque message. D'où une recommandation déjà vue au niveau 1 et confirmée ici : n'activez que les outils utiles, serveur par serveur et outil par outil, et préférez une configuration de projet à une configuration globale.

Deux réglages commandent l'ensemble : un interrupteur général d'usage des serveurs MCP, qui retire toute la logique du system prompt quand il est éteint, et un second qui autorise ou non Bob à écrire des serveurs MCP. Pour auto-approuver un outil MCP, il faut deux réglages à la fois : l'option globale dans les permissions, et l'autorisation permanente à côté de l'outil concerné.

Avant de brancher un serveur que vous n'avez pas écrit

Un serveur MCP tourne avec vos droits et voit ce que vous lui donnez. La documentation propose une procédure d'examen en six temps : enquêter sur la source, lire la documentation, vérifier les permissions demandées, lire le code, tester en isolation, puis surveiller le comportement. Quatre contrôles sont à exiger d'un serveur distant : authentification, chiffrement, contrôles d'accès et journalisation.

Notez une incohérence de la documentation elle-même : elle interdit de coder en dur les clés dans les fichiers de configuration, tout en donnant un exemple qui place une clé directement dans env. Suivez la consigne, pas l'exemple : passez par une variable d'environnement ou un coffre.

Travail pratique 14 Écrire une configuration, puis la faire écrire par Bob
  1. Avec le constructeur ci-dessus, produisez une configuration STDIO de portée projet et déposez-la dans .bob/mcp.json.
  2. Ouvrez l'onglet MCP des réglages et vérifiez que Bob voit le serveur, même s'il échoue à démarrer faute d'un vrai exécutable.
  3. Dépliez le serveur et désactivez un outil. Observez l'effet annoncé sur la consommation de contexte.
  4. Exercice avancé, tiré du tutoriel officiel : faites construire un serveur par Bob. En Plan mode, décrivez un serveur en lecture seule avec un seul outil, ses paramètres et son format de retour. Puis en Agent mode, demandez l'implémentation.
  5. Point clé de ce tutoriel : Bob n'enregistre pas le serveur tout seul. Demandez-le explicitement, en précisant la portée projet et le fichier .bob/mcp.json, puis redémarrez Bob.

Ce dernier exercice se fait dans un répertoire neuf, pas sur le projet fil rouge, et demande une version récente de Node.js.

  • Je sais choisir entre STDIO et Streamable HTTP.
  • J'ai produit un mcp.json valide et Bob l'a chargé.
  • Je sais qu'un en-tête d'autorisation statique désactive OAuth.
  • J'ai désactivé au moins un outil pour économiser du contexte.
  • Je sais quoi vérifier avant de brancher un serveur tiers.
Quiz · chapitre 17
Votre serveur distant utilise OAuth, et vous ajoutez aussi un en-tête Authorization fixe « au cas où ». Que se passe-t-il ?
Chapitre 18 · Niveau 3

Literate Coding

Pour une petite modification dans un fichier que vous connaissez déjà, passer par la conversation n'est pas toujours le plus rapide. Il existe une autre voie : écrire l'instruction là où le code doit aller.

Objectif

À la fin de ce chapitre, vous activez ce mode, vous écrivez une instruction dans un fichier, vous générez le code et vous savez quand cette approche est préférable à la conversation.

Le principe

Le Literate Coding consiste à écrire des instructions en langage naturel, ou en pseudocode, directement dans le fichier source, puis à les faire remplacer par du code. Les instructions apparaissent surlignées en bleu. La génération analyse tout le fichier, comprend le contexte existant, remplace les instructions et présente un diff en ligne [D ide/features/literate-coding].

Plusieurs instructions dispersées dans le même fichier sont toutes prises en compte, où qu'elles se trouvent.

V12 Un interrupteur en deux instructions 2 min 21
  1. [00:01] Le présentateur pose le cadre : pour une petite fonctionnalité dans un code qu'il connaît, la conversation n'est pas le meilleur outil. Il annonce une fonctionnalité qu'il présente comme propre à Bob.
  2. [00:40] La tâche : un interrupteur pour n'afficher que les articles créés dans les dernières vingt-quatre heures.
  3. [00:55] Il active le mode.
  4. [01:05] Il écrit une première instruction à l'endroit voulu, puis une seconde plus bas dans le même fichier.
  5. [01:30] Il lance la génération. Bob combine le code existant et les deux descriptions, et produit du code qui s'insère dans l'ensemble.
  6. [02:02] Il accepte tout, enregistre, revient à l'application : l'interrupteur fonctionne.

La vidéo date d'octobre 2025 et montre l'activation par un interrupteur dans l'interface. La documentation de 2026 donne un raccourci clavier ou une icône. Le geste a changé, pas le principe. [V12]

Doc · generate-code-from-comments Sélection du mode Literate Coding dans l'éditeur.
Illustration d'origine : l'activation du mode dans l'éditeur.
Doc · generate-code-from-comments Les changements proposés par Bob présentés sous forme de diff.
Illustration d'origine : le diff proposé, en rouge ce qui disparaît, en vert ce qui est ajouté.

Les gestes

  1. Activer : Cmd + I sur macOS, Ctrl + I ailleurs, ou l'icône en forme de baguette magique de la barre d'outils. Le tutoriel décrit une troisième voie, par le menu en points de suspension sur la ligne visée.
  2. Écrire l'instruction en langage naturel.
  3. Générer : Cmd + Entrée, ou le bouton de génération.
  4. Accepter tout, ou rejeter avec Cmd + Maj + Retour arrière.
Le point qui surprend

Les modifications sont écrites dans votre fichier avant que vous ne les acceptiez. La documentation le présente comme un avantage : cela vous permet de tester avant de décider. Mais cela veut dire qu'un rejet est une annulation, pas un non-événement. Enregistrez votre travail avant de générer.

Limites documentées

La portée est d'un seul fichier, le support multi-fichiers étant annoncé comme prévu. La fonctionnalité est signalée comme étant en aperçu. Pour un changement qui touche plusieurs fonctions ou plusieurs fichiers, la documentation renvoie à la conversation et à un plan, c'est-à-dire à la méthode du chapitre 6.

Deux points ne sont pas documentés : les équivalents Windows et Linux des raccourcis de génération et de rejet, et le fait de savoir si l'instruction se tape comme un commentaire dans le fichier ou dans un champ dédié, l'image et le titre de la page suggérant des réponses différentes.

Travail pratique 15 Une logique de reprise sur erreur

L'exercice du tutoriel officiel porte sur un fichier de l'interface du projet fil rouge.

  1. Ouvrez un composant que vous connaissez et placez le curseur dans une fonction qui appelle le serveur.
  2. Activez le mode avec le raccourci.
  3. Écrivez une instruction courte et précise, par exemple que le serveur est parfois instable et qu'il faut une logique de reprise ici.
  4. Générez, lisez le diff, puis acceptez.
  5. Comparez : refaites la même demande par la conversation, sur une copie du fichier. Comparez le temps passé et la qualité du résultat. C'est ce qui vous dira quand choisir l'un ou l'autre.
  • J'ai activé le mode au clavier.
  • J'ai généré du code depuis une instruction écrite dans le fichier.
  • J'ai lu le diff avant d'accepter.
  • Je sais que les changements sont écrits avant acceptation.
  • Je sais que la portée est limitée à un seul fichier.
Quiz · chapitre 18
Votre modification touche trois fichiers et deux couches de l'application. Que faire ?
Chapitre 19 · Niveau 3

Bob Shell et l'automatisation

Tout ce que vous avez appris se retrouve en ligne de commande, avec une différence de taille : en mode non interactif, personne n'approuve plus rien.

Objectif

À la fin de ce chapitre, vous installez Bob Shell, vous l'authentifiez pour l'automatisation, vous distinguez les deux modes de session, et vous écrivez une commande d'intégration continue avec ses garde-fous.

Installer et authentifier

Bob Shell demande Node.js 24 ou supérieur, et fonctionne sur macOS, Linux, Windows, ainsi que sur z/OS et Linux sur IBM Z [D shell/getting-started/install-and-setup]. Un détail qui déroute au premier usage : le paquet s'appelle bobshell, la commande s'appelle bob.

Pour un usage interactif, l'authentification passe par le navigateur, comme dans l'IDE. Pour l'automatisation, il faut une clé d'API de portée « Inference », dont la valeur n'est affichée qu'une seule fois, exposée dans une variable d'environnement.

export BOB_API_KEY="votre-cle-api"
echo 'export BOB_API_KEY="votre-cle-api"' >> ~/.bashrc

La variable exacte est BOB_API_KEY. La documentation se contredit sur un point qu'elle signale elle-même : la page consacrée à l'intégration avec les éditeurs cite BOBSHELL_API_KEY.

Deux modes de session

bob chat ouvre une session interactive. On y retrouve les mentions avec @, le sélecteur de skills, le menu des commandes, et un dialogue d'approbation à quatre réponses : approuver une fois, approuver le groupe d'outils pour la tâche, toujours autoriser une commande précise, ou refuser. Le pied de page affiche le mode, le contexte consommé et le coût en Bobcoins.

bob run exécute une session non interactive, acceptant un prompt en argument ou sur l'entrée standard, avec trois formats de sortie dont un JSON structuré et un flux d'événements.

La phrase la plus importante de ce chapitre

La documentation l'écrit sans détour : en exécution non interactive avec bob run, tous les outils sont pré-approuvés. Personne n'approuve quoi que ce soit. Tout ce que vous avez appris au chapitre 8 sur les garde-fous d'approbation ne s'applique plus. C'est pour cela que les limites se posent autrement, par la commande elle-même.

Trois garde-fous pour l'intégration continue

Puisque l'approbation disparaît, la documentation propose de borner l'exécution sur trois axes : le coût, le nombre de tours, et les groupes d'outils autorisés. Désactiver l'édition, l'exécution et MCP donne un agent en lecture seule, ce qui est le bon réglage pour une revue automatisée.

export BOB_API_KEY=...
bob run --accept-license --trust --format json --max-cost 1 --max-turns 15 \
  --disable-tool-groups edit,execute,mcp "Review @src/ and list risks" > review.json
jq -r '.status, .last_message' review.json

Le format JSON renvoie un objet final contenant le statut, le dernier message et des statistiques : identifiant de tâche, jetons consommés en entrée et en sortie, durée, coût de session et nombre d'appels d'outils. C'est ce qui rend le résultat exploitable par un script.

Les dossiers de confiance

Sur un agent d'intégration continue, un point mérite attention. Les hooks globaux s'exécutent dans tout dossier qui n'est pas explicitement marqué comme non fiable, y compris un dépôt cloné pour la première fois. Le mécanisme des dossiers de confiance, désactivé par défaut, permet de déclarer une confiance par dossier ou par dossier parent, et c'est le seul moyen d'empêcher cette exécution.

La documentation formule la recommandation de façon frappante : relisez les hooks globaux et le fichier de réglages de chaque dépôt comme vous reliriez un fichier de construction ou une configuration d'intégration continue.

Travail pratique 16 Une revue automatisée en lecture seule
  1. Installez Bob Shell, puis vérifiez la version avec bob --version. Rappelez-vous que le paquet et la commande n'ont pas le même nom.
  2. Ouvrez une session interactive avec bob chat sur le projet fil rouge. Retrouvez le sélecteur de skills et le menu des commandes.
  3. Observez le pied de page pendant quelques échanges : mode, contexte, coût.
  4. Sortez, puis lancez une revue non interactive en lecture seule, avec un coût et un nombre de tours plafonnés, et les groupes d'édition, d'exécution et MCP désactivés.
  5. Exploitez la sortie JSON avec un extracteur de champs pour n'afficher que le statut et le message final.
  6. Mesurez le risque : relancez la même commande sans --disable-tool-groups sur un dépôt jetable, et mesurez ce que cela veut dire de laisser un agent écrire sans approbation.
  • Bob Shell est installé et bob --version répond.
  • J'ai mené une session interactive et lu le pied de page d'état.
  • Je sais que bob run pré-approuve tous les outils.
  • J'ai lancé une revue plafonnée en coût et en tours, en lecture seule.
  • J'ai exploité la sortie JSON dans un script.
Quiz · chapitre 19
Vous lancez bob run dans une chaîne d'intégration continue. Qui approuve les actions ?
Chapitre 20 · Niveau 3

Mesurer, gouverner, suivre l'outil

Dernier chapitre du parcours. Il ne s'agit plus de faire, mais de piloter : mesurer l'usage d'une équipe, connaître le cadre d'entreprise, et savoir lire le changelog pour ne pas travailler sur des souvenirs.

Objectif

À la fin de ce chapitre, vous savez quels indicateurs existent et ce qu'ils mesurent exactement, ce que la télémétrie collecte, où trouver les réglages d'entreprise, et comment dater une fonctionnalité.

Mesurer : trois indicateurs

Bobalytics est réservé au plan Enterprise et s'atteint depuis la console d'administration [D ide/features/bobalytics]. Trois indicateurs structurent les tableaux de bord, et leurs définitions exactes méritent d'être lues, car elles ne sont pas intuitives.

IndicateurDéfinition documentéeÀ savoir
Adoption rateMoyenne des utilisateurs actifs quotidiens divisée par le nombre total de sièges sous licence.Est « actif » celui qui accepte au moins une complétion ou termine une conversation.
Bob factorLignes de code commitées par Bob divisées par le total des lignes commitées.Les commits sans aucune ligne de Bob sont exclus du calcul au-delà de 40 000 lignes de total.
Bobcoin spendTotal des Bobcoins consommés sur la période.Comparaison avec la période précédente calculée automatiquement.

Les identifiants sont anonymisés dans les tableaux de bord, et les administrateurs n'accèdent pas aux données individuelles. Un export produit une archive contenant un fichier par table.

La télémétrie

Elle est activée par défaut et désactivable à tout moment dans les réglages généraux [D ide/configuration/telemetry-data]. Ce qui est collecté : les actions, les fonctionnalités et performances, les erreurs et diagnostics. Ce qui ne l'est pas, formulé explicitement par la documentation : ni le code, ni le contenu des prompts, ni les fichiers.

Une tension que la documentation laisse ouverte

Les utilisateurs Enterprise doivent laisser la télémétrie activée pour apparaître dans Bobalytics. Or aucune politique d'entreprise ne permet de l'imposer, alors que l'indicateur d'adoption en dépend. Un utilisateur qui la désactive disparaît des mesures. Par ailleurs, la durée de conservation et la région de stockage de ces données ne sont pas documentées.

Le cadre d'entreprise, en survol

Ce bloc est donné sans travail pratique, conformément au périmètre de la formation. Les points à connaître : une instance se provisionne par région, et quatre régions existent, aux États-Unis, en Europe, en Inde et au Japon. Les identités se raccordent par SAML ou OpenID Connect, avec vérification du domaine par enregistrement DNS. Les équipes portent chacune un budget de Bobcoins. Le journal d'activité est téléchargeable par tranches horaires dans un format d'audit normalisé.

Deux limites utiles à retenir. D'abord, quelle que soit la région choisie, les données de compte, de facturation et de gestion des utilisateurs restent aux États-Unis, et le domaine d'authentification américain doit être joignable depuis tous les réseaux. Ensuite, le journal d'activité ne contient pas les actions des utilisateurs, ni leurs prompts ni leurs appels d'outils : pour cela, la documentation renvoie aux hooks du chapitre 15.

L'intégration avec un système de supervision de sécurité n'est pas en libre-service : elle passe par une demande au support avec les paramètres du collecteur.

Les paquets premium

Trois extensions optionnelles étendent Bob à des plateformes particulières, installées comme extensions après vérification automatique des droits. Java Modernization propose des workflows guidés de montée de version et de migration. Bob for Z couvre la modernisation sur mainframe, avec documentation et refactorisation de programmes COBOL, PL/I ou Assembler. Bob for i est le plus fourni, avec deux modes propres, des dizaines de skills et un accès au système IBM i. Aucun prix n'est indiqué dans la documentation.

Lire le changelog pour ne pas travailler sur des souvenirs

C'est la compétence qui vous servira le plus longtemps. Les versions de référence au moment de la lecture des sources sont Bob IDE 2.1.0, d'août 2026, et Bob Shell 2.0.4, de septembre 2026 [D ide/changelog]. Les deux produits ont des numérotations distinctes.

Cette formation vous a signalé au fil des chapitres plusieurs écarts entre ce que montrent les vidéos et ce que dit la documentation. Le changelog les explique tous.

Ce qui a changéAvantAprèsVersion
Le mode d'écritureCode modeAgent mode2.0.0, juin 2026
Modes supprimésAdvanced, Orchestratorcapacités absorbées par les modes par défaut2.0.0
Nombre de modes par défautcinqtrois2.0.0
Fenêtre de contexte200 000 jetons270 000 jetons2.0.0
Des traces de vocabulaire daté subsistent dans la documentation de 2026

Ce n'est pas seulement un problème de vidéos anciennes. Plusieurs pages à jour contiennent encore l'ancien vocabulaire : la page des commandes slash cite /code, un tutoriel fait son test « en Code mode », la page des modes personnalisés évoque encore l'Orchestrator pourtant supprimé, et la documentation de Bob Shell parle du dossier rules-code/. Quand une page et le changelog se contredisent, le changelog fait foi.

Signalons aussi une absence notable : le retour en arrière du chapitre 8 n'apparaît nulle part dans le changelog, alors qu'une page de documentation lui est consacrée.

Dépannage : les quatre pannes les plus fréquentes

  • Connexion impossible. Cause habituelle, un pare-feu. Il faut autoriser en HTTPS les domaines de Bob, dont le domaine d'authentification américain, quelle que soit votre région.
  • Lenteurs après installation sur Mac. Presque toujours le mauvais installateur pour le processeur. Vérifiez la puce, désinstallez, réinstallez la bonne variante.
  • Panneau de Bob disparu. Il a été sorti de sa zone. On le récupère par les réglages d'apparence de la barre latérale secondaire.
  • En dernier recours, une réinitialisation complète existe. Exportez vos réglages avant, car l'opération est irréversible, et sachez que la documentation ne décrit aucune procédure de réimport du fichier exporté.

Concernant la foire aux questions, un avertissement de méthode : les pages ont été capturées avec leurs rubriques mais sans le texte des questions, replié à la capture. Cette formation ne les utilise donc pas, plutôt que d'en inventer le contenu.

Travail pratique 17 Dater ce que vous croyez savoir
  1. Ouvrez les réglages et relevez votre version de Bob IDE.
  2. Ouvrez le changelog en ligne et lisez les entrées postérieures à votre version. Notez ce qui vous manque.
  3. Vérifiez votre réglage de télémétrie et décidez en connaissance de cause.
  4. Exercice de vigilance : reprenez trois affirmations de cette formation et vérifiez-les dans la documentation actuelle. Les sources ont été lues le 20 septembre 2026 ; tout a pu bouger depuis.
  5. Si vous encadrez une équipe, regardez lesquels des trois indicateurs répondent à une question que vous vous posez réellement, et ignorez les autres.
  • Je connais la définition exacte des trois indicateurs.
  • Je sais ce que la télémétrie collecte et ce qu'elle ne collecte pas.
  • Je connais ma version de Bob et je sais lire le changelog.
  • Je sais que le journal d'activité ne contient pas les actions des utilisateurs.
  • J'ai vérifié au moins trois affirmations de cette formation dans la documentation actuelle.
Quiz · chapitre 20
Que faut-il savoir pour interpréter correctement le « Bob factor » ?
Interactif

Test de fin de niveau 3

Six questions sur la personnalisation, l'extension et la gouvernance. C'est le dernier test du parcours.

Annexes

Aide-mémoire, glossaire, références

À consulter pendant le travail, pas à lire d'un bout à l'autre. Chaque ligne de l'aide-mémoire indique sa page source.
Annexe A

Aide-mémoire

Les raccourcis, commandes, mentions et chemins de configuration rassemblés, avec la page de documentation d'où vient chaque ligne.

Raccourcis clavier

GestemacOSWindows et LinuxSource
Ouvrir le panneau de conversationOption + Command + BCtrl + Alt + B[D ide/getting-started/quickstart]
Changer de mode (cycle)Command + .Ctrl + .[D ide/features/modes]
Conversation en ligne dans l'éditeurCommand + KCtrl + K[D ide/features/code-actions]
Envoyer la sélection à la conversationCommand + LCtrl + L[D ide/features/code-actions]
Activer le Literate CodingCommand + ICtrl + I[D ide/features/literate-coding]
Générer, puis accepterCommand + Entréenon documenté[D ide/features/literate-coding]
Rejeter la générationCommand + Maj + Retour arrièrenon documenté[D ide/features/literate-coding]
Chercher dans la conversationCommand + FCtrl + F[D ide/features/chat-interface]
Envoyer, et aller à la ligneEntrée · Maj + Entréeidentique[D ide/features/chat-interface]
Bob Shell : changer de modeMaj + Tabidentique[D shell/getting-started/start-bobshell-interactive]
Bob Shell : auto-approuver sans dialogueCtrl + FAlt + F[D shell/getting-started/start-bobshell-interactive]

Mentions de contexte

MentionCe qu'elle fournitPiège
@/chemin/fichier.tsContenu complet, avec numéros de lignePasse outre .bobignore et .gitignore
@/src/app.js:10-20Uniquement ces lignesÀ privilégier systématiquement
@/chemin/dossierFichiers texte du dossierNon récursif
@problemsErreurs et avertissements par fichier
@terminalDernière commande et sa sortieLimité au tampon visible
@a1b2c3dUn commit, avec son diffDépôt Git requis ; respecte .gitignore
@git-changesÉtat Git et diff non commitéRespecte .gitignore
@https://…Page convertie en MarkdownConversion imparfaite sur pages complexes

Source de tout ce tableau : [D ide/features/context-mentions]. Deux syntaxes apparaissent ailleurs sans figurer dans ce tableau officiel : @issues, cité uniquement par la page des revues de code, et le format à deux-points produit par les actions de code.

Commandes slash

CommandeEffetSource
/initAnalyse le projet et crée AGENTS.md plus les règles par mode[D ide/features/slash-commands]
/reviewAnalyse les changements non commités[D ide/features/code-reviews]
/review <branche>Compare une branche à la position courante[D ide/features/code-reviews]
/create-prCrée une pull request[D ide/features/pull-requests]
/create-skillCréation guidée d'un skill[D ide/features/skills]
/agent /plan /askChangent de mode ; non surchargeables[D ide/features/slash-commands]
/<slug>Active un mode personnalisé[D ide/configuration/custom-modes]
/<nom-de-skill>Active un skill explicitement[D ide/features/skills]
Propres à Bob Shell/help · /clear · /compact · /copy · /editor · /hooks · /mode · /permissions · /resume · /settings · /mcp · /manage-secrets · /skills · /status · /team · /logs · /docs · /bug · /exit [D shell/features/slash-commands]

Commandes personnalisées : un fichier Markdown dans .bob/commands/ ou ~/.bob/commands/, le nom du fichier devient la commande. Le projet prime sur le global.

Où vit la configuration

QuoiGlobalProjetFormat
Règles~/.bob/rules/.bob/rules/, .bob/rules-<mode>/Markdown
Standards d'équipeAGENTS.md à la racineMarkdown
Modes personnalisés~/.bob/settings/custom_modes.yaml.bob/custom_modes.yamlYAML
Skills~/.bob/skills/<nom>/SKILL.md.bob/skills/<nom>/SKILL.mdMarkdown + en-tête YAML
Commandes slash~/.bob/commands/*.md.bob/commands/*.mdMarkdown
Serveurs MCP~/.bob/settings/mcp.json.bob/mcp.jsonJSON
Hooks~/.bob/settings/settings.json.bob/settings.jsonJSON, clé hooks
Fichiers interdits.bobignore à la racineSyntaxe .gitignore

Bob Shell donne des chemins globaux différents pour les modes et MCP. Voir le chapitre 16. Priorité générale : le projet prime sur le global, et les politiques d'entreprise priment sur tout.

Les chiffres à connaître

ValeurChiffreSource
Fenêtre de contexte par tâche270 000 jetons[D ide/core-concepts/context-window-management]
Début de la compactionenviron 190 000 jetons[D ide/core-concepts/context-window-management]
Réserve pour la réponseenviron 20 000 jetons[D ide/core-concepts/context-window-management]
Prix d'un Bobcoin0,50 dollar[D ide/account/bobcoins]
Allocations mensuelles50 · 50 · 180 · 1 000[D ide/account/bobcoins]
Délai d'expiration d'un hook10 secondes par défaut[D ide/configuration/lifecycle-hooks]
Versions de référenceBob IDE 2.1.0 · Bob Shell 2.0.4[D ide/changelog]
Ce que la documentation ne dit pas

Rassemblé ici pour éviter des recherches inutiles. Ne sont pas documentés : le taux de conversion des jetons en Bobcoins, le prix mensuel des plans, le coût en Bobcoins d'une opération type, le nombre maximum de sous-agents en parallèle, les modèles utilisés par les deux types de sous-agents, la liste complète des détecteurs de sécurité, la liste des commandes vérifiées par .bobignore, l'emplacement de stockage des instantanés de retour en arrière, les plateformes prises en charge pour les pull requests, et la durée de conservation de la télémétrie.

Annexe B

Glossaire bilingue

Les termes de l'interface restent en anglais dans le produit. Cette colonne du milieu donne la traduction retenue par IBM dans sa documentation française, quand elle existe.

Les équivalents français proviennent des vingt-quatre pages de la documentation française d'IBM téléchargées le 20 septembre 2026. Quand IBM conserve le terme anglais, c'est indiqué : cela signifie qu'il faut le garder, y compris à l'oral.

Agent modemode AgentLe mode complet : lit, écrit, exécute des commandes. Seul à pouvoir tout faire. Anciennement « Code mode ».
Plan modemode PlanAnalyse et conçoit. Peut écrire des fichiers pour enregistrer son plan, mais ne lance aucune commande.
Ask modemode AskLecture seule. Explique sans rien modifier.
Context windowcontext windowIBM conserve l'anglais dans le titre de sa page française, tout en parlant de « gestion du context window ». Budget de jetons actif d'une tâche, plafonné à 270 000.
TokenjetonUnité de découpage du texte. C'est ce que mesure l'indicateur de contexte.
BobcoinBobcoinUnité de consommation facturée, à 0,50 dollar. Terme non traduit.
Custom rulesrègles personnaliséesTexte injecté dans chaque conversation, dans tous les modes. Un mode ne peut pas les contourner.
Custom modesmodes personnalisésPersonas avec permissions déterministes, définis en YAML.
SkillsskillsTerme non traduit par IBM. Savoir-faire réutilisable dont seule la description est chargée en permanence.
SubagentssubagentsTerme non traduit dans le titre, mais IBM écrit « sous-agents » dans le corps du texte. Agent isolé qui ne renvoie qu'un résumé.
ToolsoutilsCe dont Bob se sert pour agir : lire, écrire, exécuter, appeler un serveur externe.
Auto-approving actionsapprobation automatique des actionsRéglage par groupe qui supprime la demande de confirmation. À manier avec prudence.
Context mentionsmentions de contexteLes références introduites par @.
Code actionsactions de codeAppels à Bob depuis l'éditeur, qui transmettent le chemin et les lignes.
RollbackrollbackTerme non traduit. Retour à un état antérieur d'une tâche, à partir d'instantanés. IBM parle de « restaurer un instantané ».
Code reviewscode reviewsTerme non traduit. Revue déclenchée par une commande, qui produit des constats classés.
Commit messagesmessages de commitGénérés d'après le diff, le nom de la branche et l'historique récent.
Slash commandsslash commandsTerme non traduit. Commandes introduites par une barre oblique.
Lifecycle hookslifecycle hooksTerme non traduit. Scripts déclenchés par un événement du cycle de vie.
Literate CodingLiterate CodingTerme non traduit. Écrire l'instruction dans le fichier source et la faire remplacer par du code.
Bob tipsconseils BobAnalyse continue de la complexité et de la maintenabilité des fonctions.
BobalyticsBobalyticsTableaux de bord d'usage, réservés au plan Enterprise.
Chat interfaceinterface de chatLe panneau de conversation et ses composants.
MCPMCPSigle conservé. Protocole standardisé par lequel Bob accède à des services externes.
Context poisoningempoisonnement du contexteUne information fausse entrée dans la conversation y reste et fausse la suite.
CompactioncompactionRésumé automatique des anciens messages près du plafond. La documentation avertit qu'elle perd de l'information.
Annexe C

Références

Toutes les sources de cette formation, filtrables. Les citations du texte, comme [D ide/features/modes], pointent vers l'entrée correspondante de cette liste.

Deux sources de natures différentes ont été recoupées. Les vidéos montrent des gestes, dans un ordre, avec un résultat, mais datent de deux campagnes distinctes, octobre 2025 et juillet 2026. La documentation précise les options, les limites et les chiffres, et a été lue le 20 septembre 2026. Quand les deux divergent, le chapitre 20 explique comment trancher.

Les vidéos ne sont pas intégrées à cette page, seulement liées. Leurs transcriptions ne sont pas reproduites : elles sont automatiques, donc imparfaites, et ont servi de matière de travail, jamais de citation littérale.

Interactif

Toutes les sources

Filtrez par type, par niveau et par thème. Chaque entrée indique où elle sert dans la formation, et les pages lues sans être citées sont signalées comme telles.

Pour aller plus loin

  • La documentation de Bob IDE et celle de Bob Shell, à relire après cette formation : vous y verrez des choses qui vous auraient échappé avant.
  • Les changelogs, à consulter à chaque mise à jour. C'est l'habitude la plus utile que peut prendre un utilisateur d'agent de code.
  • La playlist « Your Agentic AI Coding Partner », désormais lisible avec un œil critique sur ce qui a changé depuis.
  • Le projet Galaxium Travels, pour refaire les travaux pratiques ou en inventer d'autres.

Formation générée le 20 septembre 2026 à partir de deux sources recoupées : la playlist « Your Agentic AI Coding Partner | IBM Bob » (12 vidéos exploitables sur 13, la treizième étant privée ; publiées en octobre 2025 et juillet 2026) et la documentation officielle bob.ibm.com (139 pages lues, Bob IDE et Bob Shell, plus le fichier llms.txt), capturée le 20 septembre 2026. Versions visées : Bob IDE 2.1.0, Bob Shell 2.0.4. Les captures d'écran du dossier assets/origin/ proviennent de la documentation IBM et sont reproduites sans modification, à usage local et pédagogique, avec leur page d'origine indiquée. Les schémas sont dessinés pour cette formation. Aucune commande, aucun raccourci, aucun chiffre n'a été inventé : les points que la documentation ne couvre pas sont signalés comme tels. La page ne fait aucun appel réseau à l'exécution.