CtrlK
BlogDocsLog inGet started
Tessl Logo

tessleng/schedule-management

Create and migrate repo-defined Tessl schedules in a project's tessl.json. Turns a plain-language cadence into a validated schedules entry, and moves an existing UI/CLI schedule into version control.

90

0.94x
Quality

97%

Does it follow best practices?

Impact

94%

0.94x

Average score across 2 eval scenarios

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

task.mdevals/scenario-2/

Migrate an existing schedule into tessl.json

Problem/Feature Description

A user has a schedule they created earlier in the Tessl UI. They want it moved into their repository's tessl.json so it is version-controlled.

You cannot reach the live API in this task. Instead, the output of tessl schedule view <id> --json for the schedule has been captured for you in inputs/schedule-view.json. Treat it as the source of truth for the live schedule's configuration.

Write the equivalent repo-defined entry into tessl.json:

  • Map the live config fields to the schedules file schema. The required file fields are skill, cron, and environment, and environment is the environment name, not its id.
  • Give the entry a stable lowercase kebab-case key.
  • Do not invent values. If the live config carries fields that the file schema has no home for, or values the read output does not expose, say so in result.md rather than guessing.
  • The entry must be valid against the strict schedules schema (an unknown field name is a hard error). After writing it, run tessl schedule validate from the repo root and make sure it passes.

Do not delete anything. This task is only the file migration.

Output Specification

  • tessl.json: updated with a schedules entry equivalent to the live schedule
  • result.md: the schedule key you chose, and a short note of any live fields that could not be carried into the file (and why)

Input Files

The following files are provided as inputs. Extract them before beginning.

=============== FILE: tessl.json =============== { "name": "acme/reports", "mode": "project", "dependencies": {} }

=============== FILE: inputs/schedule-view.json =============== { "data": { "id": "018f2c1a-7b3e-7a10-9c44-2f1d6b8e0a55", "type": "schedule", "attributes": { "status": "active", "cron": "0 2 * * *", "timezone": "UTC", "config": { "skillRef": "acme/reports#nightly", "repoUrl": "https://github.com/acme/reports", "baseBranch": "main", "agent": "claude", "model": "claude-sonnet-4-6", "triggerSource": "schedule", "timeoutMs": 5400000 }, "resolvedSkill": { "kind": "registry", "name": "nightly", "registry": { "workspace": "acme", "tile": "reports", "version": null }, "path": "skills/nightly/SKILL.md", "description": "Nightly report" }, "label": "Nightly report (prod)", "description": "Nightly sales report", "environment": { "id": "018f2c0e-1a2b-7c33-8d55-abc123def456", "name": "reports-prod" }, "definitionSource": "app", "nextRunAt": "2026-09-10T02:00:00.000Z", "lastRunAt": "2026-09-09T02:00:00.000Z" } } }

README.md

tile.json