workflow.yaml manifest at the root of the workflow directory. This file describes the workflow’s identity, the agents and skills it activates, the kickstart form presented in the dashboard, the external dependencies it requires, and the ordered list of tasks that make up the pipeline. When you run dotbot init, workflow files are installed into .bot/workflows/<name>/. Use dotbot init -Force at any time to receive framework updates while preserving your workspace data.
Top-level metadata fields
| Field | Type | Description |
|---|---|---|
name | string | Internal workflow identifier. Must be unique within a project. |
version | string | SemVer string (e.g. "3.5.0"). |
description | string | Human-readable summary shown in dotbot list and the dashboard. |
icon | string | Lucide icon name shown in the dashboard (e.g. terminal). |
license | string | SPDX license identifier (e.g. MIT). |
tags | array of strings | Free-form tags for search and filtering. |
categories | array of strings | Grouping categories (e.g. ["Development", "AI"]). |
repository | string | URL to the workflow’s source repository. |
homepage | string | URL to documentation or README. |
min_dotbot_version | string | Minimum dotbot version required to run this workflow. |
author.name | string | Author display name. |
author.url | string | Author URL (GitHub profile, etc.). |
agents array
Lists the AI agent personas activated for this workflow. Each value maps to a prompt file in .bot/recipes/agents/. Valid values: implementer, planner, reviewer, tester.
skills array
Lists the reusable skill modules that are loaded during execution. Each value maps to a skill directory under .bot/recipes/skills/. Valid values: status, verify, write-test-plan, write-unit-tests.
form object
The form object configures the kickstart dialog shown when you start a workflow from the dashboard. It contains a modes array where each entry describes a distinct UI state — typically one mode for a new project and one that hides the form once the project is initialised.
modes array fields
Unique identifier for this form mode (e.g.
new_project, has_docs).File-existence expression(s) that determine when this mode is active. A plain string path means “file exists”; prefix with
! to mean “file does not exist”. When multiple conditions are listed, all must be satisfied. Example: "!.bot/workspace/product/product.md" — active when no product doc exists yet.Button label shown in the kickstart card (e.g.
"New Project").Explanatory text shown below the label.
Call-to-action text on the primary button (e.g.
"CREATE PRODUCT DOC").Placeholder text for the free-text prompt input field.
When
true, the kickstart dialog shows the guided requirements-gathering interview flow.When
true, the dialog shows a file-upload area.When
true, this mode is never shown in the UI. Useful for suppressing the kickstart form once a project is already initialised.requires object
Declares runtime dependencies that must be satisfied before the workflow can run. dotbot checks these on startup and reports missing items in the dashboard.
env_vars array
Environment variable name (e.g.
ANTHROPIC_API_KEY).Human-readable label for the variable.
Error message shown when the variable is missing.
Guidance on how to set the variable.
mcp_servers array
MCP server name (e.g.
playwright).Error message shown when the server is not configured.
Configuration instructions.
cli_tools array
CLI tool executable name (e.g.
jq).Error message shown when the tool is not installed.
Installation instructions.
tasks array
The tasks array is the ordered pipeline definition. Each task entry is a structured object describing what the runtime executes, in which order, and under what conditions.
Human-readable task name. Must be unique within the workflow. Used to resolve
depends_on references.Task execution type. One of:
prompt— AI-executed via the configured provider CLI (default).script— Runs a PowerShell script with no LLM involvement. Auto-promotes past analysis, skips worktree isolation.mcp— Calls a single MCP tool directly. Auto-promotes past analysis, skips worktree isolation.task_gen— Runs a script that dynamically creates sub-tasks in the queue.barrier— Waits until all preceding tasks in itsdepends_onchain are done before proceeding. No execution of its own.
Path to the workflow-step prompt file, relative to the workflow directory. Used with
prompt and task_gen types (e.g. "02a-plan-internet-research.md").Expected output file names, relative to the workflow’s output directory. Checked for existence after execution (e.g.
["product.md"]).Directory where generated output files are written (e.g.
"tasks/todo").Names of other tasks in the same workflow that must reach
done status before this task starts.When
true, the workflow continues even if this task produces no output or is skipped.File-existence expression evaluated at runtime. The task is skipped if the condition is not met.
Workspace-relative paths to include in the automatic git commit after this task completes.
Commit message for the automatic commit (e.g.
"chore(kickstart): product document").Execution priority within the workflow. Lower numbers run first (
0 runs before 1).Action to take if the task fails. Default is to halt the workflow.
Minimum number of output files required for the task to be considered successful. Relevant for
task_gen tasks.Output files whose YAML front matter should be extracted and surfaced as structured product metadata.
Complete annotated example
The following is theworkflow.yaml for the built-in default workflow, showing all major sections in use.