從工具堆砌到模組化架構
Skill / Domain / Tools 三層協作系統
這不是一堂 AI 應用課程。
這是一套已上線、已驗證的建築專業知識系統——
我們把設計作業中的步驟與流程,變成 AI 可以執行的標準按鈕。
在開始複習之前,先確保你的環境是最新的。
以下 8 步驟,從同步原始碼到開啟 AI 對話,一次完成。
在你自己的 fork 頁面按 Sync fork 按鈕,或用指令同步:
git fetch upstream && git merge upstream/main
把同步後的最新內容拉到你的電腦。
git pull
重新安裝套件並編譯 TypeScript → JavaScript。
請在終端機逐行輸入以下 3 行指令:
cd C:\Users\你的使用者名稱\Desktop\REVIT_MCP_study\MCP-Server
npm install
npm run build
⚠️ 路徑要換成你自己的!例如使用者名稱是 Admin 就打 cd C:\Users\Admin\Desktop\REVIT_MCP_study\MCP-Server
這是終端機指令,在 VS Code Terminal / PowerShell / Git Bash 都可以執行。
Gemini CLI 是對話介面,請另開終端機或叫 Gemini 幫你執行。
確認 args 裡的路徑指向你實際的 build/index.js 位置。
路徑錯誤是最常見的連線失敗原因。
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json |
| Gemini CLI | %USERPROFILE%\.gemini\settings.json |
| VS Code Copilot | .vscode/mcp.json(專案根目錄) |
| Claude Code(CLI) | .mcp.json(專案根目錄)或執行 claude mcp add revit-mcp --scope project -- node "路徑/build/index.js" |
你現在應該還在 MCP-Server 資料夾裡,先回上一層再進 MCP:
cd ..\MCP
dotnet build -c Release.R24 RevitMCP.csproj
版本號改成你的 Revit 版本 — R22=2022, R23=2023, R24=2024, R25=2025, R26=2026
或在 AI 對話中輸入:/build-revit --all(一次編譯全部版本)
先關掉 Revit!然後在終端機逐行輸入(版本號改成你的):
mkdir "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP" -Force
Copy-Item ".\bin\Release.R24\RevitMCP.dll" "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP\" -Force
你應該還在上一步的 MCP 資料夾裡,所以路徑用 .\bin\ 就好。
把兩行的 2024 和 R24 都換成你的版本號。
或在 AI 對話中輸入:/deploy-addon --version 2024
打開 Revit → 點擊 Add-in 面板的 RevitMCP 按鈕(啟動 WebSocket port 8964)
→ 回到 AI Client 用自然語言下指令,例如「幫我查 3 樓所有房間」。
Skill:fire-safety-check
fire-rating-check.md — 防火時效視覺化(1hr/2hr/3hr 上色)corridor-analysis-protocol.md — 走廊淨寬檢討 + 逃生路徑exterior-wall-opening-check.md — 第 45 條外牆開口距離 + 第 110 條防火間隔| 工具 | 用途 |
|---|---|
query_elements_with_filter | 依防火時效參數篩選牆體 |
get_category_fields | 取得防火時效參數名稱 |
get_field_values | 列出所有時效等級 |
override_element_graphics | 依等級上色(紅/黃/綠) |
check_exterior_wall_openings | 自動計算開口與地界線距離 |
clear_element_override | 清除舊上色 |
§45 第四、五款已補入:排氣口距境界線 ≥ 2m、窗臺高度 H-2/D-3/F-3 ≥ 1.1m / 十層以上 ≥ 1.2m,已更新至 exterior-wall-opening-check.md。
Skill:smoke-exhaust
smoke-exhaust-review.md — 建技規§101① + 消防§188:天花板下 80cm 有效帶、開啟方式折減、無窗居室判定| 工具 | 用途 |
|---|---|
check_smoke_exhaust_windows | 有效面積檢核 + 自動上色四方位 |
check_floor_effective_openings | 無開口樓層判定(消防§4) |
create_section_view | 建立檢討剖面 |
create_detail_lines | 天花板線 / 有效帶線 |
create_filled_region | 有效帶色塊 |
create_text_note | 統計摘要標註 |
export_smoke_review_excel | 五工作表 Excel 報告(含 §101 補充檢討) |
§101 排風量 + 中央監控已整合:排風機 ≥ 120 m³/min(靜態提醒)、中央管理室偵測(半自動),已整合至 C# partial class + domain + Excel Sheet 5。
Issue #19(已關閉)Skill:building-compliance + parking-check
daylight-area-check.md — 居室採光比檢討(§41)floor-area-review.md — 容積率 / 樓地板面積計算parking-clearance-check.md — 車位淨空 > 210cmparking-space-review.md — 八類停車位數量統計| 工具 | 用途 |
|---|---|
get_room_daylight_info | 採光面積 / 居室面積比 |
get_rooms_by_level | 取得樓層房間清單 |
query_elements_with_filter | 篩選停車位族群 |
override_element_graphics | 標示不合規項目 |
get_field_values | 停車位類型分佈統計 |
§41 天窗/遮蔽出處已標註:daylight-area-check.md 天窗 3 倍、遮蔽 70% 規則已加「出處待確認」標註,可能來自地方自治條例或設計手冊。
停車位條號已修正:§60-1 → §60(車位尺寸)、§61(車道寬度)、§62(樓層淨高),已更新 docs/0328的課程討論.md。
Skill:curtain-wall + facade-generation
curtain-wall-pattern.md — 帷幕牆面板排列模式facade-generation.md — 五種幾何立面面板生成| 工具 | 用途 |
|---|---|
get_curtain_wall_info | 取得 Grid 結構與面板分佈 |
get_curtain_panel_types | 列出可用面板類型 |
create_curtain_panel_type | 建立自訂面板(HEX 色彩) |
apply_panel_pattern | 矩陣排列套用 |
create_facade_panel | 單片 DirectShape 面板 |
create_facade_from_analysis | 批次整面立面 |
Skill:auto-dimension + detail-component-sync + dependent-view-crop
auto-dimension-workflow.md — 走廊尺寸自動標註detail-component-sync.md — 詳圖編號同步(v1.0→v3.5 演進)dependent-view-crop-workflow.md — 從屬視圖依網格裁剪批次建立| 工具 | 用途 |
|---|---|
create_dimension | 建立尺寸標註 |
query_walls_by_location | 牆體位置查詢(標註定位) |
get_all_grids | 網格線座標(裁剪邊界) |
get_all_views | 視圖清單(母視圖選擇) |
Skill:element-query + element-coloring + wall-orientation-check
element-query-workflow.md — 三階段查詢協議(Explore → Align → Retrieve)element-coloring-workflow.md — 依參數值上色標記wall-check.md — 牆壁內外方向檢測| 工具 | 用途 |
|---|---|
get_active_schema | Phase 1:探索品類 |
get_category_fields | Phase 2:對齊參數名稱 |
get_field_values | Phase 2.5:值分佈 |
query_elements_with_filter | Phase 3:多條件篩選 |
override_element_graphics | 結果視覺化上色 |
clear_element_override | 清除舊覆寫 |
unjoin_wall_joins | 上色前取消接合 |
rejoin_wall_joins | 上色後恢復接合 |
Skill:sheet-management(明細表部分規劃中)
sheet-viewport-management.md — 圖紙編號、Viewport 管理| 工具 | 用途 |
|---|---|
create_view_schedule | 建立明細表(指定品類 + 欄位) |
export_smoke_review_excel | Excel 多工作表匯出(排煙範例) |
get_all_views | 視圖 / 圖紙清單管理 |
Skill:qa-review(MEP 工具已上線)
qa-checklist.md — 六階段品質驗證(結構→參照→設定→建構→部署→內容 Lint)| 工具 | 用途 |
|---|---|
get_selected_elements | 取得選取元素資訊 |
get_connector_info | MEP 接頭座標 / 連接狀態 |
add_pipe_cap | 管端安裝管帽 / 法蘭 |
get_element_info | 元素詳細參數檢查 |
get_project_info | 專案基本資訊驗證 |
Domain:stair-compliance-check
stair-compliance-check.md — 建技規 §33~§36 + 無障礙規範 §167| 工具 | 用途 |
|---|---|
check_stair_headroom | 樓梯淨高自動檢測 + 上色標示 |
get_stair_actual_width | 扣除扶手後實際淨寬 |
create_stair_section_view | 建立樓梯剖面檢討視圖 |
create_stair_text_note_with_leader | 自動標註檢討結果(含引線) |
你(使用者)
↓ 自然語言,例如「幫我查 3 樓所有房間」
AI Client(Claude Desktop / Gemini CLI / VS Code Copilot)
↓ MCP Protocol (stdio)
MCP Server(Node.js,跑在你的電腦上)
↓ WebSocket (port 8964)
Revit Add-in(C# 外掛)
↓ Revit API
Revit 執行操作 → 結果回傳 → AI 用自然語言告訴你
重要:三個東西都跑在你自己的電腦上,模型不會上傳到雲端。
就是你 clone 下來的專案裡面的 MCP-Server 資料夾:
<你 clone 的位置>\REVIT_MCP_study\MCP-Server\
├── src\ ← TypeScript 原始碼
├── build\ ← 編譯後的 JS(AI Client 指向這裡)
└── package.json
編譯指令:
cd MCP-Server
npm install
npm run build
部署到 Revit 的 Addins 資料夾(AppData 是隱藏資料夾,在檔案總管輸入 %APPDATA%):
C:\Users\你的名字\AppData\Roaming\Autodesk\Revit\Addins\2024\
├── RevitMCP.addin ← 告訴 Revit 有這個外掛
└── RevitMCP\
└── RevitMCP.dll ← 外掛本體
⚠️ 只能有一個 .addin 檔案。如果看到 RevitMCP.2024.addin 要刪掉,否則 Revit 載入兩次。
| AI Client | 設定檔位置 | 備註 |
|---|---|---|
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json | 改完重開 Claude |
| Gemini CLI | %USERPROFILE%\.gemini\settings.json | 不用重開 |
| VS Code Copilot | .vscode/mcp.json | 放在專案根目錄 |
| Claude Code(CLI) | .mcp.json | 放在專案根目錄,或用 claude mcp add 指令 |
設定內容(四個 Client 格式相同):
{
"mcpServers": {
"revit-mcp": {
"command": "node",
"args": ["<你的完整路徑>/REVIT_MCP_study/MCP-Server/build/index.js"]
}
}
}
⚠️ 請把 <你的完整路徑> 換成你實際 clone 的位置,例如:
C:/Users/你的名字/Desktop/REVIT_MCP_study/MCP-Server/build/index.js/Users/你的名字/Desktop/REVIT_MCP_study/MCP-Server/build/index.js路徑用正斜線 /,不要用反斜線 \。路徑錯誤是最常見的連線失敗原因。
| 項目 | 第一次(1月) | 第二次(2月) | 現在(3月) |
|---|---|---|---|
| MCP 工具數 | ~25 | ~37 | 55 |
| Domain 文件 | 3 | 10 | 23 |
| Skills | 0 | 0 | 17 |
| Revit 版本 | 2024 only | 2024 only | 2022-2026 |
| 建構方式 | .2024.csproj | 同左 | 統一 RevitMCP.csproj |
| AI Client | Claude Desktop | + Gemini CLI | + VS Code Copilot |
| 社群 PR | 0 | 2 | 6(#11~#16) |
| 項目 | Token 成本 |
|---|---|
| 86 個工具定義 | ~25,800 tokens |
| CLAUDE.md 全文 | ~5,000 tokens |
| 每輪固定成本 | ~30,800 tokens |
| 如果到 100 個工具 | ~35,000 tokens |
query_elements 而不用更精確的 query_elements_with_filterAI 自己猜排煙窗計算方式:
Domain 文件寫著:
check_smoke_exhaust_windowsAI 不會主動去翻 domain/ 資料夾。需要觸發機制(Claude 的 .claude/skills/ 或 Gemini 的 .gemini/skills/)來引導它讀取對應的 Domain 文件。
延續廚房的比喻——每加一道新菜,你必須同時做兩件事:
| 角色 | 比喻 | 實際檔案 | |
|---|---|---|---|
| 第一件 | 在菜單上加一道菜 | 告訴 AI「有這個工具、要傳什麼參數」 | revit-tools.ts(MCP Server 端) |
| 第二件 | 教廚師怎麼做這道菜 | 寫 Revit 操作的實際程式碼 | CommandExecutor.cs(Revit 端) |
少了任一邊都不行:只加菜單 → AI 點了菜但廚房不會做;只教廚師 → 菜會做但菜單上沒有,AI 永遠不會點。
Alex 同時開發帷幕牆和排煙窗,兩個功能都要改這兩個檔案。結果:
所有功能都擠在同兩個檔案裡。不管加什麼新菜,都在同一本菜單、同一本手冊裡加。三個人同時加?三個人搶同一支筆寫同一頁。
(這個「菜單 + 廚師」的架構會在 3-1 三層架構裡完整展開——到時你會看到完整的資料流。)
"Tools are designed to be model-controlled, meaning that the language model can discover and invoke tools automatically."
(工具被設計為模型控制的,意即語言模型可以自動發現並調用工具。)
— MCP Specification: Tools
"Skills load on-demand and eliminate the need to repeatedly provide the same guidance across multiple conversations."
(技能按需載入,消除了在多次對話中重複提供相同指引的需要。)
— Anthropic: Agent Skills Overview
| 維度 | MCP Tool | Agent Skill |
|---|---|---|
| 角色 | 能力層(DO)— 廚房 | 知識層(KNOW)— 食譜 |
| 控制者 | LLM 自動選擇 | 關鍵字觸發 → 按需載入 |
| 粒度 | 單一原子操作 | 多步驟工作流編排 |
| 需要基礎設施 | 是(Server process) | 否(純檔案) |
"We'll also explore how Skills can complement Model Context Protocol (MCP) servers by teaching agents more complex workflows that involve external tools and software."
(我們也將探討 Skill 如何補充 MCP 伺服器,透過教導 Agent 涉及外部工具的更複雜工作流程。)
— Anthropic Engineering Blog
"Skills describe the workflow. MCP provides the runner... Saying Skills killed MCP is like saying GitHub Actions killed Bash."
(Skill 描述工作流程。MCP 提供執行器……說 Skill 殺死了 MCP,就像說 GitHub Actions 殺死了 Bash。)
— Block/Goose Team
override_element_graphics 真的去改 Revit model 顏色,query_elements_with_filter 真的查 Revit 資料庫。這些操作需要 WebSocket、Revit API、Transaction。Skill 做不了這些。/fire-safety-check 告訴 AI「先查參數名 → 再列時效等級 → 再篩選 → 最後上色」。這是知識和順序,不是能力。MCP 不管這些。"Progressive disclosure ensures only relevant content occupies the context window at any given time."
(漸進式揭露確保在任何時刻,只有相關內容佔用上下文窗口。)
— Anthropic: Agent Skills Overview
| 層級 | 何時載入 | Token 成本 | 內容 |
|---|---|---|---|
| L1: Metadata | 永遠(啟動時) | ~100 tokens/skill | name + description |
| L2: Instructions | 觸發時 | < 5,000 tokens | SKILL.md 完整內容 |
| L3: Resources | 按需 | 無上限 | scripts / references / domain |
這等於一種不需要 embedding 的 context-level RAG:
差別在於:傳統 RAG 用 vector similarity 檢索,Skill 用 LLM 自身的語意理解決定是否載入。
| 項目 | Before(全塞 CLAUDE.md) | After(Skill 拆出) |
|---|---|---|
| 專案設定 | ~3,000 tokens | ~3,000 tokens |
| 觸發關鍵字表 | ~800 tokens | ~500 tokens |
| 17 個編排邏輯 | ~6,000 tokens(常駐) | ~0 tokens(按需) |
| 啟動 context 總計 | ~9,800 tokens | ~3,500 tokens |
"An agent using MCP + Skills consumed 39,622 tokens across 5 turns, versus 328,083 tokens across 29 turns with MCP alone — an 87% reduction."
(使用 MCP + Skills 的 Agent 在 5 回合中消耗 39,622 tokens,而僅使用 MCP 則在 29 回合中消耗 328,083 tokens — 減少 87%。)
— Richard Seroter, 2026
不是 Domain(它一直都是拆開的),而是「編排邏輯」。過去 17 個工作流的 tool 調用順序和約束條件全部塞在 CLAUDE.md 裡常駐。現在搬進各自的 SKILL.md,只在觸發時載入。
Domain 檔案從第一天就是模組化的——每個 .md 獨立存在。但即使 Domain 已拆開,「用哪些 tool、什麼順序呼叫」這層編排邏輯過去只能寫在 CLAUDE.md 裡,因為沒有其他地方可以放它。
"Skills use progressive disclosure to manage context efficiently: (1) Discovery — agents load only the name and description... (2) Activation — the agent reads the full SKILL.md instructions into context. (3) Execution — the agent follows the instructions, optionally loading referenced files."
(技能使用漸進式揭露高效管理上下文:(1) 發現 — Agent 只載入名稱和描述… (2) 啟動 — Agent 將完整的 SKILL.md 指令讀入上下文。(3) 執行 — Agent 遵循指令,按需載入參考檔案。)
— Agent Skills Specification
Domain 解決「知識放哪裡」,Skill 解決「編排邏輯放哪裡」。
Skill 不是減少工具,是讓驅動工具的規範在暫存的可被調度性變成有彈性。
使用者: 「幫我檢查排煙窗」
│
▼
┌─ Layer 1: Skill ── WHEN + HOW ────┐
│ 角色:告訴 AI 何時啟動、怎麼做 │
│ description 裡有「排煙」關鍵字 │
│ → 指示 AI 讀取 Domain │
│ 成本:~100 tokens(metadata 常駐) │
│ < 5K tokens(觸發時載入) │
└──────────────┬─────────────────────┘
▼
┌─ Layer 2: Domain ── WHAT TO KNOW ─┐
│ 角色:提供領域知識 SOP │
│ 法規判定流程 + 步驟 + 工具名稱 │
│ 成本:~1500 tokens(由 Skill 引用)│
└──────────────┬─────────────────────┘
▼
┌─ Layer 3: MCP Tools ── WHAT TO DO ┐
│ 角色:執行操作(Revit API 調用) │
│ 預建工具,AI 帶參數呼叫 │
│ 成本:~2000 tokens(該模組的工具) │
└────────────────────────────────────┘
| 比喻 | Skill | Domain | Tools |
|---|---|---|---|
| 廚房 | 食譜目錄 | 食譜步驟 | 廚房設備 |
| 醫院 | 掛號台(分流) | 看診 SOP | 醫療器材 |
| RAG | Index(語意匹配) | Retrieval(chunk) | Execution |
三層架構的價值不在於把東西分成三個資料夾(Domain 從第一天就是獨立的),而是每層有不同的載入時機——Skill metadata 常駐,Skill body 觸發時載入,Domain 被引用時載入。這就是 2-5 講的「漸進式揭露」在架構上的實現。
還記得 2-3 講的「加一道菜要改兩個地方」嗎?現在你可以看到它們在架構裡的位置了:
AI Client(你)
↓ 自然語言
MCP Server ← revit-tools.ts 住在這裡(菜單)
↓ WebSocket
Revit Add-in ← CommandExecutor.cs 住在這裡(廚師)
↓ Transaction
Revit 模型
所以「菜單」和「廚師」其實是架構裡不同層的東西——一個在 MCP Server(Node.js),一個在 Revit Add-in(C#)。它們透過 WebSocket 通訊。加一個新工具,兩邊都要加對應的程式碼。
而 Skill 和 Domain 完全不涉及這兩個檔案——它們是純 Markdown,定義「怎麼用」而不是「怎麼做」。所以老師們貢獻 Domain 知識時,完全不用碰程式碼。
---
name: fire-safety-check
description: "消防安全檢討:防火時效視覺化、走廊防火分析、
外牆開口距離檢討。觸發條件:防火、耐燃、fire rating、
走廊、corridor、Article 45、Article 110。
工具:override_element_graphics、
check_exterior_wall_openings。"
---
# 消防安全檢討
## Sub-Workflows ← 結構標頭用英文(照官方規範)
### 1. 防火時效視覺化 ← 子標頭用中文(內容描述)
1. `get_category_fields` 查詢牆體 → 找到防火時效參數名稱
2. `get_field_values` → 列出所有時效等級
3. `query_elements_with_filter` → 依時效等級篩選牆體
4. `override_element_graphics` → 套用對應顏色
你的專案/
├── .claude/
│ └── skills/ ← 所有 Skill 在這裡
│ ├── fire-safety-check/
│ │ └── SKILL.md ← 一個 Skill = 一個資料夾 + SKILL.md
│ ├── building-compliance/
│ │ └── SKILL.md
│ ├── element-query/
│ │ └── SKILL.md
│ └── ... 共 19 個
路徑:.claude/skills/
Skill 的撰寫遵循「結構英文、內容中文」原則:
name:英文(資料夾名稱)description:中文摘要 + 中英混合觸發關鍵字## 結構標頭:英文(照官方規範,如 ## Workflow、## Reference)### 子標頭與內文:中文(面向使用者的說明)Claude Code 和 Gemini CLI 都有原生 Skills 機制。Claude Code 放在 .claude/skills/,Gemini CLI 放在 .gemini/skills/,格式都是 SKILL.md。我們用 CLAUDE.md + GEMINI.md 建立統一的指向規範,讓不同入口都能導向同一套 Domain。詳見下一頁 3-3。
| Claude Code | Gemini CLI | VS Code Copilot | |
|---|---|---|---|
| 行為指引 | CLAUDE.md | GEMINI.md | .github/copilot-instructions.md |
| 觸發機制 | .claude/skills/SKILL.md | .gemini/skills/SKILL.md | instructions 引導 |
| Domain 文件 | 共用 domain/ | 共用 domain/ | 共用 domain/ |
| MCP Tools | 共用 | 共用 | 共用 |
CLAUDE.md 和 GEMINI.md 各自定義行為指引,但都指向同一套 Domain 文件和 MCP Tools。這是「不同入口、同一目的地」的設計。
| 機制 | Claude Code | Gemini CLI |
|---|---|---|
| Skills 目錄 | .claude/skills/SKILL.md | .gemini/skills/SKILL.md |
| 行為指引 | CLAUDE.md | GEMINI.md |
| Skills 發現方式 | 名稱+描述注入系統提示 | 名稱+描述注入系統提示(官方文件) |
一句話:兩個平台都有原生 Skills 支援,我們用 CLAUDE.md + GEMINI.md 建立統一的指向規範,確保不同 AI Client 都能導向同一套 Domain 和 Tools。
位置:domain/
domain/
├── smoke-exhaust-review.md ← 排煙窗(§101)
├── fire-rating-check.md ← 防火時效
├── corridor-analysis-protocol.md ← 走廊寬度
├── daylight-area-check.md ← 採光(§41)
├── floor-area-review.md ← 容積率
├── parking-clearance-check.md ← 停車場淨空
├── curtain-wall-pattern.md ← 帷幕牆
├── qa-checklist.md ← QA 驗證
├── mep-csa-clash-detection.md ← MEP/CSA 碰撞偵測(5/12 新增至表)
├── pdf-export-comparison.md ← PDF 輸出 6 路徑決策(5/12 新增)
├── mechanical-part-doc.md ← 機械組件出圖 SOP(5/12 新增)
├── mep-extension-guide.md ← pyRevit 大神研究指南(5/12 新增)
├── references/building-code-tw.md ← 台灣建築法規條號(5/12 新串入工作流)
└── ... 共 35 個 + 1 reference
最重要的是第 4 點——明確寫出工具名稱。AI 就不會自己亂寫 API 呼叫,而是使用預建工具。
/domain — 把剛才成功的工作流程自動轉成 Domain SOP 文件/lessons — 把踩到的坑記錄為高階規則,追加到 lessons.md
情境:你剛用 AI 完成了一個法規檢討流程,覺得步驟很好用?立刻打 /domain 就能把它固化成 SOP,下次再做就不用從頭來。遇到一個坑?打 /lessons 記下來,團隊所有人都不會再踩。
| Anthropic 官方 | 本專案 | |
|---|---|---|
| 知識放哪 | Skill 內部的 references/ | 獨立的 domain/ |
| 知識與 Skill 的關係 | 1:1(綁定在 Skill 裡面) | N:N(多個 Skill 共用同一份知識) |
| 適合場景 | 每個 Skill 的知識不重疊 | BIM 法規被多個工作流共用 |
domain/fire-rating-check.md(一份知識)
├── 被 /fire-safety-check 引用(防火時效視覺化)
├── 被 /building-compliance 引用(法規檢討)
└── 被 /element-coloring 引用(依防火等級上色)
如果搬進 Skill 內部:
fire-safety-check/references/fire-rating.md ← 複製一
building-compliance/references/fire-rating.md ← 複製二
element-coloring/references/fire-rating.md ← 複製三
→ 法規更新時要改三個地方,忘改一個就不一致
| Domain | Skill | |
|---|---|---|
| 角色 | 知識(法規、SOP、步驟) | 編排(何時觸發、用什麼順序呼叫工具) |
| 載入方式 | 被 Skill 引用時才讀取 | metadata 永遠在 system prompt |
| 誰來寫 | 任何老師(只需要 Markdown) | Maintainer(需要理解工具編排) |
| 需要升級嗎 | 大多數不需要 | — |
你寫一份 Domain,所有引用它的 Skill 都自動具備你的專業知識。
你不需要懂 Skill 怎麼寫、工具怎麼用、程式碼怎麼改。
| Profile | 載入模組 | 工具數 | 適合 |
|---|---|---|---|
full(預設) | 全部 | ~55 | 什麼都要 |
architect | 基礎+牆+房間+帷幕牆+視覺化+明細表 | ~35 | 建築師 |
mep | 基礎+MEP+排煙窗+明細表+視覺化 | ~25 | 機電工程師 |
structural | 基礎+牆/結構+視覺化 | ~20 | 結構工程師 |
fire-safety | 基礎+房間+排煙窗+視覺化 | ~25 | 消防審查 |
在 AI Client 設定檔加一行 env:
{
"mcpServers": {
"revit-mcp": {
"command": "node",
"args": ["<你的完整路徑>/REVIT_MCP_study/MCP-Server/build/index.js"],
"env": {
"MCP_PROFILE": "architect"
}
}
}
}
不設定就是 full,跟以前一樣。Claude / Gemini / VS Code 都支援這個設定。
cd <你 clone 的位置>\REVIT_MCP_study
git remote -v
git remote add upstream https://github.com/shuotao/REVIT_MCP_study.git
git fetch upstream
git checkout main
git rebase upstream/main
git push origin main --force-with-lease
git log --oneline -5
# 應該看到 "Architecture V2" 相關 commit
# 安全方式:放棄 rebase 重來
git rebase --abort
git reset --hard upstream/main
git push origin main --force-with-lease
⚠️ reset --hard 會丟棄你在 main 上的本地修改。如果有重要修改請先 git stash。
cd MCP-Server
npm install
npm run build
需要 Node.js 18 以上。確認:node --version
cd MCP
dotnet build -c Release.R24 RevitMCP.csproj
版本對照:R22=2022, R23=2023, R24=2024, R25=2025, R26=2026
build 完成後,setup.ps1 或 /deploy-addon 會自動部署到正確路徑。
如需手動部署:
# 先關掉 Revit!版本號改成你的(例如 R24 對應 2024)
Copy-Item "bin\Release.R24\RevitMCP.dll" `
"$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP\" -Force
或用自動腳本:
..\scripts\install-addon.ps1
/build-revit — 在 Claude Code 中直接編譯,支援 --version 2024 或 --all/deploy-addon — 自動部署 DLL 到正確的 Addins 路徑(Windows only)
情境:每次改完 C# 程式碼後,用這兩個指令一鍵完成 Build + 部署,不用記指令。
原因:有兩個 .addin 檔案
# 查看
Get-ChildItem "$env:APPDATA\Autodesk\Revit\Addins\2024\*RevitMCP*"
# 刪除舊的
Remove-Item "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP.2024.addin"
原因:資料夾有多個 .csproj
# ❌ dotnet build -c Release.R24
# ✅ dotnet build -c Release.R24 RevitMCP.csproj
"env": { "REVIT_MCP_PORT": "11111" }帷幕牆和排煙窗共 13 個工具的 C# 端還是 stub。等 Issue #16 完成後就能用。其他 42 個工具正常。
更新(2026-05-12):Issue #16 已合並(PR #17, 2026-03-18),帷幕牆 + 排煙窗 C# 實作完成。當前 86 個工具全部正常運作。若仍遇到 NotImplementedException,請開新 issue 報告。
node --version # 需要 v18+
npm --version # 需要 v8+
下載:https://nodejs.org(LTS 版本)
/qaqc — 一鍵執行六階段品質驗證(檔案結構→交叉參照→建構設定→Build→部署→內容 Lint)
情境:不確定自己的環境有沒有問題?跑一次 /qaqc 就能全面體檢,每個 FAIL 項目都會附上修復步驟。
把你的專業工作流程寫成 SOP(Markdown 文件)。這是最有價值的貢獻——程式碼我們可以寫,但法規和實務經驗只有你有。
定義新工具的參數格式(schema),放在 MCP-Server/src/tools/
在 MCP/Core/Commands/ 建立 partial class,實作 Revit API 操作。
位置:domain/parking-clearance-check.md
# 停車場淨空檢討
## 觸發條件
使用者提到:停車場、停車位、車道寬度、parking
## 法規依據
- 建築技術規則設計施工編 §60-1
- 標準小型車位:寬 2.5m × 深 5.5m
- 無障礙車位:寬 3.5m × 深 5.5m
- 車道寬度:單車道 ≥ 3.5m、雙車道 ≥ 5.5m
## 檢討步驟
1. 呼叫 get_rooms_by_level 找出停車場空間
2. 呼叫 query_elements_with_filter 篩選停車位族群
3. 讀取每個車位的寬度和深度參數
4. 比對法規尺寸標準
5. 不合規 → override_element_graphics 標示紅色
6. 合規 → 標示綠色
7. 匯總報告
位置:.claude/skills/parking-check/SKILL.md
---
name: parking-check
description: "停車場檢討:停車位淨空高度檢查與數量分類統計。
觸發條件:停車場、停車位、車道寬度、parking、淨空。
工具:get_rooms_by_level、query_elements_with_filter、
override_element_graphics。"
---
# 停車場檢討
執行前請先讀取 domain/parking-clearance-check.md。
## Sub-Workflows ← 英文結構標頭
### 1. 停車位淨空高度檢查 ← 中文子標頭
1. 確認目標樓層(通常 B1F、B2F)
2. `query_elements_with_filter` 篩選 Parking 類別元素
3. 計算每個車位上方淨空
4. `override_element_graphics` 標示不合格車位
就這兩個檔案。你不需要寫任何程式碼。
/domain — 你不一定要手寫 Domain 文件。如果你剛在 AI 對話中完成了一個工作流程,直接打 /domain,AI 會自動從對話中萃取步驟、工具清單,幫你生成標準格式的 SOP 文件。
情境:你跟 AI 說「幫我檢查停車場車位淨空」,AI 幫你做完了,結果很滿意。這時候打 /domain,它就會把剛才的流程自動變成 domain/parking-clearance-check.md。
# 1. 確保最新版
cd <你 clone 的位置>\REVIT_MCP_study
git fetch upstream && git checkout main && git rebase upstream/main
# 2. 建立工作分支
git checkout -b add/parking-check
# 3. 建立你的檔案(用任何文字編輯器)
# domain/parking-clearance-check.md
# .claude/skills/parking-check/skill.md
# 4. 只 add 你的檔案(重要!不要用 git add .)
git add domain/parking-clearance-check.md
git add .claude/skills/parking-check/skill.md
# 5. commit
git commit -m "[Domain] 新增停車場淨空檢討工作流程"
# 6. push 到你的 fork
git push origin add/parking-check
# 7. 到 GitHub 點 "New Pull Request"
git add . — 會把不相關的檔案都加進去沒關係!把寫好的檔案傳給 maintainer(Email / Line / GitHub Issue 貼內容)。重點是你的知識,不是 Git 操作。
/lessons — 開發過程中踩到坑?提交 PR 前先用 /lessons 記錄下來,讓後面的人不用再踩。
情境:你在寫 Domain 時發現「Revit 的某個參數名稱在中文版和英文版不一樣」——這就是一條 lesson,值得記下來。
📅 更新於 2026-05-12 — 距 4/25 已過 17 天,新增 4 個 domain SOP / 4 個 MCP 工具 / 1 reference 串入工作流
| 項目 | 負責 | 狀態 |
|---|---|---|
| Issue #16:帷幕牆+排煙窗 C# 實作 | Alex | ✅ 已完成 |
| Issue #18:lessons.md 觸發機制 | maintainer | ✅ 已完成(/dev-guide) |
| Domain → Skill 全面升級 | maintainer | ✅ 已完成(19 個 Skill) |
| CONTRIBUTING.md 更新 | maintainer | 規劃中 |
| Issue #41:building-code-tw 串入工作流 | maintainer | ✅ 已完成(commit 897cac8, 3 Skills 加 references) |
| PR #42/#43:Loader/Core 熱重載架構 | ChimingLu | 🔁 build R24/R25/R26 全 PASS,等 owner 開 Revit 2024 人工驗證 Core 重載按鈕 |
| PR #30:lesleyliuke 17+ Skills 套餐 | lesleyliuke | 💬 已建 preview/lesley-pr30-snapshot 鏡像,待作者選 6 group 拆分方式 |
| PR #36:finish-legend MCP 工具 | 916kevin-gif | 💬 退回,等作者補 ~900 行 C# 實作 |
| Issue #45:analyze_floor_slopes | yunchen-kt | 💬 fork 已有 commit `2b9750aa`,等作者開 PR |
| thank.md:致謝靜默貢獻者 | maintainer | ✅ 已完成(SEven777-a 結構穿梁 / taiwanbanana 重命名 / Poison-sam Roslyn) |
追蹤連結:GitHub Issues
/dev-guide — 開發新工具前的完整準備指引:讀取踩坑經驗、確認工具能力邊界、跨版本相容規則、架構規則
情境:你想幫專案加一個新的法規檢討工具?先打 /dev-guide,它會帶你完成所有開發前的準備工作,確保你不會重蹈前人的覆轍。完成後用 /qaqc 做品質驗證。
這些全部都是 Level 1 貢獻。
Revit 連線時自動回報專案內容 → MCP Server 自動設定 Profile → 不用手動設 MCP_PROFILE。
排煙窗已有 Excel,計劃擴展到防火時效、採光、QA 檢核 → 直接拿去送審。
不需要懂程式、不需要懂 Git。
從零開始,把 Revit MCP 裝到你的電腦上。
Clone 是 Git 的「複製」功能。用 clone 而不是下載 ZIP,
以後專案更新時才能用 git pull 一鍵同步最新版。
Win + X → 選「終端」或「PowerShell」)
沒有 Git?
前往 git-scm.com 下載安裝,一路按 Next 即可。
進階版(想貢獻程式碼):
先在 GitHub 頁面右上角按 Fork,再 clone 你自己的 fork。
這樣未來可以提交 Pull Request 回饋給專案。
打開桌面上的 REVIT_MCP_study 資料夾,找到 scripts 資料夾,裡面有一個 setup.bat。
雙擊它。 就這樣。不需要管理員權限。
畫面會出現一個黑色視窗,跑完大約 3-5 分鐘。
選 Revit 版本時:上下方向鍵 移動、空白鍵 勾選/取消、Enter 確認。
如果你已經有 VS Code / Gemini CLI / Claude Code 等 AI 工具,
直接貼上這行指令,AI 會幫你完成所有步驟:
點擊上方指令即可複製。把 2024 改成你的 Revit 版本(2022/2023/2024/2025/2026)。
多版本用逗號:"2024,2025"
安裝完成後,關閉 Revit(如果有開的話),重新打開。
打開你的 AI 工具,直接用中文跟它說你要做什麼。
支援的 AI 工具:Claude Desktop / Gemini CLI / VS Code Copilot / Google Antigravity
setup.bat 已經幫你設定好了,直接開啟就能用。
遇到問題?
重新跑一次 setup.bat — 已完成的步驟會自動跳過
或到 GitHub Issues 回報
💰 線上 500 / 現場 200 / 首次 4,800(含歷次回放)
📝 分享筆記到社群即免費 | ⏰ 5/20 23:59 截止
持續擴充法規模組(綠建築、無障礙、結構)
Profile 自動偵測 + 送審報告匯出
你的專業,就是下一個按鈕。
貼上本次參加者名單(每行一位),抽出 3 位