CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/tessl-skill-review-ci

Implements Tessl skill review CI/CD pipelines through an interactive, configuration-first wizard. Supports GitHub Actions, Jenkins, and Azure DevOps.

70

0.67x
Quality

90%

Does it follow best practices?

Impact

50%

0.67x

Average score across 6 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-2/

{
  "context": "scenario-3",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "C01",
      "description": "An Azure DevOps pipeline YAML file exists at ~/project/azure-pipelines.yml (or a similarly named YAML file in the project root).",
      "max_score": 7
    },
    {
      "name": "C02",
      "description": "The pipeline has separate 'trigger:' (for push) and 'pr:' (for pull request) blocks, both targeting the 'release' branch.",
      "max_score": 8
    },
    {
      "name": "C03",
      "description": "The trigger and pr paths include '**/SKILL.md' and '**/skills/**'. The pr paths also include the pipeline YAML filename.",
      "max_score": 7
    },
    {
      "name": "C04",
      "description": "The pipeline variables section defines CACHE_FILE as 'ci/review-cache/scores.json' and TARGET_BRANCH as 'release'.",
      "max_score": 8
    },
    {
      "name": "C05",
      "description": "The pipeline uses NodeTool@0 for Node.js setup.",
      "max_score": 6
    },
    {
      "name": "C06",
      "description": "The pipeline uses Azure DevOps-native logging: ##vso[task.setvariable] for outputs and/or ##vso[logissue] for warnings/errors.",
      "max_score": 7
    },
    {
      "name": "C07",
      "description": "The pipeline posts PR comments using the Azure DevOps REST API with System.AccessToken (not GitHub API).",
      "max_score": 8
    },
    {
      "name": "C08",
      "description": "The PR commenting logic searches for an existing thread with '<!-- tessl-skill-review -->' marker and updates it, or creates a new thread.",
      "max_score": 7
    },
    {
      "name": "C09",
      "description": "The pipeline has a CommitCache stage that depends on the review stage and only runs on pushes to 'release' (not on PRs). The condition references 'refs/heads/release'.",
      "max_score": 8
    },
    {
      "name": "C10",
      "description": "The PR comment footer text is informational (mentions score is informational / not used for pass/fail gating), since no quality gate was requested.",
      "max_score": 7
    },
    {
      "name": "C11",
      "description": "The checkout step uses 'persistCredentials: true' and fetchDepth: 0.",
      "max_score": 6
    },
    {
      "name": "C12",
      "description": "A cache file exists at ~/project/ci/review-cache/scores.json with valid JSON containing 'version', 'last_updated', and 'skills' keys.",
      "max_score": 8
    },
    {
      "name": "C13",
      "description": "The review script runs 'tessl skill review --json' and calculates average scores from descriptionJudge and contentJudge dimensions.",
      "max_score": 6
    },
    {
      "name": "C14",
      "description": "The pipeline uses 'pool: vmImage: ubuntu-latest' (or equivalent Microsoft-hosted agent).",
      "max_score": 7
    }
  ]
}

evals

azure-devops.md

circleci.md

github-actions.md

gitlab-ci.md

jenkins.md

README.md

SKILL.md

tessl-skill-review-ci-review.md

TESTING.md

tile.json