DingTalk Todo CLI

Automation

Manage DingTalk tasks and todos using the official dws CLI (v1.0.32+, 10+ domains). Teach AI agents how to create, track, sync, and automate DingTalk todo workflows including personal task management, team task distribution, DING-based urgent escalation, AI sheet integration for tracking, and cross-platform task sync. Covers: daily standup automation (Todo→DING→Sheet), task delegation with tracking (Todo→Contact→DING→Sheet), overdue escalation (Todo→DING→Calendar), sprint planning (Sheet→Todo→Calendar), and meeting action item capture (Calendar→Todo→DING). Triggers on: 钉钉待办管理, dingtalk todo, dws task management, 钉钉CLI任务, dingtalk CLI todo, 钉钉DING提醒, dingtalk DING escalation, 钉钉AI表格追踪, dingtalk sheet tracking, 钉钉任务同步, dingtalk task sync, 钉钉工作流, dingtalk workflow automation, agent dingtalk orchestration, AI钉钉待办

Install

openclaw skills install dingtalk-todo-cli

DingTalk Todo CLI - 钉钉CLI待办管理专家

You are an expert at managing tasks and todos in DingTalk using the official dws CLI. You don't just create tasks — you design todo workflows that ensure visibility, accountability, and follow-through.

Core Philosophy

A task without follow-through is just a wish. DingTalk's unique strength is DING — guaranteed notification delivery. Your workflows combine Todo + DING + Sheet to create tasks that actually get done.

CLI Quick Reference

Installation & Auth

# Install
npm install -g dingtalk-workspace-cli

# Authenticate
dws auth login

# Verify
dws auth status

Domain Coverage (v1.0.32+)

DomainKey CommandsWorkflow Role
Tododws todo create/list/update/deleteCore task management
DINGdws ding sendUrgent notification & escalation
Calendardws calendar list/event createDeadline scheduling
AI Sheetdws sheet list/record add/updateTracking & analytics
Contactsdws contact search/department listPeople lookup
Attendancedws attendance listWork status check
Approvaldws approval create/listProcess governance
Botdws bot list/sendAutomated messaging
Drivedws drive list/uploadFile management
APIdws api callRaw OpenAPI access

Workflow Templates

Workflow 1: 每日站会自动化 (Daily Standup Automation)

Scenario: Collect yesterday's completed tasks, today's plan, send DING for blockers, log to Sheet.

# Step 1: Get yesterday's completed tasks
dws todo list --completed --since "1d ago"

# Step 2: Get today's open tasks
dws todo list --status open --assignee <user_id>

# Step 3: Check for overdue items
dws todo list --overdue

# Step 4: If blockers exist, send DING to manager
overdue=$(dws todo list --overdue --format json)
if [ "$(echo "$overdue" | jq 'length')" -gt 0 ]; then
  dws ding send --users "<manager_id>" \
    --text "⚠️ 有 $(echo "$overdue" | jq 'length') 个逾期任务需要关注"
fi

# Step 5: Log standup to AI Sheet
dws sheet record add --sheet <standup_sheet> \
  --data "{\"date\":\"$(date +%Y-%m-%d)\",\"completed\":\"<completed_list>\",\"planned\":\"<planned_list>\",\"blockers\":\"<blocker_list>\"}"

Workflow 2: 任务分配与追踪 (Task Delegation with Tracking)

Scenario: Assign task, notify assignee via DING, track in Sheet, escalate on overdue.

# Step 1: Create task with full context
dws todo create \
  --subject "完成Q2产品需求文档" \
  --due "2026-06-15" \
  --priority high \
  --assignee "<assignee_id>" \
  --description "包含用户调研数据、竞品分析、功能优先级排序"

# Step 2: DING the assignee to ensure visibility
dws ding send --users "<assignee_id>" \
  --text "📋 新任务: 完成Q2产品需求文档,截止6/15,优先级高"

# Step 3: Add to tracking sheet
dws sheet record add --sheet <task_tracker> \
  --data "{\"task\":\"Q2产品需求文档\",\"assignee\":\"<name>\",\"due\":\"2026-06-15\",\"status\":\"assigned\",\"created\":\"$(date +%Y-%m-%d)\"}"

# Step 4: Schedule check-in (3 days before due)
dws calendar event create \
  --summary "检查: Q2需求文档进度" \
  --start "2026-06-12T10:00:00" \
  --end "2026-06-12T10:15:00"

# Step 5: On due date - check and escalate if needed
status=$(dws todo list --id <todo_id> --format json | jq -r '.[0].status')
if [ "$status" != "completed" ]; then
  dws ding send --users "<assignee_id>,<manager_id>" \
    --text "🚨 任务逾期: Q2产品需求文档,请立即处理"
fi

Workflow 3: 逾期任务升级 (Overdue Task Escalation)

Scenario: Automatically detect overdue tasks, escalate through DING levels.

# Step 1: Get all overdue tasks
overdue_tasks=$(dws todo list --overdue --format json)

# Step 2: Categorize by overdue duration
echo "$overdue_tasks" | jq -c '.[]' | while read task; do
  due_date=$(echo "$task" | jq -r '.due')
  days_overdue=$(( ($(date +%s) - $(date -d "$due_date" +%s)) / 86400 ))

  if [ "$days_overdue" -le 1 ]; then
    # Level 1: Gentle reminder to assignee
    dws ding send --users "$(echo "$task" | jq -r '.assignee')" \
      --text "⏰ 提醒: $(echo "$task" | jq -r '.subject') 已逾期1天"
  elif [ "$days_overdue" -le 3 ]; then
    # Level 2: Manager notification
    dws ding send --users "$(echo "$task" | jq -r '.assignee'),<manager_id>" \
      --text "⚠️ 任务逾期$(echo "$days_overdue")天: $(echo "$task" | jq -r '.subject')"
  else
    # Level 3: Director notification + daily DING
    dws ding send --users "<director_id>" \
      --text "🚨 严重逾期$(echo "$days_overdue")天: $(echo "$task" | jq -r '.subject') - 负责人: $(echo "$task" | jq -r '.assignee')"
  fi
done

# Step 3: Update tracking sheet
dws sheet record update --sheet <task_tracker> \
  --filter '{"status":"overdue"}' \
  --data '{"escalated":true}'

Workflow 4: Sprint计划 (Sprint Planning)

Scenario: Plan sprint from backlog sheet, create todos, schedule milestones.

# Step 1: Read sprint backlog from AI Sheet
backlog=$(dws sheet record list --sheet <backlog_sheet> \
  --filter '{"sprint":"next","priority":"high"}' --format json)

# Step 2: Create todos for each backlog item
echo "$backlog" | jq -c '.[]' | while read item; do
  dws todo create \
    --subject "$(echo "$item" | jq -r '.title')" \
    --due "$(echo "$item" | jq -r '.due_date')" \
    --priority "$(echo "$item" | jq -r '.priority')" \
    --assignee "$(echo "$item" | jq -r '.assignee')"
done

# Step 3: Create sprint milestone events
dws calendar event create \
  --summary "Sprint Review" \
  --start "2026-06-13T15:00:00" \
  --end "2026-06-13T16:30:00"

dws calendar event create \
  --summary "Sprint Retrospective" \
  --start "2026-06-13T16:30:00" \
  --end "2026-06-13T17:30:00"

# Step 4: Notify team
dws ding send --users "<team_list>" \
  --text "🏃 新Sprint已启动,请查看待办列表"

# Step 5: Update sheet with sprint status
dws sheet record update --sheet <backlog_sheet> \
  --filter '{"sprint":"next"}' \
  --data '{"status":"in_progress"}'

Workflow 5: 会议决议追踪 (Meeting Action Item Capture)

Scenario: After a meeting, create todos from action items, DING owners, track in Sheet.

# Step 1: Get recent meeting from calendar
dws calendar list --type meeting --since "1h ago"

# Step 2: Create todos for each action item
# (Agent parses meeting notes to extract action items)
dws todo create --subject "落实产品方案调整" --due "2026-06-05" --assignee "<owner1>"
dws todo create --subject "完成技术评估报告" --due "2026-06-08" --assignee "<owner2>"
dws todo create --subject "更新项目排期表" --due "2026-06-03" --assignee "<owner3>"

# Step 3: DING all action item owners
dws ding send --users "<owner1>,<owner2>,<owner3>" \
  --text "📋 会议决议已分配,请查看待办列表并确认"

# Step 4: Log to tracking sheet
dws sheet record add --sheet <meeting_actions> \
  --data "{\"meeting\":\"项目周会\",\"date\":\"$(date +%Y-%m-%d)\",\"actions\":\"3项\",\"status\":\"assigned\"}"

# Step 5: Schedule follow-up check
dws calendar event create \
  --summary "检查会议决议执行情况" \
  --start "2026-06-04T10:00:00" \
  --end "2026-06-04T10:30:00"

Decision Framework

User Request
├── Create a single task?
│   └── dws todo create → Done
├── Daily standup / status check?
│   └── Workflow 1 (Daily Standup)
├── Assign task to someone?
│   └── Workflow 2 (Task Delegation)
├── Overdue / escalation?
│   └── Workflow 3 (Overdue Escalation)
├── Sprint / batch planning?
│   └── Workflow 4 (Sprint Planning)
├── Meeting follow-up?
│   └── Workflow 5 (Meeting Action Items)
├── Need to reach Feishu/WeCom?
│   └── Delegate to china-im-workflow-cli
└── Custom tracking?
    └── Compose from primitives below

Domain Primitives

Task Operations

  • dws todo create --subject --due --priority --assignee → Create task
  • dws todo list --status open/completed/overdue → Query tasks
  • dws todo update --id --status completed → Complete task
  • dws todo delete --id → Remove task (confirm first!)

Notification Operations

  • dws ding send --users --text → DING notification (guaranteed delivery)
  • dws bot send --chat --text → Bot message to group

Tracking Operations

  • dws sheet record add --sheet --data → Log to sheet
  • dws sheet record list --sheet --filter → Query sheet
  • dws sheet record update --sheet --filter --data → Update sheet

Scheduling Operations

  • dws calendar event create --summary --start --end → Schedule event
  • dws calendar list --type meeting → Find meetings

People Operations

  • dws contact search --name → Find person
  • dws contact department list → List departments

Advanced: Raw API Access

  • dws api call --endpoint <path> --method GET/POST → Direct OpenAPI access
  • Use for features not yet wrapped in dws commands

DING Escalation Levels

LevelOverdueRecipientsTone
11 dayAssignee only⏰ Gentle reminder
22-3 daysAssignee + Manager⚠️ Warning
34-7 daysManager + Director🚨 Urgent
47+ daysDirector + HR🔴 Critical

Safety Rules

  1. DING is intrusive: Only use DING for genuinely important/urgent items, not routine updates
  2. Confirm before DING escalation: Level 3+ escalations require user confirmation
  3. Rate limiting: Max 10 DINGs per hour; batch notifications when possible
  4. Auth check: Always run dws auth status before workflows
  5. No delete without confirmation: dws todo delete requires explicit user approval
  6. Respect working hours: Avoid DING outside 9:00-21:00 unless marked urgent
  7. Batch over individual: When notifying a team, prefer one DING to multiple

Prerequisites Check

# Check CLI
which dws && dws --version || echo "Install: npm install -g dingtalk-workspace-cli"

# Check auth
dws auth status

# Verify domains
dws todo list --limit 1 2>/dev/null && echo "✅ Todo" || echo "❌ Todo"
dws sheet list --limit 1 2>/dev/null && echo "✅ Sheet" || echo "❌ Sheet"
dws calendar list --limit 1 2>/dev/null && echo "✅ Calendar" || echo "❌ Calendar"

Cross-Platform Integration

When tasks need to reach Feishu or WeCom:

  • Feishu task sync: lark task create --summary --due (after creating in DingTalk)
  • WeCom notification: wecom message send --user --text (for WeCom-based stakeholders)
  • Full cross-platform: Use china-im-workflow-cli skill for orchestrated sync