6 6
7> Riferimento completo per i mod di Claude Code: struttura del modulo degli hook, eventi, metodi dell'API dei mod, punti di rendering, elementi per superficie, limiti e impostazioni.7> Riferimento completo per i mod di Claude Code: struttura del modulo degli hook, eventi, metodi dell'API dei mod, punti di rendering, elementi per superficie, limiti e impostazioni.
8 8
9Consulta qualsiasi evento che un [mod](/docs/it/plugins/mods/overview.md) può gestire, qualsiasi metodo dell'API dei mod che può chiamare o qualsiasi punto di rendering in cui può disegnare. Le voci coprono la CLI di Claude Code e l'app Desktop a partire dalla v2.1.290, e l'estensione VS Code a partire dalla v2.1.299. Ogni voce riporta il nome e una descrizione di una riga e, dove presente, rimanda alla sezione della guida che lo spiega.9Consulta qualsiasi evento che un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) può gestire, qualsiasi metodo dell'API dei mod che può chiamare o qualsiasi punto di rendering in cui può disegnare. Le voci coprono la CLI di Claude Code e l'app Desktop a partire dalla v2.1.290, e l'estensione VS Code a partire dalla v2.1.299. Ogni voce riporta il nome e una descrizione di una riga e, dove presente, rimanda alla sezione della guida che lo spiega.
10 10
11> [!NOTE]11> [!NOTE]
12>12>
13> Il riferimento completo sono le [dichiarazioni TypeScript per i mod](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) di Claude Code, che descrivono ogni evento, metodo ed elemento, con esempi. La copia su GitHub può essere più vecchia della versione di Claude Code che hai installato. Quando le due non coincidono, fai affidamento sulla [copia che Claude Code scrive per la tua versione](/docs/it/plugins/mods/create.md#get-the-types-for-your-build).13> Il riferimento completo sono le [dichiarazioni TypeScript per i mod](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) di Claude Code, che descrivono ogni evento, metodo ed elemento, con esempi. La copia su GitHub può essere più vecchia della versione di Claude Code che hai installato. Quando le due non coincidono, fai affidamento sulla [copia che Claude Code scrive per la tua versione](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build).
14 14
15## File15## File
16 16
18 18
19| File | Obbligatorio | Contenuto |19| File | Obbligatorio | Contenuto |
20| :- | :- | :- |20| :- | :- | :- |
21| `.claude-plugin/plugin.json` | Sì | Il [manifest](/docs/it/plugins/manifest-reference.md) del plugin. I mod non aggiungono campi obbligatori. |21| `.claude-plugin/plugin.json` | Sì | Il [manifest](https://code.claude.com/docs/it/plugins/manifest-reference.md) del plugin. I mod non aggiungono campi obbligatori. |
22| `hooks/hooks.json` | Sì | `modules`: un array con un percorso, relativo a questo file, al modulo degli hook, come in `"modules": ["./register.js"]`. Può contenere anche [hook delle impostazioni](/docs/it/hooks.md) sotto `hooks`. |22| `hooks/hooks.json` | Sì | `modules`: un array con un percorso, relativo a questo file, al modulo degli hook, come in `"modules": ["./register.js"]`. Può contenere anche [hook delle impostazioni](https://code.claude.com/docs/it/hooks.md) sotto `hooks`. |
23| Il modulo degli hook, ad esempio [`hooks/register.js`](/docs/it/plugins/mods/create#write-a-mod-yourself) | Sì | Il punto di ingresso del mod. Esporta `register(on, options)`. Con estensione `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` o `.tsx`. Un modulo ES. |23| Il modulo degli hook, ad esempio [`hooks/register.js`](https://code.claude.com/docs/it/plugins/mods/create#write-a-mod-yourself) | Sì | Il punto di ingresso del mod. Esporta `register(on, options)`. Con estensione `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` o `.tsx`. Un modulo ES. |
24| [`types/index.d.ts`](/docs/it/plugins/mods/interface#declare-the-values), indicato da `types` nel manifest | Quando il mod usa `$.state` o aggiunge un namespace all'API dei mod | Dichiara i valori di `PluginState` e qualsiasi namespace aggiunto dal mod |24| [`types/index.d.ts`](https://code.claude.com/docs/it/plugins/mods/interface#declare-the-values), indicato da `types` nel manifest | Quando il mod usa `$.state` o aggiunge un namespace all'API dei mod | Dichiara i valori di `PluginState` e qualsiasi namespace aggiunto dal mod |
25| File i cui nomi terminano con `.test.ts` o `.test.tsx` | No | Test eseguiti da [`claude plugin test`](/docs/it/plugins/mods/test#write-a-test) |25| File i cui nomi terminano con `.test.ts` o `.test.tsx` | No | Test eseguiti da [`claude plugin test`](https://code.claude.com/docs/it/plugins/mods/test#write-a-test) |
26 26
27`register` riceve `on` e `options`. `options` contiene i valori dei campi [`userConfig`](/docs/it/plugins/components#user-configuration) dichiarati dal manifest, con i valori predefiniti compilati.27`register` riceve `on` e `options`. `options` contiene i valori dei campi [`userConfig`](https://code.claude.com/docs/it/plugins/components#user-configuration) dichiarati dal manifest, con i valori predefiniti compilati.
28 28
29## La funzione hook29## La funzione hook
30 30
31Un mod registra ciascuno dei suoi hook, che sono gestori di eventi, chiamando `on` all'interno di `register`. `on` accetta il nome dell'evento, un [matcher](/docs/it/plugins/mods/events.md#filter-which-events-a-hook-handles) facoltativo, che è un filtro sui campi dell'evento, e l'hook, come in `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` restituisce una registrazione con un solo metodo, `.catch(handler)`, che imposta il [gestore degli errori](/docs/it/plugins/mods/events.md#handle-a-hook-that-fails) dell'hook.31Un mod registra ciascuno dei suoi hook, che sono gestori di eventi, chiamando `on` all'interno di `register`. `on` accetta il nome dell'evento, un [matcher](https://code.claude.com/docs/it/plugins/mods/events.md#filter-which-events-a-hook-handles) facoltativo, che è un filtro sui campi dell'evento, e l'hook, come in `on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))`. `on` restituisce una registrazione con un solo metodo, `.catch(handler)`, che imposta il [gestore degli errori](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails) dell'hook.
32 32
33| Argomento | Che cos'è |33| Argomento | Che cos'è |
34| :- | :- |34| :- | :- |
35| [`$`](/docs/it/plugins/mods/events#how-a-hook-handles-an-event) | L'API dei mod: ogni metodo in [metodi dell'API dei mod](#mods-api-methods). Scrivi ogni chiamata per intero, prima il namespace e poi il metodo, come in `$.fs.read('notes.md')`. |35| [`$`](https://code.claude.com/docs/it/plugins/mods/events#how-a-hook-handles-an-event) | L'API dei mod: ogni metodo in [metodi dell'API dei mod](#mods-api-methods). Scrivi ogni chiamata per intero, prima il namespace e poi il metodo, come in `$.fs.read('notes.md')`. |
36| [`e`](/docs/it/plugins/mods/events#how-a-hook-handles-an-event) | L'input dell'evento, come dati semplici congelati in profondità. Per modificarlo, passa una copia a `next`. |36| [`e`](https://code.claude.com/docs/it/plugins/mods/events#how-a-hook-handles-an-event) | L'input dell'evento, come dati semplici congelati in profondità. Per modificarlo, passa una copia a `next`. |
37| [`next(e)`](/docs/it/plugins/mods/events#how-a-hook-handles-an-event) | Il gestore successivo, come in un middleware. Esegue gli hook successivi a questo, poi il comportamento di Claude Code. Si risolve nel risultato dell'evento. |37| [`next(e)`](https://code.claude.com/docs/it/plugins/mods/events#how-a-hook-handles-an-event) | Il gestore successivo, come in un middleware. Esegue gli hook successivi a questo, poi il comportamento di Claude Code. Si risolve nel risultato dell'evento. |
38| [`next.signal`](/docs/it/plugins/mods/api#stop-background-work) | Un `AbortSignal` che si interrompe quando l'evento viene abbandonato |38| [`next.signal`](https://code.claude.com/docs/it/plugins/mods/api#stop-background-work) | Un `AbortSignal` che si interrompe quando l'evento viene abbandonato |
39| `next.origin` | `{ plugin, tier }` di chi ha generato l'evento. Claude Code stesso è `{ plugin: 'engine', tier: 'core' }`. Il `tier` di un mod è il suo gruppo di priorità nell'[ordine in cui vengono eseguiti i mod](/docs/it/plugins/mods/events.md#the-order-mods-run-in): `prepend`, `user`, `append` o `builtin`. |39| `next.origin` | `{ plugin, tier }` di chi ha generato l'evento. Claude Code stesso è `{ plugin: 'engine', tier: 'core' }`. Il `tier` di un mod è il suo gruppo di priorità nell'[ordine in cui vengono eseguiti i mod](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in): `prepend`, `user`, `append` o `builtin`. |
40| `next.budget` | Il limite di tempo dell'hook in millisecondi: `next.budget.ms` è il limite complessivo e `next.budget.remainingMs` è il tempo rimanente in quel momento |40| `next.budget` | Il limite di tempo dell'hook in millisecondi: `next.budget.ms` è il limite complessivo e `next.budget.remainingMs` è il tempo rimanente in quel momento |
41| `next.to(e, tier)` | Salta a un tier successivo, che può essere `append`, `builtin` o `core`. `next.to(e, 'append')` salta i mod installati da un utente. Solo un mod in `prependPlugins` o `appendPlugins` può chiamarlo. |41| `next.to(e, tier)` | Salta a un tier successivo, che può essere `append`, `builtin` o `core`. `next.to(e, 'append')` salta i mod installati da un utente. Solo un mod in `prependPlugins` o `appendPlugins` può chiamarlo. |
42| `next.error` | Solo in un gestore `.catch`. `kind` è `throw` o `timeout` quando l'hook non è riuscito, e `message` è il testo dell'errore. `kind` è `re-entry` quando l'hook è stato saltato perché l'evento proveniva dall'interno di una chiamata all'API dei mod effettuata da quell'hook o dal codice del tuo mod al di fuori dei suoi hook. `re-entry` richiede Claude Code v2.1.292 o versioni successive. |42| `next.error` | Solo in un gestore `.catch`. `kind` è `throw` o `timeout` quando l'hook non è riuscito, e `message` è il testo dell'errore. `kind` è `re-entry` quando l'hook è stato saltato perché l'evento proveniva dall'interno di una chiamata all'API dei mod effettuata da quell'hook o dal codice del tuo mod al di fuori dei suoi hook. `re-entry` richiede Claude Code v2.1.292 o versioni successive. |
43| `next.error.cause` | Impostato solo quando `kind` è `re-entry`. `rewritten` se un hook `tool.call` o [`PreToolUse`](/docs/it/hooks#pretooluse) ha modificato la chiamata all'API dei mod da cui proveniva l'evento, oppure se un hook `agent.spawn` ha modificato un agente avviato da quella chiamata. `lent` quando a generare quell'evento è stato un metodo che un altro mod aggiunge all'API dei mod, a meno che non si applichi anche `rewritten`. `lent` richiede Claude Code v2.1.292 o versioni successive e `rewritten` v2.1.300 o versioni successive. |43| `next.error.cause` | Impostato solo quando `kind` è `re-entry`. `rewritten` se un hook `tool.call` o [`PreToolUse`](https://code.claude.com/docs/it/hooks#pretooluse) ha modificato la chiamata all'API dei mod da cui proveniva l'evento, oppure se un hook `agent.spawn` ha modificato un agente avviato da quella chiamata. `lent` quando a generare quell'evento è stato un metodo che un altro mod aggiunge all'API dei mod, a meno che non si applichi anche `rewritten`. `lent` richiede Claude Code v2.1.292 o versioni successive e `rewritten` v2.1.300 o versioni successive. |
44| `next.called` | Solo in un gestore `.catch`. `true` quando l'hook aveva chiamato `next`. |44| `next.called` | Solo in un gestore `.catch`. `true` quando l'hook aveva chiamato `next`. |
45 45
46## Eventi46## Eventi
55 55
56| Evento | Si attiva quando | Un hook può restituire |56| Evento | Si attiva quando | Un hook può restituire |
57| :- | :- | :- |57| :- | :- | :- |
58| [`tool.call`](/docs/it/plugins/mods/events#guard-or-change-a-tool-call) | Uno strumento sta per essere eseguito | `next(e)`, `{ deny: reason }` oppure `{ result }` |58| [`tool.call`](https://code.claude.com/docs/it/plugins/mods/events#guard-or-change-a-tool-call) | Uno strumento sta per essere eseguito | `next(e)`, `{ deny: reason }` oppure `{ result }` |
59| [`tool.check`](/docs/it/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code decide se una chiamata a uno strumento può essere eseguita, dopo gli hook `tool.call` e `PreToolUse`. `next(e)` si risolve nella decisione raggiunta dalle regole, dalla modalità di permesso e da quegli hook. | `next(e)` oppure `{ decision }`, con `decision` impostato su `allow`, `ask` o `deny` e un `reason` facoltativo |59| [`tool.check`](https://code.claude.com/docs/it/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code decide se una chiamata a uno strumento può essere eseguita, dopo gli hook `tool.call` e `PreToolUse`. `next(e)` si risolve nella decisione raggiunta dalle regole, dalla modalità di permesso e da quegli hook. | `next(e)` oppure `{ decision }`, con `decision` impostato su `allow`, `ask` o `deny` e un `reason` facoltativo |
60| `tool.describe` | Una volta per ogni strumento, quando la sua descrizione viene inviata per la prima volta a Claude. Una seconda volta per uno strumento MCP quando Claude lo carica tramite la [ricerca degli strumenti](/docs/it/mcp.md#scale-with-mcp-tool-search), con `e.description` impostato sul testo che Claude legge per lo strumento caricato. | `{ description }`, facoltativamente con `isDeferred` impostato su `true` per mettere lo strumento dietro la ricerca degli strumenti o su `false` per caricarlo subito |60| `tool.describe` | Una volta per ogni strumento, quando la sua descrizione viene inviata per la prima volta a Claude. Una seconda volta per uno strumento MCP quando Claude lo carica tramite la [ricerca degli strumenti](https://code.claude.com/docs/it/mcp.md#scale-with-mcp-tool-search), con `e.description` impostato sul testo che Claude legge per lo strumento caricato. | `{ description }`, facoltativamente con `isDeferred` impostato su `true` per mettere lo strumento dietro la ricerca degli strumenti o su `false` per caricarlo subito |
61 61
62#### Campi dell'agente e dell'organizzazione su `tool.check`62#### Campi dell'agente e dell'organizzazione su `tool.check`
63 63
64In un hook `tool.check`, leggi questi campi per distinguere la chiamata di un subagent da quella della conversazione principale e per verificare se la tua organizzazione richiede l'approvazione per uno strumento di un connettore:64In un hook `tool.check`, leggi questi campi per distinguere la chiamata di un subagent da quella della conversazione principale e per verificare se la tua organizzazione richiede l'approvazione per uno strumento di un connettore:
65 65
66* **`e.agentId`**: impostato quando la chiamata viene effettuata da un [subagent](/docs/it/sub-agents.md) o da un [membro del team in-process](/docs/it/agent-teams.md#choose-a-display-mode), e assente quando la effettua la conversazione principale66* **`e.agentId`**: impostato quando la chiamata viene effettuata da un [subagent](https://code.claude.com/docs/it/sub-agents.md) o da un [membro del team in-process](https://code.claude.com/docs/it/agent-teams.md#choose-a-display-mode), e assente quando la effettua la conversazione principale
67* **`e.ceiling`**: `ask` per uno strumento di un connettore che la tua organizzazione ha impostato su `ask`, nelle [sessioni in cui tale impostazione raggiunge Claude Code](/docs/it/mcp.md#organization-controls-on-connector-tools)67* **`e.ceiling`**: `ask` per uno strumento di un connettore che la tua organizzazione ha impostato su `ask`, nelle [sessioni in cui tale impostazione raggiunge Claude Code](https://code.claude.com/docs/it/mcp.md#organization-controls-on-connector-tools)
68 68
69Su `tool.check`, `e.agentId` e `e.ceiling` richiedono Claude Code v2.1.290 o versioni successive.69Su `tool.check`, `e.agentId` e `e.ceiling` richiedono Claude Code v2.1.290 o versioni successive.
70 70
71#### Il campo `e.isReadOnly` su `tool.check`71#### Il campo `e.isReadOnly` su `tool.check`
72 72
73In un hook `tool.check`, `e.isReadOnly` è `true` quando lo strumento segnala questa chiamata come di sola lettura. Altrimenti il campo è assente, non `false`. Il valore è ciò che segnala lo strumento stesso, quindi leggi [Verificare se una chiamata a uno strumento è di sola lettura](/docs/it/plugins/mods/events.md#check-whether-a-tool-call-is-read-only) prima di approvare una chiamata basandoti solo su questo campo.73In un hook `tool.check`, `e.isReadOnly` è `true` quando lo strumento segnala questa chiamata come di sola lettura. Altrimenti il campo è assente, non `false`. Il valore è ciò che segnala lo strumento stesso, quindi leggi [Verificare se una chiamata a uno strumento è di sola lettura](https://code.claude.com/docs/it/plugins/mods/events.md#check-whether-a-tool-call-is-read-only) prima di approvare una chiamata basandoti solo su questo campo.
74 74
75Su `tool.check`, `e.isReadOnly` richiede Claude Code v2.1.304 o versioni successive.75Su `tool.check`, `e.isReadOnly` richiede Claude Code v2.1.304 o versioni successive.
76 76
80 80
81| Evento | Si attiva quando | Un hook può restituire |81| Evento | Si attiva quando | Un hook può restituire |
82| :- | :- | :- |82| :- | :- | :- |
83| [`prompt.submit`](/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Viene inviato un prompt | `next({ ...e, text })`, `next({ ...e, context })` oppure `{ drop: reason }` |83| [`prompt.submit`](https://code.claude.com/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Viene inviato un prompt | `next({ ...e, text })`, `next({ ...e, context })` oppure `{ drop: reason }` |
84| `prompt.fill`, `prompt.suggest` | Del testo sta per essere inserito nella casella del prompt come bozza o come suggerimento attenuato | `next(e)` con il testo modificato |84| `prompt.fill`, `prompt.suggest` | Del testo sta per essere inserito nella casella del prompt come bozza o come suggerimento attenuato | `next(e)` con il testo modificato |
85| `prompt.edit` | L'utente modifica la casella del prompt | `next(e)` |85| `prompt.edit` | L'utente modifica la casella del prompt | `next(e)` |
86| `prompt.autocomplete` | L'utente digita nella casella del prompt e una parola termina in corrispondenza del cursore. `e.token` è quella parola. Claude Code non attende l'hook: le sue righe di completamento automatico vengono mostrate per prime. | `{ suggestions }`, un elenco di righe `{ text, label, description }` mostrate sotto quelle di Claude Code. La scelta di una riga sostituisce la parola con il suo `text`. |86| `prompt.autocomplete` | L'utente digita nella casella del prompt e una parola termina in corrispondenza del cursore. `e.token` è quella parola. Claude Code non attende l'hook: le sue righe di completamento automatico vengono mostrate per prime. | `{ suggestions }`, un elenco di righe `{ text, label, description }` mostrate sotto quelle di Claude Code. La scelta di una riga sostituisce la parola con il suo `text`. |
87| `prompt.compose` | Claude Code genera un prompt di sistema | `{ sections }`, un elenco di `{ id, text, scope }` nell'ordine in cui vengono inviati |87| `prompt.compose` | Claude Code genera un prompt di sistema | `{ sections }`, un elenco di `{ id, text, scope }` nell'ordine in cui vengono inviati |
88| [`prompt.section`](/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Una volta per ogni sezione con nome del prompt di sistema. `e.name` è l'`id` della sezione in `prompt.compose`. | `{ text }` oppure `{ text: null }` per omettere la sezione |88| [`prompt.section`](https://code.claude.com/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Una volta per ogni sezione con nome del prompt di sistema. `e.name` è l'`id` della sezione in `prompt.compose`. | `{ text }` oppure `{ text: null }` per omettere la sezione |
89| [`prompt.context`](/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Una volta per ogni conversazione, per il contesto inviato con il primo messaggio | `{ blocks }` |89| [`prompt.context`](https://code.claude.com/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Una volta per ogni conversazione, per il contesto inviato con il primo messaggio | `{ blocks }` |
90| `prompt.attachment` | Claude Code aggiunge un proprio messaggio per Claude, come un promemoria. `e.type` indica il tipo e, per i tipi dichiarati dalle definizioni dei tipi, `e.detail` contiene i dati a partire dai quali è stato scritto il testo. | `{ text }` oppure `{ text: null }` per ometterlo |90| `prompt.attachment` | Claude Code aggiunge un proprio messaggio per Claude, come un promemoria. `e.type` indica il tipo e, per i tipi dichiarati dalle definizioni dei tipi, `e.detail` contiene i dati a partire dai quali è stato scritto il testo. | `{ text }` oppure `{ text: null }` per ometterlo |
91| `prompt.mention` | Claude Code sta per leggere un file menzionato con @ in un prompt. Richiede Claude Code v2.1.290 o versioni successive. | `next({ ...e, path })` per leggere un file diverso, oppure `{ deny: reason }` |91| `prompt.mention` | Claude Code sta per leggere un file menzionato con @ in un prompt. Richiede Claude Code v2.1.290 o versioni successive. | `next({ ...e, path })` per leggere un file diverso, oppure `{ deny: reason }` |
92| [`skill.prompt`](/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Il testo di una skill viene espanso per Claude | `{ text }` |92| [`skill.prompt`](https://code.claude.com/docs/it/plugins/mods/events#rewrite-or-add-to-a-prompt) | Il testo di una skill viene espanso per Claude | `{ text }` |
93| `attribution.text` | Claude Code compone il testo di attribuzione di un commit o di una pull request | `{ text }` |93| `attribution.text` | Claude Code compone il testo di attribuzione di un commit o di una pull request | `{ text }` |
94 94
95#### Campi di origine e frontmatter su `skill.prompt`95#### Campi di origine e frontmatter su `skill.prompt`
98 98
99| Campo | Tipo | Cosa contiene |99| Campo | Tipo | Cosa contiene |
100| :- | :- | :- |100| :- | :- | :- |
101| `e.source` | string | Chi fornisce la skill: `policySettings`, `userSettings` o `projectSettings` per una skill rispettivamente nella [posizione](/docs/it/skills.md#where-skills-live) enterprise, personale o di progetto. Le altre origini restituiscono una parola come `plugin`, `mcp`, `syncedSkills` o `built-in`. |101| `e.source` | string | Chi fornisce la skill: `policySettings`, `userSettings` o `projectSettings` per una skill rispettivamente nella [posizione](https://code.claude.com/docs/it/skills.md#where-skills-live) enterprise, personale o di progetto. Le altre origini restituiscono una parola come `plugin`, `mcp`, `syncedSkills` o `built-in`. |
102| `e.pluginName` | string | Il nome del plugin, per una skill il cui `e.source` è `plugin` |102| `e.pluginName` | string | Il nome del plugin, per una skill il cui `e.source` è `plugin` |
103| `e.path` | string | Il percorso assoluto del file `SKILL.md` della skill, o del suo file `.md` per una skill scritta come [file di comando](/docs/it/skills.md#where-skills-live). Assente quando la skill non ha alcun file su questa macchina, come nel caso di una skill integrata. |103| `e.path` | string | Il percorso assoluto del file `SKILL.md` della skill, o del suo file `.md` per una skill scritta come [file di comando](https://code.claude.com/docs/it/skills.md#where-skills-live). Assente quando la skill non ha alcun file su questa macchina, come nel caso di una skill integrata. |
104| `e.frontmatter` | object | Il frontmatter del file della skill, come dati semplici |104| `e.frontmatter` | object | Il frontmatter del file della skill, come dati semplici |
105| `e.frontmatterProblem` | string | Il motivo per cui in `e.frontmatter` manca il frontmatter del file o una delle sue chiavi, come in `is a list or a single value, not a table`. Assente quando `e.frontmatter` contiene l'intero frontmatter o quando la skill non ne ha. |105| `e.frontmatterProblem` | string | Il motivo per cui in `e.frontmatter` manca il frontmatter del file o una delle sue chiavi, come in `is a list or a single value, not a table`. Assente quando `e.frontmatter` contiene l'intero frontmatter o quando la skill non ne ha. |
106 106
107Un hook può passare un `text` o un `frontmatter` modificato a `next`: gli hook successivi leggono entrambi e Claude legge il `text` finale. Un hook che modifica qualsiasi altro campo [non riesce](/docs/it/plugins/mods/events.md#handle-a-hook-that-fails).107Un hook può passare un `text` o un `frontmatter` modificato a `next`: gli hook successivi leggono entrambi e Claude legge il `text` finale. Un hook che modifica qualsiasi altro campo [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails).
108 108
109Su `skill.prompt`, `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` e `e.frontmatterProblem` richiedono Claude Code v2.1.299 o versioni successive.109Su `skill.prompt`, `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` e `e.frontmatterProblem` richiedono Claude Code v2.1.299 o versioni successive.
110 110
114 114
115| Evento | Si attiva quando | Un hook può restituire |115| Evento | Si attiva quando | Un hook può restituire |
116| :- | :- | :- |116| :- | :- | :- |
117| [`command.run`](/docs/it/plugins/mods/api#add-a-command) | Un comando sta per essere eseguito | `{ text }`, `{}` oppure `next(e)` |117| [`command.run`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command) | Un comando sta per essere eseguito | `{ text }`, `{}` oppure `next(e)` |
118| `command.describe` | Una volta per ogni comando, per l'elenco dei comandi | `{ description, argumentHint, isHidden }` |118| `command.describe` | Una volta per ogni comando, per l'elenco dei comandi | `{ description, argumentHint, isHidden }` |
119| `config.set` | Una riga di `/config` sta per cambiare | `next({ ...e, value })` oppure `{ deny: reason }` |119| `config.set` | Una riga di `/config` sta per cambiare | `next({ ...e, value })` oppure `{ deny: reason }` |
120| `config.describe` | Una volta per ogni riga di `/config` | `{ label, description, isHidden }` |120| `config.describe` | Una volta per ogni riga di `/config` | `{ label, description, isHidden }` |
125 125
126| Evento | Si attiva quando | Un hook può restituire |126| Evento | Si attiva quando | Un hook può restituire |
127| :- | :- | :- |127| :- | :- | :- |
128| [`turn.start`](/docs/it/plugins/mods/events#follow-a-turn) | Inizia un turno | `next(e)` |128| [`turn.start`](https://code.claude.com/docs/it/plugins/mods/events#follow-a-turn) | Inizia un turno | `next(e)` |
129| [`turn.step`](/docs/it/plugins/mods/events#follow-a-turn) | Una richiesta sta per essere inviata al modello | `yield* next(e)`, oppure `next({ ...e, model })`, `next({ ...e, effort })` |129| [`turn.step`](https://code.claude.com/docs/it/plugins/mods/events#follow-a-turn) | Una richiesta sta per essere inviata al modello | `yield* next(e)`, oppure `next({ ...e, model })`, `next({ ...e, effort })` |
130| [`turn.complete`](/docs/it/plugins/mods/events#follow-a-turn) | Un turno è terminato | `next(e)` oppure `{ text }` per mostrare una riga sotto la risposta |130| [`turn.complete`](https://code.claude.com/docs/it/plugins/mods/events#follow-a-turn) | Un turno è terminato | `next(e)` oppure `{ text }` per mostrare una riga sotto la risposta |
131 131
132### Sessione132### Sessione
133 133
135 135
136| Evento | Si attiva quando | Un hook può restituire |136| Evento | Si attiva quando | Un hook può restituire |
137| :- | :- | :- |137| :- | :- | :- |
138| [`session.start`](/docs/it/plugins/mods/api#add-a-command-or-a-tool) | Una volta per ogni mod caricato, prima del primo prompt, e di nuovo dopo un ricaricamento di quel mod. Non dopo `/clear`, `/resume` o `/branch`. | `next(e)` |138| [`session.start`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command-or-a-tool) | Una volta per ogni mod caricato, prima del primo prompt, e di nuovo dopo un ricaricamento di quel mod. Non dopo `/clear`, `/resume` o `/branch`. | `next(e)` |
139| `session.end` | La sessione termina, oppure viene eseguito `/clear`, `/resume` o `/branch`. `e.reason` è `clear`, `resume`, `logout`, `prompt_input_exit` o `other`. `/branch` riporta `resume`. | `next(e)` |139| `session.end` | La sessione termina, oppure viene eseguito `/clear`, `/resume` o `/branch`. `e.reason` è `clear`, `resume`, `logout`, `prompt_input_exit` o `other`. `/branch` riporta `resume`. | `next(e)` |
140| `session.compact` | La conversazione sta per essere compattata | `{ skip: reason }` |140| `session.compact` | La conversazione sta per essere compattata | `{ skip: reason }` |
141| [`session.receive`](/docs/it/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](/docs/it/plugins/mods/api#send-and-receive-messages-between-sessions) | Un messaggio arriva da un altro agente o da un'altra sessione, o sta per esservi inviato. Consulta [Inviare e ricevere messaggi tra sessioni](/docs/it/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` per `receive`, `{ isDelivered: false, reason }` per `send` |141| [`session.receive`](https://code.claude.com/docs/it/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](https://code.claude.com/docs/it/plugins/mods/api#send-and-receive-messages-between-sessions) | Un messaggio arriva da un altro agente o da un'altra sessione, o sta per esservi inviato. Consulta [Inviare e ricevere messaggi tra sessioni](https://code.claude.com/docs/it/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` per `receive`, `{ isDelivered: false, reason }` per `send` |
142| `session.append` | Una volta per ogni riga che la conversazione conserva, come un prompt, un blocco di risposta, il risultato di uno strumento o un avviso, prima che venga memorizzata | `next({ ...e, message })` con un `message.content` modificato, per riscrivere i blocchi di testo della riga o il `content` di un blocco `tool_result` al suo interno |142| `session.append` | Una volta per ogni riga che la conversazione conserva, come un prompt, un blocco di risposta, il risultato di uno strumento o un avviso, prima che venga memorizzata | `next({ ...e, message })` con un `message.content` modificato, per riscrivere i blocchi di testo della riga o il `content` di un blocco `tool_result` al suo interno |
143| `session.attach`, `session.detach` | Un'altra app si connette alla sessione o si disconnette da essa | `next(e)` |143| `session.attach`, `session.detach` | Un'altra app si connette alla sessione o si disconnette da essa | `next(e)` |
144| `session.measure` | Dopo ogni turno e quando cambia la percentuale utilizzata di un limite del piano | `next(e)` |144| `session.measure` | Dopo ogni turno e quando cambia la percentuale utilizzata di un limite del piano | `next(e)` |
150| Evento | Si attiva quando | Un hook può restituire |150| Evento | Si attiva quando | Un hook può restituire |
151| :- | :- | :- |151| :- | :- | :- |
152| `agent.offer` | Un tipo di subagent viene offerto a Claude | `{ isOffered: false }` per non renderlo disponibile |152| `agent.offer` | Un tipo di subagent viene offerto a Claude | `{ isOffered: false }` per non renderlo disponibile |
153| `agent.spawn` | Un subagent o un membro di un [team di agenti](/docs/it/agent-teams.md) sta per avviarsi. Per un membro del team, `e.isTeammate` è `true`. | `next({ ...e, model })` per sceglierne il modello, oppure `{ deny: reason }` |153| `agent.spawn` | Un subagent o un membro di un [team di agenti](https://code.claude.com/docs/it/agent-teams.md) sta per avviarsi. Per un membro del team, `e.isTeammate` è `true`. | `next({ ...e, model })` per sceglierne il modello, oppure `{ deny: reason }` |
154 154
155Quando Claude riprende un subagent con lo strumento [`SendMessage`](/docs/it/sub-agents#resume-subagents), il tuo hook `agent.spawn` non viene eseguito di nuovo. Per rifiutare le chiamate a `SendMessage` che riprendono un subagent, individua quello strumento in un hook [`tool.call`](/docs/it/plugins/mods/events#guard-or-change-a-tool-call).155Quando Claude riprende un subagent con lo strumento [`SendMessage`](https://code.claude.com/docs/it/sub-agents#resume-subagents), il tuo hook `agent.spawn` non viene eseguito di nuovo. Per rifiutare le chiamate a `SendMessage` che riprendono un subagent, individua quello strumento in un hook [`tool.call`](https://code.claude.com/docs/it/plugins/mods/events#guard-or-change-a-tool-call).
156 156
157### Interfaccia157### Interfaccia
158 158
159Gli eventi dell'interfaccia si attivano quando Claude Code disegna un punto di rendering e quando l'utente usa un controllo disegnato da un mod. [Disegnare nell'interfaccia](/docs/it/plugins/mods/interface.md) mostra cosa restituisce un hook `ui.render`:159Gli eventi dell'interfaccia si attivano quando Claude Code disegna un punto di rendering e quando l'utente usa un controllo disegnato da un mod. [Disegnare nell'interfaccia](https://code.claude.com/docs/it/plugins/mods/interface.md) mostra cosa restituisce un hook `ui.render`:
160 160
161| Evento | Si attiva quando |161| Evento | Si attiva quando |
162| :- | :- |162| :- | :- |
163| [`ui.render`](/docs/it/plugins/mods/interface#pick-where-to-draw) | Un [punto di rendering](#render-sites) sta per essere disegnato |163| [`ui.render`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | Un [punto di rendering](#render-sites) sta per essere disegnato |
164| `ui.resolve` | I mod vengono caricati, una volta per ogni app, punto di rendering e mod. Il risultato è la tabella degli elementi letta da `$.ui.resolve(e)`. |164| `ui.resolve` | I mod vengono caricati, una volta per ogni app, punto di rendering e mod. Il risultato è la tabella degli elementi letta da `$.ui.resolve(e)`. |
165| [`ui.press`](/docs/it/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](/docs/it/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | Viene usato un `Button`, un `Input` o un `Select` disegnato da un mod |165| [`ui.press`](https://code.claude.com/docs/it/plugins/mods/interface#respond-to-presses-and-typing), [`ui.input`](https://code.claude.com/docs/it/plugins/mods/interface#respond-to-presses-and-typing), [`ui.select`](https://code.claude.com/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | Viene usato un `Button`, un `Input` o un `Select` disegnato da un mod |
166| `ui.focus`, `ui.scroll` | Il controllo con il focus o la posizione di scorrimento di un pannello o della banda sta per cambiare |166| `ui.focus`, `ui.scroll` | Il controllo con il focus o la posizione di scorrimento di un pannello o della banda sta per cambiare |
167| `ui.close` | Un pannello sta per chiudersi. `e.id` è il pannello e `e.origin.kind` è `plugin`, `person` o `unload`. |167| `ui.close` | Un pannello sta per chiudersi. `e.id` è il pannello e `e.origin.kind` è `plugin`, `person` o `unload`. |
168| [`ui.message`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | Un elemento `Client` invia dati al proprio mod |168| [`ui.message`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | Un elemento `Client` invia dati al proprio mod |
169| [`ui.fault`](/docs/it/plugins/mods/interface#redraw-when-something-changes) | Un elemento `Client` disegnato dal tuo mod non è riuscito a caricarsi, a essere disegnato o a essere eseguito. `e.phase` è `load`, `render` o `run`, e `e.reason` è il messaggio di errore. Richiede Claude Code v2.1.289 o versioni successive. |169| [`ui.fault`](https://code.claude.com/docs/it/plugins/mods/interface#redraw-when-something-changes) | Un elemento `Client` disegnato dal tuo mod non è riuscito a caricarsi, a essere disegnato o a essere eseguito. `e.phase` è `load`, `render` o `run`, e `e.reason` è il messaggio di errore. Richiede Claude Code v2.1.289 o versioni successive. |
170 170
171### Altri mod171### Altri mod
172 172
174 174
175| Evento | Si attiva quando | Un hook può restituire |175| Evento | Si attiva quando | Un hook può restituire |
176| :- | :- | :- |176| :- | :- | :- |
177| [`plugin.register`](/docs/it/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un modulo degli hook sta per essere caricato. `e.uses` elenca i suoi eventi, le chiamate all'API dei mod, le variabili d'ambiente e lo stato, così come li stampa `claude plugin validate`. Ogni chiamata è scritta senza il prefisso `$.`, ad esempio `fs.read`. | `{ refuse: reason }` |177| [`plugin.register`](https://code.claude.com/docs/it/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un modulo degli hook sta per essere caricato. `e.uses` elenca i suoi eventi, le chiamate all'API dei mod, le variabili d'ambiente e lo stato, così come li stampa `claude plugin validate`. Ogni chiamata è scritta senza il prefisso `$.`, ad esempio `fs.read`. | `{ refuse: reason }` |
178| `engine.create` | L'API dei mod viene costruita per questo mod | Un'API dei mod modificata, per aggiungere un namespace. Un mod al di fuori del [livello](#the-hook-function) `user` può anche escluderne uno. |178| `engine.create` | L'API dei mod viene costruita per questo mod | Un'API dei mod modificata, per aggiungere un namespace. Un mod al di fuori del [livello](#the-hook-function) `user` può anche escluderne uno. |
179 179
180Quando l'hook di un altro mod chiama un metodo su un namespace che hai aggiunto in `engine.create`, le chiamate `$` del tuo metodo vengono eseguite nel contesto di quell'hook finché ogni hook su quell'evento non ha restituito un risultato. Ad esempio, un percorso relativo viene risolto rispetto alla directory di lavoro di quell'hook, e `$.prompt.submit` viene rifiutata mentre il turno è in attesa di quell'hook. Le chiamate che il tuo metodo effettua dopo quel momento vengono eseguite nel contesto proprio del tuo mod.180Quando l'hook di un altro mod chiama un metodo su un namespace che hai aggiunto in `engine.create`, le chiamate `$` del tuo metodo vengono eseguite nel contesto di quell'hook finché ogni hook su quell'evento non ha restituito un risultato. Ad esempio, un percorso relativo viene risolto rispetto alla directory di lavoro di quell'hook, e `$.prompt.submit` viene rifiutata mentre il turno è in attesa di quell'hook. Le chiamate che il tuo metodo effettua dopo quel momento vengono eseguite nel contesto proprio del tuo mod.
189 189
190### Eventi degli hook delle impostazioni190### Eventi degli hook delle impostazioni
191 191
192Ogni [evento degli hook delle impostazioni](/docs/it/hooks.md#hook-events) è un evento denominato `classic.<Event>`, come `classic.Stop` o `classic.PostToolUse`. `e` è il JSON dello stdin dell'hook.192Ogni [evento degli hook delle impostazioni](https://code.claude.com/docs/it/hooks.md#hook-events) è un evento denominato `classic.<Event>`, come `classic.Stop` o `classic.PostToolUse`. `e` è il JSON dello stdin dell'hook.
193 193
194### Chiamate all'API dei mod194### Chiamate all'API dei mod
195 195
197 197
198## Metodi dell'API dei mod198## Metodi dell'API dei mod
199 199
200L'API dei mod è l'argomento `$` che ogni hook riceve. I suoi metodi sono raggruppati in namespace, come `$.ui`. Questa tabella elenca i metodi di ogni namespace per nome, quindi `open` nella riga `$.ui` corrisponde alla chiamata `$.ui.open(...)`. Le guide mostrano l'uso di quelli più comuni, e [i tipi per la tua build](/docs/it/plugins/mods/create.md#get-the-types-for-your-build) documentano ogni metodo con un esempio.200L'API dei mod è l'argomento `$` che ogni hook riceve. I suoi metodi sono raggruppati in namespace, come `$.ui`. Questa tabella elenca i metodi di ogni namespace per nome, quindi `open` nella riga `$.ui` corrisponde alla chiamata `$.ui.open(...)`. Le guide mostrano l'uso di quelli più comuni, e [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build) documentano ogni metodo con un esempio.
201 201
202| Namespace | Metodi |202| Namespace | Metodi |
203| :- | :- |203| :- | :- |
204| `$.plugin` | `name`, `root`: il nome e la directory di questo plugin |204| `$.plugin` | `name`, `root`: il nome e la directory di questo plugin |
205| [`$.ui`](/docs/it/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/it/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/it/plugins/mods/api#add-a-command) | `register`, `run`, `list` |206| [`$.command`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command) | `register`, `run`, `list` |
207| [`$.tool`](/docs/it/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |207| [`$.tool`](https://code.claude.com/docs/it/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |
208| `$.agent` | `register`, `spawn`, `list`. `list()` restituisce i subagent e i compagni di squadra di questa sessione, ciascuno con uno `status` tra `pending`, `running`, `waiting`, `idle`, `completed`, `failed` o `killed`, dove `idle` e `waiting` richiedono Claude Code v2.1.289 o versioni successive. |208| `$.agent` | `register`, `spawn`, `list`. `list()` restituisce i subagent e i compagni di squadra di questa sessione, ciascuno con uno `status` tra `pending`, `running`, `waiting`, `idle`, `completed`, `failed` o `killed`, dove `idle` e `waiting` richiedono Claude Code v2.1.289 o versioni successive. |
209| [`$.model`](/docs/it/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |209| [`$.model`](https://code.claude.com/docs/it/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |
210| [`$.prompt`](/docs/it/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude legge il testo di `submit({ text })` dopo una frase che indica il tuo mod come mittente. `submit({ text, asUser: true })` invia il testo come parole dell'utente stesso, senza quella frase. |210| [`$.prompt`](https://code.claude.com/docs/it/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude legge il testo di `submit({ text })` dopo una frase che indica il tuo mod come mittente. `submit({ text, asUser: true })` invia il testo come parole dell'utente stesso, senza quella frase. |
211| `$.turn` | `abort` |211| `$.turn` | `abort` |
212| [`$.session`](/docs/it/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` restituisce `{ startedAt, context, rateLimits, cost }`: `context` contiene `tokens`, `window` e `percent`, e `rateLimits` è un elenco di `{ kind, percentUsed, resetsAt }`. |212| [`$.session`](https://code.claude.com/docs/it/plugins/mods/api#send-and-receive-messages-between-sessions) | `messages`, `cwd`, `root`, `model`, `turns`, `id`, `repo`, `surfaces`, `usage`, `version`, `compact`, `send`, `append`, `authorize`. `usage()` restituisce `{ startedAt, context, rateLimits, cost }`: `context` contiene `tokens`, `window` e `percent`, e `rateLimits` è un elenco di `{ kind, percentUsed, resetsAt }`. |
213| `$.config` | `list`, `set` |213| `$.config` | `list`, `set` |
214| [`$.settings`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `read` |214| [`$.settings`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `read` |
215| [`$.env`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |215| [`$.env`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `get`, `set` |
216| [`$.fs`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` non è atomico: sostituisce il contenuto del file sul posto, quindi un altro processo può leggere un file scritto solo in parte. Conserva in `$.store` i dati modificati da più sessioni. |216| [`$.fs`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `read`, `write`, `list`, `exists`, `stat`, `ancestors`. `write` non è atomico: sostituisce il contenuto del file sul posto, quindi un altro processo può leggere un file scritto solo in parte. Conserva in `$.store` i dati modificati da più sessioni. |
217| [`$.store`](/docs/it/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Un archivio chiave-valore condiviso da tutte le sessioni sulla macchina. Consulta [Salvare da più di una sessione](/docs/it/plugins/mods/interface.md#save-from-more-than-one-session). |217| [`$.store`](https://code.claude.com/docs/it/plugins/mods/interface#keep-state) | `get`, `set`, `delete`, `keys`. Un archivio chiave-valore condiviso da tutte le sessioni sulla macchina. Consulta [Salvare da più di una sessione](https://code.claude.com/docs/it/plugins/mods/interface.md#save-from-more-than-one-session). |
218| [`$.state`](/docs/it/plugins/mods/interface#keep-a-value-in-\$-state) | Stato reattivo: `get`, `set`, con gli helper `atom`, `read`, `update`, `derive` e `memberOf` importati da `claude-code` |218| [`$.state`](https://code.claude.com/docs/it/plugins/mods/interface#keep-a-value-in-\$-state) | Stato reattivo: `get`, `set`, con gli helper `atom`, `read`, `update`, `derive` e `memberOf` importati da `claude-code` |
219| [`$.clock`](/docs/it/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |219| [`$.clock`](https://code.claude.com/docs/it/plugins/mods/api#run-work-in-the-background) | `now`, `sleep`, `after`, `every` |
220| [`$.http`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |220| [`$.http`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `fetch` |
221| [`$.process`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |221| [`$.process`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `run`, `spawn` |
222| [`$.mcp`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` connette un server MCP elencato nel manifest del tuo plugin. |222| [`$.mcp`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) | `call`, `connect`. `connect(server)` connette un server MCP elencato nel manifest del tuo plugin. |
223| `$.audio` | `play`, `speak` |223| `$.audio` | `play`, `speak` |
224| `$.telemetry` | `log`, `mark`. Un record viene inviato solo quando la chiamata è effettuata da Claude Code o da un mod integrato. |224| `$.telemetry` | `log`, `mark`. Un record viene inviato solo quando la chiamata è effettuata da Claude Code o da un mod integrato. |
225 225
226## Punti di rendering226## Punti di rendering
227 227
228Un punto di rendering è un punto di estensione nell'interfaccia di Claude Code. Ogni riga è un valore di `e.component` in un hook `ui.render`, con i campi di `e.props` e le app che lo visualizzano. `e.surface` indica l'app che sta disegnando, come `terminal`, `desktop` o `vscode`. [Modificare ciò che Claude Code disegna già](/docs/it/plugins/mods/interface.md#change-what-claude-code-already-draws) mostra cosa può fare un hook in un punto, con un esempio per ciascuna scelta.228Un punto di rendering è un punto di estensione nell'interfaccia di Claude Code. Ogni riga è un valore di `e.component` in un hook `ui.render`, con i campi di `e.props` e le app che lo visualizzano. `e.surface` indica l'app che sta disegnando, come `terminal`, `desktop` o `vscode`. [Modificare ciò che Claude Code disegna già](https://code.claude.com/docs/it/plugins/mods/interface.md#change-what-claude-code-already-draws) mostra cosa può fare un hook in un punto, con un esempio per ciascuna scelta.
229 229
230Il rendering nell'estensione VS Code richiede la versione 2.1.299 o successiva dell'estensione. Una sessione che [non recupera i feature flag](/docs/it/env-vars.md#features-that-need-feature-flag-fetching) richiede la versione 2.1.304 o successiva. [Disegnare nell'estensione VS Code](/docs/it/plugins/mods/interface.md#draw-in-the-vs-code-extension) elenca ciò che l'estensione disegna in modo diverso.230Il rendering nell'estensione VS Code richiede la versione 2.1.299 o successiva dell'estensione. Una sessione che [non recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching) richiede la versione 2.1.304 o successiva. [Disegnare nell'estensione VS Code](https://code.claude.com/docs/it/plugins/mods/interface.md#draw-in-the-vs-code-extension) elenca ciò che l'estensione disegna in modo diverso.
231 231
232| Punto | `e.props` | `e.requestId` | Visualizzato su |232| Punto | `e.props` | `e.requestId` | Visualizzato su |
233| :- | :- | :- | :- |233| :- | :- | :- | :- |
234| [`Pane`](/docs/it/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` del pannello | Terminale, Desktop, VS Code |234| [`Pane`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` del pannello | Terminale, Desktop, VS Code |
235| [`AbovePrompt`](/docs/it/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Una sola istanza | Terminale, Desktop |235| [`AbovePrompt`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Una sola istanza | Terminale, Desktop |
236| `UserMessage` | `text`, `origin`, `isExpanded` e `task` o `from` a seconda dell'origine | L'id del messaggio | Terminale, Desktop, VS Code |236| `UserMessage` | `text`, `origin`, `isExpanded` e `task` o `from` a seconda dell'origine | L'id del messaggio | Terminale, Desktop, VS Code |
237| `AssistantMessage` | Il testo della risposta | L'id del messaggio | Terminale, Desktop, VS Code |237| `AssistantMessage` | Il testo della risposta | L'id del messaggio | Terminale, Desktop, VS Code |
238| `ToolUse`, `ToolResult`, `ToolGroup` | Il nome, l'input e il risultato dello strumento | L'id della chiamata allo strumento | Terminale, Desktop, VS Code |238| `ToolUse`, `ToolResult`, `ToolGroup` | Il nome, l'input e il risultato dello strumento | L'id della chiamata allo strumento | Terminale, Desktop, VS Code |
239| `CommandOutput` | `command`, `text` | L'id del messaggio | Terminale, Desktop |239| `CommandOutput` | `command`, `text` | L'id del messaggio | Terminale, Desktop |
240| [`AskUserQuestion`](/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) | La domanda e le opzioni | L'id della chiamata allo strumento | Terminale, Desktop, VS Code |240| [`AskUserQuestion`](https://code.claude.com/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) | La domanda e le opzioni | L'id della chiamata allo strumento | Terminale, Desktop, VS Code |
241| `ToolProgress` | `kind` | L'id della chiamata allo strumento | Terminale |241| `ToolProgress` | `kind` | L'id della chiamata allo strumento | Terminale |
242| [`Spinner`](/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | L'id dell'agente | Terminale, Desktop, VS Code |242| [`Spinner`](https://code.claude.com/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | L'id dell'agente | Terminale, Desktop, VS Code |
243| `TurnDuration` | `word`, `durationMs` | L'id del messaggio | Terminale |243| `TurnDuration` | `word`, `durationMs` | L'id del messaggio | Terminale |
244| `InfoNotice` | `text`, `command` | L'id del messaggio | Terminale |244| `InfoNotice` | `text`, `command` | L'id del messaggio | Terminale |
245| `SessionMode` | `modes` | Una sola istanza | Terminale, Desktop |245| `SessionMode` | `modes` | Una sola istanza | Terminale, Desktop |
251 251
252* **Larghezza di un `Pane` o della fascia**: disegna fino a `e.props.bodyColumns`252* **Larghezza di un `Pane` o della fascia**: disegna fino a `e.props.bodyColumns`
253* **Altezza di un `Pane` accanto alla trascrizione**: quando `e.props.placement` è `'dock'`, `e.props.scroll.bodyRows` è il numero di righe di cui dispone il pannello per il tuo albero253* **Altezza di un `Pane` accanto alla trascrizione**: quando `e.props.placement` è `'dock'`, `e.props.scroll.bodyRows` è il numero di righe di cui dispone il pannello per il tuo albero
254* **Altezza di un `Pane` sopra il prompt**: quando `e.props.placement` è `'inline'`, il pannello cresce insieme al tuo albero fino a un limite, e `bodyRows` è quel limite. Per richiedere un limite diverso, consulta il [campo `rows` di `$.ui.open`](/docs/it/plugins/mods/interface#open-a-pane-at-the-right-time).254* **Altezza di un `Pane` sopra il prompt**: quando `e.props.placement` è `'inline'`, il pannello cresce insieme al tuo albero fino a un limite, e `bodyRows` è quel limite. Per richiedere un limite diverso, consulta il [campo `rows` di `$.ui.open`](https://code.claude.com/docs/it/plugins/mods/interface#open-a-pane-at-the-right-time).
255 255
256Un albero più alto del pannello scorre nel suo insieme.256Un albero più alto del pannello scorre nel suo insieme.
257 257
258## Elementi258## Elementi
259 259
260Gli elementi sono i componenti di base di un albero restituito da un hook `ui.render`, e li ottieni da `$.ui.resolve(e)`. [Crea un albero a partire dagli elementi](/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) mostra quelli più comuni insieme a come il terminale li disegna, e la [galleria dell'interfaccia](/docs/it/plugins/mods/gallery.md) contiene screenshot della maggior parte di essi. Un segno di spunta indica che l'app può disegnare l'elemento.260Gli elementi sono i componenti di base di un albero restituito da un hook `ui.render`, e li ottieni da `$.ui.resolve(e)`. [Crea un albero a partire dagli elementi](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) mostra quelli più comuni insieme a come il terminale li disegna, e la [galleria dell'interfaccia](https://code.claude.com/docs/it/plugins/mods/gallery.md) contiene screenshot della maggior parte di essi. Un segno di spunta indica che l'app può disegnare l'elemento.
261 261
262| Elemento | Prop principali | Terminale | Desktop | VS Code |262| Elemento | Prop principali | Terminale | Desktop | VS Code |
263| :- | :- | :-: | :-: | :-: |263| :- | :- | :-: | :-: | :-: |
264| [`Box`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `key`, layout flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ | ✓ |264| [`Box`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `key`, layout 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/it/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/it/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/it/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ | ✓ |266| [`Button`](https://code.claude.com/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |
267| [`Link`](/docs/it/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Limiti](#limits). | ✓ | ✓ | ✓ |267| [`Link`](https://code.claude.com/docs/it/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Limiti](#limits). | ✓ | ✓ | ✓ |
268| [`Code`](/docs/it/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |268| [`Code`](https://code.claude.com/docs/it/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/it/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/it/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 documento SVG, fino a 131.072 caratteri | | ✓ | ✓ |272| `Svg` | una `source` di markup SVG fino a 131.072 caratteri, testo `alt`, `width`, `height` e `isInteractive` | | ✓ | ✓ |
273| [`Client`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key` | ✓ | ✓ | |273| [`Client`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |
274| [`Raster`](/docs/it/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` fino a 512, `rows` fino a 256, `cells`. Consulta [Disegna una griglia di celle colorate](/docs/it/plugins/mods/interface.md#draw-a-grid-of-colored-cells). | ✓ | | |274| [`Raster`](https://code.claude.com/docs/it/plugins/mods/interface#draw-a-grid-of-colored-cells) | `key`, `columns` fino a 512, `rows` fino a 256, `cells`. Consulta [Disegna una griglia di celle colorate](https://code.claude.com/docs/it/plugins/mods/interface.md#draw-a-grid-of-colored-cells). | ✓ | | |
275| `Image` | Byte PNG o RGBA fino a 2 MiB, oppure un percorso di file, `columns` e `rows` fino a 255, e testo `alt`. Consulta [quali terminali lo disegnano](/docs/it/plugins/mods/gallery.md#image-and-client). | ✓ | | |275| `Image` | `key`, una `source` come byte PNG o RGBA fino a 2 MiB, oppure un percorso di file, `columns` e `rows` fino a 255, e testo `alt`. Consulta [quali terminali lo disegnano](https://code.claude.com/docs/it/plugins/mods/gallery.md#image-and-client). | ✓ | | |
276 276
277Altre regole per `Button`: `action` indica una delle [scorciatoie da tastiera](/docs/it/keybindings.md) di Claude Code, e la combinazione assegnata dall'utente a quell'azione preme il pulsante quando si tratta di un accordo o di un tasto con modificatore. Un `hotkey` numerico su un pulsante nella banda si attiva anche quando l'utente digita solo quella cifra in un prompt vuoto e si ferma. Quando due pulsanti nello stesso disegno indicano lo stesso `hotkey`, lo ottiene quello successivo. `autoFocus` accetta solo `true` su qualsiasi controllo, quindi ometti la prop per lasciarlo disattivato.277Altre regole per `Button`:
278
279* **`action`**: indica una delle [scorciatoie da tastiera](https://code.claude.com/docs/it/keybindings.md) di Claude Code, e la combinazione assegnata dall'utente a quell'azione preme il pulsante quando si tratta di un accordo o di un tasto con modificatore
280* **Hotkey numerici nella banda**: un `hotkey` numerico su un pulsante nella banda si attiva anche quando l'utente digita solo quella cifra in un prompt vuoto e si ferma
281* **Una banda compressa**: mentre la banda è [compressa](https://code.claude.com/docs/it/plugins/mods/interface.md#when-the-user-collapses-the-band), né una combinazione `action` né un hotkey premono un pulsante al suo interno
282* **Due pulsanti sullo stesso hotkey**: quando due pulsanti nello stesso disegno indicano lo stesso `hotkey`, lo ottiene quello successivo
283
284`autoFocus` accetta solo `true` su qualsiasi controllo, quindi ometti la prop per lasciarlo disattivato.
278 285
279L'estensione VS Code ignora alcune prop degli elementi e disegna l'elemento come se le avessi omesse:286L'estensione VS Code ignora alcune prop degli elementi e disegna l'elemento come se le avessi omesse:
280 287
281* **`Box`**: `position` e `hover`288* **`Box`**: `position` con i relativi `top`, `left`, `right` e `bottom`, `alignSelf`, `borderDimColor` e `hover`
282* **`Text`**: `size`, `mono` e `tabular`289* **`Text`**: `size`, `mono`, `tabular` e `hover`
283* **`Button`**: `hotkey`, `plain`, `autoFocus` e `action`, quindi lì l'utente preme un pulsante con un clic, oppure con Invio quando ha il focus290* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action` e `hover`, quindi lì l'utente preme un pulsante con un clic, oppure con Invio quando ha il focus
284* **`Code`**: `language`, `path`, `startLine`, `format` e `wrap`, quindi il codice viene disegnato senza colori né numeri di riga, e un blocco `format: 'diff'` mostra il testo grezzo del diff291* **`Code`**: `language`, `path`, `startLine`, `format` e `wrap`, quindi il codice viene disegnato senza colori né numeri di riga, e un blocco `format: 'diff'` mostra il testo grezzo del diff
285* **`Input` e `Select`**: `autoFocus`292* **`Input` e `Select`**: `autoFocus`
293* **`Svg`**: `isInteractive`
286 294
287### Stili del bordo di `Box`295### Stili del bordo di `Box`
288 296
317 325
318Se imposti `gap`, `padding` o `margin` su un passo, il passo si applica contemporaneamente in orizzontale e in verticale. Ad esempio, nel terminale e nell'estensione VS Code, `padding: 'md'` corrisponde a due celle su ciascun lato e a una riga sopra e sotto.326Se imposti `gap`, `padding` o `margin` su un passo, il passo si applica contemporaneamente in orizzontale e in verticale. Ad esempio, nel terminale e nell'estensione VS Code, `padding: 'md'` corrisponde a due celle su ciascun lato e a una riga sopra e sotto.
319 327
320I nomi dei passi richiedono Claude Code v2.1.299 o successivo. Su una release precedente, Claude Code [disegna la propria versione del sito](/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) al posto di un albero che usa il nome di un passo.328I nomi dei passi richiedono Claude Code v2.1.299 o successivo. Su una release precedente, Claude Code [disegna la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) al posto di un albero che usa il nome di un passo.
321 329
322### Prop tipografiche di `Text`330### Prop tipografiche di `Text`
323 331
330| `mono` | `true` per chiedere il carattere a spaziatura fissa dell'app | Ignorata: il terminale è sempre a spaziatura fissa | Ignorata, quindi il testo mantiene il carattere proprio dell'estensione |338| `mono` | `true` per chiedere il carattere a spaziatura fissa dell'app | Ignorata: il terminale è sempre a spaziatura fissa | Ignorata, quindi il testo mantiene il carattere proprio dell'estensione |
331| `tabular` | `true` per chiedere cifre di larghezza uguale, in modo che un numero che si aggiorna sul posto o una colonna di numeri restino allineati | Ignorata: le cifre del terminale occupano già una cella ciascuna | Ignorata |339| `tabular` | `true` per chiedere cifre di larghezza uguale, in modo che un numero che si aggiorna sul posto o una colonna di numeri restino allineati | Ignorata: le cifre del terminale occupano già una cella ciascuna | Ignorata |
332 340
333Queste quattro prop richiedono Claude Code v2.1.299 o successivo. Su una release precedente, Claude Code [disegna la propria versione del sito](/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) al posto di un albero che imposta `size`, `weight`, `mono` o `tabular`.341Queste quattro prop richiedono Claude Code v2.1.299 o successivo. Su una release precedente, Claude Code [disegna la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) al posto di un albero che imposta `size`, `weight`, `mono` o `tabular`.
334 342
335#### Sostituisci `bold` con `weight`343#### Sostituisci `bold` con `weight`
336 344
337`bold` su un `Text` è deprecato in favore di `weight` e funziona ancora. Per sostituirlo su un `Text` senza `weight`, cambia `bold: true` in `weight: 'semibold'` per ottenere lo stesso risultato su Claude Code v2.1.299 o successivo.345`bold` su un `Text` è deprecato in favore di `weight` e funziona ancora. Per sostituirlo su un `Text` senza `weight`, cambia `bold: true` in `weight: 'semibold'` per ottenere lo stesso risultato su Claude Code v2.1.299 o successivo.
338 346
339Su una release precedente alla v2.1.299, un albero che imposta `weight` non viene disegnato e Claude Code [disegna invece la propria versione del sito](/docs/it/plugins/mods/interface.md#build-a-tree-from-elements). Se imposti sia `bold` sia `weight` su un `Text`, `bold` non ha alcun effetto.347Su una release precedente alla v2.1.299, un albero che imposta `weight` non viene disegnato e Claude Code [disegna invece la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements). Se imposti sia `bold` sia `weight` su un `Text`, `bold` non ha alcun effetto.
340 348
341## Limiti349## Limiti
342 350
346| :- | :- |354| :- | :- |
347| Il tempo di esecuzione proprio di un hook per un evento, senza contare il tempo trascorso dentro `next` o in una chiamata all'API dei mod diversa da `$.clock.sleep` | 10 secondi, o 50 millisecondi per un hook `prompt.edit` |355| Il tempo di esecuzione proprio di un hook per un evento, senza contare il tempo trascorso dentro `next` o in una chiamata all'API dei mod diversa da `$.clock.sleep` | 10 secondi, o 50 millisecondi per un hook `prompt.edit` |
348| Il tempo di esecuzione di un gestore `.catch` | 1 secondo |356| Il tempo di esecuzione di un gestore `.catch` | 1 secondo |
349| Tutti gli hook `session.end` insieme | Quanto il [budget dell'hook SessionEnd](/docs/it/hooks.md#sessionend-input), 1,5 secondi a meno che tu non lo modifichi, contati da quando terminano gli hook `SessionEnd` delle tue impostazioni |357| Tutti gli hook `session.end` insieme | Quanto il [budget dell'hook SessionEnd](https://code.claude.com/docs/it/hooks.md#sessionend-input), 1,5 secondi a meno che tu non lo modifichi, contati da quando terminano gli hook `SessionEnd` delle tue impostazioni |
350| Timeout di `$.process.run` | 30 secondi per impostazione predefinita, 10 minuti al massimo |358| Timeout di `$.process.run` | 30 secondi per impostazione predefinita, 10 minuti al massimo |
351| `maxTokens` di `$.model.complete` | 1024 per impostazione predefinita, fino a 64.000 o al limite di output del modello |359| `maxTokens` di `$.model.complete` | 1024 per impostazione predefinita, fino a 64.000 o al limite di output del modello |
352| `$.fs.read` e `$.fs.write` | 4 MiB per un singolo file |360| `$.fs.read` e `$.fs.write` | 4 MiB per un singolo file |
354| Il corpo di una risposta `$.http.fetch` | 4 MiB. `text` contiene i primi 4 MiB e il resto non viene letto. Quando l'header `Content-Length` dichiara una dimensione maggiore, la chiamata viene invece rifiutata, con un motivo che termina con `is over the 4194304-byte limit`, tranne quando l'ultima richiesta dopo eventuali reindirizzamenti usa il metodo `HEAD`. L'esenzione per `HEAD` richiede Claude Code v2.1.296 o versioni successive. |362| Il corpo di una risposta `$.http.fetch` | 4 MiB. `text` contiene i primi 4 MiB e il resto non viene letto. Quando l'header `Content-Length` dichiara una dimensione maggiore, la chiamata viene invece rifiutata, con un motivo che termina con `is over the 4194304-byte limit`, tranne quando l'ultima richiesta dopo eventuali reindirizzamenti usa il metodo `HEAD`. L'esenzione per `HEAD` richiede Claude Code v2.1.296 o versioni successive. |
355| Una singola chiamata `$.http.fetch`, reindirizzamenti e corpo inclusi | 30 secondi |363| Una singola chiamata `$.http.fetch`, reindirizzamenti e corpo inclusi | 30 secondi |
356| Reindirizzamenti seguiti da una singola chiamata `$.http.fetch` | 5 |364| Reindirizzamenti seguiti da una singola chiamata `$.http.fetch` | 5 |
357| Il motivo `drop` di un hook o il motivo `deny` di `config.set` | 4.096 caratteri. La parte finale di un motivo più lungo viene troncata, e il drop o il deny si applica comunque. Il troncamento richiede Claude Code v2.1.292 o versioni successive; nelle versioni precedenti l'hook invece [non riesce](/docs/it/plugins/mods/events.md#handle-a-hook-that-fails). |365| Il motivo `drop` di un hook o il motivo `deny` di `config.set` | 4.096 caratteri. La parte finale di un motivo più lungo viene troncata, e il drop o il deny si applica comunque. Il troncamento richiede Claude Code v2.1.292 o versioni successive; nelle versioni precedenti l'hook invece [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails). |
358| Testo in un singolo albero | Vengono disegnati i primi 100.000 caratteri |366| Testo in un singolo albero | Vengono disegnati i primi 100.000 caratteri |
359| Il `language` o il `path` di un `Code`, il `value` di un'opzione `Select` o il `module` di un `Client` | 10.000 caratteri. Se uno è più lungo, Claude Code [disegna la propria versione del sito](/docs/it/plugins/mods/interface.md#build-a-tree-from-elements). |367| Il `language` o il `path` di un `Code`, il `value` di un'opzione `Select` o il `module` di un `Client` | 10.000 caratteri. Se uno è più lungo, Claude Code [disegna la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements). |
360| L'`href` di un `Link` | 2.048 caratteri. Un `href` più lungo impedisce il disegno dell'intero albero. |368| L'`href` di un `Link` | 2.048 caratteri. Un `href` più lungo impedisce il disegno dell'intero albero. |
361| `$.store` | 4 MiB di JSON in totale |369| `$.store` | 4 MiB di JSON in totale |
362| `$.session.messages()` | Le 4.096 voci più recenti |370| `$.session.messages()` | Le 4.096 voci più recenti |
375| :- | :- | :- |383| :- | :- | :- |
376| `CLAUDE_CODE_PLUGIN_DIRS` | Ambiente, oppure `env` in `~/.claude/settings.json` | Directory di plugin da caricare come fa `--plugin-dir`, per le app a cui non puoi passare un flag. Percorsi assoluti separati da `:`, oppure da `;` su Windows. |384| `CLAUDE_CODE_PLUGIN_DIRS` | Ambiente, oppure `env` in `~/.claude/settings.json` | Directory di plugin da caricare come fa `--plugin-dir`, per le app a cui non puoi passare un flag. Percorsi assoluti separati da `:`, oppure da `;` su Windows. |
377| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Ambiente | `1` fa sì che una sessione non interattiva di lunga durata ricarichi i mod di `--plugin-dir` al salvataggio |385| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Ambiente | `1` fa sì che una sessione non interattiva di lunga durata ricarichi i mod di `--plugin-dir` al salvataggio |
378| `prependPlugins`, `appendPlugins` | Impostazioni gestite. Impostazioni utente solo su una macchina senza impostazioni gestite, in una sessione la cui credenziale non è un `/login` Team o Enterprise. | Elenchi di id di plugin, come `acme-guard@acme-tools`. I mod in `prependPlugins` vengono eseguiti prima di ogni mod installato da un utente, e i mod in `appendPlugins` vengono eseguiti dopo, nell'ordine elencato. Consulta [L'ordine in cui vengono eseguiti i mod](/docs/it/plugins/mods/events.md#the-order-mods-run-in). |386| `prependPlugins`, `appendPlugins` | Impostazioni gestite. Impostazioni utente solo su una macchina senza impostazioni gestite, in una sessione la cui credenziale non è un `/login` Team o Enterprise. | Elenchi di id di plugin, come `acme-guard@acme-tools`. I mod in `prependPlugins` vengono eseguiti prima di ogni mod installato da un utente, e i mod in `appendPlugins` vengono eseguiti dopo, nell'ordine elencato. Consulta [L'ordine in cui vengono eseguiti i mod](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in). |
379| `allowManagedModsOnly` | Impostazioni gestite, come [opzione della protezione integrata](/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Solo i mod che [contano come quelli della tua organizzazione](/docs/it/plugins/mods/admin.md#install-your-organizations-mods) e i mod integrati in Claude Code eseguono i propri hook. Gli hook delle impostazioni degli utenti continuano a essere eseguiti. |387| `allowManagedModsOnly` | Impostazioni gestite, come [opzione della protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Solo i mod che [contano come quelli della tua organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods) e i mod integrati in Claude Code eseguono i propri hook. Gli hook delle impostazioni degli utenti continuano a essere eseguiti. |
380| `allowModsToOverrideDenyRules` | Impostazioni gestite, come [opzione della protezione integrata](/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Consente a un mod installato da un utente di approvare una chiamata a uno strumento che una regola `deny` rifiuta |388| `allowModsToOverrideDenyRules` | Impostazioni gestite, come [opzione della protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Consente a un mod installato da un utente di approvare una chiamata a uno strumento che una regola `deny` rifiuta |
381| `allowManagedHooksOnly` | Impostazioni gestite | Blocca gli hook e i mod installati che non appartengono alla tua organizzazione. Consulta [cosa continua a essere eseguito](/docs/it/settings-reference.md#what-runs-under-allowmanagedhooksonly). |389| `allowManagedHooksOnly` | Impostazioni gestite | Blocca gli hook e i mod installati che non appartengono alla tua organizzazione. Consulta [cosa continua a essere eseguito](https://code.claude.com/docs/it/settings-reference.md#what-runs-under-allowmanagedhooksonly). |
382| `disableAllHooks` | Qualsiasi file di impostazioni | Nelle impostazioni gestite, non viene eseguito alcun mod o hook di un plugin installato. Nelle tue impostazioni, ciò che la tua organizzazione gestisce continua a essere eseguito. Consulta [`disableAllHooks`](/docs/it/settings-reference#disableallhooks). |390| `disableAllHooks` | Qualsiasi file di impostazioni | Nelle impostazioni gestite, non viene eseguito alcun mod o hook di un plugin installato. Nelle tue impostazioni, ciò che la tua organizzazione gestisce continua a essere eseguito. Consulta [`disableAllHooks`](https://code.claude.com/docs/it/settings-reference#disableallhooks). |
383| `disableSideloadFlags` | Impostazioni gestite | Rifiuta `--plugin-dir` e `--plugin-url` all'avvio |391| `disableSideloadFlags` | Impostazioni gestite | Rifiuta `--plugin-dir` e `--plugin-url` all'avvio |
384| `pluginConfigs` | Impostazioni utente o gestite | Contiene i valori di `userConfig` per un mod, indicizzati in base all'id del plugin, come `acme-guard@acme-tools`, oppure in base al suo nome seguito da `@inline`, come `first-mod@inline`, per un mod caricato con `--plugin-dir` |392| `pluginConfigs` | Impostazioni utente o gestite | Contiene i valori di `userConfig` per un mod, indicizzati in base all'id del plugin, come `acme-guard@acme-tools`, oppure in base al suo nome seguito da `@inline`, come `first-mod@inline`, per un mod caricato con `--plugin-dir` |
385 393
386`sec-default@builtin` è una protezione integrata in Claude Code, elencata come `cc-plugin-sec-default` in `/plugin` e nel log di debug. Viene caricata prima di ogni mod installato da una persona su una macchina con impostazioni gestite, oppure in una sessione la cui credenziale è un [`/login`](/docs/it/authentication#authentication-precedence) Team o Enterprise. Se è impostato `prependPlugins` nelle impostazioni gestite, la protezione viene caricata solo quando quell'elenco la nomina, nella posizione indicata.394`sec-default@builtin` è una protezione integrata in Claude Code, elencata come `cc-plugin-sec-default` in `/plugin` e nel log di debug. Viene caricata prima di ogni mod installato da una persona su una macchina con impostazioni gestite, oppure in una sessione la cui credenziale è un [`/login`](https://code.claude.com/docs/it/authentication#authentication-precedence) Team o Enterprise. Se è impostato `prependPlugins` nelle impostazioni gestite, la protezione viene caricata solo quando quell'elenco la nomina, nella posizione indicata.
387 395
388Il suo codice sorgente si trova nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).396Il suo codice sorgente si trova nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).
389 397
393 401
394| Comando | Cosa fa |402| Comando | Cosa fa |
395| :- | :- |403| :- | :- |
396| [`/plugin`](/docs/it/plugins/mods/overview#see-which-mods-a-session-loaded) | Mostra una riga come `1 mod active · first-mod` sotto le sue schede quando è stato caricato un mod non integrato |404| [`/plugin`](https://code.claude.com/docs/it/plugins/mods/overview#see-which-mods-a-session-loaded) | Mostra una riga come `1 mod active · first-mod` sotto le sue schede quando è stato caricato un mod non integrato |
397| [`claude plugin validate <directory>`](/docs/it/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Legge il manifest e il modulo degli hook di un plugin e segnala gli errori, gli eventi che gestisce e le chiamate all'API dei mod che effettua. `--strict` tratta gli avvisi come errori e `--json` stampa un report leggibile da una macchina. |405| [`claude plugin validate <directory>`](https://code.claude.com/docs/it/plugins/mods/create#check-what-claude-code-reads-from-your-mod) | Legge il manifest e il modulo degli hook di un plugin e segnala gli errori, gli eventi che gestisce e le chiamate all'API dei mod che effettua. `--strict` tratta gli avvisi come errori e `--json` stampa un report leggibile da una macchina. |
398| [`claude plugin test [directory]`](/docs/it/plugins/mods/test#write-a-test) | Esegue ogni file nella directory, o nella directory corrente se non ne specifichi una, il cui nome termina con `.test.ts` o `.test.tsx`. Termina con stato 1 quando un test fallisce. |406| [`claude plugin test [directory]`](https://code.claude.com/docs/it/plugins/mods/test#write-a-test) | Esegue ogni file nella directory, o nella directory corrente se non ne specifichi una, il cui nome termina con `.test.ts` o `.test.tsx`. Termina con stato 1 quando un test fallisce. |
399| [`claude --plugin-dir <directory>`](/docs/it/plugins/mods/create#write-a-mod-yourself) | Carica una directory di plugin per una sessione e ricarica il suo modulo degli hook quando salvi. Ripeti il flag per caricarne diverse. |407| [`claude --plugin-dir <directory>`](https://code.claude.com/docs/it/plugins/mods/create#write-a-mod-yourself) | Carica una directory di plugin per una sessione e ricarica il suo modulo degli hook quando salvi. Ripeti il flag per caricarne diverse. |
400| `/reload-plugins` | Ricarica i plugin quando lo esegui |408| `/reload-plugins` | Ricarica i plugin quando lo esegui |