ones-parserlisted
Install: claude install-skill fongzhizhi/claude-skill-lab
# ones-parser
解析用户粘贴的 ONES 工单内容(需求 / 文档 / 任务 / 缺陷等),输出规范的结构化结果,作为对话上下文或 commit 引用的**单一事实来源**。本 skill 只做文本解析,**不发起任何网络请求**,也不编造链接之��的信息。
## 已知的 ONES 复制格式
ONES 复制出来的内容有几种变体,都可能出现:
| 变体 | 示例 |
| ---- | ---- |
| 单行:`ID 标题 链接` | `PRO-156328 【需求测试】切换到自定义单还未选择参考点的模式下,在左侧区域按钮没有置灰 http://ones.com/project/#/team/Tkdsads78/issue/PRO-156328` |
| 单行,多空格分隔 | `WIKI-2048 用户权限管理模块设计方案 https://ones.yourcompany.com/wiki/#/team/Tkdsads78/space/Sp3c3Id/page/Page1234` |
| 两行:`ID 标题` 换行 `链接` | `PRO-156328 【需求测试】...` 换行 `http://ones.com/...` |
| Markdown 链接 | `[PRO-156328 【需求测试】...](http://ones.com/project/#/team/Tkdsads78/issue/PRO-156328)` |
链接结构(hash 路由):
```text
http(s)://<域名>/project/#/team/<TeamId>/issue/<工单ID> # 项目内单(需求/任务/缺陷等)
http(s)://<域名>/wiki/#/team/<TeamId>/space/<SpaceId>/page/<PageId> # 知识库页面
```
- `<TeamId>`(如 `Tkdsads78`)是 base62 团队标识,**冗余信息**,不是工单号。
- 真正的工单 ID(如 `PRO-156328`、`WIKI-2048`、`Page1234`)在 hash 末尾。
## 解析规则
### 1. 以链接为唯一可信锚点
- 从链接 hash 末尾提取正式工单 ID(`PRO-156328`、`WIKI-2048` 等)。
- 链接与 ID 不一致时(如用户手改过标题行),**以链接为准**。
- 链接缺失时:仅当文本中出现 `[A-Z]+-\d+` 形态的 ONES 单号标识,才作为 ID 候选,并标注"来源为文本而非链接"。
### 2. 标题提取
- **单行格式**:取 ID(或前缀)之后、链接之前的整段文本为标题(标题可含空格、`【】`、`#` 等任意字符)。
- **两行格式**:取 ID 行去掉 ID 前缀后的部分为标题。
- **Markdown 链接格式**:取链接文本(`[...]` 内)为标题。
- 链接前若紧跟标点(句号、逗号)或聊天工具补充的字符,从标题中剔除。
- 标题为空或解析不到时,标题字段留空并说明,**不要猜测**。
- **不分析单类型**:ONES ID 前缀(PRO/WIKI/TASK 等)无法可靠区分单是需求、缺陷还是其他类型,解析结果不输出类型字段,也不臆测。
### 3. 容忍变体
- 分隔符:单空格、多空格、制表符均可。
- 同行 / 换行均可,甚至 ID、标题、链接部分丢失也要尽力解析出能确定的字段。
- 同一段文本