Board Schema
The board schema defines Kanban-style task boards with columns and tasks. This is the original and most mature brainfile type.
Schema URL
https://brainfile.md/v1/board.jsonOverview
Board files organize tasks into columns, typically representing workflow stages (To Do, In Progress, Done). They're ideal for:
- Sprint planning
- Feature development tracking
- Bug triage boards
- Personal task management
- Team project coordination
Extends
Base Schema - Inherits all base fields
Type Identifier
type: boardRequired Fields
columns
Type: array of column objects Min Items: 1 Description: Task columns representing workflow stages
columns:
- id: todo
title: To Do
order: 1
tasks: []
- id: in-progress
title: In Progress
order: 2
tasks: []
- id: done
title: Done
order: 3
completionColumn: true
tasks: []Optional Fields
statsConfig
Type: objectDescription: Configuration for progress statistics
statsConfig:
columns:
- todo
- in-progress
- doneThe columns array specifies which column IDs to include in progress calculations. Typically excludes archive or backlog columns.
archive
Type: array of task objects Description: Archived tasks removed from active columns
archive:
- id: task-100
title: Old completed task
...Use for:
- Keeping completed work history
- Reducing active task clutter
- Historical reference
- Reporting and analytics
Column Structure
Required Column Fields
id
Type: stringPattern: ^[a-z]+(-[a-z]+)*$ (kebab-case) Description: Unique column identifier
id: in-progressRules:
- Lowercase only
- Hyphen-separated words
- No spaces or special characters
- Must be unique across columns
title
Type: stringDescription: Display title for the column
title: In Progresstasks
Type: array of task objects Description: Tasks in this column
tasks:
- id: task-1
title: First taskOptional Column Fields
order
Type: integerMinimum: 0 Description: Display order (lower numbers first)
order: 2Columns without order appear after ordered columns, in definition order.
completionColumn
Type: booleanDefault: falseDescription: Marks this column as a completion column
completionColumn: trueWhen true, tasks moved to this column are considered complete. This enables:
- Non-English workflows: "Terminé", "Fertig", "完了" are recognized
- Custom semantics: "Deployed", "Verified", "Archived" as completion
- Explicit configuration: No reliance on name-based pattern matching
Backward Compatibility: If not specified, implementations may fall back to name-based detection (matching "done", "complete", "finished", "closed" patterns) or use the last column as the default completion column.
Task Structure
Required Task Fields
id
Type: stringPattern: ^task-[0-9]+$Description: Unique task identifier
id: task-42Format: task- followed by numbers. IDs must be unique across all columns and archive.
title
Type: stringDescription: Task title
title: Implement user authenticationOptional Task Fields
description
Type: stringSupports: Markdown Description: Detailed task description
description: |
## Requirements
- JWT-based authentication
- Login/logout endpoints
- Token refresh mechanism
## Acceptance Criteria
- [ ] User can log in
- [ ] User can log out
- [ ] Tokens expire after 1 hourassignee
Type: stringDescription: Person assigned to the task
assignee: alicetags
Type: array of stringDescription: Task categorization tags
tags:
- backend
- security
- urgentpriority
Type: stringEnum: low, medium, high, criticalDescription: Task priority level
priority: highVisual representation:
low: 🔵 Bluemedium: 🟡 Yellowhigh: 🟠 Orangecritical: 🔴 Red
effort
Type: stringEnum: trivial, small, medium, large, xlargeDescription: Estimated effort for AI planning
effort: mediumUse for:
- Sprint planning
- Resource allocation
- AI-assisted task breakdown
- Velocity tracking
blockedBy
Type: array of task IDs Pattern: ^task-[0-9]+$Description: Tasks that must complete first
blockedBy:
- task-10
- task-15dueDate
Type: string (ISO 8601 date) Format: date (YYYY-MM-DD) Description: Task deadline
dueDate: "2025-12-31"createdAt
Type: string (ISO 8601 timestamp) Format: date-timeDescription: When the task was created
createdAt: "2025-11-24T10:30:00Z"New in v0.5.0: Enables creation time tracking and analytics.
updatedAt
Type: string (ISO 8601 timestamp) Format: date-timeDescription: When the task was last modified
updatedAt: "2025-11-24T16:45:00Z"New in v0.5.0: Tracks last modification for staleness detection.
relatedFiles
Type: array of stringDescription: File paths or code locations
relatedFiles:
- src/auth/jwt.ts
- src/middleware/auth.ts
- tests/auth.test.tsSupports:
- File paths:
src/components/Button.tsx - Line numbers:
src/utils/helpers.ts:42 - Line ranges:
src/api/users.ts:10-25
subtasks
Type: array of subtask objects Description: Granular progress tracking
subtasks:
- id: task-1-1
title: Design authentication flow
completed: true
- id: task-1-2
title: Implement JWT generation
completed: false
- id: task-1-3
title: Write tests
completed: falsetemplate
Type: stringEnum: bug, feature, refactorDescription: Task template type
template: featureTemplates provide default structures:
- bug: Reproduction steps, environment, fix verification
- feature: Requirements, design, implementation, testing
- refactor: Analysis, design, implementation, performance
contract
Type: contract object Description: Optional PM-to-agent contract metadata (deliverables, validation, constraints)
contract:
status: ready
deliverables:
- type: file
path: protocol/v1/contract.json
description: New contract schema file
validation:
commands:
- npm testSee: Contract Schema
Subtask Structure
Required Subtask Fields
id
Type: stringPattern: Typically task-N-MDescription: Unique subtask identifier
id: task-1-3title
Type: stringDescription: Subtask title
title: Write integration testscompleted
Type: booleanDescription: Whether subtask is done
completed: falseComplete Example
---
type: board
schema: https://brainfile.md/v1/board.json
title: Product Development
protocolVersion: 1.0.0
agent:
instructions:
- Modify only the YAML frontmatter
- Update task status as work progresses
- Preserve all task IDs
rules:
always:
- id: 1
rule: test all features before moving to done
- id: 2
rule: link related files for each task
never:
- id: 1
rule: skip code review
prefer:
- id: 1
rule: small focused tasks over large epics
columns:
- id: todo
title: To Do
order: 1
tasks:
- id: task-1
title: Add user authentication
description: |
Implement JWT-based authentication with:
- Login/logout endpoints
- Token refresh
- Protected routes
priority: high
effort: large
tags:
- backend
- security
template: feature
assignee: alice
createdAt: "2025-11-24T10:00:00Z"
relatedFiles:
- src/auth/jwt.ts
- src/middleware/auth.ts
subtasks:
- id: task-1-1
title: Implement JWT generation
completed: false
- id: task-1-2
title: Create login endpoint
completed: false
- id: task-1-3
title: Write tests
completed: false
- id: in-progress
title: In Progress
order: 2
tasks: []
- id: done
title: Done
order: 3
completionColumn: true
tasks:
- id: task-2
title: Set up CI/CD pipeline
priority: medium
tags:
- devops
createdAt: "2025-11-20T10:00:00Z"
updatedAt: "2025-11-23T16:45:00Z"
subtasks:
- id: task-2-1
title: Configure GitHub Actions
completed: true
- id: task-2-2
title: Test deployment
completed: true
statsConfig:
columns:
- todo
- in-progress
- done
---Use Cases
Sprint Board
columns:
- id: backlog
title: Backlog
order: 1
- id: sprint
title: Sprint
order: 2
- id: in-progress
title: In Progress
order: 3
- id: review
title: Review
order: 4
- id: done
title: Done
order: 5Bug Triage
columns:
- id: reported
title: Reported
order: 1
- id: triaged
title: Triaged
order: 2
- id: in-progress
title: In Progress
order: 3
- id: fixed
title: Fixed
order: 4
- id: verified
title: Verified
order: 5
completionColumn: true # Bugs are complete when verifiedPersonal GTD
columns:
- id: inbox
title: Inbox
order: 1
- id: next
title: Next Actions
order: 2
- id: waiting
title: Waiting
order: 3
- id: someday
title: Someday/Maybe
order: 4
- id: done
title: Done
order: 5
completionColumn: trueInternational Workflows
columns:
- id: todo
title: À faire
order: 1
- id: en-cours
title: En cours
order: 2
- id: termine
title: Terminé
order: 3
completionColumn: true # Explicit marking for non-English column namesDevOps Pipeline
columns:
- id: todo
title: To Do
order: 1
- id: in-progress
title: In Progress
order: 2
- id: deployed
title: Deployed
order: 3
completionColumn: true # Custom semantic: "Deployed" means done
- id: archived
title: Archived
order: 4Best Practices
Column Design
- Keep it simple: 3-5 columns is usually sufficient
- Clear stages: Each column should represent a distinct workflow stage
- Use order: Explicit
orderprevents visual inconsistency - Mark completion: Use
completionColumn: truefor non-English workflows or custom semantics - Stats config: Exclude backlog/archive from progress calculations
Task Management
- Atomic tasks: Each task should be independently completable
- Clear titles: Task titles should be actionable (verb + object)
- Use subtasks: Break large tasks into trackable steps
- Link files: Always include
relatedFilesfor context - Set priorities: Use priority for urgent or blocking tasks
AI Agent Integration
agent:
instructions:
- Move tasks to in-progress when starting work
- Update task status before committing code
- Mark subtasks complete as you finish them
- Add timestamps when creating or updating tasksMigration from Legacy
Old files without type:
---
title: My Project
columns: [...]
---Migrate by adding type: board:
---
type: board
title: My Project
columns: [...]
---Optionally add timestamps to existing tasks:
tasks:
- id: task-1
title: Existing task
createdAt: "2025-11-24T10:00:00Z" # Add creation timeAdding Explicit Completion Column
If your workflow uses non-English column names or custom completion semantics, add the completionColumn property:
Before (relies on name-based detection):
columns:
- id: termine
title: Terminé
order: 3
tasks: []After (explicit marking):
columns:
- id: termine
title: Terminé
order: 3
completionColumn: true # Explicit completion column
tasks: []Benefits of explicit marking:
- Works with any language ("Terminé", "Fertig", "完了", etc.)
- Supports custom semantics ("Deployed", "Verified", "Archived")
- No reliance on pattern matching
- Machine-readable for third-party tools
Backward compatibility: Boards without completionColumn continue to work using name-based detection (matching "done", "complete", "finished", "closed") or defaulting to the last column.