workflow.json declares the pipeline, and manifest.json holds the workflow’s name and description. A project can have several workflows installed at once, and each one runs and re-runs independently with dotbot run <name>.
When to create a custom workflow
Create a custom workflow when the built-in workflows do not match your process. Common reasons include:- Your pipeline needs a specific sequence of AI and deterministic steps.
- You want to integrate with an internal system, such as an internal Jira project or a custom API.
- You need conditional tasks that run only when specific files or states exist.
- You want to share a standard engineering process across several teams.
Anatomy of workflow.json
workflow.json declares the workflow’s identity, its prerequisites, the kickstart form, and the task pipeline. The example below shows the common top-level fields:
workflow.json
workflow.json with a manifest.json that carries the name and a longer description shown alongside the workflow:
manifest.json
Task types
dotbot resolves each task by itstype field against a registered executor. Six task types ship with the framework.
Only
prompt and interview tasks involve the AI provider for their own execution. The script, mcp, task_gen, and barrier types run deterministically and do not run an analysis phase.Common task fields
Each entry in thetasks array shares a common set of fields. A prompt task names a prompt file with workflow; a script or task_gen task names a script with script.
Adding dependencies between tasks
Usedepends_on to declare which tasks must finish before a task starts. Reference tasks by their name:
barrier task to wait for a group of parallel tasks before continuing:
Configuring the kickstart form
Theform block controls what users see when they open the workflow in the dashboard before running it. Each entry in modes renders a different form state based on a file-existence condition:
- A condition without
!is true when the file exists. - A condition with a leading
!is true when the file does not exist.
hidden: true on a mode to suppress the form when its condition is met. This is useful when a repeat run should skip the interview because the project is already set up.
Workflow directory structure
A workflow directory holds the two manifests plus the supporting content the pipeline references:<install>/content/workflows/<name>/. When you install or scaffold a workflow into a project, dotbot materialises it at .bot/content/workflows/<name>/, where you can edit it without changing the framework copy. A project workflow with the same name as a built-in one takes precedence, which is how you customise a built-in workflow without forking it.
Prompt files in prompts/ are Markdown templates. The runtime injects context, such as the task description, product documents, and codebase index, before passing them to the provider.
Installing and running the workflow
1
Install the workflow during project initialisation
Pass the workflow name to
dotbot init:2
Add a workflow to an existing project
Use
dotbot workflow add after the project is initialised:3
Install from an enterprise registry
Prefix the workflow name with the registry name and a colon:
4
Run the workflow
Start a run from the dashboard, or run it directly from the CLI: