mcpField
G
gh-work-report

gh-work-report

github.com/rysweet生産性7655 回インストール21 週間前に更新
リポジトリ

gh-work-report について

GitHub CLI(`gh`)を使って GitHub の活動レポートを作成するスキルです。指定期間のリポジトリ、プルリクエスト、Issue、リリースを認証済みアカウントから集め、図表付きの Markdown レポートにまとめます。

主な機能

  1. 01認証済みアカウントの検出と切り替え
  2. 02リポジトリ、PR、Issue、リリースの収集
  3. 03アカウント間の統合と重複排除
  4. 04図表とプロジェクトレポートの生成
  5. 05Markdown ファイルへの保存

活用シーン

  1. 01過去1週間の開発活動を振り返る
  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 を既定値にします。

ワークフロー

次の手順を順番に実行します。各手順を完了したらチェックを付けます。

Step 1: アカウントの検出
gh auth status 2>&1

出力を解析して、認証済みのすべてのアカウント(例:github.com の rysweet、github.com の rysweet_microsoft)を特定します。account の値を一覧として保存し、現在アクティブなアカウントを記録します。

Step 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(作成されたものだけではありません)も収集します。

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

URL で重複を除外します。

2c. Issue
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
Step 3: 統合と重複の除外

すべてのアカウントのデータを統合します。nameWithOwner でリポジトリの重複を除外し、URL で PR の重複を除外します。各項目に、その項目を取得したアカウントのタグを付けます。

Step 4: 分析と要約

ここで生データに付加価値を加えます。

  1. テーマの特定:リポジトリや PR をトピック別(例:「インフラストラクチャ」「セキュリティ」「新機能」)に分類します。リポジトリの説明、PR のタイトル、観察したパターンを利用します。
  2. 大きな成果の紹介:大規模な機能のマージ、重要なバグ修正、新規リポジトリの作成など、影響の大きい PR を取り上げます。
  3. 利用例の抽出:注目すべき機能について、PR のタイトルや説明、リポジトリの README に基づいて、短い「使い方」スニペットを作成します。
  4. 新しい作業の検出:対象期間内に初めてのコミットがあったリポジトリを特定します。
Step 5: レポートの生成

reference.md のテンプレート構成を使用します。レポートには以下を含める必要があります。

  • エグゼクティブサマリー(3~5 文)
  • アクティビティ概要(Mermaid チャート付き)
  • プロジェクトごとのセクション(PR テーブル付き)
  • テーマと大きな成果
  • 注目すべき機能の利用例
  • 付録(生データへのリンク付き)

レポートを gh-work-report-YYYY-MM-DD-to-YYYY-MM-DD.md という名前の Markdown ファイルとして保存します。

Step 6: 元のアカウントに戻す

レポートの作成前にアクティブだったアカウントに切り替えます。

gh auth switch --user <ORIGINAL_ACCOUNT>
Step 7: 自動化インフラストラクチャの提案

レポートの生成後、ユーザーに次のように尋ねます。

自動化された週次/月次レポートと、それらを閲覧するための GitHub Pages サイトを備えたプライベート GitHub リポジトリを作成しましょうか?

「はい」の場合は、reference.md § Infrastructure Setup の手順に従ってインフラストラクチャを設定します。

重要なルール

  • ユーザー名をハードコードしない — 必ず gh auth status から検出します
  • フォールバックを使用しない — 暗黙の既定値、2>/dev/null、ハードコードされた値を使用しません。エラーが発生した場合は、内容を明示して処理を失敗させます。
  • すべてのチャートはコードで生成する — すべてのチャートと表の数値は、実際の API データに基づく必要があります。チャートのデータを捏造したり推定したりしないでください。
  • PR を漏れなく取得するための 4 つのクエリフィルター:created:>DATE(新規)、is:open(すべての作業中 PR)、merged:>DATE(対象期間内にマージ)、closed:>DATE(対象期間内にクローズ)。URL で重複を除外します。
  • チャートの期間を制限する — ガントチャートとタイムラインチャートの対象期間をレポートの期間に限定します。開始日は max(pr_date, window_start) に制限します。
  • プライベートリポジトリは適切に扱う — 存在については記載しますが、レポート自体がプライベートでない限り、機密情報の詳細は公開しません。
  • 日付の計算:開始日には Linux の date -d "$DAYS days ago" +%Y-%m-%d を使用します。
  • レート制限:gh api が 403 を返した場合は、待機して再試行します。大量の結果セットには --paginate を使用します。
  • 結果が空でも問題ありません — アクティビティのないアカウントについては、簡潔に伝えて次に進みます。

認証と自動化

  • ローカル(複数アカウント):./run.sh [days] を使用します。ローカルで認証済みのすべてのアカウントで gh auth switch を活用します。複数のアカウント(例:一般公開用 + EMU)をお持ちのユーザーに推奨される方法です。
  • GitHub Actions(単一アカウント):PAT シークレットを使用するワークフローテンプレートを使います。PAT のスコープは 1 つの ID に限定されており、アカウントをまたいで使用することはできません。
  • 2 つの PAT を使用する方法:2 つのアカウントにまたがって 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 の集約サイトテンプレート

コメント