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-drivegit 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-drive)<a href="https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-drive"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-drive/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-drive"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-drive.svg" alt="Reviewed on agentmods" width="80" 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.00148 | $0.03767 |
| Opus 5 | $0.00074 | $0.01884 |
| Sonnet 5 | $0.00030 | $0.00753 |
| Haiku 4.5 | $0.00015 | $0.00377 |
Grade A, and why
dingtalk-drive 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 5d 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 — 130 lines — stays where its author put it; the contents beside it link to each section on GitHub.
钉盘
最小 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 发现(按需)
drive 当前有 28 条公开 shortcut,完整清单保留在 Runtime Catalog 与 Schema,不在高频产品根 Skill 中重复展开。已知意图按下方路由。
仅当现有路由和 reference 都无法定位低频能力时,才执行 dws shortcut list --service drive --format json 做最后回退;不要为已知高频意图加载完整 Shortcut Catalog 或产品级 Schema。
Golden Route
| 用户意图 | 唯一推荐入口 | 关键边界 |
|---|---|---|
| 全局按名称或关键词找文件 | dws drive +search --query <关键词> --page-all --max-pages 20 --max-items 500 |
需要完整搜索时自动翻页;只需首批结果时可不加 --page-all;多候选停止;在线文档正文搜索走 doc +search |
| 浏览根目录或已知文件夹 | dws drive +list [--folder <dentryUuid>] --page-all --max-pages 20 --max-items 500 |
需要完整浏览时自动翻页;只需首批结果时可不加 --page-all |
| 发现钉盘企业空间或“我的文件”空间 | dws wiki space list --type <orgSpace|mySpace> --format json |
Drive 只读前置;orgSpace 按 nextToken 续页,取 spaceId/rootFolderId 后回到 Drive |
| 查看最近访问/编辑 | dws drive +recent [--operate-type 1] --limit <N> |
1=最近编辑;默认最近访问 |
| 查看节点类型和元数据 | dws drive +inspect --node <dentryUuid> |
按需加 stats/publish/cover,不为普通列表强制调用 |
| 下载普通文件 | dws drive +download --node <dentryUuid> --output <相对路径> |
当前 shortcut 接受 ID;在线文档用 doc +export |
| 只要临时下载地址不落盘 | dws drive download --node <dentryUuid> --url-only --format json |
Agent 沙箱/外部系统自行下载时用;与 --output/--overwrite 等落盘参数互斥 |
| 上传普通文件到钉盘或知识库 | dws drive +upload --file <相对路径> [--workspace <ID>] |
默认进钉盘;指定 workspace 时成为知识库/文档空间中的独立文件节点;folder 与 node、workspace 与 space-id 分别互斥 |
| 管理普通文件全局评论 | dws drive comment list-v2/create-v2/reply/update/delete/batch-query/list-replies/resolve/restore/react-reply |
复用 Doc/Sheet 新评论链路;旧 list/create 已 deprecated;固定全文 global,不支持划词、单元格或 mention |
| 创建文件夹 | dws drive +create-folder --name <名称> [--folder <ID>] |
Shortcut 已提交并读回 |
| 复制在线文档节点 | dws drive +copy --node <ID> [--folder <目标ID>] |
普通钉盘文件会被拒绝;Base 结构复制走 AITable +base-copy --base-id <ID> --target-folder-id <真实ID> --only-struct |
| 移动节点 | dws drive +move --node <ID> --folder <目标ID> |
破坏性变更,按 Runtime confirmation |
| 重命名节点 | dws drive +rename --node <ID> --name <新名称> |
写后检查最终名称 |
| 比较本地与钉盘文件夹 | dws drive status --local-folder <绝对路径> --remote-folder <folderId> |
只读;默认精确 MD5,不先拉取或推送 |
| 钉盘文件夹拉到本地 | dws drive pull --local-folder <绝对路径> --remote-folder <folderId> --if-exists skip |
安全默认不覆盖;先以相同参数 --dry-run,再按确认执行 |
| 本地文件夹推到钉盘 | dws drive push --local-folder <绝对路径> --remote-folder <folderId> --if-exists skip |
安全默认不覆盖;先 dry-run;不会删除远端多余文件 |
| 双向补齐文件夹 | dws drive sync --local-folder <绝对路径> --remote-folder <folderId> --on-conflict skip |
先 dry-run;冲突策略必须显式保留 |
What ships with it
4 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.
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.
- 5d ago Changed · +1 lines e1e0b71cdd77
- 6d ago Changed · +2 lines d3de824135a9
- 9d ago First seen · 127 lines · 148 tokens per session scan A c076f0e101d5
dingtalk-drive is a skill published in the GitHub repository DingTalk-Real-AI/dingtalk-workspace-cli (2,891 stars, last pushed today), licensed Apache-2.0. It adds 148 tokens to every session and 3,767 once invoked, about $0.0007 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…
box
Box manages cloud files, sharing, search, and metadata.
feishu
Work with Feishu or Lark bots, docs, sheets, bitables, approval flows, and OpenAPI/MCP setup without hardcoding credentials.
recipe-save-email-attachments
Find Gmail messages with attachments and save them to a Google Drive folder.
recipe-bulk-download-folder
List and download all files from a Google Drive folder.
apple-notes
Manage Apple Notes via the memo CLI on macOS (create, view, search, edit).