日記アプリを作ろうとしていた私が、「あ、日付のテキストファイルでいいじゃん」と気づき、2月から約1ヶ月運用してきた事を共有する。
日記好きな方、情報収集癖のある方は、試してみると毎日がよりワクワクすると思う。
はじめに
日記やメモを書いているが、書いたまま埋もれてしまう。振り返りたいのに時間がない。タスクが散らばってどこに何があるかわからない。そして何より、自分の体調や感情のパターンに気づけていない。
そんな課題を、Claude Codeのカスタムスキルを使って解決した1ヶ月の実践記録をまとめる。
この記事では、個人の日記・メモをObsidianで管理しているリポジトリに対して、Claude Codeの「スキル」機能を活用し、日記の自動要約、ニュース収集、タスク管理、週次振り返りを仕組み化した取り組みを紹介する。さらに、スキルを「タスク実行」だけでなく「役割・感情ベース」に拡張し、AIを壁打ちコーチや内省パートナーとして使う試みについても記す。
前提: この記事で扱う「日記」について
この記事は個人の日記と振り返りの話。以下のような習慣がある人に向けて書いている。
- 日常的に日記を書く習慣がある
- 定期的に振り返りを行っている
- プライベートのタスクを何らかのToDoアプリやツールで管理している
- それらがテキストデータとして存在する
私自身は、手書きの手帳も好きで持っており、iPhoneのメモ帳、Notion、Obsidianと複数の場所に気が向いたときにそれぞれ書いてきた。しかし、データが散在して活用できない問題に直面し、デジタルについてはNotionからObsidianへすべてのファイルを移行した。
Obsidianにこだわる必要はない。重要なのは毎日考えた事や行動が、記録として蓄積されていくこと。ObsidianであればPC/モバイルの同期が簡単に行えるため採用している。同時に、そのファイル群はGitHubのプライベートリポジトリでもバージョン管理している。
この「日記ファイルがGitリポジトリに存在する」という状態が、Claude Codeのスキルで日記を活用するための出発点になる。
全体像: どんな仕組みを作ったか
Obsidianのノートリポジトリに対して、以下の8つのカスタムスキル(スラッシュコマンド)を構築した。
タスク実行型スキル
| スキル | 機能 | 主な出力 |
|---|---|---|
/daily |
日次ノートの作成 | note/daily/YYYY-MM/YYYY-MM-DD.md |
/weekly-review |
週次振り返りの自動生成 | note/daily/YYYY-MM/YYYY-MM-DD-weekly-review.md |
/news |
テックニュースの自動収集 |
note/news/YYYY-MM-DD_daily-news.md + .html
|
/task |
GitHub Issue連携のタスク管理 | GitHub Issues(ラベル・期日管理) |
/git-activity |
複数リポジトリのGit活動サマリー | 日次ノートへの追記 |
ロールベーススキル(役割・感情ベース)
| スキル | 役割 | 特徴 |
|---|---|---|
/coach |
朝の壁打ちコーチ | 日記から体調・感情を検知し、今日のフォーカスを一緒に決める |
/reflect |
内省パートナー | 日記の感情表現を拾い、パターンへの気づきを促す |
/sparring |
アイデア壁打ちパートナー | デビルズ・アドボケイトとしてアイデアの穴を見つける |
すべてのスキルは .claude/skills/{name}/SKILL.md に手順書として定義されており、Claude Codeがその手順に従って自律的に動作する。
スキル1: /weekly-review — 日記から週次振り返りを自動生成
課題
- 毎日音声入力やキーボードで日記を書いているが、1週間分を俯瞰する時間がない
- 日記は感情や出来事が時系列で並んでいるだけで、カテゴリ別の整理ができていない
仕組み
- 対象期間の日次ノート(7日分)をすべて読み込む
- 前回の週次振り返りのフォーマットを踏襲する
- カテゴリ別に分類して出力する(仕事、開発、家族、習慣、体調 など)
- 「今週のハイライト」「来週へのつなぎ」を生成する
SKILL.mdのポイント
## 文体のルール
- ですます調は使わない。だ・である調、または体言止め
- 日次ノートの言葉をできるだけそのまま活かす
- 事実ベースで書く。感情の解釈や評価は日次ノートの表現を引用する形で
「自分の言葉を残す」 ことを重視している。AIに要約させると綺麗だが機械的な文章になりがちなので、日記の生の表現をできるだけ引用する形にした。
成果
- 1ヶ月で3本の週次振り返りが自動生成された
- 実行時間は約2-3分。手動なら30分以上かかる作業
- 「今月何をしていたか」がカテゴリ別に一覧できるようになった
- 次はマンスリーも作ろうと思う
スキル2: /news — テックニュース収集の自動化
課題
- 海外・国内のテック動向を追いたいが、毎日複数サイトを巡回する時間がない
- 自分の関心領域に絞った情報が欲しい
仕組み
- 複数ジャンル × 海外/国内のソースをWebSearchで収集
- 各ジャンルから海外3本・国内3本をピックアップ
- Markdown + HTML(ブラウザ用)の2形式で出力
-
slack引数でSlack Webhookへの自動投稿も可能
SKILL.mdのポイント
### HTML 出力
CSSはファイル内にインラインで含める(外部依存なし)。
ジャンル別カラータグ:
- ジャンルA: 紫 (#a78bfa)
- ジャンルB: 緑 (#34d399)
- ジャンルC: ピンク (#f472b6)
HTMLテンプレートをSKILL.md内に完全に記述しておくことで、毎回同じデザインのニュースページが生成される。ブラウザで開くだけで読めるので、Obsidianを開かなくても確認できる。次のフェーズではクラウド上に設置しSSOでログインした私だけのマイページ(ニュースページ)にしようかと思う。
成果
- 1回の実行で複数ジャンル×海外/国内の記事を収集・要約
- GitHub Actionsで定期実行も可能にした
スキル3: /task — GitHub Issueをバックエンドにしたタスク管理
課題
- 日記の中に「やりたいこと」「調べたいこと」が散在していて、追跡できない
- 既存のタスク管理ツール(Notion、Todoist等)だと開発ワークフローから離れる
- 自前でToDoアプリを作ったが、別で見に行くのが面倒でGitHubへ集約する事にした
仕組み
GitHub Issueをタスクのバックエンドとして使い、Claude Codeのスキルで操作する。この方法は実践している方が多く、Qiita/Zennなど多くの紹介記事があるので探してみると良い。
| サブコマンド | 機能 |
|---|---|
| (引数なし) | 秘書モード: タスク状況を概観し、対話的に次のアクションを提案 |
add |
新規Issue作成(優先度・領域・期日を対話で設定) |
today |
今日のフォーカスタスクを優先度順に表示 |
list |
フィルタ付き一覧(優先度・領域で絞り込み) |
done |
Issueクローズ(繰り返しタスクは自動で次回Issue作成) |
triage |
未分類Issueに優先度・ラベルを対話的に付与 |
ラベル設計
優先度(排他):
-
P0: 最優先、今すぐ -
P1: 今日〜今週中 -
P2: 今週〜来週 -
P3: バックログ
領域(複数可):
-
area:work/area:life/area:side-project
種別(排他):
-
type:task/type:bug/type:idea
日記からのタスク一括抽出
最も強力だったのは、日記ファイルを読み込んでタスクを一括抽出する使い方。
「2月の日記をさらって、ToDo化が必要なタスクを洗い出してIssueとして登録してください」
この1行の指示で、1ヶ月分の日記から約50件のタスクが抽出され、重複排除・グルーピングされた上でGitHub Issueとして登録された。
成果
- 46件のタスクがGitHub Issue化され、優先度・領域ラベル付きで管理可能に
- 日記に埋もれていた「やりたかったこと」が可視化された
- GitHub ProjectsのUI上でカンバンボード形式での管理も併用できる
- 「あ〜思ってた思ってた」とIssueを見て過去思っていたことを思い出す
スキル4: サブエージェントによる並列調査
Claude Codeの Task ツールを使うと、サブエージェントを並列起動して独立した調査を同時に行える。
実践例: 技術スタック + 先行事例調査
個人開発プロジェクトの技術選定にあたり、以下の4つのサブエージェントを同時に起動した。
| エージェント | 調査内容 | 所要時間 |
|---|---|---|
| Agent 1 | 特定領域Aの技術スタック調査 | 約2分 |
| Agent 2 | 特定領域Bの技術スタック調査 | 約3分 |
| Agent 3 | 日本国内の先行事例調査 | 約3分 |
| Agent 4 | 海外の先行事例調査 | 約3分 |
4つの調査を順番にやれば12分以上かかるところが、並列実行で約3分で完了した。結果はメインエージェントが統合し、調査レポートとしてファイル出力。
サブエージェントが向いているタスク
- 複数トピックの同時WebSearch
- 独立したファイルの同時生成
- コードベースの並列探索
- 同じ観点の異なるソースからの情報収集
スキル5: ロールベーススキル — AIに「役割」と「性格」を与える
課題: タスク実行だけでは足りない
ここまでのスキル(weekly-review、news、task等)は、すべて「タスク実行型」だった。入力を与えると出力を返す。便利だが、一方通行で終わる。
1ヶ月使ってみて気づいたのは、日記には感情や体調のシグナルが大量に埋まっているのに、それを活用できていないということだった。
- 「週末にアプリ開発に没頭 → 水曜から体調崩す」というパターンが繰り返されている
- 「時間がない」「疲れた」という言葉が続いている
- やりたいことが日記に何度も出てくるのに着手できていない
これらは、タスクを処理するだけでは見えてこない。日記を「読んで」「問いかけてくれる」存在が必要だった。
解決策: 3つの「ロール」を定義する
そこで、SKILL.mdにAIの役割・性格・対話スタイルを定義する「ロールベーススキル」を3つ作った。
/coach — 朝の壁打ちコーチ
役割: 毎朝、昨日の日記と今週の流れを読んで、今日のフォーカスを一緒に決めるパートナー。
キャラクター設計:
- 口調は落ち着いていて、率直。丁寧語は使わない。タメ口でもない
- 褒めるときは具体的に。「すごい」ではなく「38コミットを1日で出すのは異常なペースだ」
- 危険を感じたら遠慮なく止める。「それ、先週も同じこと言って体調崩してるよ」
- 問いかけを中心に対話する。答えを与えるのではなく、本人が気づくように導く
体調・感情の自動検知:
SKILL.mdに「検知すべきシグナル」を定義しておくと、日記を読んだAIが自動で判定する。
**体調シグナル:**
- 「だるい」「頭痛」「鼻水」「眠い」「疲れた」 → 体調注意フラグ
- 「0時」「1時」「2時」以降の就寝記録 → 睡眠不足フラグ
- 3日以上連続で体調不良の記述 → 強い警告フラグ
**行動パターン:**
- 週末に開発→平日に体調崩す → 繰り返しパターン警告
これらのシグナルに応じて、コーチの対話モードが自動で切り替わる:
| モード | 条件 | コーチの第一声 |
|---|---|---|
| A: 通常 | 体調OK、感情安定 | 「おはよう。昨日は○○。今日やりたいことはある?」 |
| B: 注意 | 体調シグナルあり | 「正直に聞くけど、体調はどう?」 |
| C: 警告 | 過集中・睡眠不足 | 「ちょっと止まろう。今日は"やらないこと"を決めない?」 |
| D: エネルギー高 | ポジティブシグナル強 | 「いい動きだった。今日やりすぎないために何時に切り上げる?」 |
実際の動作例:
ある週末の朝に /coach を実行すると、こんな問いかけが返ってきた:
おはよう。
正直に聞くけど、体調はどう?
今週の日記を全部読んだ。水曜から体調不良の記述が4日続いてた。今朝は「久しぶりにしっかり眠れた」と書いてる。回復の兆しはある。
ただ、1つ気になることがある。
先週末に集中的に開発して、週半ばから体調を崩した。
そして昨日も深夜まで作業して、今日もう次の作業を始めてる。同じパターンが始まりかけてないか?
今日、本当にやらなきゃいけないことは何?1つだけ選ぶとしたら。
日記を読んだ上で、繰り返しパターンを事実ベースで指摘してくる。「頑張って」「大丈夫」のような中身のない励ましではなく、データに基づいた問いかけ。これは自分一人では気づけない。
/reflect — 内省パートナー
役割: 週次振り返りの前に使う。日記の中の感情表現を拾い、パターンへの気づきを促す。
特徴的な設計:
- 日記の中の「本人の言葉」を必ず引用する。AIが作った綺麗な言い換えではなく、生の言葉をそのまま返す
- 答えを出そうとしない。問いを投げて、本人の中にある答えを引き出す
- パターンを見つけたら提示する。「これ、3週連続で同じこと書いてるよ」
感情を2軸でマッピングする仕組みも定義している:
**エネルギーレベル(縦軸):**
- 高: 「楽しい」「ワクワク」「脳汁」「やめられない」
- 低: 「疲れた」「だるい」「しんどい」
**感情の質(横軸):**
- ポジティブ: 「感謝」「嬉しい」「入口に立てた」
- ネガティブ: 「反省」「自覚」「あたってしまう」「つかれた」
/sparring — アイデア壁打ちパートナー
役割: デビルズ・アドボケイト(悪魔の代弁者)として、アイデアの穴を見つける。
3つの帽子を使い分ける設計:
- 赤の帽子(ユーザー視点): 「それ、本当にユーザーが欲しいもの?」
- 黒の帽子(批判的思考): 「最悪のシナリオは?3ヶ月後に飽きたらどうする?」
- 緑の帽子(代替案): 「逆に、こういうアプローチは考えた?」
5ラウンド制で、最後は「叩いても生き残ったもの」を確認して終わる。アイデアを殺すためではなく、生き残るアイデアを見つけるために叩く。
ロールベーススキルの設計で重要なこと
タスク実行型とロールベース型では、SKILL.mdに書くべき内容が根本的に異なる。
| 観点 | タスク実行型 | ロールベース型 |
|---|---|---|
| 定義の中心 | 手順・フォーマット・コマンド | 性格・口調・対話ルール |
| 入力 | 明確な引数 | 日記の感情・行動パターン |
| 出力 | ファイル・Issue・Slack投稿 | 問いかけ・気づき |
| 終了条件 | 処理完了 | 対話の往復回数 |
| やってはいけないこと | エラーハンドリング中心 | 「説教しない」「決めつけない」「中身のない励ましをしない」 |
特に重要なのは 「やってはいけないこと」の定義。AIは放っておくと丁寧で肯定的な応答に偏りがちなので、「頑張って」「大丈夫」は禁止、「事実を提示して本人に気づかせる」と明記することで、本当に役立つ対話が生まれる。
スキル6: GitHub Actionsによる自動化 — 人が動かなくても回る仕組み
定期実行している処理
| ワークフロー | スケジュール | 処理内容 |
|---|---|---|
| Daily News | 毎日 02:00 JST | ニュース収集 → Markdown/HTML生成 → Slack投稿 → git commit & push |
| Morning Coach | 平日 08:00 JST | 日記読み込み → 体調・感情分析 → Slack問いかけ投稿 → 日次ノート追記 → git commit & push |
Morning Coachの自動実行フロー
平日 08:00 JST
→ GitHub Actions が起動
→ claude-code-action が SKILL.md に従って動作
→ 昨日の日記 + 今週の日記を読む
→ 体調・感情・パターンを分析
→ モード判定(A/B/C/D)
→ コーチの問いかけを Slack に投稿
→ 日次ノートにコーチメモを追記
→ git commit & push
ポイント: GitHub Actions + claude-code-action の組み合わせ
anthropics/claude-code-action を使うことで、GitHub Actions上でClaude Codeを実行できる。SKILL.mdを読み込んでその手順に従うよう指示するだけでよい。
- name: Run /coach skill
uses: anthropics/claude-code-action@v1
with:
prompt: |
.claude/skills/coach/SKILL.md を読み、手順に従って実行する。
Slackに投稿する(slack オプション有効)。
対話ループは行わない(GitHub Actions自動実行モード)。
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Phase 1 → Phase 2 の構想
現在(Phase 1)は、コーチの問いかけに対する回答は日次ノートに手動で記入する形。
Phase 2では、Slackでの回答収集を実装し、以下のループを自動化する予定:
Slack問いかけ → ユーザーが回答 → 回答を日次ノートに自動記録 → 翌日のコーチの分析材料に
スキルの作り方
ファイル構成
.claude/
└── skills/
├── daily/
│ └── SKILL.md # 日次ノート作成
├── weekly-review/
│ └── SKILL.md # 週次振り返り
├── news/
│ └── SKILL.md # ニュース収集
├── task/
│ └── SKILL.md # タスク管理
├── coach/
│ └── SKILL.md # 朝のコーチ
├── reflect/
│ └── SKILL.md # 内省パートナー
└── sparring/
└── SKILL.md # 壁打ちパートナー
SKILL.mdの書き方のコツ
タスク実行型スキルの場合
- 具体的な手順を番号付きで書く — 「いい感じにまとめて」ではなく、「1. ファイルを読む 2. パースする 3. フォーマットに従って出力する」
- 出力フォーマットをテンプレートで定義する — Markdownの見出し構造、HTMLのCSS、Slack Block Kitのフォーマットまで具体的に
-
使用するツール・コマンドを明記する —
gh issue list --json number,title,labels,bodyのように具体的なCLIコマンドを書く - エッジケースを定義する — 「ファイルが存在しない場合は〇〇と案内する」「ラベルが存在しない場合は自動作成する」
ロールベーススキルの場合
- キャラクターを具体的に定義する — 口調、褒め方、止め方。「率直だが攻撃的ではない」のような境界線を明示する
- 検知すべきシグナルを列挙する — 体調キーワード、感情キーワード、行動パターンを具体例付きで書く
- 対話モードを条件分岐で定義する — シグナルの組み合わせに応じて、第一声のテンプレートを用意する
- 「やってはいけないこと」を書く — AIのデフォルト挙動(丁寧すぎる、肯定しすぎる)を抑制するために必須
- 終了条件を決める — 「5往復以内」「最後に1行宣言を確認して終わる」のように、だらだら続かない仕組みを入れる
2月から3週間の実践で見えたこと
定量的な成果
| 指標 | 値 |
|---|---|
| 作成したカスタムスキル | 8個(タスク実行型5 + ロールベース型3) |
| 自動生成された週次振り返り | 3本 |
| 収集されたニュース記事 | 約70本 |
| GitHub Issue化されたタスク | 46件 |
| 調査レポート | 1本(技術スタック+先行事例調査) |
| GitHub Actionsワークフロー | 2本(ニュース収集 + 朝のコーチ) |
定性的な気づき
-
日記は「書く」だけでなく「使う」もの — 書いた日記をAIが読み込んでタスク抽出・振り返り生成に使うことで、日記を書くモチベーションが上がった
-
SKILL.mdは「自分の分身の取扱説明書」 — 自分がどういうフォーマットで情報を整理したいか、どういう文体が好みか、を言語化する行為そのものに価値がある
-
サブエージェントの並列実行は調査系で強力 — 特に「複数の観点から同時に調べたい」場面で真価を発揮する
-
GitHub Issueとの連携はCLIワークフローと相性が良い —
ghコマンドでCRUD操作ができるため、スキルの実装が容易。GitHub ProjectsのUIと併用できる -
完璧を目指さない — スキルは使いながら改善する。最初のバージョンは粗くても、実際に使ってみて足りない部分を追加していく方が速い
-
AIの「性格」を定義することで対話の質が変わる — 「頑張って」を禁止し、「事実を提示して本人に気づかせる」と定義するだけで、本当に役立つ壁打ちパートナーになる。SKILL.mdにキャラクター設計を書く行為は、「自分がどういう対話を求めているか」を言語化すること
-
日記の感情データは最も個人的なAPI — 体調シグナルや行動パターンの検知は、汎用的なAIアシスタントにはできない。自分の日記を読み込むからこそ、「先週も同じパターンで体調崩してる」という指摘ができる
まとめ
Claude Codeのカスタムスキルは、「自分専用のCLIツール」を自然言語で定義できる仕組みだと捉えている。
プログラミング言語でツールを書く代わりに、SKILL.mdに手順書を書く。すると、Claude Codeがその手順に従ってファイルを読み書きし、APIを叩き、GitHubを操作してくれる。
そして、スキルの可能性は「タスク実行」に留まらない。AIの役割・性格・対話ルールを定義することで、壁打ちコーチ、内省パートナー、アイデアの批判者といった「対話する存在」を作れる。
個人のナレッジマネジメントは、仕組みがなければ「書いて終わり」になりがち。Claude Codeのスキルを使うことで、日記が振り返りになり、振り返りがタスクになり、タスクが行動につながる。さらに、日記が「鏡」になり、自分の体調・感情・行動パターンへの気づきにつながる。その循環を低コストで回し続けられるのが、この仕組みの一番の価値だと感じている。
なにより、週末の振り返りがおっくうではなく、とても楽しみなイベントに変わる。日々記していない方は、一言でもいいので、日付とメモをつなげて記録を取ることをおすすめしたい。
おまけ
ちなみに、Notionでも同じことはできる。しかし、ローカルでCLIを使って便利な事が、他リポジトリでCommitした開発に関する履歴をもとに、その日何をやっていたか、何を調査していたかをまとめ、日記にActivityのような形で追記できる事が良い。「あ〜今日は何もしていないな」と思っていても、実は実装やタスクを進めてコミット履歴があった。という事も拾えるメリットがある。