stylework-yunxiao-requirement-synclisted
Install: claude install-skill PANGKAIFENG/ai-product-manager-skills
# StyleWork 云效需求同步
## Overview
把用户指定的云效需求视图通过界面导出,转换成固定字段和迭代分组,再写入已有钉钉表格的一个新 Sheet。这个 Skill 有外部写入副作用,必须先完成本地预检,再创建 Sheet;不得覆盖或修改旧 Sheet。
## Hard Boundaries
- V1 只执行“云效 -> 钉钉”,不把钉钉内容写回云效。
- 内置浏览器只负责云效��面、登录和 Excel 导出;不得自行抓取云效分页接口或私有 API 替代导出。
- 钉钉文档探测、新建 Sheet、写入、设样式、冻结和置顶只能使用 `dws`。
- DWS 缺能力或失败时不得改用浏览器、`curl`、HTTP API、人工复制粘贴或其他写入方式绕过。
- 不创建新的钉钉文件,只在用户给定的现有在线表格中新增 Sheet。
- 用户未明确要求执行同步时,只给预检或说明,不产生外部写入。
## Context Intake
按以下优先级取得云效视图 URL 和钉钉表格 URL:
1. 当前用户消息中的明确 URL;
2. `$HOME/Documents/Codex/stylework-yunxiao-requirement-sync.local.json` 的 `yunxiao_view_url` 与 `dingtalk_sheet_url`;
3. 缺少时各问一次,不猜测、不搜索历史浏览记录。
月份优先取用户明确指定的目标月份;否则从导出数据的迭代字段推断。存在多个月份且用户未指定时,在写入前询问一次。浏览器导出不可用时,接受用户给出的本地 Excel。
## Fixed Field Contract
读取 `references/field-contract.md`。最终列顺序严格为:
`标题、负责人、创建者、迭代、技术难度、优先级、客户名称、URL`
- 不包含 `父ID`。
- 不包含 `描述`。
- `创建者` 不得改成 `创建人`。
- 不得去重、合并相似标题或擅自过滤行。
- 缺失非关键值保持空白,不补造描述、难度、优先级、客户或负责人。
## Workflow
### 1. Load tool contracts
执行前读取当前运行时的 `browser:control-in-app-browser`、`spreadsheets` 和 `dws` Skill。实际浏览器自动化前必须读取内置浏览器的实时工具文档;不要依赖过期 selector 或截图坐标。
### 2. Export from Yunxiao
1. 在内置浏览器打开目标视图并确认当前筛选范围与目标月份一致。
2. 若登录失效,暂停并请用户在内置浏览器扫码;用户确认完成后继续当前步骤,不重启整套流程。
3. 通过云效界面打开导出,选择固定 8 个字段并下载 Excel。
4. 浏览器导出失败时报告原因,并切换为等待用户提供本地 Excel;不得私自调用云效 API。
### 3. Preflight and transform locally
用 Spreadsheets 能力读取 Excel,按 `references/field-contract.md` 生成一个只含 8 列的 CSV 中间文件:
1. 校验表头、原始数据行数、空标题、空迭代、空 URL 和迭代格式。
2. 解析 `YY.M.W`,按年份、月份、周次升序排序;同迭代内保持原始顺序。
3. 不同迭代之间插入恰好 3 个空行。
4. 未知迭代、目标