Capture and update GetItDone tasks
Make changes to the user's tasks after showing them what will change. Needs the tasks:write scope, plus projects:read to file tasks under a project.
Connecting and calling the tools
Every tool in this skill comes from the getitdone MCP server, the GetItDone connector, and is written here as getitdone:<tool>.
- Tools listed by name: call them directly, for example
getitdone:list_tasks. - Only
getitdone:search_toolsandgetitdone:execute_typescriptlisted (Code Mode, the default): callgetitdone:search_toolsfirst, then call each tool insidegetitdone:execute_typescriptasexternal_<tool>(for exampleexternal_list_tasks); the program mustreturnits result. Scopes, confirmations and gates are identical on both surfaces. - "Tool not found": switch to the Code Mode route instead of retrying the direct call. If
getitdone:search_toolsdoes not return the tool either, its OAuth scope was not granted; the user reconnects GetItDone and approves that scope. - No
getitdonetools at all: GetItDone is not connected yet. Install the GetItDone power, which adds the server; it signs in with OAuth on first use.
Tools you will use
If the tool list shows only getitdone:search_tools and getitdone:execute_typescript, the server is in Code Mode: call each operation below inside getitdone:execute_typescript as external_<name>. Call getitdone:search_tools first for the exact argument shapes.
getitdone:list_workspaces: confirm which workspace to write to.getitdone:list_projects: project ids, to file a task under a project that exists.getitdone:list_tasks: find existing tasks, so you update instead of creating duplicates.getitdone:create_task: create a task. Supports a start date (defer until), a due date, a project id, and a recurrence ("every weekday", "the 1st of each month"). Returns the new task with its short id.getitdone:update_task: change a task by short id: name, status, priority, start date, due date, notes, story points, project, or repeat schedule. Returns the task's current state.getitdone:complete_task_occurrence: mark one day of a repeating task done, by short id and aYYYY-MM-DDday (today if omitted). Past days and early future days are allowed.getitdone:link_task_dependency: record that one task is blocked by another, or remove that link with actionremove. Links that would create a loop are refused.getitdone:archive_task: archive or unarchive a task by short id. Archived tasks are hidden from the main list.
Workflow
- Call
getitdone:list_workspacesand confirm the target workspace if the user has more than one. - For notes or a longer text, extract one task per action item: a short imperative title, and priority, dates, project, or recurrence only when the text states them. Show the list and ask for changes once.
- If a project is named, call
getitdone:list_projects. If it is not there, say so instead of inventing it or writing its name into the task. - Call
getitdone:list_tasksand check for tasks with the same or a very close title. Offer to update those instead of creating new ones. - Call
getitdone:create_taskfor each approved task. Report each new short id. - For changes to existing tasks, restate the change ("T-123: TODO to IN_PROGRESS"), then call
getitdone:update_taskand echo the returned state. - When the user says one task is waiting on another, restate it ("T-124 is blocked by T-120"), then call
getitdone:link_task_dependency. - For a repeating task, use
getitdone:complete_task_occurrencefor the day the user named instead of changing the task's status. - For archiving, list the tasks by short id and name and get a yes before calling
getitdone:archive_taskon each.
Rules
- There is no permanent delete. If the user asks to delete a task, offer to archive it and say archive is reversible.
- Resolve relative dates ("Friday", "yesterday", "next week") to a calendar date and state it before writing.
- If a dependency link is refused because it would create a loop, report which tasks form the loop.
- If the write operations are missing, the user did not grant
tasks:write. Say so and tell them to reconnect with that scope. - A
SCOPE_MISSINGresult names the scope needed. Pass that on instead of retrying.
