Files
market/skills/dingtalk-cli/entry.json
Yige fb6005cd7b feat: 新增钉钉官方 CLI 市场入口(含 14 个官方子技能) (#104)
## 中文

补齐官方市场里唯一缺失的主流 IM CLI 条目:**钉钉官方命令行工具 `dws`**(npm 包
`dingtalk-workspace-cli`,Apache-2.0,Copyright 2026 Alibaba Group),与已有的
`wecom-cli`、`larksuite-cli` 形成对称。市场此前只有社区的 `dingtalk-api`,覆盖面远小于官方 CLI。

### 变更

| 文件 | 说明 |
| --- | --- |
| `skills/dingtalk-cli/entry.json` | 合集指针条目 + 14 个官方子技能 `children` |
| `skills/dingtalk-cli/catalog-metadata.v1.json` | 治理 sidecar |
| `manifest.json` | `stats.totalSkills` 62 → 63;`version` 1.2.30 →
1.2.31;`lastUpdated` |
| `README.md` | 外部条目计数与清单同步 |

### 14 个子技能


`dingtalk-aisearch`、`dingtalk-aitable`、`dingtalk-calendar`、`dingtalk-chat`、`dingtalk-contact`、`dingtalk-doc`、`dingtalk-drive`、`dingtalk-event`、`dingtalk-mail`、`dingtalk-minutes`、`dingtalk-misc`、`dingtalk-shared`、`dingtalk-todo`、`dingtalk-wiki`

### 外部依赖披露

CLI 是**独立分发的第三方软件**,本条目只是市场登记,四处均已声明:

- **discovery description**(`entry.json#i18n.<locale>.shortDesc`):需自行用
npm 安装 `dingtalk-workspace-cli`,需完成钉钉 OAuth
授权登录(**不支持账号密码登录**),DesireCore 不打包、不授权、不安装也不代运营钉钉或该 CLI
- **`compatibility.requirements`**(4 条):CLI 需在 PATH 上、Node.js >=
16.7.0、`dws auth login` 建立的授权会话(缺失时必须在外部调用前停止,禁止编造成功结果)、能力覆盖取决于组织授予的
OAuth 范围与钉钉权益
- **本地化市场文案**:sidecar `presentation.i18n` 与 `entry.json#i18n` 逐字一致,zh-CN
/ en-US 双语
- **执行说明**:随 CLI 分发的上游 `SKILL.md`,不在本仓库

`redistribution: verify-package-terms` 会让客户端在安装响应里带出条款提示。

### 来源与治理的取舍(诚实声明)

上游 git 仓库 `https://github.com/open-dingtalk/dingtalk-workspace-cli`(该
URL 是发布方在 npm `package.json#repository` 里自己声明的)**当前对外返回 404,不可公开访问**,因此:

- `source` 用 `kind: git` + 该声明 URL,**不写 `ref`**——没有可观察的 commit,不编造固定版本
- 相应地 `provenance.content` 不可变,`governance.availability` 只能是
`listing-only`(`validate_catalog_metadata.py` 的 installable 强证据门禁要求不可变
ref + 已知 license + `reviewedAt` + `compliance`,本条目一样都拿不出)
- `governance.license` 保持 `{state: "unknown"}`(`entry.json#license:
"Apache-2.0"` 取自发布方声明与包内 LICENSE/NOTICE,但仓库内没有许可证据文件,只产生既有的
`legacy-license-unverified` warning)
- `timestamps.reviewedAt` / `releasePublishedAt` 保持 `unknown`;只有
`catalogUpdatedAt` 与 `upstreamObservedAt` 写入真实观察时刻
- `branding` 声明 `independent-listing` / `nominative` /
`not-used`:独立登记、名称为指代性使用、未使用对方 Logo(图标是通用终端窗形)
- 因为来源未固定,`gen-collection-children.py --check` 会输出 `SKIP`(与既有的
`mattpocock-skills` 同一路径),`children` 由人工按分发件内实际布局 `multi/<id>/` 撰写

### 校验(已实际执行,全部 exit 0)

```
uv run --quiet scripts/i18n/test_validate_i18n.py                            exit=0
uv run --quiet scripts/catalog/test_validate_catalog_metadata.py             exit=0
uv run --quiet scripts/catalog/test_collection_generator.py                  exit=0
uv run --quiet scripts/catalog/validate_catalog_metadata.py --require-complete
    0 error(s), 117 warning(s). agents=1, builtinSkills=34, pointerSkills=29,
    publishableSkills=63, collections=8, collectionChildren=161, sidecars=64  exit=0
uv run --quiet scripts/i18n/validate-i18n.py            0 error(s)            exit=0
uv run --quiet scripts/i18n/translate.py --check                             exit=0
uv run --quiet scripts/gen-collection-children.py --check                     exit=0
```

本条目产生的唯一 warning 是 `legacy-license-unverified`,与其余全部 pointer
条目一致。`entry.json` 另经客户端 `marketSkillEntrySchema` 的 Ajv 校验通过。

发布前公开信息边界检查已按 `CLAUDE.md` 执行并通过(工作树全量扫描含隐藏文件、路径名、分支名、commit 文案与本 PR
文本,零结果;令牌清单保存在仓库之外)。

---

## English

Adds the one mainstream IM CLI the official market was still missing:
the **official DingTalk CLI `dws`** (npm package
`dingtalk-workspace-cli`, Apache-2.0, Copyright 2026 Alibaba Group),
making it symmetric with the existing `wecom-cli` and `larksuite-cli`
entries. Until now the market only carried the community `dingtalk-api`,
whose surface is far smaller.

### Changes

| File | Purpose |
| --- | --- |
| `skills/dingtalk-cli/entry.json` | Collection pointer entry with 14
official sub-skill `children` |
| `skills/dingtalk-cli/catalog-metadata.v1.json` | Governance sidecar |
| `manifest.json` | `stats.totalSkills` 62 → 63; `version` 1.2.30 →
1.2.31; `lastUpdated` |
| `README.md` | External-entry count and list kept in sync |

### External dependency disclosure

The CLI is **separately distributed third-party software**; this entry
is a marketplace listing only. The dependency is disclosed in all four
required places:

- **Discovery description** (`entry.json#i18n.<locale>.shortDesc`): the
operator installs `dingtalk-workspace-cli` from npm and completes
DingTalk OAuth sign-in (**no username-and-password login**); DesireCore
does not bundle, license, install or operate DingTalk or this CLI.
- **`compatibility.requirements`** (4 entries): the `dws` binary on
PATH, Node.js >= 16.7.0, an operator-authorized session from `dws auth
login` (without it the skills must stop before the external call and
must never fabricate a successful result), and the fact that capability
coverage depends on the organization's granted OAuth scopes and DingTalk
entitlements.
- **Localized marketplace text**: sidecar `presentation.i18n` matches
`entry.json#i18n` verbatim, in both zh-CN and en-US.
- **Execution instructions**: the upstream `SKILL.md` files shipped with
the CLI, outside this repository.

`redistribution: verify-package-terms` makes the client surface a terms
notice on install.

### Source and governance trade-off (stated plainly)

The upstream git repository
`https://github.com/open-dingtalk/dingtalk-workspace-cli` — the URL the
publisher itself declares in the npm `package.json#repository` —
**currently returns 404 and is not publicly readable**. Therefore:

- `source` uses `kind: git` with that declared URL and **no `ref`**:
there is no observable commit, and inventing a pinned one is not
acceptable.
- Content provenance is consequently not immutable, so
`governance.availability` can only be `listing-only` (the installable
evidence gate in `validate_catalog_metadata.py` requires an immutable
ref, a known license, `reviewedAt` and `compliance`; none of these exist
here).
- `governance.license` stays `{state: "unknown"}`. `entry.json#license:
"Apache-2.0"` reflects the publisher's declaration and the
LICENSE/NOTICE shipped in the package, but there is no license evidence
file in this repository, so only the existing
`legacy-license-unverified` warning is produced.
- `timestamps.reviewedAt` and `releasePublishedAt` stay `unknown`; only
`catalogUpdatedAt` and `upstreamObservedAt` carry real observed values.
- `branding` declares `independent-listing` / `nominative` / `not-used`:
an independent listing, nominative use of the product name, and no
third-party logo (the icon is a generic terminal-window glyph).
- Because the source is unpinned, `gen-collection-children.py --check`
reports `SKIP` (the same path the existing `mattpocock-skills` entry
takes). The `children` list was written by hand against the
`multi/<id>/` layout actually observed in the distributed skill bundle.

### Validation (actually executed, all exit 0)

All seven checks from `.github/workflows/i18n-validate.yml` were run
locally and passed; the only warning attributable to this entry is
`legacy-license-unverified`, matching every other pointer entry.
`entry.json` additionally validates against the client's
`marketSkillEntrySchema` under Ajv.

The pre-publication public-information-boundary check in `CLAUDE.md` was
performed and passed with a zero-result scan across the working tree
(hidden files included), path names, branch name, commit text and this
PR text. The search tokens are kept outside the repository.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: yi-ge <jackyoncode@gmail.com>
2026-09-02 06:25:24 -04:00

205 lines
10 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "dingtalk-cli",
"name": "DingTalk Workspace CLI",
"category": "communication",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M3 8.5h18\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"m7 12.5 2 2-2 2\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12.5 16.5h4.5\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"open-dingtalk"
],
"i18n": {
"zh-CN": {
"name": "钉钉 CLI",
"shortDesc": "钉钉官方命令行工具 dws面向人与 AI Agent覆盖消息、文档、钉盘、日历、待办、邮件、AI 听记等 29 个产品域、1200+ 工具。需自行用 npm 安装 dingtalk-workspace-cli 并完成钉钉 OAuth 授权登录不支持账号密码登录DesireCore 不打包、不授权、不安装也不代运营钉钉或该 CLI。"
},
"en-US": {
"name": "DingTalk Workspace CLI",
"shortDesc": "Official DingTalk CLI (dws) for humans and AI agents, covering messaging, documents, drive, calendar, to-do, mail and AI minutes across 29 product domains and 1200+ tools. You install the dingtalk-workspace-cli npm package and complete DingTalk OAuth sign-in yourself (no username-and-password login); DesireCore does not bundle, license, install or operate DingTalk or this CLI."
}
},
"maintainer": {
"name": "open-dingtalk",
"verified": false,
"account": "open-dingtalk",
"url": "https://www.npmjs.com/package/dingtalk-workspace-cli"
},
"stewardship": "partner",
"license": "Apache-2.0",
"redistribution": "verify-package-terms",
"riskLevel": "high",
"source": {
"kind": "git",
"repoUrl": "https://github.com/open-dingtalk/dingtalk-workspace-cli.git",
"repoBranch": "main"
},
"children": [
{
"id": "dingtalk-aisearch",
"path": "multi/dingtalk-aisearch",
"i18n": {
"zh-CN": {
"shortDesc": "AI 搜问:按姓名、工号、部门、职责或上下级线索找人,并跨文档、消息、邮件与听记检索。命令前缀 dws aisearch。"
},
"en-US": {
"shortDesc": "AI Search: find people by name, staff ID, department, duty or reporting line, and search across documents, messages, mail and AI minutes. Command prefix: dws aisearch."
}
}
},
{
"id": "dingtalk-aitable",
"path": "multi/dingtalk-aitable",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉 AI 表格(多维表):建表、字段与记录增删改查、筛选排序、批量导入导出、仪表盘图表与数据源同步。命令前缀 dws aitable。"
},
"en-US": {
"shortDesc": "DingTalk AI Table (multi-dimensional base): create tables, manage fields and records, filter and sort, bulk import and export, dashboards and data-source sync. Command prefix: dws aitable."
}
}
},
{
"id": "dingtalk-calendar",
"path": "multi/dingtalk-calendar",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉日历与会议室:查询日程、创建或改期会议、预订会议室、查闲忙与共同空闲、增删参会人。命令前缀 dws calendar。"
},
"en-US": {
"shortDesc": "DingTalk calendar and meeting rooms: list events, create or reschedule meetings, book rooms, check free/busy and shared availability, and manage attendees. Command prefix: dws calendar."
}
}
},
{
"id": "dingtalk-chat",
"path": "multi/dingtalk-chat",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉群聊与消息:收发、编辑与撤回消息,建群与群成员管理,话题回复,搜索聊天记录,机器人与 Webhook 通知。命令前缀 dws chat。"
},
"en-US": {
"shortDesc": "DingTalk chats and messages: send, edit and recall messages, create and manage groups, threaded replies, chat history search, bots and webhook notices. Command prefix: dws chat."
}
}
},
{
"id": "dingtalk-contact",
"path": "multi/dingtalk-contact",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉通讯录精确查询:按 userId 查用户详情、部门、职位与邮箱,按完整手机号反查用户,查询本人、部门成员与角色。命令前缀 dws contact。"
},
"en-US": {
"shortDesc": "Precise DingTalk directory lookups: user detail, department, title and email by userId, reverse lookup by full phone number, own profile, department members and roles. Command prefix: dws contact."
}
}
},
{
"id": "dingtalk-doc",
"path": "multi/dingtalk-doc",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉在线文档:查找、创建、读取与编辑正文和块,评论、附件、版本、模板、协作者权限与分享,以及 docx/markdown/pdf 导出。命令前缀 dws doc。"
},
"en-US": {
"shortDesc": "DingTalk online documents: find, create, read and edit content and blocks; comments, attachments, versions, templates, collaborator permissions, sharing and docx/markdown/pdf export. Command prefix: dws doc."
}
}
},
{
"id": "dingtalk-drive",
"path": "multi/dingtalk-drive",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉文件管理(钉盘与文档空间):查找、上传下载、复制移动、重命名删除、回收站、权限与评论,以及本地目录比较与同步。命令前缀 dws drive。"
},
"en-US": {
"shortDesc": "DingTalk file storage (DingDrive and document spaces): find, upload, download, copy, move, rename, delete, recycle bin, permissions, comments, and local folder compare and sync. Command prefix: dws drive."
}
}
},
{
"id": "dingtalk-event",
"path": "multi/dingtalk-event",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉事件长连接监听:个人 IM 消息、已读与撤回、表情回应、群成员与群状态变化,以及 OA 审批任务与实例事件。命令前缀 dws event。"
},
"en-US": {
"shortDesc": "Long-lived DingTalk event streaming: personal IM messages, read receipts, recalls, reactions, group membership and state changes, plus OA approval task and instance events. Command prefix: dws event."
}
}
},
{
"id": "dingtalk-mail",
"path": "multi/dingtalk-mail",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉邮箱:撰写发送、查阅、搜索、回复与转发邮件,处理未读邮件与附件;收件人先由 dingtalk-contact 解析确认。命令前缀 dws mail。"
},
"en-US": {
"shortDesc": "DingTalk Mail: compose, send, read, search, reply to and forward mail, and handle unread items and attachments; resolve recipients with dingtalk-contact first. Command prefix: dws mail."
}
}
},
{
"id": "dingtalk-minutes",
"path": "multi/dingtalk-minutes",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉 AI 听记:查询或修改摘要、逐字稿、关键词、行动项与录音,上传音频、生成思维导图、查看发言人洞察与分享权限。命令前缀 dws minutes。"
},
"en-US": {
"shortDesc": "DingTalk AI Minutes: read or edit summaries, transcripts, keywords, action items and recordings; upload audio, build mind maps, and review speaker insights and sharing permissions. Command prefix: dws minutes."
}
}
},
{
"id": "dingtalk-misc",
"path": "multi/dingtalk-misc",
"i18n": {
"zh-CN": {
"shortDesc": "长尾产品集合OA 审批、考勤、日志日报、DING 紧急消息、直播、招聘、目标管理、电子表格、白板、原生 Markdown 与 OpenAPI 逃生舱。命令前缀见技能内产品索引表。"
},
"en-US": {
"shortDesc": "Long-tail product bundle: OA approvals, attendance, work reports, urgent DING messages, live streams, recruiting, goal management, sheets, whiteboards, native Markdown and a raw OpenAPI escape hatch. Command prefixes come from the skill's own product index."
}
}
},
{
"id": "dingtalk-shared",
"path": "multi/dingtalk-shared",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉 MultiSkill 的轻量共享入口提供全局执行契约、URL 类型预检与产品边界消歧,适用于泛称 DWS 操作或跨产品编排。"
},
"en-US": {
"shortDesc": "Lightweight shared entry point for the DingTalk MultiSkill set: global execution contract, URL type pre-checks and product-boundary disambiguation for generic or cross-product requests."
}
}
},
{
"id": "dingtalk-todo",
"path": "multi/dingtalk-todo",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉待办:创建、指派、批量新建与循环待办,标记完成,查询待办、紧急待办与逾期待办。命令前缀 dws todo。"
},
"en-US": {
"shortDesc": "DingTalk To-Do: create, assign, batch-create and repeat tasks, mark them complete, and query open, urgent and overdue items. Command prefix: dws todo."
}
}
},
{
"id": "dingtalk-wiki",
"path": "multi/dingtalk-wiki",
"i18n": {
"zh-CN": {
"shortDesc": "钉钉知识库与空间管理:创建与查找知识库、管理成员,以及库内节点的创建、列举、搜索、复制、移动、删除与动态查询。命令前缀 dws wiki。"
},
"en-US": {
"shortDesc": "DingTalk Wiki and space management: create and find knowledge bases, manage space members, and create, list, search, copy, move, delete and track nodes. Command prefix: dws wiki."
}
}
}
]
}