ci-conventions
Platform-agnostic CI pipelines: quality gate, Trivy scans, path filters, caching, releases.
Skill by leroyguillaume
Chalk Labs
Need help deploying 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-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: devops, data, security, 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/ci-conventions
What's inside
- Skill name
ci-conventions- Description
- Platform-agnostic CI pipelines: quality gate, Trivy scans, path filters, caching, releases. TRIGGER when: creating or editing any CI definition (`.github/workflows/`, `.gitlab-ci.yml`, `.gitlab/ci/`, …); setting up CI; user asks about triggers, path filters, CVE scanning, CI caching or release automation. SKIP when: no pipeline is involved. Load `github-actions-conventions` or `gitlab-ci-conventions` alongside.
- License
- MIT
- Instructions
- 211 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# CI conventions What a pipeline does and why, whatever runs it. The *how* for a given platform is in `github-actions-conventions` or `gitlab-ci-conventions`. ## The canonical pipeline set Create exactly these, conditioned on what the repo contains. The platform skill says how each one maps onto files and triggers. - **`quality`**: always. It runs `pre-commit run --all-files` **and** the test suite, on every change proposal (PR/MR) and on every push to the default branch. The `language: system` hooks shell out to real binaries, so the job installs **every** tool the hooks need (toolchain + `helm`, `helm-docs`, `hadolint`, `trivy`, …) before running `pre-commit`. This is the single quality gate. Don't scatter fmt/lint/test across ad-hoc pipelines. - **`build`**: when a `Dockerfile` exists. It builds the image, scans it, and **pushes only when asked**, meaning a manual run with a `push` input or the `release` pipeline. A plain push or change proposal builds and scans without pushing (validation only). Tags and labels come from the platform's metadata (a metadata action, predefined variables). Never hand-roll tag strings in several places. - **`security`**: only when the repo holds something `pre-commit` does not scan: a dependency lockfile, or an image it publishes. It runs the Trivy vulnerability scans (below) on every change proposal, on push to the default branch, **daily on a schedule**, and on manual trigger. A repo of docs, configuration or skills has no `security` pipeline. - **`chart`**: when a Helm chart exists. It publishes the chart as an **OCI artefact**. The chart has its **own release lifecycle**, decoupled from the app. It triggers on the `chart-X.Y.Z` tag namespace, pre-release `chart-X.Y.Z-rcN` tags included (plus manual runs), and never on a change proposal, where `helm lint` inside `pre-commit` is the validation. The chart version comes from the tag (`helm package --version <v>`). `appVersion` stays whatever `Chart.yaml` pins. It runs the same drift guard as `release` on every chart tag: `Chart.yaml` always, the README's `helm install --version` on a stable tag. A chart tag never gets a release page. The only release pages are the app's. - **`release`**: when the repository publishes an application artefact (an image, a package, a binary); a chart alone is the `chart` pipeline's. It is the app-release orchestrator, triggered by a `vX.Y.Z` tag. It derives the version from the tag, **refuses to run when the committed version disagrees** (the drift guard in `release-script-conventions`), runs `build` with push enabled, then creates the platform's release page with generated notes. It does **not** publish the chart. When a documentation site exists, it also redeploys it once the release page is created. A repo of docs, configuration or skills has no `release` pipeline. - **`docs`**: when the repo has a documentation site. It builds the site on every change proposal that touches it, and deploys it from the default branch only: on a push there, and on a stable release. What it builds, and why a release redeploys from the default branch rather than the tag, is in `starlight-conventions`. ### Pre-release tags **A pre-release tag (`vX.Y.Z-rcN`, any tag with a `-`) publishes the image and stops there: no release page.** An rc exists to be tested. A release page for it would carry the full generated changelog, and the final release would then repeat it (or, diffed against the rc, show almost nothing). For a stable release, the notes start from the **previous stable tag** (the greatest `vX.Y.Z` without a hyphen below the current one, `sort -V`), never from an rc. With no previous stable tag, let the platform pick. ## Trivy: misconfigurations in pre-commit, vulnerabilities in `security` **`trivy config` is a `pre-commit` hook**, so it gates every commit and, through `quality`, every pipeline. It covers the misconfiguration checks: `DS-` for a `Dockerfile`, `KSV-` for a rendered chart, provider-prefixed IDs (`AWS-0086`, `GCP-0001`, …) for Terraform. The hooks are in `docker-conventions`, `helm-conventions` and `terraform-conventions`. A misconfiguration is deterministic, so it belongs at commit time, and it fails on **every** finding, whatever its severity. The *vulnerability* side lives in the `security` pipeline, because it needs a database that changes every day and a network to fetch it. A CVE appears against code nobody touched. **A repo that only scans on change proposals is scanning the day it merged, not today.** What to run: - **`trivy image`** on the image `build` just produced, **in the same job, before anything is pushed**, change proposals included. Build into the local store or a tarball, scan, then push that same image. Publishing a known-vulnerable image and scanning it afterwards is the wrong order, and a "staging" tag in a registry is still a published image. - **`trivy fs`** on the checkout, for the lockfiles (`Cargo.lock`, `uv.lock`, `package-lock.json`) and secrets. This is what catches a vulnerable transitive dependency the manifest never mentions. How to run the vulnerability scans: - **Fail on `HIGH` and `CRITICAL`**, and use `ignore-unfixed` on that blocking gate only. This applies to CVEs alone: a misconfiguration has no upstream fix to wait for. A CVE with no upstream fix can't be actioned by the contributor in front of it. Blocking on it teaches everyone that red is normal, which is how a real finding gets waved through. - **Report everything else where people look**: the platform's code-scanning or vulnerability report, via a second, non-failing scan whose upload runs even when the gate failed. A finding that only exists in a job log is lost. - **Pin the Trivy version** (action SHA, image tag) like any other tool, and use the report templates shipped with that version. Never fetch a template from a branch URL at run time. - **Cache the vulnerability DB.** It is a large artefact pulled from a registry on every run, and the failure mode is a rate-limited registry taking the whole pipeline down. Behind a registry proxy, point `--db-repository` / `--java-db-repository` at the mirror. ### The scheduled re-scan - **Daily**, at an **off-hour minute** (never `0`). Top-of-the-hour runs are the first to be delayed or dropped under load. - **Scan what is published, not a rebuild.** A scheduled run has no fresh build, and rebuilding `main` would pull patched base layers and report a clean image nobody runs. It scans the image of the **latest stable release**, pulled by its tag. `trivy fs` runs on the default branch as usual. A repo with no image runs `trivy fs` alone. - **Keep the gate.** Nobody waits on a cron, so a red scheduled run *is* the notification that a new `HIGH`/`CRITICAL` CVE exists.
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
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 - 0.624score
github-issue-conventions
leroyguillaume
Where remaining work goes on a GitHub repo: an issue via `gh`.
SkillAFreshness: A★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 3
- Open issues
- 0
- Last commit (this folder)
- Oct 2, 2026 (29 days 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
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
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 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
ci-conventions skill. Agent Mart. https://agentmart.dev/skills/leroyguillaume-ci-conventions (last updated 2026-10-24)