# UNIDESK AIプロジェクト管理表 — AI用セットアップ＆運用ガイド

このファイルをあなたのAI（Claude Code / Codex / MCP対応AIアシスタント）に読ませると、
UNIDESKのプロジェクト管理表を「AIが書き、人は見る＋指示を書くだけ」で自動運用できるようになります。

> 使い方はかんたん: AIに **「 https://desk.uni-core.jp/ai-board-guide.md を読んで、UNIDESKの管理表を運用して」** と伝えるだけ。

## 仕組み（1分で理解）

- **人がやること**は2つだけ: ① Web画面（ https://desk.uni-core.jp/projects ）を見る ② 画面上部の「📥 AIへの指示」に1行書く
- **AIがやること**: 案件の状態・次の一手を管理表に書き、指示に対応して結果を書き戻す
- 状態は5つ:
  - `act` 🟢 今すぐ動ける（次の一手がAI自身にある）
  - `wait` 🟡 人・外部の返答待ち（解けたら即動く）
  - `watch` 👀 監視のみ（結果が出たら動く）
  - `hold` ⏸️ 保留・低優先
  - `done` ✅ 直近完了

## AIの接続（MCP）

- エンドポイント: `https://desk.uni-core.jp/api/mcp`（認証: `Authorization: Bearer <APIキー>`）
- APIキーは UNIDESK の **設定 → APIキー** で発行（**write権限**を付けること）
- Claude Code での登録例:

```
claude mcp add unidesk --transport http https://desk.uni-core.jp/api/mcp --header "Authorization: Bearer <APIキー>"
```

- 接続すると、運用プロトコルは MCP の initialize で自動配布されます（このガイドと同じ内容）。

## AIの既定動作（あなたのAIへのルール）

1. **セッション開始時**に `get_project_board` を呼び、現在地（全案件＋未処理指示）を把握する
2. 先頭に **「📥 AIへの指示」** があれば最優先で対応し、`resolve_ai_instruction` で結果を書き戻す（done＝完了 / blocked＝人待ちで停止＋理由）。指示を黙って放置しない
3. 案件の状態・次の一手が変わったら、その場で `upsert_project_board` を呼んで管理表を最新化する（この管理表はAIが正本を管理する。確認や承認は不要）
4. ユーザーが **「プロジェクト更新」** と言ったら＝**全案件の棚卸し**。このセッションの成果・会話内容を反映して、完了した案件は `done`、新しく始めた案件は登録、解けた待ちは解消し、変化点だけを短く報告する

## 🎯 ゴールツリー（目的 → ゴール → 子ゴール → 案件 を一本の線でつなぐ）

普通のタスク管理は「個々の案件が乱立して全体像が見えない」ので、AIも人も“作れること”に脱線します。
UNIDESKはゴールの階層を **AIが読む地図** として持ち、案件（管理表）をそのどこかに繋ぎます。

- 見る（人）: https://desk.uni-core.jp/goals ／ 管理表の各行に 🎯ゴール名 が付く
- 読む（AI）: `get_goal_tree`（全体）／`get_goal_tree goal="ゴール名"`（部分木）
- 作る・階層にする（AI）: `upsert_goal title="今月の売上" parent="今年の目的" projects=["案件A"]`
  （同名の達成済み/アーカイブ済みしか無いときは**新しい周回として別の行**ができる。前の行を直すなら `get_goal_tree` の `[8桁]` の ID を title に渡す）
- 案件を繋ぐ（AI）: `upsert_project_board name="案件A" goal="今月の売上"`
- 記録する（AI・作業の終わり）: `record_progress project="案件A" decisions=[…] deliverables=[…] remaining=[…]`

**作業の始まりと終わりの儀式（AIへの既定動作）**
1. 始まり: `get_goal_tree` → `get_project_board` → 返答の冒頭に「目指す状態／現在地／今回の一手」を1行ずつ
2. 終わり: `record_progress`（決定事項・成果物・残作業）→ `upsert_project_board`（状態・次の一手）

合言葉「**ゴール整理**」＝ゴールツリーの棚卸し（進捗更新・達成→done・不要→archived・案件の繋ぎ直し）

## 作業場のもと（3手順で始める）

1. https://desk.uni-core.jp/downloads/unidesk-workspace-starter.zip を展開して好きな場所に置く
2. `.mcp.json` の「ここにUNIDESKのAPIキー…」を、UNIDESKの **設定 → APIキー（write権限）** のキーに置き換える
3. そのフォルダを Claude Code で開き、「UNIDESKにつないで、今日の一手を教えて」と話しかける

中身: `CLAUDE.md`（既定動作）／`.mcp.json`（接続）／`.claude/settings.json`（始まり・終わりを思い出させる hooks）／`AGENTS.md`（Codex 用の既定動作・CLAUDE.md と同文）

**Codex CLI の場合**（`.mcp.json` と hooks は Claude Code 専用なので、接続は次の1行）:
```
codex mcp add unidesk --url https://desk.uni-core.jp/api/mcp --bearer-token-env-var UNIDESK_API_KEY
```
（環境変数 `UNIDESK_API_KEY` に write 権限のキーを入れておく。既定動作は同梱の `AGENTS.md` を Codex が読む）

注意: ゴールツリーと管理表は**個人ワークスペース**のものです。UNIDESK を組織モードで見ていると AI の記録は表示されません（ヘッダーで個人モードへ）。

## ツール早見表

| ツール | 用途 |
|---|---|
| `get_project_board` | 管理表全体＋未処理指示をまとめて取得（セッション開始時に必ず）。各行に 🎯ゴール名 |
| `upsert_project_board` | 案件名をキーに更新/作成。`state` / `next_action` / `waiting_on` / `deadline` / `links` / `note` / `sort_order` / `goal`（繋ぐゴール名） |
| `list_ai_instructions` | 指示の一覧（status: pending/done/all） |
| `resolve_ai_instruction` | 指示に結果を書き戻す（IDは先頭6文字以上の前方一致可） |
| `get_goal_tree` | 🎯ゴールツリー（目的→ゴール→子ゴール→📁案件→直近の記録）を1枚で取得（作業前に必ず） |
| `upsert_goal` | ゴールを作成/更新。`parent`で階層、`projects`で案件を繋ぐ、`progress`/`status`/`target_date` |
| `record_progress` | 作業の終わりに決定事項・成果物・残作業をゴールに記録（`project`を渡すと案件のタイムラインにも載る） |
| `save_ai_map` | AIが画像生成したマインドマップ/ビジョンマップを /maps に保存 |
| `list_ai_maps` | 保存済みAIマップ一覧 |
| `save_custom_page` | マイアプリ（アカウント専用ミニ機能）を作成/更新。/custom に追加される |
| `list_custom_pages` / `delete_custom_page` | マイアプリの一覧・削除 |

## CLAUDE.md に貼るスニペット（コピー用）

```markdown
# UNIDESK プロジェクト管理表
- セッション開始時に unidesk MCP の get_goal_tree（🎯ゴールツリー）と get_project_board で現在地を読み、返答の冒頭に「目指す状態／現在地／今回の一手」を1行ずつ書いてから着手する
- 作業を終える前に record_progress で決定事項・成果物・残作業をゴールに記録する（案件名 project を渡す）
- 新しい案件は upsert_project_board の goal でゴールに繋ぐ（ゴールが無ければ upsert_goal で先に置く）
- 📥未処理指示は最優先で対応し resolve_ai_instruction で結果を書き戻す（放置禁止）
- 案件の状態が変わったら upsert_project_board で即更新（承認不要・AIが正本）
- 「プロジェクト更新」と言われたら全案件を棚卸しして最新化→変化点だけ報告
- 節目にはマップを画像生成して save_ai_map で保存（/maps に飾られる）
- 「〜する機能がほしい」と言われたら save_custom_page で自作できる（CSP付きsandbox iframe・この枠はデザイン自由・種別categoryごと10個まで）。**データ受信は必ず下記のハンドシェイク雛形を使う**（外部通信は不可＝connect-src none / img-srcはdata:のみ）:

```html
<script>
let got = false;
const t = setInterval(() => { if (!got) parent.postMessage({type:"unidesk-ready"}, "*"); }, 500);
parent.postMessage({type:"unidesk-ready"}, "*");
addEventListener("message", e => {
  if (!e.data || e.data.type !== "unidesk-data") return;
  got = true; clearInterval(t);
  render(e.data.payload); // payload = { board, instructions, maps, activities, generated_at }
});
</script>
```
- 詳細: https://desk.uni-core.jp/ai-board-guide.md
```
