dingtalk-profile

$npx mdskill add DingTalk-Real-AI/dingtalk-workspace-cli/dingtalk-profile

Manage multiple DingTalk profiles and switch organizations for cross-org data access.

  • Solves switching between multiple DingTalk organizations or accounts.
  • Depends on the dws CLI binary and its profile/auth commands.
  • Decides to use this skill when user mentions switching orgs or current org lacks data.
  • Lists profiles, switches active profile, or applies --profile flag to commands.

SKILL.md

.github/skills/dingtalk-profileView on GitHub ↗
---
name: dingtalk-profile
description: 钉钉多组织 / profile 管理与跨组织取数。Use when 用户说 切换组织/换组织/跨组织/另一个钉钉/别的公司/多组织/看登录了哪些组织/profile,或在当前组织找不到群/人/数据需要去其他组织找。命令前缀:dws profile / dws auth / 全局 --profile。
cli_version: ">=1.0.40"
metadata:
  category: product
  stability: experimental
  requires:
    bins:
      - dws
---

# 钉钉多组织 / profile Skill

> 🧪 **EXPERIMENTAL · 试验版 / Preview** — multi 模式当前未达 stable 标准;接口、命名、跨 skill 引用后续可能调整。生产 / 共享环境请优先使用 mono 模式(`dws skill setup --mode mono`)。

> **PREREQUISITE:** Read the `dws-shared` skill first for auth, global flags, product routing, URL preflight, error codes, and safety rules. The `dws` binary must be on PATH.

<!-- SAFETY_PREAMBLE_INJECT -->

dws 可同时登录多个钉钉账号,同一组织也可保留多个账号。一个 profile = 一个 `corpId + userId` 身份;当前 profile 决定本次命令注入哪个身份。

## 触发条件(命中任一即用本 skill)
- 显式:用户提到 切换 / 换 / 跨组织、另一个钉钉、别的公司、看登录了哪些组织、当前是哪个组织、某人 / 某群 / 某数据在别的组织
- 隐式(最常见、易漏):在当前组织读 / 搜没找到目标(群 / 人 / 数据),且 `dws profile list` 去重后显示已登录 ≥2 个组织 —— 别急着判「不存在」,按下方跨组织铁律去其他组织找
- 需要跨多个组织汇总 / 对比数据
- 用户问认证状态 / 登录了哪些组织或账号 / 当前账号是哪个

**不触发**:只登录 1 个组织时,按当前组织正常处理,不带 `--profile`。

## 命令
- `dws profile list --format json` — 默认列出全部账号;`profile` 是稳定选择器 `corpId:userId`,Token 状态现场读取且不刷新
- `dws profile switch <selector|->` — 持久切换账号;`-` 切回上一个
- 全局 `--profile <selector>` — 单次指定身份,不改当前 profile
- `dws auth login` — 新账号新增 profile;同一 `corpId + userId` 重登只刷新该账号
- `dws auth status [--profile <selector>]` — 查看并按需刷新指定身份;刷新失败返回未认证和真实原因

`selector` 支持 `corpId:userId`、`corpId:userName`、`corpName:userId`、`corpName:userName`,也兼容单独的 corpId、唯一 corpName 和本地 profile 名。名称只用于输入;重名时必须按报错候选改用 `profile list` 返回的稳定 `corpId:userId`。

只传组织时必须存在唯一 `isOrgCurrent=true` 账号。多账号组织没有默认账号时先让用户指定账号;禁止选择第一项、最近登录或最近使用账号。`primaryProfile/isPrimary` 仅兼容输出,不参与选择。

## 跨组织铁律(必须执行,不得跳过)
「找群 / 找人 / 找数据」(chat search、aisearch / contact、doc / wiki 搜索等读 / 搜场景)在当前组织没命中、且 `dws profile list` 按 `corpId` 去重后显示 ≥2 个组织时,每个组织使用唯一 `isOrgCurrent=true` 项的 `profile` 各搜一遍;命中即用,全部组织都没有才追问用户。多账号组织没有默认账号时先询问用户。禁止把同一组织的多个账号重复当成多个组织。

## 跨组织聚合(agent 编排,无内置 --all-orgs)
① `dws profile list --format json` 按 `corpId` 分组 → ② 每组取唯一 `isOrgCurrent=true` 的稳定 `profile`;没有则询问用户 → ③ 对每个稳定 `profile` 各取一次数 → ④ 合并并标注来源组织和账号。

## 安全护栏(务必遵守)
- 只有 `dws profile list` 按 `corpId` 去重后显示 ≥2 个组织才启用跨组织逻辑;同组织多账号不算多组织。
- 自动跨组织只对「读 / 搜」。写 / 发 / 删 / 撤回等操作默认只在当前组织做;确需带 `--profile` 跨组织写时,必须先与用户确认目标组织。
- 持久切换 `dws profile switch`(改默认组织)按写操作对待:未经用户明确要求不得执行。跨组织找数一律用一次性 `--profile`,不改当前组织。
- `dws auth logout` 默认退出全部账号;组织选择器退出该组织全部账号;精确选择器或本地 profile 名只退出一个账号。执行前必须确认目标范围。

More from DingTalk-Real-AI/dingtalk-workspace-cli

SkillDescription
dingtalk-agoal钉钉 Agoal 目标管理。Use when 用户说 目标管理/Agoal/战略解码/经营合约/计分卡/OKR/目标模板/周月报提交统计/跟催。Distinct from dingtalk-todo(待办任务)、dingtalk-report(日志)。命令前缀:dws agoal。
dingtalk-aisearchAI 搜问 - 搜人首选入口(按姓名/部门/职位/职责/上下级/手机号/工号维度)。Use when 用户说 找同事/找人/谁负责XX/XX的负责人是谁/查上级/查下级/团队成员/XX工号是谁/XX手机号。Distinct from dingtalk-contact(精确按 userId 查详情)。命令前缀:dws aisearch。
dingtalk-aitable钉钉 AI 表格(多维表)。Use when 用户说 AI表格/多维表/数据表/base/table/建表/查记录/写数据/字段/记录增删改查/筛选/排序/公式/模板搜索/批量导入CSV或JSON/导出/仪表盘/图表/上传附件到表格/按字段类型建表。Distinct from 主 dws skill 的 dws sheet(电子表格/单元格读写/公式)、dws doc(文档编辑)。命令前缀:dws aitable。
dingtalk-attendance钉钉考勤。Use when 用户说 考勤/打卡记录/查打卡/查班次/考勤汇总/考勤规则/出勤情况/请假加班补卡/排班/考勤组/假期余额。命令前缀:dws attendance。支持查询与写操作(班次、排班、考勤组、个人规则设置、假期规则/余额等),写操作需二次确认后再加 --yes。
dingtalk-calendar钉钉日历与会议室。Use when 用户说 约会议/查日程/订会议室/查闲忙/加参会人/改期/取消会议/今天的日程/本周日程/共同空闲。视频会议发起/邀请入会/会中控制当前 CLI 不支持,应提示在钉钉客户端操作。Distinct from dingtalk-minutes(听记)、dingtalk-todo(待办)。命令前缀:dws calendar。
dingtalk-chat钉钉群聊与消息。Use when 用户提到 发消息/编辑或撤回已发送消息/单聊/群聊/建群/普通群升级外部群/群昵称/会话分组/群成员管理/@消息/收藏消息/机器人群发/Webhook通知/发图片或文件到群。Distinct from dingtalk-ding(紧急DING消息/短信/电话)、dingtalk-mail(邮件)、dingtalk-edu-group(班级群)。命令前缀:dws chat。
dingtalk-contact钉钉通讯录查询与组织管理(用户、部门、角色、花名册、离职员工、企业与企业账号)。Use when 用户说 查部门/我的信息/按 userId 查/修改员工或自己的资料/创建或更新部门/创建或更新企业账号/邀请员工。Distinct from dingtalk-aisearch(模糊搜人首选:找同事/查上下级/谁负责)。命令前缀:dws contact。
dingtalk-dev钉钉开放平台企业内部应用管理:应用查询/创建/修改/删除/停启、凭证、权限点、成员、安全配置、网页应用、机器人、版本发布。Use when 用户说 开发者后台应用/开放平台应用/企业内部应用/agentId/clientId/appKey/appSecret/customKey/应用权限/权限点/scopeValue/创建机器人/智能体机器人/机器人配置/机器人回调/IP白名单/登录重定向/端内免登/应用版本/版本发布/发布审核/选审批人/把机器人接到本地调试/connect。
dingtalk-devdoc钉钉开放平台开发文档搜索。Use when 用户说 开放平台文档/API 文档/接口文档/调用报错/开放接口怎么调。Distinct from dingtalk-doc(钉钉云文档)。命令前缀:dws devdoc。
dingtalk-dingDING 紧急消息(应用内 / 短信 / 电话)。Use when 用户说 DING一下/紧急通知/电话DING/短信DING/必达消息/电话叫人。Distinct from dingtalk-chat(普通群聊消息)、dingtalk-outbound-call(企业外呼)。命令前缀:dws ding。