CtrlK
BlogDocsLog inGet started
Tessl Logo

pantheon-ai/gitlab-ci-toolkit

Complete GitLab CI/CD toolkit with generation and validation capabilities for pipelines and configurations

97

Quality

97%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsongenerator/evals/scenario-1/

{
  "context": "Tests whether the agent uses `needs` for DAG optimization to decouple frontend and backend job chains, sets `timeout` on jobs, configures `retry` for flaky operations, and marks test/build jobs as `interruptible: true`.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "needs used for DAG",
      "description": "At least one test or downstream job uses a `needs:` list that references only its own component's build job (not all build jobs)",
      "max_score": 15
    },
    {
      "name": "Frontend and backend chains decoupled",
      "description": "Frontend test/deploy jobs reference frontend build in `needs:`, and backend test/deploy jobs reference backend build in `needs:` — not cross-component",
      "max_score": 12
    },
    {
      "name": "timeout on jobs",
      "description": "At least two jobs (or the default block) include a `timeout:` field with a value in minutes",
      "max_score": 10
    },
    {
      "name": "retry configured",
      "description": "At least one job (or the default block) includes a `retry:` configuration",
      "max_score": 10
    },
    {
      "name": "interruptible: true on build/test jobs",
      "description": "At least one build or test job has `interruptible: true` (or it is set in the `default:` block)",
      "max_score": 12
    },
    {
      "name": "Image pinned",
      "description": "All `image:` values specify a version other than `:latest`",
      "max_score": 10
    },
    {
      "name": "No only/except",
      "description": "The YAML does NOT use `only:` or `except:` keywords",
      "max_score": 10
    },
    {
      "name": "expire_in on artifacts",
      "description": "Any `artifacts:` block with `paths:` includes `expire_in:`",
      "max_score": 8
    },
    {
      "name": "Kebab-case job names",
      "description": "Job names use kebab-case",
      "max_score": 7
    },
    {
      "name": "Stages declared",
      "description": "A `stages:` key is present listing the pipeline stages",
      "max_score": 6
    }
  ]
}

generator

evals

instructions.json

summary_infeasible.json

summary.json

SKILL.md

tile.json