TBC Kicker - GitLab CI/CD Generator
This skill should be used when the user asks to "generate gitlab-ci.yml", "create GitLab CI pipeline", "configure GitLab CI/CD", "use To-Be-Continuous templates", "setup TBC templates", "create CI/CD for Python/Node/Go/Java project", "configure Docker build in GitLab", "setup Kubernetes deployment in GitLab", "add SonarQube to GitLab CI", "configure Terraform with GitLab", or mentions "TBC", "To-Be-Continuous", "Kicker", or needs help selecting CI/CD templates for their project.
$ Installer
git clone https://github.com/rafaelcalleja/claude-market-place /tmp/claude-market-place && cp -r /tmp/claude-market-place/plugins/gitlab-tbc/skills/tbc-kicker ~/.claude/skills/claude-market-place// tip: Run this command in your terminal to install the skill
name: TBC Kicker - GitLab CI/CD Generator description: This skill should be used when the user asks to "generate gitlab-ci.yml", "create GitLab CI pipeline", "configure GitLab CI/CD", "use To-Be-Continuous templates", "setup TBC templates", "create CI/CD for Python/Node/Go/Java project", "configure Docker build in GitLab", "setup Kubernetes deployment in GitLab", "add SonarQube to GitLab CI", "configure Terraform with GitLab", or mentions "TBC", "To-Be-Continuous", "Kicker", or needs help selecting CI/CD templates for their project. version: 1.1.0
TBC Kicker - GitLab CI/CD Configuration Wizard
This skill guides users through generating .gitlab-ci.yml files using the To-Be-Continuous (TBC) framework, replicating the exact workflow of the Kicker web wizard.
Overview
TBC Kicker is an interactive 8-step wizard that generates GitLab CI/CD configurations by combining 50 modular templates across 8 categories:
| Category | Count | Selection | Description |
|---|---|---|---|
| Build | 15 | Single | Programming language/framework |
| Code Analysis | 7 | Multiple | Security, linting, SAST |
| Packaging | 3 | Single | Container/package builds |
| Infrastructure | 1 | Single | Terraform IaC |
| Deployment | 11 | Single | Cloud/K8s deployment |
| Acceptance | 10 | Multiple | E2E/API testing |
| Other | 3 | Multiple | Misc utilities |
Wizard Workflow
Step 0: Configure Global Options
Before template selection, configure these options:
Configuration Mode
- Basic: Show only essential variables
- Advanced: Show all configuration variables including advanced ones
Include Mode
| Mode | Syntax | Use Case |
|---|---|---|
component | $CI_SERVER_FQDN/path/template@version | GitLab 16.0+ (recommended) |
project | project: "path" + ref + file | Self-hosted GitLab |
remote | https://host/path/-/raw/version/file | External GitLab |
Version Mode
| Mode | Example | Updates | Stability |
|---|---|---|---|
major | @7 | Auto major | Least stable |
minor | @7.5 | Auto patch | Recommended |
full | @7.5.2 | None | Most stable |
Additional Options
- With stages: Include custom stages section
- GitLab Host: Custom host for remote mode
Step 1: Build (Language)
Select ONE build template or "none":
| Template | Prefix | Description |
|---|---|---|
| Angular | NG_ | Angular CLI projects |
| Bash | BASH_ | Shell scripts with ShellCheck/Bats |
| DBT | DBT_ | Data Build Tool |
| GitLab Package | GLPKG_ | Generic package publishing |
| Go | GO_ | Golang applications |
| Gradle | GRADLE_ | Java/Kotlin with Gradle |
| GNU Make | MAKE_ | Makefile-based builds |
| Maven | MAVEN_ | Java with Maven |
| MkDocs | MKD_ | Documentation sites |
| Node.js | NODE_ | npm/yarn/pnpm projects |
| PHP | PHP_ | PHP with Composer |
| pre-commit | PRE_COMMIT_ | Pre-commit hooks |
| Python | PYTHON_ | Python with pip/poetry |
| Scala/SBT | SBT_ | Scala applications |
| Sphinx | SPHINX_ | Sphinx documentation |
Step 2: Code Analysis
Select MULTIPLE analysis templates:
| Template | Prefix | Description |
|---|---|---|
| DefectDojo | DEFECTDOJO_ | Security report aggregation |
| Dependency Track | DEPTRACK_ | SBOM & vulnerability tracking |
| Gitleaks | GITLEAKS_ | Secret detection |
| MobSF | MOBSF_ | Mobile security |
| SonarQube | SONAR_ | Code quality & security |
| Spectral | SPECTRAL_ | OpenAPI/AsyncAPI linting |
| SQLFluff | SQLFLUFF_ | SQL linting |
Step 3: Packaging
Select ONE packaging template or "none":
| Template | Prefix | Description |
|---|---|---|
| Cloud Native Buildpacks | CNB_ | Paketo buildpacks |
| Docker | DOCKER_ | Dockerfile builds (kaniko/buildah/dind) |
| Source-to-Image | S2I_ | OpenShift S2I |
Step 4: Infrastructure
Select ONE infrastructure template or "none":
| Template | Prefix | Description |
|---|---|---|
| Terraform | TF_ | Infrastructure as Code |
Step 5: Deployment
Select ONE deployment template or "none":
| Template | Prefix | Description |
|---|---|---|
| Ansible | ANSIBLE_ | Configuration management |
| AWS | AWS_ | Amazon Web Services |
| Azure | AZURE_ | Microsoft Azure |
| Cloud Foundry | CF_ | Cloud Foundry PaaS |
| Docker Compose | DCMP_ | Docker Compose/Stack |
| Google Cloud | GCLOUD_ | Google Cloud Platform |
| Helm | HELM_ | Kubernetes Helm charts |
| Helmfile | HELMFILE_ | Helmfile deployments |
| Kubernetes | K8S_ | kubectl deployments |
| OpenShift | OS_ | OpenShift deployments |
| S3 | S3_ | S3-compatible storage |
Step 6: Acceptance Tests
Select MULTIPLE acceptance test templates:
| Template | Prefix | Description |
|---|---|---|
| Bruno | BRUNO_ | API testing |
| Cypress | CYPRESS_ | E2E web testing |
| Hurl | HURL_ | HTTP testing |
| k6 | K6_ | Load testing |
| Lighthouse | LHCI_ | Performance testing |
| Playwright | PLAYWRIGHT_ | E2E testing |
| Postman | POSTMAN_ | API testing |
| Puppeteer | PUPPETEER_ | Browser automation |
| Robot Framework | ROBOT_ | Test automation |
| TestSSL | TESTSSL_ | TLS/SSL testing |
Step 7: Other Templates
Select MULTIPLE utility templates:
| Template | Prefix | Description |
|---|---|---|
| GitLab Butler | BUTLER_ | Project cleanup |
| Renovate | RENOVATE_ | Dependency updates |
| Semantic Release | SEMREL_ | Version management |
Step 8: Generate Configuration
Generate the .gitlab-ci.yml with selected templates.
Template Configuration
Variables
Each template has variables with these properties:
| Property | Description |
|---|---|
name | Variable name (e.g., PYTHON_IMAGE) |
default | Default value |
type | text, url, boolean, enum, number |
mandatory | Required to use template |
secret | Store in CI/CD settings, not in file |
advanced | Only show in advanced mode |
Features
Templates have toggleable features:
# Feature enabled by default - disable with:
inputs:
lint-disabled: true
# Feature disabled by default - enable with:
inputs:
publish-enabled: true
Variants
Templates may have variants for additional functionality:
| Variant | Available In | Purpose |
|---|---|---|
| Vault | Most templates | HashiCorp Vault secrets |
| OIDC | AWS, Azure, GCP | OpenID Connect auth |
| Google Cloud | Ansible, Python, Helm, K8s, Terraform | GCP authentication |
| AWS | Python, Terraform | AWS authentication |
| GitLab Pages | MkDocs, Sphinx, DBT | Publish to GitLab Pages |
| Jib | Maven | Build Docker images with Jib |
YAML Output Format
Component Mode (Recommended)
include:
# Python template
- component: $CI_SERVER_FQDN/to-be-continuous/python/python@7
inputs:
image: "python:3.12-slim"
build-system: "poetry"
pytest-enabled: true
bandit-enabled: true
# Python template (Vault variant)
- component: $CI_SERVER_FQDN/to-be-continuous/python/python-vault@7
inputs:
vault-base-url: "https://vault.example.com"
# secret variables
# (define the variables below in your GitLab group/project variables)
# VAULT_ROLE_ID: The AppRole RoleID
# VAULT_SECRET_ID: The AppRole SecretID
Project Mode
include:
# Python template
- project: "to-be-continuous/python"
ref: "7.5"
file: "templates/gitlab-ci-python.yml"
# secret variables
# SONAR_TOKEN: SonarQube authentication token
variables:
PYTHON_IMAGE: "python:3.12-slim"
PYTHON_BUILD_SYSTEM: "poetry"
PYTEST_ENABLED: "true"
Remote Mode
include:
# Python template
- remote: "https://gitlab.com/to-be-continuous/python/-/raw/7.5/templates/gitlab-ci-python.yml"
variables:
PYTHON_IMAGE: "python:3.12-slim"
Input Name Transformation
For component mode, transform variable names:
- Strip prefix:
PYTHON_IMAGE→IMAGE - Lowercase:
IMAGE→image - Hyphens for underscores:
BUILD_SYSTEM→build-system
Examples:
PYTHON_IMAGE→imagePYTHON_BUILD_SYSTEM→build-systemPYTEST_ENABLED→pytest-enabledGO_CI_LINT_DISABLED→ci-lint-disabled
Stages (Optional)
stages:
- build
- test
- package-build
- package-test
- infra
- deploy
- acceptance
- publish
- infra-prod
- production
Environment Configuration
Deployment templates support 4 environments:
| Environment | Variable Prefix | Branch | Purpose |
|---|---|---|---|
| review | {PREFIX}_REVIEW_ | Feature | Dynamic review apps |
| integration | {PREFIX}_INTEG_ | develop | CI environment |
| staging | {PREFIX}_STAGING_ | main | Pre-production |
| production | {PREFIX}_PROD_ | main | Production |
Presets
Pre-configured variable sets for common services:
| Preset | Variables Set |
|---|---|
| SonarCloud | SONAR_HOST_URL: https://sonarcloud.io |
| OpenShift Sandbox | OS_URL, K8S_URL for RedHat sandbox |
Additional Resources
Reference Files
For detailed template configurations:
references/build-templates.md- All 15 build templates with full variablesreferences/deployment-templates.md- 12 templates (1 infrastructure + 11 hosting) with variantsreferences/analysis-templates.md- 23 templates (7 analysis + 3 packaging + 10 acceptance + 3 misc/publish)references/presets.md- Pre-configured settings for SonarCloud, OpenShift Sandbox
Example Files
Working configurations in examples/:
python-docker-k8s.yml- Python + Docker + Helmnode-sonar-docker.yml- Node.js + SonarQube + Dockerterraform-aws.yml- Terraform + AWS with OIDCjava-maven-cf.yml- Maven + Cloud Foundry
Official Resources
- Kicker Wizard: https://to-be-continuous.gitlab.io/kicker
- Documentation: https://to-be-continuous.gitlab.io/doc
- Templates: https://gitlab.com/to-be-continuous
- Samples: https://gitlab.com/to-be-continuous/samples
Workflow Guidelines
For New Projects
- Ask about project type, language, and deployment target
- Configure global options (recommend component mode, minor version)
- Select templates for each category
- Read
schemas/{template}.jsonto get valid inputs, components, and versions - Configure variables (focus on mandatory and image versions)
- Enable relevant features and variants
- Generate the configuration
For Existing Projects
- Review current
.gitlab-ci.yml - Identify opportunities to use TBC templates
- Read
schemas/{template}.jsonto get valid inputs, components, and versions - Suggest equivalent TBC templates
- Provide migration guidance
Best Practices
- Use
componentmode for GitLab 16.0+ - Use
minorversion for balance of updates and stability - Enable only needed features
- Store secrets in CI/CD variables
- Document non-default configurations
- Use variants for cloud authentication (Vault, OIDC)
Repository
