Workflow Skill Router v2.1.0 正式支援 Claude Code:同一份 Skill Tree,Claude Code 和 Codex 都能用
Workflow Skill Router v2.1.0 新增 Claude Code Plugin:兩行指令從 marketplace 安裝,跑的是和 Codex 版同一套本機 MCP Server 與 Python Runtime,個人 Skill Tree 兩邊共用。這篇也交代和 Codex 版的差異,以及這次用 Claude 模型跑的發布評測結果與限制。
快速導覽 查看本文目錄
30 秒看懂這篇
- Workflow Skill Router v2.1.0 在 2026-11-01 正式發布,開始支援 Claude Code:用
/plugin marketplace add加上/plugin install兩行就能裝,Codex 版則改成固定--ref v2.1.0。 - Claude Code 版沒有另寫一套 Router,它和 Codex 版跑同一份 MCP Server 與 Python Runtime,只靠
WORKFLOW_SKILL_ROUTER_HOST=claude-code區分 Host,個人 Profile 與本機狀態兩邊共用。 - Workspace Profile 會先讀
.claude/workflow-skill-router.json,沒有才讀.codex/;兩邊都用的專案放一份.codex/設定就夠了。 - 這次的發布評測用 Claude Sonnet 5.5 跑了 36 次:加上 Router 後,最終路由的 6 個欄位每次都符合,不加只有三分之二;但兩邊都還沒通過完整契約,也沒有證明開發成果變好。
安安~我是ChiYu~
Workflow Skill Router 從第一版開始就只給 Codex 用。可是這陣子我待在 Claude Code 的時間越來越長,手上的 Skills 兩邊都有裝,麻煩就來了:在 Codex 寫好的工作流程,換到 Claude Code 就不算數,每個任務開頭又得重新交代一次「這個階段由誰主導」。
同一套 Skills、同一個人、同一個專案,只因為換了工具就要重講一遍規則,這件事我忍不了太久。
今天(2026 年 11 月 1 日) v2.1.0 正式發布,Workflow Skill Router 有了自己的 Claude Code Plugin。兩行指令就能裝,跑的是和 Codex 版同一套本機 MCP Server 與 Python Runtime,你的個人 Skill Tree 兩邊共用。
- GitHub 原始碼: https://github.com/eric861129/Workflow-skill-router
- v2.1.0 Release: https://github.com/eric861129/Workflow-skill-router/releases/tag/v2.1.0
- 繁體中文文件: https://huangchiyu.com/Workflow-skill-router/zh-tw/
- Claude Code 安裝指南: https://huangchiyu.com/Workflow-skill-router/zh-tw/guides/install-claude-code/

Workflow Skill Router 的新版社群預覽圖:每個階段一個主導 Skill,Claude Code 和 Codex 共用
如果你還不知道 Workflow Skill Router 是什麼,一句話:它在 AI Agent 開始動手前,先幫目前這個階段挑一個主導 Skill,只補上這個階段真的需要的輔助 Skill,再把路由攤開給你看。完整的設計想法寫在上一篇 Workflow Skill Router V2 正式版 ,這篇只講 Claude Code 這一塊。
先講版本:v2.1.0 起正式支援 Claude Code
這段放最前面,免得大家裝錯版本。
| 你要裝的 | 怎麼裝 | 版本 |
|---|---|---|
| Claude Code Plugin | /plugin marketplace add eric861129/Workflow-skill-router | Plugin manifest 帶 2.1.0,版本變更時 Claude Code 會提示更新 |
| Codex Plugin | codex plugin marketplace add eric861129/Workflow-skill-router --ref v2.1.0 | 固定 v2.1.0;原本固定 v2.0.2 的人,把 --ref 換成 v2.1.0 |
| Skill-only | 下載 Release 裡的 workflow-skill-router-skill-v2.1.0.zip | 只有路由指引,沒有可保存的狀態 |
Claude Code 版的 Plugin manifest 現在有寫 version,Claude Code 看到版本變了就會提示你更新。想手動更新,執行:
claude plugin update workflow-skill-router@workflow-skill-router
v2.1.0 除了 Claude Code,還帶了兩個變動,這篇不展開,簡單交代:
- Workflow Memory,預設關閉。 新增 8 個 MCP 工具,可以記錄完成的路由、提出可審查的 Profile 更新,也能回滾和清除。要自己在 policy 裡打開才會開始記錄,沒有背景學習,也沒有 telemetry。工具數從 12 個變成 20 個。
- 分類器看得懂繁體中文了。 新的
deterministic-objective-v2認得常見的繁中修復、需求、跨專案和保留進度的說法,也會忽略「不要長時間執行」這類否定句。
沒有另寫一套:同一個 Runtime,多認得一個 Host
做 Claude Code 版的時候,我最不想做的就是 fork 一份 Router 出來各自維護。兩套路由規則只要放著不管幾個月,一定會開始各講各的。
所以 Claude Code Plugin 裡面裝的東西,跟 Codex Plugin 幾乎一模一樣:
- MCP Server:同一份
server.bundle.mjs,由 Claude Code 透過node ${CLAUDE_PLUGIN_ROOT}/mcp/server.bundle.mjs啟動。 - Python Runtime:同一份
workflow_skill_router.pyz,負責分類任務、比對 Profile、保存計畫與同意紀錄。 - Router SKILL:這是唯一改寫的部分。Claude Code 版的 SKILL 用 Claude Code 的工具名稱描述同一套路由規則,也寫明 Claude Code 對話裡列出的 Skills 只代表「看得到」,不代表已經啟用;寫檔、執行指令這些權限,仍由 Claude Code 自己的 permission mode 決定,Skill 同意不等於工具權限。
這兩份共用的檔案不是手動複製的。scripts/sync-claude-plugin.py 會從 Codex Plugin 和標準 Skill 逐位元組複製過來,CI 再用 --check 確認兩邊沒有走鐘。
flowchart TB
subgraph CX["Codex Plugin"]
S2["Codex 版 Router SKILL"]
M2["MCP Server + Python Runtime<br/>HOST=codex"]
end
subgraph CC["Claude Code Plugin"]
S1["Claude Code 版 Router SKILL"]
M1["MCP Server + Python Runtime<br/>HOST=claude-code"]
end
M2 -- "sync-claude-plugin.py<br/>逐位元組複製,CI 檢查" --> M1
M1 --> Data["共用的本機資料目錄<br/>個人 Profile、計畫、同意紀錄"]
M2 --> Data那 Runtime 怎麼知道自己是被誰叫起來的?靠一個環境變數:WORKFLOW_SKILL_ROUTER_HOST。Codex 是預設值 codex,Claude Code Plugin 的 .mcp.json 則會把它設成 claude-code。
{
"mcpServers": {
"workflow-skill-router": {
"command": "node",
"args": ["${CLAUDE_PLUGIN_ROOT}/mcp/server.bundle.mjs"],
"env": {
"WORKFLOW_SKILL_ROUTER_HOST": "claude-code"
}
}
}
}
這個值寫錯會怎樣?我拿 cursor 試了一下,Runtime 直接拒絕啟動:
unsupported WORKFLOW_SKILL_ROUTER_HOST: 'cursor'; expected one of claude-code, codex
這是故意的。Host 決定 Router 要去哪裡讀 workspace 設定,Host 不明的時候,寧可在讀任何 workspace 檔案之前就停下來,也不要猜一個位置去讀。
兩行安裝,再花一分鐘確認它真的接上了
安裝前要有的東西
- 支援 Plugin 的 Claude Code
- 啟動 Claude Code 的
PATH上有 Node.js 24 以上 - Python 3.11 以上
Plugin 已經包含編好的 MCP bundle 和 Python Runtime,沒有 package.json,所以安裝時不會跑 npm,也不會幫你安裝或下載其他 Skills。
安裝
在 Claude Code 裡執行:
/plugin marketplace add eric861129/Workflow-skill-router
/plugin install workflow-skill-router@workflow-skill-router
習慣在 shell 操作的話,也可以這樣:
claude plugin marketplace add eric861129/Workflow-skill-router
claude plugin install workflow-skill-router@workflow-skill-router
確認有接上
- 執行
/mcp,確認plugin:workflow-skill-router:workflow-skill-router是連線狀態。 - 開新對話,問 Claude Code:「顯示 Workflow Skill Router 的狀態,並說明目前環境可以使用哪些能力。」 回答應該來自
get_router_status,並顯示bundled-local-r0。
如果 /mcp 顯示 server 啟動失敗,通常是 Claude Code 找不到 Node.js,或 Runtime 找不到 Python 3.11 以上的版本。這時 SKILL 會退回 skill-only-fallback:路由指引還在,但沒辦法保存狀態,它也不應該宣稱有保存。
想離線確認 Runtime 本身沒問題,可以在 repository checkout 的根目錄直接跑內附 Runtime 的 doctor:
WORKFLOW_SKILL_ROUTER_HOST=claude-code python plugins/claude-code/workflow-skill-router/runtime/workflow_skill_router.pyz doctor
Windows PowerShell 的寫法:
$env:WORKFLOW_SKILL_ROUTER_HOST = "claude-code"
python plugins/claude-code/workflow-skill-router/runtime/workflow_skill_router.pyz doctor
我在自己的 Windows 環境(Node.js 24、Python 3.14)跑過,輸出節錄如下:
{
"host": "claude-code",
"runtime_profile": "bundled-local-r0",
"runtime_status": "core-ready",
"telemetry_enabled": false
}
看到 "host": "claude-code" 就代表 Runtime 認得現在是 Claude Code。
跟 Codex 版差在哪?大部分一樣,四個地方要注意
| 項目 | Claude Code 的行為 |
|---|---|
| Workspace Profile | 先讀 .claude/workflow-skill-router.json,沒有才讀 .codex/workflow-skill-router.json。Workspace Memory policy 也照同樣順序。 |
| 個人 Profile 與狀態 | 和 Codex Plugin 共用同一個外部資料目錄,一棵 Skill Tree 兩邊都能用。要換位置可以設 WORKFLOW_SKILL_ROUTER_DATA_DIR。 |
| Managed Goal | 只用 Router 自己的本機工作圖,回報 authority_mode=router-local,不會去碰 Host 的任務狀態。 |
| 工具名稱 | mcp__plugin_workflow-skill-router_workflow-skill-router__<tool> |
這四個裡面,我覺得最實用的是第二個。
個人 Profile 放在 Plugin cache 外面的資料目錄(Windows 是 %LOCALAPPDATA%\Codex\workflow-skill-router)。你在 Codex 裡裝好的 Personal Routing Profile,裝完 Claude Code Plugin 就直接生效,不用再匯入一次。反過來,移除或更新 Plugin 也不會把你的 Profile、計畫和同意紀錄一起清掉。
Workspace Profile 的讀取順序則是為了「兩邊都用」的專案設計的:
my-repo/
├── .codex/
│ └── workflow-skill-router.json ← 兩邊共用時,放這一份就好
└── .claude/
└── workflow-skill-router.json ← 只有 Claude Code 要走不同流程時才加
我的建議是先只放 .codex/ 那一份。等哪天真的發現 Claude Code 要走不一樣的流程,再加 .claude/ 的版本。兩份設定一旦存在,就得兩份都維護;在真的需要之前,維持一份比較省事。
換到 Claude Code,路由規則一條都沒變
裝好以後,Router 在 Claude Code 裡的行為跟 Codex 版是同一套規則。拿 repo 內附的 workspace Profile 範例來看,一個屬於 api domain 的請求,例如 「Deliver the api contract, implementation, and tests」,會排出這樣的分階段計畫:
| 階段 | 主導 Skill | 這個階段的輔助 | 完成條件 |
|---|---|---|---|
| contract | api-designer | api-guidelines-skill | contract-reviewed |
| implementation | csharp-developer | 無 | implementation-complete |
| verification | qa-test-planner | playwright | tests-passed |
只有目前階段的 Skills 會生效,進到下一個階段再重新路由。規劃 API 合約的時候,Claude Code 不需要先把實作和測試的 Skills 都搬進 Context。
你自己點名的 Skill 也一樣優先。像這樣講:
Use api-designer only. Ask before adding support.
Router 會讓 api-designer 主導。如果它覺得需要額外的輔助 Skill,會先提出 proposal 問你;你說不要,路由就維持只有 api-designer,而且這個決定會記在本機。
還有一點我很在意:計畫裡寫了某個 Skill,不代表 Claude Code 裡真的裝了它。每個計畫中的 Skill 都會先標成 intended-unverified,等確認環境裡真的可用才算數。少了就直說少了,不會偷偷拿別的 Skill 頂替。
這次的發布評測:用 Claude 模型跑了 36 次
上一版的評測全部來自 GPT 系列模型,所以 v2.1.0 發布前,我讓 Behavior gate 改用 Claude 模型跑。這也是 v2.1.0 正式的發布評測,結果記錄在 維護者簽核 裡。
設定是這樣:
- 模型:
claude-sonnet-5-5,Claude Code 2.1.309,推理設定用 Claude Code 預設值。 - 規模:6 個路由案例,每個案例分成「不加 Router」和「加 Router」兩組,各跑 3 次,總共 36 次、42 個 model turn。
- 隔離方式:每個 turn 都開一個全新的 Claude Code
--print行程,不給工具、不載入 MCP Server、不讀使用者設定,也不保留對話狀態。 - 原始碼:跑在凍結的 release commit 上,跑完之後原始碼和 release notes 都不能再改。
| 項目 | 不加 Router | 加 Router |
|---|---|---|
| 最終路由的 6 個欄位全部符合 | 66.67% | 100% |
| 同一個案例重跑 3 次,結果一致 | 66.67% | 100% |
| 硬性違規 | 0 | 0 |
| 通過完整 turn 契約的 turn | 0/21 | 3/21 |
前兩列是這次最主要的結果:加上 Router 之後,Claude 在這 6 個案例裡每次都排出完全符合的最終路由,三次重跑也都一樣;不加 Router 只有三分之二。
但這組數字一樣要配著限制看:
- 完整契約沒有過。 兩組都沒有任何一次 attempt 通過完整契約。加 Router 那組通過的 3 個 turn,全部在需要使用者同意的那個案例;其他沒過的地方,都卡在模型自己回報的 evidence code,不是那 6 個最終路由欄位。
- evidence code 的落差兩組一樣。 同樣的 miss 在不加 Router 的那組也有,在前一個 commit 重跑也一樣,所以簽核把它歸為模型自我回報詞彙的限制,不算到 Router 頭上。
- 只測了一種設定。 只跑了 Sonnet 5.5 和 Claude Code 預設的推理設定,Codex 模型沒有在 v2.1.0 上重新評測。2026-10-19 那次 GPT 模型的探索性比較是單次執行、舊版原始碼,不能和這次直接相比。
- 很多事沒有量到。 這次沒有驗證 Skill 真的被啟用,沒有量到 Token 變少,也沒有量到開發成果變好。之前的探索性測試裡,完整載入指令套件會讓輸入 Token 多出約 26–28%。
所以現在能說的是:在這 6 個案例上,Claude Sonnet 5.5 加上 Router 以後,最終路由排得更穩、更一致。至於它能不能讓整個開發任務做得更好,還沒有資料。
另外提醒一個邊界:Plugin 的完整功能只在會載入本機 MCP Server 的地方才有,也就是 Claude Code 的終端機、IDE 和桌面版的 Code 分頁。在 claude.ai 的一般對話裡,只有 Skill 會載入,以 skill-only-fallback 運作,沒有可保存的狀態。
哪些人現在可以裝?
同時在用 Claude Code 和 Codex 的人,最值得現在就裝。原本只活在 Codex 裡的 Personal Routing Profile,現在 Claude Code 也讀得到,這就是這次更新最主要的價值。
Skills 已經裝了一大堆、常常要重新交代誰主導的人,也可以拿幾個真實任務試跑。先從一條最常用的流程寫成 Profile 開始,不用一次把所有流程都搬進來。
只用 Claude Code、Skills 只有三、四個的人,老實說,一份寫清楚的 CLAUDE.md 可能就夠了。不需要為了看起來比較專業,替自己多加一層要維護的東西。
如果你裝了,遇到 Node.js 或 Python 找不到、/mcp 連不上,或路由跟你預期的不一樣,歡迎到 GitHub Discussions
或 Issues 告訴我。附上你的作業系統、安裝方式、預期的路由和實際結果,我會比較好追。
接下來還沒有答案的有兩件事:完整契約為什麼過不了,目前看起來卡在模型回報的 evidence code;還有 Codex 模型在 v2.1.0 上的表現。有新的結果,不管好壞,我都會寫出來。
留言討論
用 GitHub 帳號留言,留言會同步到這個 Blog 的 GitHub Discussions。