Skip to content

Routine Design

Routines are autonomous scheduled tasks owned by individual minions. They execute skill pipelines on a cron schedule without HQ involvement.

{
"name": "morning-report",
"pipeline": ["write-daily-report", "send-to-slack"],
"content": "Write a daily report and post it to the team Slack channel",
"cron_expression": "0 9 * * 1-5",
"minion_id": "<uuid>"
}
FieldTypeDescription
namestringRoutine name
pipelinestring[]Ordered list of skill IDs to execute
contentstring|nullDescription (Markdown)
cron_expressionstring|nullCron schedule
minion_idstringUUID of the owning minion

All skills in a routine pipeline run within a single CLI session. This means context is preserved across steps — the output of one skill is available to the next.

flowchart LR
A["write-daily-report"] --> B["send-to-slack"] --> C["execution-report"]

The execution-report skill is automatically appended to report results back to the minion API.

Routines and workflows both execute skill pipelines on a schedule, but they differ in scope and governance.

Think of routines as a personal crontab and workflows as a CI/CD pipeline.

AspectRoutineWorkflow
ScopeOne minion, self-containedProject-wide, multi-minion coordination
OwnerIndividual minionProject
Role assignmentNone — the owning minion runs everythingPer-step roles (PM / Engineer)
Review gatesNoneOptional human approval between steps
VersioningNone — always uses latest skill versionsFull version history with immutable snapshots
Execution trackingLocal only (minion-side, last 200 runs)Full audit trail in HQ database
TriggerCron on minion (autonomous)Cron or on-demand from HQ

Use a routine when:

  • A single minion can complete the entire task
  • No human review is needed between steps
  • The task is a personal habit (daily standup prep, end-of-day review, inbox triage)
  • You want lightweight, autonomous execution

Use a workflow when:

  • Multiple minions need to collaborate (e.g., engineer analyzes, PM reviews)
  • Human approval gates are required before certain steps
  • You need an audit trail of every execution with step-level tracking
  • Reproducibility matters — pinning exact skill versions is important

The same skills can be used in both routines and workflows depending on the required governance level.

As a routine (one minion, autonomous):

flowchart LR
subgraph "Routine: morning-report (weekdays 9:00)"
A["write-daily-report"] --> B["send-to-slack"]
end

As a workflow (project-coordinated, with review):

flowchart LR
subgraph "Workflow: team-daily-report"
A["write-daily-report<br/><i>engineer</i>"] --> B["review-report<br/><i>pm · review required</i>"] --> C["send-to-slack<br/><i>pm</i>"]
end

Notice that write-daily-report and send-to-slack are the same skills in both cases. The difference is how they are orchestrated, not what they do.

Standard cron expressions are supported (same syntax as workflows).

ExpressionExecution timing
0 9 * * *Every day at 9:00
0 9 * * 1-5Weekdays at 9:00
0 18 * * *Every day at 18:00
0 0 * * 1Every Monday at 0:00