Claude Code GitHub Actions
Claude Code GitHub Actions lleva la automatización impulsada por IA a tu flujo de trabajo de GitHub.
Al mencionar simplemente en un PR o Issue@claude, Claude puede analizar código, crear Pull Requests, implementar funciones y corregir bugs, mientras sigue los estándares de tu proyecto.
¿Por qué usar Claude Code GitHub Actions?
- Creación instantánea de PR: describe tu necesidad y Claude creará un Pull Request completo
- Implementación automatizada de código: convierte un Issue en código funcional con un solo comando
- Sigue los estándares del proyecto: respeta tus
CLAUDE.mdguías y patrones de código existentes - Simple y rápido: comienza a usarlo en minutos
- Seguro y confiable: el código se ejecuta en el runner de GitHub
Inicio rápido
Método 1: Instalación automática (recomendado)
Ejecuta en la terminal de Claude Code:
/install-github-app
Esto te guiará a través de:
- Configurar la GitHub App
- Agregar los Secrets necesarios
Requisitos: debes ser administrador del repositorio. La GitHub App necesita permisos de lectura y escritura para Contents, Issues y Pull requests. Solo se aplica a usuarios que usan directamente la API de Claude (no compatible con AWS Bedrock ni Google Vertex AI).
Método 2: Instalación manual
Paso 1: Instalar la GitHub App de Claude
Visita:https://github.com/apps/claude
Permisos necesarios:
- Contents: permisos de lectura y escritura
- Issues: permisos de lectura y escritura
- Pull requests: permisos de lectura y escritura
Paso 2: Agregar la clave de API
Agrega en los Secrets del repositorioANTHROPIC_API_KEY
Paso 3: Crear el archivo de flujo de trabajo
Copia desde el archivo de ejemplo:examples/claude.ymlllegar.github/workflows/
Configuración del flujo de trabajo
Flujo de trabajo básico (responde a menciones @claude)
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Revisión automática de código
name: Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Review this pull request for code quality, correctness, and security."
claude_args: "--max-turns 5"
Tareas programadas
name: Daily Report
on:
schedule:
- cron: "0 9 * * *"
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Generate a summary of yesterday's commits and open issues"
claude_args: "--model opus"
Comandos comunes de @claude
Usa en comentarios de PR o Issue:
@claude implement this feature based on the issue description
@claude how should I implement user authentication for this endpoint?
@claude fix the TypeError in the user dashboard component
@claude review this PR for security issues
@claude add tests for this new function
Explicación detallada de los parámetros de Action
| Parámetro | Descripción | ¿Obligatorio? |
|---|---|---|
prompt |
Instrucciones para Claude (texto plano o nombre de habilidad) | No* |
claude_args |
Parámetros de CLI que se pasan a Claude Code | no |
anthropic_api_key |
Clave de API de Claude | Sí** |
github_token |
Token de GitHub (para acceso a la API) | no |
trigger_phrase |
Palabra de activación personalizada (por defecto:@claude) |
no |
use_bedrock |
Usar AWS Bedrock en lugar de la API de Claude | no |
use_vertex |
Usar Google Vertex AI en lugar de la API de Claude | no |
*Cuando se usa en comentarios de issue/PR, omite el prompt y Claude responderá a la palabra de activación
**Obligatorio cuando se usa directamente la API de Claude; no necesario con Bedrock/Vertex
Parámetros comunes de CLI
| Parámetro | Descripción |
|---|---|
--max-turns |
Máximo de rondas de conversación (por defecto 10) |
--model |
Modelo a usar (por ejemploclaude-sonnet-4-6) |
--mcp-config |
Ruta del archivo de configuración de MCP |
--allowedTools |
Herramientas permitidas (separadas por comas) |
--append-system-prompt |
Añadir prompt de sistema |
--debug |
Activar salida de depuración |
Ejemplos de claude_args
claude_args: | --max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json --append-system-prompt "Follow our coding standards"
Integración con AWS Bedrock
Requisitos previos
- Acceso a AWS Bedrock habilitado, incluidos los permisos de los modelos Claude
- GitHub configurado como proveedor de identidad OIDC en AWS
- Rol de IAM con permisos de Bedrock
Secrets necesarios
| Nombre del Secret | Descripción |
|---|---|
AWS_ROLE_TO_ASSUME |
ARN del rol de IAM para acceso a Bedrock |
APP_ID |
GitHub App ID |
APP_PRIVATE_KEY |
Clave privada de la GitHub App |
Ejemplo de flujo de trabajo con Bedrock
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude'))
runs-on: ubuntu-latest
env:
AWS_REGION: us-west-2
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Configure AWS Credentials (OIDC)
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: us-west-2
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_bedrock: "true"
claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'
Integración con Google Vertex AI
Requisitos previos
- API de Vertex AI habilitada en el proyecto de GCP
- Workload Identity Federation configurado para GitHub
- Cuenta de servicio con permisos de Vertex AI
Secrets necesarios
| Nombre del Secret | Descripción |
|---|---|
GCP_WORKLOAD_IDENTITY_PROVIDER |
Nombre del recurso del Workload Identity Provider |
GCP_SERVICE_ACCOUNT |
Correo electrónico de la cuenta de servicio con acceso a Vertex AI |
APP_ID |
GitHub App ID |
APP_PRIVATE_KEY |
Clave privada de la GitHub App |
Ejemplo de flujo de trabajo con Vertex AI
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
jobs:
claude-pr:
if: github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Authenticate to Google Cloud
id: auth
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
trigger_phrase: "@claude"
use_vertex: "true"
claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'
env:
ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
CLOUD_ML_REGION: us-east5
Actualización desde la versión Beta (cambios importantes en v1.0)
| Entradas Beta | Nuevas entradas de v1.0 |
|---|---|
mode |
(eliminado - detección automática) |
direct_prompt |
prompt |
override_prompt |
con variables de GitHubprompt |
custom_instructions |
claude_args: --append-system-prompt |
max_turns |
claude_args: --max-turns |
model |
claude_args: --model |
allowed_tools |
claude_args: --allowedTools |
disallowed_tools |
claude_args: --disallowedTools |
Comparación antes y después de la actualización
Versión Beta:
- uses: anthropics/claude-code-action@beta
with:
mode: "tag"
direct_prompt: "Review this PR for security issues"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
custom_instructions: "Follow our coding standards"
max_turns: "10"
model: "claude-sonnet-4-6"
Versión GA (v1.0):
- uses: anthropics/claude-code-action@v1
with:
prompt: "Review this PR for security issues"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--append-system-prompt "Follow our coding standards"
--max-turns 10
--model claude-sonnet-4-6
Solución de problemas
Claude no responde a los comandos @claude
- Confirma que la GitHub App esté instalada correctamente
- Verifica que el flujo de trabajo esté habilitado
- Asegúrate de que la clave de API esté configurada en los Secrets del repositorio
- Confirma que el comentario contiene
@claude(no/claude)
CI no se ejecuta en los commits de Claude
- Usa la GitHub App o una app personalizada (no uses el usuario de Actions)
- Verifica que los activadores del flujo de trabajo incluyan los eventos necesarios
- Confirma que los permisos de la app incluyan los activadores de CI
Errores de autenticación
- Confirma que la clave de API sea válida y tenga permisos suficientes
- Para Bedrock/Vertex: verifica la configuración de credenciales
- Asegúrate de que los nombres de los Secrets sean correctos en el flujo de trabajo
Consideraciones de seguridad
- Nunca confirmes claves de API directamenteen el repositorio
- Usa GitHub Secrets para almacenar las claves de API:
${{ secrets.ANTHROPIC_API_KEY }} - Limita los permisos de la action y otorga solo los permisos necesarios
- Revisa las sugerencias de Claude antes del merge
- Para AWS/GCP: usar proveedores de identidad OIDC en lugar de credenciales estáticas.
- Crear cuentas de servicio dedicadas para cada repositorio.
Consideraciones de costos
Estructura de costos
- Tarifas de GitHub Actions.: al ejecutar en runners alojados en GitHub, se consumen minutos de GitHub Actions.
- Tarifas de API.: cada interacción con Claude consume tokens de API según la longitud de la solicitud/respuesta.
Sugerencias para optimizar costos
- Usar comandos específicos.
@claudepara reducir llamadas de API innecesarias - Configurar límites adecuados.
--max-turnsde turnos de conversación - Configurar el tiempo de espera del flujo de trabajo para evitar que las tareas se salgan de control.
- Usar el control de concurrencia de GitHub para limitar la ejecución en paralelo.
Mejores prácticas
1. Crear CLAUDE.md
En la raíz del repositorio, crearCLAUDE.mdun archivo, definiendo las guías de estilo de código y las reglas específicas del proyecto:
# 项目开发规范 ## 代码风格 - 使用 TypeScript 4.x - 遵循 ESLint 配置 - 函数必须有 JSDoc 注释 ## PR 要求 - 必须通过所有 CI 检查 - 至少一个代码审查 - 更新相关文档 ## 禁止事项 - 不要修改 `migrations/` 目录 - 不要提交 `.env` 文件
2. Usar comandos @claude específicos
@claude review this PR for SQL injection vulnerabilities
@claude add unit tests for the new validateEmail function
3. Configurar límites apropiados
jobs:
claude:
runs-on: ubuntu-latest
timeout-minutes: 15 # 设置超时
steps:
- uses: anthropics/claude-code-action@v1
with:
claude_args: "--max-turns 5 --allowedTools Read,Grep,Glob,Bash,Write,Edit"
4. Escenarios de automatización CI/CD
- Revisión automática de PR.: activar automáticamente la revisión cuando se abra o actualice un PR.
- Clasificación automática de Issues.: agregar automáticamente etiquetas y asignar cuando se cree un nuevo Issue.
- Informes programados.: generar diariamente informes de estadísticas de código o de seguridad.
- Corrección automática.: analizar automáticamente e intentar corregir cuando la CI falle.