
get-wrike-tasks
by DBS-Dev2000
Version-controlled repository for Claude Code and Claude Desktop agents and skills
SKILL.md
name: get-wrike-tasks description: Fetches active Wrike tasks and categorizes by workflow status. CRITICAL - Always fetch workflows FIRST to map customStatusId to status names. Never use dates.type for categorization. Triggers on "Get my Wrike tasks", "What tasks do I have in Wrike?", "Update Wrike section in briefing entry [id]". Called by briefing-generator after get-teams-action-items. Transitions Phase from 4-Wrike to 5-Summary.
Get Wrike Tasks
Retrieves active Wrike tasks categorized by workflow status.
⚠️ CRITICAL: Workflow Status vs Planning Type
MANDATORY FIRST STEP: Always fetch workflows using wrike_get_workflows to map customStatusId to actual status names.
| Concept | Field | Values | Use For |
|---|---|---|---|
| Workflow Status | customStatusId | In Progress, Review, On Hold, etc. | Categorization ✅ |
| Planning Type | dates.type | Backlog, Planned, Milestone | Scheduling only ❌ |
A task can be "In Progress" (workflow) AND "Backlog" (planning) simultaneously. ALWAYS categorize by customStatusId → workflow status name. NEVER by dates.type.
Input Parameters
| Parameter | Required | Format | Description |
|---|---|---|---|
| entry_id | Yes | UUID | Notion page ID of briefing entry |
| date | Yes | YYYY-MM-DD | Briefing date |
| include_completed | No | Boolean | Include recently completed (default: false) |
Execution Workflow
Step 1: Fetch Workflows (MANDATORY FIRST)
Tool: wrike:wrike_get_workflows
Build status map from response:
const statusMap = {};
workflows.forEach(wf => {
wf.customStatuses.forEach(s => {
statusMap[s.id] = { name: s.name, color: s.color };
});
});
// Result: { "JMABC123": { name: "In Progress", ... }, ... }
If workflow fetch fails → Return critical error, do NOT proceed.
Step 2: Get User Contact ID
Tool: wrike:wrike_get_my_contact_id
Step 3: Fetch Active Tasks
Tool: wrike:wrike_search_tasks
{
"status": ["Active"],
"responsibles": ["[current_user_contact_id]"],
"fields": ["parentIds", "superParentIds", "responsibleIds", "description", "customFields"],
"sortField": "DueDate",
"sortOrder": "Asc"
}
Step 4: Categorize by Workflow Status
function categorizeTask(task, statusMap) {
const statusInfo = statusMap[task.customStatusId];
if (!statusInfo) return 'backlog'; // Unknown status
const name = statusInfo.name.toLowerCase();
if (name.includes('in progress') || name.includes('working')) return 'in_progress';
if (name.includes('review') || name.includes('testing')) return 'review';
if (name.includes('on hold') || name.includes('blocked')) return 'on_hold';
if (name.includes('awaiting') || name.includes('feedback')) return 'awaiting_feedback';
return 'backlog'; // Default: backlog, todo, submitted, etc.
}
Step 5: Format Output
Property format (pipe-separated, top 5):
Kraken Phase 3 Implementation | PromoStandards Integration | AccuZIP Compliance
Content format:
### 🔴 In Progress
| Task | Due | Link |
|------|-----|------|
| Kraken Mailing Phase 3 ⚠️ | 2026-01-20 | [View](https://www.wrike.com/open.htm?id=...) |
| PromoStandards API Integration | 2026-01-18 | [View](...) |
### 🟡 Final Review in Production
| Task | Link |
|------|------|
| AccuZIP Integration Testing | [View](...) |
### 🟠 On Hold
| Task | Link |
|------|------|
| Legacy Migration | [View](...) |
### 🔵 Awaiting Feedback
| Task | Link |
|------|------|
| Client Approval - Dashboard | [View](...) |
### 📋 Submitted/Backlog
| Task | Link |
|------|------|
| Documentation Updates | [View](...) |
Add ⚠️ for overdue tasks (due date < today).
Step 6: Update Notion
Tool: notion_update_page_properties
{
"page_id": "entry_id",
"command": "update_properties",
"properties": {
"Wrike Tasks Summary": "Kraken Phase 3 | PromoStandards | AccuZIP",
"Active Task Count": 23,
"Overdue Task Count": 2,
"Phase": "5-Summary"
}
}
Output Format
{
"success": true,
"entry_id": "...",
"date": "2026-01-14",
"total_tasks": 23,
"overdue_count": 2,
"categories": {
"in_progress": 5,
"review": 3,
"on_hold": 2,
"awaiting_feedback": 4,
"backlog": 9
},
"workflows_loaded": 2,
"errors": []
}
Error Handling
| Code | Description | Severity | Action |
|---|---|---|---|
| WRIKE001 | Workflow fetch failed | CRITICAL | STOP - Do not proceed |
| WRIKE002 | Unknown customStatusId | Warning | Place task in backlog |
| WRIKE003 | Task fetch failed | Critical | Fail with error |
| NOTION001 | Entry not found | Critical | Fail with error |
Configuration
const CONFIG = {
status_filter: ["Active"],
category_patterns: {
in_progress: ["in progress", "working", "development", "doing"],
review: ["review", "testing", "qa", "approval"],
on_hold: ["on hold", "blocked", "paused"],
awaiting_feedback: ["awaiting", "feedback", "waiting", "pending"],
backlog: ["backlog", "todo", "submitted", "planned", "not started"]
},
max_tasks_per_category: 10
};
⛔ MANDATORY: SAVE BEFORE COMPLETING
This skill is NOT complete until data is SAVED to Notion.
DO NOT return success until notion_update_page_properties succeeds.
Unsaved data WILL BE LOST on context compaction.
Integration
- Called by: briefing-generator orchestrator after get-teams-action-items
- Followed by: generate-briefing-summary (Phase 6)
- API calls: 5 (workflows, contact ID, tasks, 2 Notion)
- Expected time: 8-15 seconds
- ⛔ MUST SAVE: Wrike tasks to Notion BEFORE returning
Critical Reminder
// ❌ WRONG - NEVER DO THIS
if (task.dates.type === 'Backlog') return 'backlog';
// ✅ CORRECT - ALWAYS DO THIS
const statusName = statusMap[task.customStatusId].name;
if (statusName.includes('In Progress')) return 'in_progress';
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon