mcpField
G
gh-work-report

gh-work-report

github.com/rysweet生产力7655 次安装21 周前更新
代码仓库

关于 gh-work-report

为使用 GitHub CLI(`gh`)的用户生成 GitHub 活动报告的技能,可汇总所有已认证账户在指定时间段内的仓库、Pull Request、Issue 和发布记录。报告包含项目活动、主题、重点成果及图表,并保存为 Markdown 文件。

主要功能

  1. 01检测并遍历已认证账户
  2. 02汇总仓库、PR、Issue 和发布
  3. 03跨账户合并并去重
  4. 04生成图表与项目报告
  5. 05将报告保存为 Markdown 文件

适用场景

  1. 01回顾过去一周的开发活动
  2. 02整理多个 GitHub 账户的工作
  3. 03生成月度或季度项目报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rysweet/amplihack --skill gh-work-report

安装后在 Claude Code 中输入/gh-work-report确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference.md
templates/
monthly-report.yml
pages-index.html
weekly-report.yml

详细介绍

GitHub 工作报告技能

生成涵盖所有已通过身份验证的 gh 账号的丰富 GitHub 活动报告。

调用方式

用户可以通过以下短语触发此技能:

  • /gh-work-report(默认:最近 7 天)
  • /gh-work-report show me the last 30 days
  • generate a github work report for the last 90 days
  • what did I work on this week
解析时间范围

从用户消息中提取天数。有效值:1、5、7、30、90。如果未指定或给出的值无效,则默认为 7。

工作流

按顺序执行以下步骤。每完成一步后将其标记为已完成。

步骤 1:检测账号
gh auth status 2>&1

解析输出,识别所有已通过身份验证的账号(例如,github.com 上的 rysweet、github.com 上的 rysweet_microsoft)。存储 account 值列表,并记录当前处于活动状态的账号。

步骤 2:收集每个账号的数据

对于每个账号,切换到该账号并收集数据:

gh auth switch --user <ACCOUNT>

然后收集:

2a. 最近有活动的仓库
# Get repos the user pushed to in the time window
gh api graphql --paginate -f query='
query($cursor: String) {
  viewer {
    repositories(first: 100, after: $cursor, orderBy: {field: PUSHED_AT, direction: DESC}) {
      pageInfo { hasNextPage endCursor }
      nodes {
        nameWithOwner
        url
        description
        pushedAt
        homepageUrl
        isPrivate
      }
    }
  }
}'

筛选 pushedAt 在时间范围内的仓库。

2b. 拉取请求
gh search prs --author=@me --created=">YYYY-MM-DD" --limit 200 --json number,title,repository,state,createdAt,url,mergedAt

另外收集在此时间范围内合并的 PR(不只是创建的 PR):

gh search prs --author=@me --merged=">YYYY-MM-DD" --limit 200 --json number,title,repository,state,createdAt,url,mergedAt

按 URL 去重。

2c. 问题
gh search issues --author=@me --created=">YYYY-MM-DD" --limit 100 --json number,title,repository,state,createdAt,url
2d. 发布版本
# For each active repo, check for releases
gh api repos/{owner}/{repo}/releases --jq '.[].tag_name' | head -5
步骤 3:合并并去重

合并所有账号的数据。按 nameWithOwner 对仓库去重,按 URL 对 PR 去重。为每个条目标记生成该条目的账号。

步骤 4:分析和综合

这是你发挥作用、超越原始数据的环节:

  1. 识别主题:按主题对仓库/PR 分组(例如,“基础设施”“安全”“新功能”)。使用仓库描述、PR 标题和观察到的模式。
  2. 突出重要成果:具有重大影响的 PR——合并的大型功能、重要的错误修复、新建的仓库。
  3. 提取使用示例:对于值得关注的功能,根据 PR 标题、描述和仓库 README 编写简短的“使用方法”代码片段。
  4. 发现新工作:在此时间范围内首次提交的仓库。
步骤 5:生成报告

使用 reference.md 中的模板结构。报告必须包含:

  • 执行摘要(3-5 句)
  • 活动概览,包含 mermaid 图表
  • 各项目章节,包含 PR 表格
  • 主题和重要成果
  • 值得关注的功能的使用示例
  • 包含原始数据链接的附录

将报告保存为名为 gh-work-report-YYYY-MM-DD-to-YYYY-MM-DD.md 的 Markdown 文件。

步骤 6:恢复原账号

切换回报告开始前处于活动状态的账号:

gh auth switch --user <ORIGINAL_ACCOUNT>
步骤 7:提供自动化基础设施

生成报告后,询问用户:

是否要我创建一个私有 GitHub 仓库,用于自动生成每周/每月报告,并创建一个可浏览报告的 GitHub Pages 网站?

如果用户同意,请按照 reference.md § Infrastructure Setup 中的说明设置基础设施。

关键规则

  • 绝不硬编码用户名——始终从 gh auth status 检测
  • 绝不使用回退方案——不允许静默默认值、2>/dev/null 或硬编码值。发生错误时,必须明确报错并提供描述性信息。
  • 所有图表都必须由代码生成——每个图表和表格中的所有数字都必须来自实际 API 数据。绝不编造或估算图表数据。
  • 使用 4 种查询筛选条件,确保完整覆盖 PR:created:>DATE(新建)、is:open(所有进行中的工作)、merged:>DATE(时间范围内合并)、closed:>DATE(时间范围内关闭)。按 URL 去重。
  • 限制图表时间范围——甘特图和时间线图必须限定在报告时间范围内。将开始日期限制为 max(pr_date, window_start)。
  • 妥善处理私有仓库——提及私有仓库,但除非报告本身是私有的,否则不要透露敏感详情
  • 日期计算:使用 date -d "$DAYS days ago" +%Y-%m-%d(Linux)获取开始日期
  • 速率限制:如果 gh api 返回 403,请等待后重试。对于大型结果集,使用 --paginate。
  • 结果为空也没关系——如果某个账号没有活动,简要说明后继续

身份验证与自动化

  • 本地(多账户):使用 ./run.sh [days],通过 gh auth switch 在所有已进行本地身份验证的账户之间切换。对于拥有多个账户(例如,公共账户 + EMU)的用户,推荐采用此方式。
  • GitHub Actions(单账户):使用带有 PAT 密钥的工作流模板。PAT 绑定到单个身份,无法跨账户使用。
  • 双 PAT 方案:要让 Actions 跨两个账户运行,请使用单独的 PAT 密钥(ACCOUNT1_PAT、ACCOUNT2_PAT),并在每次 API 调用时显式指定 --header "authorization: token $PAT"。
  • GitHub Pages 仅提供静态服务——必须在其他位置生成报告(本地脚本、Actions、gh-aw)。Pages 仅负责提供输出内容。

参考文件

  • reference.md — 报告模板、mermaid 图表模式、基础设施设置指南
  • templates/weekly-report.yml — 用于自动生成报告的 GitHub Actions 工作流
  • templates/pages-index.html — GitHub Pages 汇总站点模板

评论

支持 Markdown