# Building With Tbc

> 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".

- Skill: `majiayu000/building-with-tbc` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/building-with-tbc`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/building-with-tbc/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/building-with-tbc

---


# Building with To-Be-Continuous (TBC)

Knowledge base for generating GitLab CI/CD configurations using the To-Be-Continuous framework.

## CRITICAL: Framework-First Principle

**NEVER assume a solution. ALWAYS evaluate the framework first.**

Before generating any configuration, **invoke the `component-research` skill** using the Skill tool:

```
Skill: component-research
```

This triggers the Deep Research process to determine:
- Which TBC components fit the use case
- Whether variants are needed
- If custom steps are truly required (rare)

**Mandatory Workflow:**
1. **Invoke `component-research` skill** (Skill tool) to evaluate fit
2. Wait for decision output with Priority 1-6 recommendation
3. Only proceed to generate configuration after decision is documented
4. If Priority 6 (custom step), document WHY TBC doesn't fit

**The user may request something and be incorrect about the approach.** The `component-research` skill disciplines correct framework usage before any generation happens.

## Overview

To-Be-Continuous (TBC) is a framework of 62 modular templates organized into 8 categories for building GitLab CI/CD pipelines.

### Template Categories

| Category | Count | Selection |
|----------|-------|-----------|
| Build | 15 | Single |
| Code Analysis | 7 | Multiple |
| Packaging | 3 | Single |
| Infrastructure | 1 | Single |
| Deployment | 11 | Single |
| Acceptance | 10 | Multiple |
| Other | 3 | Multiple |

**Selection Rules:**
- Build, Packaging, Infrastructure, Deployment: SELECT ONE or NONE
- Code Analysis, Acceptance, Other: SELECT MULTIPLE (including none)

## Configuration Modes

| Mode | GitLab Version | Syntax |
|------|----------------|--------|
| component | 16.0+ (recommended) | `$CI_SERVER_FQDN/path/template@version` |
| project | Self-hosted | `project: "path"` + `ref` + `file` |
| remote | External | HTTPS URL to template |

## Version Modes

| Mode | Syntax | Updates |
|------|--------|---------|
| major | `@7` | Auto major (less stable) |
| minor | `@7.5` | Auto patch (recommended) |
| full | `@7.5.2` | None (most stable) |

## Generating Configurations

When generating a TBC configuration, read and follow `references/create-component.md`.

## Evaluating Component Fit

Before generating, **invoke the `component-research` skill** using the Skill tool. That skill executes the complete decision process with flowcharts and Deep Research protocol.

## Reference Files

| Need | Reference |
|------|-----------|
| Decide if component fits | Invoke `component-research` skill (Skill tool) |
| Complete template catalog | `references/templates-catalog.md` |
| Build templates (15) | `references/build-templates.md` |
| Deployment templates (11) | `references/deployment-templates.md` |
| Analysis templates (7) | `references/analysis-templates.md` |
| Variants (Vault, OIDC) | `references/variantes.md` |
| Common presets | `references/presets.md` |
| Best practices | `references/best-practices.md` |
| Configuration formats | `references/configuration-formats.md` |

## Schemas

All templates have JSON schemas in `schemas/`. Read schema to get valid inputs, components, and versions:

```
schemas/{template-name}.json
```

## Example Configurations

Working examples in `examples/`:
- `python-docker-k8s.yml`
- `node-sonar-docker.yml`
- `terraform-aws.yml`
- `java-maven-cf.yml`

## Validation

Use SlashCommand tool with `tbc:validate`.

## Key Principles

1. Read schemas first - templates have specific variables, don't hallucinate
2. Transform names for component mode - lowercase with hyphens
3. Validate before presenting - use `tbc:validate`
4. Respect selection rules - single vs multiple per category
5. Document secret variables - they go in GitLab CI/CD settings
6. Use `$CI_SERVER_FQDN` for component mode

