Help us improve
Share bugs, ideas, or general feedback.
From vantage-point
AI ネイティブ開発環境 — Canvas 視覚化、並列 worker 展開、inter-agent 通信を実現する MCP server。Claude Code 用 dashboard tool
npx claudepluginhub chronista-club/claude-plugins --plugin vantage-pointHow 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。
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
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)