Workflow Design
Workflows execute skills sequentially as a pipeline.
Workflow structure
Section titled “Workflow structure”{ "name": "daily-check", "pipeline_skill_names": ["check-status", "generate-report", "execution-report"], "content": "Daily status check and report", "cron_expression": "0 9 * * *", "project_id": "<uuid>"}| Field | Type | Description |
|---|---|---|
name | string | Slug identifier (/^[a-z0-9-]+$/) |
pipeline_skill_names | string[] | Ordered list of skill names to execute |
content | string | Workflow description (Markdown) |
cron_expression | string|null | Cron schedule (null for manual-only) |
project_id | string | UUID of the parent project |
Pipeline execution
Section titled “Pipeline execution”Skills are executed one by one in the defined order. Results from each step are passed to the next.
flowchart LR A["skill-1"] --> B["skill-2"] --> C["skill-3"] --> D["execution-report"] B -. "requires_review: true" .-> E{{"Awaiting human approval"}}Per-step configuration
Section titled “Per-step configuration”Each step can be configured with a role and review requirement.
{ "name": "review-workflow", "pipeline_skill_names": ["analyze", "propose-fix", "apply-fix"], "pipeline_steps": [ { "assigned_role": "engineer", "requires_review": false }, { "assigned_role": "engineer", "requires_review": true }, { "assigned_role": "pm", "requires_review": false } ]}| Field | Description |
|---|---|
assigned_role | "pm" or "engineer" — the role responsible for execution |
requires_review | If true, human approval is required after completion |
Cron schedules
Section titled “Cron schedules”Standard cron expressions are supported.
| Expression | Execution timing |
|---|---|
0 9 * * * | Every day at 9:00 |
0 9 * * 1-5 | Weekdays at 9:00 |
*/30 * * * * | Every 30 minutes |
0 0 1 * * | 1st of every month at 0:00 |
Syncing with HQ
Section titled “Syncing with HQ”# Fetch a workflow from HQ (missing skills are auto-fetched)minion-cli workflow fetch <name>
# Push a local workflow to HQ (skills are auto-pushed)minion-cli workflow push <name>