ミニコラム

Claude Codeのmodsで残タスクやメール、Teamsの返信漏れをダッシュボードに組み込む

この記事のポイント

  • Claude Codeの作業画面に、残タスク・返信漏れ・トークン使用量を常時表示するダッシュボードをmodsで組み込みました。
  • 表示用の台帳は作らず、既存のファイルを読むだけの表示層にとどめています。
  • 表示場所はペイン・入力欄上の帯・ステータス行の3か所で、細かさを変えて使い分けています。
  • つまずいたのは、Obsidianの起動・デスクトップ版のリンククリック・ペインの自動表示・セッション限りの読み込みの4点です。
  • modsはユーザー権限でサンドボックスなしに動くため、行う操作を絞り、正本を1か所で管理しています。

要点サマリ

私は業務の記録とタスク管理をMarkdownファイルの集まりで行い、Claude Codeで日々編集しています。その作業画面の横に、残タスク・返信漏れ・トークン使用量を常時表示するダッシュボードを、Claude Codeのmodsという仕組みで組み込みました。

データは既存のファイルをそのまま読み、表示のための台帳は新しく作っていません。
ターミナル版とデスクトップ版で挙動が違う箇所が4点あり、それぞれ回避策を入れて常用しています。

用語解説

  • Claude Code:Anthropic社のAIコーディング支援ツール。ターミナル版と、デスクトップアプリのCodeタブで使える版がある。
  • mods:Claude Codeのプラグインの一種。JavaScript/TypeScriptで書いたイベントハンドラをClaude Code自身のプロセス内で実行し、画面への表示やコマンドの追加ができる。
  • ペイン:会話の表示欄(トランスクリプト)の横に開く表示領域。modsが内容を描画する。
  • Obsidian:Markdownファイルをノートとして閲覧・編集するアプリ。ファイル間のリンクをたどって読める。
  • vault:Obsidianが管理するMarkdownファイルの集まり(フォルダ)。私は業務の記録・タスク・各種レポートをここに置いている。
  • トークン:AIが処理する文字量の単位。利用枠の上限はトークン数をもとに決まる。

mods機能の公式情報

modsは、Claude Codeの画面や動作に独自の機能を足せるプラグインです。JavaScriptまたはTypeScriptで書いた関数をClaude Code自身のプロセス内で動かすため、画面に独自の表示を描けるのが特徴です。
公式ドキュメントでは、主に次のことができると説明されています(2026年10月6日時点)。

  • 会話の横や入力欄の上に、独自の表示を出せます。
  • / で始まる独自のコマンドを追加できます。
  • Claudeのツール呼び出しを止めたり、内容を確認したりできます。

使えるのは、ターミナル版のv2.1.287以降と、デスクトップアプリのv2.1.286以降です。
Claudeに頼めばmodsを書いてもらえますが、そのままではそのセッションでしか使えません。常に使うには、フォルダを別の場所に移し、環境変数 CLAUDE_CODE_PLUGIN_DIRS に登録します。

なお、modsはユーザーの権限で動き、隔離されません。公式ドキュメントも、信頼できる作者のものだけを入れるよう注意しています。
仕様はバージョンによって変わるため、最新の情報は公式ドキュメントで確認してください。

出典:

作業画面に常時出したかった3つの情報

私はClaude Codeを開いたまま1日の大半を過ごしており、記録の整理も資料作成もこの画面で行っています。
一方で、確認すべき情報は別々の場所にあり、見に行かないと気づかない状態でした。

常時出したかったのは次の3つです。

情報元の置き場所困っていたこと
残タスクvault内のリマインダーファイル開かないと期限が近い項目に気づかない
返信漏れ毎朝生成するTeams・メールの監視レポートレポートを開くまで件数が分からない
トークン使用量Claude Codeの使用量表示5時間枠・7日枠の残りを作業中に把握できない

返信漏れの監視レポートは、業務チャットの投稿をClaudeに毎朝読ませて作っており、その仕組みは別記事で後日公開予定です。
今回のダッシュボードはレポートのファイルを読んで件数と項目を出すだけで、取得処理は足していません。

表示のためだけの台帳は作らないことにしました。台帳を別に持つと元ファイルとの二重管理になり、どちらかの更新が漏れるからです。

その代わり、リマインダーの各行に期限と次のアクションを書き込む書式を足しました。

- [ ] ○○の見積回答を確認する [期限:: 2026-10-10] [次:: 回答を受けて社内で単価を確定する]

この書式はObsidianのプラグイン(Dataview)のインライン項目と同じ書き方で、Obsidian側でもそのまま集計に使えます。
ダッシュボードは期限のある項目を日付順に並べ、期限超過は赤、7日以内は黄で表示します。

modsの構成と表示場所

今回作ったmodsはTypeScriptで書き、公式の最小構成(3ファイル)に型定義を加えて次の構成にしています。

vault-dashboard/
├── .claude-plugin/
│   └── plugin.json      … 名前・バージョン・説明
├── hooks/
│   ├── hooks.json       … { "modules": ["./register.tsx"] }
│   └── register.tsx     … イベントハンドラ本体(約950行)
└── types/
    └── index.d.ts       … 表示データの型定義

出典:Create a mod – Claude Code Docs

表示場所は3か所を使い分けました。

表示場所出している内容更新のタイミング
ペイン使用量のゲージ、期限付きの残タスク、返信漏れの項目、最近触ったファイルセッション開始時、応答の完了時、60秒ごと
入力欄上の帯使用率・返信漏れ件数・タスク件数と期限超過数を1行で同上
ステータス行使用率とコンテキスト使用量の要約使用量の計測時、応答の完了時

データの流れと表示場所の関係は次のとおりです。

リマインダー・監視レポート・使用量をmodsが読み、ペイン・帯・ステータス行の3か所に出し分ける流れの図。

実際の画面は次のとおりです。
右がペイン、左下の入力欄の上に並ぶ1行が帯、入力欄の下の小さな1行がステータス行です(タスク名・チャネル名などはダミーに差し替えています)。

Claude Codeの画面例。右のペインに使用率リング・返信漏れ・残タスク、入力欄の上下に件数の帯とステータス行を表示。


ペインには細かい情報を、帯とステータス行には件数だけを出しています。ペインは画面幅や操作によって表示されないことがあり、件数だけでも常に目に入る場所を別に確保したかったからです。

使用量は、デスクトップ版ではリング型のゲージ、ターミナル版では文字の横棒で描いています。使用率60%未満は緑、85%未満は黄、それ以上は赤に色を変え、数字を読まなくても残りの見当がつくようにしました。

もう1つ、応答の中にvault内のファイルが出てきたとき、それをObsidianで開くボタンを付けました。関連する記録をリンクでたどって読むには、Claude Codeの画面よりObsidianのほうが向いているからです。

実装でつまずいた4点とその回避

以下の4点は、当社の環境(Windows、デスクトップアプリ同梱のClaude Code 2.1.286)で確認した挙動です。modsはバージョンによって仕様が変わりうるため、同じことを試す場合は手元のバージョンで確かめてください。

1. explorer.exe経由ではObsidianが開かない

最初はWindowsのexplorer.exeに obsidian://open?path=... というURIを渡してObsidianを開こうとしましたが、URIがObsidianに届きませんでした。
rundll32.exeのurl.dll(FileProtocolHandler)にURIを渡す方式に変えたところ、実機で開くことを確認できました。

2. デスクトップ版ではリンクのクリックがmodsに届かない

ターミナル版では、応答中のvault内リンクを書き換え、クリックをmodsで受けてObsidianを開く作りにしていました。デスクトップ版はリンクのクリックをmodsに渡さず、自身のファイル表示で開きます。

そこで、vault内のファイルを含む応答の下に「◆ Obsidian」ボタンの列を描画し、ボタンから開く形にしました。どちらの版でも同じ操作ができるよう、/obs <パス> というスラッシュコマンドも用意しています。

3. セッション開始時にペインが自動で開かない

セッション開始時にペインを開く処理を入れていましたが、新しいセッションでは表示されませんでした。セッション開始やタイマーから開く要求は本人の操作によらない扱いになり、画面幅が一定より狭いと配置が保留されていました。

プロンプト送信時のイベントから開くと本人の操作として扱われ、画面幅に関係なく配置されます。そのため、ペインが未配置で、かつ本人が閉じていない場合に限り、プロンプト送信時に開き直すよう変更しました。

on('prompt.submit', async ($, e, next) => {
  if (!closedByPerson) {
    const pane = (await $.ui.panes()).find(p => p.id === PANE)
    if (!pane || !pane.isPlaced) void $.ui.open({ id: PANE, title: PANE_TITLE })
  }
  return next(e)
})

本人が閉じたペインは開き直しません。閉じた操作を無視して出し続けると、作業の邪魔になるからです。

4. 作ったmodsがそのセッションでしか使えない

Claude Codeにmodsの作成を頼むと、組み込みのスキルが ~/.claude/dev-mods/<セッションID>/ に書き出し、そのセッションの中でだけ有効になります。他のセッションで使うには、別のフォルダへコピーして --plugin-dir で読み込む必要があります。

出典:Create a mod – Claude Code Docs

加えて、セッション用のフォルダで改修を続けると、再読み込み(hot reload)を有効にするかの確認が英語で表示され、改修のたびに答えることになりました。

そこで、正本をvault内の .claude/mods/vault-dashboard/ に置き、環境変数 CLAUDE_CODE_PLUGIN_DIRS にそのパスを登録しました。この環境変数は --plugin-dir と同じ読み込みを毎セッション行うもので、Windowsではセミコロン区切りで複数を指定でき、絶対パスか ~ 始まりのパスで書きます(相対パスは無視されます)。

出典:Environment variables – Claude Code Docs

設定はユーザー単位の設定ファイル(~/.claude/settings.json)のenvに書き、変更前のファイルは退避してから書き換えました。新しいセッションで /vault コマンドが応答したことで、読み込まれていると確認しています。

自作modsの権限と保守

modsを常用する前に、公式ドキュメントの注意事項を確認しました。modsはユーザーの権限で動くコードで、サンドボックス化されていません。

出典:Mods overview – Claude Code Docs

公式の説明では、modsは次のことができます。

  • ファイルの読み書き
  • プロセスの起動
  • ネットワーク通信
  • 環境変数に入っている秘密情報の参照
  • ツール呼び出しの承認

公式は、信頼できる作者のmodsだけを入れるよう求めています。インストール前に claude plugin validate を実行すると、modsが使うイベント(hooks:)と呼び出す機能(calls:)を一覧でき、組織として制限したい場合は管理設定で制限できます。

自作のmodsでも、この一覧が自分の意図と合っているかを一度確かめておくのが良いと思います。
今回のmodsが行う操作は、次の3つに絞りました。

操作対象
ファイルの読み取りvault内のリマインダーと監視レポート
プロセスの起動Obsidianと、返信漏れの項目をTeamsで開くためのrundll32.exe
保存最近触ったファイルの一覧(mods専用の保存領域)

vault内のファイルへの書き込みと、modsからのネットワーク通信は使っていません。Teamsへの接続は監視レポートを作る側に任せ、modsはできあがったファイルを読むだけにしています。

画面に出す内容も絞っています。メールの返信漏れは差出人のアドレスを出さず、仕分け先フォルダ名の会社名だけを表示します。

保守の面では、正本を1か所に置き、セッション用フォルダには書かない運用にしました。改修は正本だけを直し、新しいセッションで反映を確かめます。

modsの要件は、ターミナル版がv2.1.287以降、デスクトップアプリ版がv2.1.286以降です。

出典:Mods overview – Claude Code Docs

FAQ

Q1:VS Code拡張やクラウドのセッションでも表示されますか?
A:公式ドキュメントでは、VS Code拡張のチャットパネル・claude -p での実行・クラウドセッションでは、フックは動作するものの描画はされないとされています。デスクトップアプリのWSLセッションでは動作しません。
出典:Mods overview – Claude Code Docs

Q2:同じダッシュボードを他の社員にも配れますか?
A:フォルダごと渡し、各自が CLAUDE_CODE_PLUGIN_DIRS に登録すれば読み込めます。
ただし今回のmodsはvaultの場所とリマインダーの書式を前提にしており、パスもコードに直接書いているため、そのままでは他の環境で動きません。配るのであれば、読み込むファイルの場所を設定で変えられるようにする改修が先に要ります。
あわせて、受け取る側にも上記の権限の一覧を確認してもらう必要があります。

まとめ

作業画面に必要な情報を出すために、新しい台帳もサービス連携も足さず、既存のファイルを読む表示層だけをmodsで作りました。
つまずいた4点はいずれも、ターミナル版とデスクトップ版、セッション開始時と本人の操作時の扱いの違いから来ており、実機で確かめて直しています。

使ってみて一番変わったのは、確認のために画面を切り替える回数です。残タスクも返信漏れも視界の端に出ているので、探しに行く必要がなくなりました。

小さな変化ですが、毎日のことなので差は大きくなります。

お問い合わせ

本記事に関するお問い合わせは、下記よりご連絡ください。

お問い合わせフォーム

関連ページ

社内SFAデータで検索AIを作ってみた|なぜRAGを採用しなかったのか – アサミ情報システム株式会社|GIS/3D/CityGML

生成AIで社内向け画像加工ツールを短時間開発|ホームページ掲載写真の圧縮・顔ぼかしを効率化した事例 – アサミ情報システム株式会社|GIS/3D/CityGML

TOP