Devin Task Board
A VS Code Activity Bar task board for organizing Markdown tasks and delegating each one to Codex, Claude, or Devin. Tasks can live anywhere beneath the task directory and carry their workflow status, repository context, milestone, and preferred agent in YAML frontmatter.
What's new in 0.13.0
Version 0.13.0 improves milestone management, task creation, and the instructions sent to agents:
- Create a task from any status, priority, or milestone group and prefill the field represented by that group.
- Create
user-story tasks from the standard and related-task creation flows.
- Set milestones to
open or closed, and use the existing visibility toggle to hide both completed tasks and closed milestones.
- Customize the complete agent-session prompt with repository-relative slugs for the task, working directory, workspace instructions, and milestone context files.
Major features
Task board and workflow
- Select a task directory inside the current VS Code workspace.
- Use the fixed workflow:
todo, recurring, ready, in-progress, review, re-work, and done.
- Group tasks by status, priority, milestone, or not at all.
- Use VS Code's native Tree View and the active file-icon theme for familiar Explorer-style folder and file icons.
- Create a task from a status, priority, or milestone group's context menu and initialize it with that group's value. Recurring-group creation also collects the required schedule.
Recommended configuration:
{
"devinTaskBoard.directory": "devin-tasks"
}
Milestones and shared context
- Create one directory for every milestone and place new tasks directly in it.
- Filter the board to one milestone or show all milestones.
- Create or open a workspace-root
AGENTS.md from the A toolbar action. A + badge means the file can be created; a check badge means it already exists.
- Seed workspace instructions with task claiming,
workDir, related-task, and task-documentation guidance.
- Create or open a milestone's
MILESTONE.md and AGENTS.md from inline M and A actions when the board is grouped by milestone.
- Set a milestone to
open or closed from its right-click Status submenu. The state is stored in workspace settings without modifying or moving task files.
- Hide or restore both completed tasks and closed milestones with the persistent toolbar visibility toggle.
Recommended configuration:
{
"devinTaskBoard.milestones": ["release-1", "documentation-refresh"],
"devinTaskBoard.milestoneStates": {
"release-1": "open",
"documentation-refresh": "closed"
},
"devinTaskBoard.workspaceAgentsTemplate": "# Task board workflow\n\nTasks are stored under `{{taskDirectory}}`.\n",
"devinTaskBoard.milestoneTemplate": "# {{milestone}}\n\n## Goals\n\n## Architecture\n\n## Decisions\n",
"devinTaskBoard.agentsTemplate": "# {{milestone}} working rules\n"
}
Milestone names and states are normally maintained through the board. Customize the three templates when newly created context files need repository-specific structure or instructions.
- Create feature, bug, and documentation tasks from the + button.
- Create
user-story tasks from both standard and related-task creation. The stored frontmatter value is user-story, displayed as User Story in pickers.
- Select Codex, Claude, or Devin as each task's preferred agent.
- Store a repository-relative
workDir in each task. New tasks default to ., while existing tasks use a workspace folder picker when it changes.
- Store optional provider-specific model and reasoning choices in task frontmatter.
Recommended configuration:
{
"devinTaskBoard.defaultAgent": "devin",
"devinTaskBoard.modelOptions": {
"codex": ["gpt-5.6-sol", "gpt-5.6-terra"],
"claude": ["sonnet", "opus"],
"devin": ["adaptive", "opus"]
},
"devinTaskBoard.defaultModels": {
"codex": "gpt-5.6-sol",
"claude": "sonnet",
"devin": "adaptive"
},
"devinTaskBoard.defaultReasoning": {
"codex": "medium",
"claude": "high"
},
"devinTaskBoard.newTaskTag": "devin"
}
Agent sessions
- Start a fresh interactive session from a task row's play button or from the Command Palette for the recognized task in the active editor.
- Pass each task's optional model and reasoning values to the selected Codex, Claude, or Devin CLI when that CLI supports them.
- Replace the complete session prompt with
devinTaskBoard.sessionPromptTemplate and use repository-relative slugs for the task, workDir, workspace AGENTS.md, milestone MILESTONE.md, milestone AGENTS.md, milestone name, and status-aware workflow instructions.
Recommended configuration:
{
"devinTaskBoard.codexCommand": "codex",
"devinTaskBoard.claudeCommand": "claude",
"devinTaskBoard.devinCommand": "devin",
"devinTaskBoard.sessionPromptTemplate": "Work on {TASK_FILE} from {WORK_DIR}. Read {AGENTS}, {MILESTONE}, and {MILESTONE_AGENTS}. {WORKFLOW_INSTRUCTIONS}"
}
Keep each command as an executable on PATH, or replace it with an absolute path. The default prompt template already supplies the normal task-board workflow; customize it only when the agent needs different or additional instructions.
Recurring tasks
- Configure daily, weekly, bi-weekly, or monthly schedules from the Recurrence submenu.
- Check schedules at startup and at one configurable global interval, launch due work through its preferred agent, and record
lastRunDate after launch.
- Catch up once after downtime instead of launching every missed occurrence.
- Distinguish scheduled work with the
recurring status, a sync icon, and recurrence details in the task row.
Recommended configuration:
{
"devinTaskBoard.recurringCheckInterval": "+1min"
}
Increase the interval, for example to +5min or +1hr, when minute-level scheduling is unnecessary. Changes take effect without reloading VS Code.
Task editing and relationships
- Edit status, milestone, agent, reasoning, model name,
workDir, recurrence, and related tasks from right-expanding context submenus.
- Create a related task from the + action on a task row, inheriting the source task's milestone,
workDir, agent, model, and reasoning.
- Relate existing tasks through a multi-select picker or by dropping one task onto another. Both paths write duplicate-safe reciprocal Markdown links to
relatedTasks frontmatter.
- Drag a task onto a status indicator to update only its YAML status without moving the file.
Storage and compatibility
- Find task files recursively so users can organize files and subdirectories however they prefer.
- Open files in the editor and watch Markdown files and workspace settings for changes.
- Preserve user-controlled task locations: the extension does not move or delete existing task files.
- Coexist with Markdown Task Board through separate extension IDs, settings, state, storage, and a Devin-specific task marker.
Settings
{
"devinTaskBoard.directory": "devin-tasks",
"devinTaskBoard.recurringCheckInterval": "+1min",
"devinTaskBoard.defaultAgent": "devin",
"devinTaskBoard.modelOptions": {
"codex": ["gpt-5.6-sol", "gpt-5.6-terra"],
"claude": ["sonnet", "opus"],
"devin": ["adaptive", "opus"]
},
"devinTaskBoard.defaultModels": {
"codex": "gpt-5.6-sol",
"claude": "sonnet",
"devin": "adaptive"
},
"devinTaskBoard.reasoningOptions": {
"codex": ["minimal", "low", "medium", "high", "xhigh"],
"claude": ["low", "medium", "high", "xhigh", "max"]
},
"devinTaskBoard.defaultReasoning": {
"codex": "medium",
"claude": "high"
},
"devinTaskBoard.codexCommand": "codex",
"devinTaskBoard.claudeCommand": "claude",
"devinTaskBoard.devinCommand": "devin",
"devinTaskBoard.sessionPromptTemplate": "Work on {TASK_FILE} from {WORK_DIR}. Read {AGENTS}, {MILESTONE}, and {MILESTONE_AGENTS}. {WORKFLOW_INSTRUCTIONS}",
"devinTaskBoard.newTaskTag": "devin",
"devinTaskBoard.milestones": ["release-1", "documentation-refresh"],
"devinTaskBoard.milestoneStates": {
"release-1": "open",
"documentation-refresh": "closed"
},
"devinTaskBoard.workspaceAgentsTemplate": "# Task board workflow\n\nTasks are stored under `{{taskDirectory}}`.\n",
"devinTaskBoard.milestoneTemplate": "# {{milestone}}\n\n## Goals\n\n## Architecture\n\n## Decisions\n",
"devinTaskBoard.agentsTemplate": "# {{milestone}} working rules\n"
}
The three command settings accept an executable name available on PATH or an absolute path. Starting a task creates an integrated terminal at the workspace root and launches one of these documented interactive forms. Optional model and reasoning arguments are added from the task frontmatter:
codex --cd <workspace> [--model <model>] [--config model_reasoning_effort="<reasoning>"] <prompt>
claude [--model <model>] [--effort <reasoning>] <prompt>
devin [--model <model>] -- <prompt>
Install and authenticate the CLI for every agent you plan to use. The task board does not store provider credentials. If an executable is installed outside PATH, point its command setting at that executable.
devinTaskBoard.sessionPromptTemplate replaces the complete prompt submitted when a task session starts. It supports these single-brace slugs:
{TASK_FILE} (or {TASK}) and {WORK_DIR} for the selected task's repository-relative file and working directory.
{WORKSPACE_AGENTS_FILE} (or {WORKSPACE_AGENTS} / {AGENTS}), {MILESTONE_FILE} (or {MILESTONE}), and {MILESTONE_AGENTS_FILE} (or {MILESTONE_AGENTS}) for repository-relative context-file paths.
{MILESTONE_NAME} for the task's milestone and {WORKFLOW_INSTRUCTIONS} (or {WORKFLOW}) for the normal versus recurring status guidance.
Milestone slugs expand to an empty string when the task has no milestone. Unknown slugs remain unchanged. The default template preserves the built-in task path, workDir, context-reading, and status-workflow instructions; omit any slug from a custom template to omit that material from the submitted prompt.
The task directory and every workDir must stay inside the current workspace.
devinTaskBoard.milestoneStates records each explicitly managed milestone as open or closed in workspace settings. Existing milestones without an entry remain open. The board's hide/show toolbar action applies to both done tasks and closed milestones, including all tasks assigned to a closed milestone.
devinTaskBoard.recurringCheckInterval is one extension setting that controls the check cadence for every recurring task. It defaults to +1min and accepts a positive whole number followed by min or hr, including +5min, +1hr, and +60min. Changes take effect without reloading VS Code. The extension still performs one immediate check when it activates.
The three template settings can be set in VS Code user settings or overridden per workspace. They support {{workspaceName}}, {{workspaceSlug}}, and {{taskDirectory}}; milestone templates also support {{milestone}}. Templates are applied only when a file is first created. Clicking a checked action opens the existing file without changing its contents.
The default workspace AGENTS.md instructs an agent to claim a ready task by changing its status to in-progress before discovery, keep it there during implementation and verification, and move it to review when the work is ready for review. Automatically launched recurring tasks stay in status: recurring so later occurrences remain scheduled. Codex discovers repository-root AGENTS.md files when starting a task; start a new Codex task after creating or changing the file so the latest instructions are loaded.
Task files are recognized recursively beneath the configured task directory when agent is codex, claude, or devin and a status field is present. Status changes are written in the unquoted form status: todo. Keep both fields intact when authoring tasks manually.
Storage layout
The optional workspace instructions sit at the workspace root. Each milestone can own shared context and working-rule files alongside its task files:
workspace/
AGENTS.md
devin-tasks/
release-1/
MILESTONE.md
AGENTS.md
task-a.md
task-b.md
any-user-defined-subdirectory/
task-c.md
New tasks are stored at <task-directory>/<milestone>/<task-file>.md. Existing and manually authored tasks may be placed anywhere below the configured task directory. The extension never moves or deletes task files.
Task files use this frontmatter and add the task title as an H1. The model line is optional and is not added by the creation form unless supplied programmatically:
---
agent: "codex"
model: "gpt-5.6-sol"
reasoning: "high"
status: todo
priority: "medium"
milestone: "release-1"
type: "feature"
workDir: "packages/api"
creationDate: "2026-09-21T14:00:00.000Z"
startDate: "2026-09-22T14:00:00.000Z"
recurrence: "weekly"
lastRunDate: "2026-09-29T14:03:00.000Z"
tags: devin
relatedTasks:
- [Related task](<./related-task.md>)
---
# Task title
Valid task types are feature, bug, documentation, and user-story. workDir is relative to the workspace folder; use . for the repository root.
Recurring tasks use status: recurring plus startDate and recurrence. Supported recurrence values are daily, weekly, bi-weekly, and monthly; lastRunDate is added automatically after a scheduled launch. Dates are stored as ISO 8601 timestamps. Monthly schedules remain anchored to the original day and use the month's final day when that day does not exist, such as a January 31 schedule running on February 28. A due schedule catches up once after VS Code was closed rather than opening a terminal for every missed occurrence. VS Code must be running for the extension to start a session.
Choose Recurrence → Configure Recurrence... on a task to select its first local date/time and repeat interval. This changes the task to status: recurring; choosing another status pauses automatic launches without deleting the schedule. Choose Recurrence → Remove Recurrence to delete startDate, recurrence, and lastRunDate; an active recurring task returns to status: todo.
Valid task agents are codex, claude, and devin. devinTaskBoard.defaultAgent controls which agent appears first in the creation picker, while the selected value is stored independently on every task.
The optional model field is passed directly to the selected agent as --model <model> when starting a session. Omit it to use that CLI's configured default. Model names and aliases are provider-specific; for example, a task may use model: "gpt-5.6-sol" with Codex or model: "sonnet" with Claude. Related tasks inherit both agent and model from their source task.
Use devinTaskBoard.modelOptions to define the provider-specific choices shown during task creation and from the task's Model Name submenu. devinTaskBoard.defaultModels marks the first choice for each agent and supplies the initial model for new tasks. A configured default does not need to appear in modelOptions; the board includes it automatically. Choose Use CLI default to omit model from the task.
The optional reasoning field is supported for Codex and Claude tasks. Use devinTaskBoard.reasoningOptions to customize the picker values and devinTaskBoard.defaultReasoning to select the first value for new tasks. The board passes Codex reasoning through model_reasoning_effort and Claude reasoning through --effort. Available levels depend on the selected model, so the CLI remains responsible for validating a choice. Choose Use CLI default to omit reasoning from the task.
Devin CLI currently exposes thinking-level changes interactively with Alt+T (Option+T on macOS), but does not document a startup reasoning flag. The board therefore does not write or apply reasoning for Devin tasks.
VS Code draws indentation guides for every child in a native Tree View, including files. Extensions cannot hide a guide for one view or one item without replacing the native tree. To hide these guides globally, set "workbench.tree.renderIndentGuides": "none" in VS Code settings.
Related tasks inherit the source task's milestone, workDir, model, and reasoning effort. Each file receives a reciprocal relative Markdown link in its relatedTasks YAML frontmatter list. Additional relationships selected from the context menu or created by dropping one task onto another are appended without duplicating an existing link.
Development
npm install
npm test
Press F5 in VS Code to launch an Extension Development Host, then open the Devin Tasks icon in the Activity Bar.