Deploy infrastructure - execute Terraform apply to create/update AWS resources, verify deployment success, update resource registry with ARNs and console URLs, generate deployment documentation. Handles permission errors by delegating to infra-permission-manager.
Executes Terraform deployments with production safety confirmations, pre/post-deploy hooks, and resource verification. Triggers when deploying infrastructure to any environment, handling permission errors automatically.
/plugin marketplace add fractary/claude-plugins/plugin install fractary-faber-cloud@fractaryThis skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/enhanced-validate-environment.shscripts/validate-plan.sh<CRITICAL_RULES> IMPORTANT: Deployment Safety
require_confirmation: trueIMPORTANT: Production Deployments
DEVOPS_REQUIRE_CONFIRMATION environment variable from configMark each step in_progress → completed as you go.
OUTPUT START MESSAGE:
🚀 STARTING: Infrastructure Deployer
Environment: {environment}
AWS Profile: {profile}
───────────────────────────────────────
EXECUTE STEPS:
bash plugins/faber-cloud/skills/infra-deployer/scripts/enhanced-validate-environment.sh {terraform_dir} {environment} {plan_file}
.fractary/plugins/faber-cloud/config.jsonDEVOPS_REQUIRE_CONFIRMATION from environments.{env}.require_confirmation"prod": {"require_confirmation": true}, then DEVOPS_REQUIRE_CONFIRMATION="true"DEVOPS_REQUIRE_CONFIRMATION is "true" for this environment:bash plugins/faber-cloud/skills/cloud-common/scripts/production-safety-confirm.sh {environment} deploy {plan_summary_file}
DEVOPS_REQUIRE_CONFIRMATION is "false" or not set: Skip confirmation, continue to step 10bash plugins/faber-cloud/skills/cloud-common/scripts/execute-hooks.sh pre-deploy {environment} {terraform_dir}
for context_file in /tmp/faber-cloud-hook-context-*.txt; do
if [ -f "$context_file" ]; then
echo "📋 Applying hook context from $context_file"
cat "$context_file"
fi
done
bash plugins/faber-cloud/skills/cloud-common/scripts/execute-hooks.sh post-deploy {environment} {terraform_dir}
OUTPUT COMPLETION MESSAGE:
✅ COMPLETED: Infrastructure Deployer
Environment: {environment}
Resources Deployed: {count}
Registry Updated: .fractary/plugins/faber-cloud/deployments/{env}/registry.json
Documentation: .fractary/plugins/faber-cloud/deployments/{env}/DEPLOYED.md
───────────────────────────────────────
View resources: /fractary-faber-cloud:infra-manage show-resources --env={environment}
</WORKFLOW>
<COMPLETION_CRITERIA> ✅ Terraform apply completed successfully ✅ All resources verified as deployed ✅ Resource registry updated with ARNs and console URLs ✅ DEPLOYED.md documentation generated </COMPLETION_CRITERIA>
<OUTPUTS> Return deployment results: ```json { "status": "success", "environment": "test", "resources_deployed": 5, "registry_path": ".fractary/plugins/faber-cloud/deployments/test/registry.json", "documentation_path": ".fractary/plugins/faber-cloud/deployments/test/DEPLOYED.md", "resources": [ { "type": "aws_s3_bucket", "name": "uploads", "arn": "arn:aws:s3:::bucket-name", "console_url": "https://s3.console.aws.amazon.com/..." } ] } ``` </OUTPUTS><SAFETY_VALIDATION> Before deployment (step 2):
Run enhanced environment validation:
bash plugins/faber-cloud/skills/infra-deployer/scripts/enhanced-validate-environment.sh {terraform_dir} {environment} {plan_file}
This validates:
Run legacy validate-plan.sh script:
If validation fails:
If validation passes:
<PRODUCTION_SAFETY_PROTOCOL> When production deployment confirmation is required:
The production safety confirmation protocol is triggered when:
environments.{env}.require_confirmation: trueDEVOPS_REQUIRE_CONFIRMATION="true" (loaded by config-loader.sh)Environment Variable Distinction:
DEVOPS_REQUIRE_CONFIRMATION - From config, indicates if confirmation is requiredDEVOPS_AUTO_APPROVE - Runtime override to bypass interactive confirmation (CI/CD use)Two-Question Confirmation Protocol:
Question 1: Validation Confirmation
Question 2: Typed Confirmation
Special Cases:
CI/CD Environments:
DEVOPS_AUTO_APPROVE=true to bypass interactive confirmationAuto-Approve Flag:
auto_approve parameter is true, confirmation is skippedAbort Handling:
Safety Features:
Integration Point: Execute after plan generation (step 9) but before pre-deploy hooks (step 10). This ensures user sees the plan before confirming. </PRODUCTION_SAFETY_PROTOCOL>
<ERROR_DELEGATION> When deployment encounters errors during terraform apply (step 12):
STOP deployment immediately
Capture error output
Present user with 3 options:
Option 1: Run debug (interactive mode) → Invoke infra-debugger without --complete → User controls each fix step → Deployment does NOT continue automatically
Option 2: Run debug --complete (automated mode) [RECOMMENDED] → Invoke infra-debugger with --complete flag → Auto-fixes all errors → Returns control to infra-deployer → Deployment continues automatically from step 12
Option 3: Manual fix → User fixes issues manually → Run deploy-apply again when ready
Wait for user selection </ERROR_DELEGATION>
<COMPLETE_FLAG_INTEGRATION> When infra-debugger returns (Option 2 selected):
<STRUCTURED_OUTPUTS> Return JSON output format:
{ "success": true/false, "operation": "deploy-apply", "environment": "{env}", "results": { "resources_created": 15, "resources_updated": 3, "resources_destroyed": 0, "endpoints": [ "https://api.example.com", "arn:aws:lambda:us-east-1:123456789012:function:my-function" ], "cost_estimate": "$45.23/month", "deployment_time": "3m 42s" }, "artifacts": [ "infrastructure/DEPLOYED.md", "infrastructure/terraform.tfstate", "docs/infrastructure/deployments.md" ], "errors": [] } </STRUCTURED_OUTPUTS>
<POST_DEPLOYMENT> After successful deployment (step 9):
Verify resources created:
Generate documentation (step 11):
Update deployment history (step 12):
<PERMISSION_ERROR_HANDLING> If Terraform apply fails with permission error:
<REGISTRY_UPDATE> After successful deployment, update registry:
# Execute registry update script
../cloud-common/scripts/update-registry.sh \
--environment="${environment}" \
--resources="${deployed_resources_json}"
Registry structure:
{
"environment": "test",
"last_updated": "2025-10-28T12:00:00Z",
"resources": [
{
"type": "s3_bucket",
"terraform_name": "uploads",
"aws_name": "myproject-core-test-uploads",
"arn": "arn:aws:s3:::myproject-core-test-uploads",
"console_url": "https://s3.console.aws.amazon.com/s3/buckets/myproject-core-test-uploads",
"created": "2025-10-28T12:00:00Z"
}
]
}
</REGISTRY_UPDATE>
<DOCUMENTATION_GENERATION> Generate DEPLOYED.md:
# Deployed Resources - Test Environment
**Last Updated:** 2025-10-28 12:00:00 UTC
**Project:** myproject-core
## Resources
### S3 Buckets
#### myproject-core-test-uploads
- **ARN:** arn:aws:s3:::myproject-core-test-uploads
- **Purpose:** User file uploads
- **Console:** [View in AWS Console](https://s3.console.aws.amazon.com/...)
- **Created:** 2025-10-28
### Lambda Functions
#### myproject-core-test-processor
- **ARN:** arn:aws:lambda:us-east-1:123456789012:function:myproject-core-test-processor
- **Runtime:** python3.11
- **Console:** [View in AWS Console](https://console.aws.amazon.com/lambda/...)
- **Created:** 2025-10-28
</DOCUMENTATION_GENERATION>
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.