Install
openclaw skills install dingtalk-todo-cliManage 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钉钉待办
openclaw skills install dingtalk-todo-cliYou 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.
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.
# Install
npm install -g dingtalk-workspace-cli
# Authenticate
dws auth login
# Verify
dws auth status
| Domain | Key Commands | Workflow Role |
|---|---|---|
| Todo | dws todo create/list/update/delete | Core task management |
| DING | dws ding send | Urgent notification & escalation |
| Calendar | dws calendar list/event create | Deadline scheduling |
| AI Sheet | dws sheet list/record add/update | Tracking & analytics |
| Contacts | dws contact search/department list | People lookup |
| Attendance | dws attendance list | Work status check |
| Approval | dws approval create/list | Process governance |
| Bot | dws bot list/send | Automated messaging |
| Drive | dws drive list/upload | File management |
| API | dws api call | Raw OpenAPI access |
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>\"}"
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
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}'
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"}'
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"
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
dws todo create --subject --due --priority --assignee → Create taskdws todo list --status open/completed/overdue → Query tasksdws todo update --id --status completed → Complete taskdws todo delete --id → Remove task (confirm first!)dws ding send --users --text → DING notification (guaranteed delivery)dws bot send --chat --text → Bot message to groupdws sheet record add --sheet --data → Log to sheetdws sheet record list --sheet --filter → Query sheetdws sheet record update --sheet --filter --data → Update sheetdws calendar event create --summary --start --end → Schedule eventdws calendar list --type meeting → Find meetingsdws contact search --name → Find persondws contact department list → List departmentsdws api call --endpoint <path> --method GET/POST → Direct OpenAPI access| Level | Overdue | Recipients | Tone |
|---|---|---|---|
| 1 | 1 day | Assignee only | ⏰ Gentle reminder |
| 2 | 2-3 days | Assignee + Manager | ⚠️ Warning |
| 3 | 4-7 days | Manager + Director | 🚨 Urgent |
| 4 | 7+ days | Director + HR | 🔴 Critical |
dws auth status before workflowsdws todo delete requires explicit user approval# 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"
When tasks need to reach Feishu or WeCom:
lark task create --summary --due (after creating in DingTalk)wecom message send --user --text (for WeCom-based stakeholders)china-im-workflow-cli skill for orchestrated sync