# UpdateDashboardWidget ユーザーの個人ダッシュボード (Side Info Panel) の Markdown widget を upsert するツール。 ## いつ使う - ユーザーから「ダッシュボードにメモして」「news タブを更新して」などと頼まれたとき - 長期的に残したい情報 (ニュース要約、TODO、参照リンク) を残すよう指示されたとき - 1 タスク内の一時メモには使わない (それは task のコメントに書く) ## 引数 | name | required | 説明 | |---|---|---| | `slug` | yes | Widget の安定 ID。kebab-case (`memo`, `news`, `todo`)、32 文字以内 | | `content` | yes | Markdown 本文。64KB まで | | `title` | 新規 slug では必須 | 表示タイトル。既存 slug を更新するときは省略可(既存タイトル維持) | | `mode` | optional | `replace` (default) または `append` | ## 挙動 - 同じユーザーの `slug` が既に存在 → 更新 - 存在しない → 新規作成 (title 必須) - `mode='append'` → 既存 content の末尾に `\n\n` 区切りで追記 ## ワークフロー例 「最新のテック関連ニュースを news タブにまとめておいて」: 1. `WebFetch` などでニュースを収集 2. Markdown でまとめて 3. `UpdateDashboardWidget({ slug: "news", title: "ニュース", content: "" })` を呼ぶ 4. ユーザーには「ダッシュボードの news タブに反映しました」と返す ## gotcha - `slug` は user スコープでユニーク。他ユーザーの slug と衝突は起きない - 書き込み先は実行中タスクの owner の dashboard。共有タスクでも他人の dashboard には書かない - 1 度書いた slug の title は更新できない (新しいタイトルにしたい場合は UI から行うか、新 slug を切る) - 64KB を超える content は失敗する → 古いログを切り詰めるか、append ではなく replace でローテーション ## 関連