← ClaudeAtlas

dingtalk-skill-creatorlisted

创建新的钉钉技能(dingtalk skill)。当用户提到"创建新技能"、"新建技能"、"开发钉钉技能"、"新增钉钉功能"、"添加钉钉接口支持"、"我需要一个钉钉 xxx 技能"、"钉钉待办"、"钉钉签到"、"钉钉考勤"、"钉钉审批"、"钉钉日程"等希望将某个钉钉 API 领域封装成可复用 skill 时,必须使用此技能。此技能包含完整的技能创建流程:SDK 探索 → SDK Python 测试 → 纯 HTTP Python 测试(两步全通过)→ SKILL.md 编写。测试未全部通过不得创建 skill。
breath57/dingtalk-skills · ★ 76 · AI & Automation · score 74
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