infra-adoption
Discover and adopt existing infrastructure - analyze Terraform structure, AWS profiles, and custom agents to generate faber-cloud configuration and migration plan
$ Installer
git clone https://github.com/fractary/claude-plugins /tmp/claude-plugins && cp -r /tmp/claude-plugins/plugins/faber-cloud/skills/infra-adoption ~/.claude/skills/claude-plugins// tip: Run this command in your terminal to install the skill
name: infra-adoption model: claude-haiku-4-5 description: | Discover and adopt existing infrastructure - analyze Terraform structure, AWS profiles, and custom agents to generate faber-cloud configuration and migration plan tools: Bash, Read, Write
Infrastructure Adoption Skill
You discover what they have, generate appropriate configuration, and provide a clear migration path.
<CRITICAL_RULES> IMPORTANT: Discovery is Read-Only
- NEVER modify infrastructure or state files
- NEVER run terraform apply/destroy during discovery
- NEVER modify AWS resources
- ONLY read and analyze existing setup
IMPORTANT: User Guidance
- Explain what was found in simple terms
- Provide clear next steps
- Highlight risks and considerations
- Give realistic timeline estimates </CRITICAL_RULES>
- ⏳ Validate project structure
- ⏳ Discover Terraform infrastructure
- ⏳ Discover AWS profiles
- ⏳ Discover custom agents and scripts
- ⏳ Generate faber-cloud configuration
- ⏳ Generate migration report
- ⏳ Present comprehensive findings to user
- ⏳ Get user confirmation to proceed
- ⏳ Install configuration (if approved)
Mark each step in_progress → completed as you go.
OUTPUT START MESSAGE:
🔍 STARTING: Infrastructure Discovery
Project: {project_name}
Output: {output_dir}
───────────────────────────────────────
EXECUTE STEPS:
Step 1: Validate Project Structure
NOTE: The adopt command discovers and analyzes existing infrastructure. It does NOT require faber-cloud to be configured yet - that's what this command will set up!
IMPORTANT: If you encounter missing files or "plugin not installed" errors, this is NORMAL. The adopt workflow will:
- Discover your existing infrastructure (Terraform, AWS, etc.)
- Generate configuration automatically
- Create
.fractary/plugins/faber-cloud/config.json - You do NOT need to run
/fractary-faber-cloud:initfirst
Check project directory exists and is a valid project:
- Has .git directory (version controlled)
- Has infrastructure files (Terraform, AWS config, etc.)
- Has write permissions for output directory
Step 2: Discover Terraform Infrastructure
Execute Terraform discovery:
bash plugins/faber-cloud/skills/infra-adoption/scripts/discover-terraform.sh {project_root} {output_dir}/discovery-terraform.json
This discovers:
- Terraform directory locations
- Structure type (flat, modular, multi-environment)
- Terraform version
- Backend configuration (local, S3, remote)
- Variable files (.tfvars)
- Modules
- Resource count
- Environment separation strategy
Step 3: Discover AWS Profiles
Execute AWS profiles discovery:
bash plugins/faber-cloud/skills/infra-adoption/scripts/discover-aws-profiles.sh {project_name} {output_dir}/discovery-aws.json
This discovers:
- All AWS CLI profiles
- Project-related profiles
- Profile naming patterns
- Environment mapping (test, prod, etc.)
- Default regions
- Credential sources (static, SSO, assume-role)
Step 4: Discover Custom Agents
Execute custom agents discovery:
bash plugins/faber-cloud/skills/infra-adoption/scripts/discover-custom-agents.sh {project_root} {output_dir}/discovery-custom-agents.json
This discovers:
- Custom agent directories (.claude/, .fractary/, etc.)
- Agent and script files
- Script purposes (deploy, audit, validate, etc.)
- Version control status
- Dependencies
- Mapping to faber-cloud features
Step 5: Analyze Discovery Results
Load all three discovery reports:
- Read discovery-terraform.json
- Read discovery-aws.json
- Read discovery-custom-agents.json
Analyze combined results:
- Identify infrastructure complexity level (simple, moderate, complex)
- Determine primary Terraform structure
- Map AWS profiles to environments
- Identify which custom scripts can be replaced vs. preserved as hooks
- Estimate migration effort and timeline
Step 6: Present Findings to User
Display comprehensive summary:
═══════════════════════════════════════════════════════════
📊 DISCOVERY SUMMARY
═══════════════════════════════════════════════════════════
🏗️ TERRAFORM INFRASTRUCTURE
Structure: {flat|modular|multi-environment}
Location: {terraform_directory}
Resources: {count} defined
Backend: {local|S3|remote}
Environments: {environment_strategy}
☁️ AWS CONFIGURATION
Profiles Found: {total_profiles}
Project-Related: {project_profiles}
Environments: {detected_environments}
Naming Pattern: {pattern}
🔧 CUSTOM INFRASTRUCTURE CODE
Agents/Scripts: {file_count}
Purposes: {purposes_list}
Version Controlled: {tracked_count}/{total_count}
💡 RECOMMENDATIONS
{recommendation_1}
{recommendation_2}
...
⏱️ ESTIMATED MIGRATION TIME
{simple: 1-2 hours | moderate: 4-6 hours | complex: 1-2 days}
═══════════════════════════════════════════════════════════
Step 7: Get User Confirmation
Ask user:
- Does this summary look accurate?
- Are there any additional considerations?
- Ready to proceed with configuration generation? (Phase 4)
Step 5: Generate faber-cloud Configuration
Execute configuration generation:
bash plugins/faber-cloud/skills/infra-adoption/scripts/generate-config.sh \
{output_dir}/discovery-terraform.json \
{output_dir}/discovery-aws.json \
{output_dir}/discovery-custom-agents.json \
{output_dir}/config.json
This generates:
- Complete config.json configuration
- Auto-selected template (flat, modular, multi-environment)
- Environment configurations from AWS profiles
- Hook suggestions from custom agents
- Production safety settings
Step 6: Generate Migration Report
Execute migration report generation:
bash plugins/faber-cloud/skills/infra-adoption/scripts/generate-migration-report.sh \
{output_dir}/discovery-terraform.json \
{output_dir}/discovery-aws.json \
{output_dir}/discovery-custom-agents.json \
{output_dir}/MIGRATION.md
This generates:
- Executive summary with complexity assessment
- Infrastructure overview
- Custom script capability mapping
- Risk assessment with mitigation strategies
- Timeline estimation
- 7-phase migration checklist
- Rollback procedures
Step 6b: Generate Detailed Adoption Spec
Execute adoption spec generation:
bash plugins/faber-cloud/skills/infra-adoption/scripts/generate-adoption-spec.sh \
{project_root} \
{output_dir} \
{output_dir}/ADOPTION-SPEC.md
This generates a comprehensive, actionable adoption specification with:
- Complete file contents ready to create
- Full ARCHITECTURE.md with discovered components
- Full DEPLOYMENT-STANDARDS.md with extracted standards
- Full NAMING-CONVENTIONS.md with discovered patterns
- Before/after for commands with actual code
- Shows current command implementation
- Shows new delegation pattern
- Ready to copy-paste
- Complete skill implementations
- Full SKILL.md for each validation script
- Migrated logic from existing scripts
- Ready to create and test
- Complete faber-cloud configuration
- Full config.json with all settings
- All hooks configured
- All environments configured
- Step-by-step testing with actual commands
- Rollback procedures specific to the project
The adoption spec is designed to be handed to another Claude Code session for immediate implementation.
Step 7: Present Comprehensive Findings
Display complete adoption summary:
═══════════════════════════════════════════════════════════
📊 ADOPTION SUMMARY
═══════════════════════════════════════════════════════════
🏗️ TERRAFORM INFRASTRUCTURE
Structure: {flat|modular|multi-environment}
Location: {terraform_directory}
Resources: {count} defined
Backend: {local|S3|remote}
Environments: {environment_strategy}
☁️ AWS CONFIGURATION
Profiles Found: {total_profiles}
Project-Related: {project_profiles}
Environments: {detected_environments}
Naming Pattern: {pattern}
🔧 CUSTOM INFRASTRUCTURE CODE
Agents/Scripts: {file_count}
Purposes: {purposes_list}
Version Controlled: {tracked_count}/{total_count}
⚙️ GENERATED CONFIGURATION
Template: {flat|modular|multi-environment}
Environments: {env_count} configured
Hooks: {hook_count} suggested
Validation: Enhanced environment validation enabled
📈 COMPLEXITY ASSESSMENT
Level: {SIMPLE|MODERATE|COMPLEX}
Score: {score}/15
Estimated Migration Time: {hours} hours
⚠️ RISKS IDENTIFIED
HIGH: {high_risk_count}
MEDIUM: {medium_risk_count}
💡 KEY RECOMMENDATIONS
{recommendation_1}
{recommendation_2}
...
📋 OUTPUT FILES
- {output_dir}/discovery-terraform.json
- {output_dir}/discovery-aws.json
- {output_dir}/discovery-custom-agents.json
- {output_dir}/config.json
- {output_dir}/MIGRATION.md
- {output_dir}/ADOPTION-SPEC.md ⭐ (Detailed implementation plan)
═══════════════════════════════════════════════════════════
Step 8: Get User Confirmation
Ask user if they want to proceed:
❓ Ready to install faber-cloud configuration?
This will:
✓ Copy config.json to .fractary/plugins/faber-cloud/
✓ Set up directory structure
✓ Enable faber-cloud lifecycle management
You can:
1. Proceed now (recommended after review)
2. Review reports first (.fractary/adoption/)
3. Test with dry-run in test environment
Proceed with installation? (yes/no)
If dry-run mode: Skip this step, display reports only
Step 9: Install Configuration (if approved)
If user approves installation:
-
Create target directory:
mkdir -p .fractary/plugins/faber-cloud -
Copy configuration:
cp {output_dir}/config.json .fractary/plugins/faber-cloud/ -
Validate installation:
bash plugins/faber-cloud/skills/infra-adoption/scripts/validate-generated-config.sh \ .fractary/plugins/faber-cloud/config.json -
Display success message:
✅ faber-cloud configuration installed! Next steps: 1. Review MIGRATION.md for detailed checklist 2. Test in test environment: /fractary-faber-cloud:audit --env=test /fractary-faber-cloud:deploy-plan --env=test 3. Follow migration checklist step-by-step 4. Gradually roll out (test → staging → prod)
If user declines:
ℹ️ Configuration not installed
Reports saved to {output_dir}/:
- config.json (ready to install)
- MIGRATION.md (migration guide)
- discovery-*.json (discovery reports)
To install later:
1. Review the reports
2. Run /fractary-faber-cloud:adopt again
3. Or manually copy configuration
OUTPUT COMPLETION MESSAGE:
✅ COMPLETED: Infrastructure Adoption
{Installation status message}
Reports: {output_dir}/
- discovery-terraform.json
- discovery-aws.json
- discovery-custom-agents.json
- config.json
- MIGRATION.md (overview)
- ADOPTION-SPEC.md ⭐ (detailed implementation plan)
{If installed}
Configuration: .fractary/plugins/faber-cloud/config.json
Next Steps:
1. Review ADOPTION-SPEC.md for detailed implementation plan
2. Hand ADOPTION-SPEC.md to another session for implementation
3. Or follow the step-by-step guide in ADOPTION-SPEC.md yourself
The ADOPTION-SPEC.md contains:
- Complete file contents ready to create
- Command conversions with before/after code
- Full skill implementations
- Complete configuration
- Step-by-step testing instructions
───────────────────────────────────────
<COMPLETION_CRITERIA> ✅ All discovery scripts completed successfully ✅ Configuration generated and validated ✅ Migration report generated ✅ Comprehensive findings presented to user ✅ User confirmation obtained (or dry-run completed) ✅ Configuration installed (if approved) ✅ User has clear next steps </COMPLETION_CRITERIA>
Input:
- Flat Terraform directory (./terraform/)
- test.tfvars and prod.tfvars
- 2 AWS profiles (project-test, project-prod)
- No custom agents
Output:
Structure: Flat
Complexity: Simple
Migration Time: 1-2 hours
Recommendation: Straightforward adoption, minimal configuration needed
Example: Complex Multi-Site
Input:
- Modular Terraform (./terraform/modules/, ./terraform/environments/)
- Multiple environments (dev, test, staging, prod)
- 8 AWS profiles with complex naming
- Custom agents for deploy, audit, debug
Output:
Structure: Multi-environment with modules
Complexity: Complex
Migration Time: 1-2 days
Recommendations:
- Map custom deploy scripts to pre-deploy hooks
- Integrate audit script as standalone audit skill
- Review module dependencies carefully
<ERROR_HANDLING>
No Terraform Found
If Terraform discovery returns no results:
- Check if project uses different IaC tool (CDK, Pulumi, etc.)
- Suggest manual configuration creation
- Offer to set up greenfield faber-cloud config
No AWS Profiles Found
If AWS discovery returns no profiles:
- Check if using environment variables instead
- Suggest creating profiles for faber-cloud
- Offer profile setup wizard
Custom Agents Not Version Controlled
If custom scripts not in git:
- WARN user about risk of losing scripts
- Recommend committing before migration
- Offer to backup scripts to .fractary/backup/ </ERROR_HANDLING>
# Infrastructure Discovery Report
**Date:** {timestamp}
**Project:** {project_name}
## Terraform Infrastructure
- **Location:** {directory}
- **Structure:** {type}
- **Resources:** {count}
- **Backend:** {backend_type}
## AWS Configuration
- **Profiles:** {count}
- **Environments:** {env_list}
- **Pattern:** {naming_pattern}
## Custom Scripts
- **Total:** {count}
- **Purposes:** {purposes}
- **Tracked:** {tracked}/{total}
## Recommendations
{recommendations_list}
## Next Steps
1. Review this report
2. Proceed to configuration generation
3. Test with read-only operations
---
Generated by faber-cloud infra-adoption
Repository
