daily-meeting-update について
日々の作業、予定、ブロッカーを整理するための、対話形式のデイリースタンドアップ作成スキルです。許可を得たうえで GitHub、Jira、Claude Code の活動を参照し、Markdown形式にまとめます。
主な機能
- 01連携機能を検出し、アクセス前に同意を確認
- 02GitHub と Jira の最近の活動を取得
- 03Claude Code のセッション履歴を任意で参照
- 04昨日・今日・ブロッカー・議題について質問
- 05活動情報を反映したMarkdown更新を生成
活用シーン
- 01毎日のスタンドアップ用に進捗をまとめる
- 02複数リポジトリのコミット、PR、レビューを整理
- 03Jiraチケットを確認しながら今後の作業を計画
- 04Claude Codeの履歴からソース管理外の作業を思い出す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ softaworks/ agent-toolkit --skill daily-meeting-updateインストール後、Claude Code で/daily-meeting-updateを入力して読み込まれたか確認します。
同梱ファイルREADME.mdscripts/claude_digest.py
詳細
Daily Meeting Update
インタラクティブなインタビューを通じて、デイリースタンドアップ/ミーティングの更新内容を生成します。ツールが設定済みだと決めつけないでください。まず確認してください。
ワークフロー
START
│
▼
┌─────────────────────────────────────────────────────┐
│ Phase 1: DETECT & OFFER INTEGRATIONS │
│ • Check: Claude Code history? gh CLI? jira CLI? │
│ • Claude Code → Pull yesterday's session digest │
│ → User selects relevant items via multiSelect │
│ • GitHub/Jira → Ask user, pull if approved │
│ • Pull data NOW (before interview) │
├─────────────────────────────────────────────────────┤
│ Phase 2: INTERVIEW (with insights) │
│ • Show pulled data as context │
│ • Yesterday: "I see you merged PR #123, what else?" │
│ • Today: What will you work on? │
│ • Blockers: Anything blocking you? │
│ • Topics: Anything to discuss at end of meeting? │
├─────────────────────────────────────────────────────┤
│ Phase 3: GENERATE UPDATE │
│ • Combine interview answers + tool data │
│ • Format as clean Markdown │
│ • Present to user │
└─────────────────────────────────────────────────────┘
フェーズ 1: 連携の検出と提案
ステップ 1: サイレント検出
利用可能な連携をサイレントに確認します(エラーは抑制し、ユーザーには表示しないでください)。
| 連携 | 検出方法 |
|---|---|
| Claude Code History | .jsonl ファイルを含む ~/.claude/projects ディレクトリが存在する |
| GitHub CLI | gh auth status が成功する |
| Jira CLI | jira コマンドが存在する |
| Atlassian MCP | mcp__atlassian__* ツールが利用可能である |
| Git | git リポジトリ内にいる |
ステップ 2: GitHub/Jira 連携の提案(利用可能な場合)
Claude Code ユーザー: このフェーズのすべての質問には
AskUserQuestionToolツールを使用してください。
GitHub/Git:
HAS_GH または HAS_GIT の場合:
"I detected you have GitHub/Git configured. Want me to pull your recent activity (commits, PRs, reviews)?"
Options:
- "Yes, pull the info"
- "No, I'll provide everything manually"
「はい」の場合:
"Which repositories/projects should I check?"
Options:
- "Just the current directory" (if in a git repo)
- "I'll list the repos" → user provides list
Jira:
HAS_JIRA_CLI または HAS_ATLASSIAN_MCP の場合:
"I detected you have Jira configured. Want me to pull your tickets?"
Options:
- "Yes, pull my tickets"
- "No, I'll provide everything manually"
ステップ 3: GitHub/Jira データの取得(承認された場合)
GitHub/Git — 承認された各リポジトリについて:
- 前日以降に、ユーザーがコミットした内容
- ユーザーが作成/マージした PR
- ユーザーが行ったレビュー
Jira — ユーザーに割り当てられ、過去 24 時間以内に更新されたチケット
重要なポイント: 結果を保存し、フェーズ 2 のインタビューでコンテキストとして使用してください。
ステップ 4: Claude Code History の提案
この連携は、Claude Code で行ったすべての作業を記録します。Git や Jira にない作業を思い出すのに役立ちます。
検出:
ls ~/.claude/projects/*/*.jsonl 2>/dev/null | head -1
Claude Code の履歴が存在する場合、次のように尋ねます:
"I can also pull your Claude Code session history from yesterday. This can help recall work that isn't in git/Jira (research, debugging, planning). Want me to check?"
Options:
- "Yes, pull my Claude Code sessions"
- "No, I have everything I need"
「はい」の場合、ダイジェストスクリプトを実行します:
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --format json
次に、multiSelect でセッションを提示します:
multiSelect: true を指定して AskUserQuestionTool を使用し、ユーザーが関連する項目を選択できるようにします:
"Here are your Claude Code sessions from yesterday. Select the ones relevant to your standup:"
Options (multiSelect):
- "Fix authentication bug (backend-api)"
- "Implement OAuth flow (backend-api)"
- "Update homepage styles (frontend-app)"
- "Research payment providers (docs)"
重要なポイント: ユーザーは、どのセッションが業務関連かを選択します。個人プロジェクトや実験は除外できます。
次の場合はダイジェストスクリプトを実行しないでください:
- ユーザーが Claude Code の履歴を「いいえ」と明確に答えた場合
- ユーザーがすべてを手動で提供すると述べた場合
~/.claude/projectsディレクトリが存在しない場合
ダイジェストスクリプトが失敗した場合:
- フォールバック: Claude Code 連携をサイレントにスキップし、インタビューを続行します
- よくある問題: Python 未インストール、前日のセッションがない、権限エラー
- スタンドアップの流れを妨げないでください。このスクリプトは補助的なものであり、必須ではありません
フェーズ 2: インタビュー(インサイト付き)
Claude Code ユーザー: インタビューを行うには
AskUserQuestionToolツールを使用してください。構造化された選択肢により、より良い UX を提供できます。
取得したデータをコンテキストとして使用し、質問をより的確にします。
質問 1: 昨日
データを取得できた場合は、まずそれを表示します:
"Here's what I found from your activity:
- Merged PR #123: fix login timeout
- 3 commits in backend-api
- Reviewed PR #456 (approved)
Anything else you worked on yesterday that I missed?"
データを取得できなかった場合:
"What did you work on yesterday/since the last standup?"
ユーザーの回答が曖昧な場合は、次のようにフォローアップの質問をします:
- 「Xについて、もう少し詳しく教えてください」
- 「何か具体的に完了したことはありますか?」
質問 2: 今日
"What will you work on today?"
Options:
- [Text input - user types freely]
Jira データを取得できた場合は、次のように提案できます:
"I see you have these tickets assigned:
- PROJ-123: Implement OAuth flow (In Progress)
- PROJ-456: Fix payment bug (To Do)
Will you work on any of these today?"
質問 3: ブロッカー
"Do you have any blockers or impediments?"
Options:
- "No blockers"
- "Yes, I have blockers" → follow-up for details
質問 4: 議論したいトピック
"Any topic you want to bring up at the end of the daily?"
Options:
- "No, nothing to discuss"
- "Yes" → follow-up for details
Examples of topics:
- Technical decision that needs input
- Alignment with another team
- Question about prioritization
- Announcement or info for the team
フェーズ 3: 更新内容の生成
すべての情報をまとめて、整形された Markdown にします:
# Daily Update - [DATE]
## Yesterday
- [Items from interview]
- [Items from GitHub/Jira if pulled]
## Today
- [Items from interview]
## Blockers
- [Blockers or "No blockers"]
## PRs & Reviews (if pulled from GitHub)
- [PRs opened]
- [PRs merged]
- [Reviews done]
## Jira (if pulled from Jira)
- [Tickets updated]
## Topics for Discussion
- [Topics or "None"]
---
*Links:*
- [PR links]
- [Ticket links]
基本原則
- インタビューが主 — ツールは補助であり、人間のコンテキストを置き換えるものではありません
- アクセス前の同意 — どの連携からデータを取得する場合も、必ず事前に確認してください
- コンテキストに応じた質問 — インタビュー中に取得したデータを示し、記憶を呼び起こします(「PR #123 をマージしたのを確認しました…」など)
クイックリファレンス
| フェーズ | アクション | ツール |
|---|---|---|
| 1. 検出と提案 | gh/jira/Claude 履歴を確認し、ユーザーに尋ね、データを取得する | Bash(サイレント)、AskUserQuestionTool* |
| 2. インタビュー | インサイト付きで 4 つの質問をする | AskUserQuestionTool* |
| 3. 生成 | Markdown に整形する | テキスト出力 |
*Claude Code のみ: 構造化された質問には AskUserQuestionTool ツールを使用してください。
Claude Code ダイジェストスクリプト
# Get yesterday's sessions as JSON
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --format json
# Get today's sessions
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --date today --format json
# Filter to specific project
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --project ~/my-app --format json
セッション例
Claude: "Let's prepare your daily! I detected GitHub configured. Want me to pull your recent activity?"
User: "Yes"
Claude: "Which repos should I check?"
User: "backend-api and frontend-app"
[Claude pulls GitHub data silently]
Claude: "I can also pull your Claude Code session history from yesterday. Want me to check?"
User: "Yes"
[Claude runs digest script, gets 5 sessions]
Claude: "Here are your Claude Code sessions from yesterday. Select the ones relevant to your standup:"
☑ Fix authentication timeout bug (backend-api)
☑ Implement OAuth flow (backend-api)
☐ Update personal blog (blog) - [user unchecks personal project]
☑ Research payment providers (docs)
☐ Debugging test failures (experiments)
User: [selects 3 relevant items]
Claude: "Here's what I found from your activity:
- Merged PR #120: fix login timeout
- Opened PR #125: feat: add OAuth flow
- Reviewed PR #123 (approved), PR #456 (changes requested)
- 5 commits in backend-api
- [From Claude Code] Fix authentication timeout bug
- [From Claude Code] Implement OAuth flow
- [From Claude Code] Research payment providers
Anything else you worked on yesterday that I missed?"
User: "No, that covers it"
Claude: "What will you work on today?"
User: "Continue the OAuth feature and deploy to staging"
Claude: "Any blockers?"
User: "No"
Claude: "Any topic to bring up at the end of the daily?"
User: "Yes, I want to discuss the architecture of the new payments module"
[Claude generates update]
出力例
# Daily Update - 2026-01-22
## Yesterday
- Worked on authentication feature
- Research on payment providers
- Merged PR #120 (fix: login timeout)
- Opened PR #125 (feat: add OAuth flow)
## Today
- Continue OAuth feature
- Deploy to staging
## Blockers
- No blockers
## PRs & Reviews
- **Opened:** PR #125 - feat: add OAuth flow
- **Merged:** PR #120 - fix: login timeout
- **Reviews:** PR #123 (approved), PR #456 (changes requested)
## Topics for Discussion
- Architecture of the new payments module
---
*Links:*
- https://github.com/org/repo/pull/125
- https://github.com/org/repo/pull/120
アンチパターン
| 避けるべきこと | 理由(専門的な知見) | 代わりに |
|---|---|---|
| 確認せずに gh/jira を実行する | ユーザーの個人リポジトリが見えている場合や、公開したくない機密性の高いプロジェクトの文脈にいる場合があるため | 必ず最初に確認し、ユーザーにリポジトリを選んでもらう |
| 現在のディレクトリだけが唯一のプロジェクトだと想定する | 開発者は同時に 2~5 個のリポジトリ(フロントエンド、バックエンド、インフラなど)で作業することが多いため | 「どのプロジェクトに取り組んでいますか?」と尋ねる |
| ツールのデータがあってもインタビューを省略する | ツールは何が起きたかは記録できるが、なぜそうしたのか、その背景(調査、会議、計画)は捉えられないため | インタビューを主とし、ツールは補助として使う |
| 4 つの質問がすべて終わる前に更新を生成する | ユーザーには、話の流れを変えうる重大なブロッカーや議題があるかもしれないため | インタビューを完了させてから生成する |
| コミットメッセージをそのまま含める | コミットメッセージは「fix」「wip」など簡潔すぎることが多く、経緯が伝わらないため | 人が読んで分かる成果にまとめる |
| インタビューの後でデータを求める | インタビュー中に洞察を示すと質問の質が上がるため(「PR #123 をマージしたのを確認しました。他に何かありますか?」など) | 先にデータを取得し、その文脈を踏まえてインタビューする |
禁止事項
- ツールが設定済みだと決めつけない — 多くの開発者は gh をインストールしていても認証していなかったり、jira CLI が誤ったインスタンスを指していたりするため
- 「議論したいトピック」の質問を省略しない — この質問はスタンドアップで最も価値が高いことが多く、ツールでは捉えられないため
- 箇条書きを 15 個より多く生成しない — スタンドアップは 2 分以内で読めるべきで、長すぎる更新は聞き手の関心を失わせるため
- 文脈なしにチケット番号や PR 番号を含めない — 「PROJ-123」だけでは意味が伝わらないため、必ずタイトルか概要を含める
- ユーザーが明示的に承認していないリポジトリからデータを取得しない — 他のリポジトリが見える場合でも、境界を尊重する