{"meta":{"title":"Personalización de flujos de trabajo de agente con enlaces","intro":"Ejecute comprobaciones automatizadas (como linting, formateo o exámenes de seguridad) en puntos clave durante la ejecución del agente para aplicar estándares de calidad.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/how-tos","title":"Procedimientos"},{"href":"/es/copilot/how-tos/copilot-on-github","title":"Copilot en GitHub"},{"href":"/es/copilot/how-tos/copilot-on-github/customize-copilot","title":"Personalizar Copilot"},{"href":"/es/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent","title":"Personalizar agente de nube"},{"href":"/es/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/use-hooks","title":"Uso de enlaces"}],"documentType":"article"},"body":"# Personalización de flujos de trabajo de agente con enlaces\n\nEjecute comprobaciones automatizadas (como linting, formateo o exámenes de seguridad) en puntos clave durante la ejecución del agente para aplicar estándares de calidad.\n\nLos ganchos permiten ampliar y personalizar el comportamiento de los agentes ejecutando comandos de shell personalizados en puntos clave durante la ejecución del agente. Para obtener información general conceptual sobre los enlaces, incluidos los detalles de los desencadenadores de enlace disponibles, consulte [Acerca de los ganchos para GitHub Copilot](/es/copilot/concepts/agents/hooks).\n\n## Creación de un enlace en un repositorio GitHub\n\n1. Cree un nuevo `NAME.json` archivo (donde `NAME` describe el propósito del archivo) en la `.github/hooks/` carpeta del repositorio.\n\n   > \\[!IMPORTANT]\n   > El archivo de configuración de enlaces **debe estar presente** en la rama predeterminada del repositorio que va a usar agente en la nube de Copilot.\n\n2. En el editor de texto, copie y pegue la siguiente plantilla de enlace. Elimine los ganchos que no planee usar del `hooks` array.\n\n   ```json copy\n   {\n     \"version\": 1,\n     \"hooks\": {\n       \"sessionStart\": [...],\n       \"sessionEnd\": [...],\n       \"userPromptSubmitted\": [...],\n       \"preToolUse\": [...],\n       \"postToolUse\": [...],\n       \"errorOccurred\": [...]\n     }\n   }\n   ```\n\n3. Configure la sintaxis del enlace en las claves `bash` y `powershell`, o bien haga referencia directamente a los archivos de script que haya creado.\n\n   > \\[!NOTE]\n   > Incluya una clave de `bash` (con un script para Linux y macOS) y una clave de `powershell` (para un script para Windows) para permitir que los enlaces se ejecuten en los tres sistemas operativos.\n   > Copilot usa la clave adecuada en función del sistema operativo del usuario.\n\n   * En este ejemplo, se ejecuta un script que registra la fecha de inicio de la sesión en un archivo de registro mediante el gancho `sessionStart`.\n\n     ```json copy\n     \"sessionStart\": [\n       {\n         \"type\": \"command\",\n         \"bash\": \"echo \\\"Session started: $(date)\\\" >> logs/session.log\",\n         \"powershell\": \"Add-Content -Path logs/session.log -Value \\\"Session started: $(Get-Date)\\\"\",\n         \"cwd\": \".\",\n         \"timeoutSec\": 10\n       }\n     ],\n     ```\n\n   * En este ejemplo se llama a un script externo `log-prompt` :\n\n     ```json copy\n     \"userPromptSubmitted\": [\n       {\n         \"type\": \"command\",\n         \"bash\": \"./scripts/log-prompt.sh\",\n         \"powershell\": \"./scripts/log-prompt.ps1\",\n         \"cwd\": \"scripts\",\n         \"env\": {\n           \"LOG_LEVEL\": \"INFO\"\n         }\n       }\n     ],\n     ```\n\n     Para obtener una referencia completa sobre el JSON de entrada de las sesiones del agente junto con scripts de ejemplo, consulte [Referencia de enlaces de GitHub Copilot](/es/copilot/reference/hooks-reference).\n\n4. Confirme el archivo en el repositorio y combítelo en la rama predeterminada. Los enlaces se ejecutarán ahora durante las sesiones de los agentes.\n\n## Solución de problemas\n\nSi tiene problemas al usar enlaces, use la tabla siguiente para solucionar problemas.\n\n| Cuestión                                        | Acción                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Los ganchos no se están ejecutando              | <ul><li>Compruebe que el archivo JSON está en el `.github/hooks/` directorio .</li><li>Compruebe si hay sintaxis JSON válida (por ejemplo, `jq .  hooks.json`).</li><li>Asegúrese de que `version: 1` está especificado en su archivo `hooks.json`.</li><li>Compruebe que el script al que llama desde el enlace es ejecutable (`chmod +x script.sh`)</li><li>Compruebe que el script tiene un shebang adecuado (por ejemplo, `#!/bin/bash`).</li></ul> |\n| Los hooks se están agotando en tiempo de espera | <ul><li>El tiempo de expiración predeterminado es de 30 segundos. Aumente `timeoutSec` en la configuración si es necesario.</li><li>Optimice el rendimiento del script evitando operaciones innecesarias.</li></ul>                                                                                                                                                                                                                                     |\n| Salida JSON no válida                           | <ul><li>Asegúrese de que la salida está en una sola línea.</li><li>En Unix, use `jq -c` para compactar y validar la salida JSON.</li><li>En Windows, use el comando `ConvertTo-Json -Compress` en PowerShell para hacer lo mismo.</li></ul>                                                                                                                                                                                                             |\n\n## Depuración\n\nPuede depurar enlaces mediante los métodos siguientes:\n\n* **Habilite el registro detallado** en el script para inspeccionar los datos de entrada y trazar la ejecución del script.\n\n  ```shell copy\n  #!/bin/bash\n  set -x  # Enable bash debug mode\n  INPUT=$(cat)\n  echo \"DEBUG: Received input\" >&2\n  echo \"$INPUT\" >&2\n  # ... rest of script\n  ```\n\n* **Pruebe los hooks localmente** canalizando los datos de prueba en su hook para validar su comportamiento:\n\n  ```shell copy\n  # Create test input\n  echo '{\"timestamp\":1704614400000,\"cwd\":\"/tmp\",\"toolName\":\"bash\",\"toolArgs\":\"{\\\"command\\\":\\\"ls\\\"}\"}' | ./my-hook.sh\n\n  # Check exit code\n  echo $?\n\n  # Validate output is valid JSON\n  ./my-hook.sh | jq .\n  ```\n\n## Lectura adicional\n\n* [Referencia de enlaces de GitHub Copilot](/es/copilot/reference/hooks-reference)\n* [Acerca de GitHub Copilot agente en la nube](/es/copilot/concepts/agents/cloud-agent/about-cloud-agent)\n* [Acerca de GitHub Copilot CLI](/es/copilot/concepts/agents/about-copilot-cli)\n* [Configuración del entorno de desarrollo](/es/copilot/how-tos/use-copilot-agents/cloud-agent/customize-the-agent-environment)"}