Domain Storytelling
用圖示句子講一個具體的情境:誰、拿什麼、做了什麼,圖示可以照你的領域自己畫,群組可以上色。Play story 一句一句講給你聽。可與 Egon.io 匯入、匯出。
design/<name>.domain-story.yaml
design/holds.domain-story.yaml 的 agent 在對話串回答,並提議把另一種情況另外講成一個 story。(畫面內容為英文示範。)在一大段文字裡,你沒辦法指著某一句說「就是這裡」。在 board 上可以:一個項目、幾個項目、檔案的幾行,或整張圖。
每張圖都是 repo 裡 design/ 的一個檔案。Board 是從檔案畫出來的,每次修改都是一般的 git diff。
你提問、你決定。Agent 寫檔、lint,再重畫 board。
拖動的連線、在原始碼視窗改的文字、另一個 agent 的 diff,都會在對話串裡等你同意。Canvas 自己從不寫檔。
重畫時,你移動過的位置會保留,你刪掉的東西也不會再出現。
每段對話都綁在你選取的東西上,agent 清楚知道你指的是什麼。
在 Unprose 上畫一張我們註冊流程的 EventStorming。
它會寫出 design/signup.es.yaml、檢查,然後畫在 localhost:4400 的 board 上。
選一個方塊,打開 Chat 分頁,輸入問題,按 Ask AI。每則訊息都會顯示目前狀態:
Agent 在對話串回答,或提出具體的修改(diff)。你說好之前什麼都不寫;說好之後,持有這些檔案的 agent 套用修改、lint、重畫。
依問題的形狀選圖。每張圖是 design/ 裡的一個檔案;多張圖可以放在同一張 board,用 traces 連起來:這個 story 來自那個 command,這張卡片來自那個 story。
用圖示句子講一個具體的情境:誰、拿什麼、做了什麼,圖示可以照你的領域自己畫,群組可以上色。Play story 一句一句講給你聽。可與 Egon.io 匯入、匯出。
design/<name>.domain-story.yaml
依照《Introducing EventStorming》的畫法,討論系統隨時間怎麼運作:event、command、policy、read model 和 hotspot 由左到右排列,並有文法檢查。
design/<name>.es.yaml
決定先做什麼:activity、step 和 story,用 release 切線分批。Agent 可以從你的 EventStorming 或 domain story 提議 stories。
design/<name>.story-map.yaml
看起來像真的畫面,可選手機、筆電或桌機尺寸,淺色或深色。可以只針對一個按鈕留言;編號的註解說明每個部分的用途;Clickable 顯示每個點擊會到哪裡,Play 可以一頁一頁走過。也有低擬真的 wireframe。
design/<name>.ui.yaml 或 .wireframe.yaml
把一個 release 的 stories 變成工作,一欄一欄往前推,可設定 WIP 上限。每張卡片都能追溯回它的 stories。
design/<name>.kanban.yaml
把 agent 流程寫成資料:trigger、step、step 之間的 event,以及每一步由誰執行。Inspector 顯示一個 step 的 agent、prompt、輸入、輸出和限制。可以 lint、golden test,也能直接執行。
<name>.workflow.yaml
在 Claude Code 輸入 /unprose: 就能開始:/unprose:eventstorm、/unprose:domain-story、/unprose:storymap、/unprose:kanban、/unprose:mockup、/unprose:wireframe,或用 /unprose:help 找出適合的那一個。Codex 和其他 MCP agent 會以 MCP prompts 取得同樣的功能。User journey 也是支援的圖之一。
你筆電上的 Claude Code、另一台機器上的 Codex、雲端的 agent,都可以在你同意後加入;誰回答、誰被問、誰能改檔案,都有清楚的規則。
把 client 指向 https://<你的 canvas>/mcp。它會顯示一次性的配對碼,你的 canvas 頁面會詢問是否允許連線:輸入配對碼、按 Allow 即可。也可以建立唯讀或可繪圖的 token,隨時撤銷。
在 board 標題列設定 Answered by。在留言裡寫 @codex-b,就把這個對話串交給那個 agent。Agent 之間也用同樣方式互問,在沒有你參與的情況下來回幾則就會暫停。
畫出這張圖的 agent 持有它的檔案,只有它能重畫。其他 agent 提出 diff,等你同意後由它套用。你也可以把檔案交給另一個 agent。
Board 的 Context 筆記告訴每個 agent 加入前討論過什麼;每次修改都記著是誰做的。
另一個 agent 說「好」,永遠不等於你的同意:只有你能核准修改。各 client 的設定:docs/agents-setup.md(英文)。
需要 Node.js 20 以上和 git。不用 npm install:repo 已附可直接執行的 build。
Clone 下來並啟動 canvas,board 會開在 http://localhost:4400。
git clone https://github.com/river0825/unprose && cd unprose
node scripts/canvas.mjs讓它繼續跑著。在另一個終端機把 Claude Code 連到 board:
claude mcp add unprose -e AWD_CANVAS_URL=http://localhost:4400 -- node "$PWD/scripts/mcp.mjs"接著在任何專案打開 Claude Code,問它:「在 Unprose 上畫一張我們註冊流程的 EventStorming。」不知道從哪裡開始?輸入 /unprose:help。
/plugin marketplace add river0825/unprose
/plugin install unprose@unprose每次開始 session 時,它會在 localhost:4400 啟動 canvas;更新後會用新版本重啟。
把 stdio server 加到 ~/.codex/config.toml,並把 AGENTS.md 複製到你的專案:
[mcp_servers.unprose]
command = "node"
args = ["/path/to/unprose/scripts/mcp.mjs"]
env = { AWD_CANVAS_URL = "http://localhost:4400" }
tool_timeout_sec = 1900其他 MCP client:指令 node,參數 /path/to/unprose/scripts/mcp.mjs,環境變數 AWD_CANVAS_URL=http://localhost:4400。
從安裝到第一次 session、每一種 agent 的步驟:使用說明。各 client 的細節與注意事項:docs/agents-setup.md。完整說明:繁體中文 README、diagrams、canvas 與 MCP 工具(英文)。
版本 0.30.0,