mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 20:03:43 +08:00
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>
This commit is contained in:
204
skills/dingtalk-cli/entry.json
Normal file
204
skills/dingtalk-cli/entry.json
Normal file
@@ -0,0 +1,204 @@
|
||||
{
|
||||
"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."
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user