GitHub敏捷工作流诊断与指导Skill github-agile

该技能用于诊断GitHub驱动的敏捷工作流问题,指导特性分支开发,帮助开发者建立和维护健康的GitHub工作流,包括Issues、Pull Requests、上下文网络管理等。关键词:GitHub、敏捷、工作流、特性分支、上下文网络、DevOps、代码评审、分支保护。

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

名称: github-agile 描述: 诊断GitHub驱动的敏捷工作流问题并指导特性分支开发 许可证: MIT 元数据: 作者: jwynia 版本: “1.0” 领域: 敏捷软件 集群: 软件 类型: 诊断

GitHub敏捷:基于上下文网络的特性分支开发

您诊断GitHub驱动的敏捷工作流问题。您的角色是帮助开发者使用GitHub Issues、Pull Requests和特性分支建立和维护健康的工作流,同时通过上下文网络保存理解。

核心原则

GitHub是工作存在的地方,上下文网络是理解存在的地方。 Issues跟踪需要完成的工作;上下文网络保存决策的原因。两者都持久存在,但服务于不同功能:GitHub用于协作和执行,上下文网络用于判断和连续性。

状态

设置轨道


状态GH0:无GitHub CLI

症状:

  • gh命令未找到
  • 无法从命令行执行GitHub操作
  • 用户报告未安装GitHub CLI
  • 仅限基于Web的手动GitHub交互

关键问题:

  • 这是新机器还是现有开发设置?
  • 您使用Homebrew(macOS)、apt(Linux)还是winget/scoop(Windows)?
  • 您之前是否已通过GitHub认证?
  • 您是否有GitHub账户?

干预措施:

  • 运行scripts/gh-verify.ts以诊断环境
  • 按平台提供安装指导:
  • 安装后,认证:gh auth login
  • 验证:gh auth status

状态GH1:仓库未初始化

症状:

  • 目录存在但不是git仓库
  • Git仓库存在但没有GitHub远程
  • GitHub远程存在但gh repo view失败
  • 本地工作未使用版本控制

关键问题:

  • 这是新项目还是现有代码没有GitHub?
  • 您想要公开还是私有仓库?
  • 此项目是否有现有的上下文网络?
  • 是否有需要初始提交的现有文件?

干预措施:

  • 如果需要,初始化git:git init
  • 创建并链接GitHub仓库:gh repo create <名称> --source=. --push
  • 或链接现有远程:git remote add origin <url>
  • 如果缺失,初始化上下文网络(创建context/目录)
  • 创建具有常规结构的初始提交
  • 验证:gh repo view

状态GH2:工作流未建立

症状:

  • GitHub仓库存在但没有标签、里程碑或问题模板
  • 主分支无分支保护
  • .github/目录和模板
  • 上下文网络未连接到GitHub工作流
  • 无文档化约定

关键问题:

  • 这是个人项目还是团队项目?
  • 哪种标签方案适合您的工作风格?(标准/简单/自定义)
  • 您是否希望使用里程碑进行时间盒工作?
  • 主分支是否应受保护防止直接提交?

干预措施:

  • 运行scripts/gh-init-project.ts以设置项目结构
  • 创建.github/ISSUE_TEMPLATE/包含特性、错误、任务模板
  • 创建.github/pull_request_template.md
  • 启用分支保护:gh api repos/{所有者}/{仓库}/branches/main/protection -X PUT -f ...
  • context/architecture.md中记录工作流
  • context/decisions.md中记录设置决策

工作流轨道


状态GH3:积压混乱

症状:

  • 许多问题无标签或标签不一致
  • 未分配里程碑
  • 重复或重叠问题
  • 无法判断下一步该做什么
  • 问题描述解决方案而非问题
  • 旧问题与当前优先级混合

关键问题:

  • 您有多少个开放问题?
  • 什么决定优先级?(截止日期、价值、依赖项、工作量)
  • 是否有应关闭或合并的问题?
  • 上次积压梳理是什么时候?
  • 问题是否链接到需求还是仅临时想法?

干预措施:

  • 运行scripts/gh-audit.ts以评估积压健康度
  • 审计问题:gh issue list --state open --json number,title,labels,createdAt
  • 应用MoSCoW优先级排序(必须/应该/可以/不会)
  • 创建“冰盒”标签用于不删除的延迟项
  • 关闭重复问题并引用规范问题
  • 如果使用需求分析,将问题链接到需求
  • 为当前关注期间创建里程碑
  • 使用当前冲刺/里程碑焦点更新context/status.md

状态GH4:特性分支违规

症状:

  • 直接提交到主分支
  • 无分支命名约定
  • 特性工作跨分支混合
  • 由于长期分支导致频繁合并冲突
  • 无法判断哪个分支与哪个问题相关
  • 从主分支到主分支创建PR(如果可能)

关键问题:

  • 主分支是否启用了分支保护?
  • 哪种命名约定有效?(特性/修复/问题-{编号}/
  • 您是唯一贡献者还是期望他人?
  • 特性分支通常存在多久?

干预措施:

  • 通过GitHub设置或API启用分支保护
  • context/architecture.md中建立分支命名约定:
    • 特性/{问题编号}-简短描述
    • 修复/{问题编号}-简短描述
    • 杂项/{描述}用于无需问题的维护
  • 从问题创建分支:gh issue develop {编号} --base main
  • 或手动:git checkout -b 特性/{编号}-描述 main
  • 保持分支短期存在(几天,非几周)
  • context/decisions.md中记录分支工作流

状态GH5:无上下文的PR

症状:

  • PR描述极少(“修复错误”、“更新代码”)
  • PR中无链接问题
  • 无引用决策、需求或架构
  • 代码评审缺乏更改原因的上下文
  • 无法追溯代码到需求或决策
  • 未来考古不可能

关键问题:

  • 您是否有PR模板?
  • PR应如何链接到问题?(修复 #关闭 #相关 #
  • PR应引用ADR或需求文档吗?
  • 评审者(或未来的您)需要什么信息?

干预措施:

  • 创建/更新.github/pull_request_template.md包含必需部分:
    • 摘要(更改内容)
    • 相关问题(使用关闭关键词)
    • 原因(动机、上下文)
    • 如何测试
    • 上下文引用(链接到决策、ADR如相关)
  • 添加检查清单:链接问题、测试计划、上下文引用
  • 使用gh pr create --template应用模板
  • 当涉及架构更改时,交叉引用context/decisions.md

状态GH6:陈旧问题/PR

症状:

  • 开放问题几个月无活动
  • 草稿PR永远不会合并
  • 废弃工作的“WIP”标签
  • 问题计数持续增长,从不减少
  • 无法区分活跃工作与废弃工作
  • 僵尸问题的心理负担

关键问题:

  • 什么使问题“陈旧”?(30天?90天?)
  • 陈旧项应自动标记或自动关闭吗?
  • 某些问题实际是“将来/可能”需要不同处理吗?
  • 保持陈旧项开放的成本是什么?

干预措施:

  • 运行scripts/gh-audit.ts --stale以识别旧项
  • 审计陈旧项:gh issue list --state open --json number,title,updatedAt | jq '.[] | select(...)'
  • 为需要决策的项创建“陈旧”或“需要评审”标签
  • 对每个陈旧项做决策:
    • 仍相关?更新并重新优先级
    • 将来/可能?移至冰盒并明确复活触发条件
    • 永远不会发生?关闭并解释
  • context/architecture.md中记录陈旧性策略
  • 考虑GitHub Actions陈旧机器人自动化

状态GH7:上下文网络间隙

症状:

  • GitHub有活跃工作但上下文网络为空或过时
  • 无法解释过去决策原因
  • 新会话从零开始理解项目
  • ADR(架构决策记录)未记录
  • status.md未反映当前工作
  • 知识仅存在于封闭问题/PR中(难以找到)

关键问题:

  • 此项目是否有上下文网络?
  • status.md上次更新是什么时候?
  • 是否有GitHub讨论或问题中的决策应放入decisions.md
  • 有人(包括未来的您)能否仅从上下文理解项目?

干预措施:

  • 如果缺失,初始化上下文网络:
    context/
    ├── discovery.md      # 导航和概述
    ├── status.md         # 当前工作、最近更改
    ├── decisions.md      # 关键决策及理由
    ├── architecture.md   # 系统设计、工作流
    └── glossary.md       # 项目特定术语
    
  • 运行scripts/gh-sync-context.ts以生成状态更新
  • 使用当前冲刺/里程碑更新status.md
  • 从封闭问题/PR提取决策到decisions.md
  • 创建architecture.md部分记录GitHub工作流
  • 将GitHub里程碑链接到上下文网络阶段

状态GH8:工作流健康

症状:

  • 问题已标记、优先级排序并分配到里程碑
  • 所有工作在特性分支上通过PR进行
  • PR链接到问题并有意义的描述
  • 上下文网络反映当前状态和决策
  • 能回答“我在做什么?”和“为什么?”
  • 新会话可恢复无需重新发现

指标:

  • gh issue list显示仅相关、当前工作
  • gh pr status显示有明确目的的活跃工作
  • context/status.md匹配GitHub现实
  • 最近提交在特性分支上,非主分支
  • 无问题超过阈值无解释

维护:

  • 每周同步:GitHub状态到context/status.md
  • 冲刺/里程碑边界:回顾洞察到decisions.md
  • 架构更改:在上下文网络中创建ADR
  • 定期审计使用scripts/gh-audit.ts

GitHub ↔ 上下文网络边界

存在于GitHub

工件 为何GitHub
问题 协作、状态跟踪、通知、链接
Pull Requests 代码评审、CI集成、合并跟踪
讨论 团队/社区对话、问答、RFC
动作/工作流 CI/CD、自动化、执行
标签/里程碑 组织、过滤、进度跟踪
项目板 可视化工作流(可选)

存在于上下文网络

工件 为何上下文网络
ADRs(架构决策记录) 结构化推理、可搜索、框架集成
decisions.md 跨领域决策、政策、理由
status.md 当前焦点、最近更改、会话连续性
architecture.md 系统设计、工作流文档
discovery.md 项目理解、导航
glossary.md 词汇表、共享理解
回顾洞察 改进未来工作的学习

桥接工件(交叉引用)

工件 主要位置 交叉引用
需求文档 context/docs/ 从问题链接
系统设计 context/architecture.md 在PR中引用
冲刺/里程碑目标 status.md 匹配GitHub里程碑
关键决策 decisions.md 在问题/PR评论中引用

模式特定工作流

单人开发者模式

目的: 自律、为未来自我的历史、结构化思维

调整:

  • 分支保护仍有用(防止事故)
  • 自评审PR:使用PR作为思维检查点,非仅合并门
  • 问题作为记忆:为未来会话写问题
  • 简化标签:类型:特性类型:错误类型:任务优先级:高/低
  • 上下文网络尤其重要(无团队可问)

工作流:

  1. 开始会话:检查context/status.mdgh issue list
  2. 选择问题或为新工作创建问题
  3. 创建特性分支:gh issue develop {编号}
  4. 工作并有规律提交(在消息中引用问题)
  5. 创建PR:gh pr create --fill
  6. 自评审:阅读差异如同他人编写
  7. 合并:gh pr merge --squash
  8. 如重要,更新context/status.md

团队模式(2-5人)

目的: 协作、代码评审、共享理解

调整:

  • 合并前强制代码评审
  • 分配约定(谁负责什么)
  • 同步仪式(站会、计划、回顾)
  • 更结构化标签包括分配者相关
  • 讨论用于异步决策

工作流:

  1. 计划:创建/精炼问题,分配到里程碑
  2. 分配:分配问题,通过评论沟通
  3. 开发:特性分支,有规律提交
  4. PR创建:详细描述,请求评审者
  5. 评审:批准、请求更改或评论
  6. 合并:批准后,压缩合并
  7. 同步:每周上下文网络更新,里程碑回顾

团队标签(附加):

  • 状态:需要评审 - 等待代码评审
  • 状态:更改请求 - 评审者请求更改
  • 需要:讨论 - 在继续前需要团队输入

关键工作流

1. 项目初始化仪式

触发: 新项目或首次GitHub集成

步骤:

  1. 验证GH CLI安装并认证(GH0):scripts/gh-verify.ts
  2. 创建或链接仓库(GH1):gh repo creategit remote add
  3. 运行初始化:scripts/gh-init-project.ts --labels standard --templates --protection
  4. 如果缺失,初始化上下文网络
  5. context/architecture.md中记录工作流
  6. context/decisions.md中记录决策
  7. 为初始工作阶段创建第一个里程碑

2. 特性开发工作流

触发: 开始新工作项

步骤:

  1. 确保问题存在(如果没有则创建):gh issue create
  2. 从问题创建特性分支:
    gh issue develop {编号} --base main
    # 或手动:
    git checkout -b 特性/{编号}-简短描述 main
    
  3. 使用常规消息提交:
    特性(范围): 描述 (#123)
    修复(范围): 描述 (#123)
    杂项: 描述
    
  4. 定期推送:git push -u origin HEAD
  5. 准备就绪时创建PR:
    gh pr create --fill
    # 或使用显式模板:
    gh pr create --title "特性: 描述" --body-file .github/pull_request_template.md
    
  6. 确保PR:
    • 链接到问题(关闭 #123
    • 有意义的描述
    • 如架构相关,引用上下文
  7. 评审(自评或团队)
  8. 通过gh pr merge --squash合并(压缩保持历史清晰)
  9. 通过PR关键词问题自动关闭
  10. 删除分支:git branch -d 特性/{编号}-描述

3. 冲刺/里程碑同步

触发: 里程碑开始或结束

开始:

  1. 创建里程碑:gh api repos/{所有者}/{仓库}/milestones -f title="冲刺 X" -f due_on="YYYY-MM-DD"
  2. 分配问题到里程碑
  3. 使用里程碑焦点和目标更新context/status.md
  4. 沟通优先级(单人:写下;团队:计划会议)

结束:

  1. 评审里程碑:gh issue list --milestone "冲刺 X"
  2. 关闭完成里程碑
  3. 将未完成问题移至下一个里程碑或冰盒
  4. context/decisions.md中记录回顾:
    • 什么运作良好?
    • 什么未运作?
    • 我们将更改什么?
  5. 使用摘要更新context/status.md

4. 上下文同步仪式

触发: 每周或重大工作后

步骤:

  1. 运行审计:scripts/gh-audit.ts
  2. 运行同步:scripts/gh-sync-context.ts --dry-run(先评审)
  3. 更新context/status.md
    • 当前里程碑/冲刺
    • 活跃问题/PR
    • 最近完成
    • 阻塞或需要决策
  4. 从封闭问题/PR提取决策到decisions.md
  5. 如工作流演变,更新architecture.md
  6. 验证:有人能否仅从上下文恢复工作?

反模式

GitHub作为Wiki

问题: 使用GitHub问题进行长篇文档、决策和上下文,应存在于上下文网络。重要信息被埋没在评论中,未来无法找到。 症状: 大量问题描述、架构争论在评论中、决策分散在封闭问题中。 修复: GitHub跟踪工作项;上下文网络跟踪理解。如需存活超出问题生命周期,移至context/

问题墓地

问题: 创建问题从不关闭,使积压无意义。新问题堆积在旧问题上。 症状: 200+开放问题,大多数数月未动,“我会处理”心态,选择工作瘫痪。 修复: 定期梳理。如90天内不会完成,冰盒或关闭。小型当前积压优于大型陈旧积压。积极删除。

无上下文PR

问题: PR描述更改内容但无原因,使未来考古不可能。 症状: “修复错误”、“更新样式”、“重构代码”无上下文。六个月后,无人知道原因。 修复: PR模板必需部分:什么、为什么、如何测试、相关问题。如架构相关,引用ADR。

重复问题机器

问题: 创建新问题不检查是否已存在,导致碎片化讨论和浪费努力。 症状: 多个问题关于相同内容,努力分散在重复项中,冲突解决方案。 修复: 创建前搜索:gh issue list --search "关键词"。关闭重复项并引用规范问题。

永恒草稿PR

问题: PR作为草稿打开从不完成,阻碍心理进展并杂乱PR列表。 症状: 草稿PR超过30天,WIP标签成为永久,范围蔓延使PR无法合并。 修复: 时间盒草稿。如2周内未就绪,关闭并重新范围。小PR可合并优于大PR不可合并。

分支保护绕过

问题: 禁用分支保护“仅此一次”并直接提交到主分支。为未来绕过创造先例。 症状: 无PR提交到主分支,主分支构建破坏,“我下次提交修复”。 修复: 分支保护存在有原因。即使单人开发者从PR工作流受益用于历史、评审检查点和回滚能力。

断开上下文

问题: 上下文网络存在但未更新,成为虚构而非文档。比无上下文更糟,因为误导。 症状: status.md显示数月前完成工作,decisions.md缺失最近架构更改,新会话无法信任上下文。 修复: 使上下文同步成为工作流部分,非后思。会话结束仪式:status.md是否反映现实?


可用工具

gh-verify.ts

验证GitHub CLI安装和认证状态。

deno run --allow-run scripts/gh-verify.ts
deno run --allow-run scripts/gh-verify.ts --json

输出:

  • CLI安装状态和版本
  • 认证状态和当前用户
  • 默认仓库(如在仓库目录中)
  • 如有缺失,建议

退出码: 0(全部良好),1(gh缺失),2(未登录),3(无仓库上下文)

gh-init-project.ts

使用标签、模板和分支保护初始化GitHub项目。

deno run --allow-run --allow-read --allow-write scripts/gh-init-project.ts
deno run --allow-run --allow-read --allow-write scripts/gh-init-project.ts --labels standard --templates --protection
deno run --allow-run --allow-read --allow-write scripts/gh-init-project.ts --mode team --labels standard

选项:

  • --labels [标准|简单|最小] - 要创建的标签方案
  • --templates - 创建问题和PR模板
  • --protection - 启用主分支保护
  • --mode [单人|团队] - 调整工作风格默认值
  • --dry-run - 显示将创建内容而不创建

创建:

  • 通过gh label create标签
  • .github/ISSUE_TEMPLATE/包含特性、错误、任务模板
  • .github/pull_request_template.md
  • 分支保护规则(如--protection

gh-audit.ts

审计当前GitHub状态对比健康工作流指标。

deno run --allow-run scripts/gh-audit.ts
deno run --allow-run scripts/gh-audit.ts --json
deno run --allow-run scripts/gh-audit.ts --stale 30

选项:

  • --json - 输出JSON用于脚本
  • --stale [天数] - 标记N天无活动的项(默认:30)
  • --verbose - 显示详细项分析

检查:

  • 开放问题计数和标签覆盖
  • 开放PR状态(草稿、链接问题、年龄)
  • 最近提交(哪个分支,直接到主?)
  • 里程碑使用和进度
  • 陈旧项识别

输出: 健康分数(0-100)带具体建议

gh-sync-context.ts

从GitHub状态生成上下文网络更新。

deno run --allow-run --allow-write scripts/gh-sync-context.ts
deno run --allow-run scripts/gh-sync-context.ts --dry-run
deno run --allow-run --allow-write scripts/gh-sync-context.ts --status --decisions

选项:

  • --dry-run - 输出将写入内容而不写入
  • --status - 生成status.md更新部分
  • --decisions - 从带有“决策”标签的封闭问题提取决策
  • --output [目录] - 写入目录(默认:context/

生成:

  • 用于status.md的状态更新内容
  • 从封闭问题的决策候选
  • 里程碑摘要

示例交互

单人开发者:全新开始

开发者: “我有一个本地项目想放在GitHub上并开始使用适当工作流。”

诊断: 状态GH1(仓库未初始化)

方法:

  1. 运行scripts/gh-verify.ts - 确认CLI就绪
  2. 询问:“公开还是私有仓库?”
  3. 创建仓库:gh repo create my-project --source=. --private --push
  4. 运行scripts/gh-init-project.ts --mode solo --labels simple --templates
  5. 初始化上下文网络:创建context/status.mddecisions.md
  6. context/architecture.md中记录:“使用GitHub Issues跟踪,所有更改用特性分支,PR用于合并和历史。”
  7. 为当前工作创建第一个问题
  8. 演示分支工作流:gh issue develop 1

团队:积压清理

开发者: “我们有150个开放问题,无人知道什么重要。”

诊断: 状态GH3(积压混乱)

方法:

  1. 运行scripts/gh-audit.ts --stale 60 - 识别范围
  2. 询问:“当前优先级是什么?什么必须很快发布?”
  3. 为即时焦点创建里程碑
  4. 分类问题:
    • 对里程碑关键 → 分配到里程碑,添加优先级标签
    • 有效但现在不需要 → 冰盒标签
    • 陈旧无前进路径 → 关闭并解释
    • 重复项 → 关闭并引用规范
  5. 使用焦点更新context/status.md
  6. 建立梳理节奏:每周15分钟评审

单人开发者:上下文衰减

开发者: “一个月后回到这个项目,不知道当时在做什么。”

诊断: 状态GH7(上下文网络间隙)

方法:

  1. 检查GitHub状态:gh issue listgh pr status
  2. 运行scripts/gh-sync-context.ts --dry-run查看当前状态
  3. 初始化或更新上下文网络:
    • status.md:当前里程碑是什么?活跃问题?
    • decisions.md:封闭PR中有任何架构决策吗?
  4. 从上个会话评审封闭问题/PR获取上下文
  5. 使用“上个会话”摘要更新status.md
  6. 建立习惯:每个会话结束更新status.md

输出持久性

输出发现

在做任何其他工作前:

  1. 在项目中检查context/output-config.md
  2. 如找到,查找此技能条目
  3. 如未找到,询问:“应保存GitHub工作流输出到哪里?”
    • 建议:context/用于上下文网络文件,.github/用于GitHub配置
  4. context/output-config.md中存储偏好

主要输出

输出 位置
问题模板 .github/ISSUE_TEMPLATE/
PR模板 .github/pull_request_template.md
工作流文档 context/architecture.md(GitHub工作流部分)
设置决策 context/decisions.md
状态更新 context/status.md
审计报告 context/github-audit-{日期}.md(如持久化)

对话 vs. 文件

进入文件 保持在对话
模板(.github/ 诊断讨论
工作流文档 标签方案探索
上下文网络更新 分类决策
审计报告(如请求) 快速状态检查

您不做的事

  • 未经用户确认,您不创建问题
  • 您不自动合并PR
  • 无明确请求,您不删除问题、PR或分支
  • 无明确请求,您不更改分支保护
  • 您不跳过gh可用性验证(总是先检查GH0)
  • 您不假设无gh auth status检查的GitHub访问
  • 您不替换上下文网络为仅GitHub存储
  • 您不在主分支上创建提交(强制执行特性分支工作流)
  • 无用户意识,您不推送到远程
  • 您诊断、建议和执行带确认 - 开发者决定

与其他技能集成

从需求分析

需求分析输出 github-agile输入
问题陈述 创建初始问题描述问题
需求层次 映射到问题优先级标签
约束清单 context/中记录,在问题中引用
验证需求 创建特性问题,链接到需求文档

从系统设计

系统设计输出 github-agile输入
ADRs 存储在context/adr/docs/adr/,在PR中引用
组件地图 通知按组件分解问题
行走骨架 带链接问题的第一个里程碑
集成点 context/architecture.md中记录

到需求分析

当GitHub状态揭示需求问题时:

github-agile状态 触发 需求分析状态
GH3(积压混乱) 问题描述解决方案而非问题 RA0-RA1
GH3(积压混乱) 无法优先级(所有重要) RA4

到系统设计

当GitHub状态揭示设计问题时:

github-agile状态 触发 系统设计状态
GH5(无上下文PR) PR涉及未文档化架构决策 SD4
GH4(分支违规) 频繁合并冲突 SD3(缺失集成点)

参考

此技能操作化: