Update to Vaiz
Snapshot Oct 27, 2026 · 00:52 UTC · version 1.1.0
Collection source: downloaded plugin package.
Instructions updated for vaiz-tasks
Full description — Now says: show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks...
Observed in instructions or declared skills. Runtime behavior has not been tested.
Up to 10 plugins free · no card required.
All fields and original values.
Full description
Oct 24, 2026 · 13:47 UTC
read, create, and update Vaiz tasks and boards — filter task lists, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns, and manage blocker relationships.
Oct 27, 2026 · 00:52 UTC
show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive a...
Skill instructions
Oct 24, 2026 · 13:47 UTC
read, create, and update Vaiz tasks and boards — filter task lists, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns, and manage blocker relationships. # Vaiz tasks ...
Oct 27, 2026 · 00:52 UTC
show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive a...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -1,9 +1,9 @@ --- name: vaiz-tasks -description: Find, read, create, and update Vaiz tasks and boards — filter task lists, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns, and manage blocker relationships. +description: Find, show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive and restore, and manage blockers and followers. --- -# Vaiz tasks and boards +# Vaiz tasks Tasks live on boards; boards belong to projects. A task is identified either by its 24-character database id or by its human-readable id (HRID) such as `PRJ-123`. Every task tool accepts both. @@ -11,62 +11,102 @@ The Vaiz MCP server (`https://api.vaiz.com/mcp`) must be available through the installed Vaiz plugin and authorized with OAuth. If tools are missing or return an authorization error, open the Vaiz connection and complete OAuth sign-in. -Vaiz tools can appear under different names depending on how Vaiz is connected: `mcp__Vaiz__get_tasks` for a directly configured MCP server, or `mcp__codex_apps__vaiz_get_tasks` (sometimes with a longer app prefix such as `vaiz_testing_`) when Vaiz is installed as an app. Match tool names case-insensitively and by the tool suffix (`get_tasks`, `query_tasks`, …), not by an exact `Vaiz` prefix. Tools may also be loaded lazily: a Vaiz tool that is not in the current tool list is not missing — load it through tool search (for example `Vaiz get_tasks`) before concluding it is unavailable. Work with Vaiz only through these tools: do not open app.vaiz.com in a browser or drive the Vaiz desktop app with Computer Use, even if the user's `@Vaiz` mention also resolves to that app. +Vaiz tools can appear under different names depending on how Vaiz is connected: `mcp__Vaiz__query_tasks` for a directly configured MCP server, or `mcp__codex_apps__vaiz_query_tasks` (sometimes with a longer app prefix such as `vaiz_testing_`) when Vaiz is installed as an app. Match tool names case-insensitively and by the tool suffix (`query_tasks`, `show_tasks`, …), not by an exact `Vaiz` prefix. Tools may also be loaded lazily: a Vaiz tool that is not in the current tool list is not missing — load it through tool search (for example `Vaiz query_tasks`) before concluding it is unavailable. Work with Vaiz only through these tools: do not open app.vaiz.com in a browser or drive the Vaiz desktop app with Computer Use, even if the user's `@Vaiz` mention also resolves to that app. -## Finding tasks +## Finding tasks: `show_tasks` or `query_tasks` + +Both tools take the same filters and return the same rows. Pick by who needs the rows: + +- **The user wants to see the list** ("show my tasks", "what is in Review") → `show_tasks`. On hosts with MCP Apps the list is rendered as an interactive widget and the rows are **not** returned to you. +- **You need the rows** to resolve an id, count, compare, answer a question in words, or prepare another call → `query_tasks`. It never renders a widget. + +Filters combine with AND. Useful patterns: + +- my open tasks: `assignees: [myMemberId], completed: false` +- a board column by name across all boards: `groupLabel: "In Progress"` +- epics in a project: `projectId, typeLabel: "Epic"` +- unassigned: `assignees: "empty"`; no deadline: `dueDate: "empty"`; no milestone: `milestones: "empty"` +- overdue: `dueBefore: <today>T00:00:00Z, completed: false` +- include archived: `includeArchived: true` +- next page: `skip: 50, limit: 50` (max `limit` is 100) + +Prefer `groupLabel` and `typeLabel` when you know names but not ids; use `groupId` / `types` when you already have ids from `get_board`. When the user narrows a shown list ("only Anna's"), call `show_tasks` again with the matching filters instead of describing the subset in text. + +To count, put every condition into the filters and read "Found N" from the result (`limit: 1` is enough). When all matches fit on one page, the "Exact counts" line splits them by assignee, priority, column, and status. Never count rows yourself. Due dates come as calendar days (`YYYY-MM-DD`); do not shift them into the user's timezone. + +Other ways to find a task: -- `get_tasks` — filtered list with pagination. Filters combine with AND. Useful patterns: - - my open tasks: `assignees: [myMemberId], completed: false` - - a board column by name across all boards: `groupLabel: "In Progress"` - - epics in a project: `projectId, typeLabel: "Epic"` - - unassigned: `assignees: "empty"`; no deadline: `dueDate: "empty"`; no milestone: `milestones: "empty"` - - overdue: `dueBefore: <now ISO>, completed: false` - - include archived: `includeArchived: true` - Prefer `groupLabel` and `typeLabel` when you know names but not ids; use `groupId` / `types` when you already have ids from `get_board`. - `search_space` with `entityType: "task"` — keyword search over names and content when you do not know the HRID. -- `get_task_context` — compact decisions, problems, risks, recent Devlogs, and GitHub links for a task (see the `vaiz-memories` skill). +- `get_task_context` — compact decisions, problems, risks, recent Devlogs, and code links for a task (see the `vaiz-memories` skill). + +Find your own member id with `get_current_user`; resolve other people with `query_members`. + +## Response protocol for `show_*` lists -Find your own member id with `get_current_user`; find other members with `list_members`. +The first text block (and `structuredContent.instruction`) tells you how the result was delivered: + +- "rendered for the user in an interactive widget" — the user already sees the rows. Do not repeat them as a table or list, not even a subset; reply with one short sentence or answer the specific question. +- "rows follow as JSON in the next content block" — there is no widget; present the rows yourself as a concise table. + +If neither phrase is present: `structuredContent` without a `data` array means a widget was rendered; with `data` means you present it. Edits the user makes inside the widget (column, priority, assignees, types, due date) are already saved in Vaiz — do not repeat them. ## Reading a task -- `get_task` — full task by id or HRID. Custom field values are omitted unless `includeCustomFields: true`. +- `get_task` — full task by id or HRID. `board` / `group` are the main board; `boards` lists every board the task lives on with role `main` or `secondary`. Custom field values are omitted unless `includeCustomFields: true`. - `get_task_comments` — comment thread. - `get_task_history` — change log. - `get_board` — board structure: columns (`groups`), task types (`typesList`), custom fields. Read it before creating tasks on an unfamiliar board. -- `get_automations` — workflows configured on a board, useful to understand why a task moved or changed automatically. +- `get_automations` — automations configured on a board, useful to understand why a task moved or changed automatically (see `vaiz-automations`). ## Creating a task -`create_task` takes a `data` object. Required: `name` and `boardId`. Optional: `groupId` (defaults to the first column), `description` in Markdown, `priority` (`"0"` Low, `"1"` General, `"2"` Medium, `"3"` High, `"4"` Urgent — names are accepted too), `assignees`, `dueStart`, `dueEnd` (ISO 8601), `parentTask` for a subtask, `milestones` (not allowed on subtasks), `types` from the board's `typesList`, and `customFields`. +`create_task` takes a `data` object. Required: `name` and `boardId`. Optional: `groupId` (defaults to the first column), `description` in Markdown, `priority` (`"0"` Low, `"1"` General, `"2"` Medium, `"3"` High, `"4"` Urgent — names are accepted too), `assignees`, `followers`, `dueStart`, `dueEnd` (ISO 8601), `parentTask` for a subtask, `milestones` (not allowed on subtasks), `types` from the board's `typesList`, and `customFields`. Mentions in Markdown use `@[label](kind:id)` where kind is `user`, `task`, `document`, `milestone`, `project`, or `board`. -Before creating: search for an existing task on the same topic with `get_tasks` or `search_space`, and read `get_board` to pick a valid column and type. +Before creating: search for an existing task on the same topic with `query_tasks` or `search_space`, and read `get_board` to pick a valid column and type. To create a whole project with boards, milestones, and starter tasks at once, use `setup_space` instead (see `vaiz-projects-milestones`). ## Editing a task -`edit_task` takes a `data` object with `taskId` plus only the fields to change: `name`, `assignees` (replacement list; `[]` unassigns everyone), `completed` (`true` to close, `false` to reopen), `dueStart` / `dueEnd` (`null` clears), `priority`, `types`, `milestones` (replacement lists), `group` to move to another column, `parentTask` (id to nest, `null` to detach), `customFields`. +`edit_task` takes a `data` object with `taskId` plus only the fields to change: `name`, `assignees` (replacement list; `[]` unassigns everyone), `completed` (`true` to close, `false` to reopen), `dueStart` / `dueEnd` (`null` clears), `priority`, `types`, `milestones` (replacement lists), `group` to move to another column, `parentTask` (id to nest, `null` to detach), `coverUrl`, `customFields`. It always works on the task's main board. + +Moving a column is not a silent edit: the board's "moved to column" automations run and AI agents watching the board may start. `completed` is a separate flag — set it explicitly when the user says the task is done. + +To change the description, use `replace_document_fragment` or `edit_document_content` with the task's document id (from `get_task`); see the `vaiz-documents` skill. To discuss rather than change, add a comment with `create_comment` (`entityType: "task"`). + +## Boards: main and secondary + +A task has one main board and can also appear on secondary boards. + +- Show the task on another board too → `add_task_to_board` (optional `groupId`, first column by default). +- Take it off one of its boards → `remove_task_from_board`; the task is not deleted. +- Move it to another board → `add_task_to_board` on the target, then `remove_task_from_board` on the old one. There is no separate move tool. When the main board is removed, the task is rehomed onto the first remaining board; check `boards` in the response and tell the user which board is now main. + +Re-adding a board restores the task's previous column and milestones there. Types, custom fields, and milestones belong to a board: after a move, check them on the new main board. -To change the description, use `edit_document_content` with the task's document id (from `get_task`); see the `vaiz-documents` skill. To discuss rather than change, add a comment with `create_comment` (`entityType: "task"`). +## Connections between tasks -## Blockers +| Relationship | Use | +| --- | --- | +| Part of a bigger task | `edit_task` `parentTask` (`null` detaches) | +| Must be done before / after | `set_task_blocker` | +| Related, no order | The board's relations custom field via `edit_task` `customFields` | +| Should hear about changes | `set_followers` with `entityType: "task"` | -`set_task_blocker` toggles a blocker link between two tasks. `direction` is relative to `taskId`: `"blockers"` means `blockerTaskId` blocks `taskId`; `"blocking"` means `taskId` blocks `blockerTaskId`. Calling it again with the same arguments removes the link. +`set_task_blocker` toggles a link: `direction` is relative to `taskId` — `"blockers"` means `blockerTaskId` blocks `taskId`; `"blocking"` means `taskId` blocks `blockerTaskId`. Calling it again with the same arguments removes the link. Assignees are notified anyway; add followers only for people who are not assigned. -## Response protocol for lists +## Archiving -`get_tasks` (and other list tools) tell you in the first text block how the result was delivered: +"Remove" or "delete" a task means `set_task_archived` with `archived: true`; there is no tool that deletes a task. Restore with `archived: false` (optional `groupId` picks the column). A task on several boards cannot be archived — remove the extra boards first. Find archived tasks with `query_tasks(includeArchived: true)`. See `vaiz-safe-changes` before bulk changes. -- "rendered for the user in an interactive widget" — the user already sees the rows. Do not repeat them as a table; reply with one short sentence or answer the specific question. -- "rows follow as JSON in the next content block" — present the rows yourself as a concise table. +## AI agents -If neither phrase is present: `structuredContent` without a `data` array means a widget was rendered; with `data` means you present it. +Members with `isAgent: true` are AI agents, not people. Assigning one in `create_task` / `edit_task` starts an agent run that may change the task and spends AI credits. Tell the user it is an agent and confirm first, then report `agentInvocations` from the response (see the `vaiz-agents` skill). Never pick an agent as a fallback assignee. ## Good habits - Confirm the space with `get_space_info` when the user has several spaces; switch with `select_space` if needed. - Do not create tasks for things that belong in Space Memory (decisions, conventions) — use the `vaiz-memories` skill instead. -- Link code to the task with `link_github_entity` when a branch or PR exists (see `vaiz-github-links`). +- Link code to the task with `link_code_entity` when a branch, pull request, or merge request exists (see `vaiz-code-links`). Further reading: https://vaiz.com/help/tutorials/how-to-connect-vaiz-to-mcp · https://vaiz.com
Full technical diff · 2 changed fields
changed /description
"Find, read, create, and update Vaiz tasks and boards — filter task lists, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns, and manage blocker relationships."
"Find, show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive and restore, and manage blockers and followers."
changed /skill_md_contents
"---\nname: vaiz-tasks\ndescription: Find, read, create, and update Vaiz tasks and boards — filter task lists, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns, and manage blocker relationships.\n---\n\n# Vaiz tasks and boards\n\nTasks live on boards; boards belong to projects. A task is identified either by its 24-character database id or by its human-readable id (HRID) such as `PRJ-123`. Every task tool accepts both.\n\n## Prerequisite\n\nThe Vaiz MCP server (`https://api.vaiz.com/mcp`) must be available through the installed Vaiz plugin and authorized with OAuth. If tools are missing or return an authorization error, open the Vaiz connection and complete OAuth sign-in.\n\nVaiz tools can appear under different names depending on how Vaiz is connected: `mcp__Vaiz__get_tasks` for a directly configured MCP server, or `mcp__codex_apps__vaiz_get_tasks` (sometimes with a longer app prefix such as `vaiz_testing_`) when Vaiz is installed as an app. Match tool names case-insensitively and by the tool suffix (`get_tasks`, `query_tasks`, …), not by an exact `Vaiz` prefix. Tools may also be loaded lazily: a Vaiz tool that is not in the current tool list is not missing — load it through tool search (for example `Vaiz get_tasks`) before concluding it is unavailable. Work with Vaiz only through these tools: do not open app.vaiz.com in a browser or drive the Vaiz desktop app with Computer Use, even if the user's `@Vaiz` mention also resolves to that app.\n\n## Finding tasks\n\n- `get_tasks` — filtered list with pagination. Filters combine with AND. Useful patterns:\n - my open tasks: `assignees: [myMemberId], completed: false`\n - a board column by name across all boards: `groupLabel: \"In Progress\"`\n - epics in a project: `projectId, typeLabel: \"Epic\"`\n - unassigned: `assignees: \"empty\"`; no deadline: `dueDate: \"empty\"`; no milestone: `milestones: \"empty\"`\n - overdue: `dueBefore: <now ISO>, completed: false`\n - include archived: `includeArchived: true`\n Prefer `groupLabel` and `typeLabel` when you know names but not ids; use `groupId` / `types` when you already have ids from `get_board`.\n- `search_space` with `entityType: \"task\"` — keyword search over names and content when you do not know the HRID.\n- `get_task_context` — compact decisions, problems, risks, recent Devlogs, and GitHub links for a task (see the `vaiz-memories` skill).\n\nFind your own member id with `get_current_user`; find other members with `list_members`.\n\n## Reading a task\n\n- `get_task` — full task by id or HRID. Custom field values are omitted unless `includeCustomFields: true`.\n- `get_task_comments` — comment thread.\n- `get_task_history` — change log.\n- `get_board` — board structure: columns (`groups`), task types (`typesList`), custom fields. Read it before creating tasks on an unfamiliar board.\n- `get_automations` — workflows configured on a board, useful to understand why a task moved or changed automatically.\n\n## Creating a task\n\n`create_task` takes a `data` object. Required: `name` and `boardId`. Optional: `groupId` (defaults to the first column), `description` in Markdown, `priority` (`\"0\"` Low, `\"1\"` General, `\"2\"` Medium, `\"3\"` High, `\"4\"` Urgent — names are accepted too), `assignees`, `dueStart`, `dueEnd` (ISO 8601), `parentTask` for a subtask, `milestones` (not allowed on subtasks), `types` from the board's `typesList`, and `customFields`.\n\nMentions in Markdown use `@[label](kind:id)` where kind is `user`, `task`, `document`, `milestone`, `project`, or `board`.\n\nBefore creating: search for an existing task on the same topic with `get_tasks` or `search_space`, and read `get_board` to pick a valid column and type.\n\n## Editing a task\n\n`edit_task` takes a `data` object with `taskId` plus only the fields to change: `name`, `assignees` (replacement list; `[]` unassigns everyone), `completed` (`true` to close, `false` to reopen), `dueStart` / `dueEnd` (`null` clears), `priority`, `types`, `milestones` (replacement lists), `group` to move to another column, `parentTask` (id to nest, `null` to detach), `customFields`.\n\nTo change the description, use `edit_document_content` with the task's document id (from `get_task`); see the `vaiz-documents` skill. To discuss rather than change, add a comment with `create_comment` (`entityType: \"task\"`).\n\n## Blockers\n\n`set_task_blocker` toggles a blocker link between two tasks. `direction` is relative to `taskId`: `\"blockers\"` means `blockerTaskId` blocks `taskId`; `\"blocking\"` means `taskId` blocks `blockerTaskId`. Calling it again with the same arguments removes the link.\n\n## Response protocol for lists\n\n`get_tasks` (and other list tools) tell you in the first text block how the result was delivered:\n\n- \"rendered for the user in an interactive widget\" — the user already sees the rows. Do not repeat them as a table; reply with one short sentence or answer the specific question.\n- \"rows follow as JSON in the next content block\" — present the rows yourself as a concise table.\n\nIf neither phrase is present: `structuredContent` without a `data` array means a widget was rendered; with `data` means you present it.\n\n## Good habits\n\n- Confirm the space with `get_space_info` when the user has several spaces; switch with `select_space` if needed.\n- Do not create tasks for things that belong in Space Memory (decisions, conventions) — use the `vaiz-memories` skill instead.\n- Link code to the task with `link_github_entity` when a branch or PR exists (see `vaiz-github-links`).\n\nFurther reading: https://vaiz.com/help/tutorials/how-to-connect-vaiz-to-mcp · https://vaiz.com\n"
"---\nname: vaiz-tasks\ndescription: Find, show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive and restore, and manage blockers and followers.\n---\n\n# Vaiz tasks\n\nTasks live on boards; boards belong to projects. A task is identified either by its 24-character database id or by its human-readable id (HRID) such as `PRJ-123`. Every task tool accepts both.\n\n## Prerequisite\n\nThe Vaiz MCP server (`https://api.vaiz.com/mcp`) must be available through the installed Vaiz plugin and authorized with OAuth. If tools are missing or return an authorization error, open the Vaiz connection and complete OAuth sign-in.\n\nVaiz tools can appear under different names depending on how Vaiz is connected: `mcp__Vaiz__query_tasks` for a directly configured MCP server, or `mcp__codex_apps__vaiz_query_tasks` (sometimes with a longer app prefix such as `vaiz_testing_`) when Vaiz is installed as an app. Match tool names case-insensitively and by the tool suffix (`query_tasks`, `show_tasks`, …), not by an exact `Vaiz` prefix. Tools may also be loaded lazily: a Vaiz tool that is not in the current tool list is not missing — load it through tool search (for example `Vaiz query_tasks`) before concluding it is unavailable. Work with Vaiz only through these tools: do not open app.vaiz.com in a browser or drive the Vaiz desktop app with Computer Use, even if the user's `@Vaiz` mention also resolves to that app.\n\n## Finding tasks: `show_tasks` or `query_tasks`\n\nBoth tools take the same filters and return the same rows. Pick by who needs the rows:\n\n- **The user wants to see the list** (\"show my tasks\", \"what is in Review\") → `show_tasks`. On hosts with MCP Apps the list is rendered as an interactive widget and the rows are **not** returned to you.\n- **You need the rows** to resolve an id, count, compare, answer a question in words, or prepare another call → `query_tasks`. It never renders a widget.\n\nFilters combine with AND. Useful patterns:\n\n- my open tasks: `assignees: [myMemberId], completed: false`\n- a board column by name across all boards: `groupLabel: \"In Progress\"`\n- epics in a project: `projectId, typeLabel: \"Epic\"`\n- unassigned: `assignees: \"empty\"`; no deadline: `dueDate: \"empty\"`; no milestone: `milestones: \"empty\"`\n- overdue: `dueBefore: <today>T00:00:00Z, completed: false`\n- include archived: `includeArchived: true`\n- next page: `skip: 50, limit: 50` (max `limit` is 100)\n\nPrefer `groupLabel` and `typeLabel` when you know names but not ids; use `groupId` / `types` when you already have ids from `get_board`. When the user narrows a shown list (\"only Anna's\"), call `show_tasks` again with the matching filters instead of describing the subset in text.\n\nTo count, put every condition into the filters and read \"Found N\" from the result (`limit: 1` is enough). When all matches fit on one page, the \"Exact counts\" line splits them by assignee, priority, column, and status. Never count rows yourself. Due dates come as calendar days (`YYYY-MM-DD`); do not shift them into the user's timezone.\n\nOther ways to find a task:\n\n- `search_space` with `entityType: \"task\"` — keyword search over names and content when you do not know the HRID.\n- `get_task_context` — compact decisions, problems, risks, recent Devlogs, and code links for a task (see the `vaiz-memories` skill).\n\nFind your own member id with `get_current_user`; resolve other people with `query_members`.\n\n## Response protocol for `show_*` lists\n\nThe first text block (and `structuredContent.instruction`) tells you how the result was delivered:\n\n- \"rendered for the user in an interactive widget\" — the user already sees the rows. Do not repeat them as a table or list, not even a subset; reply with one short sentence or answer the specific question.\n- \"rows follow as JSON in the next content block\" — there is no widget; present the rows yourself as a concise table.\n\nIf neither phrase is present: `structuredContent` without a `data` array means a widget was rendered; with `data` means you present it. Edits the user makes inside the widget (column, priority, assignees, types, due date) are already saved in Vaiz — do not repeat them.\n\n## Reading a task\n\n- `get_task` — full task by id or HRID. `board` / `group` are the main board; `boards` lists every board the task lives on with role `main` or `secondary`. Custom field values are omitted unless `includeCustomFields: true`.\n- `get_task_comments` — comment thread.\n- `get_task_history` — change log.\n- `get_board` — board structure: columns (`groups`), task types (`typesList`), custom fields. Read it before creating tasks on an unfamiliar board.\n- `get_automations` — automations configured on a board, useful to understand why a task moved or changed automatically (see `vaiz-automations`).\n\n## Creating a task\n\n`create_task` takes a `data` object. Required: `name` and `boardId`. Optional: `groupId` (defaults to the first column), `description` in Markdown, `priority` (`\"0\"` Low, `\"1\"` General, `\"2\"` Medium, `\"3\"` High, `\"4\"` Urgent — names are accepted too), `assignees`, `followers`, `dueStart`, `dueEnd` (ISO 8601), `parentTask` for a subtask, `milestones` (not allowed on subtasks), `types` from the board's `typesList`, and `customFields`.\n\nMentions in Markdown use `@[label](kind:id)` where kind is `user`, `task`, `document`, `milestone`, `project`, or `board`.\n\nBefore creating: search for an existing task on the same topic with `query_tasks` or `search_space`, and read `get_board` to pick a valid column and type. To create a whole project with boards, milestones, and starter tasks at once, use `setup_space` instead (see `vaiz-projects-milestones`).\n\n## Editing a task\n\n`edit_task` takes a `data` object with `taskId` plus only the fields to change: `name`, `assignees` (replacement list; `[]` unassigns everyone), `completed` (`true` to close, `false` to reopen), `dueStart` / `dueEnd` (`null` clears), `priority`, `types`, `milestones` (replacement lists), `group` to move to another column, `parentTask` (id to nest, `null` to detach), `coverUrl`, `customFields`. It always works on the task's main board.\n\nMoving a column is not a silent edit: the board's \"moved to column\" automations run and AI agents watching the board may start. `completed` is a separate flag — set it explicitly when the user says the task is done.\n\nTo change the description, use `replace_document_fragment` or `edit_document_content` with the task's document id (from `get_task`); see the `vaiz-documents` skill. To discuss rather than change, add a comment with `create_comment` (`entityType: \"task\"`).\n\n## Boards: main and secondary\n\nA task has one main board and can also appear on secondary boards.\n\n- Show the task on another board too → `add_task_to_board` (optional `groupId`, first column by default).\n- Take it off one of its boards → `remove_task_from_board`; the task is not deleted.\n- Move it to another board → `add_task_to_board` on the target, then `remove_task_from_board` on the old one. There is no separate move tool. When the main board is removed, the task is rehomed onto the first remaining board; check `boards` in the response and tell the user which board is now main.\n\nRe-adding a board restores the task's previous column and milestones there. Types, custom fields, and milestones belong to a board: after a move, check them on the new main board.\n\n## Connections between tasks\n\n| Relationship | Use |\n| --- | --- |\n| Part of a bigger task | `edit_task` `parentTask` (`null` detaches) |\n| Must be done before / after | `set_task_blocker` |\n| Related, no order | The board's relations custom field via `edit_task` `customFields` |\n| Should hear about changes | `set_followers` with `entityType: \"task\"` |\n\n`set_task_blocker` toggles a link: `direction` is relative to `taskId` — `\"blockers\"` means `blockerTaskId` blocks `taskId`; `\"blocking\"` means `taskId` blocks `blockerTaskId`. Calling it again with the same arguments removes the link. Assignees are notified anyway; add followers only for people who are not assigned.\n\n## Archiving\n\n\"Remove\" or \"delete\" a task means `set_task_archived` with `archived: true`; there is no tool that deletes a task. Restore with `archived: false` (optional `groupId` picks the column). A task on several boards cannot be archived — remove the extra boards first. Find archived tasks with `query_tasks(includeArchived: true)`. See `vaiz-safe-changes` before bulk changes.\n\n## AI agents\n\nMembers with `isAgent: true` are AI agents, not people. Assigning one in `create_task` / `edit_task` starts an agent run that may change the task and spends AI credits. Tell the user it is an agent and confirm first, then report `agentInvocations` from the response (see the `vaiz-agents` skill). Never pick an agent as a fallback assignee.\n\n## Good habits\n\n- Confirm the space with `get_space_info` when the user has several spaces; switch with `select_space` if needed.\n- Do not create tasks for things that belong in Space Memory (decisions, conventions) — use the `vaiz-memories` skill instead.\n- Link code to the task with `link_code_entity` when a branch, pull request, or merge request exists (see `vaiz-code-links`).\n\nFurther reading: https://vaiz.com/help/tutorials/how-to-connect-vaiz-to-mcp · https://vaiz.com\n"
Full snapshot data
{
"description": "Find, show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive and restore, and manage blockers and followers.",
"included_files": [],
"name": "vaiz-tasks",
"skill_md_contents": "---\nname: vaiz-tasks\ndescription: Find, show, read, create, and update Vaiz tasks — show task lists as a widget or query them as data, inspect a task with its comments and history, create tasks with Markdown descriptions, edit fields, move between columns and boards, archive and restore, and manage blockers and followers.\n---\n\n# Vaiz tasks\n\nTasks live on boards; boards belong to projects. A task is identified either by its 24-character database id or by its human-readable id (HRID) such as `PRJ-123`. Every task tool accepts both.\n\n## Prerequisite\n\nThe Vaiz MCP server (`https://api.vaiz.com/mcp`) must be available through the installed Vaiz plugin and authorized with OAuth. If tools are missing or return an authorization error, open the Vaiz connection and complete OAuth sign-in.\n\nVaiz tools can appear under different names depending on how Vaiz is connected: `mcp__Vaiz__query_tasks` for a directly configured MCP server, or `mcp__codex_apps__vaiz_query_tasks` (sometimes with a longer app prefix such as `vaiz_testing_`) when Vaiz is installed as an app. Match tool names case-insensitively and by the tool suffix (`query_tasks`, `show_tasks`, …), not by an exact `Vaiz` prefix. Tools may also be loaded lazily: a Vaiz tool that is not in the current tool list is not missing — load it through tool search (for example `Vaiz query_tasks`) before concluding it is unavailable. Work with Vaiz only through these tools: do not open app.vaiz.com in a browser or drive the Vaiz desktop app with Computer Use, even if the user's `@Vaiz` mention also resolves to that app.\n\n## Finding tasks: `show_tasks` or `query_tasks`\n\nBoth tools take the same filters and return the same rows. Pick by who needs the rows:\n\n- **The user wants to see the list** (\"show my tasks\", \"what is in Review\") → `show_tasks`. On hosts with MCP Apps the list is rendered as an interactive widget and the rows are **not** returned to you.\n- **You need the rows** to resolve an id, count, compare, answer a question in words, or prepare another call → `query_tasks`. It never renders a widget.\n\nFilters combine with AND. Useful patterns:\n\n- my open tasks: `assignees: [myMemberId], completed: false`\n- a board column by name across all boards: `groupLabel: \"In Progress\"`\n- epics in a project: `projectId, typeLabel: \"Epic\"`\n- unassigned: `assignees: \"empty\"`; no deadline: `dueDate: \"empty\"`; no milestone: `milestones: \"empty\"`\n- overdue: `dueBefore: <today>T00:00:00Z, completed: false`\n- include archived: `includeArchived: true`\n- next page: `skip: 50, limit: 50` (max `limit` is 100)\n\nPrefer `groupLabel` and `typeLabel` when you know names but not ids; use `groupId` / `types` when you already have ids from `get_board`. When the user narrows a shown list (\"only Anna's\"), call `show_tasks` again with the matching filters instead of describing the subset in text.\n\nTo count, put every condition into the filters and read \"Found N\" from the result (`limit: 1` is enough). When all matches fit on one page, the \"Exact counts\" line splits them by assignee, priority, column, and status. Never count rows yourself. Due dates come as calendar days (`YYYY-MM-DD`); do not shift them into the user's timezone.\n\nOther ways to find a task:\n\n- `search_space` with `entityType: \"task\"` — keyword search over names and content when you do not know the HRID.\n- `get_task_context` — compact decisions, problems, risks, recent Devlogs, and code links for a task (see the `vaiz-memories` skill).\n\nFind your own member id with `get_current_user`; resolve other people with `query_members`.\n\n## Response protocol for `show_*` lists\n\nThe first text block (and `structuredContent.instruction`) tells you how the result was delivered:\n\n- \"rendered for the user in an interactive widget\" — the user already sees the rows. Do not repeat them as a table or list, not even a subset; reply with one short sentence or answer the specific question.\n- \"rows follow as JSON in the next content block\" — there is no widget; present the rows yourself as a concise table.\n\nIf neither phrase is present: `structuredContent` without a `data` array means a widget was rendered; with `data` means you present it. Edits the user makes inside the widget (column, priority, assignees, types, due date) are already saved in Vaiz — do not repeat them.\n\n## Reading a task\n\n- `get_task` — full task by id or HRID. `board` / `group` are the main board; `boards` lists every board the task lives on with role `main` or `secondary`. Custom field values are omitted unless `includeCustomFields: true`.\n- `get_task_comments` — comment thread.\n- `get_task_history` — change log.\n- `get_board` — board structure: columns (`groups`), task types (`typesList`), custom fields. Read it before creating tasks on an unfamiliar board.\n- `get_automations` — automations configured on a board, useful to understand why a task moved or changed automatically (see `vaiz-automations`).\n\n## Creating a task\n\n`create_task` takes a `data` object. Required: `name` and `boardId`. Optional: `groupId` (defaults to the first column), `description` in Markdown, `priority` (`\"0\"` Low, `\"1\"` General, `\"2\"` Medium, `\"3\"` High, `\"4\"` Urgent — names are accepted too), `assignees`, `followers`, `dueStart`, `dueEnd` (ISO 8601), `parentTask` for a subtask, `milestones` (not allowed on subtasks), `types` from the board's `typesList`, and `customFields`.\n\nMentions in Markdown use `@[label](kind:id)` where kind is `user`, `task`, `document`, `milestone`, `project`, or `board`.\n\nBefore creating: search for an existing task on the same topic with `query_tasks` or `search_space`, and read `get_board` to pick a valid column and type. To create a whole project with boards, milestones, and starter tasks at once, use `setup_space` instead (see `vaiz-projects-milestones`).\n\n## Editing a task\n\n`edit_task` takes a `data` object with `taskId` plus only the fields to change: `name`, `assignees` (replacement list; `[]` unassigns everyone), `completed` (`true` to close, `false` to reopen), `dueStart` / `dueEnd` (`null` clears), `priority`, `types`, `milestones` (replacement lists), `group` to move to another column, `parentTask` (id to nest, `null` to detach), `coverUrl`, `customFields`. It always works on the task's main board.\n\nMoving a column is not a silent edit: the board's \"moved to column\" automations run and AI agents watching the board may start. `completed` is a separate flag — set it explicitly when the user says the task is done.\n\nTo change the description, use `replace_document_fragment` or `edit_document_content` with the task's document id (from `get_task`); see the `vaiz-documents` skill. To discuss rather than change, add a comment with `create_comment` (`entityType: \"task\"`).\n\n## Boards: main and secondary\n\nA task has one main board and can also appear on secondary boards.\n\n- Show the task on another board too → `add_task_to_board` (optional `groupId`, first column by default).\n- Take it off one of its boards → `remove_task_from_board`; the task is not deleted.\n- Move it to another board → `add_task_to_board` on the target, then `remove_task_from_board` on the old one. There is no separate move tool. When the main board is removed, the task is rehomed onto the first remaining board; check `boards` in the response and tell the user which board is now main.\n\nRe-adding a board restores the task's previous column and milestones there. Types, custom fields, and milestones belong to a board: after a move, check them on the new main board.\n\n## Connections between tasks\n\n| Relationship | Use |\n| --- | --- |\n| Part of a bigger task | `edit_task` `parentTask` (`null` detaches) |\n| Must be done before / after | `set_task_blocker` |\n| Related, no order | The board's relations custom field via `edit_task` `customFields` |\n| Should hear about changes | `set_followers` with `entityType: \"task\"` |\n\n`set_task_blocker` toggles a link: `direction` is relative to `taskId` — `\"blockers\"` means `blockerTaskId` blocks `taskId`; `\"blocking\"` means `taskId` blocks `blockerTaskId`. Calling it again with the same arguments removes the link. Assignees are notified anyway; add followers only for people who are not assigned.\n\n## Archiving\n\n\"Remove\" or \"delete\" a task means `set_task_archived` with `archived: true`; there is no tool that deletes a task. Restore with `archived: false` (optional `groupId` picks the column). A task on several boards cannot be archived — remove the extra boards first. Find archived tasks with `query_tasks(includeArchived: true)`. See `vaiz-safe-changes` before bulk changes.\n\n## AI agents\n\nMembers with `isAgent: true` are AI agents, not people. Assigning one in `create_task` / `edit_task` starts an agent run that may change the task and spends AI credits. Tell the user it is an agent and confirm first, then report `agentInvocations` from the response (see the `vaiz-agents` skill). Never pick an agent as a fallback assignee.\n\n## Good habits\n\n- Confirm the space with `get_space_info` when the user has several spaces; switch with `select_space` if needed.\n- Do not create tasks for things that belong in Space Memory (decisions, conventions) — use the `vaiz-memories` skill instead.\n- Link code to the task with `link_code_entity` when a branch, pull request, or merge request exists (see `vaiz-code-links`).\n\nFurther reading: https://vaiz.com/help/tutorials/how-to-connect-vaiz-to-mcp · https://vaiz.com\n"
}SHA-256 of public snapshot: 386146bb19bffe296e0eb461a9f83a83f5a85d7b662c269e5604db87f0697413