CI de solo planificación con compuertas de política
Los errores costosos de AgentCore son visibles en un plan: una memoria que sería reemplazada (todas las conversaciones perdidas), una puerta de enlace que sería reemplazada (una nueva URL para cada cliente), un rol que lo otorga todo. Una solicitud de extracción es el lugar más barato para detenerlos, y un plan es el artefacto correcto para verificar: es lo que realmente sucedería.
${CLAUDE_SKILL_DIR} lo establece el runtime de la skill en el directorio
propio de esta skill. Úsalo textualmente en cada comando a continuación; los
scripts de una skill hermana están en
${CLAUDE_SKILL_DIR}/../<skill>/scripts/.
Flujo
-
Planificar el flujo de trabajo, solo lectura:
python3 ${CLAUDE_SKILL_DIR}/scripts/gen_ci.py <proyecto> --dry-run--tf-rootpara la pila a planificar (por defecto: la raíz que alcanza los recursos de AgentCore),--role-varpara la variable de GitHub que contiene el rol del plan (por defectoAWS_PLAN_ROLE_ARN),--region,--terraform. -
Informar la raíz, Terraform o Terragrunt, los pines encontrados (o
CI010si se usan los fallbacks), y la nota del rol (CI011). -
Opciones: escribir el flujo de trabajo y el verificador empaquetado (gratis); ejecutar primero la política sobre un plan guardado existente (gratis). Confirmar con
AskUserQuestion, luego escribir. -
Probar la compuerta localmente sobre un plan que el usuario haya producido:
python3 ${CLAUDE_SKILL_DIR}/scripts/policy_check.py agentcore.plan.json--allow-replace <dirección>solo para un reemplazo que un humano haya revisado. -
Verificar que el ejecutor empaquetado funciona desde la raíz del repositorio:
python3 ci/agentcore/run.py review ..
La banda CI0xx
| Id | Gravedad | Disparador |
|---|---|---|
CI001 | error | el plan elimina o reemplaza una memoria, puerta de enlace, proveedor de credenciales, identidad de carga de trabajo, grupo de usuarios de Cognito o tabla DynamoDB |
CI002 | error | una política IAM planificada permite * sobre * |
CI003 | error | una puerta de enlace planificada con authorizer_type = "NONE" |
CI004 | advertencia | una puerta de enlace planificada sin supported_versions |
CI005 | informativo | el plan no tiene cambios |
CI006 | informativo | los recursos AgentCore que crea el plan (la superficie de facturación) |
CI010 | informativo | no hay acciones con SHA fijo en el repositorio; se usan pines de respaldo |
CI011 | informativo | el rol del job del plan debe ser de solo lectura |
Reglas de decisión
- La CI planifica; los humanos aplican. El flujo de trabajo no tiene un trabajo de aplicación, y el rol del plan no debería poder escribir.
- Las autorizaciones son por dirección.
--allow-replacenombra un solo recurso; no existe el "permitir todo". - Fijar acciones a SHAs. Reutilizar los pines del repositorio; los fallbacks son los que el repositorio del primer usuario tenía el 2026-10-05, etiquetados con tags.
- Empaquetado, no instalado.
ci/agentcore/es Python 3.10+ simple; actualizar el plugin significa volver a ejecutargen_ci.py --forcey revisar la diferencia.
Referencias
| Pregunta | Archivo |
|---|---|
| El flujo de trabajo, paso a paso; roles; Terragrunt | plan-only-ci.md |
| Cada regla de política, por qué y cómo permitir una excepción revisada | policy-gates.md |
Scripts
| Comando | Hace | Códigos de salida |
|---|---|---|
scripts/gen_ci.py <proyecto> [--tf-root D] [--role-var V] [--dry-run] [--force] [--json] | El flujo de trabajo más ci/agentcore/ | 0 escrito/planificado, 1 nada, 2 argumentos incorrectos |
scripts/policy_check.py <plan.json> [--allow-replace DIR ...] [--json] | La compuerta CI0xx sobre un plan guardado | 0 pasa, 1 error de política, 2 no es un plan |
Lista de verificación de finalización
- El flujo de trabajo se mostró como un plan de escritura y se confirmó antes de escribir.
- No tiene un paso de aplicación, y el rol del plan se describió como de solo lectura.
-
policy_check.pyse ejecutó sobre un plan real, o se le indicó al usuario cómo hacerlo. - El ejecutor empaquetado se probó desde la raíz del repositorio.