Skill v2.0.0
currentLLM-judged scan90/100name: scheduler-validation description: Scheduler validator driven by ValidationHook — read-only static verification of scheduled jobs (schedule correctness, configuration, runtime context already collected by deterministic hook). Does not trigger test runs. tags:
- scheduler
- orchestration
- validation
- data-engineering
version: "2.0.0" user_invocable: false disable_model_invocation: false allowed_agents:
- scheduler
kind: validator severity: blocking mode: llm targets:
- type: scheduler_job
Scheduler Validation
Driven by ValidationHook.on_end for scheduler runs. The hook passes a SessionTarget containing every SchedulerJobTarget the run delivered. Iterate each target and run the checks below.
Target shape
You receive SessionTarget.targets — loop over SchedulerJobTarget entries. Each carries platform + job_id + optional job_name.
Layer A (the builtin hook) has already confirmed each job exists and is not in a failed status. When the scheduler profile exposes runtime tools, ValidationHook has also deterministically triggered the job once, polled list_job_runs, and attached a scheduler_job_trigger_run precheck before this skill runs. Your job is to verify schedule correctness, configuration, and any runtime context already present.
Core workflow
Read-only static verification. Never trigger a test run from this LLM validator. Runtime triggering is deterministic ValidationHook code, not a model decision.
For every SchedulerJobTarget in the session:
- Verify schedule — call
get_scheduler_job(job_id)and confirm the
schedule expression matches the intended cron (e.g. user asked for "daily" but job submitted 0 * * * *).
- Verify configuration — check other fields returned by
get_scheduler_job (description, SQL path, job_type, connection id) match the intended setup.
- Inspect most recent run, if any — call
list_job_runs(job_id, limit=1).
- No runs yet → advisory note "no runtime history; user-initiated trigger
required to verify runtime health". Not a blocking failure.
- Latest run
success→ report the success. - Latest run
failed→ callget_run_log(job_id, run_id), surface the
error as a blocking finding so the user can fix before the next schedule window hits.
- Latest run
running→ advisory (in-progress; can't judge yet).
Validation checklist (per job)
| Check | Tool | What to verify | |
|---|---|---|---|
| Job exists | get_scheduler_job | Status is active, schedule is correct | |
| Latest run inspected | list_job_runs | Latest run status is success, or no run history is advisory | |
| Run log clean | get_run_log | No errors in output (only check on failure) |
Output format
Report a table with these columns:
| Column | Description | |
|---|---|---|
| Job ID | The scheduler job identifier | |
| Schedule | Cron expression | |
| Latest Run | PASS if latest run succeeded, FAIL + error summary if it failed, ADVISORY if absent/running | |
| Overall | PASS or FAIL |
If the latest run failed, include the error message from get_run_log so the user can diagnose the issue. Never call trigger_scheduler_job.