gitlab-ci-conventions
GitLab CI mechanics, any instance or tier: rules, includes, scans, releases, Pages.
Skill by leroyguillaume
Chalk Labs
Need help deploying gitlab-ci-conventions?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/leroyguillaume-gitlab-ci-conventions
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, frontend, devops, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/gitlab-ci-conventions
What's inside
- Skill name
gitlab-ci-conventions- Description
- GitLab CI mechanics, any instance or tier: rules, includes, scans, releases, Pages. TRIGGER when: editing `.gitlab-ci.yml`, `.gitlab/ci/`, `.gitlab/changelog_config.yml` or a CI/CD component `templates/*.yml`; setting up CI on GitLab; user asks about GitLab CI rules, runners, schedules, the vulnerability report, Releases or Pages. SKIP when: the repo is on GitHub (`github-actions-conventions`). Load `ci-conventions` alongside.
- License
- MIT
- Instructions
- 282 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: scripts/release-notes.sh
Files (1)
- SKILL.md
SKILL.md (first lines)
# GitLab CI conventions
How the pipelines from `ci-conventions` are written on GitLab. The skill
assumes nothing about the instance. Runner tags, registry host and tier all
vary, so read them from the repo or ask. Never guess a runner tag.
## Layout and style
- One `.gitlab-ci.yml`. Once it passes a couple of hundred lines, split it
into `.gitlab/ci/<pipeline>.yml` (`quality`, `build`, `security`, `chart`,
`release`, `docs`, each only when `ci-conventions` calls for it), pulled
in with `include: local:`.
- Each canonical pipeline is a **set of jobs**, not a file. Name jobs in
lowercase kebab-case after what they do (`pre-commit`, `test`,
`build-image`, `trivy-fs`), and keep them static. A `parallel: matrix`
already suffixes the name.
- **`rules:` only.** Never `only:`/`except:`. They can't be combined with
`rules:` and they hide the real trigger logic.
- `needs:` to build a DAG. Stages are for ordering the UI, not for
sequencing jobs.
- Shared rules go through `!reference [.rules-build, rules]` rather than YAML
anchors, because anchors don't cross `include:` boundaries. pre-commit's
`check-yaml` rejects custom tags, so give it the `--unsafe` arg in a repo
that uses `!reference`.
- Block style, no leading `---`, per `yaml-conventions` — with one exception:
`!reference` takes its path in flow style, the only form GitLab documents,
so mark the line `# yamllint disable-line rule:brackets` or the strict
yamllint hook rejects it.
## The pipeline header
```yaml
workflow:
auto_cancel:
on_new_commit: interruptible
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
- if: $CI_COMMIT_TAG
default:
interruptible: true
```
- Without the second rule, a push to a branch with an open MR runs **two
pipelines**, a branch one and an MR one.
- `interruptible: true` on **every** job, publishing included. That is the
GitLab form of the "cancel superseded runs" rule. Never override it to
`false`. Auto-cancel also needs the project setting *Auto-cancel redundant
pipelines*, which is on by default. Leave it on.
## `rules:changes` traps
- **`changes` is always true** on tag pipelines, scheduled and manual
pipelines, and the first push of a new branch. A job filtered only by
`changes` therefore runs on every schedule. Pair `changes` with an `if:` on
the pipeline source:
```yaml
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
paths:
- src/**/*
- Cargo.toml
- Cargo.lock
- Dockerfile
- .dockerignore
- .gitlab/ci/build.yml
```
- In an MR pipeline, `changes` compares against the target branch. On a
branch pipeline without an MR, add `compare_to: refs/heads/<default>`.
Otherwise it compares against the previous push only.
- A job skipped by `rules` doesn't block *Pipelines must succeed*. A pipeline
with **no** job does. Because `quality` always runs, that never happens.
## Pinning `include:`
```yaml
include:
- component: $CI_SERVER_FQDN/<group>/<project>/<name>@<40-char-sha> # 1.4.0
- project: <group>/<project>
ref: <40-char-sha> # v1.4.0
file: /templates/build.yml
```
- A full SHA with the version as a comment, bumped by Renovate
(`dependency-update-conventions`). Never a branch, never a bare tag.
- No `include: remote:` from a URL you don't control. Mirror the file into a
project and include it by SHA.
- `include: local:` is the repo itself and needs no pin.
## Publishing credentials
- **Protect the release tag patterns** (`v*`, `chart-*`) so that only
maintainers can create them.
- Registry and API credentials for publishing are CI/CD variables that are
**protected** and **masked** (hidden where the instance supports it).
Protected variables only reach pipelines on protected branches and tags,
so an MR pipeline never sees them. That is the whole point.
- Restrict `CI_JOB_TOKEN` access to the projects that actually need it (the
job token allowlist).
## `build`
Define `IMAGE` once in top-level `variables:` (`$CI_REGISTRY_IMAGE` when
using the GitLab registry, otherwise the organisation's registry). Tags and
OCI labels derive from `$CI_COMMIT_TAG`, `$CI_COMMIT_SHA` and
`$CI_PROJECT_URL`, and are computed in one place.
- One job with a `parallel: matrix` over `ARCH` and a per-arch runner in
`tags:`. Ask the user which runner tags exist.
```yaml
parallel:
matrix:From leroyguillaume/claude, MIT.
More from leroyguillaume/claude
- 0.624score
adr-conventions
leroyguillaume
Architecture Decision Records in `docs/adr/`.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
api-conventions
leroyguillaume
HTTP/RPC API payloads in any language: DTOs, JSON casing, pagination, OpenAPI docs.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
architecture-conventions
leroyguillaume
ARCHITECTURE.md: the system as it stands, in the present tense.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
argocd-conventions
leroyguillaume
Argo CD objects in any GitOps repository.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
ci-conventions
leroyguillaume
Platform-agnostic CI pipelines: quality gate, Trivy scans, path filters, caching, releases.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
contributing-conventions
leroyguillaume
CONTRIBUTING.md: dev setup, tests, pre-commit and CI.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
dependency-update-conventions
leroyguillaume
Dependabot and Renovate configuration and their PRs.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
diagram-conventions
leroyguillaume
Diagrams in committed files: format and diagram type.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
docker-conventions
leroyguillaume
Dockerfiles: base images, multi-stage builds, non-root USER, hadolint and Trivy.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
documentation-conventions
leroyguillaume
Docs a human can maintain: one home per fact, links not copies.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
frontend-conventions
leroyguillaume
Frontend code: TypeScript, React, Biome, mobile-first.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
github-actions-conventions
leroyguillaume
GitHub Actions mechanics: workflows, pinned actions, SARIF, release notes, Releases, Pages.
SkillAFreshness: A★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 3
- Open issues
- 0
- Last commit (this folder)
- Oct 4, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/leroyguillaume/claude
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from leroyguillaume
- 0.624score
api-conventions
leroyguillaume
HTTP/RPC API payloads in any language: DTOs, JSON casing, pagination, OpenAPI docs.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
architecture-conventions
leroyguillaume
ARCHITECTURE.md: the system as it stands, in the present tense.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
argocd-conventions
leroyguillaume
Argo CD objects in any GitOps repository.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
ci-conventions
leroyguillaume
Platform-agnostic CI pipelines: quality gate, Trivy scans, path filters, caching, releases.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
contributing-conventions
leroyguillaume
CONTRIBUTING.md: dev setup, tests, pre-commit and CI.
SkillAFreshness: A★ 7Claude Code +9 - 0.624score
adr-conventions
leroyguillaume
Architecture Decision Records in `docs/adr/`.
SkillAFreshness: A★ 7Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get gitlab-ci-conventions running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
gitlab-ci-conventions skill. Agent Mart. https://agentmart.dev/skills/leroyguillaume-gitlab-ci-conventions (last updated 2026-10-24)