Skills

/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

Category:Learning
Scope:universal

Usage

Use when user says "今日の学び", "TIL", "振り返り", "学んだこと", "today I learned", "learning notes".

Requirements

MCP SERVERS

Atlassian
Slack

Install

Agent:
curl -sf /api/skills/today-i-learned/download | tar xz -C .claude/skills/

Download / Upload

ZIP でダウンロード

→ Claude.ai: Customize > 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 ツールが利用可能な場合、個人スペースにページを作成・更新する。

  1. getAccessibleAtlassianResources で cloudId を取得
  2. getConfluenceSpaces で自分の個人スペース(type: personal)の spaceId / spaceKey を特定
  3. CQL space.key = "<spaceKey>" AND title = "TIL" AND type = page で親ページを検索。無ければ作成
  4. CQL parent = <parentPageId> AND title = "TIL - YYYY-MM-DD" で日付ページを検索
  5. 存在しなければ createConfluencePage(parentId = TIL親ページ、contentFormat = "markdown")、あれば updateConfluencePage
  6. URL をユーザーに伝える

6. Slack に投稿する(任意)

Slack MCP ツールが利用可能な場合、TIL チャンネルにサマリを投稿する。

  1. slack_search_channelstil チャンネルを検索して channel_id を取得
  2. サマリ(学びトピックの箇条書き)+ Confluence ページへのリンクを Slack mrkdwn で構成
  3. 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 等]

注意事項

  • 実践重視: 教科書的な長文解説はしない。今日の作業で得た気づきに絞る
  • コード例は実物のみ: 今日実際に書いた/直したコードだけ。一般例は不要
  • 厳選する: 些末なものは省略。本当に学びがあったものだけ載せる
  • 日本語で書く。技術用語は英語を併記する