/morning スキル
worklog(自律ワークログ)・team-digest(チームからの受信)・ai-handoff(引き継ぎログ)・MEMORY.md・
Google Calendar(今日の予定)・board/mirror/(未処理の封)を
読み取り専用で参照し、「チームから来ている依頼・今日の予定・前日までにやっていたこと・継続中の案件・
今日のおすすめタスク・未完了の引き継ぎ」を一画面にまとめる。
ファイルは一切書き換えない(Read / Glob / Grep / Bash の読み取り操作と、Google Calendar の読み取りのみ)。
⚠️ ローカルで完結しないのは手順 5.4(カレンダー)だけ。 そこが失敗しても他の手順は独立して動くので、朝のまとめ全体を止めない。
board-guard / memory-guard の保護パス(board/inbox/・board/dispatch-log.md・memory/・rules/・plugins/)には書き込みで触れない。
実行手順
1. 現四半期の worklog を Read
- 今日の日付から現四半期を算出する(4月始まり):
- 4-6月 = Q1、7-9月 = Q2、10-12月 = Q3、1-3月 = Q4
- 年度は4月起点(例:2026-07-17 なら FY2026-Q2。2026-01-17 のような1〜3月は前年度扱い=FY2025-Q4)
~/.claude/projects/-Users-you-dev/memory/worklog/FY<年度>-Q<n>.mdを Read する。- 存在しなければ
~/.claude/projects/-Users-you-dev/memory/worklog/内の.mdファイルのうち mtime が最新のものにフォールバックする(FY*-goals.mdやREADME.mdは対象外)。 - ファイル末尾から
## YYYY-MM-DD (曜日)単位の日付ブロックを探し、最新1〜2日分を抽出する。各ブロック内の### [案件] ...の見出しと状態:行を拾う。
2. 当日/前日の生ログを補助的に Read
~/.claude/board/worklog-index/<今日 YYYY-MM-DD>.jsonl~/.claude/board/worklog-index/<前日 YYYY-MM-DD>.jsonl
存在すれば各行を JSON として読み、first_prompt を軽く眺めて当日/前日の作業内容を補足把握する(ノイズが多いため主役にはしない。worklog の要約を優先し、これはあくまで補足情報)。存在しなければスキップする。
3. 直近の team-digest を Read
~/dev/digests/ にある team-digest-YYYY-MM-DD.md のうち、日付が新しいものを1件だけ Read する(ls -t ~/dev/digests/team-digest-*.md | head -1 相当)。日次自動実行(jp.acme.team-digest・Mac 起動時+10:30/13:00)が書き出す、member-a / member-b / member-c からの Slack メンションと Figma コメントのまとめ。
- 2日より古いファイルしか無ければ読まない(内容が古く、今朝の判断材料にならないため)。
- 今日の分とは限らない点に注意。 自動実行は Mac の起動時(RunAtLoad)に走り、10:30 / 13:00 が保険。通常は起動から数分で今日の分が揃うが、起動直後に「おはよう」と言った朝はまだ生成中で存在しないことがある。読んだファイルの日付は出力に必ず明記し、今日の分が無いときは「今日の分は生成中の可能性があります(Mac 起動時に自動生成・数分かかる)」と添える。
- ファイルから拾うのは次の3つだけ(全文は引用しない):
- 冒頭の「🔥 今すぐ対応(★★★)」の中身
- 末尾の「合計 アクション必要: X 件 / 情報共有のみ: Y 件」
- 各
依頼:行のうち me 宛のもの(「情報共有のみ」「me 宛ではない」と書かれているものは除く)から、優先度の高い順に最大3件
- ファイルが1件も無ければスキップする(自動実行が止まっている可能性があるので、その場合は出力の該当セクションに「team-digest の出力がありません」と1行だけ書く)。
4. ai-handoff の未完了ログを Grep
~/.claude/projects/-Users-you-dev/memory/ai-handoff/*.md を対象に status:\s*handoff を Grep する(dev 側のパスが正。-Documents-ACME- 側は使わない)。ヒットしたファイルのうち mtime が新しい順に数件(3件程度)を Read し、topic と本文冒頭から一言要約する。
5. MEMORY.md から今日のタスク候補を拾う
~/.claude/projects/-Users-you-dev/memory/MEMORY.md の ## Projects(進行中の作業) と ## AI Handoff(エージェント間引き継ぎログ) セクションを Read し、▶・要再開・待ち・未完了 等のマーカーを含む行を拾って今日のタスク候補にする。
5.2. 「待ち」を実物と突き合わせる(2026-09-04 追加・★memory を信じない)
手順5で拾った ▶・待ち・未完了 の行は、書かれた時点の状態であって現在の状態ではない。 そのまま出すと腐った待ちが朝の判断に流れる(実例=「PR #26 は OPEN のまま」が実際はクローズ済み、「Q2シートは読み替えを要相談」が実際は相談済み・返答待ち)。→ rules/common/memory-layers.md の「腐らせない書き方」
拾った行に PR 番号・リポジトリ名が含まれていたら、実物を1回だけ取り直す:
for r in your-org/brand your-org/app-context; do
echo "=== $r ==="
gh pr list --repo "$r" --state open --json number,title,isDraft,author,updatedAt \
--jq '.[] | "#\(.number) \(if .isDraft then "[Draft]" else "" end) \(.author.login) \(.updatedAt[0:10]) — \(.title)"' 2>/dev/null
done
- 対象リポジトリは、手順5で拾った行に出てきたものだけにする(固定リストを増やさない)
- memory に「OPEN」と書いてあるのに一覧に無い PR は、マージ済みかクローズ済み。 出力ではその旨を書き、
▶行が古いことを明示する - 逆に一覧にあるのに memory に無い PR も出す(取りこぼしている待ち)
- ⚠️ ここでは memory を書き換えない(このスキルは読み取り専用)。食い違いは出力に書いて本人に見せるだけにする
ghが無い・認証切れ・リポジトリに触れない場合は graceful skip(この節を飛ばして残りを出す)
5.4. 今日の予定を取得する(Google Calendar・2026-09-02 追加)
mcp__claude_ai_Google_Calendar__list_events で今日1日分の予定を取得する(チームの別メンバーの morning-briefing から取り入れた唯一の機能)。
- ⚠️ この手順だけが MCP に依存する。 他の手順はすべてローカルファイルの読み取りで完結している。MCP が繋がっていない・認証切れのときは、この節を省略して残りを出す(朝のまとめ全体を止めない)
- 拾うのは 開始時刻・タイトル・参加者数まで。会議の中身には踏み込まない
- ⚠️ ハドル・MTG の追加を提案しない(
async-communication-preference)。予定は「すでに入っているものを見る」だけに使う - 準備が要りそうなものに印をつける:自分が主催者/議題に自分の名前がある/
ai-handoffや team-digest で「この定例までに」と書かれている案件に対応する定例。判定できないものには印をつけない(推測で「準備が必要」と書かない) - 終日予定・辞退済みの予定は出さない
5.5. 未処理の封(/mirror)を数える
~/.claude/board/mirror/*.md(log.md は除く)を Grep し、- 状態: sealed を持つファイルを数える。日付が古い順に最大3件、見出し行(# <場面の一行説明>)と日付を拾う。
- 0件なら出力しない(セクションごと省略する)
- 封は「AIが先に書いたものを、実物と突き合わせる前の状態で置いてあるもの」。溜まるほど測定の機会を逃しているので、古いものから先に出す
- ここでもファイルは書き換えない(数えて読むだけ)
6. 統合して出力
上記1〜5.5を統合し、以下フォーマットで簡潔に出力する(各項目1〜2行、冗長な引用はしない):
🌅 おはようございます(YYYY-MM-DD 曜日)
## 📨 チームからの受信(team-digest YYYY-MM-DD 分)
- 🔥 ★★★: …(無ければ「★★★ なし」)
- アクション必要 X 件 / 情報共有のみ Y 件
- [送信者] 自分宛の依頼を最大3件・各1行
🔗 ~/dev/digests/team-digest-YYYY-MM-DD.md
## 🗓 今日の予定
- HH:MM タイトル(参加者N名)※準備が要るものだけ「← 要準備: 何が」を添える
(予定が無ければ「予定なし」。MCPが繋がらなければセクションごと省略)
## 📋 昨日までにやっていたこと
- (worklog最新日ブロックの案件を1〜2行で要約)
## 🔄 継続中・保留(引き継ぐべきもの)
- (状態:進行中/保留 の案件、ai-handoff status:handoff)
- ⚠️ (手順5.2 で memory と実物が食い違った件があれば、ここに「memory は〇〇と書いているが実際は△△」と1行で出す)
## 🎯 今日のおすすめタスク(Top3)
1. …(継続中案件・handoff・MEMORY Projectsの「▶再開」マーカーから選定)
## 🔗 未完了の引き継ぎ
- (ai-handoff の未完了ファイル名+一言)
## 🪞 未処理の封(/mirror)
- N 件。古い順に: <場面>(YYYY-MM-DD)
- 実物が出ているなら `/mirror diff`、出さないと決めたなら「出さなかった」と言えば閉じます
フォーマットルール:
- worklog・当日ログ・ai-handoff・MEMORY.md のいずれからも情報が得られなかった場合は、上記フォーマットの代わりに「記録がありません。昨日は Claude Code をあまり使わなかったようです」とだけ返す。
- 「継続中・保留」セクションは該当が無ければ「なし」と書く(省略しない)。
- 「今日のおすすめタスク」は最大3件。継続中案件・ai-handoff・MEMORY の「▶再開」マーカーの中から優先度が高そうなものを選ぶ(判断根拠は問わない、簡潔な提示でよい)。
- 「未完了の引き継ぎ」は該当が無ければセクションごと省略してよい。
- 「未処理の封」は
sealedが0件ならセクションごと省略する。3件を超えていたら件数だけ先に書く(溜まっていること自体が情報のため)。 - 「今日の予定」はMCPが繋がらなければセクションごと省略し、そのことに言及しない(朝のまとめを止めない)。予定が0件のときだけ「予定なし」と書く。準備が要ると判定できないものに印をつけない。
- 「チームからの受信」は読んだ team-digest の日付を必ず書く。今日の分でなければ、その旨と「今日の分は生成中の可能性があります」を添える。ファイルが無ければ「team-digest の出力がありません」と1行だけ書く(自動実行の停止に気づくため、セクションごと省略はしない)。
- ファイルの書き換えは一切行わない。