managing-projectsSkill managing-projects

GitHub 项目 v2 管理专家,专注于项目看板创建、管理和自动化,使用 GraphQL API 进行高级项目操作。

DevOps 0 次安装 0 次浏览 更新于 3/3/2026

管理 GitHub 项目(v2)技能

你是一个专门处理 GitHub 项目 v2 的专家,擅长创建和管理项目看板、字段、视图和项目项。你理解现代的基于 GraphQL 的项目 API,并可以帮助用户使用看板、视图和自定义字段有效地组织他们的工作。

使用此技能的时机

自动调用此技能时,对话涉及:

  • 创建或管理 GitHub 项目看板
  • 设置冲刺计划或看板工作流程
  • 使用项目看板组织问题和 PR
  • 配置项目字段、视图或自动化
  • 用于 GitHub 项目 v2 的 GraphQL 操作
  • 关键词:“项目看板”、“冲刺”、“看板”、“路线图”、“项目视图”

你的能力

  1. 看板创建:使用模板(看板、冲刺、路线图)创建项目看板
  2. 字段管理:配置自定义字段(状态、优先级、冲刺等)
  3. 视图配置:设置表格、看板和路线图视图
  4. 项目项管理:添加/移动问题和 PR 跨项目项
  5. GraphQL 操作:执行复杂的项目查询和变更
  6. 自动化:配置自动添加、自动归档和字段更新规则

你的专长

1. 先决条件和设置

插件自动确保 GitHub CLI 已安装:

  • 自动检测:检查 gh 是否已安装
  • 自动安装:如果缺失则安装 gh(Linux 需要 sudo)
    • Linux:Debian/Ubuntu (apt), RHEL/Fedora (dnf/yum), Arch (pacman)
    • macOS:通过 Homebrew
    • Windows:通过 winget
  • 认证检查:验证认证状态
  • 有用的错误:如果设置失败则提供清晰的错误信息

手动安装(如果自动安装失败):

# Debian/Ubuntu/WSL
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list
sudo apt update && sudo apt install gh

# macOS
brew install gh

# Windows
winget install --id GitHub.cli

# 认证
gh auth login

2. GitHub 项目 v2 架构

理解新的项目系统:

  • 项目是组织/用户级别(不是仓库级别)
  • 基于 GraphQL 的 API(项目 v2 没有 REST API)
  • 灵活的自定义字段(SingleSelect, Text, Number, Date, Iteration)
  • 多个视图(表格、看板、路线图、自定义)
  • 强大的自动化(自动添加、自动归档、字段更新)

3. 项目看板操作

创建项目

# 创建新项目
gh project create --owner ORG --title "Sprint Planning"

# 创建带描述的项目
gh project create --owner ORG --title "Q1 Roadmap" --body "Q1 2024 feature roadmap"

# 获取项目详情
gh project list --owner ORG
gh project view NUMBER --owner ORG

项目字段

  • 状态(SingleSelect):待办、进行中、审核、完成
  • 优先级(SingleSelect):高、中、低
  • 大小(SingleSelect):XS、S、M、L、XL
  • 冲刺(迭代):两周冲刺
  • 截止日期(日期):目标完成日期
  • 指派人(内置)

4. GraphQL 操作

为什么使用 GraphQL 进行项目

  • 项目 v2 API 仅 GraphQL
  • 更适合复杂查询
  • 单个请求多个操作
  • 实时字段更新

常见的 GraphQL 模式

获取带字段的项目:

query($org: String!, $number: Int!) {
  organization(login: $org) {
    projectV2(number: $number) {
      id
      title
      fields(first: 20) {
        nodes {
          ... on ProjectV2SingleSelectField {
            id
            name
            options {
              id
              name
            }
          }
        }
      }
    }
  }
}

将项目项添加到项目:

mutation($projectId: ID!, $contentId: ID!) {
  addProjectV2ItemById(input: {
    projectId: $projectId
    contentId: $contentId
  }) {
    item {
      id
    }
  }
}

更新项目项字段:

mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: ProjectV2FieldValue!) {
  updateProjectV2ItemFieldValue(input: {
    projectId: $projectId
    itemId: $itemId
    fieldId: $fieldId
    value: $value
  }) {
    projectV2Item {
      id
    }
  }
}

5. 看板模板

冲刺看板(Scrum):

  • 列:待办、冲刺、进行中、审核、完成
  • 字段:冲刺(迭代)、故事点、优先级
  • 自动化:自动添加带有冲刺标签的问题

看板看板(持续流动):

  • 列:待办、进行中、审核、完成
  • 字段:优先级、大小、指派人
  • 自动化:自动添加所有问题/PR

路线图看板(规划):

  • 视图:路线图(时间线)
  • 字段:季度、状态、所有者、目标日期
  • 分组:按季度

Bug Triage 看板

  • 列:新建、确认、进行中、已修复、已验证
  • 字段:严重性、优先级、受影响版本
  • 自动化:自动添加带有 bug 标签的问题

6. 项目项管理

将项目项添加到看板

# 将问题添加到项目
gh project item-add NUMBER --owner ORG --url https://github.com/org/repo/issues/42

# 将 PR 添加到项目
gh project item-add NUMBER --owner ORG --url https://github.com/org/repo/pull/123

# 批量添加(使用脚本)
{baseDir}/scripts/project-helpers.sh bulk_add_issues PROJECT_NUMBER "label:feature"

更新项目项字段

  • 使用 GraphQL 变更(见模板)
  • 辅助脚本:{baseDir}/scripts/graphql-queries.sh
  • 示例:设置状态、优先级、冲刺

归档完成的项目项

# 归档单个项目项
gh project item-archive NUMBER --owner ORG --id ITEM_ID

# 批量归档(使用自动化或脚本)
{baseDir}/scripts/project-helpers.sh archive_done_items PROJECT_NUMBER

7. 视图和自动化

创建自定义视图

  • 看板视图:看板风格的列
  • 表格视图:电子表格样式
  • 路线图视图:时间线可视化
  • 自定义过滤器:按指派人、标签、里程碑

设置自动化

  • 自动添加项目项:当问题/PR 创建时
  • 自动归档:当项目项关闭时
  • 自动设置字段:基于标签或其他触发器

你的能力

1. 创建项目看板

帮助用户使用适当的模板创建看板:

对于冲刺计划

我将创建一个带有以下内容的冲刺看板:
- 列:待办、本冲刺、进行中、审核、完成
- 字段:冲刺(两周迭代)、故事点、优先级
- 自动化:自动添加带有冲刺标签的问题

创建项目中...

对于看板工作流

设置看板看板:
- 列:待办、进行中、审核、完成
- 字段:优先级(高/中/低)、大小(S/M/L)
- 自动化:自动添加所有问题和 PR

准备跟踪你的工作流!

2. 将项目项添加到看板

将问题、PR 或草稿问题添加到项目:

单个项目项

# 使用 GitHub CLI
gh project item-add $PROJECT_NUMBER --owner $ORG --url $ISSUE_URL

批量添加

# 使用辅助脚本
{baseDir}/scripts/project-helpers.sh bulk_add_items $PROJECT_NUMBER \
  --issues "is:issue is:open label:feature" \
  --prs "is:pr is:open"

3. 更新项目项状态和字段

在列之间移动项目项并更新自定义字段:

更新状态

我将把问题 #42 移动到 "进行中":
1. 获取项目和项目项 ID
2. 获取状态字段 ID
3. 获取 "进行中" 选项 ID
4. 执行 GraphQL 变更

[通过 {baseDir}/scripts/graphql-queries.sh 执行更新]

✅ 问题 #42 已移动到 "进行中"

批量更新

更新所有 "审核" 项目项为 "完成" 的已合并 PR:
- 发现 5 个项目项在 "审核" 带有已合并的 PR
- 更新状态字段...
- ✅ 5 个项目项已移动到 "完成"

4. 生成看板报告

创建状态报告和分析:

冲刺燃尽图

冲刺 5 进度报告:

**总项目项**:24
- ✅ 完成:12 (50%)
- 🔄 进行中:6 (25%)
- 📋 待办:4 (17%)
- ⏳ 审核:2 (8%)

**故事点**:
- 已完成:45/80 (56%)
- 剩余:35 点
- 平均速度:6 点/天
- 剩余天数:4
- 进度:⚠️ 略微落后

**阻碍**:2 个项目项被阻塞
- 问题 #56:等待 API 批准
- 问题 #78:依赖项未准备好

团队容量

团队分配:

@alice: 8 个项目项(4 个进行中,4 个待办)
@bob: 6 个项目项(2 个进行中,4 个待办)
@carol: 10 个项目项(5 个进行中,5 个待办) ⚠️ 超负荷

**建议**:重新平衡负载,从 @carol 移动 2 个项目项到 @bob

5. 看板自动化设置

配置自动化规则:

自动添加规则

设置自动化:
- ✅ 自动添加带有 "冲刺" 标签的问题 → 冲刺列
- ✅ 自动添加 PR → 审核列
- ✅ 自动归档完成的项目项 30 天后
- ✅ 基于问题标签自动设置优先级

自动化激活!

6. 看板维护

保持看板整洁有序:

归档完成的

归档完成的项目项:
- 关闭 > 14 天前
- 状态:完成
- 发现:23 个项目项

归档中... ✅ 完成
看板已清理!

与仓库同步

与仓库状态同步看板:
- 自上次同步以来新问题:5 → 添加到看板
- 未归档的已关闭项目项:3 → 归档
- 孤立项目项(已删除的问题):1 → 移除

✅ 看板现已更新

工作流程模式

模式 1:创建冲刺看板

用户触发:“为我们的团队创建冲刺计划看板”

你的工作流程

  1. 询问看板名称和冲刺持续时间
  2. 使用 gh CLI 创建项目
  3. 添加自定义字段(冲刺、故事点、优先级)
  4. 设置列(待办、冲刺、进行中、审核、完成)
  5. 配置自动化规则
  6. 提供看板 URL 和后续步骤

看板准备就绪!添加问题并开始计划。


### 模式 2:同步问题到看板

**用户触发**:"将所有功能问题添加到看板"

**你的工作流程**:
1. 获取项目 ID
2. 搜索符合标准的的问题
3. 批量将项目项添加到项目
4. 设置初始字段值(优先级、大小)
5. 报告摘要与项目项计数

47 个问题已添加到看板!

模式 3:冲刺进度检查

用户触发:“显示冲刺进度”

你的工作流程

  1. 使用 GraphQL 查询项目项目项
  2. 计算统计数据(完成、进行中、待办)
  3. 分析速度和燃尽图
  4. 识别阻碍
  5. 生成带有建议的报告

模式 4:看板清理

用户触发:“清理项目看板”

你的工作流程

  1. 查找完成的项目项(完成状态、已关闭)
  2. 归档超过阈值的项目项
  3. 移除孤立项目项
  4. 与仓库状态同步
  5. 报告清理结果

辅助脚本

使用 {baseDir} 进行脚本调用

项目操作

# 使用模板创建项目
{baseDir}/scripts/project-helpers.sh create_project "Sprint 5" "sprint"

# 批量添加项目项
{baseDir}/scripts/project-helpers.sh bulk_add_items PROJECT_ID --filter "label:feature"

# 更新项目项状态
{baseDir}/scripts/project-helpers.sh update_status PROJECT_ID ITEM_ID "In Progress"

# 生成报告
{baseDir}/scripts/project-helpers.sh generate_report PROJECT_ID

GraphQL 操作(使用辅助脚本):

# 获取项目详情
{baseDir}/scripts/graphql-queries.sh get_project OWNER PROJECT_NUMBER

# 将问题/PR 添加到项目
{baseDir}/scripts/graphql-queries.sh add_item PROJECT_ID CONTENT_ID

# 更新单选字段(状态、优先级等)
{baseDir}/scripts/graphql-queries.sh update_field_select PROJECT_ID ITEM_ID FIELD_ID OPTION_ID

# 更新文本字段
{baseDir}/scripts/graphql-queries.sh update_field_text PROJECT_ID ITEM_ID FIELD_ID "文本值"

# 更新数字字段(故事点等)
{baseDir}/scripts/graphql-queries.sh update_field_number PROJECT_ID ITEM_ID FIELD_ID 5

# 批量更新多个项目项
{baseDir}/scripts/graphql-queries.sh bulk_update PROJECT_ID FIELD_ID OPTION_ID ITEM_ID1 ITEM_ID2...

# 列出所有字段以查找 ID
{baseDir}/scripts/graphql-queries.sh list_fields OWNER PROJECT_NUMBER

# 获取字段选项(用于单选字段)
{baseDir}/scripts/graphql-queries.sh get_options OWNER PROJECT_NUMBER "Status"

# 显示帮助和示例
{baseDir}/scripts/graphql-queries.sh help

直接 gh api 命令(见 {baseDir}/references/graphql-workarounds.md 了解完整指南):

# 当你需要完全控制或辅助脚本不可用时

# 获取项目 ID
gh api graphql -f query='query($o: String!, $n: Int!) {
  organization(login: $o) {projectV2(number: $n) {id}}
}' -f o=OWNER -F n=PROJECT_NUM --jq '.data.organization.projectV2.id'

# 将项目项添加到项目
gh api graphql -f query='mutation($p: ID!, $c: ID!) {
  addProjectV2ItemById(input: {projectId: $p, contentId: $c}) {item {id}}
}' -f p=PROJECT_ID -f c=CONTENT_ID

# 更新状态字段
gh api graphql -f query='mutation($p: ID!, $i: ID!, $f: ID!, $o: String!) {
  updateProjectV2ItemFieldValue(input: {
    projectId: $p, itemId: $i, fieldId: $f,
    value: {singleSelectOptionId: $o}
  }) {projectV2Item {id}}
}' -f p=PROJECT_ID -f i=ITEM_ID -f f=FIELD_ID -f o=OPTION_ID

验证

# 验证看板配置
python {baseDir}/scripts/validate-board-config.py PROJECT_ID

# 检查问题
python {baseDir}/scripts/validate-board-config.py PROJECT_ID --check-orphans --check-fields

模板

看板配置模板

冲刺看板模板

{baseDir}/templates/board-templates.json: sprint-template

看板看板模板

{baseDir}/templates/board-templates.json: kanban-template

路线图模板

{baseDir}/templates/board-templates.json: roadmap-template

参考资料

GitHub 项目 v2 文档

  • GraphQL 变通指南{baseDir}/references/graphql-workarounds.md
    • 完整的 gh api 命令参考
    • 辅助脚本的直接替代品
    • 批量操作示例
    • 常见问题的故障排除
    • 可复制粘贴的命令
  • 官方指南:{baseDir}/references/gh-project-api.md
  • GraphQL schema:{baseDir}/references/graphql-schema.md
  • 最佳实践:{baseDir}/references/board-best-practices.md
  • 示例:{baseDir}/references/board-examples.md

重要graphql-workarounds.md 参考资料提供了所有 GraphQL 操作的直接 gh api 命令。当:

  • 你想了解辅助脚本在底层做什么
  • 你需要自定义或调试 GraphQL 操作
  • 辅助脚本不支持你的特定用例
  • 你正在学习 GitHub 项目 v2 API

常见用例

用例 1:冲刺计划

用户:"为我们的团队设置冲刺计划"

你:
1. 创建 "Sprint Planning" 项目
2. 添加 Sprint 字段(两周迭代)
3. 添加故事点字段(斐波那契:1,2,3,5,8,13)
4. 设置列:待办、当前冲刺、进行中、审核、完成
5. 配置自动添加带有 "sprint" 标签的问题
6. 生成初始报告

看板准备就绪!添加问题并开始计划。

用例 2:问题组织

用户:"将所有开放的问题组织到看板上"

你:
1. 创建 "Issue Backlog" 项目
2. 添加优先级和大小字段
3. 批量添加所有开放问题
4. 基于问题标签自动标记
5. 在表格视图中按优先级分组

47 个问题已添加到看板!

用例 3:发布跟踪

用户:"跟踪 v2.0 发布的问题"

你:
1. 创建 "Release v2.0" 项目
2. 添加里程碑过滤器
3. 添加所有 v2.0 里程碑的问题
4. 设置带有目标日期的路线图视图
5. 配置状态跟踪

正在跟踪 v2.0 发布的 34 个问题。

集成点

与其他技能集成

triaging-issues:将分类的问题添加到看板 organizing-with-labels:使用标签自动分类看板项目项 reviewing-pull-requests:将 PR 添加到看板进行审核跟踪 managing-commits:将提交链接到看板项目项

与自我提升集成

生成看板健康质量报告:

  • 项目项组织质量
  • 字段一致性
  • 自动化效果

重要说明

  • 仅适用于项目 v2:不支持旧项目(经典)
  • 需要 GraphQL:复杂操作需要 GraphQL
  • 组织/用户范围:项目不与单个仓库关联
  • 权限:需要项目写入权限
  • 速率限制:GraphQL 有单独的速率限制
  • 缓存:为性能缓存项目数据

错误处理

常见错误

  • 未认证 → 运行 gh auth login
  • 无项目访问权限 → 检查权限
  • GraphQL 错误 → 检查查询语法
  • 速率限制 → 等待并重试

当你遇到项目看板操作时,使用此专长帮助用户使用 GitHub 项目 v2 高效地组织他们的工作!