Claude Code がセッション開始時に「今何をやるべきか」を把握できるようにする。
検討した3つの候補からスキル化を採用し、obsidian-daily-tasks として実装済み。
| 候補 | 方式 | 判定 |
|---|---|---|
| スキル化 | 🛫タスク名トリガーでスキル発動 | 採用・実装済み |
| hook | セッション開始時に自動読み込み | 不採用(不要なコンテキスト消費) |
| 自動同期 | タスクをファイルに書き出しCLAUDE.mdから参照 | 不採用(同期の信頼性問題) |
~/.claude/
├── CLAUDE.md # 🛫検出時のスキル発動ルールを記載
├── rules/
│ └── ... # 各種ルール(git, task-lifecycle 等)
└── skills/
└── obsidian-daily-tasks/
├── SKILL.md # スキル定義(動作モード・タスク操作手順)
└── scripts/
├── get-today.sh # date コマンドで当日パスを算出
└── get-session-id.sh # セッションID特定(jsonlファイル照合)
CLAUDE.md に以下のルールを記載:
ユーザーメッセージに 🛫 を検出 →
obsidian-daily-tasksスキルを呼び出せ
- 明示的トリガーのみ(自動発動はしない)
- 🛫マーク付きタスク名が会話に出たときにスキルが起動
スキルは Obsidian MCP 経由でノートを操作する:
mcp__obsidian__read_note— デイリーノート・親ノートの読み取りmcp__obsidian__patch_note— タスク完了マーク、子タスク追加、セッション記録mcp__obsidian__write_note— 親ノートの新規作成
Claude Code が意識すべきマーカー:
- 🛫 start date — スキルトリガー(開始済み=実行中)
- 📅 due date — 期限のあるタスクの優先度判断に活用
- 🔄 — 進行中の GitHub Issue リンク(
🔄 [repo: title](url)形式)
人間用マーカー(Claude Code は優先度参考程度に利用):
- ⏫ high priority / 🔺 medium priority / 🔽 low priority
- 🔺(赤▲) highest priority / ⏬ lowest priority
- ⏳ scheduled date
get-today.shで当日日付を取得(システムプロンプトの日付に依存しない)- デイリーノートから 🛫 付きタスクと子タスクを抽出
- 親タスクに
[[ノート名]]リンクがあればそのノートを読み取り、なければ新規作成しリンク追記 get-session-id.shでセッションIDを特定し、親ノートのセッション履歴に記録- 子タスクに GitHub Issue リンクがあれば Issue 内容も確認
- タスク実行に着手
- TODO セクション全体を一覧表示
- 優先順位の議論、子タスクの追加・整理
- ユーザーが会話で🛫マーク付きタスク名を与えるとスキルが発動
- スキルはデイリーノートから該当タスクとその子タスクを読み取り、コンテキストとして取得
- 親ノートにセッションIDを記録し、後から
claude --resumeで復帰可能
- 🛫を付けずに「今日のTODO見せて」のような依頼
- デイリーノートのTODOセクション全体を読み取って一覧表示
- やることの優先順位を議論し、子タスクの追加・整理を行う
- 子タスクの作成は人間・Claude Code 両方が行う
- 複雑な子タスクは GitHub Issue 化し、デイリーノートにリンクを貼る
- Issue のデスクリプションはコンテキスト保持に有利で、PRとの紐付けもできる
- 専用のバックログリポジトリで一元管理
- Issue にはラベルで親タスク名を付与し、テーマでフィルタ可能にする
mcp__obsidian__patch_noteで- [ ]を- [x]に変更- 紐付く GitHub Issue がある場合は対応内容を記載しつつ
gh issue closeでクローズ
- 親タスクには情報管理用の Obsidian ノートが付くことがある(本ノートがその例)
- デイリーノートのタスクからノートへの
[[リンク]]で紐付ける - ノートにはセッション履歴を記録し、作業の連続性を保つ
- デイリーノートは日ごとに新規作成され、パスが
Journal/YYYY-MM-DD.mdのように変わる - タスク自体は Obsidian 側で自動的に引き継がれるため内容の連続性は問題ない
- 対策:
scripts/get-today.shでdate +%Y-%m-%dを実行し、パスを機械的に算出- Claude Code のシステムプロンプトの日付情報に依存しない(セッションが日をまたぐ場合に不正確になるため)
scripts/get-session-id.shが~/.claude/projects/配下の.jsonlファイルを検索- ユーザーの最初のメッセージで照合(並列セッション対応)、またはフォールバックで最新ファイルを使用
- 特定したセッションIDを親ノートに記録し、
claude --resume <id>での復帰を可能にする
- バックログリポジトリに様々なテーマのタスクが集約される
- Issue には親タスク名をラベルとして付与し、テーマでフィルタ可能にする
- 親タスク完了時にはラベルを削除し、無作為なラベル増殖を防ぐ