用途
project-add-items 是一个用于从各类来源批量创建 GitHub Project 项目条目的技能。它可以从需求定义书、任务列表、路线图等源文件中提取条目,并统一创建到指定的 GitHub Project 中。
主要能力
- 支持多种来源:文件路径(Markdown、YAML 等)、URL(GitHub Issue 列表、Wiki 页面等)、用户直接输入的内联文本。
- 解析并抽取以下信息:标题、正文/说明、优先级(High / Medium / Low)、大小(XS / S / M / L / XL)、分类(来自章节标题等)。
- 支持 Markdown 检查清单格式,例如:
## 认证功能
- [ ] 社交登录实现 (Priority: High, Size: L)
- [ ] 密码重置 (Priority: Medium, Size: M)
## 仪表盘
- [ ] 使用统计图表 (Priority: Low, Size: S)
- 支持 YAML 任务列表格式,例如:
tasks:
- title: "社交登录实现"
priority: High
size: L
description: "使用 OAuth2 的 Google/GitHub 登录"
使用方式
前提条件:
- 目标 GitHub Project 已存在。
- 已安装 gh CLI 并完成认证(带 project 权限)。
执行流程:
- 确定来源:从用户处获取条目来源(文件路径、URL 或内联文本)。
- 解析来源并抽取条目:按来源格式解析,提取标题、正文、优先级、大小、分类等信息。
- 获取字段元数据:
# 获取项目 ID
gh project view <number> --owner <owner> --format json -q '.id'
# 获取字段 ID 与选项 ID
gh project field-list <number> --owner <owner> --format json
使用 jq 将字段名解析为字段 ID、选项名解析为选项 ID。
- 批量创建条目:对每个抽取出的条目执行:
gh project item-create <number> \
--owner <owner> \
--title "<标题>" \
--body "<正文>" \
--format json
从输出中获取条目 ID。
- 设置字段值:对每个条目设置字段值:
# 设置 Priority
gh project item-edit \
--id <item-id> \
--field-id <priority-field-id> \
--project-id <project-id> \
--single-select-option-id <option-id>
# 设置 Size
gh project item-edit \
--id <item-id> \
--field-id <size-field-id> \
--project-id <project-id> \
--single-select-option-id <option-id>
# 设置 Status(默认:Todo)
gh project item-edit \
--id <item-id> \
--field-id <status-field-id> \
--project-id <project-id> \
--single-select-option-id <todo-option-id>
- 列出创建结果:以表格形式显示已创建条目(序号、标题、Priority、Size、Status)。
验证
第 6 步完成后,可用以下命令确认已创建的条目:
gh project item-list <number> --owner <owner> --format json --limit 999
若创建的标题出现在列表中,且 Priority / Size / Status 与预期一致,则视为完成。
适用场景
- 将需求定义书、任务清单、路线图等文档批量导入 GitHub Projects。
- 需要为大量条目统一设置优先级、大小、状态等字段时。
限制与注意事项
- 创建大量条目(20 条以上)时,需先向用户确认后再批量执行。
- 来源格式不明确时,需向用户确认。
- 字段值与项目选项不匹配时,跳过并给出警告。
- 需注意 GitHub API 速率限制,必要时调整批量大小。
- 需要网络(主要通过 API)。相关命令需以命令为单位禁用 sandbox 执行;在无法解除网络阻断的环境中无法运行。