# Morning

> 朝「おはよう」と入力したとき（または手動で /morning 実行時）に、worklog・team-digest・ai-handoff・MEMORY.md・Google Calendar の今日の予定・未処理の封（/mirror）を読み、チームから来ている依頼と、今日の予定・前日までにやっていたこと・今日やるべきことを簡潔にまとめて提示する。ファイルは書き換えない（読み取り専用）。

- Skill: `sugawaramasaya/morning` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sugawaramasaya/morning`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sugawaramasaya/morning/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: sugawaramasaya (https://skillmd.com/u/sugawaramasaya)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sugawaramasaya/morning

---


# /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

1. 今日の日付から現四半期を算出する（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）
2. `~/.claude/projects/-Users-you-dev/memory/worklog/FY<年度>-Q<n>.md` を Read する。
3. 存在しなければ `~/.claude/projects/-Users-you-dev/memory/worklog/` 内の `.md` ファイルのうち mtime が最新のものにフォールバックする（`FY*-goals.md` や `README.md` は対象外）。
4. ファイル末尾から `## 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回だけ取り直す：

```bash
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行だけ書く（自動実行の停止に気づくため、セクションごと省略はしない）。
- ファイルの書き換えは一切行わない。

