Complete GitLab CI/CD toolkit with generation and validation capabilities for pipelines and configurations
97
97%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
{
"context": "Tests whether the agent uses extends or YAML anchors to eliminate duplicated before_script and image declarations, configures dependency caching, and uses needs for per-service DAG chains rather than waiting on all jobs in a stage.",
"type": "weighted_checklist",
"checklist": [
{
"name": "extends or YAML anchors used",
"description": "The YAML uses `extends:` referencing a hidden job template (dot-prefixed) OR YAML anchors (`&`/`<<: *`) to share common configuration",
"max_score": 15
},
{
"name": "No duplicate before_script",
"description": "The common setup command (npm ci or equivalent) appears in ONE place (template/anchor/default), NOT repeated in each service job",
"max_score": 12
},
{
"name": "Image declared once",
"description": "The Node image is declared in ONE location (default block, shared template, or anchor), not duplicated across every job",
"max_score": 10
},
{
"name": "Cache configured",
"description": "A `cache:` block is present, configured for node_modules or equivalent dependency directory",
"max_score": 10
},
{
"name": "Cache key uses CI variable",
"description": "The cache `key:` references a GitLab CI predefined variable (e.g. $CI_COMMIT_REF_SLUG) rather than a static string",
"max_score": 8
},
{
"name": "needs for per-service DAG",
"description": "Each service's test job uses `needs:` to reference only its own service's build job",
"max_score": 12
},
{
"name": "Image pinned",
"description": "The shared image tag does NOT use `:latest`",
"max_score": 8
},
{
"name": "No only/except",
"description": "The YAML does NOT use `only:` or `except:`",
"max_score": 8
},
{
"name": "expire_in on artifacts",
"description": "Any artifact block with `paths:` includes `expire_in:`",
"max_score": 9
},
{
"name": "Kebab-case job names",
"description": "All job names use kebab-case",
"max_score": 8
}
]
}