SuperAPI AI 工具集

project-board-enforcement

部署与运维

查看项目

更新于 10-16 04:02

技能介绍

Project Board Enforcement 是一个用于管理 GitHub Project 看板的技能,其核心定位是:GitHub Project 看板是所有工作状态的唯一真实来源,而非标签、评论或记忆。该技能不由用户直接调用,而是被其他技能在工作流的门控点调用,用以验证和强制项目看板的一致性。

用途 该技能用于确保所有工作项(issue、epic、initiative)在开始工作之前就已存在于 GitHub Project 看板中,并具备正确的字段状态。它为其他技能提供验证函数和门控,使项目看板成为工作流中状态检测与更新的权威依据。

主要能力 技能提供以下功能:

  1. verify_issue_in_project:门控函数,在开始任何工作之前验证 issue 是否在项目看板中。使用缓存数据,0 次 API 调用。若未找到,则返回 BLOCKED 并给出添加命令。
  2. verify_status_set:门控函数,验证 issue 的 Status 字段是否已设置。使用缓存数据,0 次 API 调用。
  3. add_issue_to_project:将 issue 添加到项目看板,刷新缓存并返回 item ID。需要 1 次写 API 调用加 1 次缓存刷新。
  4. set_project_status:设置项目状态,使用缓存中的字段 ID 和选项 ID,仅需 1 次 API 调用完成更新。可设置的状态包括 Backlog、Ready、In Progress、In Review、Done、Blocked。
  5. set_project_type:设置项目类型,使用缓存中的字段 ID 和选项 ID,仅需 1 次 API 调用。可设置的类型包括 Feature、Bug、Chore、Research、Spike、Epic、Initiative。
  6. 状态查询函数:get_issues_by_status、get_issues_by_type、get_epic_children、count_by_status,均使用缓存数据,0 次 API 调用。
  7. validate_transition:验证状态转换是否合法。

使用方式 该技能依赖以下环境变量:GITHUB_PROJECT(完整 URL,如 https://github.com/users/USER/projects/N)、GITHUB_PROJECT_NUM(项目编号 N)、GH_PROJECT_OWNER(所有者 @me 或组织名)。若缺失,必须停止并配置后再继续。 此外,技能要求所有读取操作必须使用 github-api-cache 提供的缓存数据,相关环境变量包括:GH_CACHE_ITEMS(缓存的项目条目 JSON)、GH_CACHE_FIELDS(缓存的项目字段 JSON)、GH_PROJECT_ID(项目节点 ID)、GH_STATUS_FIELD_ID(状态字段 ID)、GH_STATUS_*_ID(各状态选项 ID)。若未设置,需先调用 session-start 初始化缓存。

项目字段要求 每个项目必须配置以下字段: 必填字段:Status(单选,值:Backlog、Ready、In Progress、In Review、Done、Blocked);Type(单选,值:Feature、Bug、Chore、Research、Spike、Epic、Initiative);Priority(单选,值:Critical、High、Medium、Low)。 推荐字段:Verification(单选,值:Not Verified、Failing、Partial、Passing);Criteria Met(数字,已完成验收标准数);Criteria Total(数字,总验收标准数);Last Verified(日期);Epic(文本,父 epic issue 编号);Initiative(文本,父 initiative issue 编号)。

门控点 技能在工作流的以下位置强制进行项目看板验证:开始工作前(issue 必须在项目中)、创建 issue 后(加入项目并设置字段)、开始工作(Status → In Progress)、创建分支(验证项目成员身份)、PR 创建(Status → In Review)、工作完成(Status → Done)、阻塞(Status → Blocked)、创建 Epic(加入项目并设置 Type=Epic)、创建子 issue(加入项目并链接父级)。

状态转换规则 合法转换:Backlog → Ready → In Progress → In Review → Done;任意状态 → Blocked;Blocked → Backlog / Ready / In Progress。其他转换为无效。

标签与项目看板 该技能明确:不应使用标签表示状态(如 status:in-progress),而应使用项目看板的 Status 字段。标签仅用于补充信息:epic、epic-[name]、spawned-from:#N、review-finding。

同步验证 通过比较 git 分支与项目看板状态检测漂移:有分支的 issue 应处于 In Progress 或 In Review;In Progress 的 issue 应有活动分支。使用缓存数据完成,0 次 API 调用。

错误信息 技能提供可操作的错误修复提示:NOT_IN_PROJECT(issue 不在项目看板)、NO_STATUS(未设置状态字段)、INVALID_TRANSITION(无效状态转换)、PROJECT_NOT_FOUND(项目不可访问)。

集成与调用方 该技能被以下技能调用:issue-driven-development(所有状态转换)、issue-prerequisite(issue 创建后)、epic-management(epic 与子 issue 设置)、autonomous-orchestration(状态查询与更新)、session-start(同步验证)、work-intake(项目就绪检查)。依赖 github-api-cache 提供缓存数据与字段 ID。

调用方检查清单 通过任何门控之前需确认:GitHub API 缓存已初始化;issue 存在于项目中(从缓存验证);Status 字段已设置;Type 字段已设置;Priority 字段已设置(新 issue);Epic 链接已设置(如果是 epic 的子项);状态转换有效(如果更改状态)。

API 成本 使用缓存后,大多数读取操作从 1 次调用降为 0 次;add_issue_to_project 保持 2 次;set_project_status 从 4 次降为 1 次;set_project_type 从 3 次降为 1 次;verify_project_sync(10 个分支)从 10 次降为 0 次。

适用场景与限制 该技能适用于使用 GitHub Project 管理开发工作流的团队和自动化系统,尤其是需要确保工作项状态一致性的场景。它要求预先配置环境变量和缓存,且项目必须配置规定的字段。该技能不直接面向最终用户调用,而是作为强制门控组件集成在其他技能中。