Terminal UI
SKA includes a dynamic Terminal UI that collects variable values when scaffolding or updating projects.
How It Works
When a blueprint includes a .ska-upstream.yaml file with inputs defined, SKA automatically generates an interactive form in your terminal.
Input Configuration
Define inputs in your blueprint’s .ska-upstream.yaml:
inputs: - placeholder: appName label: Application Name help: The name of your application (lowercase, no spaces) regexp: "^[a-z0-9-]*$" default: myapp
- placeholder: author label: Author help: Your name or organization name
- placeholder: port label: HTTP Port help: The port your service will listen on regexp: "^[0-9]+$" default: "8080"Input Properties
| Property | Required | Description |
|---|---|---|
placeholder | Yes | Variable name used in templates (e.g., {{.appName}}) |
label | Yes | Display label shown in the form |
help | No | Inline help text for the field |
regexp | No | Validation pattern for accepted characters |
default | No | Pre-filled default value |
Validation
The regexp property validates input as the user types:
inputs: # Only lowercase letters, numbers, and hyphens - placeholder: projectSlug label: Project Slug regexp: "^[a-z0-9-]*$"
# Semantic version format - placeholder: version label: Initial Version regexp: "^[0-9]+\\.[0-9]+\\.[0-9]+$" default: "1.0.0"
# Email format - placeholder: email label: Contact Email regexp: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"Non-Interactive Mode
For CI/CD pipelines or automation, skip the Terminal UI with --non-interactive:
ska create \ --blueprint https://github.com/org/template@v1.0 \ --output ./my-project \ --non-interactive \ -v appName=myservice \ -v author="Platform Team" \ -v port=3000Providing Variables
Use the -v flag (multiple times) to pass variables:
ska create \ --blueprint ./my-template \ --output ./project \ -n \ -v key1=value1 \ -v key2=value2 \ -v key3="value with spaces"Update Behavior
When running ska update, the Terminal UI:
- Pre-fills fields with previously captured values
- Allows you to modify any value
- Applies the updated values to managed sections
# Interactive update - modify values as neededska update --path .
# Non-interactive update - keep existing valuesska update --path . --non-interactive
# Non-interactive with value overridesska update --path . -n -v port=9090