gh-work-report について
GitHub CLI(`gh`)を使って GitHub の活動レポートを作成するスキルです。指定期間のリポジトリ、プルリクエスト、Issue、リリースを認証済みアカウントから集め、図表付きの Markdown レポートにまとめます。
主な機能
- 01認証済みアカウントの検出と切り替え
- 02リポジトリ、PR、Issue、リリースの収集
- 03アカウント間の統合と重複排除
- 04図表とプロジェクトレポートの生成
- 05Markdown ファイルへの保存
活用シーン
- 01過去1週間の開発活動を振り返る
- 02複数の GitHub アカウントの作業を集約
- 03月次または四半期のプロジェクトレポートを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rysweet/ amplihack --skill gh-work-reportインストール後、Claude Code で/gh-work-reportを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference.mdtemplates/monthly-report.ymlpages-index.htmlweekly-report.yml詳細
GitHub 作業レポートスキル
認証済みのすべての gh アカウントにわたる、詳細な GitHub アクティビティレポートを生成します。
呼び出し
ユーザーは次のようなフレーズでこのスキルを呼び出します。
/gh-work-report(既定:過去 7 日間)/gh-work-report show me the last 30 daysgenerate a github work report for the last 90 dayswhat 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: 分析と要約
ここで生データに付加価値を加えます。
- テーマの特定:リポジトリや PR をトピック別(例:「インフラストラクチャ」「セキュリティ」「新機能」)に分類します。リポジトリの説明、PR のタイトル、観察したパターンを利用します。
- 大きな成果の紹介:大規模な機能のマージ、重要なバグ修正、新規リポジトリの作成など、影響の大きい PR を取り上げます。
- 利用例の抽出:注目すべき機能について、PR のタイトルや説明、リポジトリの README に基づいて、短い「使い方」スニペットを作成します。
- 新しい作業の検出:対象期間内に初めてのコミットがあったリポジトリを特定します。
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 の集約サイトテンプレート