Skip to content
LogoLogo

Job Files

Jobs describe work for one agent. Tasks run one-shot work; chores repeat work on a schedule. Both use Markdown files with optional YAML frontmatter and a body containing the work instruction.

Location

The directory determines the job kind and its authored stage. Paths below are relative to the agent home, ${TOOLANG_ROOT}/agents/<agent>/.

StageTasksChoresMeaning
draftdrafts/tasks/<name>.mddrafts/chores/<name>.mdKept outside scheduling
readytasks/<name>.mdchores/<name>.mdAvailable to the scheduler
archivedarchive/tasks/<name>.mdarchive/chores/<name>.mdRetired

Files can use readable names such as review-api.md. Toolang assigns and saves a missing id when loading ready files, without changing their filenames.

Markdown format

Tasks

tasks/review-api.md
---
title: Review API changes
---
 
Review the API changes and summarize risks.

Chores

chores/check-prs.md
---
title: Check stale PRs
schedule: FREQ=HOURLY;INTERVAL=6
---
 
Check stale PRs and report actionable items.

Frontmatter

FieldApplies toRequiredMeaning
idBothNoStable job identity; generated when absent
titleBothNoDisplay title; falls back to body text or filename
scheduleChoresNoRRULE string; defaults to FREQ=HOURLY;INTERVAL=1

IDs must be unique across task and chore files, including drafts and archives. Ready files and program declarations must also have distinct IDs.

Lifecycle

The authored stage comes from the file's directory. Frontmatter state and stage fields do not control execution. Move a file between the directories above to change its authored stage.

Runtime status is tracked separately: pending, running, done, failed, or canceled. A task's completion or failure does not rewrite its Markdown file. Changing a ready task's body requests another execution; a terminal task can also be reopened without changing its body. See the task commands for lifecycle operations.

Scheduling

Only ready chores participate in scheduling. The schedule field is parsed as an RRULE with dateutil.rrule. For example, FREQ=HOURLY;INTERVAL=6 repeats every six hours. Moving a chore to drafts or the archive removes it from scheduling.

Use chores for recurring checks and synchronization. A chore can create tasks for follow-up work that needs to be tracked separately.

.too format

Jobs can also be declared in the agent's .too program. The declaration name is the job ID; title and schedule use property syntax.

task review_api:
  title = Review API changes
 
  Review the API changes and summarize risks.
 
chore check_prs:
  title = Check stale PRs
  schedule = FREQ=HOURLY;INTERVAL=6
 
  Check stale PRs and report actionable items.

See Grammar for the declaration syntax.

Notes

The job body supplies the run input. By default, the runtime uses an agic or flow named task or chore for that kind, falling back to default. An explicit call in the body can select a different runnable.

Run history and results are stored separately from the authored file. Thread IDs use task_<id> and chore_<id>.

© 2026 Toolang