Tasks and Dependencies
PRIMA Project Management tracks work at the level of projects, and tasks are optional. When a project has a task file, the dashboard reads it and draws task bars, dependency arrows and progress. When it has none, the dashboard shows the project without them.
Where Task Files Live
Section titled “Where Task Files Live”Each project keeps its tasks in a file named after the project ID.
.claude/state/tasks/P012.jsonThe file holds a tasks array. When a project has no task file, the dashboard looks for a todos list of plain text items on the project. It shows each item as a task with status todo.
Task Fields
Section titled “Task Fields”The dashboard reads the fields below from each task. A task with an id, a title and a status appears in the task lists and the dependency graph. It also needs at least one date to appear as a bar on the Gantt chart.
| Field | What the dashboard does with it |
|---|---|
id |
Identifies the task, such as T001, and links dependencies to it |
title |
The task name on bars, in lists and in the graph |
status |
Colours the task and decides whether it counts as done or blocked |
dependencies |
The tasks this one depends on (see below) |
startDate |
Where the task bar starts on the project Gantt chart |
dueDate |
Where the task bar ends, and the date on the Calendar view |
created |
Shown in the task details and used to sort the Recent Tasks list |
completed |
The completion date shown in the task details |
updated or lastUpdated |
The last change date shown in the task details |
assignee |
Shown in the task details when present |
estimatedHours |
Shown in the task details when present |
notes |
Shown in the task details on the Recent Tasks list |
A task with only a due date gets a bar that starts seven days earlier. A task with only a start date gets a bar that ends seven days later.
Older Field Names
Section titled “Older Field Names”Task files written over time use different names for the same thing. The build script reads these names and converts them, so you do not need to rewrite old files.
| Older name | Read as |
|---|---|
dependsOn |
dependencies |
A dependency written as a plain task ID, such as "T001" |
A finish-to-start dependency on that task |
A dependency with id in place of taskId |
taskId |
createdAt, createdDate, added |
created |
completedAt, completedDate |
completed |
due |
dueDate |
Task Statuses
Section titled “Task Statuses”| Status | How the dashboard treats it |
|---|---|
todo |
Open, shown in grey |
in-progress |
Open, shown in light blue |
done |
Counted as done, shown in green |
on-hold |
Counted as blocked, shown in amber |
cancelled |
Not counted as done or blocked, though it still counts towards the task total |
Dependencies
Section titled “Dependencies”A dependency says that one task waits on another. Write each one as an object with a type and the ID of the task it depends on.
{ "projectId": "P012", "tasks": [ { "id": "T001", "title": "Book the venue", "status": "done", "dueDate": "2026-11-02" }, { "id": "T002", "title": "Send invitations", "status": "todo", "dueDate": "2026-11-09", "dependencies": [{ "type": "FS", "taskId": "T001" }] } ]}| Type | Meaning |
|---|---|
FS |
Finish to start, the default when no type is given |
SS |
Start to start |
FF |
Finish to finish |
SF |
Start to finish |
The project Gantt chart draws a finish-to-start dependency as an arrow with a right-angled elbow. It draws the other three types in a second arrow style. The Dependency Graph tab lays the tasks out in columns by depth and labels each arrow with its type.
How Counts Are Worked Out
Section titled “How Counts Are Worked Out”The dashboard counts the tasks in each file afresh on every build, so the figures always match the file.
- Task count is every task in the file, done tasks included.
- Done is every task with status
done. - Blocked is every task with status
on-hold. It also includes every open task that depends on an unfinished task in the same file.
The count ignores a dependency on a task ID that is not in the same file. A task that waits only on a dependency keeps its own status colour on the charts, and only the blocked count reflects it.
Untracked Work
Section titled “Untracked Work”The dashboard can mark a project that you worked on recently but whose tasks show no movement. A marked project shows “At risk” in place of its status on the Projects view. The dashboard marks a project when all three of these conditions hold.
- Its status is
in-progressoroverdue, because the dashboard never marks paused or archived projects. - Its
lastWorkeddate falls within the last 14 days of the build date. - Its task file holds no tasks, or no task carries a created, completed, updated or start date from the last 14 days.
The dashboard never marks a project that has no task file, unless you switch that on. A workspace that has never used task files therefore sees no “At risk” labels.
Switching It On or Off
Section titled “Switching It On or Off”| Setting | Where | Effect |
|---|---|---|
taskEnforcement.enabled: false |
.claude/state/state.json |
Switches the marking off for every project |
taskEnforcement.enabled: true |
.claude/state/state.json |
Also marks projects that have no task file at all |
taskTrackingEnabled: false |
The project’s detail file, or its entry in state.json when it has no detail file |
Switches the marking off for that project |
Neither setting is part of the state schema that ships with the product. The dashboard reads them when they are present.
Related Pages
Section titled “Related Pages”- Dashboard Views shows where tasks appear on the page.
- State Files Explained describes the project register and the optional detail files.
- Pausing, Archiving and Milestones covers the milestones the timeline and dashboard draw.

