DingTalk Workspace CLI is a cross-platform command-line tool that brings DingTalk’s product capabilities into one interface. It serves human users and AI agents working with DingTalk enterprise data, with administrator authorization required. Its catalogue add-ons provide agent skills for using the CLI’s product areas.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add DingTalk-Real-AI/dingtalk-workspace-cli --skill dingtalk-docgit clone --depth 1 https://github.com/DingTalk-Real-AI/dingtalk-workspace-cliWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-doc)<a href="https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-doc"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-doc.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00213 | $0.03421 |
| Opus 5 | $0.00106 | $0.01710 |
| Sonnet 5 | $0.00043 | $0.00684 |
| Haiku 4.5 | $0.00021 | $0.00342 |
Grade A, and why
dingtalk-doc scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 115 lines — stays where its author put it; the contents beside it link to each section on GitHub.
钉钉文档 Skill
最小 DWS 执行契约
- 只通过
dwsCLI 操作钉钉;结构化读取使用--format json,按真实返回判断结果。 - 已知命令直接执行。只有 leaf 参数或安全语义不确定时读取精确 Schema,只有 Cobra flag 不确定时读取精确 leaf Help;不要加载产品级 Catalog 代替选路。
- 不猜命令、flag、字段、ID、账号或时间。后续 ID 必须来自真实返回;零命中、多候选或类型不明时停止并消歧。
- 解析目标、读取上下文和最终执行必须使用同一 profile;不得跨组织复用 userId、openDingTalkId 或 openConversationId。多账号组织只使用明确的
isOrgCurrent=true默认账号;没有默认账号时要求用户指定,禁止选择第一项、最近登录或最近使用账号。 - 不输出或记录 token、refresh token、appSecret、webhook token 等凭据;宿主已注入认证时不要索要凭据。
- 写操作必须符合用户明确意图。是否需要确认以最终 Runtime gate 和 Schema 为准;需要确认时先说明对象、动作与影响,再追加
--yes。 - 写后按任务结果契约验证;不能仅凭退出码宣称成功。部分结果、未知投递状态和失败项必须如实保留。
- 时间戳面向用户展示时转换为带时区的可读时间;默认使用当前会话时区,必要时同时保留原值。
- 遇到认证、权限、profile、confirmation 或未知错误时,只加载
dingtalk-shared中对应 reference;不要连续猜测替代命令。
Shortcut 发现(按需)
doc 当前有 45 条公开 shortcut,完整清单保留在 Runtime Catalog 与 Schema,不在高频产品根 Skill 中重复展开。已知意图按下方路由。
仅当现有路由和 reference 都无法定位低频能力时,才执行 dws shortcut list --service doc --format json 做最后回退;不要为已知高频意图加载完整 Shortcut Catalog 或产品级 Schema。
Golden Route
ID/URL 直用;标题先搜索,唯一命中再执行.顺序:稳定 ID → shortcut → 局部读 → 精确写;禁以产品 Schema、全文或原子命令起步.
| 用户意图 | 唯一推荐入口 | 关键边界 |
|---|---|---|
| 按标题或主题定位文档 | dws doc +search --query <精确标题> |
complete=true,count=0,failures=[] 即权威零命中:如实报告;禁缩词、跨产品、无 query/无端 --page-all |
| 最近访问或最近编辑文档 | 加载 dingtalk-drive,执行 dws drive +recent [--operate-type 1] --limit <N> |
默认最近访问,1 为最近编辑;不要用 doc +search 替代最近列表 |
| 已知 alidocs 文档目录 URL,列出当前层 | dws doc +list --folder <URL> --page-all |
复用完整 URL;不要改用 drive +list |
| 已知 ID/URL 读取正文或局部内容 | dws doc +fetch --node <ID或URL> |
术语用 keyword;章节 outline → section;整篇才用 full |
| 聚合查看信息、权限、版本、媒体或评论 | dws doc +inspect --node <ID或URL> |
基础元信息默认返回;样式、权限、历史、媒体、评论才用对应 --include-*,无 --include-info |
| 新建在线文字文档并写入内容 | dws doc +create --name <标题> --content <文本|-|@文件> [--folder <ID>|--workspace <ID>] |
指定位置复用真实 ID,二者互斥;-=stdin,禁 @-;Runtime 分片回读,不拆写 |
| 追加、覆盖或精确编辑 block | dws doc +update --node <ID或URL> --command <动作> |
唯一文本 str_replace;章节/block 局部取 ID;整篇才 overwrite |
| 重要内容更新且需要恢复点 | dws doc +checkpoint-update |
自动保存版本,更新并回读;检查 steps 和 compensation |
| 版本操作 | dws doc +version-save --node / dws doc +version-list --node / dws doc +version-revert --node --version |
快照/列表/回滚 |
| 导出为 docx/markdown/pdf | dws doc +export --export-format <格式> |
格式必须显式指定;普通文件下载切 dingtalk-drive |
| 本地文件转在线文档 | dws doc +import --file <相对路径> [--folder <ID>|--workspace <ID>] [--name <用户指定文档名>] |
指定位置复用真实 ID,二者互斥;目标是已创建知识库时必须带其 workspaceId;未指定才由 Runtime 取默认根并回读验证落点;doc +create 不能替代知识库内导入;仅保留原文件走 dingtalk-drive |
| 封面/背景 | +resource-update/+resource-delete;+background-update/+background-delete |
写后 +inspect --include-style;禁查 Catalog |
| 浏览模板 | dws doc +template-list [--source MY|PUBLIC] [--page-all] |
“我的/我这边”只查 MY;明确公开才查 PUBLIC;“有哪些/全部”加 --page-all 并检查 complete |
| 搜索模板 | dws doc +template-search --query <名称或关键词> |
来源可选 MY/PUBLIC;零命中停止,禁止拿无关模板替代;多候选消歧 |
| 从模板创建 | dws doc +create-from-template --template-id <唯一ID> |
已有唯一 templateId 才创建;不重复 list/search |
| 创建/查评论 | dws doc +comment-create --node <ID或URL> --content <文字> [--selection <原文>] / +review --node <ID或URL> |
node/content 必填;划词也用 +comment-create;续操作复用 commentKey |
| 添加/调整/移除协作者权限 | dws doc +access-grant/+access-change/+access-revoke |
--to 必填;--role 默认 READER(READER|DOWNLOADER|EDITOR|MANAGER);无 --user-ids;先读权限,歧义/profile 不一致禁写 |
| 只发链接不改权限 | dws doc +share --to <姓名[,姓名]> --url <URL> [--note <附言>] |
内置姓名解析;仅歧义时 aisearch,禁预查人;普通私信用 chat |
| 授权后向多人分享链接 | dws doc +grant-and-share |
仅需改权限时用(必填 --node,role 默认 READER);检查逐人账本和部分失败 |
| 把文件/PPT/PDF 作为正文附件 | dws doc +media-insert --node <DOC_ID> --file <相对路径> |
正文附件走 Doc;drive +upload 仅入库存储,不会插入正文 |
What ships with it
19 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/04-document.md 2.3 KB
- references/contracts.md 4.1 KB
- references/doc.md 4.5 KB
- references/doc/doc-block.md 2.5 KB
- references/doc/doc-comment.md 1.8 KB
- references/doc/doc-create.md 4.4 KB
- references/doc/doc-export.md 1.9 KB
- references/doc/doc-import.md 2.6 KB
- references/doc/doc-info.md 783 B
- references/doc/doc-media.md 2.4 KB
- references/doc/doc-read.md 4.4 KB
- references/doc/doc-update.md 7.8 KB
- references/doc/format/doc-jsonml-cookbook.md 25 KB
- references/doc/format/doc-jsonml-schema.json 16 KB
- references/doc/format/doc-jsonml-schema.md 29 KB
- references/doc/style/doc-create-workflow.md 23 KB
- references/doc/style/doc-style-guideline.md 21 KB
- references/doc/style/doc-update-workflow.md 16 KB
- references/intent-guide.md 3.6 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · +1 lines 123312fa1b9a
- 5d ago Changed · +2 lines · +39 tokens per session 665301109c86
- 8d ago First seen · 112 lines · 174 tokens per session scan A 999406ebbc53
dingtalk-doc is a skill published in the GitHub repository DingTalk-Real-AI/dingtalk-workspace-cli (2,875 stars, last pushed today), licensed Apache-2.0. It adds 213 tokens to every session and 3,421 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
orbit-notion
Open Orbit briefing skill — selected by the Orbit pipeline when Notion is the user's only connected connector, or when the user explicitly scopes their daily digest to Notion. Pulls the past 24 hours of document edits, comments, mentions, and database row changes from the user's authenticated Notion connection and…
instrument-data-to-allotrope
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full…
baoyu-youtube-transcript
A tool for downloading the written captions, subtitles, chapter information, speaker labels, and cover image from a YouTube video using its URL or ID.
feishu
Work with Feishu or Lark bots, docs, sheets, bitables, approval flows, and OpenAPI/MCP setup without hardcoding credentials.
read
Reads URLs and PDFs by fetching source content, defaulting to concise summaries for plain read requests and clean Markdown when asked to convert, save, quote, cite, or feed downstream work. Use when users ask in any language to read, fetch, check, summarize, quote, cite, convert, or save a URL or PDF. Not for local…
overleaf-sync
A two-way connection between a local paper folder and Overleaf, a web-based LaTeX editor for writing research papers. It lets you move changes between the local files and the shared Overleaf project.