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-1/

{
  "context": "scenario-2",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "C01",
      "description": "A Jenkinsfile exists at ~/project/Jenkinsfile using declarative 'pipeline { ... }' syntax.",
      "max_score": 8
    },
    {
      "name": "C02",
      "description": "The Jenkinsfile has an 'environment' block defining TARGET_BRANCH as 'main' and CACHE_FILE as '.tessl/skill-review-cache.json'.",
      "max_score": 7
    },
    {
      "name": "C03",
      "description": "The pipeline includes a stage for detecting changed skills that distinguishes between PR builds (env.CHANGE_ID != null) and main branch builds.",
      "max_score": 8
    },
    {
      "name": "C04",
      "description": "The pipeline includes a stage that installs the Tessl CLI via 'npm install -g @tessl/cli'.",
      "max_score": 7
    },
    {
      "name": "C05",
      "description": "The review stage uses withCredentials to access 'tessl-api-key' credential for the TESSL_API_KEY environment variable.",
      "max_score": 8
    },
    {
      "name": "C06",
      "description": "The review stage runs 'tessl skill review --json' on each detected skill directory.",
      "max_score": 8
    },
    {
      "name": "C07",
      "description": "The pipeline contains a score quality gate that checks if AVG_SCORE is less than 80 and fails the build or marks FAILED=1 if below threshold.",
      "max_score": 9
    },
    {
      "name": "C08",
      "description": "The PR comment body footer references the 80% threshold (e.g., 'skills scoring below 80% will fail the check') instead of the default informational message.",
      "max_score": 8
    },
    {
      "name": "C09",
      "description": "The pipeline has a cache commit stage that only runs on the main branch (not on PR builds), using 'jenkins[bot]' or similar bot user for git config, and commit message 'chore: update skill review cache [skip ci]'.",
      "max_score": 8
    },
    {
      "name": "C10",
      "description": "A cache file exists at ~/project/.tessl/skill-review-cache.json with valid JSON containing 'version', 'last_updated', and 'skills' keys.",
      "max_score": 8
    },
    {
      "name": "C11",
      "description": "The PR comment body includes the '<!-- tessl-skill-review -->' HTML marker.",
      "max_score": 7
    },
    {
      "name": "C12",
      "description": "The pipeline includes a 'post' block that archives artifacts (e.g., pr_comment_body.md, changed_skills.txt, cache file).",
      "max_score": 7
    },
    {
      "name": "C13",
      "description": "The review script calculates average scores from descriptionJudge and contentJudge dimensions using jq, and computes score diff with emoji indicators.",
      "max_score": 7
    }
  ]
}

evals

scenario-1

criteria.json

task.md

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