5e7812c352
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
3.6 KiB
3.6 KiB
name, description, metadata
| name | description | metadata | ||||
|---|---|---|---|---|---|---|
| todo | Maintain a shared workspace TODO list with blocked tasks. |
|
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-skilldirectory andtodo-list.jsonfile if they do not exist.
Required workflow
- Read
todo-skill/todo-list.jsonbefore 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 clearblockReason. - Remove a task. Delete only the matching item. If multiple items could match, ask for clarification.
- Read the list.
Summarize tasks grouped into
TODOandBLOCKED.
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
versionat1. - Generate stable, human-readable IDs such as
prepare-demoortask-2. - Keep titles concise and preserve the user's intent.
- Use only
todoorblockedforstatus. - Use ISO timestamps for
createdAt, itemupdatedAt, and top-levelupdatedAt. - Keep
blockReasonasnullunless 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
createdAtvalues for unchanged items. - Update the touched item's
updatedAtwhenever you modify it. - Update the top-level
updatedAton 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
TODOandBLOCKED. - Include each blocked task's reason when one exists.