6 6
7> Vollständige Referenz für Claude Code-Mods: Aufbau des Hooks-Moduls, Events, Methoden der Mods-API, Render-Stellen, Elemente nach Oberfläche, Limits und Einstellungen.7> Vollständige Referenz für Claude Code-Mods: Aufbau des Hooks-Moduls, Events, Methoden der Mods-API, Render-Stellen, Elemente nach Oberfläche, Limits und Einstellungen.
8 8
9Schlagen Sie jedes Event nach, das ein [Mod](/docs/de/plugins/mods/overview.md) verarbeiten kann, jede Methode der Mods-API, die er aufrufen kann, und jede Render-Stelle, an der er zeichnen kann. Die Einträge gelten für die Claude Code CLI und die Desktop-App ab v2.1.290 sowie für die VS Code-Erweiterung ab v2.1.299. Jeder Eintrag enthält den Namen und eine einzeilige Beschreibung sowie, sofern vorhanden, einen Link zum Abschnitt des Leitfadens, der ihn erklärt.9Schlagen Sie jedes Event nach, das ein [Mod](https://code.claude.com/docs/de/plugins/mods/overview.md) verarbeiten kann, jede Methode der Mods-API, die er aufrufen kann, und jede Render-Stelle, an der er zeichnen kann. Die Einträge gelten für die Claude Code CLI und die Desktop-App ab v2.1.290 sowie für die VS Code-Erweiterung ab v2.1.299. Jeder Eintrag enthält den Namen und eine einzeilige Beschreibung sowie, sofern vorhanden, einen Link zum Abschnitt des Leitfadens, der ihn erklärt.
10 10
11> [!NOTE]11> [!NOTE]
12>12>
13> Die vollständige Referenz sind die [TypeScript-Deklarationen für Mods](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) von Claude Code, die jedes Event, jede Methode und jedes Element mit Beispielen beschreiben. Die Kopie auf GitHub kann älter sein als die installierte Version von Claude Code. Wenn die beiden voneinander abweichen, verlassen Sie sich auf [die Kopie, die Claude Code für Ihre Version schreibt](/docs/de/plugins/mods/create.md#get-the-types-for-your-build).13> Die vollständige Referenz sind die [TypeScript-Deklarationen für Mods](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) von Claude Code, die jedes Event, jede Methode und jedes Element mit Beispielen beschreiben. Die Kopie auf GitHub kann älter sein als die installierte Version von Claude Code. Wenn die beiden voneinander abweichen, verlassen Sie sich auf [die Kopie, die Claude Code für Ihre Version schreibt](https://code.claude.com/docs/de/plugins/mods/create.md#get-the-types-for-your-build).
14 14
15## Dateien15## Dateien
16 16
18 18
19| Datei | Erforderlich | Inhalt |19| Datei | Erforderlich | Inhalt |
20| :- | :- | :- |20| :- | :- | :- |
21| `.claude-plugin/plugin.json` | Ja | Das [Manifest](/docs/de/plugins/manifest-reference.md) des Plugins. Mods fügen keine erforderlichen Felder hinzu. |21| `.claude-plugin/plugin.json` | Ja | Das [Manifest](https://code.claude.com/docs/de/plugins/manifest-reference.md) des Plugins. Mods fügen keine erforderlichen Felder hinzu. |
22| `hooks/hooks.json` | Ja | `modules`: ein Array mit einem Pfad zum Hooks-Modul, relativ zu dieser Datei, wie in `"modules": ["./register.js"]`. Kann unter `hooks` auch [Einstellungs-Hooks](/docs/de/hooks.md) enthalten. |22| `hooks/hooks.json` | Ja | `modules`: ein Array mit einem Pfad zum Hooks-Modul, relativ zu dieser Datei, wie in `"modules": ["./register.js"]`. Kann unter `hooks` auch [Einstellungs-Hooks](https://code.claude.com/docs/de/hooks.md) enthalten. |
23| Das Hooks-Modul, zum Beispiel [`hooks/register.js`](/docs/de/plugins/mods/create#write-a-mod-yourself) | Ja | Der Einstiegspunkt des Mods. Exportiert `register(on, options)`. Mit der Endung `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` oder `.tsx`. Ein ES-Modul. |23| Das Hooks-Modul, zum Beispiel [`hooks/register.js`](https://code.claude.com/docs/de/plugins/mods/create#write-a-mod-yourself) | Ja | Der Einstiegspunkt des Mods. Exportiert `register(on, options)`. Mit der Endung `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` oder `.tsx`. Ein ES-Modul. |
24| [`types/index.d.ts`](/docs/de/plugins/mods/interface#declare-the-values), im Manifest durch `types` angegeben | Wenn der Mod `$.state` verwendet oder der Mods-API einen Namespace hinzufügt | Deklariert `PluginState`-Werte und jeden Namespace, den der Mod hinzufügt |24| [`types/index.d.ts`](https://code.claude.com/docs/de/plugins/mods/interface#declare-the-values), im Manifest durch `types` angegeben | Wenn der Mod `$.state` verwendet oder der Mods-API einen Namespace hinzufügt | Deklariert `PluginState`-Werte und jeden Namespace, den der Mod hinzufügt |
25| Dateien, deren Namen auf `.test.ts` oder `.test.tsx` enden | Nein | Tests, die [`claude plugin test`](/docs/de/plugins/mods/test#write-a-test) ausführt |25| Dateien, deren Namen auf `.test.ts` oder `.test.tsx` enden | Nein | Tests, die [`claude plugin test`](https://code.claude.com/docs/de/plugins/mods/test#write-a-test) ausführt |
26 26
27`register` erhält `on` und `options`. `options` enthält die Werte der [`userConfig`](/docs/de/plugins/components#user-configuration)-Felder, die das Manifest deklariert, wobei Standardwerte ergänzt werden.27`register` erhält `on` und `options`. `options` enthält die Werte der [`userConfig`](https://code.claude.com/docs/de/plugins/components#user-configuration)-Felder, die das Manifest deklariert, wobei Standardwerte ergänzt werden.
28 28
29## Die Hook-Funktion29## Die Hook-Funktion
30 30
31Ein Mod registriert jeden seiner Hooks, also Event-Handler, indem er `on` innerhalb von `register` aufruft. `on` nimmt den Namen des Events, einen optionalen [Matcher](/docs/de/plugins/mods/events.md#filter-which-events-a-hook-handles), also einen Filter auf die Felder des Events, und den Hook entgegen, wie in `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` gibt eine Registrierung mit einer Methode zurück, `.catch(handler)`, die den [Fehler-Handler](/docs/de/plugins/mods/events.md#handle-a-hook-that-fails) des Hooks festlegt.31Ein Mod registriert jeden seiner Hooks, also Event-Handler, indem er `on` innerhalb von `register` aufruft. `on` nimmt den Namen des Events, einen optionalen [Matcher](https://code.claude.com/docs/de/plugins/mods/events.md#filter-which-events-a-hook-handles), also einen Filter auf die Felder des Events, und den Hook entgegen, wie in `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` gibt eine Registrierung mit einer Methode zurück, `.catch(handler)`, die den [Fehler-Handler](https://code.claude.com/docs/de/plugins/mods/events.md#handle-a-hook-that-fails) des Hooks festlegt.
32 32
33| Argument | Was es ist |33| Argument | Was es ist |
34| :- | :- |34| :- | :- |
35| [`$`](/docs/de/plugins/mods/events#how-a-hook-handles-an-event) | Die Mods-API: jede Methode in [Methoden der Mods-API](#mods-api-methods). Schreiben Sie jeden Aufruf vollständig aus, zuerst den Namespace, dann die Methode, wie in `$.fs.read('notes.md')`. |35| [`$`](https://code.claude.com/docs/de/plugins/mods/events#how-a-hook-handles-an-event) | Die Mods-API: jede Methode in [Methoden der Mods-API](#mods-api-methods). Schreiben Sie jeden Aufruf vollständig aus, zuerst den Namespace, dann die Methode, wie in `$.fs.read('notes.md')`. |
36| [`e`](/docs/de/plugins/mods/events#how-a-hook-handles-an-event) | Die Eingabe des Events als tief eingefrorene einfache Daten. Um sie zu ändern, übergeben Sie eine Kopie an `next`. |36| [`e`](https://code.claude.com/docs/de/plugins/mods/events#how-a-hook-handles-an-event) | Die Eingabe des Events als tief eingefrorene einfache Daten. Um sie zu ändern, übergeben Sie eine Kopie an `next`. |
37| [`next(e)`](/docs/de/plugins/mods/events#how-a-hook-handles-an-event) | Der nächste Handler, wie bei Middleware. Führt die Hooks nach diesem aus, dann das Verhalten von Claude Code. Wird zum Ergebnis des Events aufgelöst. |37| [`next(e)`](https://code.claude.com/docs/de/plugins/mods/events#how-a-hook-handles-an-event) | Der nächste Handler, wie bei Middleware. Führt die Hooks nach diesem aus, dann das Verhalten von Claude Code. Wird zum Ergebnis des Events aufgelöst. |
38| [`next.signal`](/docs/de/plugins/mods/api#stop-background-work) | Ein `AbortSignal`, das abbricht, wenn das Event verworfen wird |38| [`next.signal`](https://code.claude.com/docs/de/plugins/mods/api#stop-background-work) | Ein `AbortSignal`, das abbricht, wenn das Event verworfen wird |
39| `next.origin` | `{ plugin, tier }` desjenigen, der das Event ausgelöst hat. Claude Code selbst ist `{ plugin: 'engine', tier: 'core' }`. Der `tier` eines Mods ist seine Prioritätsgruppe in der [Reihenfolge, in der Mods ausgeführt werden](/docs/de/plugins/mods/events.md#the-order-mods-run-in): `prepend`, `user`, `append` oder `builtin`. |39| `next.origin` | `{ plugin, tier }` desjenigen, der das Event ausgelöst hat. Claude Code selbst ist `{ plugin: 'engine', tier: 'core' }`. Der `tier` eines Mods ist seine Prioritätsgruppe in der [Reihenfolge, in der Mods ausgeführt werden](https://code.claude.com/docs/de/plugins/mods/events.md#the-order-mods-run-in): `prepend`, `user`, `append` oder `builtin`. |
40| `next.budget` | Das Zeitlimit des Hooks in Millisekunden: `next.budget.ms` ist das gesamte Limit, und `next.budget.remainingMs` ist die aktuell verbleibende Zeit |40| `next.budget` | Das Zeitlimit des Hooks in Millisekunden: `next.budget.ms` ist das gesamte Limit, und `next.budget.remainingMs` ist die aktuell verbleibende Zeit |
41| `next.to(e, tier)` | Springt zu einem späteren Tier, nämlich `append`, `builtin` oder `core`. `next.to(e, 'append')` überspringt die Mods, die ein Benutzer installiert hat. Nur ein Mod in `prependPlugins` oder `appendPlugins` kann es aufrufen. |41| `next.to(e, tier)` | Springt zu einem späteren Tier, nämlich `append`, `builtin` oder `core`. `next.to(e, 'append')` überspringt die Mods, die ein Benutzer installiert hat. Nur ein Mod in `prependPlugins` oder `appendPlugins` kann es aufrufen. |
42| `next.error` | Nur in einem `.catch`-Handler. `kind` ist `throw` oder `timeout`, wenn der Hook fehlgeschlagen ist, und `message` ist der Text des Fehlers. `kind` ist `re-entry`, wenn der Hook übersprungen wurde, weil das Event aus einem Aufruf der Mods-API stammte, den dieser Hook oder der Code Ihres Mods außerhalb seiner Hooks ausgeführt hat. `re-entry` erfordert Claude Code v2.1.292 oder höher. |42| `next.error` | Nur in einem `.catch`-Handler. `kind` ist `throw` oder `timeout`, wenn der Hook fehlgeschlagen ist, und `message` ist der Text des Fehlers. `kind` ist `re-entry`, wenn der Hook übersprungen wurde, weil das Event aus einem Aufruf der Mods-API stammte, den dieser Hook oder der Code Ihres Mods außerhalb seiner Hooks ausgeführt hat. `re-entry` erfordert Claude Code v2.1.292 oder höher. |
43| `next.error.cause` | Nur gesetzt, wenn `kind` gleich `re-entry` ist. `rewritten`, wenn ein `tool.call`- oder [`PreToolUse`](/docs/de/hooks#pretooluse)-Hook den Aufruf der Mods-API geändert hat, aus dem das Event stammte, oder ein `agent.spawn`-Hook einen durch diesen Aufruf gestarteten Agenten geändert hat. `lent`, wenn eine Methode, die ein anderer Mod zur Mods-API hinzufügt, dieses Event ausgelöst hat, sofern nicht auch `rewritten` zutrifft. `lent` erfordert Claude Code v2.1.292 oder höher und `rewritten` v2.1.300 oder höher. |43| `next.error.cause` | Nur gesetzt, wenn `kind` gleich `re-entry` ist. `rewritten`, wenn ein `tool.call`- oder [`PreToolUse`](https://code.claude.com/docs/de/hooks#pretooluse)-Hook den Aufruf der Mods-API geändert hat, aus dem das Event stammte, oder ein `agent.spawn`-Hook einen durch diesen Aufruf gestarteten Agenten geändert hat. `lent`, wenn eine Methode, die ein anderer Mod zur Mods-API hinzufügt, dieses Event ausgelöst hat, sofern nicht auch `rewritten` zutrifft. `lent` erfordert Claude Code v2.1.292 oder höher und `rewritten` v2.1.300 oder höher. |
44| `next.called` | Nur in einem `.catch`-Handler. `true`, wenn der Hook `next` aufgerufen hatte. |44| `next.called` | Nur in einem `.catch`-Handler. `true`, wenn der Hook `next` aufgerufen hatte. |
45 45
46## Events46## Events
55 55
56| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |56| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
57| :- | :- | :- |57| :- | :- | :- |
58| [`tool.call`](/docs/de/plugins/mods/events#guard-or-change-a-tool-call) | Ein Tool gleich ausgeführt wird | `next(e)`, `{ deny: reason }` oder `{ result }` |58| [`tool.call`](https://code.claude.com/docs/de/plugins/mods/events#guard-or-change-a-tool-call) | Ein Tool gleich ausgeführt wird | `next(e)`, `{ deny: reason }` oder `{ result }` |
59| [`tool.check`](/docs/de/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code entscheidet, ob ein Tool-Aufruf ausgeführt werden darf, nach den Hooks `tool.call` und `PreToolUse`. `next(e)` wird zu der Entscheidung aufgelöst, zu der die Regeln, der Berechtigungsmodus und diese Hooks gelangt sind. | `next(e)` oder `{ decision }`, wobei `decision` auf `allow`, `ask` oder `deny` gesetzt ist, mit einem optionalen `reason` |59| [`tool.check`](https://code.claude.com/docs/de/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code entscheidet, ob ein Tool-Aufruf ausgeführt werden darf, nach den Hooks `tool.call` und `PreToolUse`. `next(e)` wird zu der Entscheidung aufgelöst, zu der die Regeln, der Berechtigungsmodus und diese Hooks gelangt sind. | `next(e)` oder `{ decision }`, wobei `decision` auf `allow`, `ask` oder `deny` gesetzt ist, mit einem optionalen `reason` |
60| `tool.describe` | Einmal für jedes Tool, wenn seine Beschreibung zum ersten Mal an Claude gesendet wird. Ein zweites Mal für ein MCP-Tool, wenn Claude es über die [Tool-Suche](/docs/de/mcp.md#scale-with-mcp-tool-search) lädt, wobei `e.description` auf den Text gesetzt ist, den Claude für das geladene Tool liest. | `{ description }`, optional mit `isDeferred` auf `true` gesetzt, um das Tool hinter die Tool-Suche zu stellen, oder auf `false`, um es vorab zu laden |60| `tool.describe` | Einmal für jedes Tool, wenn seine Beschreibung zum ersten Mal an Claude gesendet wird. Ein zweites Mal für ein MCP-Tool, wenn Claude es über die [Tool-Suche](https://code.claude.com/docs/de/mcp.md#scale-with-mcp-tool-search) lädt, wobei `e.description` auf den Text gesetzt ist, den Claude für das geladene Tool liest. | `{ description }`, optional mit `isDeferred` auf `true` gesetzt, um das Tool hinter die Tool-Suche zu stellen, oder auf `false`, um es vorab zu laden |
61 61
62#### Agenten- und Organisationsfelder in `tool.check`62#### Agenten- und Organisationsfelder in `tool.check`
63 63
64Lesen Sie in einem `tool.check`-Hook diese Felder, um den Aufruf eines Subagenten von dem der Hauptkonversation zu unterscheiden und um zu sehen, ob Ihre Organisation für ein Konnektor-Tool eine Genehmigung verlangt:64Lesen Sie in einem `tool.check`-Hook diese Felder, um den Aufruf eines Subagenten von dem der Hauptkonversation zu unterscheiden und um zu sehen, ob Ihre Organisation für ein Konnektor-Tool eine Genehmigung verlangt:
65 65
66* **`e.agentId`**: gesetzt, wenn ein [Subagent](/docs/de/sub-agents.md) oder ein [prozessinternes Teammitglied](/docs/de/agent-teams.md#choose-a-display-mode) den Aufruf durchführt, und nicht vorhanden, wenn die Hauptkonversation ihn durchführt66* **`e.agentId`**: gesetzt, wenn ein [Subagent](https://code.claude.com/docs/de/sub-agents.md) oder ein [prozessinternes Teammitglied](https://code.claude.com/docs/de/agent-teams.md#choose-a-display-mode) den Aufruf durchführt, und nicht vorhanden, wenn die Hauptkonversation ihn durchführt
67* **`e.ceiling`**: `ask` für ein Konnektor-Tool, das Ihre Organisation auf `ask` gesetzt hat, in [Sitzungen, in denen diese Einstellung Claude Code erreicht](/docs/de/mcp.md#organization-controls-on-connector-tools)67* **`e.ceiling`**: `ask` für ein Konnektor-Tool, das Ihre Organisation auf `ask` gesetzt hat, in [Sitzungen, in denen diese Einstellung Claude Code erreicht](https://code.claude.com/docs/de/mcp.md#organization-controls-on-connector-tools)
68 68
69Bei `tool.check` erfordern `e.agentId` und `e.ceiling` Claude Code v2.1.290 oder höher.69Bei `tool.check` erfordern `e.agentId` und `e.ceiling` Claude Code v2.1.290 oder höher.
70 70
71#### Das Feld `e.isReadOnly` in `tool.check`71#### Das Feld `e.isReadOnly` in `tool.check`
72 72
73In einem `tool.check`-Hook ist `e.isReadOnly` gleich `true`, wenn das Tool diesen Aufruf als nur lesend meldet. Andernfalls ist das Feld nicht vorhanden, statt `false` zu sein. Der Wert ist die eigene Angabe des Tools. Lesen Sie daher [Prüfen, ob ein Tool-Aufruf nur lesend ist](/docs/de/plugins/mods/events.md#check-whether-a-tool-call-is-read-only), bevor Sie einen Aufruf allein anhand dieses Felds genehmigen.73In einem `tool.check`-Hook ist `e.isReadOnly` gleich `true`, wenn das Tool diesen Aufruf als nur lesend meldet. Andernfalls ist das Feld nicht vorhanden, statt `false` zu sein. Der Wert ist die eigene Angabe des Tools. Lesen Sie daher [Prüfen, ob ein Tool-Aufruf nur lesend ist](https://code.claude.com/docs/de/plugins/mods/events.md#check-whether-a-tool-call-is-read-only), bevor Sie einen Aufruf allein anhand dieses Felds genehmigen.
74 74
75Bei `tool.check` erfordert `e.isReadOnly` Claude Code v2.1.304 oder höher.75Bei `tool.check` erfordert `e.isReadOnly` Claude Code v2.1.304 oder höher.
76 76
80 80
81| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |81| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
82| :- | :- | :- |82| :- | :- | :- |
83| [`prompt.submit`](/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Ein Prompt abgeschickt wird | `next({ ...e, text })`, `next({ ...e, context })` oder `{ drop: reason }` |83| [`prompt.submit`](https://code.claude.com/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Ein Prompt abgeschickt wird | `next({ ...e, text })`, `next({ ...e, context })` oder `{ drop: reason }` |
84| `prompt.fill`, `prompt.suggest` | Text gleich als Entwurf oder als abgeblendeter Vorschlag in das Eingabefeld eingefügt wird | `next(e)` mit geändertem Text |84| `prompt.fill`, `prompt.suggest` | Text gleich als Entwurf oder als abgeblendeter Vorschlag in das Eingabefeld eingefügt wird | `next(e)` mit geändertem Text |
85| `prompt.edit` | Der Benutzer das Eingabefeld bearbeitet | `next(e)` |85| `prompt.edit` | Der Benutzer das Eingabefeld bearbeitet | `next(e)` |
86| `prompt.autocomplete` | Der Benutzer im Eingabefeld tippt und an der Cursorposition ein Wort endet. `e.token` ist dieses Wort. Claude Code wartet nicht auf den Hook: Seine eigenen Autovervollständigungszeilen werden zuerst angezeigt. | `{ suggestions }`, eine Liste von `{ text, label, description }`-Zeilen, die unter denen von Claude Code angezeigt werden. Das Auswählen einer Zeile schreibt ihren `text` über das Wort. |86| `prompt.autocomplete` | Der Benutzer im Eingabefeld tippt und an der Cursorposition ein Wort endet. `e.token` ist dieses Wort. Claude Code wartet nicht auf den Hook: Seine eigenen Autovervollständigungszeilen werden zuerst angezeigt. | `{ suggestions }`, eine Liste von `{ text, label, description }`-Zeilen, die unter denen von Claude Code angezeigt werden. Das Auswählen einer Zeile schreibt ihren `text` über das Wort. |
87| `prompt.compose` | Claude Code einen System-Prompt rendert | `{ sections }`, eine Liste von `{ id, text, scope }` in der Reihenfolge, in der sie gesendet werden |87| `prompt.compose` | Claude Code einen System-Prompt rendert | `{ sections }`, eine Liste von `{ id, text, scope }` in der Reihenfolge, in der sie gesendet werden |
88| [`prompt.section`](/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Einmal für jeden benannten Abschnitt des System-Prompts. `e.name` ist die `id` des Abschnitts in `prompt.compose`. | `{ text }` oder `{ text: null }`, um den Abschnitt auszulassen |88| [`prompt.section`](https://code.claude.com/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Einmal für jeden benannten Abschnitt des System-Prompts. `e.name` ist die `id` des Abschnitts in `prompt.compose`. | `{ text }` oder `{ text: null }`, um den Abschnitt auszulassen |
89| [`prompt.context`](/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Einmal pro Konversation, für den Kontext, der mit der ersten Nachricht gesendet wird | `{ blocks }` |89| [`prompt.context`](https://code.claude.com/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Einmal pro Konversation, für den Kontext, der mit der ersten Nachricht gesendet wird | `{ blocks }` |
90| `prompt.attachment` | Claude Code eine eigene Nachricht für Claude hinzufügt, etwa eine Erinnerung. `e.type` benennt die Art, und für die Arten, die die Typen deklarieren, enthält `e.detail` die Fakten, aus denen der Text geschrieben wurde. | `{ text }` oder `{ text: null }`, um sie auszulassen |90| `prompt.attachment` | Claude Code eine eigene Nachricht für Claude hinzufügt, etwa eine Erinnerung. `e.type` benennt die Art, und für die Arten, die die Typen deklarieren, enthält `e.detail` die Fakten, aus denen der Text geschrieben wurde. | `{ text }` oder `{ text: null }`, um sie auszulassen |
91| `prompt.mention` | Claude Code gleich eine Datei liest, die in einem Prompt per @ erwähnt wird. Erfordert Claude Code v2.1.290 oder höher. | `next({ ...e, path })`, um eine andere Datei zu lesen, oder `{ deny: reason }` |91| `prompt.mention` | Claude Code gleich eine Datei liest, die in einem Prompt per @ erwähnt wird. Erfordert Claude Code v2.1.290 oder höher. | `next({ ...e, path })`, um eine andere Datei zu lesen, oder `{ deny: reason }` |
92| [`skill.prompt`](/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Der Text eines Skills für Claude expandiert wird | `{ text }` |92| [`skill.prompt`](https://code.claude.com/docs/de/plugins/mods/events#rewrite-or-add-to-a-prompt) | Der Text eines Skills für Claude expandiert wird | `{ text }` |
93| `attribution.text` | Claude Code den Attributionstext für einen Commit oder Pull Request erstellt | `{ text }` |93| `attribution.text` | Claude Code den Attributionstext für einen Commit oder Pull Request erstellt | `{ text }` |
94 94
95#### Quell- und Frontmatter-Felder in `skill.prompt`95#### Quell- und Frontmatter-Felder in `skill.prompt`
98 98
99| Feld | Typ | Was es enthält |99| Feld | Typ | Was es enthält |
100| :- | :- | :- |100| :- | :- | :- |
101| `e.source` | string | Wer den Skill bereitstellt: `policySettings`, `userSettings` oder `projectSettings` für einen Skill am Unternehmens-, persönlichen bzw. Projekt-[Speicherort](/docs/de/skills.md#where-skills-live). Andere Quellen liefern ein Wort wie `plugin`, `mcp`, `syncedSkills` oder `built-in`. |101| `e.source` | string | Wer den Skill bereitstellt: `policySettings`, `userSettings` oder `projectSettings` für einen Skill am Unternehmens-, persönlichen bzw. Projekt-[Speicherort](https://code.claude.com/docs/de/skills.md#where-skills-live). Andere Quellen liefern ein Wort wie `plugin`, `mcp`, `syncedSkills` oder `built-in`. |
102| `e.pluginName` | string | Der Name des Plugins, für einen Skill, dessen `e.source` gleich `plugin` ist |102| `e.pluginName` | string | Der Name des Plugins, für einen Skill, dessen `e.source` gleich `plugin` ist |
103| `e.path` | string | Der absolute Pfad der `SKILL.md`-Datei des Skills oder seiner `.md`-Datei bei einem Skill, der als [Befehlsdatei](/docs/de/skills.md#where-skills-live) geschrieben ist. Nicht vorhanden, wenn der Skill auf diesem Rechner keine Datei hat, wie bei einem integrierten Skill. |103| `e.path` | string | Der absolute Pfad der `SKILL.md`-Datei des Skills oder seiner `.md`-Datei bei einem Skill, der als [Befehlsdatei](https://code.claude.com/docs/de/skills.md#where-skills-live) geschrieben ist. Nicht vorhanden, wenn der Skill auf diesem Rechner keine Datei hat, wie bei einem integrierten Skill. |
104| `e.frontmatter` | object | Das Frontmatter der Datei des Skills als einfache Daten |104| `e.frontmatter` | object | Das Frontmatter der Datei des Skills als einfache Daten |
105| `e.frontmatterProblem` | string | Der Grund, warum in `e.frontmatter` das Frontmatter der Datei oder einer seiner Schlüssel fehlt, wie in `is a list or a single value, not a table`. Nicht vorhanden, wenn `e.frontmatter` das gesamte Frontmatter enthält oder der Skill keines hat. |105| `e.frontmatterProblem` | string | Der Grund, warum in `e.frontmatter` das Frontmatter der Datei oder einer seiner Schlüssel fehlt, wie in `is a list or a single value, not a table`. Nicht vorhanden, wenn `e.frontmatter` das gesamte Frontmatter enthält oder der Skill keines hat. |
106 106
107Ein Hook kann einen geänderten `text` oder ein geändertes `frontmatter` an `next` übergeben: Die Hooks danach lesen beides, und Claude liest den endgültigen `text`. Ein Hook, der ein anderes Feld ändert, [schlägt fehl](/docs/de/plugins/mods/events.md#handle-a-hook-that-fails).107Ein Hook kann einen geänderten `text` oder ein geändertes `frontmatter` an `next` übergeben: Die Hooks danach lesen beides, und Claude liest den endgültigen `text`. Ein Hook, der ein anderes Feld ändert, [schlägt fehl](https://code.claude.com/docs/de/plugins/mods/events.md#handle-a-hook-that-fails).
108 108
109Bei `skill.prompt` erfordern `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` und `e.frontmatterProblem` Claude Code v2.1.299 oder höher.109Bei `skill.prompt` erfordern `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` und `e.frontmatterProblem` Claude Code v2.1.299 oder höher.
110 110
114 114
115| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |115| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
116| :- | :- | :- |116| :- | :- | :- |
117| [`command.run`](/docs/de/plugins/mods/api#add-a-command) | Ein Befehl gleich ausgeführt wird | `{ text }`, `{}` oder `next(e)` |117| [`command.run`](https://code.claude.com/docs/de/plugins/mods/api#add-a-command) | Ein Befehl gleich ausgeführt wird | `{ text }`, `{}` oder `next(e)` |
118| `command.describe` | Einmal für jeden Befehl, für die Befehlsliste | `{ description, argumentHint, isHidden }` |118| `command.describe` | Einmal für jeden Befehl, für die Befehlsliste | `{ description, argumentHint, isHidden }` |
119| `config.set` | Eine `/config`-Zeile sich gleich ändert | `next({ ...e, value })` oder `{ deny: reason }` |119| `config.set` | Eine `/config`-Zeile sich gleich ändert | `next({ ...e, value })` oder `{ deny: reason }` |
120| `config.describe` | Einmal für jede `/config`-Zeile | `{ label, description, isHidden }` |120| `config.describe` | Einmal für jede `/config`-Zeile | `{ label, description, isHidden }` |
125 125
126| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |126| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
127| :- | :- | :- |127| :- | :- | :- |
128| [`turn.start`](/docs/de/plugins/mods/events#follow-a-turn) | Ein Turn beginnt | `next(e)` |128| [`turn.start`](https://code.claude.com/docs/de/plugins/mods/events#follow-a-turn) | Ein Turn beginnt | `next(e)` |
129| [`turn.step`](/docs/de/plugins/mods/events#follow-a-turn) | Eine Anfrage gleich an das Modell gesendet wird | `yield* next(e)` oder `next({ ...e, model })`, `next({ ...e, effort })` |129| [`turn.step`](https://code.claude.com/docs/de/plugins/mods/events#follow-a-turn) | Eine Anfrage gleich an das Modell gesendet wird | `yield* next(e)` oder `next({ ...e, model })`, `next({ ...e, effort })` |
130| [`turn.complete`](/docs/de/plugins/mods/events#follow-a-turn) | Ein Turn beendet wurde | `next(e)` oder `{ text }`, um eine Zeile unter der Antwort anzuzeigen |130| [`turn.complete`](https://code.claude.com/docs/de/plugins/mods/events#follow-a-turn) | Ein Turn beendet wurde | `next(e)` oder `{ text }`, um eine Zeile unter der Antwort anzuzeigen |
131 131
132### Sitzung132### Sitzung
133 133
135 135
136| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |136| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
137| :- | :- | :- |137| :- | :- | :- |
138| [`session.start`](/docs/de/plugins/mods/api#add-a-command-or-a-tool) | Einmal für jeden geladenen Mod, vor dem ersten Prompt, und erneut nach einem Neuladen dieses Mods. Nicht nach `/clear`, `/resume` oder `/branch`. | `next(e)` |138| [`session.start`](https://code.claude.com/docs/de/plugins/mods/api#add-a-command-or-a-tool) | Einmal für jeden geladenen Mod, vor dem ersten Prompt, und erneut nach einem Neuladen dieses Mods. Nicht nach `/clear`, `/resume` oder `/branch`. | `next(e)` |
139| `session.end` | Die Sitzung endet oder `/clear`, `/resume` oder `/branch` ausgeführt wird. `e.reason` ist `clear`, `resume`, `logout`, `prompt_input_exit` oder `other`. `/branch` meldet `resume`. | `next(e)` |139| `session.end` | Die Sitzung endet oder `/clear`, `/resume` oder `/branch` ausgeführt wird. `e.reason` ist `clear`, `resume`, `logout`, `prompt_input_exit` oder `other`. `/branch` meldet `resume`. | `next(e)` |
140| `session.compact` | Die Konversation gleich komprimiert wird | `{ skip: reason }` |140| `session.compact` | Die Konversation gleich komprimiert wird | `{ skip: reason }` |
141| [`session.receive`](/docs/de/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](/docs/de/plugins/mods/api#send-and-receive-messages-between-sessions) | Eine Nachricht von einem anderen Agenten oder einer anderen Sitzung eintrifft oder gleich dorthin gesendet wird. Siehe [Nachrichten zwischen Sitzungen senden und empfangen](/docs/de/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` für `receive`, `{ isDelivered: false, reason }` für `send` |141| [`session.receive`](https://code.claude.com/docs/de/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](https://code.claude.com/docs/de/plugins/mods/api#send-and-receive-messages-between-sessions) | Eine Nachricht von einem anderen Agenten oder einer anderen Sitzung eintrifft oder gleich dorthin gesendet wird. Siehe [Nachrichten zwischen Sitzungen senden und empfangen](https://code.claude.com/docs/de/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` für `receive`, `{ isDelivered: false, reason }` für `send` |
142| `session.append` | Einmal für jede Zeile, die die Konversation behält, etwa ein Prompt, ein Antwortblock, ein Tool-Ergebnis oder ein Hinweis, bevor sie gespeichert wird | `next({ ...e, message })` mit einem geänderten `message.content`, um die Textblöcke der Zeile oder den `content` eines darin enthaltenen `tool_result`-Blocks umzuschreiben |142| `session.append` | Einmal für jede Zeile, die die Konversation behält, etwa ein Prompt, ein Antwortblock, ein Tool-Ergebnis oder ein Hinweis, bevor sie gespeichert wird | `next({ ...e, message })` mit einem geänderten `message.content`, um die Textblöcke der Zeile oder den `content` eines darin enthaltenen `tool_result`-Blocks umzuschreiben |
143| `session.attach`, `session.detach` | Eine andere App sich mit der Sitzung verbindet oder die Verbindung trennt | `next(e)` |143| `session.attach`, `session.detach` | Eine andere App sich mit der Sitzung verbindet oder die Verbindung trennt | `next(e)` |
144| `session.measure` | Nach jedem Turn und wenn sich der genutzte Prozentsatz eines Planlimits ändert | `next(e)` |144| `session.measure` | Nach jedem Turn und wenn sich der genutzte Prozentsatz eines Planlimits ändert | `next(e)` |
150| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |150| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
151| :- | :- | :- |151| :- | :- | :- |
152| `agent.offer` | Claude ein Subagenten-Typ angeboten wird | `{ isOffered: false }`, um ihn zurückzuhalten |152| `agent.offer` | Claude ein Subagenten-Typ angeboten wird | `{ isOffered: false }`, um ihn zurückzuhalten |
153| `agent.spawn` | Ein Subagent oder ein Teammitglied eines [Agent-Teams](/docs/de/agent-teams.md) gleich startet. Bei einem Teammitglied ist `e.isTeammate` gleich `true`. | `next({ ...e, model })`, um sein Modell zu wählen, oder `{ deny: reason }` |153| `agent.spawn` | Ein Subagent oder ein Teammitglied eines [Agent-Teams](https://code.claude.com/docs/de/agent-teams.md) gleich startet. Bei einem Teammitglied ist `e.isTeammate` gleich `true`. | `next({ ...e, model })`, um sein Modell zu wählen, oder `{ deny: reason }` |
154 154
155Wenn Claude einen Subagenten mit dem Tool [`SendMessage`](/docs/de/sub-agents#resume-subagents) fortsetzt, wird Ihr `agent.spawn`-Hook nicht erneut ausgeführt. Um die `SendMessage`-Aufrufe abzulehnen, die einen Subagenten fortsetzen, gleichen Sie dieses Tool in einem [`tool.call`](/docs/de/plugins/mods/events#guard-or-change-a-tool-call)-Hook ab.155Wenn Claude einen Subagenten mit dem Tool [`SendMessage`](https://code.claude.com/docs/de/sub-agents#resume-subagents) fortsetzt, wird Ihr `agent.spawn`-Hook nicht erneut ausgeführt. Um die `SendMessage`-Aufrufe abzulehnen, die einen Subagenten fortsetzen, gleichen Sie dieses Tool in einem [`tool.call`](https://code.claude.com/docs/de/plugins/mods/events#guard-or-change-a-tool-call)-Hook ab.
156 156
157### Oberfläche157### Oberfläche
158 158
159Oberflächen-Events werden ausgelöst, wenn Claude Code eine Render-Stelle zeichnet und wenn der Benutzer ein Steuerelement verwendet, das ein Mod gezeichnet hat. [In der Oberfläche zeichnen](/docs/de/plugins/mods/interface.md) zeigt, was ein `ui.render`-Hook zurückgibt:159Oberflächen-Events werden ausgelöst, wenn Claude Code eine Render-Stelle zeichnet und wenn der Benutzer ein Steuerelement verwendet, das ein Mod gezeichnet hat. [In der Oberfläche zeichnen](https://code.claude.com/docs/de/plugins/mods/interface.md) zeigt, was ein `ui.render`-Hook zurückgibt:
160 160
161| Event | Wird ausgelöst, wenn |161| Event | Wird ausgelöst, wenn |
162| :- | :- |162| :- | :- |
163| [`ui.render`](/docs/de/plugins/mods/interface#pick-where-to-draw) | Eine [Render-Stelle](#render-sites) gleich gezeichnet wird |163| [`ui.render`](https://code.claude.com/docs/de/plugins/mods/interface#pick-where-to-draw) | Eine [Render-Stelle](#render-sites) gleich gezeichnet wird |
164| `ui.resolve` | Mods geladen werden, einmal für jede App, Render-Stelle und jeden Mod. Das Ergebnis ist die Element-Tabelle, die `$.ui.resolve(e)` liest. |164| `ui.resolve` | Mods geladen werden, einmal für jede App, Render-Stelle und jeden Mod. Das Ergebnis ist die Element-Tabelle, die `$.ui.resolve(e)` liest. |
165| [`ui.press`](/docs/de/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](/docs/de/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](/docs/de/plugins/mods/interface#respond-to-presses-and-typing) | Ein `Button`, `Input` oder `Select`, das ein Mod gezeichnet hat, verwendet wird |165| [`ui.press`](https://code.claude.com/docs/de/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](https://code.claude.com/docs/de/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](https://code.claude.com/docs/de/plugins/mods/interface#respond-to-presses-and-typing) | Ein `Button`, `Input` oder `Select`, das ein Mod gezeichnet hat, verwendet wird |
166| `ui.focus`, `ui.scroll` | Sich das fokussierte Steuerelement oder die Scrollposition eines Bereichs oder des Bands gleich ändert |166| `ui.focus`, `ui.scroll` | Sich das fokussierte Steuerelement oder die Scrollposition eines Bereichs oder des Bands gleich ändert |
167| `ui.close` | Ein Bereich gleich geschlossen wird. `e.id` ist der Bereich und `e.origin.kind` ist `plugin`, `person` oder `unload`. |167| `ui.close` | Ein Bereich gleich geschlossen wird. `e.id` ist der Bereich und `e.origin.kind` ist `plugin`, `person` oder `unload`. |
168| [`ui.message`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | Ein `Client`-Element Daten an seinen Mod sendet |168| [`ui.message`](https://code.claude.com/docs/de/plugins/mods/interface#build-a-tree-from-elements) | Ein `Client`-Element Daten an seinen Mod sendet |
169| [`ui.fault`](/docs/de/plugins/mods/interface#redraw-when-something-changes) | Ein `Client`-Element, das Ihr Mod gezeichnet hat, nicht geladen, gezeichnet oder ausgeführt werden konnte. `e.phase` ist `load`, `render` oder `run`, und `e.reason` ist die Fehlermeldung. Erfordert Claude Code v2.1.289 oder höher. |169| [`ui.fault`](https://code.claude.com/docs/de/plugins/mods/interface#redraw-when-something-changes) | Ein `Client`-Element, das Ihr Mod gezeichnet hat, nicht geladen, gezeichnet oder ausgeführt werden konnte. `e.phase` ist `load`, `render` oder `run`, und `e.reason` ist die Fehlermeldung. Erfordert Claude Code v2.1.289 oder höher. |
170 170
171### Andere Mods171### Andere Mods
172 172
174 174
175| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |175| Event | Wird ausgelöst, wenn | Ein Hook kann zurückgeben |
176| :- | :- | :- |176| :- | :- | :- |
177| [`plugin.register`](/docs/de/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Ein Hooks-Modul gleich geladen wird. `e.uses` listet seine Events, Mods-API-Aufrufe, Umgebungsvariablen und seinen Zustand auf, so wie `claude plugin validate` sie ausgibt. Jeder Aufruf wird ohne das Präfix `$.` geschrieben, etwa `fs.read`. | `{ refuse: reason }` |177| [`plugin.register`](https://code.claude.com/docs/de/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Ein Hooks-Modul gleich geladen wird. `e.uses` listet seine Events, Mods-API-Aufrufe, Umgebungsvariablen und seinen Zustand auf, so wie `claude plugin validate` sie ausgibt. Jeder Aufruf wird ohne das Präfix `$.` geschrieben, etwa `fs.read`. | `{ refuse: reason }` |
178| `engine.create` | Die Mods-API für diesen Mod aufgebaut wird | Eine geänderte Mods-API, um einen Namespace hinzuzufügen. Ein Mod außerhalb der [Stufe](#the-hook-function) `user` kann auch einen zurückhalten. |178| `engine.create` | Die Mods-API für diesen Mod aufgebaut wird | Eine geänderte Mods-API, um einen Namespace hinzuzufügen. Ein Mod außerhalb der [Stufe](#the-hook-function) `user` kann auch einen zurückhalten. |
179 179
180Wenn der Hook eines anderen Mods eine Methode in einem Namespace aufruft, den Sie in `engine.create` hinzugefügt haben, laufen die `$`-Aufrufe Ihrer Methode im Kontext dieses Hooks, bis jeder Hook auf diesem Event zurückgekehrt ist. Beispielsweise wird ein relativer Pfad relativ zum Arbeitsverzeichnis dieses Hooks aufgelöst, und `$.prompt.submit` wird abgelehnt, solange der Turn auf diesen Hook wartet. Aufrufe, die Ihre Methode danach durchführt, laufen im eigenen Kontext Ihres Mods.180Wenn der Hook eines anderen Mods eine Methode in einem Namespace aufruft, den Sie in `engine.create` hinzugefügt haben, laufen die `$`-Aufrufe Ihrer Methode im Kontext dieses Hooks, bis jeder Hook auf diesem Event zurückgekehrt ist. Beispielsweise wird ein relativer Pfad relativ zum Arbeitsverzeichnis dieses Hooks aufgelöst, und `$.prompt.submit` wird abgelehnt, solange der Turn auf diesen Hook wartet. Aufrufe, die Ihre Methode danach durchführt, laufen im eigenen Kontext Ihres Mods.
189 189
190### Events von Einstellungs-Hooks190### Events von Einstellungs-Hooks
191 191
192Jedes [Event eines Einstellungs-Hooks](/docs/de/hooks.md#hook-events) ist ein Event mit dem Namen `classic.<Event>`, etwa `classic.Stop` oder `classic.PostToolUse`. `e` ist das stdin-JSON des Hooks.192Jedes [Event eines Einstellungs-Hooks](https://code.claude.com/docs/de/hooks.md#hook-events) ist ein Event mit dem Namen `classic.<Event>`, etwa `classic.Stop` oder `classic.PostToolUse`. `e` ist das stdin-JSON des Hooks.
193 193
194### Mods-API-Aufrufe194### Mods-API-Aufrufe
195 195
197 197
198## Methoden der Mods-API198## Methoden der Mods-API
199 199
200Die Mods-API ist das Argument `$`, das jeder Hook erhält. Ihre Methoden sind in Namespaces gruppiert, etwa `$.ui`. Diese Tabelle listet die Methoden jedes Namespace nach Namen auf, sodass `open` in der Zeile `$.ui` dem Aufruf `$.ui.open(...)` entspricht. Die Leitfäden zeigen die gängigen Methoden im Einsatz, und [die Typen für Ihren Build](/docs/de/plugins/mods/create.md#get-the-types-for-your-build) dokumentieren jede Methode mit einem Beispiel.200Die Mods-API ist das Argument `$`, das jeder Hook erhält. Ihre Methoden sind in Namespaces gruppiert, etwa `$.ui`. Diese Tabelle listet die Methoden jedes Namespace nach Namen auf, sodass `open` in der Zeile `$.ui` dem Aufruf `$.ui.open(...)` entspricht. Die Leitfäden zeigen die gängigen Methoden im Einsatz, und [die Typen für Ihren Build](https://code.claude.com/docs/de/plugins/mods/create.md#get-the-types-for-your-build) dokumentieren jede Methode mit einem Beispiel.
201 201
202| Namespace | Methoden |202| Namespace | Methoden |
203| :- | :- |203| :- | :- |
204| `$.plugin` | `name`, `root`: Name und Verzeichnis dieses Plugins |204| `$.plugin` | `name`, `root`: Name und Verzeichnis dieses Plugins |
205| [`$.ui`](/docs/de/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/de/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/de/plugins/mods/api#add-a-command) | `register`, `run`, `list` |206| [`$.command`](https://code.claude.com/docs/de/plugins/mods/api#add-a-command) | `register`, `run`, `list` |
207| [`$.tool`](/docs/de/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |207| [`$.tool`](https://code.claude.com/docs/de/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |
208| `$.agent` | `register`, `spawn`, `list`. `list()` gibt die Subagenten und Teammitglieder dieser Sitzung zurück, jeweils mit einem `status` von `pending`, `running`, `waiting`, `idle`, `completed`, `failed` oder `killed`, wobei `idle` und `waiting` Claude Code v2.1.289 oder neuer erfordern. |208| `$.agent` | `register`, `spawn`, `list`. `list()` gibt die Subagenten und Teammitglieder dieser Sitzung zurück, jeweils mit einem `status` von `pending`, `running`, `waiting`, `idle`, `completed`, `failed` oder `killed`, wobei `idle` und `waiting` Claude Code v2.1.289 oder neuer erfordern. |
209| [`$.model`](/docs/de/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |209| [`$.model`](https://code.claude.com/docs/de/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |
210| [`$.prompt`](/docs/de/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude liest Text aus `submit({ text })` nach einem Satz, der Ihren Mod als Absender nennt. `submit({ text, asUser: true })` sendet den Text als eigene Worte des Benutzers, ohne diesen Satz. |210| [`$.prompt`](https://code.claude.com/docs/de/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude liest Text aus `submit({ text })` nach einem Satz, der Ihren Mod als Absender nennt. `submit({ text, asUser: true })` sendet den Text als eigene Worte des Benutzers, ohne diesen Satz. |
211| `$.turn` | `abort` |211| `$.turn` | `abort` |
212| [`$.session`](/docs/de/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` gibt `{ startedAt, context, rateLimits, cost }` zurück: `context` enthält `tokens`, `window` und `percent`, und `rateLimits` ist eine Liste von `{ kind, percentUsed, resetsAt }`. |212| [`$.session`](https://code.claude.com/docs/de/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` gibt `{ startedAt, context, rateLimits, cost }` zurück: `context` enthält `tokens`, `window` und `percent`, und `rateLimits` ist eine Liste von `{ kind, percentUsed, resetsAt }`. |
213| `$.config` | `list`, `set` |213| `$.config` | `list`, `set` |
214| [`$.settings`](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `read` |214| [`$.settings`](https://code.claude.com/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `read` |
215| [`$.env`](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |215| [`$.env`](https://code.claude.com/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |
216| [`$.fs`](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` ist nicht atomar: Es ersetzt den Inhalt der Datei direkt, sodass ein anderer Prozess eine teilweise geschriebene Datei lesen kann. Speichern Sie Daten, die von mehreren Sitzungen geändert werden, in `$.store`. |216| [`$.fs`](https://code.claude.com/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` ist nicht atomar: Es ersetzt den Inhalt der Datei direkt, sodass ein anderer Prozess eine teilweise geschriebene Datei lesen kann. Speichern Sie Daten, die von mehreren Sitzungen geändert werden, in `$.store`. |
217| [`$.store`](/docs/de/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Ein Key-Value-Speicher, den alle Sitzungen auf dem Rechner gemeinsam nutzen. Siehe [Aus mehr als einer Sitzung speichern](/docs/de/plugins/mods/interface.md#save-from-more-than-one-session). |217| [`$.store`](https://code.claude.com/docs/de/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Ein Key-Value-Speicher, den alle Sitzungen auf dem Rechner gemeinsam nutzen. Siehe [Aus mehr als einer Sitzung speichern](https://code.claude.com/docs/de/plugins/mods/interface.md#save-from-more-than-one-session). |
218| [`$.state`](/docs/de/plugins/mods/interface#keep-a-value-in-\$-state) | Reaktiver Zustand: `get`, `set`, mit den Hilfsfunktionen `atom`, `read`, `update`, `derive` und `memberOf`, importiert aus `claude-code` |218| [`$.state`](https://code.claude.com/docs/de/plugins/mods/interface#keep-a-value-in-\$-state) | Reaktiver Zustand: `get`, `set`, mit den Hilfsfunktionen `atom`, `read`, `update`, `derive` und `memberOf`, importiert aus `claude-code` |
219| [`$.clock`](/docs/de/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |219| [`$.clock`](https://code.claude.com/docs/de/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |
220| [`$.http`](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |220| [`$.http`](https://code.claude.com/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |
221| [`$.process`](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |221| [`$.process`](https://code.claude.com/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |
222| [`$.mcp`](/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` verbindet einen MCP-Server, den das Manifest Ihres eigenen Plugins aufführt. |222| [`$.mcp`](https://code.claude.com/docs/de/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` verbindet einen MCP-Server, den das Manifest Ihres eigenen Plugins aufführt. |
223| `$.audio` | `play`, `speak` |223| `$.audio` | `play`, `speak` |
224| `$.telemetry` | `log`, `mark`. Ein Eintrag wird nur gesendet, wenn Claude Code oder ein integrierter Mod den Aufruf ausführt. |224| `$.telemetry` | `log`, `mark`. Ein Eintrag wird nur gesendet, wenn Claude Code oder ein integrierter Mod den Aufruf ausführt. |
225 225
226## Render-Stellen226## Render-Stellen
227 227
228Eine Render-Stelle ist ein Erweiterungspunkt in der Oberfläche von Claude Code. Jede Zeile ist ein Wert von `e.component` in einem `ui.render`-Hook, mit den Feldern von `e.props` und den Apps, die sie rendern. `e.surface` benennt die App, die zeichnet, etwa `terminal`, `desktop` oder `vscode`. [Ändern, was Claude Code bereits zeichnet](/docs/de/plugins/mods/interface.md#change-what-claude-code-already-draws) zeigt, was ein Hook an einer Stelle tun kann, mit einem Beispiel für jede Möglichkeit.228Eine Render-Stelle ist ein Erweiterungspunkt in der Oberfläche von Claude Code. Jede Zeile ist ein Wert von `e.component` in einem `ui.render`-Hook, mit den Feldern von `e.props` und den Apps, die sie rendern. `e.surface` benennt die App, die zeichnet, etwa `terminal`, `desktop` oder `vscode`. [Ändern, was Claude Code bereits zeichnet](https://code.claude.com/docs/de/plugins/mods/interface.md#change-what-claude-code-already-draws) zeigt, was ein Hook an einer Stelle tun kann, mit einem Beispiel für jede Möglichkeit.
229 229
230Das Rendern in der VS Code-Erweiterung erfordert die Erweiterungsversion 2.1.299 oder höher. Eine Sitzung, die [keine Feature-Flags abruft](/docs/de/env-vars.md#features-that-need-feature-flag-fetching), benötigt 2.1.304 oder höher. [In der VS Code-Erweiterung zeichnen](/docs/de/plugins/mods/interface.md#draw-in-the-vs-code-extension) listet auf, was die Erweiterung anders zeichnet.230Das Rendern in der VS Code-Erweiterung erfordert die Erweiterungsversion 2.1.299 oder höher. Eine Sitzung, die [keine Feature-Flags abruft](https://code.claude.com/docs/de/env-vars.md#features-that-need-feature-flag-fetching), benötigt 2.1.304 oder höher. [In der VS Code-Erweiterung zeichnen](https://code.claude.com/docs/de/plugins/mods/interface.md#draw-in-the-vs-code-extension) listet auf, was die Erweiterung anders zeichnet.
231 231
232| Stelle | `e.props` | `e.requestId` | Gerendert in |232| Stelle | `e.props` | `e.requestId` | Gerendert in |
233| :- | :- | :- | :- |233| :- | :- | :- | :- |
234| [`Pane`](/docs/de/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | Die `id` des Bereichs | Terminal, Desktop, VS Code |234| [`Pane`](https://code.claude.com/docs/de/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | Die `id` des Bereichs | Terminal, Desktop, VS Code |
235| [`AbovePrompt`](/docs/de/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Eine Instanz | Terminal, Desktop |235| [`AbovePrompt`](https://code.claude.com/docs/de/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Eine Instanz | Terminal, Desktop |
236| `UserMessage` | `text`, `origin`, `isExpanded` sowie je nach Herkunft `task` oder `from` | Die Nachrichten-ID | Terminal, Desktop, VS Code |236| `UserMessage` | `text`, `origin`, `isExpanded` sowie je nach Herkunft `task` oder `from` | Die Nachrichten-ID | Terminal, Desktop, VS Code |
237| `AssistantMessage` | Der Text der Antwort | Die Nachrichten-ID | Terminal, Desktop, VS Code |237| `AssistantMessage` | Der Text der Antwort | Die Nachrichten-ID | Terminal, Desktop, VS Code |
238| `ToolUse`, `ToolResult`, `ToolGroup` | Name, Eingabe und Ergebnis des Tools | Die ID des Tool-Aufrufs | Terminal, Desktop, VS Code |238| `ToolUse`, `ToolResult`, `ToolGroup` | Name, Eingabe und Ergebnis des Tools | Die ID des Tool-Aufrufs | Terminal, Desktop, VS Code |
239| `CommandOutput` | `command`, `text` | Die Nachrichten-ID | Terminal, Desktop |239| `CommandOutput` | `command`, `text` | Die Nachrichten-ID | Terminal, Desktop |
240| [`AskUserQuestion`](/docs/de/plugins/mods/interface#change-what-claude-code-already-draws) | Die Frage und die Optionen | Die ID des Tool-Aufrufs | Terminal, Desktop, VS Code |240| [`AskUserQuestion`](https://code.claude.com/docs/de/plugins/mods/interface#change-what-claude-code-already-draws) | Die Frage und die Optionen | Die ID des Tool-Aufrufs | Terminal, Desktop, VS Code |
241| `ToolProgress` | `kind` | Die ID des Tool-Aufrufs | Terminal |241| `ToolProgress` | `kind` | Die ID des Tool-Aufrufs | Terminal |
242| [`Spinner`](/docs/de/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | Die ID des Agenten | Terminal, Desktop, VS Code |242| [`Spinner`](https://code.claude.com/docs/de/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | Die ID des Agenten | Terminal, Desktop, VS Code |
243| `TurnDuration` | `word`, `durationMs` | Die Nachrichten-ID | Terminal |243| `TurnDuration` | `word`, `durationMs` | Die Nachrichten-ID | Terminal |
244| `InfoNotice` | `text`, `command` | Die Nachrichten-ID | Terminal |244| `InfoNotice` | `text`, `command` | Die Nachrichten-ID | Terminal |
245| `SessionMode` | `modes` | Eine Instanz | Terminal, Desktop |245| `SessionMode` | `modes` | Eine Instanz | Terminal, Desktop |
251 251
252* **Breite eines `Pane` oder des Bands**: Zeichnen Sie auf `e.props.bodyColumns`252* **Breite eines `Pane` oder des Bands**: Zeichnen Sie auf `e.props.bodyColumns`
253* **Höhe eines `Pane` neben dem Transkript**: Wenn `e.props.placement` den Wert `'dock'` hat, ist `e.props.scroll.bodyRows` die Anzahl der Zeilen, die der Bereich für Ihren Baum hat253* **Höhe eines `Pane` neben dem Transkript**: Wenn `e.props.placement` den Wert `'dock'` hat, ist `e.props.scroll.bodyRows` die Anzahl der Zeilen, die der Bereich für Ihren Baum hat
254* **Höhe eines `Pane` über dem Prompt**: Wenn `e.props.placement` den Wert `'inline'` hat, wächst der Bereich mit Ihrem Baum bis zu einer Grenze, und `bodyRows` ist diese Grenze. Über das [Feld `rows` von `$.ui.open`](/docs/de/plugins/mods/interface#open-a-pane-at-the-right-time) lässt sich eine andere Grenze anfordern.254* **Höhe eines `Pane` über dem Prompt**: Wenn `e.props.placement` den Wert `'inline'` hat, wächst der Bereich mit Ihrem Baum bis zu einer Grenze, und `bodyRows` ist diese Grenze. Über das [Feld `rows` von `$.ui.open`](https://code.claude.com/docs/de/plugins/mods/interface#open-a-pane-at-the-right-time) lässt sich eine andere Grenze anfordern.
255 255
256Ein Baum, der höher als der Bereich ist, scrollt als Ganzes.256Ein Baum, der höher als der Bereich ist, scrollt als Ganzes.
257 257
258## Elemente258## Elemente
259 259
260Elemente sind die Bausteine eines Baums, den ein `ui.render`-Hook zurückgibt, und Sie erhalten sie über `$.ui.resolve(e)`. [Einen Baum aus Elementen erstellen](/docs/de/plugins/mods/interface.md#build-a-tree-from-elements) zeigt die gängigen Elemente und wie das Terminal sie darstellt, und die [Interface-Galerie](/docs/de/plugins/mods/gallery.md) enthält Screenshots der meisten. Ein Häkchen bedeutet, dass die App das Element darstellen kann.260Elemente sind die Bausteine eines Baums, den ein `ui.render`-Hook zurückgibt, und Sie erhalten sie über `$.ui.resolve(e)`. [Einen Baum aus Elementen erstellen](https://code.claude.com/docs/de/plugins/mods/interface.md#build-a-tree-from-elements) zeigt die gängigen Elemente und wie das Terminal sie darstellt, und die [Interface-Galerie](https://code.claude.com/docs/de/plugins/mods/gallery.md) enthält Screenshots der meisten. Ein Häkchen bedeutet, dass die App das Element darstellen kann.
261 261
262| Element | Wichtigste Props | Terminal | Desktop | VS Code |262| Element | Wichtigste Props | Terminal | Desktop | VS Code |
263| :- | :- | :-: | :-: | :-: |263| :- | :- | :-: | :-: | :-: |
264| [`Box`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `key`, Flex-Layout, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ | ✓ |264| [`Box`](https://code.claude.com/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `key`, Flex-Layout, [`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/de/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/de/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/de/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ | ✓ |266| [`Button`](https://code.claude.com/docs/de/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |
267| [`Link`](/docs/de/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Siehe [Grenzen](#limits). | ✓ | ✓ | ✓ |267| [`Link`](https://code.claude.com/docs/de/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Siehe [Grenzen](#limits). | ✓ | ✓ | ✓ |
268| [`Code`](/docs/de/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |268| [`Code`](https://code.claude.com/docs/de/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/de/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/de/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` | Ein SVG-Dokument, bis zu 131.072 Zeichen | | ✓ | ✓ |272| `Svg` | eine `source` mit SVG-Markup bis zu 131.072 Zeichen, `alt`-Text, `width`, `height` und `isInteractive` | | ✓ | ✓ |
273| [`Client`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key` | ✓ | ✓ | |273| [`Client`](https://code.claude.com/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |
274| [`Raster`](/docs/de/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` bis zu 512, `rows` bis zu 256, `cells`. Siehe [Ein Raster farbiger Zellen zeichnen](/docs/de/plugins/mods/interface.md#draw-a-grid-of-colored-cells). | ✓ | | |274| [`Raster`](https://code.claude.com/docs/de/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` bis zu 512, `rows` bis zu 256, `cells`. Siehe [Ein Raster farbiger Zellen zeichnen](https://code.claude.com/docs/de/plugins/mods/interface.md#draw-a-grid-of-colored-cells). | ✓ | | |
275| `Image` | PNG- oder RGBA-Bytes bis zu 2 MiB oder ein Dateipfad, `columns` und `rows` bis zu 255 sowie `alt`-Text. Siehe [welche Terminals es darstellen](/docs/de/plugins/mods/gallery.md#image-and-client). | ✓ | | |275| `Image` | `key`, eine `source` wie PNG- oder RGBA-Bytes bis zu 2 MiB oder ein Dateipfad, `columns` und `rows` bis zu 255 sowie `alt`-Text. Siehe [welche Terminals es darstellen](https://code.claude.com/docs/de/plugins/mods/gallery.md#image-and-client). | ✓ | | |
276 276
277Weitere Regeln für `Button`: `action` benennt eine der eigenen [Tastenkombinations-Aktionen](/docs/de/keybindings.md) von Claude Code, und die Tastenkombination des Benutzers dafür drückt die Schaltfläche, wenn diese Tastenkombination ein Akkord oder eine Taste mit Modifikator ist. Ein Ziffern-`hotkey` auf einer Schaltfläche im Band wird auch ausgelöst, wenn der Benutzer nur diese Ziffer in einen leeren Prompt eingibt und innehält. Wenn zwei Schaltflächen in einer Zeichnung denselben `hotkey` angeben, erhält ihn die spätere. `autoFocus` akzeptiert bei jedem Steuerelement nur `true`; lassen Sie die Prop also weg, um es deaktiviert zu lassen.277Weitere Regeln für `Button`:
278
279* **`action`**: benennt eine der eigenen [Tastenkombinations-Aktionen](https://code.claude.com/docs/de/keybindings.md) von Claude Code, und die Tastenkombination des Benutzers dafür drückt die Schaltfläche, wenn diese Tastenkombination ein Akkord oder eine Taste mit Modifikator ist
280* **Ziffern-Hotkeys im Band**: Ein Ziffern-`hotkey` auf einer Schaltfläche im Band wird auch ausgelöst, wenn der Benutzer nur diese Ziffer in einen leeren Prompt eingibt und innehält
281* **Ein eingeklapptes Band**: Solange das Band [eingeklappt](https://code.claude.com/docs/de/plugins/mods/interface.md#when-the-user-collapses-the-band) ist, drückt weder eine `action`-Tastenkombination noch ein Hotkey eine Schaltfläche darin
282* **Zwei Schaltflächen mit demselben Hotkey**: Wenn zwei Schaltflächen in einer Zeichnung denselben `hotkey` angeben, erhält ihn die spätere
283
284`autoFocus` akzeptiert bei jedem Steuerelement nur `true`; lassen Sie die Prop also weg, um es deaktiviert zu lassen.
278 285
279Die VS Code-Erweiterung ignoriert einige Element-Props und zeichnet das Element so, als hätten Sie sie weggelassen:286Die VS Code-Erweiterung ignoriert einige Element-Props und zeichnet das Element so, als hätten Sie sie weggelassen:
280 287
281* **`Box`**: `position` und `hover`288* **`Box`**: `position` mit seinen `top`, `left`, `right` und `bottom`, `alignSelf`, `borderDimColor` und `hover`
282* **`Text`**: `size`, `mono` und `tabular`289* **`Text`**: `size`, `mono`, `tabular` und `hover`
283* **`Button`**: `hotkey`, `plain`, `autoFocus` und `action`, sodass der Benutzer eine Schaltfläche dort per Klick drückt oder mit der Eingabetaste, sobald sie den Fokus hat290* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action` und `hover`, sodass der Benutzer eine Schaltfläche dort per Klick drückt oder mit der Eingabetaste, sobald sie den Fokus hat
284* **`Code`**: `language`, `path`, `startLine`, `format` und `wrap`, sodass Code ohne Farben oder Zeilennummern gezeichnet wird und ein Block mit `format: 'diff'` den Rohtext des Diffs anzeigt291* **`Code`**: `language`, `path`, `startLine`, `format` und `wrap`, sodass Code ohne Farben oder Zeilennummern gezeichnet wird und ein Block mit `format: 'diff'` den Rohtext des Diffs anzeigt
285* **`Input` und `Select`**: `autoFocus`292* **`Input` und `Select`**: `autoFocus`
293* **`Svg`**: `isInteractive`
286 294
287### Rahmenstile für `Box`295### Rahmenstile für `Box`
288 296
317 325
318Wenn Sie `gap`, `padding` oder `margin` auf eine Stufe setzen, gilt die Stufe gleichzeitig horizontal und vertikal. Im Terminal und in der VS Code-Erweiterung bedeutet `padding: 'md'` beispielsweise zwei Zellen auf jeder Seite und eine Zeile darüber und darunter.326Wenn Sie `gap`, `padding` oder `margin` auf eine Stufe setzen, gilt die Stufe gleichzeitig horizontal und vertikal. Im Terminal und in der VS Code-Erweiterung bedeutet `padding: 'md'` beispielsweise zwei Zellen auf jeder Seite und eine Zeile darüber und darunter.
319 327
320Stufennamen erfordern Claude Code v2.1.299 oder höher. In einer früheren Version [zeichnet Claude Code seine eigene Version der Site](/docs/de/plugins/mods/interface.md#build-a-tree-from-elements) anstelle eines Baums, der einen Stufennamen verwendet.328Stufennamen erfordern Claude Code v2.1.299 oder höher. In einer früheren Version [zeichnet Claude Code seine eigene Version der Site](https://code.claude.com/docs/de/plugins/mods/interface.md#build-a-tree-from-elements) anstelle eines Baums, der einen Stufennamen verwendet.
321 329
322### Typografie-Props für `Text`330### Typografie-Props für `Text`
323 331
330| `mono` | `true`, um die Festbreitenschrift der App anzufordern | Ignoriert: Das Terminal verwendet immer eine Festbreitenschrift | Ignoriert, sodass der Text die eigene Schrift der Erweiterung behält |338| `mono` | `true`, um die Festbreitenschrift der App anzufordern | Ignoriert: Das Terminal verwendet immer eine Festbreitenschrift | Ignoriert, sodass der Text die eigene Schrift der Erweiterung behält |
331| `tabular` | `true`, um Ziffern gleicher Breite anzufordern, damit eine Zahl, die sich an Ort und Stelle aktualisiert, oder eine Zahlenspalte ausgerichtet bleibt | Ignoriert: Die Ziffern des Terminals sind bereits eine Zelle breit | Ignoriert |339| `tabular` | `true`, um Ziffern gleicher Breite anzufordern, damit eine Zahl, die sich an Ort und Stelle aktualisiert, oder eine Zahlenspalte ausgerichtet bleibt | Ignoriert: Die Ziffern des Terminals sind bereits eine Zelle breit | Ignoriert |
332 340
333Diese vier Props erfordern Claude Code v2.1.299 oder höher. In einer früheren Version [zeichnet Claude Code seine eigene Version der Site](/docs/de/plugins/mods/interface.md#build-a-tree-from-elements) anstelle eines Baums, der `size`, `weight`, `mono` oder `tabular` setzt.341Diese vier Props erfordern Claude Code v2.1.299 oder höher. In einer früheren Version [zeichnet Claude Code seine eigene Version der Site](https://code.claude.com/docs/de/plugins/mods/interface.md#build-a-tree-from-elements) anstelle eines Baums, der `size`, `weight`, `mono` oder `tabular` setzt.
334 342
335#### `bold` durch `weight` ersetzen343#### `bold` durch `weight` ersetzen
336 344
337`bold` auf einem `Text` ist zugunsten von `weight` veraltet, funktioniert aber weiterhin. Um es auf einem `Text` ohne `weight` zu ersetzen, ändern Sie `bold: true` in `weight: 'semibold'`, um unter Claude Code v2.1.299 oder höher dasselbe Ergebnis zu erhalten.345`bold` auf einem `Text` ist zugunsten von `weight` veraltet, funktioniert aber weiterhin. Um es auf einem `Text` ohne `weight` zu ersetzen, ändern Sie `bold: true` in `weight: 'semibold'`, um unter Claude Code v2.1.299 oder höher dasselbe Ergebnis zu erhalten.
338 346
339In einer Version vor v2.1.299 wird ein Baum, der `weight` setzt, nicht gezeichnet, und Claude Code [zeichnet stattdessen seine eigene Version der Site](/docs/de/plugins/mods/interface.md#build-a-tree-from-elements). Wenn Sie auf einem `Text` sowohl `bold` als auch `weight` setzen, hat `bold` keine Wirkung.347In einer Version vor v2.1.299 wird ein Baum, der `weight` setzt, nicht gezeichnet, und Claude Code [zeichnet stattdessen seine eigene Version der Site](https://code.claude.com/docs/de/plugins/mods/interface.md#build-a-tree-from-elements). Wenn Sie auf einem `Text` sowohl `bold` als auch `weight` setzen, hat `bold` keine Wirkung.
340 348
341## Limits349## Limits
342 350
346| :- | :- |354| :- | :- |
347| Eigene Ausführungszeit eines Hooks für ein Ereignis, ohne die Zeit innerhalb von `next` oder eines Aufrufs der Mods-API außer `$.clock.sleep` | 10 Sekunden bzw. 50 Millisekunden für einen `prompt.edit`-Hook |355| Eigene Ausführungszeit eines Hooks für ein Ereignis, ohne die Zeit innerhalb von `next` oder eines Aufrufs der Mods-API außer `$.clock.sleep` | 10 Sekunden bzw. 50 Millisekunden für einen `prompt.edit`-Hook |
348| Ausführungszeit eines `.catch`-Handlers | 1 Sekunde |356| Ausführungszeit eines `.catch`-Handlers | 1 Sekunde |
349| Alle `session.end`-Hooks zusammen | So lange wie das [Zeitbudget des SessionEnd-Hooks](/docs/de/hooks.md#sessionend-input), 1,5 Sekunden, sofern Sie es nicht ändern, gemessen ab dem Zeitpunkt, an dem die `SessionEnd`-Hooks aus Ihren Einstellungen abgeschlossen sind |357| Alle `session.end`-Hooks zusammen | So lange wie das [Zeitbudget des SessionEnd-Hooks](https://code.claude.com/docs/de/hooks.md#sessionend-input), 1,5 Sekunden, sofern Sie es nicht ändern, gemessen ab dem Zeitpunkt, an dem die `SessionEnd`-Hooks aus Ihren Einstellungen abgeschlossen sind |
350| `$.process.run`-Timeout | Standardmäßig 30 Sekunden, höchstens 10 Minuten |358| `$.process.run`-Timeout | Standardmäßig 30 Sekunden, höchstens 10 Minuten |
351| `$.model.complete` `maxTokens` | Standardmäßig 1024, bis zu 64.000 oder das Ausgabelimit des Modells |359| `$.model.complete` `maxTokens` | Standardmäßig 1024, bis zu 64.000 oder das Ausgabelimit des Modells |
352| `$.fs.read` und `$.fs.write` | 4 MiB für eine Datei |360| `$.fs.read` und `$.fs.write` | 4 MiB für eine Datei |
354| Response-Body eines `$.http.fetch`-Aufrufs | 4 MiB. `text` enthält die ersten 4 MiB, der Rest wird nicht gelesen. Wenn der `Content-Length`-Header mehr angibt, wird der Aufruf stattdessen abgelehnt, mit einem Grund, der auf `is over the 4194304-byte limit` endet, außer wenn die letzte Anfrage nach etwaigen Weiterleitungen die Methode `HEAD` verwendet. Die Ausnahme für `HEAD` erfordert Claude Code v2.1.296 oder höher. |362| Response-Body eines `$.http.fetch`-Aufrufs | 4 MiB. `text` enthält die ersten 4 MiB, der Rest wird nicht gelesen. Wenn der `Content-Length`-Header mehr angibt, wird der Aufruf stattdessen abgelehnt, mit einem Grund, der auf `is over the 4194304-byte limit` endet, außer wenn die letzte Anfrage nach etwaigen Weiterleitungen die Methode `HEAD` verwendet. Die Ausnahme für `HEAD` erfordert Claude Code v2.1.296 oder höher. |
355| Ein `$.http.fetch`-Aufruf, einschließlich Weiterleitungen und Body | 30 Sekunden |363| Ein `$.http.fetch`-Aufruf, einschließlich Weiterleitungen und Body | 30 Sekunden |
356| Weiterleitungen, denen ein `$.http.fetch`-Aufruf folgt | 5 |364| Weiterleitungen, denen ein `$.http.fetch`-Aufruf folgt | 5 |
357| `drop`-Grund eines Hooks oder `deny`-Grund von `config.set` | 4.096 Zeichen. Das Ende eines längeren Grundes wird abgeschnitten, und das Drop bzw. Deny gilt weiterhin. Das Abschneiden erfordert Claude Code v2.1.292 oder höher; in früheren Versionen [schlägt der Hook stattdessen fehl](/docs/de/plugins/mods/events.md#handle-a-hook-that-fails). |365| `drop`-Grund eines Hooks oder `deny`-Grund von `config.set` | 4.096 Zeichen. Das Ende eines längeren Grundes wird abgeschnitten, und das Drop bzw. Deny gilt weiterhin. Das Abschneiden erfordert Claude Code v2.1.292 oder höher; in früheren Versionen [schlägt der Hook stattdessen fehl](https://code.claude.com/docs/de/plugins/mods/events.md#handle-a-hook-that-fails). |
358| Text in einem Baum | Die ersten 100.000 Zeichen werden gezeichnet |366| Text in einem Baum | Die ersten 100.000 Zeichen werden gezeichnet |
359| `language` oder `path` eines `Code`, `value` einer `Select`-Option oder `module` eines `Client` | 10.000 Zeichen. Ist einer dieser Werte länger, [zeichnet Claude Code eine eigene Version der Stelle](/docs/de/plugins/mods/interface.md#build-a-tree-from-elements). |367| `language` oder `path` eines `Code`, `value` einer `Select`-Option oder `module` eines `Client` | 10.000 Zeichen. Ist einer dieser Werte länger, [zeichnet Claude Code eine eigene Version der Stelle](https://code.claude.com/docs/de/plugins/mods/interface.md#build-a-tree-from-elements). |
360| `href` eines `Link` | 2.048 Zeichen. Ein längerer `href` verhindert, dass der gesamte Baum gezeichnet wird. |368| `href` eines `Link` | 2.048 Zeichen. Ein längerer `href` verhindert, dass der gesamte Baum gezeichnet wird. |
361| `$.store` | Insgesamt 4 MiB JSON |369| `$.store` | Insgesamt 4 MiB JSON |
362| `$.session.messages()` | Die neuesten 4.096 Einträge |370| `$.session.messages()` | Die neuesten 4.096 Einträge |
375| :- | :- | :- |383| :- | :- | :- |
376| `CLAUDE_CODE_PLUGIN_DIRS` | Umgebung oder `env` in `~/.claude/settings.json` | Plugin-Verzeichnisse, die wie mit `--plugin-dir` geladen werden, für Anwendungen, denen Sie kein Flag übergeben können. Absolute Pfade, getrennt durch `:` bzw. unter Windows durch `;`. |384| `CLAUDE_CODE_PLUGIN_DIRS` | Umgebung oder `env` in `~/.claude/settings.json` | Plugin-Verzeichnisse, die wie mit `--plugin-dir` geladen werden, für Anwendungen, denen Sie kein Flag übergeben können. Absolute Pfade, getrennt durch `:` bzw. unter Windows durch `;`. |
377| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Umgebung | `1` bewirkt, dass eine lang laufende nicht-interaktive Sitzung `--plugin-dir`-Mods beim Speichern neu lädt |385| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Umgebung | `1` bewirkt, dass eine lang laufende nicht-interaktive Sitzung `--plugin-dir`-Mods beim Speichern neu lädt |
378| `prependPlugins`, `appendPlugins` | Verwaltete Einstellungen. Benutzereinstellungen nur auf einem Rechner ohne verwaltete Einstellungen und in einer Sitzung, deren Anmeldedaten nicht aus einem Team- oder Enterprise-`/login` stammen. | Listen von Plugin-IDs, etwa `acme-guard@acme-tools`. Mods in `prependPlugins` laufen vor jedem Mod, den ein Benutzer installiert, und Mods in `appendPlugins` danach, jeweils in der aufgeführten Reihenfolge. Siehe [Die Reihenfolge, in der Mods ausgeführt werden](/docs/de/plugins/mods/events.md#the-order-mods-run-in). |386| `prependPlugins`, `appendPlugins` | Verwaltete Einstellungen. Benutzereinstellungen nur auf einem Rechner ohne verwaltete Einstellungen und in einer Sitzung, deren Anmeldedaten nicht aus einem Team- oder Enterprise-`/login` stammen. | Listen von Plugin-IDs, etwa `acme-guard@acme-tools`. Mods in `prependPlugins` laufen vor jedem Mod, den ein Benutzer installiert, und Mods in `appendPlugins` danach, jeweils in der aufgeführten Reihenfolge. Siehe [Die Reihenfolge, in der Mods ausgeführt werden](https://code.claude.com/docs/de/plugins/mods/events.md#the-order-mods-run-in). |
379| `allowManagedModsOnly` | Verwaltete Einstellungen, als [Option des integrierten Wächters](/docs/de/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Nur Mods, die [als Mods Ihrer Organisation gelten](/docs/de/plugins/mods/admin.md#install-your-organizations-mods), sowie die in Claude Code integrierten Mods führen ihre Hooks aus. Die Einstellungs-Hooks der Benutzer laufen weiter. |387| `allowManagedModsOnly` | Verwaltete Einstellungen, als [Option des integrierten Wächters](https://code.claude.com/docs/de/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Nur Mods, die [als Mods Ihrer Organisation gelten](https://code.claude.com/docs/de/plugins/mods/admin.md#install-your-organizations-mods), sowie die in Claude Code integrierten Mods führen ihre Hooks aus. Die Einstellungs-Hooks der Benutzer laufen weiter. |
380| `allowModsToOverrideDenyRules` | Verwaltete Einstellungen, als [Option des integrierten Wächters](/docs/de/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Erlaubt einem von einem Benutzer installierten Mod, einen Tool-Aufruf zu genehmigen, den eine `deny`-Regel ablehnt |388| `allowModsToOverrideDenyRules` | Verwaltete Einstellungen, als [Option des integrierten Wächters](https://code.claude.com/docs/de/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Erlaubt einem von einem Benutzer installierten Mod, einen Tool-Aufruf zu genehmigen, den eine `deny`-Regel ablehnt |
381| `allowManagedHooksOnly` | Verwaltete Einstellungen | Blockiert Hooks und installierte Mods, die nicht von Ihrer Organisation stammen. Siehe [was weiterhin ausgeführt wird](/docs/de/settings-reference.md#what-runs-under-allowmanagedhooksonly). |389| `allowManagedHooksOnly` | Verwaltete Einstellungen | Blockiert Hooks und installierte Mods, die nicht von Ihrer Organisation stammen. Siehe [was weiterhin ausgeführt wird](https://code.claude.com/docs/de/settings-reference.md#what-runs-under-allowmanagedhooksonly). |
382| `disableAllHooks` | Jede Einstellungsdatei | In verwalteten Einstellungen wird kein Mod und kein Hook aus einem installierten Plugin ausgeführt. In Ihren eigenen Einstellungen läuft weiterhin, was Ihre Organisation verwaltet. Siehe [`disableAllHooks`](/docs/de/settings-reference#disableallhooks). |390| `disableAllHooks` | Jede Einstellungsdatei | In verwalteten Einstellungen wird kein Mod und kein Hook aus einem installierten Plugin ausgeführt. In Ihren eigenen Einstellungen läuft weiterhin, was Ihre Organisation verwaltet. Siehe [`disableAllHooks`](https://code.claude.com/docs/de/settings-reference#disableallhooks). |
383| `disableSideloadFlags` | Verwaltete Einstellungen | Lehnt `--plugin-dir` und `--plugin-url` beim Start ab |391| `disableSideloadFlags` | Verwaltete Einstellungen | Lehnt `--plugin-dir` und `--plugin-url` beim Start ab |
384| `pluginConfigs` | Benutzer- oder verwaltete Einstellungen | Enthält `userConfig`-Werte für einen Mod, mit der ID des Plugins als Schlüssel, etwa `acme-guard@acme-tools`, oder mit seinem Namen und `@inline`, etwa `first-mod@inline`, für einen mit `--plugin-dir` geladenen Mod |392| `pluginConfigs` | Benutzer- oder verwaltete Einstellungen | Enthält `userConfig`-Werte für einen Mod, mit der ID des Plugins als Schlüssel, etwa `acme-guard@acme-tools`, oder mit seinem Namen und `@inline`, etwa `first-mod@inline`, für einen mit `--plugin-dir` geladenen Mod |
385 393
386`sec-default@builtin` ist ein in Claude Code integrierter Wächter, der in `/plugin` und im Debug-Log als `cc-plugin-sec-default` aufgeführt wird. Er wird vor jedem Mod geladen, den eine Person auf einem Rechner mit verwalteten Einstellungen installiert, oder in einer Sitzung, deren Anmeldedaten aus einem Team- oder Enterprise-[`/login`](/docs/de/authentication#authentication-precedence) stammen. Wenn das verwaltete `prependPlugins` gesetzt ist, wird der Wächter nur geladen, wenn diese Liste ihn aufführt, und zwar an der aufgeführten Position.394`sec-default@builtin` ist ein in Claude Code integrierter Wächter, der in `/plugin` und im Debug-Log als `cc-plugin-sec-default` aufgeführt wird. Er wird vor jedem Mod geladen, den eine Person auf einem Rechner mit verwalteten Einstellungen installiert, oder in einer Sitzung, deren Anmeldedaten aus einem Team- oder Enterprise-[`/login`](https://code.claude.com/docs/de/authentication#authentication-precedence) stammen. Wenn das verwaltete `prependPlugins` gesetzt ist, wird der Wächter nur geladen, wenn diese Liste ihn aufführt, und zwar an der aufgeführten Position.
387 395
388Sein Quellcode befindet sich im [Verzeichnis `mods/sec-default` des Claude Code-Repositorys](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).396Sein Quellcode befindet sich im [Verzeichnis `mods/sec-default` des Claude Code-Repositorys](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).
389 397
393 401
394| Befehl | Funktion |402| Befehl | Funktion |
395| :- | :- |403| :- | :- |
396| [`/plugin`](/docs/de/plugins/mods/overview#see-which-mods-a-session-loaded) | Zeigt unter seinen Tabs eine Zeile wie `1 mod active · first-mod` an, wenn ein nicht integrierter Mod geladen wurde |404| [`/plugin`](https://code.claude.com/docs/de/plugins/mods/overview#see-which-mods-a-session-loaded) | Zeigt unter seinen Tabs eine Zeile wie `1 mod active · first-mod` an, wenn ein nicht integrierter Mod geladen wurde |
397| [`claude plugin validate <directory>`](/docs/de/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Liest das Manifest und das Hooks-Modul eines Plugins und meldet Fehler, die behandelten Events sowie die Aufrufe der Mods-API. `--strict` behandelt Warnungen als Fehler, und `--json` gibt einen maschinenlesbaren Bericht aus. |405| [`claude plugin validate <directory>`](https://code.claude.com/docs/de/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Liest das Manifest und das Hooks-Modul eines Plugins und meldet Fehler, die behandelten Events sowie die Aufrufe der Mods-API. `--strict` behandelt Warnungen als Fehler, und `--json` gibt einen maschinenlesbaren Bericht aus. |
398| [`claude plugin test [directory]`](/docs/de/plugins/mods/test#write-a-test) | Führt jede Datei unter dem Verzeichnis aus, deren Name auf `.test.ts` oder `.test.tsx` endet, bzw. im aktuellen Verzeichnis, wenn Sie keines angeben. Beendet sich mit Status 1, wenn ein Test fehlschlägt. |406| [`claude plugin test [directory]`](https://code.claude.com/docs/de/plugins/mods/test#write-a-test) | Führt jede Datei unter dem Verzeichnis aus, deren Name auf `.test.ts` oder `.test.tsx` endet, bzw. im aktuellen Verzeichnis, wenn Sie keines angeben. Beendet sich mit Status 1, wenn ein Test fehlschlägt. |
399| [`claude --plugin-dir <directory>`](/docs/de/plugins/mods/create#write-a-mod-yourself) | Lädt ein Plugin-Verzeichnis für eine Sitzung und lädt dessen Hooks-Modul beim Speichern neu. Wiederholen Sie das Flag, um mehrere zu laden. |407| [`claude --plugin-dir <directory>`](https://code.claude.com/docs/de/plugins/mods/create#write-a-mod-yourself) | Lädt ein Plugin-Verzeichnis für eine Sitzung und lädt dessen Hooks-Modul beim Speichern neu. Wiederholen Sie das Flag, um mehrere zu laden. |
400| `/reload-plugins` | Lädt Plugins neu, wenn Sie den Befehl ausführen |408| `/reload-plugins` | Lädt Plugins neu, wenn Sie den Befehl ausführen |