بنقرة واحدة
yida-login
宜搭平台登录态管理技能,通过 Playwright 管理登录态(Cookie 持久化 + 扫码登录),获取 CSRF Token。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
宜搭平台登录态管理技能,通过 Playwright 管理登录态(Cookie 持久化 + 扫码登录),获取 CSRF Token。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
宜搭平台退出登录技能,清空本地 Cookie 缓存内容。
宜搭自定义页面开发技能,包含宜搭表单 JS API 调用(增删改查/流程/工具类共 27 个)、React 16 JSX 组件开发规范、状态管理模式与编码约束。
宜搭表单页面创建与更新技能,支持创建新表单(saveFormSchemaInfo + saveFormSchema + updateFormConfig)和更新已有表单(getFormSchema + saveFormSchema + updateFormConfig),支持 19 种字段类型(含 SerialNumberField 流水号)和字段增删改操作。
宜搭自定义页面创建技能,通过调用 saveFormSchemaInfo 接口快速创建自定义展示页面。
宜搭表单 Schema 获取技能,通过调用 getFormSchema 接口获取指定表单的完整 Schema 结构,用于分析字段定义、组件配置、确认字段 ID(fieldId)等。
宜搭自定义页面发布技能,将 JSX 源码经 Babel 编译、UglifyJS 压缩后构建 Schema,并通过 saveFormSchema 接口部署到宜搭平台。
| name | yida-login |
| description | 宜搭平台登录态管理技能,通过 Playwright 管理登录态(Cookie 持久化 + 扫码登录),获取 CSRF Token。 |
| license | MIT |
| compatibility | ["opencode","claude-code"] |
| metadata | {"audience":"developers","workflow":"yida-auth","version":"1.0.0","tags":["yida","auth","login","cookie"]} |
本技能提供宜搭平台的登录态管理能力,支持 Cookie 持久化和自动验证,首次使用需扫码登录,后续自动复用 Cookie。
当以下场景发生时使用此技能:
场景:手动触发扫码登录 命令:
python3 .claude/skills/yida-login/scripts/login.py
输出:
{"csrf_token":"b2a5d192-xxx","corp_id":"dingxxx","user_id":"1955225xxx","base_url":"https://abcd.aliwork.com"}
场景:CSRF Token 失效但 Cookie 有效 命令:
python3 .claude/skills/yida-login/scripts/login.py --refresh-csrf
python3 .claude/skills/yida-login/scripts/login.py
无需任何参数,登录地址从项目根目录的 config.json 中读取(loginUrl 字段),登录后可能跳转到 abcd.aliwork.com 等域名。
输出:登录成功后,将 csrf_token、base_url(跳转后的实际域名)和 Cookie 信息以 JSON 格式输出到 stdout,同时 Cookie 持久化到项目根目录的 .cache/cookies.json。
⚠️ 重要:
base_url取自登录成功后浏览器实际跳转到的域名,而非config.json中配置的loginUrl或defaultBaseUrl。例如,即使loginUrl配置为https://www.aliwork.com,如果你的账号所属组织对应的是abcd.aliwork.com,平台会自动跳转,最终base_url将是https://abcd.aliwork.com。后续所有 API 请求(包括yida-publish发布)都会使用这个base_url。如需发布到特定域名,请确保config.json中的loginUrl指向该域名对应的组织,并且你的账号属于该组织。
项目根目录通过向上查找
config.json或.git目录来定位。
.cache/cookies.json 缓存(包含 Cookie 和 base_url)csrf_token(tianshu_csrf_token)、corp_id 和 user_id(tianshu_corp_user),无需访问任何页面tianshu_csrf_token,视为失效,打开有头浏览器让用户扫码登录base_url(从登录后实际跳转的 URL 获取)pip install playwright && playwright install chromium)yida-login/
├── SKILL.md # 本文档
└── scripts/
└── login.py # 登录脚本
项目根目录/
├── config.json # 全局配置(loginUrl、defaultBaseUrl)
└── .cache/
└── cookies.json # 登录态缓存(运行时自动生成,含 Cookie + base_url)
脚本成功执行后,最后一行输出 JSON:
{
"csrf_token": "b2a5d192-db90-484c-880f-9b48edd396d5",
"corp_id": "ding9a0954b4f9d9d40ef5bf40eda33b7ba0",
"user_id": "19552253733782",
"base_url": "https://abcd.aliwork.com",
"cookies": [...]
}
csrf_token从 Cookietianshu_csrf_token的 value 中提取;corp_id和user_id从 Cookietianshu_corp_user的 value 中提取,格式为{corpId}_{userId},按最后一个_分隔。
base_url是登录后浏览器实际跳转到的域名(如https://abcd.aliwork.com),可能与config.json中的loginUrl不同。其他脚本应使用此值作为 API 请求的基础地址,而非硬编码域名。
其他脚本可通过管道接收并解析 stdout 最后一行获取登录态信息。
.cache/cookies.json 文件格式(兼容旧版纯 Cookie 数组):
{
"cookies": [...],
"base_url": "https://abcd.aliwork.com"
}
csrf_token、corp_id、user_id 不存储在缓存中,每次启动时直接从 Cookie 列表中提取(tianshu_csrf_token 和 tianshu_corp_user 字段)。
所有脚本(login.py 及各 JS 脚本)从项目根目录的 config.json 读取配置,不再硬编码 URL:
{
"loginUrl": "https://www.aliwork.com/workPlatform",
"defaultBaseUrl": "https://www.aliwork.com"
}
| 字段 | 说明 |
|---|---|
loginUrl | 扫码登录页面地址(登录成功后平台可能自动跳转到其他域名) |
defaultBaseUrl | API 请求的默认基础地址(仅当 base_url 未从登录态中获取时作为兜底使用,正常流程不会用到) |
各 skill 脚本通过解析接口响应体的 errorCode 字段来判断登录态异常,并自动调用本技能处理:
| errorCode | 含义 | 处理方式 |
|---|---|---|
"TIANSHU_000030" | csrf 校验失败(csrf_token 过期) | 调用 login.py --refresh-csrf 无头刷新 csrf_token,无需重新扫码 |
"307" | 登录状态已过期(Cookie 失效) | 调用 login.py 触发完整重新登录(可能需要扫码) |
注意:错误判断基于响应体 JSON 的
errorCode字段,而非 HTTP 状态码。
清空本地 Cookie 缓存文件内容即可完成退出,下次调用任意技能时将自动触发重新扫码登录:
echo -n "" > .cache/cookies.json
适用场景:
注意:Cookie 缓存文件位于项目根目录(含
README.md或.git的目录)的.cache/目录下。退出登录不影响已部署的页面和已保存的数据。
yida-publish:发布时自动调用本技能获取登录态yida-create-app、yida-create-page、yida-create-form-page:通过管道将本技能输出传入