id = "cookiecutter"
name = "Cookiecutter"
homepage = "https://cookiecutter.readthedocs.io/"
description = "A command-line utility that creates projects from project templates."
executables = ["cookiecutter"]
[dotfiles]
paths = ["~/.cookiecutterrc"]
exclude = []
secret = []
side_effect = false
[commands]
format = 1
label = "Generate a project from a template"
description = "Render a Cookiecutter template (local path, git URL or shorthand) into a new project. Replay, config-file, hook and debug-file options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true }
[[commands.source]]
id = "cli"
kind = "help"
url = "https://github.com/cookiecutter/cookiecutter/blob/main/cookiecutter/cli.py"
revision = "main 2026-10"
evidence = """
'--no-input',
help='Do not prompt for parameters and only use cookiecutter.json file content. '
'-c',
'--checkout',
help='branch, tag or commit to checkout after git clone',
'--directory',
help='Directory within repo that holds cookiecutter.json file '
'-v', '--verbose', is_flag=True, help='Print debug information', default=False
'-f',
'--overwrite-if-exists',
help='Overwrite the contents of the output directory if it already exists',
'-s',
'--skip-if-file-exists',
help='Skip the files in the corresponding directories if they already exist',
'-o',
'--output-dir',
help='Where to output the generated project dir into',
'-l', '--list-installed', is_flag=True, help='List currently installed templates.'
"""
[[commands.field]]
id = "template"
label = "Template"
description = "Local directory, git/hg URL, or a shorthand such as gh:owner/repo."
type = "string"
position = 0
sources = ["cli"]
[[commands.field]]
id = "no_input"
label = "Use defaults, do not prompt"
type = "boolean"
option = ["--no-input"]
sources = ["cli"]
[[commands.field]]
id = "checkout"
label = "Branch, tag or commit"
type = "string"
option = ["--checkout", "-c"]
sources = ["cli"]
[[commands.field]]
id = "directory"
label = "Template subdirectory"
description = "Directory inside the repository that holds cookiecutter.json."
type = "string"
option = ["--directory"]
sources = ["cli"]
[[commands.field]]
id = "output_dir"
label = "Output directory"
type = "path"
option = ["--output-dir", "-o"]
path = { kind = "directory", role = "output" }
sources = ["cli"]
[[commands.field]]
id = "overwrite"
label = "Overwrite existing output"
type = "boolean"
option = ["--overwrite-if-exists", "-f"]
effect = "overwrite"
sources = ["cli"]
[[commands.field]]
id = "skip_existing"
label = "Skip files that already exist"
type = "boolean"
option = ["--skip-if-file-exists", "-s"]
sources = ["cli"]
[[commands.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["cli"]
[[commands.field]]
id = "list_installed"
label = "List installed templates"
type = "boolean"
option = ["--list-installed", "-l"]
sources = ["cli"]
[[commands.task]]
id = "generate"
label = "Generate project"
fields = ["template", "checkout", "output_dir", "no_input"]
required = ["template"]
[[commands.task]]
id = "list"
label = "List installed templates"
set = { list_installed = [true] }
lock = ["list_installed"]
fields = ["list_installed"]
required = []
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["template", "checkout", "output_dir", "no_input", "list_installed"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["directory", "overwrite", "skip_existing", "verbose"]