スキル一覧に戻る
DBS-Dev2000

get-wrike-tasks

by DBS-Dev2000

Version-controlled repository for Claude Code and Claude Desktop agents and skills

0🍴 0📅 2026年1月25日
GitHubで見るManusで実行

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.

ConceptFieldValuesUse For
Workflow StatuscustomStatusIdIn Progress, Review, On Hold, etc.Categorization ✅
Planning Typedates.typeBacklog, Planned, MilestoneScheduling 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

ParameterRequiredFormatDescription
entry_idYesUUIDNotion page ID of briefing entry
dateYesYYYY-MM-DDBriefing date
include_completedNoBooleanInclude 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

CodeDescriptionSeverityAction
WRIKE001Workflow fetch failedCRITICALSTOP - Do not proceed
WRIKE002Unknown customStatusIdWarningPlace task in backlog
WRIKE003Task fetch failedCriticalFail with error
NOTION001Entry not foundCriticalFail 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';

スコア

総合スコア

45/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

0/5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です