Skip to main content
Workflows and stacks are the two building blocks you use to configure dotbot for a project. A workflow describes what dotbot does — a sequence of typed tasks wired together with dependencies, form configuration, and commit rules. A stack describes what technology your project uses — adding skills, verify scripts, and MCP tools relevant to a specific tech. You can install multiple workflows and multiple stacks in the same project and they all coexist independently.

What workflows are

A workflow is a named pipeline defined by a workflow.yaml manifest. dotbot ships with four built-in workflows:
WorkflowPurpose
defaultLightweight kickstart — generates a product document with optional internet research
kickstart-from-scratchFull project kickstart from a plain-text description
kickstart-via-jiraResearch-driven kickstart with Atlassian and Azure DevOps integration
kickstart-via-prKickstart driven by an existing pull request
Each workflow declares its name and version, lists the agents and skills it activates, defines a form configuration for the kickstart dialog, declares environment and tooling requires, and contains a tasks list.

Anatomy of a workflow.yaml

The default workflow shows the minimal structure:
name: default
version: "3.5.0"
description: >-
  Lightweight kickstart workflow — generates a single product document
  from a user prompt, with optional internet research.
icon: terminal
min_dotbot_version: "3.5.0"

agents:
  - implementer
  - planner
  - reviewer
  - tester

skills:
  - status
  - verify
  - write-test-plan
  - write-unit-tests

form:
  modes:
    - id: new_project
      condition:
        - "!.bot/workspace/product/product.md"
      label: "New Project"
      description: "Describe your project and let Claude create a product document..."
      button: "CREATE PRODUCT DOC"
      show_interview: true
      show_files: true

tasks:
  - name: "Product Document"
    type: prompt
    workflow: "01-generate-product.md"
    outputs: ["product.md"]
    commit:
      paths: ["workspace/product/"]
      message: "chore(kickstart): product document"
    priority: 0

  - name: "Plan Internet Research"
    type: task_gen
    workflow: "02a-plan-internet-research.md"
    depends_on: ["Product Document"]
    optional: true
    outputs_dir: "tasks/todo"
    min_output_count: 1
    priority: 1

  - name: "Execute Research"
    type: barrier
    depends_on: ["Plan Internet Research"]
    optional: true
    priority: 2
More complex workflows like kickstart-via-jira also declare environment variables, MCP server dependencies, and CLI tool requirements under a requires block:
requires:
  env_vars:
    - var: AZURE_DEVOPS_PAT
      name: "Azure DevOps PAT"
      message: "Azure DevOps PAT is required for repo operations"
      hint: "Set AZURE_DEVOPS_PAT in .env.local"
  mcp_servers:
    - name: atlassian
      message: "Atlassian MCP server must be registered"
      hint: "Run 'claude mcp add atlassian' or 'dotbot init --force'"
  cli_tools:
    - name: git
      message: "git CLI is required for repository cloning"

Task types

Every entry in tasks has a type field that controls how dotbot executes it.
TypeWhat it doesUses AINotes
promptRuns an AI agent with a workflow-specific prompt fileYesThe most common type; produces outputs committed to the workspace
scriptRuns a PowerShell script with no LLM involvementNoAuto-promoted past analysis; skips worktree isolation and verify hooks
mcpCalls an MCP tool directlyNoDeterministic; skips AI phases
task_genGenerates sub-tasks dynamically using AIYesWrites task JSON files to outputs_dir; requires min_output_count
prompt_templateAI with a workflow-specific templated promptYesSimilar to prompt but the prompt is rendered per-workflow
barrierWaits for all depends_on tasks to complete before the pipeline continuesNoUsed to synchronise parallel fan-out branches
script, mcp, and task_gen tasks bypass AI entirely. They auto-promote past the analysis phase, skip worktree isolation, and skip verification hooks. This lets you embed deterministic pipeline stages inside an AI-orchestrated workflow.

What stacks are

A stack is a named extension that overlays technology-specific content on top of the default workflow. Stacks can add:
  • Skills — reusable AI guidance injected into the agent prompt (e.g. how to write Entity Framework migrations)
  • HooksStart-Dev.ps1, Stop-Dev.ps1, and numbered verify scripts
  • MCP tools — additional tools auto-discovered by the MCP server
  • Recipes — agent personas and workflow prompts tailored to the technology
dotbot ships with three built-in stacks:
StackDescription
dotnet.NET skills, hooks, dev environment, and MCP tools
dotnet-blazorBlazor-specific skills, component patterns, and rendering guidance
dotnet-efEntity Framework migrations, design patterns, and database tools

How stacks compose with extends

Stacks can declare an extends field to automatically pull in a parent stack. dotnet-blazor and dotnet-ef both extend dotnet:
# stacks/dotnet-blazor/manifest.yaml
name: dotnet-blazor
description: Blazor-specific skills, component patterns, and rendering guidance
extends: dotnet
# stacks/dotnet-ef/manifest.yaml
name: dotnet-ef
description: Entity Framework migrations, design patterns, and database tools
extends: dotnet
When you install dotnet-blazor, dotbot automatically resolves and applies the dotnet parent first. You do not need to list both explicitly.

Settings merge order

Settings deep-merge in the following order, with later layers taking precedence:
default → workflows → stacks
Files overlay in the same order. Your workflow can override a default setting, and a stack can override both the default and the workflow setting.
Run dotbot doctor to inspect the resolved settings for your project. It reports the merged configuration alongside any integrity issues.

Installing workflows and stacks

Use dotbot init with -Workflow and -Stack flags to install into a project:
# Install a specific workflow
dotbot init -Workflow kickstart-via-jira

# Install one or more stacks (comma-separated)
dotbot init -Stack dotnet-blazor,dotnet-ef

# Install both a workflow and a stack together
dotbot init -Workflow kickstart-via-jira -Stack dotnet

# List all available workflows and stacks
dotbot list
After installation, each workflow gets its own entry in .bot/workflows/ and can be run, re-run, and stopped independently:
dotbot run kickstart-via-jira
You can also source workflows and stacks from enterprise registries. Use dotbot registry add to link a git-hosted or local registry, then install from it with:
dotbot init -Workflow myorg:custom-workflow