6 6
7> Référence complète des mods Claude Code : structure du module de hooks, événements, méthodes de l'API des mods, points de rendu, éléments par surface, limites et paramètres.7> Référence complète des mods Claude Code : structure du module de hooks, événements, méthodes de l'API des mods, points de rendu, éléments par surface, limites et paramètres.
8 8
9Consultez tout événement qu'un [mod](/docs/fr/plugins/mods/overview.md) peut gérer, toute méthode de l'API des mods qu'il peut appeler, ou tout point de rendu dans lequel il peut dessiner. Les entrées couvrent la CLI Claude Code et l'application Desktop à partir de la v2.1.290, ainsi que l'extension VS Code à partir de la v2.1.299. Chaque entrée donne le nom et une description d'une ligne, avec un lien vers la section du guide qui l'explique lorsqu'elle existe.9Consultez tout événement qu'un [mod](https://code.claude.com/docs/fr/plugins/mods/overview.md) peut gérer, toute méthode de l'API des mods qu'il peut appeler, ou tout point de rendu dans lequel il peut dessiner. Les entrées couvrent la CLI Claude Code et l'application Desktop à partir de la v2.1.290, ainsi que l'extension VS Code à partir de la v2.1.299. Chaque entrée donne le nom et une description d'une ligne, avec un lien vers la section du guide qui l'explique lorsqu'elle existe.
10 10
11> [!NOTE]11> [!NOTE]
12>12>
13> La référence complète est constituée des [déclarations TypeScript pour les mods](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) de Claude Code, qui décrivent chaque événement, méthode et élément, avec des exemples. La copie sur GitHub peut être plus ancienne que la version de Claude Code que vous avez installée. En cas de divergence, fiez-vous à [la copie que Claude Code écrit pour votre version](/docs/fr/plugins/mods/create.md#get-the-types-for-your-build).13> La référence complète est constituée des [déclarations TypeScript pour les mods](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) de Claude Code, qui décrivent chaque événement, méthode et élément, avec des exemples. La copie sur GitHub peut être plus ancienne que la version de Claude Code que vous avez installée. En cas de divergence, fiez-vous à [la copie que Claude Code écrit pour votre version](https://code.claude.com/docs/fr/plugins/mods/create.md#get-the-types-for-your-build).
14 14
15## Fichiers15## Fichiers
16 16
18 18
19| Fichier | Requis | Contenu |19| Fichier | Requis | Contenu |
20| :- | :- | :- |20| :- | :- | :- |
21| `.claude-plugin/plugin.json` | Oui | Le [manifeste](/docs/fr/plugins/manifest-reference.md) du plugin. Les mods n'ajoutent aucun champ requis. |21| `.claude-plugin/plugin.json` | Oui | Le [manifeste](https://code.claude.com/docs/fr/plugins/manifest-reference.md) du plugin. Les mods n'ajoutent aucun champ requis. |
22| `hooks/hooks.json` | Oui | `modules` : un tableau contenant un chemin, relatif à ce fichier, vers le module de hooks, comme dans `"modules": ["./register.js"]`. Peut aussi contenir des [hooks de paramètres](/docs/fr/hooks.md) sous `hooks`. |22| `hooks/hooks.json` | Oui | `modules` : un tableau contenant un chemin, relatif à ce fichier, vers le module de hooks, comme dans `"modules": ["./register.js"]`. Peut aussi contenir des [hooks de paramètres](https://code.claude.com/docs/fr/hooks.md) sous `hooks`. |
23| Le module de hooks, tel que [`hooks/register.js`](/docs/fr/plugins/mods/create#write-a-mod-yourself) | Oui | Le point d'entrée du mod. Exporte `register(on, options)`. Nommé `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` ou `.tsx`. Un module ES. |23| Le module de hooks, tel que [`hooks/register.js`](https://code.claude.com/docs/fr/plugins/mods/create#write-a-mod-yourself) | Oui | Le point d'entrée du mod. Exporte `register(on, options)`. Nommé `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` ou `.tsx`. Un module ES. |
24| [`types/index.d.ts`](/docs/fr/plugins/mods/interface#declare-the-values), désigné par `types` dans le manifeste | Lorsque le mod utilise `$.state` ou ajoute un namespace à l'API des mods | Déclare les valeurs `PluginState` et tout namespace ajouté par le mod |24| [`types/index.d.ts`](https://code.claude.com/docs/fr/plugins/mods/interface#declare-the-values), désigné par `types` dans le manifeste | Lorsque le mod utilise `$.state` ou ajoute un namespace à l'API des mods | Déclare les valeurs `PluginState` et tout namespace ajouté par le mod |
25| Fichiers dont le nom se termine par `.test.ts` ou `.test.tsx` | Non | Tests exécutés par [`claude plugin test`](/docs/fr/plugins/mods/test#write-a-test) |25| Fichiers dont le nom se termine par `.test.ts` ou `.test.tsx` | Non | Tests exécutés par [`claude plugin test`](https://code.claude.com/docs/fr/plugins/mods/test#write-a-test) |
26 26
27`register` reçoit `on` et `options`. `options` contient les valeurs des champs [`userConfig`](/docs/fr/plugins/components#user-configuration) déclarés par le manifeste, avec les valeurs par défaut renseignées.27`register` reçoit `on` et `options`. `options` contient les valeurs des champs [`userConfig`](https://code.claude.com/docs/fr/plugins/components#user-configuration) déclarés par le manifeste, avec les valeurs par défaut renseignées.
28 28
29## La fonction de hook29## La fonction de hook
30 30
31Un mod enregistre chacun de ses hooks, qui sont des gestionnaires d'événements, en appelant `on` à l'intérieur de `register`. `on` prend le nom de l'événement, un [matcher](/docs/fr/plugins/mods/events.md#filter-which-events-a-hook-handles) facultatif, qui est un filtre sur les champs de l'événement, et le hook, comme dans `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` renvoie un enregistrement doté d'une seule méthode, `.catch(handler)`, qui définit le [gestionnaire d'erreurs](/docs/fr/plugins/mods/events.md#handle-a-hook-that-fails) du hook.31Un mod enregistre chacun de ses hooks, qui sont des gestionnaires d'événements, en appelant `on` à l'intérieur de `register`. `on` prend le nom de l'événement, un [matcher](https://code.claude.com/docs/fr/plugins/mods/events.md#filter-which-events-a-hook-handles) facultatif, qui est un filtre sur les champs de l'événement, et le hook, comme dans `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` renvoie un enregistrement doté d'une seule méthode, `.catch(handler)`, qui définit le [gestionnaire d'erreurs](https://code.claude.com/docs/fr/plugins/mods/events.md#handle-a-hook-that-fails) du hook.
32 32
33| Argument | Ce que c'est |33| Argument | Ce que c'est |
34| :- | :- |34| :- | :- |
35| [`$`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | L'API des mods : chaque méthode de [Méthodes de l'API des mods](#mods-api-methods). Écrivez chaque appel en entier, namespace puis méthode, comme dans `$.fs.read('notes.md')`. |35| [`$`](https://code.claude.com/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | L'API des mods : chaque méthode de [Méthodes de l'API des mods](#mods-api-methods). Écrivez chaque appel en entier, namespace puis méthode, comme dans `$.fs.read('notes.md')`. |
36| [`e`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | L'entrée de l'événement, sous forme de données simples profondément figées. Pour la modifier, passez une copie à `next`. |36| [`e`](https://code.claude.com/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | L'entrée de l'événement, sous forme de données simples profondément figées. Pour la modifier, passez une copie à `next`. |
37| [`next(e)`](/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | Le gestionnaire suivant, comme dans un middleware. Exécute les hooks qui suivent celui-ci, puis le comportement de Claude Code. Se résout avec le résultat de l'événement. |37| [`next(e)`](https://code.claude.com/docs/fr/plugins/mods/events#how-a-hook-handles-an-event) | Le gestionnaire suivant, comme dans un middleware. Exécute les hooks qui suivent celui-ci, puis le comportement de Claude Code. Se résout avec le résultat de l'événement. |
38| [`next.signal`](/docs/fr/plugins/mods/api#stop-background-work) | Un `AbortSignal` qui s'interrompt lorsque l'événement est abandonné |38| [`next.signal`](https://code.claude.com/docs/fr/plugins/mods/api#stop-background-work) | Un `AbortSignal` qui s'interrompt lorsque l'événement est abandonné |
39| `next.origin` | `{ plugin, tier }` de l'émetteur de l'événement. Claude Code lui-même est `{ plugin: 'engine', tier: 'core' }`. Le `tier` d'un mod est son groupe de priorité dans [l'ordre d'exécution des mods](/docs/fr/plugins/mods/events.md#the-order-mods-run-in) : `prepend`, `user`, `append` ou `builtin`. |39| `next.origin` | `{ plugin, tier }` de l'émetteur de l'événement. Claude Code lui-même est `{ plugin: 'engine', tier: 'core' }`. Le `tier` d'un mod est son groupe de priorité dans [l'ordre d'exécution des mods](https://code.claude.com/docs/fr/plugins/mods/events.md#the-order-mods-run-in) : `prepend`, `user`, `append` ou `builtin`. |
40| `next.budget` | La limite de temps du hook en millisecondes : `next.budget.ms` est la limite totale, et `next.budget.remainingMs` est ce qui reste à cet instant |40| `next.budget` | La limite de temps du hook en millisecondes : `next.budget.ms` est la limite totale, et `next.budget.remainingMs` est ce qui reste à cet instant |
41| `next.to(e, tier)` | Passe directement à un tier ultérieur, qui est `append`, `builtin` ou `core`. `next.to(e, 'append')` ignore les mods installés par un utilisateur. Seul un mod présent dans `prependPlugins` ou `appendPlugins` peut l'appeler. |41| `next.to(e, tier)` | Passe directement à un tier ultérieur, qui est `append`, `builtin` ou `core`. `next.to(e, 'append')` ignore les mods installés par un utilisateur. Seul un mod présent dans `prependPlugins` ou `appendPlugins` peut l'appeler. |
42| `next.error` | Dans un gestionnaire `.catch` uniquement. `kind` vaut `throw` ou `timeout` lorsque le hook a échoué, et `message` est le texte de l'erreur. `kind` vaut `re-entry` lorsque le hook a été ignoré parce que l'événement provenait d'un appel à l'API des mods effectué par ce hook ou par le code de votre mod en dehors de ses hooks. `re-entry` nécessite Claude Code v2.1.292 ou une version ultérieure. |42| `next.error` | Dans un gestionnaire `.catch` uniquement. `kind` vaut `throw` ou `timeout` lorsque le hook a échoué, et `message` est le texte de l'erreur. `kind` vaut `re-entry` lorsque le hook a été ignoré parce que l'événement provenait d'un appel à l'API des mods effectué par ce hook ou par le code de votre mod en dehors de ses hooks. `re-entry` nécessite Claude Code v2.1.292 ou une version ultérieure. |
43| `next.error.cause` | Défini uniquement lorsque `kind` vaut `re-entry`. `rewritten` si un hook `tool.call` ou [`PreToolUse`](/docs/fr/hooks#pretooluse) a modifié l'appel à l'API des mods dont provenait l'événement, ou si un hook `agent.spawn` a modifié un agent démarré par cet appel. `lent` lorsqu'une méthode qu'un autre mod ajoute à l'API des mods a déclenché cet événement, sauf si `rewritten` s'applique également. `lent` nécessite Claude Code v2.1.292 ou une version ultérieure, et `rewritten` la v2.1.300 ou une version ultérieure. |43| `next.error.cause` | Défini uniquement lorsque `kind` vaut `re-entry`. `rewritten` si un hook `tool.call` ou [`PreToolUse`](https://code.claude.com/docs/fr/hooks#pretooluse) a modifié l'appel à l'API des mods dont provenait l'événement, ou si un hook `agent.spawn` a modifié un agent démarré par cet appel. `lent` lorsqu'une méthode qu'un autre mod ajoute à l'API des mods a déclenché cet événement, sauf si `rewritten` s'applique également. `lent` nécessite Claude Code v2.1.292 ou une version ultérieure, et `rewritten` la v2.1.300 ou une version ultérieure. |
44| `next.called` | Dans un gestionnaire `.catch` uniquement. `true` lorsque le hook avait appelé `next`. |44| `next.called` | Dans un gestionnaire `.catch` uniquement. `true` lorsque le hook avait appelé `next`. |
45 45
46## Événements46## Événements
55 55
56| Événement | Se déclenche lorsque | Un hook peut renvoyer |56| Événement | Se déclenche lorsque | Un hook peut renvoyer |
57| :- | :- | :- |57| :- | :- | :- |
58| [`tool.call`](/docs/fr/plugins/mods/events#guard-or-change-a-tool-call) | Un outil est sur le point de s'exécuter | `next(e)`, `{ deny: reason }` ou `{ result }` |58| [`tool.call`](https://code.claude.com/docs/fr/plugins/mods/events#guard-or-change-a-tool-call) | Un outil est sur le point de s'exécuter | `next(e)`, `{ deny: reason }` ou `{ result }` |
59| [`tool.check`](/docs/fr/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code décide si un appel d'outil peut s'exécuter, après les hooks `tool.call` et `PreToolUse`. `next(e)` se résout avec la décision à laquelle ont abouti les règles, le mode de permission et ces hooks. | `next(e)` ou `{ decision }`, avec `decision` défini sur `allow`, `ask` ou `deny` et un `reason` facultatif |59| [`tool.check`](https://code.claude.com/docs/fr/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code décide si un appel d'outil peut s'exécuter, après les hooks `tool.call` et `PreToolUse`. `next(e)` se résout avec la décision à laquelle ont abouti les règles, le mode de permission et ces hooks. | `next(e)` ou `{ decision }`, avec `decision` défini sur `allow`, `ask` ou `deny` et un `reason` facultatif |
60| `tool.describe` | Une fois pour chaque outil, lorsque sa description est envoyée à Claude pour la première fois. Une seconde fois pour un outil MCP lorsque Claude le charge via la [recherche d'outils](/docs/fr/mcp.md#scale-with-mcp-tool-search), avec `e.description` défini sur le texte que Claude lit pour l'outil chargé. | `{ description }`, avec éventuellement `isDeferred` défini sur `true` pour placer l'outil derrière la recherche d'outils ou sur `false` pour le charger dès le départ |60| `tool.describe` | Une fois pour chaque outil, lorsque sa description est envoyée à Claude pour la première fois. Une seconde fois pour un outil MCP lorsque Claude le charge via la [recherche d'outils](https://code.claude.com/docs/fr/mcp.md#scale-with-mcp-tool-search), avec `e.description` défini sur le texte que Claude lit pour l'outil chargé. | `{ description }`, avec éventuellement `isDeferred` défini sur `true` pour placer l'outil derrière la recherche d'outils ou sur `false` pour le charger dès le départ |
61 61
62#### Champs d'agent et d'organisation sur `tool.check`62#### Champs d'agent et d'organisation sur `tool.check`
63 63
64Dans un hook `tool.check`, lisez ces champs pour distinguer l'appel d'un sous-agent de celui de la conversation principale, et pour savoir si votre organisation exige une approbation pour un outil de connecteur :64Dans un hook `tool.check`, lisez ces champs pour distinguer l'appel d'un sous-agent de celui de la conversation principale, et pour savoir si votre organisation exige une approbation pour un outil de connecteur :
65 65
66* **`e.agentId`** : défini lorsqu'un [sous-agent](/docs/fr/sub-agents.md) ou un [coéquipier en cours de processus](/docs/fr/agent-teams.md#choose-a-display-mode) effectue l'appel, et absent lorsque c'est la conversation principale qui l'effectue66* **`e.agentId`** : défini lorsqu'un [sous-agent](https://code.claude.com/docs/fr/sub-agents.md) ou un [coéquipier en cours de processus](https://code.claude.com/docs/fr/agent-teams.md#choose-a-display-mode) effectue l'appel, et absent lorsque c'est la conversation principale qui l'effectue
67* **`e.ceiling`** : `ask` pour un outil de connecteur que votre organisation a défini sur `ask`, dans les [sessions où ce paramètre parvient à Claude Code](/docs/fr/mcp.md#organization-controls-on-connector-tools)67* **`e.ceiling`** : `ask` pour un outil de connecteur que votre organisation a défini sur `ask`, dans les [sessions où ce paramètre parvient à Claude Code](https://code.claude.com/docs/fr/mcp.md#organization-controls-on-connector-tools)
68 68
69Sur `tool.check`, `e.agentId` et `e.ceiling` nécessitent Claude Code v2.1.290 ou une version ultérieure.69Sur `tool.check`, `e.agentId` et `e.ceiling` nécessitent Claude Code v2.1.290 ou une version ultérieure.
70 70
71#### Le champ `e.isReadOnly` sur `tool.check`71#### Le champ `e.isReadOnly` sur `tool.check`
72 72
73Dans un hook `tool.check`, `e.isReadOnly` vaut `true` lorsque l'outil signale cet appel comme étant en lecture seule. Sinon, le champ est absent, et ne vaut pas `false`. La valeur correspond au propre signalement de l'outil : lisez donc [Vérifier si un appel d'outil est en lecture seule](/docs/fr/plugins/mods/events.md#check-whether-a-tool-call-is-read-only) avant d'approuver un appel sur la seule base de ce champ.73Dans un hook `tool.check`, `e.isReadOnly` vaut `true` lorsque l'outil signale cet appel comme étant en lecture seule. Sinon, le champ est absent, et ne vaut pas `false`. La valeur correspond au propre signalement de l'outil : lisez donc [Vérifier si un appel d'outil est en lecture seule](https://code.claude.com/docs/fr/plugins/mods/events.md#check-whether-a-tool-call-is-read-only) avant d'approuver un appel sur la seule base de ce champ.
74 74
75Sur `tool.check`, `e.isReadOnly` nécessite Claude Code v2.1.304 ou une version ultérieure.75Sur `tool.check`, `e.isReadOnly` nécessite Claude Code v2.1.304 ou une version ultérieure.
76 76
80 80
81| Événement | Se déclenche lorsque | Un hook peut renvoyer |81| Événement | Se déclenche lorsque | Un hook peut renvoyer |
82| :- | :- | :- |82| :- | :- | :- |
83| [`prompt.submit`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Un prompt est soumis | `next({ ...e, text })`, `next({ ...e, context })` ou `{ drop: reason }` |83| [`prompt.submit`](https://code.claude.com/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Un prompt est soumis | `next({ ...e, text })`, `next({ ...e, context })` ou `{ drop: reason }` |
84| `prompt.fill`, `prompt.suggest` | Du texte est sur le point d'être placé dans la zone de prompt en tant que brouillon, ou en tant que suggestion estompée | `next(e)` avec le texte modifié |84| `prompt.fill`, `prompt.suggest` | Du texte est sur le point d'être placé dans la zone de prompt en tant que brouillon, ou en tant que suggestion estompée | `next(e)` avec le texte modifié |
85| `prompt.edit` | L'utilisateur modifie la zone de prompt | `next(e)` |85| `prompt.edit` | L'utilisateur modifie la zone de prompt | `next(e)` |
86| `prompt.autocomplete` | L'utilisateur saisit du texte dans la zone de prompt et un mot se termine au niveau du curseur. `e.token` est ce mot. Claude Code n'attend pas le hook : ses propres lignes d'autocomplétion s'affichent en premier. | `{ suggestions }`, une liste de lignes `{ text, label, description }` affichées sous celles de Claude Code. Choisir une ligne remplace le mot par son `text`. |86| `prompt.autocomplete` | L'utilisateur saisit du texte dans la zone de prompt et un mot se termine au niveau du curseur. `e.token` est ce mot. Claude Code n'attend pas le hook : ses propres lignes d'autocomplétion s'affichent en premier. | `{ suggestions }`, une liste de lignes `{ text, label, description }` affichées sous celles de Claude Code. Choisir une ligne remplace le mot par son `text`. |
87| `prompt.compose` | Claude Code génère un prompt système | `{ sections }`, une liste de `{ id, text, scope }` dans l'ordre d'envoi |87| `prompt.compose` | Claude Code génère un prompt système | `{ sections }`, une liste de `{ id, text, scope }` dans l'ordre d'envoi |
88| [`prompt.section`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Une fois pour chaque section nommée du prompt système. `e.name` est l'`id` de la section dans `prompt.compose`. | `{ text }`, ou `{ text: null }` pour omettre la section |88| [`prompt.section`](https://code.claude.com/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Une fois pour chaque section nommée du prompt système. `e.name` est l'`id` de la section dans `prompt.compose`. | `{ text }`, ou `{ text: null }` pour omettre la section |
89| [`prompt.context`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Une fois pour chaque conversation, pour le contexte envoyé avec le premier message | `{ blocks }` |89| [`prompt.context`](https://code.claude.com/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Une fois pour chaque conversation, pour le contexte envoyé avec le premier message | `{ blocks }` |
90| `prompt.attachment` | Claude Code ajoute un message de sa propre initiative pour Claude, tel qu'un rappel. `e.type` nomme le type, et pour les types que déclarent les déclarations de types, `e.detail` contient les informations à partir desquelles le texte a été rédigé. | `{ text }`, ou `{ text: null }` pour l'omettre |90| `prompt.attachment` | Claude Code ajoute un message de sa propre initiative pour Claude, tel qu'un rappel. `e.type` nomme le type, et pour les types que déclarent les déclarations de types, `e.detail` contient les informations à partir desquelles le texte a été rédigé. | `{ text }`, ou `{ text: null }` pour l'omettre |
91| `prompt.mention` | Claude Code est sur le point de lire un fichier qu'un prompt mentionne avec @. Nécessite Claude Code v2.1.290 ou une version ultérieure. | `next({ ...e, path })` pour lire un autre fichier, ou `{ deny: reason }` |91| `prompt.mention` | Claude Code est sur le point de lire un fichier qu'un prompt mentionne avec @. Nécessite Claude Code v2.1.290 ou une version ultérieure. | `next({ ...e, path })` pour lire un autre fichier, ou `{ deny: reason }` |
92| [`skill.prompt`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Le texte d'un skill est développé pour Claude | `{ text }` |92| [`skill.prompt`](https://code.claude.com/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Le texte d'un skill est développé pour Claude | `{ text }` |
93| `attribution.text` | Claude Code compose le texte d'attribution d'un commit ou d'une pull request | `{ text }` |93| `attribution.text` | Claude Code compose le texte d'attribution d'un commit ou d'une pull request | `{ text }` |
94 94
95#### Champs de source et de frontmatter sur `skill.prompt`95#### Champs de source et de frontmatter sur `skill.prompt`
98 98
99| Champ | Type | Contenu |99| Champ | Type | Contenu |
100| :- | :- | :- |100| :- | :- | :- |
101| `e.source` | string | Qui fournit le skill : `policySettings`, `userSettings` ou `projectSettings` pour un skill situé respectivement à l'[emplacement](/docs/fr/skills.md#where-skills-live) entreprise, personnel ou projet. Les autres sources donnent un mot tel que `plugin`, `mcp`, `syncedSkills` ou `built-in`. |101| `e.source` | string | Qui fournit le skill : `policySettings`, `userSettings` ou `projectSettings` pour un skill situé respectivement à l'[emplacement](https://code.claude.com/docs/fr/skills.md#where-skills-live) entreprise, personnel ou projet. Les autres sources donnent un mot tel que `plugin`, `mcp`, `syncedSkills` ou `built-in`. |
102| `e.pluginName` | string | Le nom du plugin, pour un skill dont `e.source` vaut `plugin` |102| `e.pluginName` | string | Le nom du plugin, pour un skill dont `e.source` vaut `plugin` |
103| `e.path` | string | Le chemin absolu du fichier `SKILL.md` du skill, ou de son fichier `.md` pour un skill écrit sous forme de [fichier de commande](/docs/fr/skills.md#where-skills-live). Absent lorsque le skill n'a aucun fichier sur cette machine, comme c'est le cas pour un skill intégré. |103| `e.path` | string | Le chemin absolu du fichier `SKILL.md` du skill, ou de son fichier `.md` pour un skill écrit sous forme de [fichier de commande](https://code.claude.com/docs/fr/skills.md#where-skills-live). Absent lorsque le skill n'a aucun fichier sur cette machine, comme c'est le cas pour un skill intégré. |
104| `e.frontmatter` | object | Le frontmatter du fichier du skill, sous forme de données simples |104| `e.frontmatter` | object | Le frontmatter du fichier du skill, sous forme de données simples |
105| `e.frontmatterProblem` | string | La raison pour laquelle il manque à `e.frontmatter` le frontmatter du fichier ou l'une de ses clés, comme dans `is a list or a single value, not a table`. Absent lorsque `e.frontmatter` contient l'intégralité du frontmatter ou que le skill n'en a pas. |105| `e.frontmatterProblem` | string | La raison pour laquelle il manque à `e.frontmatter` le frontmatter du fichier ou l'une de ses clés, comme dans `is a list or a single value, not a table`. Absent lorsque `e.frontmatter` contient l'intégralité du frontmatter ou que le skill n'en a pas. |
106 106
107Un hook peut transmettre un `text` ou un `frontmatter` modifié à `next` : les hooks qui le suivent lisent les deux, et Claude lit le `text` final. Un hook qui modifie tout autre champ [échoue](/docs/fr/plugins/mods/events.md#handle-a-hook-that-fails).107Un hook peut transmettre un `text` ou un `frontmatter` modifié à `next` : les hooks qui le suivent lisent les deux, et Claude lit le `text` final. Un hook qui modifie tout autre champ [échoue](https://code.claude.com/docs/fr/plugins/mods/events.md#handle-a-hook-that-fails).
108 108
109Sur `skill.prompt`, `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` et `e.frontmatterProblem` nécessitent Claude Code v2.1.299 ou une version ultérieure.109Sur `skill.prompt`, `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` et `e.frontmatterProblem` nécessitent Claude Code v2.1.299 ou une version ultérieure.
110 110
114 114
115| Événement | Se déclenche lorsque | Un hook peut renvoyer |115| Événement | Se déclenche lorsque | Un hook peut renvoyer |
116| :- | :- | :- |116| :- | :- | :- |
117| [`command.run`](/docs/fr/plugins/mods/api#add-a-command) | Une commande est sur le point de s'exécuter | `{ text }`, `{}` ou `next(e)` |117| [`command.run`](https://code.claude.com/docs/fr/plugins/mods/api#add-a-command) | Une commande est sur le point de s'exécuter | `{ text }`, `{}` ou `next(e)` |
118| `command.describe` | Une fois pour chaque commande, pour la liste des commandes | `{ description, argumentHint, isHidden }` |118| `command.describe` | Une fois pour chaque commande, pour la liste des commandes | `{ description, argumentHint, isHidden }` |
119| `config.set` | Une ligne de `/config` est sur le point de changer | `next({ ...e, value })` ou `{ deny: reason }` |119| `config.set` | Une ligne de `/config` est sur le point de changer | `next({ ...e, value })` ou `{ deny: reason }` |
120| `config.describe` | Une fois pour chaque ligne de `/config` | `{ label, description, isHidden }` |120| `config.describe` | Une fois pour chaque ligne de `/config` | `{ label, description, isHidden }` |
125 125
126| Événement | Se déclenche lorsque | Un hook peut renvoyer |126| Événement | Se déclenche lorsque | Un hook peut renvoyer |
127| :- | :- | :- |127| :- | :- | :- |
128| [`turn.start`](/docs/fr/plugins/mods/events#follow-a-turn) | Un tour commence | `next(e)` |128| [`turn.start`](https://code.claude.com/docs/fr/plugins/mods/events#follow-a-turn) | Un tour commence | `next(e)` |
129| [`turn.step`](/docs/fr/plugins/mods/events#follow-a-turn) | Une requête est sur le point d'être envoyée au modèle | `yield* next(e)`, ou `next({ ...e, model })`, `next({ ...e, effort })` |129| [`turn.step`](https://code.claude.com/docs/fr/plugins/mods/events#follow-a-turn) | Une requête est sur le point d'être envoyée au modèle | `yield* next(e)`, ou `next({ ...e, model })`, `next({ ...e, effort })` |
130| [`turn.complete`](/docs/fr/plugins/mods/events#follow-a-turn) | Un tour s'est terminé | `next(e)`, ou `{ text }` pour afficher une ligne sous la réponse |130| [`turn.complete`](https://code.claude.com/docs/fr/plugins/mods/events#follow-a-turn) | Un tour s'est terminé | `next(e)`, ou `{ text }` pour afficher une ligne sous la réponse |
131 131
132### Session132### Session
133 133
135 135
136| Événement | Se déclenche lorsque | Un hook peut renvoyer |136| Événement | Se déclenche lorsque | Un hook peut renvoyer |
137| :- | :- | :- |137| :- | :- | :- |
138| [`session.start`](/docs/fr/plugins/mods/api#add-a-command-or-a-tool) | Une fois pour chaque mod chargé, avant le premier prompt, puis à nouveau après un rechargement de ce mod. Pas après `/clear`, `/resume` ou `/branch`. | `next(e)` |138| [`session.start`](https://code.claude.com/docs/fr/plugins/mods/api#add-a-command-or-a-tool) | Une fois pour chaque mod chargé, avant le premier prompt, puis à nouveau après un rechargement de ce mod. Pas après `/clear`, `/resume` ou `/branch`. | `next(e)` |
139| `session.end` | La session se termine, ou `/clear`, `/resume` ou `/branch` s'exécute. `e.reason` vaut `clear`, `resume`, `logout`, `prompt_input_exit` ou `other`. `/branch` signale `resume`. | `next(e)` |139| `session.end` | La session se termine, ou `/clear`, `/resume` ou `/branch` s'exécute. `e.reason` vaut `clear`, `resume`, `logout`, `prompt_input_exit` ou `other`. `/branch` signale `resume`. | `next(e)` |
140| `session.compact` | La conversation est sur le point d'être compactée | `{ skip: reason }` |140| `session.compact` | La conversation est sur le point d'être compactée | `{ skip: reason }` |
141| [`session.receive`](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions) | Un message arrive d'un autre agent ou d'une autre session, ou est sur le point d'y être envoyé. Consultez [Envoyer et recevoir des messages entre sessions](/docs/fr/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` pour `receive`, `{ isDelivered: false, reason }` pour `send` |141| [`session.receive`](https://code.claude.com/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](https://code.claude.com/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions) | Un message arrive d'un autre agent ou d'une autre session, ou est sur le point d'y être envoyé. Consultez [Envoyer et recevoir des messages entre sessions](https://code.claude.com/docs/fr/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` pour `receive`, `{ isDelivered: false, reason }` pour `send` |
142| `session.append` | Une fois pour chaque ligne conservée par la conversation, telle qu'un prompt, un bloc de réponse, un résultat d'outil ou une notification, avant son stockage | `next({ ...e, message })` avec un `message.content` modifié, pour réécrire les blocs de texte de la ligne ou le `content` d'un bloc `tool_result` qu'elle contient |142| `session.append` | Une fois pour chaque ligne conservée par la conversation, telle qu'un prompt, un bloc de réponse, un résultat d'outil ou une notification, avant son stockage | `next({ ...e, message })` avec un `message.content` modifié, pour réécrire les blocs de texte de la ligne ou le `content` d'un bloc `tool_result` qu'elle contient |
143| `session.attach`, `session.detach` | Une autre application se connecte à la session ou s'en déconnecte | `next(e)` |143| `session.attach`, `session.detach` | Une autre application se connecte à la session ou s'en déconnecte | `next(e)` |
144| `session.measure` | Après chaque tour, et lorsque le pourcentage utilisé d'une limite de forfait change | `next(e)` |144| `session.measure` | Après chaque tour, et lorsque le pourcentage utilisé d'une limite de forfait change | `next(e)` |
150| Événement | Se déclenche lorsque | Un hook peut renvoyer |150| Événement | Se déclenche lorsque | Un hook peut renvoyer |
151| :- | :- | :- |151| :- | :- | :- |
152| `agent.offer` | Un type de sous-agent est proposé à Claude | `{ isOffered: false }` pour le retenir |152| `agent.offer` | Un type de sous-agent est proposé à Claude | `{ isOffered: false }` pour le retenir |
153| `agent.spawn` | Un sous-agent ou un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams.md) est sur le point de démarrer. Pour un coéquipier, `e.isTeammate` vaut `true`. | `next({ ...e, model })` pour choisir son modèle, ou `{ deny: reason }` |153| `agent.spawn` | Un sous-agent ou un coéquipier d'une [équipe d'agents](https://code.claude.com/docs/fr/agent-teams.md) est sur le point de démarrer. Pour un coéquipier, `e.isTeammate` vaut `true`. | `next({ ...e, model })` pour choisir son modèle, ou `{ deny: reason }` |
154 154
155Lorsque Claude reprend un sous-agent avec l'outil [`SendMessage`](/docs/fr/sub-agents#resume-subagents), votre hook `agent.spawn` ne s'exécute pas à nouveau. Pour refuser les appels `SendMessage` qui reprennent un sous-agent, ciblez cet outil dans un hook [`tool.call`](/docs/fr/plugins/mods/events#guard-or-change-a-tool-call).155Lorsque Claude reprend un sous-agent avec l'outil [`SendMessage`](https://code.claude.com/docs/fr/sub-agents#resume-subagents), votre hook `agent.spawn` ne s'exécute pas à nouveau. Pour refuser les appels `SendMessage` qui reprennent un sous-agent, ciblez cet outil dans un hook [`tool.call`](https://code.claude.com/docs/fr/plugins/mods/events#guard-or-change-a-tool-call).
156 156
157### Interface157### Interface
158 158
159Les événements d'interface se déclenchent lorsque Claude Code dessine un point de rendu et lorsque l'utilisateur utilise un contrôle dessiné par un mod. [Dessiner dans l'interface](/docs/fr/plugins/mods/interface.md) montre ce que renvoie un hook `ui.render` :159Les événements d'interface se déclenchent lorsque Claude Code dessine un point de rendu et lorsque l'utilisateur utilise un contrôle dessiné par un mod. [Dessiner dans l'interface](https://code.claude.com/docs/fr/plugins/mods/interface.md) montre ce que renvoie un hook `ui.render` :
160 160
161| Événement | Se déclenche lorsque |161| Événement | Se déclenche lorsque |
162| :- | :- |162| :- | :- |
163| [`ui.render`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | Un [point de rendu](#render-sites) est sur le point d'être dessiné |163| [`ui.render`](https://code.claude.com/docs/fr/plugins/mods/interface#pick-where-to-draw) | Un [point de rendu](#render-sites) est sur le point d'être dessiné |
164| `ui.resolve` | Les mods se chargent, une fois pour chaque application, point de rendu et mod. Le résultat est la table d'éléments que lit `$.ui.resolve(e)`. |164| `ui.resolve` | Les mods se chargent, une fois pour chaque application, point de rendu et mod. Le résultat est la table d'éléments que lit `$.ui.resolve(e)`. |
165| [`ui.press`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | Un `Button`, un `Input` ou un `Select` dessiné par un mod est utilisé |165| [`ui.press`](https://code.claude.com/docs/fr/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](https://code.claude.com/docs/fr/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](https://code.claude.com/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | Un `Button`, un `Input` ou un `Select` dessiné par un mod est utilisé |
166| `ui.focus`, `ui.scroll` | Le contrôle ayant le focus ou la position de défilement d'un volet ou du bandeau est sur le point de changer |166| `ui.focus`, `ui.scroll` | Le contrôle ayant le focus ou la position de défilement d'un volet ou du bandeau est sur le point de changer |
167| `ui.close` | Un volet est sur le point de se fermer. `e.id` est le volet et `e.origin.kind` vaut `plugin`, `person` ou `unload`. |167| `ui.close` | Un volet est sur le point de se fermer. `e.id` est le volet et `e.origin.kind` vaut `plugin`, `person` ou `unload`. |
168| [`ui.message`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | Un élément `Client` envoie des données à son mod |168| [`ui.message`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | Un élément `Client` envoie des données à son mod |
169| [`ui.fault`](/docs/fr/plugins/mods/interface#redraw-when-something-changes) | Un élément `Client` dessiné par votre mod n'a pas pu se charger, se dessiner ou s'exécuter. `e.phase` vaut `load`, `render` ou `run`, et `e.reason` est le message d'erreur. Nécessite Claude Code v2.1.289 ou une version ultérieure. |169| [`ui.fault`](https://code.claude.com/docs/fr/plugins/mods/interface#redraw-when-something-changes) | Un élément `Client` dessiné par votre mod n'a pas pu se charger, se dessiner ou s'exécuter. `e.phase` vaut `load`, `render` ou `run`, et `e.reason` est le message d'erreur. Nécessite Claude Code v2.1.289 ou une version ultérieure. |
170 170
171### Autres mods171### Autres mods
172 172
174 174
175| Événement | Se déclenche lorsque | Un hook peut renvoyer |175| Événement | Se déclenche lorsque | Un hook peut renvoyer |
176| :- | :- | :- |176| :- | :- | :- |
177| [`plugin.register`](/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un module de hooks est sur le point de se charger. `e.uses` liste ses événements, ses appels à l'API des mods, ses variables d'environnement et son état, tels que `claude plugin validate` les affiche. Chaque appel est écrit sans le préfixe `$.`, comme `fs.read`. | `{ refuse: reason }` |177| [`plugin.register`](https://code.claude.com/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un module de hooks est sur le point de se charger. `e.uses` liste ses événements, ses appels à l'API des mods, ses variables d'environnement et son état, tels que `claude plugin validate` les affiche. Chaque appel est écrit sans le préfixe `$.`, comme `fs.read`. | `{ refuse: reason }` |
178| `engine.create` | L'API des mods est en cours de construction pour ce mod | Une API des mods modifiée, pour ajouter un namespace. Un mod en dehors du [niveau](#the-hook-function) `user` peut également en retenir un. |178| `engine.create` | L'API des mods est en cours de construction pour ce mod | Une API des mods modifiée, pour ajouter un namespace. Un mod en dehors du [niveau](#the-hook-function) `user` peut également en retenir un. |
179 179
180Lorsque le hook d'un autre mod appelle une méthode sur un namespace que vous avez ajouté dans `engine.create`, les appels `$` de votre méthode s'exécutent dans le contexte de ce hook jusqu'à ce que chaque hook sur cet événement ait renvoyé son résultat. Par exemple, un chemin relatif est résolu par rapport au répertoire de travail de ce hook, et `$.prompt.submit` est rejeté tant que le tour attend ce hook. Les appels que votre méthode effectue ensuite s'exécutent dans le contexte propre de votre mod.180Lorsque le hook d'un autre mod appelle une méthode sur un namespace que vous avez ajouté dans `engine.create`, les appels `$` de votre méthode s'exécutent dans le contexte de ce hook jusqu'à ce que chaque hook sur cet événement ait renvoyé son résultat. Par exemple, un chemin relatif est résolu par rapport au répertoire de travail de ce hook, et `$.prompt.submit` est rejeté tant que le tour attend ce hook. Les appels que votre méthode effectue ensuite s'exécutent dans le contexte propre de votre mod.
189 189
190### Événements des hooks de paramètres190### Événements des hooks de paramètres
191 191
192Chaque [événement de hook de paramètres](/docs/fr/hooks.md#hook-events) est un événement nommé `classic.<Event>`, tel que `classic.Stop` ou `classic.PostToolUse`. `e` est le JSON stdin du hook.192Chaque [événement de hook de paramètres](https://code.claude.com/docs/fr/hooks.md#hook-events) est un événement nommé `classic.<Event>`, tel que `classic.Stop` ou `classic.PostToolUse`. `e` est le JSON stdin du hook.
193 193
194### Appels à l'API des mods194### Appels à l'API des mods
195 195
197 197
198## Méthodes de l'API des mods198## Méthodes de l'API des mods
199 199
200L'API des mods est l'argument `$` que reçoit chaque hook. Ses méthodes sont regroupées en namespaces, comme `$.ui`. Ce tableau liste les méthodes de chaque namespace par nom : ainsi, `open` dans la ligne `$.ui` correspond à l'appel `$.ui.open(...)`. Les guides montrent les plus courantes en action, et [les types pour votre build](/docs/fr/plugins/mods/create.md#get-the-types-for-your-build) documentent chaque méthode avec un exemple.200L'API des mods est l'argument `$` que reçoit chaque hook. Ses méthodes sont regroupées en namespaces, comme `$.ui`. Ce tableau liste les méthodes de chaque namespace par nom : ainsi, `open` dans la ligne `$.ui` correspond à l'appel `$.ui.open(...)`. Les guides montrent les plus courantes en action, et [les types pour votre build](https://code.claude.com/docs/fr/plugins/mods/create.md#get-the-types-for-your-build) documentent chaque méthode avec un exemple.
201 201
202| Namespace | Méthodes |202| Namespace | Méthodes |
203| :- | :- |203| :- | :- |
204| `$.plugin` | `name`, `root` : le nom et le répertoire de ce plugin |204| `$.plugin` | `name`, `root` : le nom et le répertoire de ce plugin |
205| [`$.ui`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `notify`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |205| [`$.ui`](https://code.claude.com/docs/fr/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `notify`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |
206| [`$.command`](/docs/fr/plugins/mods/api#add-a-command) | `register`, `run`, `list` |206| [`$.command`](https://code.claude.com/docs/fr/plugins/mods/api#add-a-command) | `register`, `run`, `list` |
207| [`$.tool`](/docs/fr/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |207| [`$.tool`](https://code.claude.com/docs/fr/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |
208| `$.agent` | `register`, `spawn`, `list`. `list()` renvoie les sous-agents et coéquipiers de cette session, chacun avec un `status` parmi `pending`, `running`, `waiting`, `idle`, `completed`, `failed` ou `killed`, où `idle` et `waiting` nécessitent Claude Code v2.1.289 ou une version ultérieure. |208| `$.agent` | `register`, `spawn`, `list`. `list()` renvoie les sous-agents et coéquipiers de cette session, chacun avec un `status` parmi `pending`, `running`, `waiting`, `idle`, `completed`, `failed` ou `killed`, où `idle` et `waiting` nécessitent Claude Code v2.1.289 ou une version ultérieure. |
209| [`$.model`](/docs/fr/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |209| [`$.model`](https://code.claude.com/docs/fr/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |
210| [`$.prompt`](/docs/fr/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude lit le texte de `submit({ text })` après une phrase qui désigne votre mod comme expéditeur. `submit({ text, asUser: true })` envoie le texte comme s'il s'agissait des propres mots de l'utilisateur, sans cette phrase. |210| [`$.prompt`](https://code.claude.com/docs/fr/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude lit le texte de `submit({ text })` après une phrase qui désigne votre mod comme expéditeur. `submit({ text, asUser: true })` envoie le texte comme s'il s'agissait des propres mots de l'utilisateur, sans cette phrase. |
211| `$.turn` | `abort` |211| `$.turn` | `abort` |
212| [`$.session`](/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` renvoie `{ startedAt, context, rateLimits, cost }` : `context` contient `tokens`, `window` et `percent`, et `rateLimits` est une liste de `{ kind, percentUsed, resetsAt }`. |212| [`$.session`](https://code.claude.com/docs/fr/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` renvoie `{ startedAt, context, rateLimits, cost }` : `context` contient `tokens`, `window` et `percent`, et `rateLimits` est une liste de `{ kind, percentUsed, resetsAt }`. |
213| `$.config` | `list`, `set` |213| `$.config` | `list`, `set` |
214| [`$.settings`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `read` |214| [`$.settings`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `read` |
215| [`$.env`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |215| [`$.env`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |
216| [`$.fs`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` n'est pas atomique : il remplace le contenu du fichier sur place, de sorte qu'un autre processus peut lire un fichier partiellement écrit. Conservez dans `$.store` les données que plusieurs sessions modifient. |216| [`$.fs`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` n'est pas atomique : il remplace le contenu du fichier sur place, de sorte qu'un autre processus peut lire un fichier partiellement écrit. Conservez dans `$.store` les données que plusieurs sessions modifient. |
217| [`$.store`](/docs/fr/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Un magasin clé-valeur partagé par toutes les sessions de la machine. Consultez [Enregistrer depuis plusieurs sessions](/docs/fr/plugins/mods/interface.md#save-from-more-than-one-session). |217| [`$.store`](https://code.claude.com/docs/fr/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Un magasin clé-valeur partagé par toutes les sessions de la machine. Consultez [Enregistrer depuis plusieurs sessions](https://code.claude.com/docs/fr/plugins/mods/interface.md#save-from-more-than-one-session). |
218| [`$.state`](/docs/fr/plugins/mods/interface#keep-a-value-in-\$-state) | État réactif : `get`, `set`, avec les helpers `atom`, `read`, `update`, `derive` et `memberOf` importés depuis `claude-code` |218| [`$.state`](https://code.claude.com/docs/fr/plugins/mods/interface#keep-a-value-in-\$-state) | État réactif : `get`, `set`, avec les helpers `atom`, `read`, `update`, `derive` et `memberOf` importés depuis `claude-code` |
219| [`$.clock`](/docs/fr/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |219| [`$.clock`](https://code.claude.com/docs/fr/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |
220| [`$.http`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |220| [`$.http`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |
221| [`$.process`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |221| [`$.process`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |
222| [`$.mcp`](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` connecte un serveur MCP listé par le manifeste de votre propre plugin. |222| [`$.mcp`](https://code.claude.com/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` connecte un serveur MCP listé par le manifeste de votre propre plugin. |
223| `$.audio` | `play`, `speak` |223| `$.audio` | `play`, `speak` |
224| `$.telemetry` | `log`, `mark`. Un enregistrement n'est envoyé que lorsque l'appel est effectué par Claude Code ou par un mod intégré. |224| `$.telemetry` | `log`, `mark`. Un enregistrement n'est envoyé que lorsque l'appel est effectué par Claude Code ou par un mod intégré. |
225 225
226## Points de rendu226## Points de rendu
227 227
228Un point de rendu est un point d'extension de l'interface de Claude Code. Chaque ligne est une valeur de `e.component` dans un hook `ui.render`, avec les champs de `e.props` et les applications qui l'affichent. `e.surface` indique l'application qui dessine, par exemple `terminal`, `desktop` ou `vscode`. [Modifier ce que Claude Code dessine déjà](/docs/fr/plugins/mods/interface.md#change-what-claude-code-already-draws) montre ce qu'un hook peut faire à un point de rendu, avec un exemple pour chaque option.228Un point de rendu est un point d'extension de l'interface de Claude Code. Chaque ligne est une valeur de `e.component` dans un hook `ui.render`, avec les champs de `e.props` et les applications qui l'affichent. `e.surface` indique l'application qui dessine, par exemple `terminal`, `desktop` ou `vscode`. [Modifier ce que Claude Code dessine déjà](https://code.claude.com/docs/fr/plugins/mods/interface.md#change-what-claude-code-already-draws) montre ce qu'un hook peut faire à un point de rendu, avec un exemple pour chaque option.
229 229
230Le rendu dans l'extension VS Code nécessite la version 2.1.299 ou ultérieure de l'extension. Une session qui [ne récupère pas les feature flags](/docs/fr/env-vars.md#features-that-need-feature-flag-fetching) nécessite la version 2.1.304 ou ultérieure. [Dessiner dans l'extension VS Code](/docs/fr/plugins/mods/interface.md#draw-in-the-vs-code-extension) liste ce que l'extension dessine différemment.230Le rendu dans l'extension VS Code nécessite la version 2.1.299 ou ultérieure de l'extension. Une session qui [ne récupère pas les feature flags](https://code.claude.com/docs/fr/env-vars.md#features-that-need-feature-flag-fetching) nécessite la version 2.1.304 ou ultérieure. [Dessiner dans l'extension VS Code](https://code.claude.com/docs/fr/plugins/mods/interface.md#draw-in-the-vs-code-extension) liste ce que l'extension dessine différemment.
231 231
232| Point de rendu | `e.props` | `e.requestId` | Affiché dans |232| Point de rendu | `e.props` | `e.requestId` | Affiché dans |
233| :- | :- | :- | :- |233| :- | :- | :- | :- |
234| [`Pane`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` du volet | Terminal, Desktop, VS Code |234| [`Pane`](https://code.claude.com/docs/fr/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` du volet | Terminal, Desktop, VS Code |
235| [`AbovePrompt`](/docs/fr/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Une seule instance | Terminal, Desktop |235| [`AbovePrompt`](https://code.claude.com/docs/fr/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Une seule instance | Terminal, Desktop |
236| `UserMessage` | `text`, `origin`, `isExpanded`, et `task` ou `from` selon l'origine | L'id du message | Terminal, Desktop, VS Code |236| `UserMessage` | `text`, `origin`, `isExpanded`, et `task` ou `from` selon l'origine | L'id du message | Terminal, Desktop, VS Code |
237| `AssistantMessage` | Le texte de la réponse | L'id du message | Terminal, Desktop, VS Code |237| `AssistantMessage` | Le texte de la réponse | L'id du message | Terminal, Desktop, VS Code |
238| `ToolUse`, `ToolResult`, `ToolGroup` | Le nom, l'entrée et le résultat de l'outil | L'id de l'appel d'outil | Terminal, Desktop, VS Code |238| `ToolUse`, `ToolResult`, `ToolGroup` | Le nom, l'entrée et le résultat de l'outil | L'id de l'appel d'outil | Terminal, Desktop, VS Code |
239| `CommandOutput` | `command`, `text` | L'id du message | Terminal, Desktop |239| `CommandOutput` | `command`, `text` | L'id du message | Terminal, Desktop |
240| [`AskUserQuestion`](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) | La question et les options | L'id de l'appel d'outil | Terminal, Desktop, VS Code |240| [`AskUserQuestion`](https://code.claude.com/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) | La question et les options | L'id de l'appel d'outil | Terminal, Desktop, VS Code |
241| `ToolProgress` | `kind` | L'id de l'appel d'outil | Terminal |241| `ToolProgress` | `kind` | L'id de l'appel d'outil | Terminal |
242| [`Spinner`](/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | L'id de l'agent | Terminal, Desktop, VS Code |242| [`Spinner`](https://code.claude.com/docs/fr/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | L'id de l'agent | Terminal, Desktop, VS Code |
243| `TurnDuration` | `word`, `durationMs` | L'id du message | Terminal |243| `TurnDuration` | `word`, `durationMs` | L'id du message | Terminal |
244| `InfoNotice` | `text`, `command` | L'id du message | Terminal |244| `InfoNotice` | `text`, `command` | L'id du message | Terminal |
245| `SessionMode` | `modes` | Une seule instance | Terminal, Desktop |245| `SessionMode` | `modes` | Une seule instance | Terminal, Desktop |
251 251
252* **Largeur d'un `Pane` ou du bandeau** : dessinez selon `e.props.bodyColumns`252* **Largeur d'un `Pane` ou du bandeau** : dessinez selon `e.props.bodyColumns`
253* **Hauteur d'un `Pane` à côté de la transcription** : lorsque `e.props.placement` vaut `'dock'`, `e.props.scroll.bodyRows` est le nombre de lignes dont dispose le volet pour votre arbre253* **Hauteur d'un `Pane` à côté de la transcription** : lorsque `e.props.placement` vaut `'dock'`, `e.props.scroll.bodyRows` est le nombre de lignes dont dispose le volet pour votre arbre
254* **Hauteur d'un `Pane` au-dessus du prompt** : lorsque `e.props.placement` vaut `'inline'`, le volet s'agrandit avec votre arbre jusqu'à une limite, et `bodyRows` correspond à cette limite. Le [champ `rows` de `$.ui.open`](/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time) permet de demander une limite différente.254* **Hauteur d'un `Pane` au-dessus du prompt** : lorsque `e.props.placement` vaut `'inline'`, le volet s'agrandit avec votre arbre jusqu'à une limite, et `bodyRows` correspond à cette limite. Le [champ `rows` de `$.ui.open`](https://code.claude.com/docs/fr/plugins/mods/interface#open-a-pane-at-the-right-time) permet de demander une limite différente.
255 255
256Un arbre plus haut que le volet défile d'un seul bloc.256Un arbre plus haut que le volet défile d'un seul bloc.
257 257
258## Éléments258## Éléments
259 259
260Les éléments sont les briques de l'arbre que renvoie un hook `ui.render`, et vous les obtenez à partir de `$.ui.resolve(e)`. [Construire un arbre à partir d'éléments](/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) présente les plus courants avec leur rendu dans le terminal, et la [galerie d'interface](/docs/fr/plugins/mods/gallery.md) contient des captures d'écran de la plupart d'entre eux. Une coche signifie que l'application peut dessiner l'élément.260Les éléments sont les briques de l'arbre que renvoie un hook `ui.render`, et vous les obtenez à partir de `$.ui.resolve(e)`. [Construire un arbre à partir d'éléments](https://code.claude.com/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) présente les plus courants avec leur rendu dans le terminal, et la [galerie d'interface](https://code.claude.com/docs/fr/plugins/mods/gallery.md) contient des captures d'écran de la plupart d'entre eux. Une coche signifie que l'application peut dessiner l'élément.
261 261
262| Élément | Props principales | Terminal | Desktop | VS Code |262| Élément | Props principales | Terminal | Desktop | VS Code |
263| :- | :- | :-: | :-: | :-: |263| :- | :- | :-: | :-: | :-: |
264| [`Box`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ | ✓ |264| [`Box`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `key`, disposition flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |
265| [`Text`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography) | ✓ | ✓ | ✓ |265| [`Text`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |
266| [`Button`](/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ | ✓ |266| [`Button`](https://code.claude.com/docs/fr/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |
267| [`Link`](/docs/fr/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consultez [Limites](#limits). | ✓ | ✓ | ✓ |267| [`Link`](https://code.claude.com/docs/fr/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consultez [Limites](#limits). | ✓ | ✓ | ✓ |
268| [`Code`](/docs/fr/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |268| [`Code`](https://code.claude.com/docs/fr/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |
269| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |269| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |
270| [`Input`](/docs/fr/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |270| [`Input`](https://code.claude.com/docs/fr/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |
271| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |271| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |
272| `Svg` | Un document SVG, jusqu'à 131 072 caractères | | ✓ | ✓ |272| `Svg` | Une `source` de balisage SVG jusqu'à 131 072 caractères, un texte `alt`, `width`, `height` et `isInteractive` | | ✓ | ✓ |
273| [`Client`](/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key` | ✓ | ✓ | |273| [`Client`](https://code.claude.com/docs/fr/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |
274| [`Raster`](/docs/fr/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` jusqu'à 512, `rows` jusqu'à 256, `cells`. Consultez [Dessiner une grille de cellules colorées](/docs/fr/plugins/mods/interface.md#draw-a-grid-of-colored-cells). | ✓ | | |274| [`Raster`](https://code.claude.com/docs/fr/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` jusqu'à 512, `rows` jusqu'à 256, `cells`. Consultez [Dessiner une grille de cellules colorées](https://code.claude.com/docs/fr/plugins/mods/interface.md#draw-a-grid-of-colored-cells). | ✓ | | |
275| `Image` | Octets PNG ou RGBA jusqu'à 2 Mio, ou un chemin de fichier, `columns` et `rows` jusqu'à 255, et un texte `alt`. Consultez [les terminaux qui le dessinent](/docs/fr/plugins/mods/gallery.md#image-and-client). | ✓ | | |275| `Image` | `key`, une `source` telle que des octets PNG ou RGBA jusqu'à 2 Mio, ou un chemin de fichier, `columns` et `rows` jusqu'à 255, et un texte `alt`. Consultez [les terminaux qui le dessinent](https://code.claude.com/docs/fr/plugins/mods/gallery.md#image-and-client). | ✓ | | |
276 276
277Autres règles pour `Button` : `action` nomme l'une des propres [actions de raccourci clavier](/docs/fr/keybindings.md) de Claude Code, et le raccourci de l'utilisateur pour cette action presse le bouton lorsque ce raccourci est une combinaison de touches ou une touche avec modificateur. Un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause. Lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient. `autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.277Autres règles pour `Button` :
278
279* **`action`** : nomme l'une des propres [actions de raccourci clavier](https://code.claude.com/docs/fr/keybindings.md) de Claude Code, et le raccourci de l'utilisateur pour cette action presse le bouton lorsque ce raccourci est une combinaison de touches ou une touche avec modificateur
280* **Hotkeys numériques dans le bandeau** : un `hotkey` numérique sur un bouton du bandeau se déclenche aussi lorsque l'utilisateur tape ce seul chiffre dans un prompt vide puis marque une pause
281* **Un bandeau réduit** : tant que le bandeau est [réduit](https://code.claude.com/docs/fr/plugins/mods/interface.md#when-the-user-collapses-the-band), ni un raccourci `action` ni un hotkey ne presse un bouton qu'il contient
282* **Deux boutons sur un même hotkey** : lorsque deux boutons d'un même dessin désignent le même `hotkey`, c'est le dernier qui l'obtient
283
284`autoFocus` n'accepte que `true` sur tout contrôle : omettez donc la prop pour le désactiver.
278 285
279L'extension VS Code ignore certaines props d'éléments et dessine l'élément comme si vous les aviez omises :286L'extension VS Code ignore certaines props d'éléments et dessine l'élément comme si vous les aviez omises :
280 287
281* **`Box`** : `position` et `hover`288* **`Box`** : `position` avec ses `top`, `left`, `right` et `bottom`, `alignSelf`, `borderDimColor` et `hover`
282* **`Text`** : `size`, `mono` et `tabular`289* **`Text`** : `size`, `mono`, `tabular` et `hover`
283* **`Button`** : `hotkey`, `plain`, `autoFocus` et `action` ; l'utilisateur y presse donc un bouton d'un clic, ou avec Entrée une fois que le bouton a le focus290* **`Button`** : `hotkey`, `plain`, `autoFocus`, `action` et `hover` ; l'utilisateur y presse donc un bouton d'un clic, ou avec Entrée une fois que le bouton a le focus
284* **`Code`** : `language`, `path`, `startLine`, `format` et `wrap` ; le code est donc dessiné sans couleurs ni numéros de ligne, et un bloc `format: 'diff'` affiche le texte brut du diff291* **`Code`** : `language`, `path`, `startLine`, `format` et `wrap` ; le code est donc dessiné sans couleurs ni numéros de ligne, et un bloc `format: 'diff'` affiche le texte brut du diff
285* **`Input` et `Select`** : `autoFocus`292* **`Input` et `Select`** : `autoFocus`
293* **`Svg`** : `isInteractive`
286 294
287### Styles de bordure de `Box`295### Styles de bordure de `Box`
288 296
317 325
318Si vous définissez `gap`, `padding` ou `margin` sur un pas, celui-ci s'applique à la fois en largeur et en hauteur. Par exemple, dans le terminal et l'extension VS Code, `padding: 'md'` correspond à deux cellules de chaque côté et à une ligne au-dessus et en dessous.326Si vous définissez `gap`, `padding` ou `margin` sur un pas, celui-ci s'applique à la fois en largeur et en hauteur. Par exemple, dans le terminal et l'extension VS Code, `padding: 'md'` correspond à deux cellules de chaque côté et à une ligne au-dessus et en dessous.
319 327
320Les noms de pas nécessitent Claude Code v2.1.299 ou une version ultérieure. Sur une version antérieure, Claude Code [dessine sa propre version du site](/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) à la place d'un arbre qui utilise un nom de pas.328Les noms de pas nécessitent Claude Code v2.1.299 ou une version ultérieure. Sur une version antérieure, Claude Code [dessine sa propre version du site](https://code.claude.com/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) à la place d'un arbre qui utilise un nom de pas.
321 329
322### Props typographiques de `Text`330### Props typographiques de `Text`
323 331
330| `mono` | `true` pour demander la police à chasse fixe de l'application | Ignorée : le terminal est toujours à chasse fixe | Ignorée, le texte conserve donc la police propre à l'extension |338| `mono` | `true` pour demander la police à chasse fixe de l'application | Ignorée : le terminal est toujours à chasse fixe | Ignorée, le texte conserve donc la police propre à l'extension |
331| `tabular` | `true` pour demander des chiffres de largeur égale, afin qu'un nombre mis à jour sur place ou une colonne de nombres reste aligné | Ignorée : les chiffres du terminal occupent déjà une cellule chacun | Ignorée |339| `tabular` | `true` pour demander des chiffres de largeur égale, afin qu'un nombre mis à jour sur place ou une colonne de nombres reste aligné | Ignorée : les chiffres du terminal occupent déjà une cellule chacun | Ignorée |
332 340
333Ces quatre props nécessitent Claude Code v2.1.299 ou une version ultérieure. Sur une version antérieure, Claude Code [dessine sa propre version du site](/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) à la place d'un arbre qui définit `size`, `weight`, `mono` ou `tabular`.341Ces quatre props nécessitent Claude Code v2.1.299 ou une version ultérieure. Sur une version antérieure, Claude Code [dessine sa propre version du site](https://code.claude.com/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) à la place d'un arbre qui définit `size`, `weight`, `mono` ou `tabular`.
334 342
335#### Remplacer `bold` par `weight`343#### Remplacer `bold` par `weight`
336 344
337`bold` sur un `Text` est déprécié au profit de `weight` et fonctionne toujours. Pour le remplacer sur un `Text` sans `weight`, changez `bold: true` en `weight: 'semibold'` pour obtenir le même résultat sur Claude Code v2.1.299 ou une version ultérieure.345`bold` sur un `Text` est déprécié au profit de `weight` et fonctionne toujours. Pour le remplacer sur un `Text` sans `weight`, changez `bold: true` en `weight: 'semibold'` pour obtenir le même résultat sur Claude Code v2.1.299 ou une version ultérieure.
338 346
339Sur une version antérieure à v2.1.299, un arbre qui définit `weight` n'est pas dessiné, et Claude Code [dessine sa propre version du site](/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) à la place. Si vous définissez à la fois `bold` et `weight` sur un `Text`, `bold` n'a aucun effet.347Sur une version antérieure à v2.1.299, un arbre qui définit `weight` n'est pas dessiné, et Claude Code [dessine sa propre version du site](https://code.claude.com/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements) à la place. Si vous définissez à la fois `bold` et `weight` sur un `Text`, `bold` n'a aucun effet.
340 348
341## Limites349## Limites
342 350
346| :- | :- |354| :- | :- |
347| Le temps d'exécution propre d'un hook pour un événement, sans compter le temps passé dans `next` ou dans un appel à l'API des mods autre que `$.clock.sleep` | 10 secondes, ou 50 millisecondes pour un hook `prompt.edit` |355| Le temps d'exécution propre d'un hook pour un événement, sans compter le temps passé dans `next` ou dans un appel à l'API des mods autre que `$.clock.sleep` | 10 secondes, ou 50 millisecondes pour un hook `prompt.edit` |
348| Le temps d'exécution d'un gestionnaire `.catch` | 1 seconde |356| Le temps d'exécution d'un gestionnaire `.catch` | 1 seconde |
349| L'ensemble des hooks `session.end` | Aussi longtemps que le [budget du hook SessionEnd](/docs/fr/hooks.md#sessionend-input), soit 1,5 seconde sauf si vous le modifiez, compté à partir du moment où les hooks `SessionEnd` de vos paramètres se terminent |357| L'ensemble des hooks `session.end` | Aussi longtemps que le [budget du hook SessionEnd](https://code.claude.com/docs/fr/hooks.md#sessionend-input), soit 1,5 seconde sauf si vous le modifiez, compté à partir du moment où les hooks `SessionEnd` de vos paramètres se terminent |
350| Délai d'expiration de `$.process.run` | 30 secondes par défaut, 10 minutes au maximum |358| Délai d'expiration de `$.process.run` | 30 secondes par défaut, 10 minutes au maximum |
351| `maxTokens` de `$.model.complete` | 1024 par défaut, jusqu'à 64 000 ou la limite de sortie du modèle |359| `maxTokens` de `$.model.complete` | 1024 par défaut, jusqu'à 64 000 ou la limite de sortie du modèle |
352| `$.fs.read` et `$.fs.write` | 4 Mio pour un fichier |360| `$.fs.read` et `$.fs.write` | 4 Mio pour un fichier |
354| Le corps de la réponse d'un `$.http.fetch` | 4 Mio. `text` contient les 4 premiers Mio et le reste n'est pas lu. Lorsque l'en-tête `Content-Length` déclare davantage, l'appel est rejeté à la place, avec une raison qui se termine par `is over the 4194304-byte limit`, sauf lorsque la dernière requête après d'éventuelles redirections utilise la méthode `HEAD`. L'exemption `HEAD` nécessite Claude Code v2.1.296 ou une version ultérieure. |362| Le corps de la réponse d'un `$.http.fetch` | 4 Mio. `text` contient les 4 premiers Mio et le reste n'est pas lu. Lorsque l'en-tête `Content-Length` déclare davantage, l'appel est rejeté à la place, avec une raison qui se termine par `is over the 4194304-byte limit`, sauf lorsque la dernière requête après d'éventuelles redirections utilise la méthode `HEAD`. L'exemption `HEAD` nécessite Claude Code v2.1.296 ou une version ultérieure. |
355| Un appel `$.http.fetch`, redirections et corps compris | 30 secondes |363| Un appel `$.http.fetch`, redirections et corps compris | 30 secondes |
356| Redirections suivies par un appel `$.http.fetch` | 5 |364| Redirections suivies par un appel `$.http.fetch` | 5 |
357| La raison `drop` d'un hook ou la raison `deny` de `config.set` | 4 096 caractères. La fin d'une raison plus longue est tronquée, et le drop ou le deny s'applique quand même. La troncature nécessite Claude Code v2.1.292 ou une version ultérieure ; sur les versions antérieures, le hook [échoue](/docs/fr/plugins/mods/events.md#handle-a-hook-that-fails) à la place. |365| La raison `drop` d'un hook ou la raison `deny` de `config.set` | 4 096 caractères. La fin d'une raison plus longue est tronquée, et le drop ou le deny s'applique quand même. La troncature nécessite Claude Code v2.1.292 ou une version ultérieure ; sur les versions antérieures, le hook [échoue](https://code.claude.com/docs/fr/plugins/mods/events.md#handle-a-hook-that-fails) à la place. |
358| Texte dans un arbre | Les 100 000 premiers caractères sont dessinés |366| Texte dans un arbre | Les 100 000 premiers caractères sont dessinés |
359| Le `language` ou le `path` d'un `Code`, la `value` d'une option `Select`, ou le `module` d'un `Client` | 10 000 caractères. Si l'un d'eux est plus long, Claude Code [dessine sa propre version du site](/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements). |367| Le `language` ou le `path` d'un `Code`, la `value` d'une option `Select`, ou le `module` d'un `Client` | 10 000 caractères. Si l'un d'eux est plus long, Claude Code [dessine sa propre version du site](https://code.claude.com/docs/fr/plugins/mods/interface.md#build-a-tree-from-elements). |
360| Le `href` d'un `Link` | 2 048 caractères. Un `href` plus long empêche le dessin de l'arbre entier. |368| Le `href` d'un `Link` | 2 048 caractères. Un `href` plus long empêche le dessin de l'arbre entier. |
361| `$.store` | 4 Mio de JSON au total |369| `$.store` | 4 Mio de JSON au total |
362| `$.session.messages()` | Les 4 096 entrées les plus récentes |370| `$.session.messages()` | Les 4 096 entrées les plus récentes |
375| :- | :- | :- |383| :- | :- | :- |
376| `CLAUDE_CODE_PLUGIN_DIRS` | Environnement, ou `env` dans `~/.claude/settings.json` | Répertoires de plugins à charger comme le fait `--plugin-dir`, pour les applications auxquelles vous ne pouvez pas passer de flag. Chemins absolus séparés par `:`, ou `;` sous Windows. |384| `CLAUDE_CODE_PLUGIN_DIRS` | Environnement, ou `env` dans `~/.claude/settings.json` | Répertoires de plugins à charger comme le fait `--plugin-dir`, pour les applications auxquelles vous ne pouvez pas passer de flag. Chemins absolus séparés par `:`, ou `;` sous Windows. |
377| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environnement | `1` fait recharger les mods `--plugin-dir` à l'enregistrement dans une session non interactive de longue durée |385| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environnement | `1` fait recharger les mods `--plugin-dir` à l'enregistrement dans une session non interactive de longue durée |
378| `prependPlugins`, `appendPlugins` | Paramètres gérés. Paramètres utilisateur uniquement sur une machine sans paramètres gérés, dans une session dont les identifiants ne proviennent pas d'un `/login` Team ou Enterprise. | Listes d'identifiants de plugins, comme `acme-guard@acme-tools`. Les mods de `prependPlugins` s'exécutent avant tout mod installé par un utilisateur, et ceux de `appendPlugins` après, dans l'ordre indiqué. Consultez [L'ordre d'exécution des mods](/docs/fr/plugins/mods/events.md#the-order-mods-run-in). |386| `prependPlugins`, `appendPlugins` | Paramètres gérés. Paramètres utilisateur uniquement sur une machine sans paramètres gérés, dans une session dont les identifiants ne proviennent pas d'un `/login` Team ou Enterprise. | Listes d'identifiants de plugins, comme `acme-guard@acme-tools`. Les mods de `prependPlugins` s'exécutent avant tout mod installé par un utilisateur, et ceux de `appendPlugins` après, dans l'ordre indiqué. Consultez [L'ordre d'exécution des mods](https://code.claude.com/docs/fr/plugins/mods/events.md#the-order-mods-run-in). |
379| `allowManagedModsOnly` | Paramètres gérés, en tant qu'[option du garde-fou intégré](/docs/fr/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Seuls les mods qui [relèvent de votre organisation](/docs/fr/plugins/mods/admin.md#install-your-organizations-mods) et les mods intégrés à Claude Code exécutent leurs hooks. Les hooks de paramètres des utilisateurs continuent de s'exécuter. |387| `allowManagedModsOnly` | Paramètres gérés, en tant qu'[option du garde-fou intégré](https://code.claude.com/docs/fr/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Seuls les mods qui [relèvent de votre organisation](https://code.claude.com/docs/fr/plugins/mods/admin.md#install-your-organizations-mods) et les mods intégrés à Claude Code exécutent leurs hooks. Les hooks de paramètres des utilisateurs continuent de s'exécuter. |
380| `allowModsToOverrideDenyRules` | Paramètres gérés, en tant qu'[option du garde-fou intégré](/docs/fr/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Permet à un mod installé par un utilisateur d'approuver un appel d'outil refusé par une règle `deny` |388| `allowModsToOverrideDenyRules` | Paramètres gérés, en tant qu'[option du garde-fou intégré](https://code.claude.com/docs/fr/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Permet à un mod installé par un utilisateur d'approuver un appel d'outil refusé par une règle `deny` |
381| `allowManagedHooksOnly` | Paramètres gérés | Bloque les hooks et les mods installés qui n'appartiennent pas à votre organisation. Consultez [ce qui continue de s'exécuter](/docs/fr/settings-reference.md#what-runs-under-allowmanagedhooksonly). |389| `allowManagedHooksOnly` | Paramètres gérés | Bloque les hooks et les mods installés qui n'appartiennent pas à votre organisation. Consultez [ce qui continue de s'exécuter](https://code.claude.com/docs/fr/settings-reference.md#what-runs-under-allowmanagedhooksonly). |
382| `disableAllHooks` | Tout fichier de paramètres | Dans les paramètres gérés, aucun mod ni hook provenant d'un plugin installé ne s'exécute. Dans vos propres paramètres, ce que gère votre organisation continue de s'exécuter. Consultez [`disableAllHooks`](/docs/fr/settings-reference#disableallhooks). |390| `disableAllHooks` | Tout fichier de paramètres | Dans les paramètres gérés, aucun mod ni hook provenant d'un plugin installé ne s'exécute. Dans vos propres paramètres, ce que gère votre organisation continue de s'exécuter. Consultez [`disableAllHooks`](https://code.claude.com/docs/fr/settings-reference#disableallhooks). |
383| `disableSideloadFlags` | Paramètres gérés | Rejette `--plugin-dir` et `--plugin-url` au démarrage |391| `disableSideloadFlags` | Paramètres gérés | Rejette `--plugin-dir` et `--plugin-url` au démarrage |
384| `pluginConfigs` | Paramètres utilisateur ou gérés | Contient les valeurs `userConfig` d'un mod, indexées par l'identifiant du plugin, comme `acme-guard@acme-tools`, ou par son nom suivi de `@inline`, comme `first-mod@inline`, pour un mod chargé avec `--plugin-dir` |392| `pluginConfigs` | Paramètres utilisateur ou gérés | Contient les valeurs `userConfig` d'un mod, indexées par l'identifiant du plugin, comme `acme-guard@acme-tools`, ou par son nom suivi de `@inline`, comme `first-mod@inline`, pour un mod chargé avec `--plugin-dir` |
385 393
386`sec-default@builtin` est un garde-fou intégré à Claude Code, listé sous le nom `cc-plugin-sec-default` dans `/plugin` et dans le log de débogage. Il se charge avant tout mod installé par une personne sur une machine dotée de paramètres gérés, ou dans une session dont les identifiants proviennent d'un [`/login`](/docs/fr/authentication#authentication-precedence) Team ou Enterprise. Si `prependPlugins` est défini dans les paramètres gérés, le garde-fou ne se charge que lorsque cette liste le nomme, à la position indiquée.394`sec-default@builtin` est un garde-fou intégré à Claude Code, listé sous le nom `cc-plugin-sec-default` dans `/plugin` et dans le log de débogage. Il se charge avant tout mod installé par une personne sur une machine dotée de paramètres gérés, ou dans une session dont les identifiants proviennent d'un [`/login`](https://code.claude.com/docs/fr/authentication#authentication-precedence) Team ou Enterprise. Si `prependPlugins` est défini dans les paramètres gérés, le garde-fou ne se charge que lorsque cette liste le nomme, à la position indiquée.
387 395
388Son code source se trouve dans le [répertoire `mods/sec-default` du dépôt Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).396Son code source se trouve dans le [répertoire `mods/sec-default` du dépôt Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).
389 397
393 401
394| Commande | Effet |402| Commande | Effet |
395| :- | :- |403| :- | :- |
396| [`/plugin`](/docs/fr/plugins/mods/overview#see-which-mods-a-session-loaded) | Affiche une ligne telle que `1 mod active · first-mod` sous ses onglets lorsqu'un mod non intégré a été chargé |404| [`/plugin`](https://code.claude.com/docs/fr/plugins/mods/overview#see-which-mods-a-session-loaded) | Affiche une ligne telle que `1 mod active · first-mod` sous ses onglets lorsqu'un mod non intégré a été chargé |
397| [`claude plugin validate <directory>`](/docs/fr/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Lit le manifeste et le module de hooks d'un plugin et signale les erreurs, les événements qu'il gère et les appels à l'API des mods qu'il effectue. `--strict` traite les avertissements comme des erreurs et `--json` affiche un rapport lisible par une machine. |405| [`claude plugin validate <directory>`](https://code.claude.com/docs/fr/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Lit le manifeste et le module de hooks d'un plugin et signale les erreurs, les événements qu'il gère et les appels à l'API des mods qu'il effectue. `--strict` traite les avertissements comme des erreurs et `--json` affiche un rapport lisible par une machine. |
398| [`claude plugin test [directory]`](/docs/fr/plugins/mods/test#write-a-test) | Exécute chaque fichier du répertoire, ou du répertoire courant si vous n'en indiquez aucun, dont le nom se termine par `.test.ts` ou `.test.tsx`. Se termine avec le statut 1 lorsqu'un test échoue. |406| [`claude plugin test [directory]`](https://code.claude.com/docs/fr/plugins/mods/test#write-a-test) | Exécute chaque fichier du répertoire, ou du répertoire courant si vous n'en indiquez aucun, dont le nom se termine par `.test.ts` ou `.test.tsx`. Se termine avec le statut 1 lorsqu'un test échoue. |
399| [`claude --plugin-dir <directory>`](/docs/fr/plugins/mods/create#write-a-mod-yourself) | Charge un répertoire de plugin pour une session et recharge son module de hooks lorsque vous enregistrez. Répétez le flag pour en charger plusieurs. |407| [`claude --plugin-dir <directory>`](https://code.claude.com/docs/fr/plugins/mods/create#write-a-mod-yourself) | Charge un répertoire de plugin pour une session et recharge son module de hooks lorsque vous enregistrez. Répétez le flag pour en charger plusieurs. |
400| `/reload-plugins` | Recharge les plugins lorsque vous l'exécutez |408| `/reload-plugins` | Recharge les plugins lorsque vous l'exécutez |