dingtalk-skill-creatorlisted
Install: claude install-skill breath57/dingtalk-skills
# 钉钉技能创建器(Dingtalk Skill Creator)
将一个钉钉 API 领域封装成可复用技能的标准化流程。**每一步都必须实际完成且通过验证后才能进入下一步,不得跳过。**
---
## 流程总览
```
1. [探索] SDK 模块探索 → 整理接口清单与字段结构
2. [SDK] Python SDK 测试 → 全部通过才能继续
3. [HTTP] 纯 requests HTTP 测试 → 全部通过才能继续
4. [创作] 编写 SKILL.md + references/api.md
5. [收尾] 更新 README.md / README_EN.md / AGENTS.md
```
> **关键原则**:测试全用 Python(无 .sh 脚本)。
> 阶段 2 和阶段 3 的 `uv run pytest` 必须实际运行并全部绿色后,才能进入阶段 4。
> **新 API 优先 + token 不兼容原则**:钉钉平台存在新旧两套 API 体系,必须优先使用新版,且两种 token **不可混用**:
> - **新版(推荐)**:`POST https://api.dingtalk.com/v1.0/oauth2/accessToken` → 返回 `accessToken` + `expireIn`,配套 `api.dingtalk.com` 接口,放 Header `x-acs-dingtalk-access-token`
> - **旧版(避免)**:`GET https://oapi.dingtalk.com/gettoken` → 返回 `access_token`,配套 `oapi.dingtalk.com` 接口,放 URL 参数 `?access_token=`
> - **互不兼容**:新版 token 用于旧版接口、或旧版 token 用于新版接口,均会报 401/403,且错误信息不会说明是 token 类型错误,难以排查
> - **唯一例外**:userId → unionId 转换���`oapi.dingtalk.com/topapi/v2/user/get`)目前无 v1.0 等效接口,仍需旧版 token;此为已知例外,OLD_TOKEN 仅在转换这一步使用,不得传递给其他 API 调用
> **dt_helper.sh**:每个 skill 的 `scripts/dt_helper.sh` 封装了 token 获取与缓存、userId↔unionId 转换、配置读写等基础能力。在**bash 脚本**(如执行脚本)中直接调用即可;**Python 测试(阶段二/三)** 仍用内联 requests 逻辑,不依赖 dt_helper.sh。
---
## 阶段一:SDK 探索
### 1.1 查找 SDK 模块
```bash
# 列出与目标领域相关的 SDK 模块
ls /home/breath/project/personal/dingtalk-skills/tests/.venv/lib/python3.13/site-packages/alibabacloud_dingtalk/ \
| grep -i <关键词>
# 示例:todo / attend / approval / calendar
```
### 1.2 提取接口清单
```bash
SDK_BASE=tests/.venv/lib/python3.13/site-pa