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-minutesgit 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-minutes)<a href="https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-minutes"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-minutes/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-minutes"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-minutes.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.00090 | $0.03760 |
| Opus 5 | $0.00045 | $0.01880 |
| Sonnet 5 | $0.00018 | $0.00752 |
| Haiku 4.5 | $0.00009 | $0.00376 |
Grade A, and why
dingtalk-minutes 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 11d 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 — 117 lines — stays where its author put it; the contents beside it link to each section on GitHub.
钉钉 AI 听记 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 发现(按需)
minutes 当前有 29 条公开 shortcut,完整清单保留在 Runtime Catalog 与 Schema,不在高频产品根 Skill 中重复展开。已知意图直接使用下方的优先路由、意图表或任务 reference;命令已选中时直接执行,只在参数/安全语义不确定时读取 leaf Schema,在当前 Cobra flags 不确定时读取 leaf Help。
仅当现有路由和 reference 都无法定位低频能力时,才执行 dws shortcut list --service minutes --format json 做最后回退;不要为已知高频意图加载完整 Shortcut Catalog 或产品级 Schema。
Golden Route
以下是当前 Minutes Case 支持的核心路径,用于减少 Agent 选路分叉;它不等同于生产使用频率统计。已有 taskUuid 直接使用;完整 shanji.dingtalk.com URL 先提取其中的真实 ID。只有标题或时间线索时先搜索,零命中停止,多候选或候选差异较大时让用户消歧,不默认取第一条。
| 用户意图 | 唯一推荐入口 | 关键边界 |
|---|---|---|
| 按标题或时间找听记 | dws minutes +search --scope all --query "<关键词>" --page-all |
scope 可选 mine/shared/all;至少提供 query/start/end 之一。all --page-all 分别追完 mine/shared 后去重,不把单个 noLimit 端点当完整全集 |
| 浏览我创建、共享给我或全部可访问听记 | +list-mine / +list-shared / +list-all |
默认是可续拉预览;要声称完整必须加 --page-all 并检查 complete=true。用户只说“我的听记”不等于明确 mine,范围不清时用 all |
| 看我最新创建的一条 | dws minutes +latest [--keyword <关键词>] |
只在用户明确说“最新”时用;不能用它替代具名目标搜索,也不能在录音 start 后拿 latest 猜新录音 ID |
| 读取基础信息、摘要或关键词 | dws minutes +detail --id <taskUuid> --artifacts basic,summary,keywords |
已有 taskUuid 且只读取现有产物时直接使用,不要进入上传 workflow;任一产物失败都按 partial/非零处理,不把缺失项说成空内容 |
| 读取逐字稿 | dws minutes +transcript --id <taskUuid> [--direction 1] [--single-page] |
已有 taskUuid 且只读取逐字稿时直接使用,不要借 +upload-and-analyze --resume-id 代读。默认正序并追完分页;倒序必须传 --direction 1,用户明确只要第一页时传 --single-page,不得随后自动续页。交付前检查 data.direction/data.complete/data.pages 与 meta.pagination |
| 读取行动项 | dws minutes +action-items --id <taskUuid> |
只有受支持字段明确返回空数组才能说“没有待办”;unsupported_shape、字段解析失败或工具失败都不是空结果。需要创建钉钉待办时再切 dingtalk-todo |
| 把摘要、关键词、完整逐字稿和行动项归档到本地 | dws minutes +export-pack --id <taskUuid> --output <新相对目录> |
要带媒体时加 --include-media;必须由 published/path/manifest/files 证明落盘,只有建目录、计划或文件名不能称已生成 |
| 修改或预览标题 | dws minutes +update --id <taskUuid> --title "<新标题>" |
真实修改按 Runtime confirmation 执行并读回;用户只要预览时先读 basic,再加 --dry-run,展示“当前值 → 目标值”后停止,不追加 --yes |
| 覆盖纪要正文 | dws minutes +summary --id <taskUuid> --content @<相对文件> |
content 是完整目标正文,不是局部 patch;按 Runtime confirmation 执行,并保护图片引用、读回全文 |
| 上传音视频生成听记 | dws minutes +upload --file <相对路径> |
真实执行会上传文件并创建远端听记,必须按 Runtime confirmation;用户明确要闪记卡片时改用 +upload-and-notify,需要上传后等待分析产物时用 +upload-and-analyze |
| 真实开始、暂停、继续或停止录音 | +record-start / +record-pause / +record-resume / +record-stop |
这组入口会真实执行。start 返回 accepted=true, bound=false 或 controlReady=false 时,报告“已受理但未绑定”并停止:不得重试 start,也不得用 +latest、列表第一条或时间最近项猜 ID。结束并等待产物用 +record-wrap-up |
| 只预览录音请求,不实际执行 | dws minutes record start --dry-run --format json |
使用对应的原子 `minutes record start |
| 生成或继续思维导图 | dws minutes +mindmap --id <taskUuid> |
创建后有界轮询;超时或未知状态保留恢复信息,用 --resume 继续,不重复创建 |
| 生成或继续发言人洞察 | dws minutes +speaker-insights --id <taskUuid> |
有界轮询;保留 taskId,恢复时用 --resume [--task-id <ID>],不重复创建 |
| 当前用户申请查看/下载/编辑权限 | `dws minutes +apply-permission --id --permission view | download |
| 所有者给成员授权或撤权 | dws minutes +share ... / dws minutes +unshare ... |
先用通讯录把姓名解析为同组织稳定 UID;撤权是破坏性操作。批量结果必须保留逐成员 ledger 和失败项 |
What ships with it
9 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/07-minutes.md 11 KB
- references/10-minutes-speaker-match.md 3.0 KB
- references/11-minutes-speaker-correct.md 2.6 KB
- references/intent-guide.md 6.8 KB
- references/lite-recipes.md 2.3 KB
- references/minutes.md 16 KB
- references/recipes/conventions.md 2.1 KB
- scripts/minutes_recent_summary.py 6.0 KB runs code
- scripts/test_minutes_scripts.py 8.3 KB runs code
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.
- 11d ago First seen · 117 lines · 90 tokens per session scan A a4091f71aa1f
dingtalk-minutes is a skill published in the GitHub repository DingTalk-Real-AI/dingtalk-workspace-cli (2,960 stars, last pushed yesterday), licensed Apache-2.0. It adds 90 tokens to every session and 3,760 once invoked, about $0.0005 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
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.
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…
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.