pipeline-ops — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited pipeline-ops (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
CI/CD is the automated gate every change passes through. It should be fast, deterministic, and trustworthy: green means safe to merge or ship; red means a real problem. A flaky or 20-minute pipeline trains people to rerun, bypass, or ignore it — which defeats the entire purpose.
Pipeline ops covers CI (verify on every change) and CD (promote artifacts to environments). Build the gate people trust, not the gate they hate.
Pairs with [[git-flow]] for merge requirements, [[dependency-hygiene]] for lockfiles and audit gates, [[launch-readiness]] for deploy safety nets, [[test-first]] for what tests must run, [[hardening]] for secrets handling, [[perf-budget]] for optional perf gates, and [[browser-checks]] when E2E runs in CI.
Skip for one-off local scripts with no automation path. Still pin tools if the script runs in CI.
Work in order when building or fixing a pipeline.
Before YAML, list what must be true to merge and to deploy:
| Stage | Typical gates | Blocks |
|---|---|---|
| Every PR | Format, lint, typecheck, unit tests, build | Merge |
| Every PR | Dependency audit ([[dependency-hygiene]]) | Merge |
| PR or main | Integration tests, contract tests | Merge or main |
| Pre-deploy | Staging smoke, E2E critical paths ([[browser-checks]]) | Promote to prod |
| Optional | Bundle budget, load test p95 ([[perf-budget]]) | Release train |
Green must mean something — if tests don't cover the change, green is false confidence ([[review-gate]]).
Document skipped gates ("no E2E yet") and the risk accepted.
Run fast checks first so developers get signal in minutes:
1. Format / lint (~30s) — catches style and simple errors
2. Typecheck (~1–2m)
3. Unit tests (~2–5m)
4. Build (~2–5m)
5. Integration / E2E (~5–15m) — parallel where possible
6. Security audit (~1–3m) — can parallel with testsSlow jobs parallelize — don't run E2E sequentially after a 10-minute integration suite if independent.
Don't run expensive jobs on every commit if PR path can use path filters or main-only full suite — but never skip gates on main that PRs skipped without policy.
Non-deterministic CI erodes trust:
npm ci, lockfile committed ([[dependency-hygiene]], [[git-flow]])# Prefer explicit over floating
node-version: '20.11.0' # not '20.x' everywhere without lockReproduce locally — act, same docker image, or documented make ci matching pipeline.
A test that passes "usually" is broken:
| Wrong | Right |
|---|---|
| Auto-retry 3× on all jobs | Fix root cause ([[fault-recovery]]) |
| Ignore flaky suite | Quarantine with ticket + owner + deadline |
| Increase timeout until green | Fix slow/hanging test or infra |
sleep(5000) in E2E | Proper wait on condition |
Quarantine policy: flaky test moves to allowed-fail job only with linked issue and fix date — not permanent.
Track flake rate — same test failing without code change → priority fix.
E2E flakes often from: timing, test order pollution, shared DB state, live external deps — fix the test environment ([[test-first]]).
Slow pipelines get worked around:
Measure queue + run time — optimize p95 developer wait, not only job duration.
Target: most PRs get actionable signal in < 10 minutes for core gates; longer suites async or parallel.
Checks that don't block are suggestions:
main — match actual job namesRed main is an emergency — stop the line, fix or revert, don't accumulate broken commits.
Document which checks are required vs informational in README or contributing guide.
Same artifact from CI should reach staging and prod — don't rebuild on deploy server from random SHA:
Traceability: deployed prod = image app:v1.4.2 = commit abc123 — know what's live ([[incident-response]], [[launch-readiness]]).
CD pairs with [[launch-readiness]]:
Never SSH and git pull on prod as standard path — undocumented state, no artifact trace.
Deploy scripts and workflow YAML reviewed in PR like application code.
([[hardening]])
Mask secrets in logs; forbid set -x dumping env in debug steps.
Run in CI, block on policy ([[dependency-hygiene]], [[hardening]]):
npm audit, OSV, etc.) — fail or warn on critical per policyDocument exceptions — suppressed CVE with ticket and expiry, not silent ignore.
Workflow files live in git:
@v4.2.0 not @main.github/workflows/ or ci/ if team policyBreaking CI on main blocks everyone — treat pipeline edits as high-risk.
New project CI
Lint → typecheck → test → build → audit on PR; branch protection; local make ci mirror.
Pipeline suddenly slow
Profile job timings → cache misses? → new sequential step? → runner queue? → shard or trim.
Flaky red builds
Identify flaky test from history → quarantine with issue → fix determinism → un-quarantine.
Add new required check
Add job as non-required first → stable 1 week → flip required in branch protection.
Deploy pipeline
Build image on merge → push to registry → deploy staging auto → prod manual with health check → rollback doc.
Monorepo
Path filters per package; affected-only tests; shared cache keys per lockfile root; don't run entire matrix on docs PR without policy.
Hotfix path ([[git-flow]], [[launch-readiness]])
Branch from prod tag → CI same gates (minimum: test + build) → fast-track review → deploy tagged artifact → merge back to main.
E2E in CI ([[browser-checks]])
Headless browser against staging URL or ephemeral env; artifact screenshots on failure; no flaky external deps.
This repo (engineering-skills)
scripts/validate.sh + generate-catalog.sh on skill changes ([[skill-creator]]) — schema gate for content repo pattern.
npm install instead of ci in pipelinemain treated as normal for days~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.