skills/mav-bp-cicd/SKILL.md
Platform-agnostic CI/CD conventions. Covers pipeline stages, quality gates, environment promotion, secrets management, artifact handling, and deployment boundaries. Applied when configuring or reviewing CI/CD pipelines.
npx skillsauth add thermiteau/maverick mav-bp-cicdInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Ensure CI/CD pipelines enforce quality, promote safely, and remain maintainable. These standards apply regardless of platform (GitHub Actions, GitLab CI, Azure DevOps, etc.).
Every pipeline should follow this stage order. Stages run sequentially; jobs within a stage may run in parallel.
digraph pipeline {
rankdir=LR;
"Validate" [shape=box style=filled fillcolor="#ccddff"];
"Build" [shape=box style=filled fillcolor="#ccddff"];
"Test" [shape=box style=filled fillcolor="#ccddff"];
"Package" [shape=box style=filled fillcolor="#ccddff"];
"Deploy" [shape=box style=filled fillcolor="#fff3cc"];
"Validate" -> "Build" -> "Test" -> "Package" -> "Deploy";
}
| Stage | Purpose | Typical jobs | Fail behaviour | | ----- | ------- | ------------ | -------------- | | Validate | Catch syntax and style issues fast | Lint, typecheck, format check | Block all subsequent stages | | Build | Compile and resolve dependencies | Build application, resolve packages | Block all subsequent stages | | Test | Verify correctness | Unit tests, integration tests | Block packaging and deploy | | Package | Create deployable artifact | Docker image, archive, bundle | Block deploy | | Deploy | Release to environment | Deploy to staging/production | Human-gated for production |
[skip ci], no conditional bypasses for "quick fixes"Quality gates are pass/fail checks that block progression. Every pipeline must include:
| Gate | Stage | What it checks | | ---- | ----- | -------------- | | Lint | Validate | Zero linter errors (not warnings) | | Type check | Validate | Zero type errors | | Format check | Validate | Formatter reports no changes needed | | Unit tests | Test | All pass, none skipped | | Build succeeds | Build | Application compiles without errors |
| Gate | Stage | What it checks | | ---- | ----- | -------------- | | Integration tests | Test | All pass against test infrastructure | | Security scan | Test | No critical/high vulnerabilities | | Bundle/image size | Package | Below defined threshold |
Artifacts promote through environments, never rebuild between them.
digraph envs {
rankdir=LR;
"Build" [shape=box];
"Dev/Preview" [shape=box];
"Staging" [shape=box];
"Production" [shape=box style=filled fillcolor="#fff3cc"];
"Build" -> "Dev/Preview" [label="auto"];
"Dev/Preview" -> "Staging" [label="auto on merge"];
"Staging" -> "Production" [label="manual approval"];
}
| Environment | Trigger | Approval | | ----------- | ------- | -------- | | Dev/Preview | Push to feature branch or PR | Automatic | | Staging | Merge to main (or equivalent trunk) | Automatic | | Production | Promotion from staging | Manual approval required |
| Do | Don't | | -- | ----- | | Reference secrets from platform store | Hardcode in pipeline YAML | | Use environment-specific secrets | Share production secrets with dev | | Mask secrets in logs | Print secrets for debugging | | Use short-lived tokens where possible | Use long-lived static credentials |
node_modules, .pip, ~/.cargo, Go module cachelatest)Before applying these standards, load the project-specific CI/CD implementation:
digraph lookup {
"docs/maverick/skills/cicd/SKILL.md exists?" [shape=diamond];
"Read and use alongside these standards" [shape=box];
"Invoke upskill" [shape=box];
"Read generated skill" [shape=box];
"docs/maverick/skills/cicd/SKILL.md exists?" -> "Read and use alongside these standards" [label="yes"];
"docs/maverick/skills/cicd/SKILL.md exists?" -> "Invoke upskill" [label="no"];
"Invoke upskill" -> "Read generated skill";
"Read generated skill" -> "Read and use alongside these standards";
}
docs/maverick/skills/cicd/SKILL.mddo-upskill skill with topic: cicdmav-bp-cicd-github, mav-bp-cicd-gitlab, mav-bp-cicd-azure)| Pattern | Issue | Fix | | ------- | ----- | --- | | No CI pipeline in repository | No automated quality enforcement | Add pipeline with validate/build/test stages | | Pipeline has no lint/typecheck stage | Style and type errors reach main | Add validate stage before build | | Tests run but failures don't block merge | False confidence | Make test stage a required gate | | Secrets in pipeline YAML or repo files | Security risk | Move to platform secret store | | Pipeline rebuilds for each environment | Inconsistent artifacts | Build once, promote artifact | | No manual gate for production deploy | Risk of unreviewed production changes | Add manual approval step | | Pipeline takes >15 minutes | Developer productivity drain | Profile and optimise, add caching | | Unpinned action/image versions | Non-reproducible builds | Pin to specific versions/SHAs |
<!-- maverick-plugin-version: 3.3.7 -->development
--- name: do-test description: Write or update tests for a code change. Operates in two modes: `unit` (module-scoped, fast, deterministic) and `integration` (crosses module / service / database boundaries). Intended to be invoked once per testable change from inside a do-issue-* or do-epic phase. Mode is required. argument-hint: mode: unit or integration user-invocable: true disable-model-invocation: false --- **Depends on:** mav-bp-unit-testing, mav-bp-integration-testing, mav-local-verificati
development
Implement a focused code change. Use this skill as the wrapper for any implementation work so the Maverick workflow report captures what was done and so the agent applies the project's coding standards before editing. Intended to be invoked once per task from inside a do-issue-* or do-epic phase, not standalone.
testing
How to stack a PR on top of an unmerged sibling branch, and how to retarget it to the repo's default branch once the sibling merges. Prevents orphan-merge incidents when a dependent story is ready before its parent.
development
Claim, lease, heartbeat, and release protocols for when multiple Claude Code instances may act on the same issue or epic concurrently. GitHub labels and marker comments are the coordination surface; local state is a cache.