workflow.json file at the root of the workflow directory, alongside a manifest.json file that provides a short identity summary. Together these files describe the workflow’s identity, the kickstart form presented in the dashboard, external dependencies, and the ordered task 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.
manifest.json fields
The manifest.json file provides a lightweight identity record for the workflow. The dashboard and dotbot list use it when displaying installed workflows.
| Field | Type | Description |
|---|---|---|
name | string | Internal workflow identifier. Must match the name field in workflow.json. |
description | string | Human-readable summary shown in the dashboard and dotbot list. |
workflow.json top-level fields
| Field | Type | Description |
|---|---|---|
name | string | Internal workflow identifier. Must be unique within a project. |
version | string | Version string (e.g. "3.5"). |
description | string | Human-readable summary of what the workflow does. |
icon | string | Lucide icon name shown in the dashboard (e.g. "search"). |
min_dotbot_version | string | Minimum dotbot version required to run this workflow (e.g. "3.5"). |
form | object | Kickstart dialog configuration. See form object. |
requires | object | Runtime dependency declarations. See requires object. |
tasks | array | Ordered pipeline definition. See tasks array. |
domain | object | Workflow-specific configuration block. Structure is defined by each workflow. See domain object. |
form object
The form object configures the kickstart dialog shown when you start a workflow from the dashboard. Workflows with conditional UI states use a modes array. Simpler single-state workflows declare form properties directly on the form object.
Flat form properties
When a workflow has one unconditional kickstart state, place these properties directly onform.
Explanatory text shown in the kickstart card.
Label for the interview toggle control (e.g.
"Research via Atlassian first").Hint text shown below the interview toggle.
Placeholder text for the free-text prompt input field.
modes array
When a workflow needs different UI states, for example one state for a new project and another that suppresses the dialog once the project is initialised, use the modes array. Each entry describes one state.
Unique identifier for this form mode (e.g.
"new_project", "has_docs").File-existence expression that determines 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/mission.md" activates the mode when that file does not yet exist.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.
"LAUNCH PROJECT").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, the dialog shows the free-text prompt input.When
true, this mode is never shown in the UI. Use this to suppress 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.
"atlassian").Error message shown when the server is not configured.
Configuration instructions.
cli_tools array
CLI tool executable name (e.g.
"git").Error message shown when the tool is not installed.
Installation instructions.
tasks array
The tasks array is the ordered pipeline definition. Each entry describes 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 using the prompt file named byworkflow.prompt_template- AI-executed using a compiled template prompt named byprompt.script- Runs a PowerShell script named byscriptwith no AI involvement.task_gen- Runs a prompt that dynamically creates sub-tasks in the queue.barrier- Waits until all tasks in itsdepends_onchain are done before proceeding. Performs 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. "01-plan-product.md").Path to the compiled template prompt file. Used with the
prompt_template type (e.g. "prompts/00-fast-prompt.md").Path to the PowerShell script to run. Used with the
script type (e.g. "Scripts/Expand-TaskGroups.ps1").Path to a PowerShell script run after the main task completes (e.g.
"Scripts/Complete-TaskGroupsPhase.ps1").Human-readable description of what this task does. Shown in the dashboard.
List of conditions that define task completion. The AI executor uses these to self-evaluate the result.
Expected output file names, relative to the workflow’s output directory. Checked for existence after execution (e.g.
["mission.md", "tech-stack.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 (e.g.
".bot/workspace/product/research-repos.md").Workspace-relative paths to include in the automatic git commit after this task completes.
Commit message for the automatic commit (e.g.
"chore(workflow): phase 1 — product documents").Execution priority within the workflow. Lower numbers run first (
0 runs before 1).Action to take if the task fails. Use
"halt" to stop the workflow on failure.Minimum number of output files required for the task to be considered successful. Relevant for
task_gen tasks.Output files whose front matter should be extracted and surfaced as structured product metadata.
Effort estimate for the task, used by the dashboard for display (e.g.
"XS", "S", "M", "L").Task category used for grouping and filtering in the dashboard (e.g.
"implementation", "research").domain object
The domain object holds workflow-specific runtime configuration. Its structure is defined by each workflow and is not enforced by the dotbot schema. Common uses include lists of valid task categories and service-specific settings.
Complete annotated example
The following shows themanifest.json and workflow.json for the built-in start-from-prompt workflow, with all major sections in use.
manifest.json