ThothCTL automatically loads project templates from GitHub public repositories based on the project type. This provides standardized, up-to-date project scaffolding for different infrastructure frameworks.
When you run thothctl init project, the system will:
| Project Type | Default Repository | Status |
|---|---|---|
terragrunt |
https://github.com/thothforge/terragrunt_project_scaffold.git | ✅ Available |
terraform-terragrunt |
https://github.com/thothforge/terraform_terragrunt_scaffold_project.git | ✅ Available |
terraform |
https://github.com/thothforge/terraform_project_scaffold.git | ❌ Pending |
terraform_module |
https://github.com/thothforge/terraform_module_scaffold.git | ❌ Pending |
tofu |
https://github.com/thothforge/tofu_project_scaffold.git | ❌ Pending |
Templates marked as “Pending” will fall back to local hardcoded templates until the repository is published.
CDK projects support language selection. When --project-type cdkv2 is used, thothctl prompts for the programming language (or defaults to TypeScript in batch mode).
| Project Type | Language | Default Repository | Status |
|---|---|---|---|
cdkv2-typescript |
TypeScript | https://github.com/thothforge/cdkv2_typescript_scaffold.git | ✅ Available |
cdkv2-python |
Python | https://github.com/thothforge/cdkv2_python_scaffold.git | ❌ Pending |
cdkv2-java |
Java | https://github.com/thothforge/cdkv2_java_scaffold.git | ❌ Pending |
cdkv2-csharp |
C# | https://github.com/thothforge/cdkv2_csharp_scaffold.git | ❌ Pending |
cdkv2-go |
Go | https://github.com/thothforge/cdkv2_go_scaffold.git | ❌ Pending |
cdkv2 |
Generic (defaults to TypeScript) | https://github.com/thothforge/cdkv2_typescript_scaffold.git | ✅ Available |
All CDK scaffolds include:
.kiro/ steering docs, skills, and agent configuration#{...}# template placeholders for thothctl processing# Terraform + Terragrunt project
thothctl init project --project-name my-infrastructure --project-type terraform-terragrunt
# Terraform project
thothctl init project --project-name my-terraform --project-type terraform
# Interactive — prompts for language selection
thothctl init project --project-name my-app --project-type cdkv2
# Explicit language
thothctl init project --project-name my-app --project-type cdkv2 --language typescript
thothctl init project --project-name my-api --project-type cdkv2 -l python
# Batch mode — defaults to TypeScript
thothctl init project --project-name my-app --project-type cdkv2 --batch
# Show default GitHub templates
thothctl list templates
# Show templates from a specific space (VCS-based)
thothctl list templates --space my-space
# Override default template for any project type
thothctl init template --project-type cdkv2-typescript --template-url https://github.com/myorg/custom-cdk-ts.git
thothctl init template --project-type terragrunt --template-url https://github.com/myorg/custom-terragrunt.git
Template URLs are stored in ~/.thothcf/.thothctl_templates.toml:
[templates]
terragrunt = "https://github.com/myorg/custom-terragrunt-template.git"
cdkv2-typescript = "https://github.com/myorg/custom-cdk-ts-template.git"
cdkv2-python = "https://github.com/myorg/custom-cdk-python-template.git"
Each CDK scaffold follows the ThothForge enterprise pattern:
project/
├── bin/ # CDK app entry point
├── lib/
│ ├── stacks/ # Stack definitions by domain
│ │ ├── foundation/ # VPC, IAM, S3
│ │ ├── platform/ # EKS, RDS, ElastiCache
│ │ └── application/ # Lambda, API Gateway
│ └── constructs/ # Reusable constructs
├── app/functions/ # Lambda source code
├── project_configs/
│ ├── environment_options.yaml # Multi-env config (#{...}# placeholders)
│ └── config-loader.* # Config loader
├── test/ # Jest / pytest tests
├── .thothcf.toml # ThothForge template config
├── .kiro/ # Kiro steering, skills, agents, MCP settings
├── .pre-commit-config.yaml
└── docs/catalog/ # Backstage integration
If template loading fails:
--debug flag for detailed error information