Agent Skills: wrike

Wrike API for project management. Use when user mentions "Wrike", "wrike.com",

UncategorizedID: vm0-ai/vm0-skills/wrike

Install this agent skill to your local

pnpm dlx add-skill https://github.com/vm0-ai/vm0-skills/tree/HEAD/wrike

Skill Files

Browse the full folder contents for wrike.

Download Skill

Loading file tree…

wrike/SKILL.md

Skill Metadata

Name
wrike
Description
Wrike API for project management. Use when user mentions "Wrike", "wrike.com",

Troubleshooting

If requests fail, run zero doctor check-connector --env-name WRIKE_TOKEN or zero doctor check-connector --url https://www.wrike.com/api/v4/spaces --method GET

How to Use

All examples below assume you have WRIKE_TOKEN set.

Base URL: https://www.wrike.com/api/v4

Wrike uses alphanumeric IDs for all resources. The hierarchy is: Space > Folder/Project > Task. Projects are folders with additional properties (owners, start/end dates, status). All responses follow the format {"kind": "...", "data": [...]}.

Spaces

List All Spaces

curl -s "https://www.wrike.com/api/v4/spaces" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, title}'

Get Space by ID

curl -s "https://www.wrike.com/api/v4/spaces/<space_id>" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[0]'

Create Space

Write to /tmp/wrike_request.json:

{
  "title": "New Space"
}
curl -s -X POST "https://www.wrike.com/api/v4/spaces" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title}'

Delete Space

curl -s -X DELETE "https://www.wrike.com/api/v4/spaces/<space_id>" --header "Authorization: Bearer $WRIKE_TOKEN"

Folders & Projects

Get Folder Tree

curl -s "https://www.wrike.com/api/v4/folders" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, title, scope}'

Get Folders in a Space

curl -s "https://www.wrike.com/api/v4/spaces/<space_id>/folders" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, title, childIds}'

Get Subfolders

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>/folders" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, title}'

Get Folder by ID

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[0]'

Create Folder

Write to /tmp/wrike_request.json:

{
  "title": "New Folder"
}
curl -s -X POST "https://www.wrike.com/api/v4/folders/<parent_folder_id>/folders" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title}'

Create Project

Write to /tmp/wrike_request.json:

{
  "title": "New Project",
  "project": {
    "status": "Green",
    "startDate": "2026-04-01",
    "endDate": "2026-06-30"
  }
}
curl -s -X POST "https://www.wrike.com/api/v4/folders/<parent_folder_id>/folders" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title, project}'

Update Folder

Write to /tmp/wrike_request.json:

{
  "title": "Updated Folder Name"
}
curl -s -X PUT "https://www.wrike.com/api/v4/folders/<folder_id>" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title}'

Delete Folder

curl -s -X DELETE "https://www.wrike.com/api/v4/folders/<folder_id>" --header "Authorization: Bearer $WRIKE_TOKEN"

Tasks

List Tasks in a Folder

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>/tasks" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, title, status, importance, dates}'

List Tasks in a Space

curl -s "https://www.wrike.com/api/v4/spaces/<space_id>/tasks" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, title, status, importance}'

Get Task by ID

curl -s "https://www.wrike.com/api/v4/tasks/<task_id>" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[0] | {id, title, description, status, importance, dates, responsibleIds}'

Create Task

Write to /tmp/wrike_request.json:

{
  "title": "New Task",
  "description": "Task description here",
  "status": "Active",
  "importance": "Normal",
  "dates": {
    "start": "2026-04-01",
    "due": "2026-04-15"
  },
  "responsibles": ["<contact_id>"]
}
curl -s -X POST "https://www.wrike.com/api/v4/folders/<folder_id>/tasks" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title, status}'

Update Task

Write to /tmp/wrike_request.json:

{
  "title": "Updated Task Name",
  "status": "Completed",
  "importance": "High"
}
curl -s -X PUT "https://www.wrike.com/api/v4/tasks/<task_id>" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title, status}'

Delete Task

curl -s -X DELETE "https://www.wrike.com/api/v4/tasks/<task_id>" --header "Authorization: Bearer $WRIKE_TOKEN"

Comments

List Comments on a Task

curl -s "https://www.wrike.com/api/v4/tasks/<task_id>/comments" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, text, authorId, createdDate}'

List Comments on a Folder

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>/comments" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, text, authorId, createdDate}'

Create Comment on a Task

Write to /tmp/wrike_request.json:

{
  "text": "This is a comment on the task."
}
curl -s -X POST "https://www.wrike.com/api/v4/tasks/<task_id>/comments" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0]'

Update Comment

Write to /tmp/wrike_request.json:

{
  "text": "Updated comment text."
}
curl -s -X PUT "https://www.wrike.com/api/v4/comments/<comment_id>" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0]'

Delete Comment

curl -s -X DELETE "https://www.wrike.com/api/v4/comments/<comment_id>" --header "Authorization: Bearer $WRIKE_TOKEN"

Contacts

List All Contacts

curl -s "https://www.wrike.com/api/v4/contacts" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, firstName, lastName, type, profiles}'

Get Contact by ID

curl -s "https://www.wrike.com/api/v4/contacts/<contact_id>" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[0]'

Timelogs

List Timelogs for a Task

curl -s "https://www.wrike.com/api/v4/tasks/<task_id>/timelogs" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, taskId, hours, trackedDate, comment}'

Create Timelog

Write to /tmp/wrike_request.json:

{
  "hours": 2.5,
  "trackedDate": "2026-04-01",
  "comment": "Working on implementation"
}
curl -s -X POST "https://www.wrike.com/api/v4/tasks/<task_id>/timelogs" --header "Authorization: Bearer $WRIKE_TOKEN" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, hours, trackedDate}'

Delete Timelog

curl -s -X DELETE "https://www.wrike.com/api/v4/timelogs/<timelog_id>" --header "Authorization: Bearer $WRIKE_TOKEN"

Workflows

List Workflows

curl -s "https://www.wrike.com/api/v4/workflows" --header "Authorization: Bearer $WRIKE_TOKEN" | jq '.data[] | {id, name, customStatuses}'

Guidelines

  1. Wrike uses alphanumeric string IDs for all resources. Use jq to extract id and title fields.
  2. The resource hierarchy is: Space > Folder/Project > Task. Projects are folders with additional properties (owners, start/end dates, status).
  3. Task statuses include Active, Completed, Deferred, Cancelled, and custom statuses defined in workflows.
  4. Importance values: High, Normal, Low.
  5. Dates use YYYY-MM-DD format (e.g., 2026-04-01).
  6. All responses follow the format {"kind": "...", "data": [...]}. The data field is always an array.
  7. You can query up to 100 resources by ID in a single request using comma-separated IDs (e.g., /tasks/id1,id2,id3).
  8. Write request bodies to /tmp/wrike_request.json before sending.
  9. Rate limits: Wrike allows 400 requests per minute per access token. Back off on 429 responses.
  10. Use <placeholder> for dynamic IDs that the user must replace (e.g., <task_id>, <folder_id>).