From cowork-tasks
Opens the Cowork Tasks live artifact kanban board inside Claude Cowork's Live Artifacts tab. Use when the user asks to open, show, or check their board, kanban, tasks, or inbox.
npx claudepluginhub sabbah13/cowork-tasks --plugin cowork-tasksThis skill uses the workspace's default tool permissions.
Always reuse the same artifact id. The flow has no failed steps in any path.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Always reuse the same artifact id. The flow has no failed steps in any path.
| Field | Value |
|---|---|
| Artifact id | cowork-tasks |
| Artifact name | Cowork Tasks |
| Output filename | cowork-tasks-board.html |
Pick the session output path (the writable directory Cowork exposes for generated files). Build:
<outputs>/cowork-tasks-board.html
Write the HTML (one MCP call):
cowork-tasks:prepare_board_artifact { "outPath": "<outputs>/cowork-tasks-board.html" }
Returns {path, bytes, tasks, version, pluginVersion}. The HTML is on
disk; the response does NOT include the body.
Optional version check (cached):
cowork-tasks:check_version { }
List artifacts:
cowork.list_artifacts { }
Look for id == "cowork-tasks".
If the list is non-empty, derive artifactsDir from any returned path:
it's the parent directory of the per-artifact folder. For example,
/Users/foo/Documents/Claude/Artifacts/some-id/index.html →
artifactsDir = /Users/foo/Documents/Claude/Artifacts.
Branch on existence:
cowork-tasks IS in the manifestUpdate directly:
cowork.update_artifact {
"id": "cowork-tasks",
"html_path": "<outputs>/cowork-tasks-board.html"
}
Done. Total: 4 tool calls.
cowork-tasks is NOT in the manifestCowork's UI deletes manifest entries but leaves folders on disk. Proactively clear any stale folder before create. The tool no-ops cleanly when nothing exists:
cowork-tasks:clear_artifact_folder {
"artifactsDir": "<derived-dir>",
"id": "cowork-tasks"
}
Returns {existed, deleted, path}. Either result is fine - no error.
Then create:
cowork.create_artifact {
"id": "cowork-tasks",
"name": "Cowork Tasks",
"html_path": "<outputs>/cowork-tasks-board.html"
}
Done. Total: 5 tool calls, all successful.
Confirm in one short sentence:
Board's open with N tasks loaded.
If check_version reported outdated: true, append " (vX.Y.Z available
/plugin update cowork-tasks to refresh)".cowork-tasks-board,
tasks-board-v2, or anything date-stamped. Always cowork-tasks.create_artifact without first calling
clear_artifact_folder when the id is not in the manifest. That
produces a guaranteed "folder already exists" error if the user has
ever opened the board before.clear_artifact_folder tool exists for exactly that reason.prepare_board_artifact without outPath.| Path | Calls | Sequence |
|---|---|---|
| Update existing | 4 | prepare, check_version, list_artifacts, update_artifact |
| Fresh create | 5 | prepare, check_version, list_artifacts, clear_artifact_folder, create_artifact |