Skip to content

Instantly share code, notes, and snippets.

@umiyosh
Created March 8, 2026 17:07
Show Gist options
  • Select an option

  • Save umiyosh/4ffc3da8a3aa97c252fcc0a680de8068 to your computer and use it in GitHub Desktop.

Select an option

Save umiyosh/4ffc3da8a3aa97c252fcc0a680de8068 to your computer and use it in GitHub Desktop.
Claude Code と Obsidian Daily Note のタスク共有 — スキル設計ドキュメント

Claude Code と Obsidian Daily Note のタスク共有

目的

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 との連携

スキルは Obsidian MCP 経由でノートを操作する:

  • mcp__obsidian__read_note — デイリーノート・親ノートの読み取り
  • mcp__obsidian__patch_note — タスク完了マーク、子タスク追加、セッション記録
  • mcp__obsidian__write_note — 親ノートの新規作成

Obsidian Tasks 記法(Tasksプラグイン準拠)

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

動作モード

モード A: 🛫タスク実行

  1. get-today.sh で当日日付を取得(システムプロンプトの日付に依存しない)
  2. デイリーノートから 🛫 付きタスクと子タスクを抽出
  3. 親タスクに [[ノート名]] リンクがあればそのノートを読み取り、なければ新規作成しリンク追記
  4. get-session-id.sh でセッションIDを特定し、親ノートのセッション履歴に記録
  5. 子タスクに GitHub Issue リンクがあれば Issue 内容も確認
  6. タスク実行に着手

モード B: TODO 確認

  1. TODO セクション全体を一覧表示
  2. 優先順位の議論、子タスクの追加・整理

ユースケース

UC1: 🛫タスクの実行

  • ユーザーが会話で🛫マーク付きタスク名を与えるとスキルが発動
  • スキルはデイリーノートから該当タスクとその子タスクを読み取り、コンテキストとして取得
  • 親ノートにセッションIDを記録し、後から claude --resume で復帰可能

UC2: TODO の確認・検討

  • 🛫を付けずに「今日のTODO見せて」のような依頼
  • デイリーノートのTODOセクション全体を読み取って一覧表示
  • やることの優先順位を議論し、子タスクの追加・整理を行う

UC3: 子タスクの管理

  • 子タスクの作成は人間・Claude Code 両方が行う
  • 複雑な子タスクは GitHub Issue 化し、デイリーノートにリンクを貼る
    • Issue のデスクリプションはコンテキスト保持に有利で、PRとの紐付けもできる
    • 専用のバックログリポジトリで一元管理
    • Issue にはラベルで親タスク名を付与し、テーマでフィルタ可能にする

UC4: タスク完了

  • mcp__obsidian__patch_note- [ ]- [x] に変更
  • 紐付く GitHub Issue がある場合は対応内容を記載しつつ gh issue close でクローズ

UC5: 親タスクのノート管理

  • 親タスクには情報管理用の Obsidian ノートが付くことがある(本ノートがその例)
  • デイリーノートのタスクからノートへの [[リンク]] で紐付ける
  • ノートにはセッション履歴を記録し、作業の連続性を保つ

設計上の考慮事項

デイリーノートの日替わり問題

  • デイリーノートは日ごとに新規作成され、パスが Journal/YYYY-MM-DD.md のように変わる
  • タスク自体は Obsidian 側で自動的に引き継がれるため内容の連続性は問題ない
  • 対策: scripts/get-today.shdate +%Y-%m-%d を実行し、パスを機械的に算出
    • Claude Code のシステムプロンプトの日付情報に依存しない(セッションが日をまたぐ場合に不正確になるため)

セッションIDの特定

  • scripts/get-session-id.sh~/.claude/projects/ 配下の .jsonl ファイルを検索
  • ユーザーの最初のメッセージで照合(並列セッション対応)、またはフォールバックで最新ファイルを使用
  • 特定したセッションIDを親ノートに記録し、claude --resume <id> での復帰を可能にする

GitHub Issue のラベル管理

  • バックログリポジトリに様々なテーマのタスクが集約される
  • Issue には親タスク名をラベルとして付与し、テーマでフィルタ可能にする
  • 親タスク完了時にはラベルを削除し、無作為なラベル増殖を防ぐ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment