CtrlK
BlogDocsLog inGet started
Tessl Logo

openkata/commit-conventions

Enforces Conventional Commits format and branch naming conventions, validating commit message structure (type/scope/description header), suggesting branch name patterns (feature/*, fix/*, hotfix/*), and enforcing breaking change notation. Use when the user is about to commit, creating a branch, reviewing commit history, preparing a pull request, setting up commit linting, or asking about commit message format, branch naming, or Conventional Commits.

97

1.03x
Quality

97%

Does it follow best practices?

Impact

97%

1.03x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-1/

{
  "context": "Tests whether the agent splits unrelated changes into separate atomic commits, stages files individually rather than using git add -A or git add ., uses the correct Conventional Commits format for each commit message, includes a body for non-obvious changes, and validates the result.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Atomic commits",
      "description": "The auth middleware fix and the dashboard loading spinner are in two separate commits, not combined into one",
      "max_score": 12
    },
    {
      "name": "No bulk staging",
      "description": "The commit-log-full.txt or any shell history / script does NOT show 'git add .' or 'git add -A'; files are staged individually",
      "max_score": 10
    },
    {
      "name": "Commit type: fix",
      "description": "The auth-related commit uses the 'fix' type prefix (e.g. fix(auth): ...)",
      "max_score": 8
    },
    {
      "name": "Commit type: feat",
      "description": "The dashboard loading spinner commit uses the 'feat' type prefix (e.g. feat(dashboard): ...)",
      "max_score": 8
    },
    {
      "name": "Imperative mood",
      "description": "Both commit message headers use imperative mood (e.g. 'add', 'fix', 'handle') not past tense (e.g. 'added', 'fixed')",
      "max_score": 8
    },
    {
      "name": "Lowercase header start",
      "description": "The description portion of both commit headers starts with a lowercase letter",
      "max_score": 6
    },
    {
      "name": "No trailing period",
      "description": "Neither commit header ends with a period",
      "max_score": 6
    },
    {
      "name": "Header length <= 72",
      "description": "Both commit headers are at most 72 characters in total length",
      "max_score": 8
    },
    {
      "name": "Body for fix commit",
      "description": "The auth fix commit includes a body explaining the non-obvious reasoning (e.g. describes the timing issue, race condition, or why the fix was needed)",
      "max_score": 12
    },
    {
      "name": "Blank line before body",
      "description": "The fix commit's body is separated from the header by exactly one blank line",
      "max_score": 6
    },
    {
      "name": "Validation step",
      "description": "commit-log.txt or commit-log-full.txt exists and contains output from git log, showing at least 2 commits",
      "max_score": 8
    },
    {
      "name": "No WIP commits",
      "description": "None of the commit messages contain 'WIP', 'wip', 'temp', or 'Temp'",
      "max_score": 8
    }
  ]
}

RATIONALE.md

SKILL.md

tile.json