CtrlK
BlogDocsLog inGet started
Tessl Logo

vitron-ai/themis

Reference tile for Themis, a Node.js and TypeScript unit test framework designed for AI coding agents. Covers unit-test authoring, Jest/Vitest migration, agent-readable failure output with repair hints, and first-class integrations for Claude Code, Cursor, and generic agents.

96

2.69x
Quality

94%

Does it follow best practices?

Impact

97%

2.69x

Average score across 10 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-1/

{
  "context": "Tests whether the agent uses `intent(...)` for the higher-level pipeline workflow and `test(...)` for the pure-unit slugify function, and avoids importing Jest/Vitest-specific APIs.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "intent for pipeline",
      "description": "Uses `intent(...)` (not `test(...)`) to define at least one test block for the pipeline/workflow module (src/pipeline.ts).",
      "max_score": 20
    },
    {
      "name": "test for slugify",
      "description": "Uses `test(...)` (not `intent(...)`) to define at least one test block for the pure slugify function (src/slugify.ts).",
      "max_score": 20
    },
    {
      "name": "No Jest describe/it/expect",
      "description": "Does NOT use Jest or Vitest APIs: no `describe(`, `it(`, `expect(`, `beforeEach(`, `afterEach(`, `beforeAll(`, `afterAll(` in the test files.",
      "max_score": 15
    },
    {
      "name": "No Jest import",
      "description": "Does NOT import from 'jest', '@jest/globals', 'vitest', or '@vitest/globals' in any test file.",
      "max_score": 15
    },
    {
      "name": "DECISIONS.md present",
      "description": "A DECISIONS.md file exists and mentions both `intent` and `test` in the context of which module each was applied to.",
      "max_score": 15
    },
    {
      "name": "intent rationale in DECISIONS.md",
      "description": "DECISIONS.md explains that `intent(...)` was chosen for the pipeline because it tests behavior or workflow (not just a pure function).",
      "max_score": 8
    },
    {
      "name": "test rationale in DECISIONS.md",
      "description": "DECISIONS.md explains that `test(...)` was chosen for slugify because it is a low-level pure-unit check.",
      "max_score": 7
    }
  ]
}

tile.json