4 4
5# Solucionar problemas de un mod5# Solucionar problemas de un mod
6 6
7> Descubre por qué un mod de Claude Code no hace nada: haz coincidir el síntoma o mensaje con su causa, busca mensajes de rechazo y lee el registro de depuración.7> Descubre por qué un mod de Claude Code no hace nada: relaciona el síntoma o mensaje con su causa, consulta los mensajes de rechazo y lee el registro de depuración.
8 8
9Cuando el módulo de un mod o uno de sus hooks falla, Claude Code lo omite y la sesión continúa, por lo que un mod roto puede parecer uno que no hace nada. Comienza verificando qué leyó Claude Code de tu mod y dónde reporta un problema, luego encuentra el síntoma o mensaje que tienes.9Cuando el módulo de un mod o uno de sus hooks falla, Claude Code lo omite y la sesión continúa, por lo que un mod defectuoso puede parecer uno que no hace nada. Empieza por comprobar qué leyó Claude Code de tu mod y dónde informa de un problema; luego busca el síntoma o mensaje que tienes.
10 10
11<h2 id="find-out-why-a-mod-does-nothing">11<h2 id="find-out-why-a-mod-does-nothing">
12 Descubre por qué un mod no hace nada12 Averigua por qué un mod no hace nada
13</h2>13</h2>
14 14
15Cuando un mod no hace nada, dos verificaciones encuentran la razón: qué lee Claude Code de los archivos del mod y la línea que escribe cuando omite algo. Para la primera, en tu shell ejecuta [`claude plugin validate`](/docs/es/plugins/mods/create#check-what-claude-code-reads-from-your-mod) con el directorio del mod, como en `claude plugin validate ./first-mod`. Detecta un evento mal escrito, un manifiesto incorrecto y un módulo que Claude Code no puede leer, sin iniciar una sesión.15Cuando un mod no hace nada, revisa lo que Claude Code lee de los archivos del mod y la línea que escribe cuando omite algo. Para lo primero, en tu shell ejecuta [`claude plugin validate`](/docs/es/plugins/mods/create#check-what-claude-code-reads-from-your-mod) con el directorio del mod, como en `claude plugin validate ./first-mod`. Detecta un evento mal escrito, un manifiesto incorrecto y un módulo que Claude Code no puede leer, sin iniciar una sesión.
16 16
17Cuando un módulo no se carga, se omite un hook o otro mod rechaza el tuyo, Claude Code escribe una línea que nombra tu mod. Dónde lees esa línea depende de la sesión:17Cuando un módulo no se carga, se omite un hook u otro mod rechaza el tuyo, Claude Code escribe una línea que nombra tu mod. Dónde lees esa línea depende de la sesión:
18 18
19* **Una sesión que recarga en caliente un directorio de plugins**: una línea tenue en la transcripción. Esa es una sesión interactiva que iniciaste con `--plugin-dir`, o una donde [habilitaste la recarga en caliente](/docs/es/plugins/mods/create#ask-claude-for-a-mod) para mods que Claude escribió.19* **Una sesión que recarga en caliente un directorio de plugin**: una línea atenuada en la transcripción. Es una sesión interactiva que iniciaste con `--plugin-dir`, o una en la que [habilitaste la recarga en caliente](/docs/es/plugins/mods/create#ask-claude-for-a-mod) para los mods que escribió Claude.
20* **Cualquier otra sesión interactiva, como una que ejecuta un mod que instalaste desde un marketplace**: el [registro de depuración](#read-the-debug-log) solamente. Para obtener uno, inicia la sesión con `claude --debug`.20* **Cualquier otra sesión interactiva, como una que ejecuta un mod que instalaste desde un marketplace**: solo el [registro de depuración](#read-the-debug-log). Para obtenerlo, inicia la sesión con `claude --debug`.
21* **Una ejecución `claude -p` con `--plugin-dir`**: stderr, en el formato de salida de texto predeterminado. Un rechazo por otro mod va al registro de depuración solamente.21* **Una ejecución de `claude -p` con `--plugin-dir`**: stderr, en el formato de salida de texto predeterminado. Un rechazo por parte de otro mod va solo al registro de depuración.
22 22
23<h2 id="check-whether-mods-can-load">23<h2 id="check-whether-mods-can-load">
24 Verifica si los mods pueden cargarse24 Comprobar si los mods pueden cargarse
25</h2>25</h2>
26 26
27Para verificar si tu configuración permite que los mods se carguen en absoluto, sin instalar uno, ejecuta `claude plugin test` en tu shell, desde un directorio que no contenga un mod. No necesitas una sesión. El mensaje que imprime te dice el estado:27Para comprobar si tu configuración permite que los mods se carguen, sin instalar ninguno, ejecuta `claude plugin test` en tu shell, desde un directorio que no contenga un mod. No necesitas una sesión. El mensaje que imprime te indica el estado:
28 28
29| El mensaje incluye | Qué significa |29| El mensaje incluye | Qué significa |
30| :- | :- |30| :- | :- |
31| `no hooks module to load` | Los mods pueden cargarse. El comando no encontró ningún mod para probar en este directorio. |31| `no hooks module to load` | Los mods pueden cargarse. El comando no encontró ningún mod para probar en este directorio. |
32| `hooks modules are turned off here` | Una configuración está manteniendo tus mods fuera: `disableAllHooks` en tu propia configuración, o la política de tu organización |32| `hooks modules are turned off here` | Un ajuste está bloqueando tus mods: `disableAllHooks` en tu propia configuración, o la política de tu organización |
33| `hooks modules are turned off in this process` | Anthropic ha desactivado los mods instalados de forma remota. Ninguna configuración en tu máquina los vuelve a activar. |33| `hooks modules are turned off in this process` | Anthropic ha desactivado de forma remota los mods instalados. Ningún ajuste en tu máquina los vuelve a activar. |
34 34
35Una organización también puede establecer `allowManagedModsOnly` para permitir solo sus propios mods, que este comando no reporta. En ese caso, un mod que instales no se carga, y [un mensaje dice por qué](/docs/es/plugins/mods/troubleshoot#messages-from-the-built-in-guard).35Una organización también puede establecer `allowManagedModsOnly` para permitir solo sus propios mods, algo que este comando no informa. En ese caso, un mod que instales no se carga, y [un mensaje indica el motivo](/docs/es/plugins/mods/troubleshoot#messages-from-the-built-in-guard).
36 36
37<h2 id="the-mod-doesn’t-load">37<h2 id="the-mod-doesn’t-load">
38 El mod no se carga38 El mod no se carga
39</h2>39</h2>
40 40
41Nada de lo que agrega el mod aparece: ningún comando, ningún dibujo y ningún cambio de comportamiento.41No aparece nada de lo que agrega el mod: ningún comando, ningún dibujo y ningún cambio de comportamiento.
42 42
43<h3 id="your-version-is-older-than-2-1-287">43<h3 id="your-version-is-older-than-2-1-287">
44 Tu versión es anterior a 2.1.28744 Tu versión es anterior a 2.1.287
45</h3>45</h3>
46 46
47`claude --version` imprime una versión anterior a 2.1.287. Tu versión es anterior a que los mods estén activados de forma predeterminada.47`claude --version` muestra una versión anterior a 2.1.287. Tu versión es anterior a que los mods estuvieran activados de forma predeterminada.
48 48
49[Actualiza Claude Code](/docs/es/setup#update-claude-code).49[Actualiza Claude Code](/docs/es/setup#update-claude-code).
50 50
52 La línea `mods active` no nombra el mod52 La línea `mods active` no nombra el mod
53</h3>53</h3>
54 54
55Nada de lo que agrega el mod aparece, y la [línea `mods active`](/docs/es/plugins/mods/overview#see-which-mods-a-session-loaded) en `/plugin` no lo nombra. El módulo hooks no se cargó. Cuando Claude Code lo rechazó, el registro de depuración tiene una línea que comienza con `hooks module`, el nombre del mod y `not loaded:`, como en `hooks module first-mod@inline not loaded: disableAllHooks in managed settings` para un mod cargado con `--plugin-dir`.55No aparece nada de lo que agrega el mod, y la [línea `mods active`](/docs/es/plugins/mods/overview#see-which-mods-a-session-loaded) en `/plugin` no lo nombra. El módulo de hooks no se cargó. Cuando Claude Code lo rechazó, el registro de depuración tiene una línea que empieza con `hooks module`, el nombre del mod y `not loaded:`, como en `hooks module first-mod@inline not loaded: disableAllHooks in managed settings` para un mod cargado con `--plugin-dir`.
56 56
57Lee la razón después de los dos puntos. La sección [refusal messages](#refusal-messages) enumera cada una. Si el registro no tiene tal línea, trabaja a través de las otras entradas en este grupo.57Lee el motivo que aparece después de los dos puntos. La sección [mensajes de rechazo](#refusal-messages) enumera cada uno. Si el registro no tiene una línea así, revisa las demás entradas de este grupo.
58
59Algunos ajustes detienen un mod y dejan funcionando el resto de su plugin. [Activar o desactivar mods](/docs/es/plugins/mods/overview#turn-mods-on-or-off) los nombra.
58 60
59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">61<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">
60 Una ejecución `claude -p` imprime `hooks module not loaded`62 Una ejecución de `claude -p` muestra `hooks module not loaded`
61</h3>63</h3>
62 64
63La línea comienza con el nombre del mod y va a stderr. El módulo hooks fue rechazado. Una ejecución no interactiva no tiene transcripción, por lo que el mensaje va a stderr.65La línea empieza con el nombre del mod y va a stderr. El módulo de hooks fue rechazado. Una ejecución no interactiva no tiene transcripción, así que el mensaje va a stderr.
64 66
65Lee la razón después de los dos puntos. La sección [refusal messages](#refusal-messages) enumera cada una.67Lee el motivo que aparece después de los dos puntos. La sección [mensajes de rechazo](#refusal-messages) enumera cada uno.
66 68
67<h3 id="refusal-messages">69<h3 id="refusal-messages">
68 Mensajes de rechazo70 Mensajes de rechazo
69</h3>71</h3>
70 72
71Cada uno de estos sigue a `hooks module`, el nombre del mod y `not loaded:` en el registro de depuración.73Cada uno de estos aparece después de `hooks module`, el nombre del mod y `not loaded:` en el registro de depuración.
72 74
73| El mensaje comienza con | Qué significa |75| El mensaje empieza con | Qué significa |
74| :- | :- |76| :- | :- |
75| `hooks modules are turned off for installed plugins in this process` | Anthropic ha desactivado los mods instalados de forma remota. Ninguna configuración en tu máquina los vuelve a activar. |77| `hooks modules are turned off for installed plugins in this process` | Anthropic desactivó de forma remota los mods instalados. Ningún ajuste en tu máquina los vuelve a activar. |
76| `disableAllHooks in managed settings` | Tu organización desactivó los hooks de los plugins instalados |78| `disableAllHooks in managed settings` | Tu organización desactivó los hooks de los plugins instalados |
77| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` está establecido, o `disableAllHooks` está establecido en un archivo de configuración que no sea configuración administrada |79| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` está establecido, o `disableAllHooks` está establecido en un archivo de configuración distinto de la configuración administrada |
78| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Iniciaste Claude Code con `--bare` |80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Iniciaste Claude Code con `--bare` |
79| `another plugin of that name loads first` | Dos plugins comparten un nombre. Se usa el administrado o el que se cargó primero. |81| `another plugin of that name loads first` | Dos plugins comparten un nombre. Se usa el administrado, o el que se cargó primero. |
80 82
81<h3 id="messages-from-the-built-in-guard">83<h3 id="messages-from-the-built-in-guard">
82 Mensajes del guardia integrado84 Mensajes de la protección integrada
83</h3>85</h3>
84 86
85En una máquina con configuración administrada, o para un usuario que inició sesión con un plan de Team o Enterprise, el [guardia integrado](/docs/es/plugins/mods/admin#know-what-happens-by-default) puede rechazar un mod o una de sus respuestas. Cada mensaje nombra la opción que el administrador de tu organización establece para cambiar la regla.87En una máquina con configuración administrada, o para un usuario que inició sesión con un plan Team o Enterprise, la [protección integrada](/docs/es/plugins/mods/admin#know-what-happens-by-default) puede rechazar un mod o una de sus respuestas. Cada mensaje nombra la opción que el administrador de tu organización establece para cambiar la regla.
86 88
87| El mensaje contiene | Qué significa | Dónde aparece |89| El mensaje contiene | Qué significa | Dónde aparece |
88| :- | :- | :- |90| :- | :- | :- |
89| `mods are limited to your organization's by policy (allowManagedModsOnly)` | Tu organización permite solo [sus propios mods](/docs/es/plugins/mods/admin#install-your-organizations-mods), por lo que el tuyo no se cargó | El registro de depuración y la transcripción en una [sesión que recarga en caliente un directorio de plugins](#find-out-why-a-mod-does-nothing) |91| `mods are limited to your organization's by policy (allowManagedModsOnly)` | Tu organización solo permite [sus propios mods](/docs/es/plugins/mods/admin#install-your-organizations-mods), así que el tuyo no se cargó | El registro de depuración, y la transcripción en una [sesión que recarga en caliente un directorio de plugin](#find-out-why-a-mod-does-nothing) |
90| `tried to lift a deny rule in your settings` | El hook [`tool.check`](/docs/es/plugins/mods/reference#tools) de tu mod aprobó una llamada que una regla `deny` rechaza. La llamada permanece denegada. | La transcripción y el registro de depuración, una vez para cada mod en una sesión. En una ejecución `claude -p`, solo el registro de depuración. |92| `tried to lift a deny rule in your settings` | El hook [`tool.check`](/docs/es/plugins/mods/reference#tools) de tu mod aprobó una llamada que una regla `deny` rechaza. La llamada sigue denegada. | La transcripción y el registro de depuración, una vez por cada mod en una sesión. En una ejecución de `claude -p`, solo el registro de depuración. |
91| `the deny rules in your settings could not be checked for this call, so it is refused` | El guardia falló mientras verificaba una llamada que un mod aprobó, por lo que rechazó la llamada | La razón que Claude lee para la llamada denegada |93| `the deny rules in your settings could not be checked for this call, so it is refused` | La protección falló al verificar una llamada que un mod aprobó, así que rechazó la llamada | El motivo que Claude lee para la llamada denegada |
92 94
93<h3 id="validate-passes-and-lists-no-hooks-line">95<h3 id="validate-passes-and-lists-no-hooks-line">
94 `validate` pasa y no enumera ninguna línea `hooks`96 `validate` pasa y no muestra ninguna línea `hooks`
95</h3>97</h3>
96 98
97`hooks/hooks.json` no tiene una clave `modules`, o la clave está mal escrita.99`hooks/hooks.json` no tiene una clave `modules`, o la clave está mal escrita.
102 `hooks module did not load`104 `hooks module did not load`
103</h3>105</h3>
104 106
105La línea comienza con el nombre del mod, luego `hooks module did not load:` y una razón, que proporciona el archivo y la línea cuando el problema está en tu código. Claude Code no pudo cargar el módulo, por ejemplo porque su código de nivel superior lanzó una excepción.107La línea empieza con el nombre del mod, luego `hooks module did not load:` y un motivo, que indica el archivo y la línea cuando el problema está en tu código. Claude Code no pudo cargar el módulo, por ejemplo porque su código de nivel superior lanzó una excepción.
106 108
107Corrige el error que la razón nombra.109Corrige el error que indica el motivo.
108 110
109<h3 id="options-do-not-fit-plugin-json-userconfig">111<h3 id="options-do-not-fit-plugin-json-userconfig">
110 `options do not fit plugin.json userConfig`112 `options do not fit plugin.json userConfig`
111</h3>113</h3>
112 114
113La línea comienza con el nombre del mod, luego `hooks module did not load: options do not fit plugin.json userConfig:` y una razón. Una opción no se ajusta a su campo [`userConfig`](/docs/es/plugins/components#user-configuration), como un número por encima del `max` del campo, o un campo requerido no tiene valor.115La línea empieza con el nombre del mod, luego `hooks module did not load: options do not fit plugin.json userConfig:` y un motivo. Una opción no pasa la validación contra su campo [`userConfig`](/docs/es/plugins/components#user-configuration), como un número por encima del `max` del campo, o un campo obligatorio no tiene valor.
114 116
115Establece o cambia el valor. El final de la línea nombra su entrada `pluginConfigs` en `settings.json`.117Establece o cambia el valor. El final de la línea nombra su entrada `pluginConfigs` en `settings.json`.
116 118
118 Ningún mod se carga en un directorio que abriste por primera vez120 Ningún mod se carga en un directorio que abriste por primera vez
119</h3>121</h3>
120 122
121No has respondido al aviso de confianza para el directorio.123No respondiste la solicitud de confianza del directorio.
122 124
123Inicia una sesión interactiva en ese directorio con `claude` y acepta el aviso de confianza que abre.125Inicia una sesión interactiva en ese directorio con `claude` y acepta la solicitud de confianza con la que se abre.
124 126
125<h3 id="no-installed-plugin-loads-at-all">127<h3 id="no-installed-plugin-loads-at-all">
126 Ningún plugin instalado se carga en absoluto128 No se carga ningún plugin instalado
127</h3>129</h3>
128 130
129Iniciaste Claude Code con `--safe-mode`.131Iniciaste Claude Code con `--safe-mode`.
130 132
131Inicia sin la bandera.133Inicia sin el flag.
132 134
133<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">135<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">
134 Se omite un hook o se descarga un mod136 Un hook se omite o un mod se descarga
135</h2>137</h2>
136 138
137El mod se cargó y luego Claude Code omitió uno de sus hooks o lo descargó.139El mod se cargó y luego Claude Code omitió uno de sus hooks o lo descargó.
140 `hook skipped`142 `hook skipped`
141</h3>143</h3>
142 144
143La línea nombra el mod y el evento, luego dice `hook skipped:` y una razón, como en `first-mod: tool.call hook skipped: threw Error: boom`. Un hook lanzó una excepción, se ejecutó más allá de su [límite de tiempo de 10 segundos](/docs/es/plugins/mods/reference#limits), o devolvió un resultado de forma incorrecta. La línea aparece una vez para cada evento y tipo de fallo hasta que el mod se recarga.145La línea nombra el mod y el evento, luego dice `hook skipped:` y un motivo, como en `first-mod: tool.call hook skipped: threw Error: boom`. Un hook lanzó una excepción, superó su [límite de tiempo](/docs/es/plugins/mods/reference#limits) o devolvió un resultado con una forma incorrecta. La línea aparece una vez por cada evento y tipo de fallo hasta que el mod se recarga.
144 146
145Corrige el error. El registro de depuración tiene una línea para cada ocurrencia.147Corrige el error. El registro de depuración tiene una línea por cada ocurrencia.
146 148
147<h3 id="no-command-run-hook-answered-it">149<h3 id="no-command-run-hook-answered-it">
148 `no command.run hook answered it`150 `no command.run hook answered it`
149</h3>151</h3>
150 152
151Ejecuta un comando que tu mod agregó, y la respuesta nombra el mod y el comando, como en `first-mod registered /tally but no command.run hook answered it`, luego te dice que agregues un hook. Claude Code imprime esa respuesta cuando el comando llega al final de la cadena sin respuesta, lo que sucede en dos casos:153Ejecutas un comando que agregó tu mod y la respuesta nombra el mod y el comando, como en `first-mod registered /tally but no command.run hook answered it`, y luego te indica que agregues un hook. Claude Code imprime esa respuesta cuando el comando llega al final de la cadena sin respuesta, lo cual ocurre en dos casos:
152 154
153* **Ningún hook respondió al comando**: el módulo no tiene un hook `command.run`, el [filtro](/docs/es/plugins/mods/events#filter-which-events-a-hook-handles) del hook nombra un comando diferente, o el hook devolvió `next(e)`155* **Ningún hook respondió al comando**: el módulo no tiene un hook `command.run`, el [filtro](/docs/es/plugins/mods/events#filter-which-events-a-hook-handles) del hook nombra un comando diferente, o el hook devolvió `next(e)`
154* **Claude Code omitió el hook**: [`hook skipped`](#hook-skipped) enumera las razones. Pasar `focus: false` a [`$.ui.open`](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time) es una forma de llegar allí.156* **Claude Code omitió el hook**: [`hook skipped`](#hook-skipped) enumera los motivos. Pasar `focus: false` a [`$.ui.open`](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time) es una forma de llegar a esto.
155 157
156Si el módulo ya tiene el hook que describe la respuesta, busca una línea `hook skipped` que nombre `command.run`, que proporciona la razón. Una [prueba](/docs/es/plugins/mods/test) que ejecuta el comando falla con la misma razón.158Si el módulo ya tiene el hook que describe la respuesta, busca una línea `hook skipped` que nombre `command.run`, la cual indica el motivo. Una [prueba](/docs/es/plugins/mods/test) que ejecuta el comando falla con el mismo motivo.
157 159
158<h3 id="it-crashed-the-hooks-worker">160<h3 id="it-crashed-the-hooks-worker">
159 `it crashed the hooks worker`161 `it crashed the hooks worker`
160</h3>162</h3>
161 163
162La línea comienza con el nombre del mod, como en `first-mod was unloaded: it crashed the hooks worker`. Los mods instalados comparten un hilo de trabajo. El trabajador dejó de responder o se bloqueó, y Claude Code rastreó eso a este mod y lo descargó. Un hook que bloquea el hilo, como un bucle que nunca espera, es una causa.164La línea comienza con el nombre del mod, como en `first-mod was unloaded: it crashed the hooks worker`. Los mods instalados comparten un único hilo worker. El worker dejó de responder o falló, y Claude Code lo atribuyó a este mod y lo descargó. Un hook que bloquea el hilo, como un bucle que nunca usa await, es una de las causas.
163 165
164Corrige el hook.166Corrige el hook.
165 167
167 `mods that run in the hooks worker are off for this session`169 `mods that run in the hooks worker are off for this session`
168</h3>170</h3>
169 171
170La línea dice `hooks: mods that run in the hooks worker are off for this session: it crashed 3 times`. El trabajador se detuvo tres veces y Claude Code no pudo rastrear las paradas a un mod, por lo que descargó cada mod que no es integrado, incluidos los mods que tu organización instala. Esta línea llega a la transcripción en cada sesión interactiva.172La línea dice `hooks: mods that run in the hooks worker are off for this session: it crashed 3 times`. El worker se detuvo tres veces y Claude Code no pudo atribuir las detenciones a un solo mod, así que descargó todos los mods que no son integrados, incluidos los mods que instala tu organización. Esta línea llega a la transcripción en cada sesión interactiva.
171 173
172Ejecuta `/reload-plugins` para cargarlos de nuevo.174Ejecuta `/reload-plugins` para cargarlos de nuevo.
173 175
174<h2 id="a-tool-call-is-denied">176<h2 id="a-tool-call-is-denied">
175 Se deniega una llamada de herramienta177 Se deniega una llamada a herramienta
176</h2>178</h2>
177 179
178El mod se cargó y sus hooks se ejecutan, y se rechaza una llamada de herramienta que tocó.180El mod se cargó y sus hooks se ejecutan, y una llamada a herramienta que tocó es rechazada.
179 181
180<h3 id="a-hook-changed-this-call’s-input-after-the-model-wrote-it">182<h3 id="a-hook-changed-this-call’s-input-after-the-model-wrote-it">
181 `a hook changed this call's input after the model wrote it`183 `a hook changed this call's input after the model wrote it`
182</h3>184</h3>
183 185
184En modo automático, una llamada de herramienta denegada da esta razón. Un hook cambió la entrada de la llamada de herramienta después de que el [clasificador del lado del servidor](/docs/es/permission-modes#server-side-classifier-review) la revisó, por lo que esa revisión no cubre lo que se ejecutaría. El hook puede ser un hook [`tool.call`](/docs/es/plugins/mods/reference#tools) o [`turn.step`](/docs/es/plugins/mods/reference#turns) de un mod, o un hook de configuración [`PreToolUse`](/docs/es/hooks#pretooluse). El mensaje no dice cuál.186En modo automático, una llamada a herramienta denegada da este motivo. Un hook cambió la entrada de la llamada a herramienta después de que el [clasificador del lado del servidor](/docs/es/permission-modes#server-side-classifier-review) la revisara, por lo que esa revisión no cubre lo que se ejecutaría. El hook puede ser un hook [`tool.call`](/docs/es/plugins/mods/reference#tools) o [`turn.step`](/docs/es/plugins/mods/reference#turns) de un mod, o un hook de configuración [`PreToolUse`](/docs/es/hooks#pretooluse). El mensaje no dice cuál.
185 187
186El mensaje le dice a Claude que emita la llamada una vez más como se registró. Si también se deniega, el hook cambia la entrada cada vez, así que desactiva el mod o el hook, o sal del modo automático y aprueba la llamada tú mismo.188El mensaje le indica a Claude que emita la llamada una vez más tal como quedó registrada. Si también se deniega, el hook cambia la entrada cada vez, así que desactiva el mod o el hook, o sal del modo automático y aprueba la llamada tú mismo.
187 189
188<h3 id="a-message-about-the-deny-rules-in-your-settings">190<h3 id="a-message-about-the-deny-rules-in-your-settings">
189 Un mensaje sobre las reglas de denegación en tu configuración191 Un mensaje sobre las reglas de denegación en tu configuración
190</h3>192</h3>
191 193
192`tried to lift a deny rule in your settings` y `the deny rules in your settings could not be checked for this call, so it is refused` ambos provienen del guardia integrado.194`tried to lift a deny rule in your settings` y `the deny rules in your settings could not be checked for this call, so it is refused` provienen ambos de la protección integrada.
193 195
194Búscalos en [Messages from the built-in guard](#messages-from-the-built-in-guard).196Búscalos en [Mensajes de la protección integrada](#messages-from-the-built-in-guard).
195 197
196<h2 id="a-drawing-doesn’t-appear-or-respond">198<h2 id="a-drawing-doesn’t-appear-or-respond">
197 Un dibujo no aparece o no responde199 Un dibujo no aparece o no responde
198</h2>200</h2>
199 201
200El mod se cargó y su panel, banda o controles no se comportan como esperas.202El mod se cargó, y su panel, banda o controles no se comportan como esperas.
201 203
202<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">204<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">
203 Un panel o banda está vacío o muestra el contenido habitual de Claude Code205 Un panel o una banda está vacío o muestra el contenido habitual de Claude Code
204</h3>206</h3>
205 207
206El [árbol](/docs/es/plugins/mods/interface#build-a-tree-from-elements) que devolvió tu hook no se validó. Con `--plugin-dir`, la transcripción dice `ui.render (Pane) refused:` con la razón, como en `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`. El registro de depuración tiene `a hook returned a tree that does not validate` con la misma razón.208El [árbol](/docs/es/plugins/mods/interface#build-a-tree-from-elements) que devolvió tu hook no pasó la validación. Con `--plugin-dir`, la transcripción dice `ui.render (Pane) refused:` con el motivo, como en `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`. El registro de depuración tiene `a hook returned a tree that does not validate` con el mismo motivo.
207 209
208Lee la razón en esa línea. Las causas comunes son una propiedad que el elemento no toma y un elemento que la aplicación no tiene.210Lee el motivo en esa línea. Las causas comunes son una prop que el elemento no acepta y un elemento que la app no tiene.
209 211
210<h3 id="ui-open-runs-and-no-pane-appears">212<h3 id="$-ui-open-runs-and-no-pane-appears">
211 `$.ui.open` se ejecuta y no aparece ningún panel213 `$.ui.open` se ejecuta y no aparece ningún panel
212</h3>214</h3>
213 215
214La llamada no provino de algo que el usuario hizo, y la terminal es más estrecha que 144 columnas.216La llamada no provino de algo que hizo el usuario, y la terminal es más estrecha que [el ancho que necesita ese panel](/docs/es/plugins/mods/interface#when-a-pane-waits-for-a-wider-terminal).
215 217
216Abre el panel desde un comando o un botón, o verifica el resultado `isPlaced` de la llamada. Consulta [Open a pane at the right time](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time).218Abre el panel desde un comando o un botón, o revisa el resultado `isPlaced` de la llamada. Consulta [Abrir un panel en el momento adecuado](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time).
217 219
218<h3 id="hotkeys-do-nothing">220<h3 id="hotkeys-do-nothing">
219 Las teclas de acceso rápido no hacen nada221 Los atajos de teclado no hacen nada
220</h3>222</h3>
221 223
222Tu panel no tiene el enfoque del teclado.224Tu panel no tiene el foco del teclado.
223 225
224Presiona Ctrl+X luego Tab, o haz clic en el panel. Ábrelo con `focus: true` desde un comando.226Presiona Ctrl+X y luego Tab, o haz clic en el panel. Ábrelo con `focus: true` desde un comando.
225 227
226<h3 id="a-drawing-works-in-the-terminal-and-not-in-the-desktop-app">228<h3 id="a-drawing-works-in-the-terminal-and-not-in-the-desktop-app">
227 Un dibujo funciona en la terminal y no en la aplicación de escritorio229 Un dibujo funciona en la terminal y no en la app de escritorio
228</h3>230</h3>
229 231
230El sitio o elemento no está disponible allí.232El punto de renderizado o el elemento no está disponible allí.
231 233
232Verifica las [render sites](/docs/es/plugins/mods/reference#render-sites) y las tablas de [elements](/docs/es/plugins/mods/reference#elements).234Consulta las tablas de [puntos de renderizado](/docs/es/plugins/mods/reference#render-sites) y [elementos](/docs/es/plugins/mods/reference#elements).
233 235
234<h2 id="an-edit-or-a-value-is-lost">236<h2 id="an-edit-or-a-value-is-lost">
235 Se pierde una edición o un valor237 Se pierde una edición o un valor
236</h2>238</h2>
237 239
238El mod se ejecuta y un cambio que hiciste o un valor que mantuvo no está allí.240El mod se ejecuta, y un cambio que hiciste o un valor que conservaba no está.
239 241
240<h3 id="your-edits-don’t-take-effect">242<h3 id="your-edits-don’t-take-effect">
241 Tus ediciones no tienen efecto243 Tus ediciones no surten efecto
242</h3>244</h3>
243 245
244Estás editando un plugin que instalaste. Claude Code ejecuta la copia en caché para la versión instalada.246Estás editando un plugin que instalaste. Claude Code ejecuta la copia en caché de la versión instalada.
245 247
246Desarrolla con `--plugin-dir` apuntando a tu copia de trabajo, como en `claude --plugin-dir ./first-mod`, que se recarga cuando guardas.248Desarrolla con `--plugin-dir` apuntando a tu copia de trabajo, como en `claude --plugin-dir ./first-mod`, que se recarga cuando guardas.
247 249
248<h3 id="a-value-resets-when-the-module-reloads">250<h3 id="a-value-resets-when-the-module-reloads">
249 Un valor se reinicia cuando el módulo se recarga251 Un valor se restablece cuando el módulo se recarga
250</h3>252</h3>
251 253
252Las variables a nivel de módulo se reinicializan en cada recarga.254Las variables a nivel de módulo se reinicializan en cada recarga.
253 255
254[Mantén el valor en `$.state` o `$.store`](/docs/es/plugins/mods/interface#keep-state).256[Guarda el valor en `$.state` o `$.store`](/docs/es/plugins/mods/interface#keep-state).
255 257
256<h3 id="a-value-resets-after-/clear-/resume-or-/branch">258<h3 id="a-value-resets-after-/clear-/resume-or-/branch">
257 Un valor se reinicia después de `/clear`, `/resume` o `/branch`259 Un valor se restablece después de `/clear`, `/resume` o `/branch`
258</h3>260</h3>
259 261
260Un valor se reinicia, o un valor guardado se reemplaza por su predeterminado. Cada uno de esos comandos reinicia `$.state` a sus valores predeterminados, y `session.start` no se dispara de nuevo.262Un valor se restablece, o un valor guardado se reemplaza por su valor predeterminado. Cada uno de esos comandos restablece `$.state` a sus valores predeterminados, y `session.start` no se vuelve a disparar.
261 263
262[Carga el valor guardado de nuevo](/docs/es/plugins/mods/interface#load-a-saved-value-again-after-clear) en un hook `classic.SessionStart`.264[Carga de nuevo el valor guardado](/docs/es/plugins/mods/interface#load-a-saved-value-again-after-clear) en un hook `classic.SessionStart`.
263 265
264<h2 id="read-the-debug-log">266<h2 id="read-the-debug-log">
265 Lee el registro de depuración267 Lee el registro de depuración
266</h2>268</h2>
267 269
268El registro de depuración tiene una línea para cada módulo que Claude Code carga o rechaza, cada hook que falla y cada resultado que rechaza, por lo que es donde buscar cuando la transcripción no muestra nada. Para escribir uno, en tu shell inicia Claude Code con `--debug`, o con `--debug-file <path>` para elegir dónde va:270El registro de depuración tiene una línea por cada módulo que Claude Code carga o rechaza, cada hook que falla y cada resultado que rechaza, así que es donde debes buscar cuando la transcripción no muestra nada. Para generar uno, en tu shell inicia Claude Code con `--debug`, o con `--debug-file <path>` para elegir dónde se guarda:
269 271
270```bash theme={null}272```bash theme={null}
271claude --debug-file ./mod-debug.log --plugin-dir ./first-mod273claude --debug-file ./mod-debug.log --plugin-dir ./first-mod
277tail -f ./mod-debug.log | grep first-mod279tail -f ./mod-debug.log | grep first-mod
278```280```
279 281
280Un mod que se cargó tiene una línea que lo nombra y enumera los eventos que engancha. Un mod cargado con `--plugin-dir` aparece bajo su nombre seguido de `@inline`:282Un mod que se cargó tiene una línea que lo nombra y enumera los eventos que maneja. Un mod cargado con `--plugin-dir` aparece con su nombre seguido de `@inline`:
281 283
282```text theme={null}284```text theme={null}
283hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render285hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render
284```286```
285 287
286Un dibujo que no se validó cuenta como un resultado rechazado y también obtiene una línea. Para escribir tus propias líneas en el registro, llama a [`$.ui.log`](/docs/es/plugins/mods/api#show-something-without-starting-a-turn) con un segundo argumento, como en `$.ui.log('message', { to: 'debug' })`. Sin el segundo argumento, `$.ui.log` agrega una línea tenue a la transcripción.288Un dibujo que no pasó la validación cuenta como un resultado rechazado y también recibe una línea. Para escribir tus propias líneas en el registro, llama a [`$.ui.log`](/docs/es/plugins/mods/api#show-something-without-starting-a-turn) con un segundo argumento, como en `$.ui.log('message', { to: 'debug' })`. Sin el segundo argumento, `$.ui.log` agrega una línea atenuada a la transcripción.
287 289
288Mientras editas un mod cargado con `--plugin-dir`, la transcripción muestra una línea para cada recarga que nombra el mod y enumera sus hooks. Si un guardado rompe el módulo, la línea dice `reload failed, the previous version stays loaded:` con la razón, y la última versión que funcionó sigue ejecutándose.290Mientras editas un mod cargado con `--plugin-dir`, la transcripción muestra una línea por cada recarga que nombra el mod y enumera sus hooks. Si un guardado rompe el módulo, la línea dice `reload failed, the previous version stays loaded:` con el motivo, y la última versión que funcionaba sigue ejecutándose.
289 291
290<h2 id="next-steps">292<h2 id="next-steps">
291 Próximos pasos293 Próximos pasos
292</h2>294</h2>
293 295
294* [Test a mod](/docs/es/plugins/mods/test): detecta problemas antes de que lleguen a una sesión296* [Probar un mod](/docs/es/plugins/mods/test): detecta problemas antes de que lleguen a una sesión
295* [Troubleshoot plugins](/docs/es/plugins/troubleshooting): problemas con la instalación y carga de un plugin que no son específicos de los mods297* [Solución de problemas de plugins](/docs/es/plugins/troubleshooting): problemas al instalar y cargar un plugin que no son específicos de los mods