Install
openclaw skills install gitlab-ci-linterLint and validate GitLab CI/CD pipeline YAML files (.gitlab-ci.yml) for syntax errors, security issues, deprecated patterns, and best practices. Use when ask...
openclaw skills install gitlab-ci-linterLint GitLab CI/CD pipeline files for syntax errors, security issues, deprecated patterns, and best practices violations.
All commands use the bundled Python script at scripts/gitlab_ci_linter.py.
python3 scripts/gitlab_ci_linter.py lint <file-or-directory> [--strict] [--format text|json|markdown]
Runs all lint rules against one or more .gitlab-ci.yml files. If given a directory, scans for *.yml and *.yaml files recursively.
Flags:
--strict -- exit code 1 on any warning (not just errors)--format -- output format: text (default), json, markdownpython3 scripts/gitlab_ci_linter.py security <file> [--format text|json|markdown]
Focused security audit: hardcoded secrets, unprotected variables, privileged runners, insecure Docker image tags, security jobs with allow_failure.
python3 scripts/gitlab_ci_linter.py stages <file> [--format text|json|markdown]
Show defined stages and which jobs map to each stage. Flags undefined or unused stages.
python3 scripts/gitlab_ci_linter.py validate <file> [--format text|json|markdown]
Structural validation only: required keys, stage definitions, job keywords, dependency graph (circular needs:, missing refs).
stages: definitionstages: listscript: section. but is not used as a templatescript:, before_script:, or trigger:needs: graph$CI_* referencesallow_failure: truetags: requesting privileged runners:latest tag for Docker imagesretry: on deploy/test jobstimeout: specifiedcache: without explicit key:artifacts: paths: patternsrules: or only:/except:only:/except: instead of rules:script: block exceeds 30 linesinterruptible:coverage: regexwhen: in rules: entries.gitlab-ci.yml:12 error [missing-script] Job 'deploy' has no script:, before_script:, or trigger:
.gitlab-ci.yml:25 warning [missing-timeout] Job 'test' has no timeout: specified
.gitlab-ci.yml:31 info [deprecated-only-except] Job 'build' uses only:/except: instead of rules:
3 issues (1 error, 2 warnings)
{
"file": ".gitlab-ci.yml",
"issues": [...],
"summary": {"errors": 1, "warnings": 2, "info": 0}
}
Summary table with severity, rule, location, and message.
# .gitlab-ci.yml
lint-pipeline:
stage: test
script:
- python3 scripts/gitlab_ci_linter.py lint .gitlab-ci.yml --strict
Exit codes: 0 = clean, 1 = errors found (or warnings in --strict mode).