TODO Board
Use this skill when the user wants to manage a shared task list for the current workspace.
Trigger
{
"activation": {
"anyPhrases": [
"todo",
"todo list",
"blocked task",
"blocked tasks",
"add to my todo",
"show my todo"
]
},
"movement": {
"target": "desk",
"skipIfAlreadyThere": true
}
}
When this skill is activated, the agent should return to its assigned desk before handling the request.
- If the user asks from Telegram or any other external surface to add, block, unblock, remove, or read TODO items, treat that as a trigger for this skill.
- The physical behavior for this skill is: go sit at the assigned desk, then perform the TODO board workflow.
- If the agent is already at the desk, continue without adding extra movement narration.
Storage location
The authoritative task file is todo-skill/todo-list.json in the workspace root.
- Always treat that file as the source of truth.
- Never rely on chat memory alone for the latest task state.
- Create the
todo-skill directory and todo-list.json file if they do not exist.
Required workflow
- Read
todo-skill/todo-list.json before answering any task-management request.
- If the file does not exist, create it with the schema in this document before continuing.
- After every add, remove, block, or unblock action, write the full updated JSON back to disk.
- If the file exists but is invalid JSON or does not match the schema, repair it into a valid structure, preserve any recoverable items, and mention that repair in your response.
- If the user request is ambiguous, ask a clarifying question instead of guessing.
Supported actions
- Add a task.
Create a new item unless an equivalent active item already exists.
- Block a task.
Change the matching item to
status: "blocked". If the task does not exist and the request is clear, create it directly as blocked.
- Unblock a task.
Change the matching item back to
status: "todo" and clear blockReason.
- Remove a task.
Delete only the matching item. If multiple items could match, ask for clarification.
- Read the list.
Summarize tasks grouped into
TODO and BLOCKED.
File format
Use this JSON shape:
{
"version": 1,
"updatedAt": "2026-03-22T00:00:00.000Z",
"items": [
{
"id": "task-1",
"title": "Example task",
"status": "todo",
"createdAt": "2026-03-22T00:00:00.000Z",
"updatedAt": "2026-03-22T00:00:00.000Z",
"blockReason": null
}
]
}
Field rules
- Keep
version at 1.
- Generate stable, human-readable IDs such as
prepare-demo or task-2.
- Keep titles concise and preserve the user's intent.
- Use only
todo or blocked for status.
- Use ISO timestamps for
createdAt, item updatedAt, and top-level updatedAt.
- Keep
blockReason as null unless the user gave a reason or a short precise reason is clearly implied.
Mutation rules
- Avoid duplicate active items that describe the same work.
- Preserve existing IDs and
createdAt values for unchanged items.
- Update the touched item's
updatedAt whenever you modify it.
- Update the top-level
updatedAt on every write.
- Keep untouched items in their original order unless there is a strong reason to reorder them.
Response style
- After each mutation, say what changed.
- When showing the list, group tasks into
TODO and BLOCKED.
- Include each blocked task's reason when one exists.
1---2name: todo3description: Maintain a shared workspace TODO list with blocked tasks.4---5
6# TODO Board
7
8Use this skill when the user wants to manage a shared task list for the current workspace.
9
10## Trigger
11
12```json
13{
14 "activation": {
15 "anyPhrases": [
16 "todo",
17 "todo list",
18 "blocked task",
19 "blocked tasks",
20 "add to my todo",
21 "show my todo"
22 ]
23 },
24 "movement": {
25 "target": "desk",
26 "skipIfAlreadyThere": true
27 }
28}
29```
30
31When this skill is activated, the agent should return to its assigned desk before handling the request.
32
33- If the user asks from Telegram or any other external surface to add, block, unblock, remove, or read TODO items, treat that as a trigger for this skill.
34- The physical behavior for this skill is: go sit at the assigned desk, then perform the TODO board workflow.
35- If the agent is already at the desk, continue without adding extra movement narration.
36
37## Storage location
38
39The authoritative task file is `todo-skill/todo-list.json` in the workspace root.
40
41- Always treat that file as the source of truth.
42- Never rely on chat memory alone for the latest task state.
43- Create the `todo-skill` directory and `todo-list.json` file if they do not exist.
44
45## Required workflow
46
471. Read `todo-skill/todo-list.json` before answering any task-management request.
482. If the file does not exist, create it with the schema in this document before continuing.
493. After every add, remove, block, or unblock action, write the full updated JSON back to disk.
504. If the file exists but is invalid JSON or does not match the schema, repair it into a valid structure, preserve any recoverable items, and mention that repair in your response.
515. If the user request is ambiguous, ask a clarifying question instead of guessing.
52
53## Supported actions
54
55- Add a task.
56 Create a new item unless an equivalent active item already exists.
57- Block a task.
58 Change the matching item to `status: "blocked"`. If the task does not exist and the request is clear, create it directly as blocked.
59- Unblock a task.
60 Change the matching item back to `status: "todo"` and clear `blockReason`.
61- Remove a task.
62 Delete only the matching item. If multiple items could match, ask for clarification.
63- Read the list.
64 Summarize tasks grouped into `TODO` and `BLOCKED`.
65
66## File format
67
68Use this JSON shape:
69
70```json
71{
72 "version": 1,
73 "updatedAt": "2026-03-22T00:00:00.000Z",
74 "items": [
75 {
76 "id": "task-1",
77 "title": "Example task",
78 "status": "todo",
79 "createdAt": "2026-03-22T00:00:00.000Z",
80 "updatedAt": "2026-03-22T00:00:00.000Z",
81 "blockReason": null
82 }
83 ]
84}
85```
86
87## Field rules
88
89- Keep `version` at `1`.
90- Generate stable, human-readable IDs such as `prepare-demo` or `task-2`.
91- Keep titles concise and preserve the user's intent.
92- Use only `todo` or `blocked` for `status`.
93- Use ISO timestamps for `createdAt`, item `updatedAt`, and top-level `updatedAt`.
94- Keep `blockReason` as `null` unless the user gave a reason or a short precise reason is clearly implied.
95
96## Mutation rules
97
98- Avoid duplicate active items that describe the same work.
99- Preserve existing IDs and `createdAt` values for unchanged items.
100- Update the touched item's `updatedAt` whenever you modify it.
101- Update the top-level `updatedAt` on every write.
102- Keep untouched items in their original order unless there is a strong reason to reorder them.
103
104## Response style
105
106- After each mutation, say what changed.
107- When showing the list, group tasks into `TODO` and `BLOCKED`.
108- Include each blocked task's reason when one exists.