/today-i-learned
Extract learnings from today's work across all sessions, save to local file, copy to clipboard, publish to Confluence, and post summary to Slack
About
Extract learnings from today's work across all sessions, save to local file, copy to clipboard, publish to Confluence, and post summary to Slack
Usage
Use when user says "今日の学び", "TIL", "振り返り", "学んだこと", "today I learned", "learning notes".Requirements
MCP SERVERS
Install
curl -sf /api/skills/today-i-learned/download | tar xz -C .claude/skills/Source
Today I Learned (TIL) - 学びノート生成
今日の作業内容から学びを抽出し、構造化されたノートを生成する。
手順
1. セッションログを収集する
現在のプロジェクト配下のセッションログから今日の作業を把握する。
セッションログは ~/.claude/projects/<encoded-project-path>/ に UUID 名の .jsonl ファイルとして保存されている。
デフォルトでは現在のプロジェクトのみを対象とし、全プロジェクト横断はユーザーが明示的に指定した場合のみ実施する。
# 現在プロジェクトのログ(デフォルト)
find ~/.claude/projects/<encoded-project-path>/ -maxdepth 1 -name "*.jsonl" -type f -mtime 0
# 全プロジェクト横断(ユーザー指定時のみ)
find ~/.claude/projects/ -maxdepth 2 -name "*.jsonl" -type f -mtime 0 | grep -v '/subagents/'
各行は JSON オブジェクト。抽出対象:
type: "user"かつmessage.contentが文字列 → ユーザー発言type: "assistant"のmessage.content[].type == "text"→ アシスタント応答
jq -r 'select(.type == "user" and (.message.content | type) == "string") | "[USER] " + .message.content' "$file"
jq -r 'select(.type == "assistant") | .message.content[]? | select(.type == "text") | "[ASSISTANT] " + .text' "$file"
- 現在のセッションは会話コンテキストから直接参照可能。JSONL は他セッション補完用
- 1MB 超のファイルは
head -200/tail -200で概要把握 progress,file-history-snapshot,systemタイプは無視
2. 学びを抽出・厳選する
領域タグでフラットに整理する。本当に学びがあったものだけ載せる。
領域タグ: DB / API / Frontend / Architecture / DevOps / Process / Tooling
各トピックの構造:
- 何が起きて、どう直したか — 実践の文脈を1-3文。コード例があれば添える
- ポイント — 覚えておくべき原則を1-2文
- 深掘り — 関連キーワードや参考リンク(任意)
3. ファイルに保存する
~/.claude/learnings/YYYY-MM-DD.md に出力する。既存ファイルがあれば重複を避けて追記・統合。
4. クリップボードにコピーする
環境に応じて適切なコマンドを使う:
# macOS
cat ~/.claude/learnings/YYYY-MM-DD.md | pbcopy
# Linux(xclip が必要)
cat ~/.claude/learnings/YYYY-MM-DD.md | xclip -selection clipboard
5. Confluence に公開する(任意)
Atlassian MCP ツールが利用可能な場合、個人スペースにページを作成・更新する。
getAccessibleAtlassianResourcesで cloudId を取得getConfluenceSpacesで自分の個人スペース(type: personal)の spaceId / spaceKey を特定- CQL
space.key = "<spaceKey>" AND title = "TIL" AND type = pageで親ページを検索。無ければ作成 - CQL
parent = <parentPageId> AND title = "TIL - YYYY-MM-DD"で日付ページを検索 - 存在しなければ
createConfluencePage(parentId = TIL親ページ、contentFormat ="markdown")、あればupdateConfluencePage - URL をユーザーに伝える
6. Slack に投稿する(任意)
Slack MCP ツールが利用可能な場合、TIL チャンネルにサマリを投稿する。
slack_search_channelsでtilチャンネルを検索して channel_id を取得- サマリ(学びトピックの箇条書き)+ Confluence ページへのリンクを Slack mrkdwn で構成
slack_send_messageで投稿
メッセージフォーマット:
*TIL - YYYY-MM-DD*
• トピック1の要約
• トピック2の要約
• ...
<confluence_url|Confluence で読む>
出力フォーマット
# TIL - YYYY-MM-DD
## 今日やったこと(サマリ)
- 箇条書きで作業内容を 3-5 行でまとめる
## 領域マップ
| 領域 | トピック |
|------|---------|
| DB | トピックA, トピックB |
| Frontend | トピックC |
## 学んだこと
### [DB] 概念名(英語名)
**何が起きて、どう直したか** — 実践の文脈を1-3文で。
```lang
// 今日実際に書いた/直したコードがあれば
```
**ポイント** — 覚えておくべき原則を1-2文で。
**深掘り** — keyword1, keyword2 / [参考リンク](url)
---
(トピックごとに繰り返し)
## もっと知りたいなら
- [関連トピックへのポインタ、公式ドキュメントの URL 等]
注意事項
- 実践重視: 教科書的な長文解説はしない。今日の作業で得た気づきに絞る
- コード例は実物のみ: 今日実際に書いた/直したコードだけ。一般例は不要
- 厳選する: 些末なものは省略。本当に学びがあったものだけ載せる
- 日本語で書く。技術用語は英語を併記する