This guide is the single place to update when extending bootstrap support.
Use this checklist when adding any of the following:
- new language template
- new provider variant (
micromamba,mise,system, or future provider) - new runtime version options (Python, Node.js, Go, Java)
.github/workflows/create-repository.yml.github/workflows/terraform-create-repository.yml.github/workflows/test-repository-creation.yml
When you add a workflow input or option in one create workflow, mirror it in the other create workflow and the test harness.
tools/pkg/bootstrapinputstools/cmd/bootstrap-inputs
All language/runtime normalization logic must live in bootstrapinputs. Do not reimplement parsing in workflow shell.
templates/languages/<language>/pre-commit-snippets/templates/languages/<language>/providers/<provider>/
Provider files are selected by configure-provider-tooling-files and rendered by workflow orchestration.
.github/actions/render-precommit-configs.github/actions/configure-provider-tooling-files.github/actions/configure-release-tool.github/actions/configure-codeql.github/actions/apply-repo-settings.github/actions/apply-repository-ruleset
Keep each action single-purpose and declarative.
- Add language assets:
- create
templates/languages/<language>/pre-commit-snippets/ - create
templates/languages/<language>/providers/{micromamba,mise,system}/
- create
- Update normalization allow-list and alias mapping in
tools/pkg/bootstrapinputs. - Update release-type mapping in
tools/pkg/bootstrapinputsif needed. - Update CodeQL language mapping if applicable.
- Ensure
tools/cmd/precommit-rendereroutput includes the new language snippets. - Update behavior contract documentation.
- Add provider directories for each supported language:
templates/languages/<language>/providers/<provider>/
- Add required provider files (for example provider-specific bootstrap config).
- Update workflow input allow-lists in:
create-repository.ymlterraform-create-repository.ymltest-repository-creation.yml
- Update provider selection logic in
configure-provider-tooling-filesif needed. - Validate local lint flow with
make lintfor the provider mode.
- Update choice inputs in both create workflows and the test workflow.
- Update validation and normalization constraints in
tools/pkg/bootstrapinputs. - Update any provider templates that pin runtime versions.
- Add or update tests for accepted and rejected versions.
Run all required checks before opening a PR:
LINT_MODE=check make lintWhen changing language/provider behavior, also run the manual test harness:
- Trigger
.github/workflows/test-repository-creation.yml - Run both API and Terraform presets for your change surface
- Verify summary includes API parity checks and lint dispatch success
- Updating only one create workflow and forgetting the other
- Adding workflow input choices without matching
bootstrapinputsvalidation - Editing template snippets without regenerating/validating rendered pre-commit outputs
- Introducing branch-protection/ruleset behavior drift between Actions and Terraform paths
A support-extension PR is done when:
- create workflows and test workflow remain schema-aligned
- normalization behavior is implemented only in
bootstrapinputs - templates and actions remain single-responsibility
- lint/test harness checks pass
- docs are updated (README and behavior contract where relevant)