From vantage-point
AI ネイティブ開発環境 — Canvas 視覚化、並列 worker 展開、inter-agent 通信を実現する MCP server。Claude Code 用 dashboard tool
How this skill is triggered — by the user, by Claude, or both
Slash command
/vantage-point:vantage-pointThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **AI ネイティブ開発環境** — Claude Code セッション中に Canvas 視覚化、 並列 worker 展開、 inter-agent 通信を実現する MCP server。
AI ネイティブ開発環境 — Claude Code セッション中に Canvas 視覚化、 並列 worker 展開、 inter-agent 通信を実現する MCP server。
VP は単なる「ブラウザビューア」 ではなく、 開発体験そのものを構成する 5 つの柱を提供する:
詳細 architecture: 関連 memory mem_1CaVnfJRgWtuRgZD9yQSoV (舞台-役者-演目 mental model)
# vp-app GUI を起動 (TheWorld:32000 が無ければ auto-launch)
vp app
# project SP の起動は vp-app sidebar から expand → auto-spawn
VP Process が起動していなくても、 MCP ツールを呼ぶと自動的に Process が起動する。
mcp__vantage-point__show
content: "# 進捗\n- A 完了\n- B 着手"
pane_id: "main"
content_type: "markdown"
mcp__vantage-point__watch_file
path: "/tmp/build.log"
pane_id: "right"
format: "json_lines"
filter: "INFO|WARN|ERROR"
→ 新規行が出るたびに Canvas pane に追記、 level filter / target exclusion 可能。
mcp__vantage-point__tmux_split
command: "claude --continue"
label: "worker-A"
mcp__vantage-point__tmux_capture
pane_id: "<返ってきた pane id>"
tmux_dashboard で全 pane を Canvas markdown dashboard 化、 worker 進捗を 1 view で監視。
# 送信 (reply_to なし = 新規 thread の root)
mcp__vantage-point__wire_send
to: ["agent@creo-memories"]
body: { "text": "review request" }
# 受信 (自分が参加する全 wire thread の未読 message、 timeout 待ち)
mcp__vantage-point__wire_recv
timeout: 10
# thread 系譜の取得 (指定 message から prev を root まで辿る)
mcp__vantage-point__wire_thread
message_id: "<message id>"
ccwire / msgbox は廃止、 wiremsg に一本化。 wire address は agent@<project> (lead) /
agent@<project>/<lane> (wing) 形式。 thread は prev parent-pointer で表現される (thread_id は無い)。
mcp__vantage-point__capture_terminal
output_path: "/tmp/vp-shot.png"
→ Read tool で PNG を視覚 review 可能、 UI 変更の review / debug に有用。
| Tool | 用途 |
|---|---|
show | コンテンツ表示 (markdown/html/log/url)、 v0.17.0 で show-subscriber 経由 PP body markdown 表示が landing |
clear | pane content clear |
toggle_pane | left/right pane 表示切替 |
close_pane | pane を閉じる |
switch_lane | Canvas の表示プロジェクト切替 |
watch_file | ログ file をリアルタイム表示 (JSON Lines / plain text) |
unwatch_file | 監視停止 |
list_lanes | project 内 Lane 一覧取得 (Lead + Worker、 Frame Engine 連動) |
| Tool | 用途 |
|---|---|
tmux_split | pane 分割で worker 展開 (任意 command 起動) |
tmux_capture | pane 出力を text 取得 (1 pane or 全 pane) |
tmux_dashboard | 全 pane を Canvas markdown dashboard 化 |
tmux_agent_deploy | agent metadata (label/status/task) 付きで pane 展開 |
tmux_agent_status | agent status 更新 (running/waiting/done/error) |
tmux_agent_send | pane に input 送信 (\n で Enter) |
| Tool | 用途 |
|---|---|
capture_canvas | Canvas window の PNG capture |
capture_terminal | VantagePoint.app terminal window の PNG capture |
| Tool | 用途 |
|---|---|
eval_ruby | 短命 Ruby 実行 (script / data processing) |
run_ruby | 長期 Ruby daemon (Canvas pane に streaming) |
stop_ruby | daemon 停止 (graceful shutdown) |
list_ruby | 実行中 daemon 一覧 |
| Tool | 用途 |
|---|---|
permission | tool 実行 permission 要求 (user 確認 dialog) |
restart | VP Process restart (session 状態保持) |
| Tool | 用途 |
|---|---|
add_wing | Wing Lane を spawn (branch + ahead-behind + dirty 状態 sidebar 表示)。 旧名 add_worker (lane rename worker→wing で更新済) |
delete_wing | Wing Lane を片付け (PTY kill + tmux kill + workspace dir cleanup を 1 call で完結)。 旧名 delete_worker |
| Tool | 用途 |
|---|---|
wire_send | wire address (agent@<project> / agent@<project>/<lane>) に送信。 reply_to なし = 新規 thread の root、 あり = その thread への reply (reply-all 展開) |
wire_recv | 自分が参加する全 wire thread の未読 message を受信 (timeout 指定可、 読むと cursor 前進) |
wire_thread | 指定 message から prev を root まで辿った系譜 (ancestor-chain、 root-first) を取得。 cursor は触らない |
| Tool | 用途 |
|---|---|
port_show | slot × lane × role → port (deterministic) |
port_url | localhost URL 生成 (http://localhost:{port}) |
port_roles | role → offset table (agent/dev_server/db_admin/canvas/preview) |
port_layout | 1 project slot の全 port 配置 (Markdown) |
VP は 「同じ logic を MCP (= AI agent 用) + CLI (= human 用) 両方から expose する」 を invariant として持つ。 同等 logic に 2 つの surface を保つことで、 AI session でも human session でも同じ操作を呼べる。
| MCP tool | CLI subcommand | 備考 |
|---|---|---|
show | vp pane show <content> | --pane-id / --format / --target / --append / --title |
clear | vp pane clear | --pane-id / --target |
toggle_pane | vp pane toggle <pane_id> | --visible で明示指定 |
close_pane | vp pane close <pane_id> | |
switch_lane | vp lane switch <name> | TheWorld :32000 経由で Canvas WS 全 client に broadcast |
add_wing | vp lane new <name> <branch> | CLI 側は server 経由ではなく lane library 直呼び (= SP 不在でも作れる)、 MCP は SP 経由 |
delete_wing | vp lane rm <name> | CLI 側は SP 稼働中なら SP 経由 orchestrated (PTY/tmux/workspace 全部)、 不在なら fs-only fallback |
list_lanes | vp lane ls --detail | --detail で SP /api/lanes を query して MCP 同等 JSON 出力 (= SP 稼働中のみ)。 vp lane ls (default) は fs scan の簡易 name<TAB>branch<TAB>path |
wire_send | vp wire send | --to / --body / --reply-to |
wire_recv | vp wire recv | 1-shot 受信、 --agent / --timeout。 連続 subscribe は vp wire watch |
wire_thread | (CLI 未提供) | message 系譜 trace は MCP のみ |
tmux_split | vp tmux split | |
tmux_capture | vp tmux capture | |
tmux_dashboard | vp tmux dashboard | |
tmux_agent_deploy | vp tmux deploy | |
tmux_agent_send | vp tmux send-keys | |
capture_canvas / capture_terminal | vp shot | CLI 側は vp shot (canonical) に統一、 MCP は target ごとに別 tool |
port_show / port_url / port_roles / port_layout | vp port show / vp port url / vp port roles / vp port layout | |
watch_file / unwatch_file | vp file watch / vp file unwatch | |
restart | vp restart | Process 再起動 |
eval_ruby / run_ruby / stop_ruby / list_ruby | (CLI 未提供) | Ruby VM 系は MCP のみ |
crates/vantage-point/src/lane/ / crates/vantage-point/src/commands/) に置き、 MCP と CLI は薄い surface として呼び出すadd_wing (= wing 後置) vs wing_add (= wing 前置)) は 将来 audit で再整合 する余地あり (= 現状は <verb>_<noun> 系を歴史経緯で許容)list_lanes vs vp ps の役割整理両者は重複しているように見えて scope が違う:
mcp__list_lanes = 現 project の 全 Lane (Lead + Wing) を返す。 state / stand / pid / cwd / wing_status / mailbox_addresses 詳細付き。 同 project 内の Lane を探す / wire 送信先を決める時に使うvp ps = TheWorld 配下の 全 project の SP process を一覧。 port + pid + project_name の概要のみ。 「どの project が稼働中?」 を見る時に使うvp lane ls = current cwd の repo の wing dir を fs scan で簡易表示 (name<TAB>branch<TAB>path)。 SP 不要、 oneshot 用途vp lane ls --detail = mcp__list_lanes の CLI pair。 SP /api/lanes を query して詳細 JSON を出す。 SP 稼働中のみTheWorld 👑 (32000) — 常駐 daemon、 全 SP + HP を管理
│
├── Hermit Purple 🍇 — External Control (MIDI / tmux / MCP) ← LSCM PR-α で World 階層に物理移管
│
└── Star Platinum ⭐ (project SP, 33xxx) — Project 単位の容器
├── Echoes 💬 (旧 HD) — Coding Assistant (Claude CLI / 任意 LLM、 v0.17.0 で `Heaven's Door 📖` から rename)
├── Paisley Park 🧭 — Information Navigator (Canvas / WebView、 v0.17.0 で Lane 階層に物理移管 + Frame Engine)
├── Gold Experience 🌿 — Code Runner (Ruby VM)
└── (per slot) Lane — PTY セッション (Lead + Worker)
├── The Hand 🤚 — 素 shell base
└── Echoes 💬 — 任意 LLM auto-launch (init_script 駆動、 doc 11)
詳細メンタルモデル: mem_1CaVnfJRgWtuRgZD9yQSoV (舞台-役者-演目)
Canvas は タブ付き統合ウィンドウ。 各タブが project を表し、 タブ内に複数の pane が並ぶ:
┌─[Tab: project A]──[Tab: project B]──┐
│ │
│ ┌── main ──┐ ┌── right ──┐ │
│ │ markdown │ │ logs │ │
│ └──────────┘ └───────────┘ │
│ │
└──────────────────────────────────────┘
| ID | 用途 |
|---|---|
main | メインコンテンツ (default) |
left | 左サイドパネル (常用: creo-memories 等) |
right | 右サイドパネル (常用: ログ / preview) |
switch_lane で別 project のタブに切替、 toggle_pane で left/right 表示切替。
show の content_type)| タイプ | 説明 |
|---|---|
markdown | Markdown 形式 (デフォルト・推奨) |
html | HTML 形式 (精密なレイアウトが必要な場合のみ) |
log | ログ形式 (追記向け、 append: true と組合せ) |
url | 外部 URL を iframe で埋め込み表示 |
ベストプラクティス:
showではcontent_type='markdown'をデフォルトとして使用。 Markdown は Canvas で見やすく描画される。htmlは精密なビジュアル (ダッシュボード、色付きダイアグラム、インタラクティブ要素) が必要な場合のみ使う。
| 症状 | 対処 |
|---|---|
| SP が「stale」 (sidebar 緑だが console 壊れ) | vp-app sidebar の hover で出る 🔄 (Restart SP) ボタン |
| Lane が dead 化 (claude zombie) | Lifecycle monitor が 5s 以内に検知 → sidebar 赤 dot 表示 → 手動 respawn |
| ghost characters (xterm.js 残留文字) | known issue (mem_1CaVpvsBKR3ckieRXo1nwr)、 Phase 6+ で対処予定 |
mcp_call timeout | Process restart で復旧、 5s timeout は QUIC 経路で発生 |
wire_* 系 commands が動かない | SP が起動しているか確認 (vp app で sidebar から expand → auto-spawn)、 宛先 wire address の表記を再確認 (agent@<project> / agent@<project>/<lane>) |
mcp__show → state.hub.broadcast → /ws → show-subscriber → vpPP.renderPP → #pp-content innerHTML の 6 段 pipeline 物理化。 doc 13 「PP は Information Router」 概念の最 minimal 実装が landing--frame-transition-ms で確立した CSS variable + MutationObserver pattern を terminal 5 token (fontSize / line-height / letter-spacing / font-family / cursor-style) に展開、 creo-ui-editor-host から runtime 編集可能Map<LaneAddress, SceneId>)vp:* → app:* rename、 daemon:start 完全 background detach、 cargo install --path で codesigned binary を ~/.cargo/bin/ 配置port_roles tool の inputSchema を schemars 1.x {const:null} 拒否対応 (rmcp 1.6 strict validation 適合)http://[::1]:32000 も使える)mcp__vantage-point__show({
content: "# 調査結果\n\n- 項目1\n- 項目2",
pane_id: "right",
title: "Research"
})
mcp__vantage-point__show({
content: "https://example.com",
content_type: "url",
pane_id: "right",
title: "Preview"
})
mcp__vantage-point__show({
content: "追加のログ行",
content_type: "log",
append: true
})
mcp__vantage-point__watch_file({
path: "/path/to/trace.log",
pane_id: "right",
format: "json_lines",
filter: "INFO|WARN|ERROR",
title: "Trace Log"
})
// 短命: 直接実行
mcp__vantage-point__eval_ruby({
code: "puts 'Hello from Ruby!'\nputs 1 + 2",
pane_id: "main"
})
// 長期: デーモン起動 (出力 streaming)
mcp__vantage-point__run_ruby({
code: "loop { puts Time.now; sleep 1 }",
name: "clock",
pane_id: "right"
})
// → process_id "rb-0001" が返る
// 一覧 + 停止
mcp__vantage-point__list_ruby()
mcp__vantage-point__stop_ruby({ process_id: "rb-0001" })
// 任意のペインを非表示に
mcp__vantage-point__toggle_pane({
pane_id: "right",
visible: false
})
// visible 省略でトグル
mcp__vantage-point__toggle_pane({ pane_id: "main" })
mem_1CaVeQEKXd8U2XHn75RD4M) — implementation 計画mem_1CaVnfJRgWtuRgZD9yQSoV) — TH/HD/Profile の関係性mem_1CaVeTysipdgVHoxwxUcPj, chronista-club Atlas) — Phase 7+mem_1CaSugEk1W2vr5TAdfDn5D) — App/Project/Lane/Paneagent@<project> (lead) / agent@<project>/<lane> (wing)、 notify@<project> 等の actor slotmr app (mise) で起動、 ~/Library/Logs/Vantage/vp-{world,app}.kdl.log を tailmise run sp-kill で全 SP graceful kill、 expand すれば auto-respawnVP_FORCE_RESTART_DAEMON=1 VP_FORCE_RESTART_SP=1 mr appreference/mcp-tools.md (TODO: 各 tool の引数 schema)npx claudepluginhub chronista-club/claude-plugins --plugin vantage-pointCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.