Dingtalk Todo logo

Dingtalk Todo

OrganizationPopular
DingTalk-Real-AI
dingtalk-todo

钉钉待办 / TODO。Use when 用户说 创建待办/TODO/任务提醒/指派任务/标记完成/查待办/紧急待办/循环待办/批量建待办/逾期待办。不做日报周报(走 dingtalk-misc)、审批(走 dingtalk-misc)、日程(走 dingtalk-calendar)。命令前缀:dws todo。

Overview

PublisherDingTalk-Real-AI
Repositorydingtalk-workspace-cli
Skill namedingtalk-todo
Stars
3.1K
Forks
242
Bundled files
8
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 8 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by DingTalk-Real-AI on GitHub. Read the source before you install it.

Installation

Install the Dingtalk Todo AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli.git /tmp/dingtalk-workspace-cli
mkdir -p .claude/skills
cp -r /tmp/dingtalk-workspace-cli/skills/multi/dingtalk-todo .claude/skills/dingtalk-todo
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Dingtalk Todo in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Dingtalk Todo on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Dingtalk Todo is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

钉钉待办 Skill

执行契约

  • 执行第一个 dws 操作前完整读取 dingtalk-shared;当前任务已加载则不重复读取。
  • 先把请求拆成有序步骤,再逐步选入口。已知命令直接执行,不先查 Help、Schema 或 Shortcut Catalog;只有当前 leaf 的 flag 或安全语义确实不明时才查精确 leaf。
  • 所有命令加 --format json,按结构化业务返回判断结果。后续 ID 只取自本次真实返回;零匹配、多匹配或类型不明时停止并消歧。
  • 写操作遵循最终 Runtime gate。需要确认时先说明对象、动作和影响,用户确认后才追加 --yes;不要把 --yes 写入存储示例。
  • 写后必须核验。非幂等写超时、缺少稳定 ID 或读回失败时先查询对账,禁止盲目重放。

Shortcuts(无专用脚本/recipe 时优先)

以下 shortcut 同时进入公开 catalog 与 Runtime Schema。按本 skill/recipe 路由,命中时 Shortcut 优先于原子命令。参数只查 dws schema --cli-path "todo +<shortcut>" --compact --jq '{cli_path,parameters,constraints,confirmation}' -f json;仅需且已发布 result 时查 --jq '{cli_path,outcomes:.result.outcomes,pagination}',字段级再查 data_schema;缺失不以 Help/样例推断。Schema 不可用才读一次已知 leaf Help;unknown flag 用同 leaf Help 修正一次。unknown command 禁 Help:错误 suggestion → 已加载 Skill/reference 明确入口;均无则报漂移。禁全 Catalog/root/parent/product Help;仅映射、接口或 provenance 审计省略 --compact。现有路由和 reference 均无法定位低频能力时,才用 dws shortcut list --service todo --format json 发现。

Shortcut风险适用场景
dws todo +assignwrite按姓名给某人创建并指派一条待办(自动解析 userId)
dws todo +assign-multiwrite把一条待办按姓名一次性指派给多个人(自动把每个姓名解析成 userId)
dws todo +commentwrite添加待办评论并读回验证
dws todo +createwrite创建待办并读回验证
dws todo +created-todosread列出我创建的待办(我作为创建人 creator 发起的待办,而非分配给我执行的)
dws todo +due-todayread列出我今天到期的待办
dws todo +getread查询待办详情
dws todo +get-my-tasksread查询当前组织下我的待办列表
dws todo +get-related-tasksread一次性列出与我相关的全部待办(我作为创建人/执行人/参与人三种角色的并集,按 taskId 去重)
dws todo +list-attachmentread查询待办任务的附件列表
dws todo +list-commentread查询待办评论列表
dws todo +list-subread查询子待办列表
dws todo +overdueread列出我已过期未完成的待办
dws todo +remindwrite给自己创建一条带可选截止时间的待办
dws todo +reminderwrite设置或清除待办提醒(仅终端回执)
dws todo +searchread搜索与我相关的全部待办
dws todo +todo-donewrite按标题关键词把我的某条待办标记完成(自动定位 taskId)
dws todo +updatewrite更新待办并读回验证

路由优先级

上面的通用 Shortcut 优先规则只适用于一个 Shortcut 完整覆盖当前步骤的情况。不要因为请求里出现“创建”就默认使用 +remind / +create

  1. 先选创建入口:按姓名指派用 +assign / +assign-multi;给自己记一条且后续只有搜索、详情或清理时用 +remind;已有真实 userId 且只需创建、回读和清理时用 +create
  2. 组合生命周期从原子创建开始:创建后还要按状态/优先级/角色/日期/页码列举,或继续更新、完成/重开、提醒、评论、附件、成员、子待办、标签,或一次创建多个对象时,使用 todo task create。不要用创建 Shortcut 代替第一步。
  3. 后续按步骤选最窄入口:聚合、搜索和核验完整由 Shortcut 覆盖时使用 +get-my-tasks+get-related-tasks+due-today+overdue+search+get+complete+reopen+update+comment+reminder+list-*;需要原子特有参数、动态子资源 ID、多对象或中间状态时用原子命令。
  4. 确定性批量/汇总使用脚本:批量创建、今天/明天/本周汇总、逾期扫描分别使用 bundled script。
  5. 跨步骤只传稳定 ID:Shortcut 与原子命令可以共存,但只传递规范化后的 taskIdcommentIdattachmentIdtagCodeuserId;不要假设两类入口的完整返回结构相同。

Golden Routes

用户意图首选入口关键结果 / 边界
给自己创建,随后只搜索、看详情或清理dws todo +remind --task "<标题>" [--at "<截止ISO>"] --format json自动解析当前用户;--at 是截止时间,不是提醒时间
“给张三建待办”dws todo +assign --to "张三" --task "<标题>" --format json姓名必须唯一解析后才创建
“给张三、李四建同一条待办”dws todo +assign-multi --to "张三,李四" --task "<标题>" --format json任一姓名不唯一则零写入
已有 userId,只创建、回读和清理dws todo +create --title "<标题>" --executors <USER_ID> [--due "<截止ISO>"] [--priority 10|20|30|40] --format json返回稳定 taskId,并读回核验标题
创建后还要筛选、变更资源或创建多个对象dws todo task create --title "<标题>" --executors <USER_ID> ... --format jsonresult.taskId 进入组合生命周期;不要以 +remind / +create 起步
今天到期 / 已逾期dws todo +due-today --format json / dws todo +overdue --format json均有界拉全分页;空集合也是成功结果
当前组织下我的执行待办dws todo +get-my-tasks --all --status false --format json--all 达到 40 页仍未耗尽会失败,不伪装完整
与我相关的全部待办dws todo +get-related-tasks --format json创建人、执行人、参与人三种角色并集,按 taskId 去重
按标题关键词查询dws todo +search --query "<关键词>" --format json搜索与 list 不混用;跨全部分页匹配
已知 taskId 查详情dws todo +get --task-id <TASK_ID> --format json详情必须回传同一个稳定 taskId
已知 taskId 完成 / 重开dws todo +complete --task-id <TASK_ID> --format json / dws todo +reopen ...先读当前状态,避免重复写,再读回核验
只记得标题,标记完成dws todo +todo-done --task "<关键词>" --format json仅唯一命中时写;零个或多个候选均停止
修改标题、截止时间或优先级dws todo +update --task-id <TASK_ID> ... --format json至少指定一个待改字段;写后逐字段核验
设置独立提醒dws todo +reminder --task-id <TASK_ID> --base-time customTime --at "<提醒ISO>" --format json上游无提醒查询接口,只能返回终端写回执,verified=false
基于截止时间提前提醒dws todo +reminder --task-id <TASK_ID> --base-time dueTime --due-date-offset -30 --format json待办必须已有截止时间;偏移单位为分钟
清除全部提醒dws todo +reminder --task-id <TASK_ID> --clear --format json清除写操作;不能与提醒参数混用
批量创建python scripts/todo_batch_create.py <todos.json> --dry-run预览返回稳定 planDigest;执行必须提交用户确认的同一摘要,内容变化会在零调用时拒绝
今天/明天/本周汇总python scripts/todo_daily_summary.py today|tomorrow|week+get-my-tasks --all,只纳入范围内且有截止时间的未完成待办

低频原子能力

组合请求先读 组合生命周期。以下常用原子命令已审定,直接执行,不要先猜别名或查 Help:

意图命令骨架
解析自己 / 姓名dws contact user get-self --format json / dws aisearch person --query "<姓名>" --dimension name --format json
创建 / 子待办dws todo task create ... / dws todo task create-sub --parent-id <PARENT_ID> --title "<标题>" --executors <USER_ID> ...
列表 / 详情dws todo task list [--status true|false] [--priority ...] [--role-types ...] [--page N --size N] ... / dws todo task get --task-id <TASK_ID>
更新 / 完成或重开dws todo task update --task-id <TASK_ID> ... / dws todo task done --task-id <TASK_ID> --status true|false
增删执行人 / 参与人task add-executor / task remove-executor / task add-participant / task remove-participant,均传真实 taskIduserId
评论comment add / comment list / comment delete;删除使用列表返回的真实 commentId
附件task add-attachment --file <绝对路径> / task list-attachment / task remove-attachment
提醒task add-reminder 添加单条;task reset-reminder 替换全部或清空
标签tag create / tag list / tag update / tag add / tag delete;只使用真实 tagCode
删除待办dws todo task delete --task-id <TASK_ID> --format json

删除类操作必须由用户确认;若用户在当前请求中已明确授权“办完后删除/清理本次创建对象”,该授权只覆盖本次记录的精确 ID。附件上传会真实传输本地文件,不能用来试探权限。

关键约束

  • 标题、URL、展示序号都不是 taskId。已知 ID 直接行动;未知 ID 用列表/搜索定位,零匹配或多匹配时停止。
  • 待办公开命令统一使用 --task-id--id / --ids 只是隐藏兼容别名,不要写入新命令或示例。
  • 优先级:低=10、普通=20、较高/高/重要=30、紧急/最高/P0=40。
  • --due / +remind --at 表示 deadline;独立 reminder 必须走 +reminder
  • 自定义时间提醒的原子 flag 是 --reminder-time-stamp;不要把 Shortcut 的 --at 套到 task add-reminder
  • task list 使用 --status,不要写 --done;详情是 task get,不存在 task detail
  • “待办标签”始终属于 Todo,使用 dws todo tag ...;绝不能解释成 Git tag、通讯录标签或其他产品标签。
  • 创建和评论是非幂等写。超时、缺少稳定 ID 或读回失败时保留“可能已提交/未核验”状态,先查询对账,禁止盲目重放。
  • 所有命令加 --format json;写 Shortcut 按 Runtime 安全契约确认,确认前不得自行附加 --yes
  • 会后行动项来自听记时先走 dingtalk-minutes;OA 审批走 dingtalk-misc;时间块和会议走 dingtalk-calendar

按需参考

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Dingtalk Todo AI skill do?

钉钉待办 / TODO。Use when 用户说 创建待办/TODO/任务提醒/指派任务/标记完成/查待办/紧急待办/循环待办/批量建待办/逾期待办。不做日报周报(走 dingtalk-misc)、审批(走 dingtalk-misc)、日程(走 dingtalk-calendar)。命令前缀:dws todo。

Why use Dingtalk Todo on TypingMind?

Because you install it once and use it with any model. Dingtalk Todo is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Dingtalk Todo in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli/tree/main/skills/multi/dingtalk-todo. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Dingtalk Todo?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Dingtalk Todo?

As many as you like. As long as a model supports skills, you can use Dingtalk Todo with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Dingtalk Todo AI skill free?

Yes. It is published on GitHub by DingTalk-Real-AI under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇