id = "cloudformation-cli"
name = "AWS CloudFormation CLI"
homepage = "https://github.com/aws-cloudformation/cloudformation-cli"
description = "The CloudFormation Provider Development Toolkit."
executables = ["cfn"]
[dotfiles]
paths = []
secret = ["~/.cfn-cli/typeConfiguration.json"]
[commands]
format = 1
label = "CloudFormation provider toolkit"
description = "Submit, test and build images for CloudFormation resource types with cfn. init, generate, package and validate take no options here."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["submit"]
label = "Submit a resource type"
[[commands.subcommand.source]]
id = "help"
kind = "manual"
url = "https://github.com/aws-cloudformation/cloudformation-cli#readme"
revision = "2026-10-27"
evidence = """
cfn submit
cfn submit --dry-run #prepares schema handler package without submitting for registration
cfn submit --set-default # if successfully registered, set submitted version to be the new default version
"""
[[commands.subcommand.field]]
id = "dry_run"
label = "Dry run"
description = "Prepare the package without registering it."
type = "boolean"
option = ["--dry-run"]
sources = ["help"]
[[commands.subcommand.field]]
id = "set_default"
label = "Set as default version"
type = "boolean"
option = ["--set-default"]
sources = ["help"]
[[commands.subcommand.task]]
id = "dry"
label = "Package only"
set = { dry_run = [true] }
lock = ["dry_run"]
fields = ["dry_run"]
required = []
[[commands.subcommand.task]]
id = "register"
label = "Register and set default"
set = { set_default = [true] }
fields = ["set_default", "dry_run"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["dry_run", "set_default"]
[[commands.subcommand]]
path = ["test"]
label = "Run contract tests"
[[commands.subcommand.source]]
id = "help"
kind = "manual"
url = "https://github.com/aws-cloudformation/cloudformation-cli#readme"
revision = "2026-10-27"
evidence = """
cfn test --enforce-timeout 60 # Read/List handler timeout
cfn test --log-group-name cw_log_group --log-role-arn log_delivery_role_arn
cfn test --v2 --region us-west-2 --profile my-profile
cfn test --v2 --typeconfig ./myResourceTypeConfig.json
--typeconfig ./myResourceTypeConfig.json
cfn test --v2 --rqts-image my-registry/my-executor:my-tag
"""
[[commands.subcommand.field]]
id = "v2"
label = "Use CTv2 (Docker) executor"
type = "boolean"
option = ["--v2"]
sources = ["help"]
[[commands.subcommand.field]]
id = "typeconfig"
label = "Type configuration file"
type = "path"
option = ["--typeconfig"]
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.subcommand.field]]
id = "region"
label = "AWS region"
type = "string"
option = ["--region"]
sources = ["help"]
[[commands.subcommand.field]]
id = "profile"
label = "AWS profile"
type = "string"
option = ["--profile"]
sources = ["help"]
[[commands.subcommand.field]]
id = "enforce_timeout"
label = "Handler timeout (seconds)"
type = "integer"
option = ["--enforce-timeout"]
sources = ["help"]
[[commands.subcommand.field]]
id = "log_group"
label = "Log group name"
type = "string"
option = ["--log-group-name"]
sources = ["help"]
[[commands.subcommand.field]]
id = "log_role"
label = "Log delivery role ARN"
type = "string"
option = ["--log-role-arn"]
sources = ["help"]
[[commands.subcommand.task]]
id = "test"
label = "Run tests"
fields = ["typeconfig", "region", "profile", "enforce_timeout"]
required = []
[[commands.subcommand.task]]
id = "v2"
label = "Run with CTv2"
set = { v2 = [true] }
lock = ["v2"]
fields = ["v2", "typeconfig", "region", "profile"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["v2", "typeconfig", "region", "profile"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["enforce_timeout", "log_group", "log_role"]
[[commands.subcommand]]
path = ["build-image"]
label = "Build a handler image"
[[commands.subcommand.source]]
id = "help"
kind = "manual"
url = "https://github.com/aws-cloudformation/cloudformation-cli#readme"
revision = "2026-10-27"
evidence = """
cfn build-image
cfn build-image --image-name my-handler --executable target/myjar.jar
"""
[[commands.subcommand.field]]
id = "image_name"
label = "Image name"
type = "string"
option = ["--image-name"]
sources = ["help"]
[[commands.subcommand.field]]
id = "executable"
label = "Executable"
type = "path"
option = ["--executable"]
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.subcommand.task]]
id = "build"
label = "Build image"
fields = ["image_name", "executable"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["image_name", "executable"]