← VaizCONTENT HISTORY

Update to Vaiz

Snapshot Oct 27, 2026 · 00:52 UTC · version 1.1.0

Collection source: downloaded plugin package.

WHAT CHANGED

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.

Save Vaiz and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

Full description

Before

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.

After

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

Before

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 ...

After

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 JSON

SKILL.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

BEFORE
"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."
AFTER
"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

BEFORE
"---\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"
AFTER
"---\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