@techwavedev/agi-agent-kit 1.1.7 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @techwavedev/agi-agent-kit might be problematic. Click here for more details.
- package/CHANGELOG.md +82 -1
- package/README.md +190 -12
- package/bin/init.js +30 -2
- package/package.json +6 -3
- package/templates/base/AGENTS.md +54 -23
- package/templates/base/README.md +325 -0
- package/templates/base/directives/memory_integration.md +95 -0
- package/templates/base/execution/memory_manager.py +309 -0
- package/templates/base/execution/session_boot.py +218 -0
- package/templates/base/execution/session_init.py +320 -0
- package/templates/base/skill-creator/SKILL_skillcreator.md +23 -36
- package/templates/base/skill-creator/scripts/init_skill.py +18 -135
- package/templates/skills/ec/README.md +31 -0
- package/templates/skills/ec/aws/SKILL.md +1020 -0
- package/templates/skills/ec/aws/defaults.yaml +13 -0
- package/templates/skills/ec/aws/references/common_patterns.md +80 -0
- package/templates/skills/ec/aws/references/mcp_servers.md +98 -0
- package/templates/skills/ec/aws-terraform/SKILL.md +349 -0
- package/templates/skills/ec/aws-terraform/references/best_practices.md +394 -0
- package/templates/skills/ec/aws-terraform/references/checkov_reference.md +337 -0
- package/templates/skills/ec/aws-terraform/scripts/configure_mcp.py +150 -0
- package/templates/skills/ec/confluent-kafka/SKILL.md +655 -0
- package/templates/skills/ec/confluent-kafka/references/ansible_playbooks.md +792 -0
- package/templates/skills/ec/confluent-kafka/references/ec_deployment.md +579 -0
- package/templates/skills/ec/confluent-kafka/references/kraft_migration.md +490 -0
- package/templates/skills/ec/confluent-kafka/references/troubleshooting.md +778 -0
- package/templates/skills/ec/confluent-kafka/references/upgrade_7x_to_8x.md +488 -0
- package/templates/skills/ec/confluent-kafka/scripts/kafka_health_check.py +435 -0
- package/templates/skills/ec/confluent-kafka/scripts/upgrade_preflight.py +568 -0
- package/templates/skills/ec/confluent-kafka/scripts/validate_config.py +455 -0
- package/templates/skills/ec/consul/SKILL.md +427 -0
- package/templates/skills/ec/consul/references/acl_setup.md +168 -0
- package/templates/skills/ec/consul/references/ha_config.md +196 -0
- package/templates/skills/ec/consul/references/troubleshooting.md +267 -0
- package/templates/skills/ec/consul/references/upgrades.md +213 -0
- package/templates/skills/ec/consul/scripts/consul_health_report.py +530 -0
- package/templates/skills/ec/consul/scripts/consul_status.py +264 -0
- package/templates/skills/ec/consul/scripts/generate_values.py +170 -0
- package/templates/skills/ec/documentation/SKILL.md +351 -0
- package/templates/skills/ec/documentation/references/best_practices.md +201 -0
- package/templates/skills/ec/documentation/scripts/analyze_code.py +307 -0
- package/templates/skills/ec/documentation/scripts/detect_changes.py +460 -0
- package/templates/skills/ec/documentation/scripts/generate_changelog.py +312 -0
- package/templates/skills/ec/documentation/scripts/sync_docs.py +272 -0
- package/templates/skills/ec/documentation/scripts/update_skill_docs.py +366 -0
- package/templates/skills/ec/gitlab/SKILL.md +529 -0
- package/templates/skills/ec/gitlab/references/agent_installation.md +416 -0
- package/templates/skills/ec/gitlab/references/api_reference.md +508 -0
- package/templates/skills/ec/gitlab/references/gitops_flux.md +465 -0
- package/templates/skills/ec/gitlab/references/troubleshooting.md +518 -0
- package/templates/skills/ec/gitlab/scripts/generate_agent_values.py +329 -0
- package/templates/skills/ec/gitlab/scripts/gitlab_agent_status.py +414 -0
- package/templates/skills/ec/jira/SKILL.md +484 -0
- package/templates/skills/ec/jira/references/jql_reference.md +148 -0
- package/templates/skills/ec/jira/scripts/add_comment.py +91 -0
- package/templates/skills/ec/jira/scripts/bulk_log_work.py +124 -0
- package/templates/skills/ec/jira/scripts/create_ticket.py +162 -0
- package/templates/skills/ec/jira/scripts/get_ticket.py +191 -0
- package/templates/skills/ec/jira/scripts/jira_client.py +383 -0
- package/templates/skills/ec/jira/scripts/log_work.py +154 -0
- package/templates/skills/ec/jira/scripts/search_tickets.py +104 -0
- package/templates/skills/ec/jira/scripts/update_comment.py +67 -0
- package/templates/skills/ec/jira/scripts/update_ticket.py +161 -0
- package/templates/skills/ec/karpenter/SKILL.md +301 -0
- package/templates/skills/ec/karpenter/references/ec2nodeclasses.md +421 -0
- package/templates/skills/ec/karpenter/references/migration.md +396 -0
- package/templates/skills/ec/karpenter/references/nodepools.md +400 -0
- package/templates/skills/ec/karpenter/references/troubleshooting.md +359 -0
- package/templates/skills/ec/karpenter/scripts/generate_ec2nodeclass.py +187 -0
- package/templates/skills/ec/karpenter/scripts/generate_nodepool.py +245 -0
- package/templates/skills/ec/karpenter/scripts/karpenter_status.py +359 -0
- package/templates/skills/ec/opensearch/SKILL.md +720 -0
- package/templates/skills/ec/opensearch/references/ml_neural_search.md +576 -0
- package/templates/skills/ec/opensearch/references/operator.md +532 -0
- package/templates/skills/ec/opensearch/references/query_dsl.md +532 -0
- package/templates/skills/ec/opensearch/scripts/configure_mcp.py +148 -0
- package/templates/skills/ec/victoriametrics/SKILL.md +598 -0
- package/templates/skills/ec/victoriametrics/references/kubernetes.md +531 -0
- package/templates/skills/ec/victoriametrics/references/prometheus_migration.md +333 -0
- package/templates/skills/ec/victoriametrics/references/troubleshooting.md +442 -0
- package/templates/skills/knowledge/SKILLS_CATALOG.md +274 -4
- package/templates/skills/knowledge/intelligent-routing/SKILL.md +237 -164
- package/templates/skills/knowledge/parallel-agents/SKILL.md +345 -73
- package/templates/skills/knowledge/plugin-discovery/SKILL.md +582 -0
- package/templates/skills/knowledge/plugin-discovery/scripts/platform_setup.py +1083 -0
- package/templates/skills/knowledge/design-md/README.md +0 -34
- package/templates/skills/knowledge/design-md/SKILL.md +0 -193
- package/templates/skills/knowledge/design-md/examples/DESIGN.md +0 -154
- package/templates/skills/knowledge/notebooklm-mcp/SKILL.md +0 -71
- package/templates/skills/knowledge/notebooklm-mcp/assets/example_asset.txt +0 -24
- package/templates/skills/knowledge/notebooklm-mcp/references/api_reference.md +0 -34
- package/templates/skills/knowledge/notebooklm-mcp/scripts/example.py +0 -19
- package/templates/skills/knowledge/react-components/README.md +0 -36
- package/templates/skills/knowledge/react-components/SKILL.md +0 -53
- package/templates/skills/knowledge/react-components/examples/gold-standard-card.tsx +0 -80
- package/templates/skills/knowledge/react-components/package-lock.json +0 -231
- package/templates/skills/knowledge/react-components/package.json +0 -16
- package/templates/skills/knowledge/react-components/resources/architecture-checklist.md +0 -15
- package/templates/skills/knowledge/react-components/resources/component-template.tsx +0 -37
- package/templates/skills/knowledge/react-components/resources/stitch-api-reference.md +0 -14
- package/templates/skills/knowledge/react-components/resources/style-guide.json +0 -27
- package/templates/skills/knowledge/react-components/scripts/fetch-stitch.sh +0 -30
- package/templates/skills/knowledge/react-components/scripts/validate.js +0 -68
- package/templates/skills/knowledge/self-update/SKILL.md +0 -60
- package/templates/skills/knowledge/self-update/scripts/update_kit.py +0 -103
- package/templates/skills/knowledge/stitch-loop/README.md +0 -54
- package/templates/skills/knowledge/stitch-loop/SKILL.md +0 -235
- package/templates/skills/knowledge/stitch-loop/examples/SITE.md +0 -73
- package/templates/skills/knowledge/stitch-loop/examples/next-prompt.md +0 -25
- package/templates/skills/knowledge/stitch-loop/resources/baton-schema.md +0 -61
- package/templates/skills/knowledge/stitch-loop/resources/site-template.md +0 -104
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# AWS Skill User Defaults
|
|
2
|
+
# These values are used by the agent for all AWS operations unless overridden
|
|
3
|
+
|
|
4
|
+
# EC2 / Compute
|
|
5
|
+
ssh_key: tooling-key
|
|
6
|
+
iam_instance_profile: SSMInstanceProfile
|
|
7
|
+
|
|
8
|
+
# General
|
|
9
|
+
region: eu-west-1
|
|
10
|
+
account_id: "511383368449"
|
|
11
|
+
|
|
12
|
+
# Naming conventions
|
|
13
|
+
# name_prefix: "" # Optional prefix for resource names
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Common AWS Patterns
|
|
2
|
+
|
|
3
|
+
Shared patterns used across all AWS sub-skills.
|
|
4
|
+
|
|
5
|
+
## Profile Management
|
|
6
|
+
|
|
7
|
+
All AWS commands should respect the active profile:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Check current identity
|
|
11
|
+
aws sts get-caller-identity
|
|
12
|
+
|
|
13
|
+
# With specific profile
|
|
14
|
+
aws sts get-caller-identity --profile myprofile
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Region Handling
|
|
18
|
+
|
|
19
|
+
Priority order for region:
|
|
20
|
+
|
|
21
|
+
1. `--region` flag on command
|
|
22
|
+
2. `AWS_REGION` environment variable
|
|
23
|
+
3. `AWS_DEFAULT_REGION` environment variable
|
|
24
|
+
4. Profile's configured region in `~/.aws/config`
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Get current region
|
|
28
|
+
aws configure get region
|
|
29
|
+
|
|
30
|
+
# Set for session
|
|
31
|
+
export AWS_REGION=eu-west-1
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Error Handling
|
|
35
|
+
|
|
36
|
+
Common AWS errors and solutions:
|
|
37
|
+
|
|
38
|
+
| Error | Cause | Solution |
|
|
39
|
+
| ------------------------- | ------------------- | ------------------------------ |
|
|
40
|
+
| `ExpiredToken` | Credentials expired | Refresh SSO or regenerate keys |
|
|
41
|
+
| `AccessDenied` | Missing permissions | Check IAM policies |
|
|
42
|
+
| `InvalidClientTokenId` | Bad credentials | Verify access key ID |
|
|
43
|
+
| `SignatureDoesNotMatch` | Bad secret key | Regenerate credentials |
|
|
44
|
+
| `RegionDisabledException` | Region not enabled | Enable in account settings |
|
|
45
|
+
|
|
46
|
+
## Pagination
|
|
47
|
+
|
|
48
|
+
For commands returning many results:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Use --max-items and --starting-token
|
|
52
|
+
aws s3api list-objects-v2 --bucket mybucket --max-items 100
|
|
53
|
+
|
|
54
|
+
# Or let AWS CLI handle pagination
|
|
55
|
+
aws s3api list-objects-v2 --bucket mybucket --no-paginate
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Output Formatting
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# JSON (default)
|
|
62
|
+
aws eks list-clusters --output json
|
|
63
|
+
|
|
64
|
+
# Table (human readable)
|
|
65
|
+
aws eks list-clusters --output table
|
|
66
|
+
|
|
67
|
+
# Text (scripting)
|
|
68
|
+
aws eks list-clusters --output text
|
|
69
|
+
|
|
70
|
+
# Query specific fields
|
|
71
|
+
aws eks describe-cluster --name mycluster --query 'cluster.status' --output text
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Tagging Convention
|
|
75
|
+
|
|
76
|
+
Consistent tagging across resources:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
--tags Key=Environment,Value=production Key=Project,Value=myapp Key=Owner,Value=team@example.com
|
|
80
|
+
```
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# AWS MCP Servers Reference
|
|
2
|
+
|
|
3
|
+
Complete list of AWS MCP servers from [awslabs/mcp](https://awslabs.github.io/mcp/).
|
|
4
|
+
|
|
5
|
+
## Core Servers
|
|
6
|
+
|
|
7
|
+
| Server | Package | Description |
|
|
8
|
+
| -------------- | -------------------------------------- | ------------------------- |
|
|
9
|
+
| AWS API | `awslabs.aws-api-mcp-server` | General AWS CLI commands |
|
|
10
|
+
| Documentation | `awslabs.aws-documentation-mcp-server` | AWS documentation access |
|
|
11
|
+
| CloudFormation | `awslabs.cfn-mcp-server` | CloudFormation management |
|
|
12
|
+
| CDK | `awslabs.cdk-mcp-server` | AWS CDK development |
|
|
13
|
+
| Terraform | `awslabs.terraform-mcp-server` | Terraform workflows |
|
|
14
|
+
|
|
15
|
+
## Container & Kubernetes
|
|
16
|
+
|
|
17
|
+
| Server | Package | Description |
|
|
18
|
+
| ------ | -------------------------- | ----------------------------- |
|
|
19
|
+
| EKS | `awslabs.eks-mcp-server` | Kubernetes cluster management |
|
|
20
|
+
| ECS | `awslabs.ecs-mcp-server` | Container orchestration |
|
|
21
|
+
| Finch | `awslabs.finch-mcp-server` | Local container building |
|
|
22
|
+
|
|
23
|
+
## Serverless
|
|
24
|
+
|
|
25
|
+
| Server | Package | Description |
|
|
26
|
+
| ----------- | ----------------------------------- | ------------------------ |
|
|
27
|
+
| Serverless | `awslabs.aws-serverless-mcp-server` | SAM CLI lifecycle |
|
|
28
|
+
| Lambda Tool | `awslabs.lambda-tool-mcp-server` | Execute Lambda functions |
|
|
29
|
+
|
|
30
|
+
## Database
|
|
31
|
+
|
|
32
|
+
| Server | Package | Description |
|
|
33
|
+
| ----------------- | -------------------------------------- | --------------------- |
|
|
34
|
+
| DynamoDB | `awslabs.dynamodb-mcp-server` | DynamoDB operations |
|
|
35
|
+
| Aurora PostgreSQL | `awslabs.aurora-postgresql-mcp-server` | PostgreSQL on Aurora |
|
|
36
|
+
| Aurora MySQL | `awslabs.aurora-mysql-mcp-server` | MySQL on Aurora |
|
|
37
|
+
| DocumentDB | `awslabs.documentdb-mcp-server` | DocumentDB operations |
|
|
38
|
+
| Neptune | `awslabs.neptune-mcp-server` | Graph database |
|
|
39
|
+
|
|
40
|
+
## AI & ML
|
|
41
|
+
|
|
42
|
+
| Server | Package | Description |
|
|
43
|
+
| ----------- | ----------------------------------------- | ------------------------ |
|
|
44
|
+
| Bedrock KB | `awslabs.bedrock-kb-retrieval-mcp-server` | Knowledge base retrieval |
|
|
45
|
+
| Kendra | `awslabs.amazon-kendra-index-mcp-server` | Enterprise search |
|
|
46
|
+
| Nova Canvas | `awslabs.amazon-nova-canvas-mcp-server` | Image generation |
|
|
47
|
+
| SageMaker | `awslabs.sagemaker-mcp-server` | ML workflows |
|
|
48
|
+
|
|
49
|
+
## Recommended Configuration
|
|
50
|
+
|
|
51
|
+
For general AWS development:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"aws-api": {
|
|
57
|
+
"command": "uvx",
|
|
58
|
+
"args": ["awslabs.aws-api-mcp-server@latest"],
|
|
59
|
+
"env": { "AWS_PROFILE": "default", "AWS_REGION": "eu-west-1" }
|
|
60
|
+
},
|
|
61
|
+
"cloudformation": {
|
|
62
|
+
"command": "uvx",
|
|
63
|
+
"args": ["awslabs.cfn-mcp-server@latest"],
|
|
64
|
+
"env": { "AWS_PROFILE": "default", "AWS_REGION": "eu-west-1" }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For Kubernetes workloads, add:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"eks": {
|
|
76
|
+
"command": "uvx",
|
|
77
|
+
"args": [
|
|
78
|
+
"awslabs.eks-mcp-server@latest",
|
|
79
|
+
"--allow-write",
|
|
80
|
+
"--allow-sensitive-data-access"
|
|
81
|
+
],
|
|
82
|
+
"env": { "AWS_PROFILE": "default", "AWS_REGION": "eu-west-1" }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Installation
|
|
89
|
+
|
|
90
|
+
All servers use `uvx` (recommended) or `pip`:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Install uvx
|
|
94
|
+
pip install uvx
|
|
95
|
+
|
|
96
|
+
# Run any server
|
|
97
|
+
uvx awslabs.<server-name>@latest
|
|
98
|
+
```
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aws-terraform
|
|
3
|
+
description: AWS infrastructure deployments using Terraform and Terragrunt. Use for any task involving: (1) Writing, validating, or deploying Terraform/HCL code for AWS, (2) Security scanning with Checkov, (3) AWS provider documentation lookup, (4) Terraform Registry module analysis, (5) Terragrunt multi-environment orchestration, (6) Infrastructure as Code best practices for AWS. Parent skill: aws.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AWS Terraform Skill
|
|
7
|
+
|
|
8
|
+
Deploy and manage AWS infrastructure using Terraform and Terragrunt with security-first best practices.
|
|
9
|
+
|
|
10
|
+
> **Parent Skill:** `aws` - Inherits defaults from [`../aws/defaults.yaml`](../aws/defaults.yaml)
|
|
11
|
+
|
|
12
|
+
## Quick Reference
|
|
13
|
+
|
|
14
|
+
| Operation | Command |
|
|
15
|
+
| ------------- | ---------------------------- |
|
|
16
|
+
| Initialize | `terraform init` |
|
|
17
|
+
| Validate | `terraform validate` |
|
|
18
|
+
| Plan | `terraform plan -out=tfplan` |
|
|
19
|
+
| Apply | `terraform apply tfplan` |
|
|
20
|
+
| Destroy | `terraform destroy` |
|
|
21
|
+
| Security Scan | `checkov -d .` |
|
|
22
|
+
|
|
23
|
+
## MCP Server Configuration
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"awslabs.terraform-mcp-server": {
|
|
28
|
+
"command": "uvx",
|
|
29
|
+
"args": ["awslabs.terraform-mcp-server@latest"],
|
|
30
|
+
"env": {
|
|
31
|
+
"FASTMCP_LOG_LEVEL": "ERROR",
|
|
32
|
+
"AWS_PROFILE": "default",
|
|
33
|
+
"AWS_REGION": "eu-west-1"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Run `scripts/configure_mcp.py` to auto-configure.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## MCP Tools
|
|
44
|
+
|
|
45
|
+
| Tool | Purpose |
|
|
46
|
+
| ---------------------------- | --------------------------------------------------------- |
|
|
47
|
+
| `SearchAWSProviderDocs` | Search AWS/AWSCC provider resource documentation |
|
|
48
|
+
| `SearchAWSCCProviderDocs` | Search AWSCC-specific documentation |
|
|
49
|
+
| `GetAWSIAGenAIModuleDetails` | Get AI/ML module details (Bedrock, OpenSearch, SageMaker) |
|
|
50
|
+
| `AnalyzeTerraformModule` | Analyze Terraform Registry modules |
|
|
51
|
+
| `RunCheckovScan` | Security and compliance scanning |
|
|
52
|
+
| `TerraformInit` | Initialize working directory |
|
|
53
|
+
| `TerraformValidate` | Validate configuration syntax |
|
|
54
|
+
| `TerraformPlan` | Generate execution plan |
|
|
55
|
+
| `TerraformApply` | Apply infrastructure changes |
|
|
56
|
+
| `TerraformDestroy` | Destroy managed infrastructure |
|
|
57
|
+
| `TerragruntInit` | Initialize Terragrunt |
|
|
58
|
+
| `TerragruntPlan` | Plan with Terragrunt |
|
|
59
|
+
| `TerragruntApply` | Apply with Terragrunt |
|
|
60
|
+
| `TerragruntRunAll` | Execute across all configurations |
|
|
61
|
+
|
|
62
|
+
## MCP Resources
|
|
63
|
+
|
|
64
|
+
| Resource URI | Content |
|
|
65
|
+
| ---------------------------------------------- | ------------------------------------- |
|
|
66
|
+
| `terraform://workflow_guide` | Security-focused development workflow |
|
|
67
|
+
| `terraform://aws_best_practices` | AWS-specific Terraform guidance |
|
|
68
|
+
| `terraform://aws_provider_resources_listing` | AWS provider resource list |
|
|
69
|
+
| `terraform://awscc_provider_resources_listing` | AWSCC provider resource list |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Security-First Workflow
|
|
74
|
+
|
|
75
|
+
Follow this structured process for all Terraform development:
|
|
76
|
+
|
|
77
|
+
### 1. Initialize & Configure
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Set AWS credentials
|
|
81
|
+
export AWS_PROFILE=default
|
|
82
|
+
export AWS_REGION=eu-west-1
|
|
83
|
+
|
|
84
|
+
# Initialize Terraform
|
|
85
|
+
terraform init
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 2. Write Infrastructure Code
|
|
89
|
+
|
|
90
|
+
- **Prefer AWSCC provider** for consistent API behavior and better security defaults
|
|
91
|
+
- Follow AWS Well-Architected Framework principles
|
|
92
|
+
- Use modules from Terraform Registry when available
|
|
93
|
+
|
|
94
|
+
### 3. Validate & Scan
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Syntax validation
|
|
98
|
+
terraform validate
|
|
99
|
+
|
|
100
|
+
# Security scan with Checkov
|
|
101
|
+
checkov -d . --framework terraform
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 4. Plan & Review
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
terraform plan -out=tfplan
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Review the plan output carefully before applying.
|
|
111
|
+
|
|
112
|
+
### 5. Apply
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
terraform apply tfplan
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## User Defaults
|
|
121
|
+
|
|
122
|
+
Inherited from parent `aws` skill:
|
|
123
|
+
|
|
124
|
+
| Setting | Value | Source |
|
|
125
|
+
| -------------------- | -------------------- | ---------------------- |
|
|
126
|
+
| Region | `eu-west-1` | `../aws/defaults.yaml` |
|
|
127
|
+
| Account ID | `511383368449` | `../aws/defaults.yaml` |
|
|
128
|
+
| SSH Key | `tooling-key` | `../aws/defaults.yaml` |
|
|
129
|
+
| IAM Instance Profile | `SSMInstanceProfile` | `../aws/defaults.yaml` |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Common Patterns
|
|
134
|
+
|
|
135
|
+
### Basic EC2 Instance
|
|
136
|
+
|
|
137
|
+
```hcl
|
|
138
|
+
resource "aws_instance" "main" {
|
|
139
|
+
ami = data.aws_ami.amazon_linux.id
|
|
140
|
+
instance_type = "t3.micro"
|
|
141
|
+
key_name = "tooling-key"
|
|
142
|
+
iam_instance_profile = "SSMInstanceProfile"
|
|
143
|
+
vpc_security_group_ids = [aws_security_group.main.id]
|
|
144
|
+
subnet_id = var.subnet_id
|
|
145
|
+
|
|
146
|
+
tags = {
|
|
147
|
+
Name = "example-instance"
|
|
148
|
+
Environment = var.environment
|
|
149
|
+
ManagedBy = "terraform"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### S3 Bucket with Security
|
|
155
|
+
|
|
156
|
+
```hcl
|
|
157
|
+
resource "aws_s3_bucket" "main" {
|
|
158
|
+
bucket = "my-secure-bucket-${data.aws_caller_identity.current.account_id}"
|
|
159
|
+
|
|
160
|
+
tags = {
|
|
161
|
+
Environment = var.environment
|
|
162
|
+
ManagedBy = "terraform"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
resource "aws_s3_bucket_versioning" "main" {
|
|
167
|
+
bucket = aws_s3_bucket.main.id
|
|
168
|
+
versioning_configuration {
|
|
169
|
+
status = "Enabled"
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
resource "aws_s3_bucket_server_side_encryption_configuration" "main" {
|
|
174
|
+
bucket = aws_s3_bucket.main.id
|
|
175
|
+
rule {
|
|
176
|
+
apply_server_side_encryption_by_default {
|
|
177
|
+
sse_algorithm = "AES256"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
resource "aws_s3_bucket_public_access_block" "main" {
|
|
183
|
+
bucket = aws_s3_bucket.main.id
|
|
184
|
+
block_public_acls = true
|
|
185
|
+
block_public_policy = true
|
|
186
|
+
ignore_public_acls = true
|
|
187
|
+
restrict_public_buckets = true
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### VPC with Public/Private Subnets
|
|
192
|
+
|
|
193
|
+
```hcl
|
|
194
|
+
module "vpc" {
|
|
195
|
+
source = "terraform-aws-modules/vpc/aws"
|
|
196
|
+
version = "~> 5.0"
|
|
197
|
+
|
|
198
|
+
name = "main-vpc"
|
|
199
|
+
cidr = "10.0.0.0/16"
|
|
200
|
+
|
|
201
|
+
azs = ["eu-west-1a", "eu-west-1b", "eu-west-1c"]
|
|
202
|
+
private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
|
|
203
|
+
public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
|
|
204
|
+
|
|
205
|
+
enable_nat_gateway = true
|
|
206
|
+
single_nat_gateway = true
|
|
207
|
+
|
|
208
|
+
tags = {
|
|
209
|
+
Environment = var.environment
|
|
210
|
+
ManagedBy = "terraform"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Checkov Integration
|
|
218
|
+
|
|
219
|
+
### Run Full Scan
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
checkov -d . --framework terraform
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Skip Specific Checks
|
|
226
|
+
|
|
227
|
+
```hcl
|
|
228
|
+
#checkov:skip=CKV_AWS_18:Access logging intentionally disabled for dev
|
|
229
|
+
resource "aws_s3_bucket" "dev" {
|
|
230
|
+
# ...
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Common Checkov Rules
|
|
235
|
+
|
|
236
|
+
| Rule | Description |
|
|
237
|
+
| ------------ | ----------------------------- |
|
|
238
|
+
| `CKV_AWS_18` | S3 bucket access logging |
|
|
239
|
+
| `CKV_AWS_19` | S3 bucket encryption |
|
|
240
|
+
| `CKV_AWS_20` | S3 bucket public access block |
|
|
241
|
+
| `CKV_AWS_21` | S3 bucket versioning |
|
|
242
|
+
| `CKV_AWS_79` | EC2 IMDSv2 required |
|
|
243
|
+
| `CKV_AWS_88` | EC2 public IP |
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Project Structure
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
infrastructure/
|
|
251
|
+
├── environments/
|
|
252
|
+
│ ├── dev/
|
|
253
|
+
│ │ ├── main.tf
|
|
254
|
+
│ │ ├── variables.tf
|
|
255
|
+
│ │ ├── outputs.tf
|
|
256
|
+
│ │ └── terraform.tfvars
|
|
257
|
+
│ ├── staging/
|
|
258
|
+
│ └── prod/
|
|
259
|
+
├── modules/
|
|
260
|
+
│ ├── vpc/
|
|
261
|
+
│ ├── ec2/
|
|
262
|
+
│ └── rds/
|
|
263
|
+
├── terragrunt.hcl # Root Terragrunt config
|
|
264
|
+
└── README.md
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Terragrunt Multi-Environment
|
|
270
|
+
|
|
271
|
+
### Root terragrunt.hcl
|
|
272
|
+
|
|
273
|
+
```hcl
|
|
274
|
+
remote_state {
|
|
275
|
+
backend = "s3"
|
|
276
|
+
config = {
|
|
277
|
+
bucket = "terraform-state-${get_aws_account_id()}"
|
|
278
|
+
key = "${path_relative_to_include()}/terraform.tfstate"
|
|
279
|
+
region = "eu-west-1"
|
|
280
|
+
encrypt = true
|
|
281
|
+
dynamodb_table = "terraform-locks"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
generate "provider" {
|
|
286
|
+
path = "provider.tf"
|
|
287
|
+
if_exists = "overwrite_terragrunt"
|
|
288
|
+
contents = <<EOF
|
|
289
|
+
provider "aws" {
|
|
290
|
+
region = "eu-west-1"
|
|
291
|
+
default_tags {
|
|
292
|
+
tags = {
|
|
293
|
+
ManagedBy = "terragrunt"
|
|
294
|
+
Environment = "${basename(get_terragrunt_dir())}"
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
EOF
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Environment-Specific Config
|
|
303
|
+
|
|
304
|
+
```hcl
|
|
305
|
+
# environments/dev/terragrunt.hcl
|
|
306
|
+
include "root" {
|
|
307
|
+
path = find_in_parent_folders()
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
terraform {
|
|
311
|
+
source = "../../modules//vpc"
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
inputs = {
|
|
315
|
+
environment = "dev"
|
|
316
|
+
cidr_block = "10.0.0.0/16"
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Prerequisites
|
|
323
|
+
|
|
324
|
+
Ensure these tools are installed:
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
# Terraform
|
|
328
|
+
brew install terraform
|
|
329
|
+
|
|
330
|
+
# Terragrunt (optional)
|
|
331
|
+
brew install terragrunt
|
|
332
|
+
|
|
333
|
+
# Checkov
|
|
334
|
+
pip install checkov
|
|
335
|
+
|
|
336
|
+
# uv (for MCP server)
|
|
337
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## References
|
|
343
|
+
|
|
344
|
+
- [AWS Terraform MCP Server](https://awslabs.github.io/mcp/servers/terraform-mcp-server)
|
|
345
|
+
- [Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
|
|
346
|
+
- [Terraform AWSCC Provider](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs)
|
|
347
|
+
- [Checkov Documentation](https://www.checkov.io/1.Welcome/Quick%20Start.html)
|
|
348
|
+
- [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/)
|
|
349
|
+
- See `references/` for detailed guides
|