一键导入
revit-plugin-dev-workflow
Revit 2026 插件开发全生命周期。阶段 0 需求分流 → 阶段 1 Wiki+编码+编译 → 阶段 2 测试 → 阶段 3 维护 → 阶段 4 发布。Hermes 不直接修改 Revit 源码,默认委托 Claude Code 完成编码与代码审查。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Revit 2026 插件开发全生命周期。阶段 0 需求分流 → 阶段 1 Wiki+编码+编译 → 阶段 2 测试 → 阶段 3 维护 → 阶段 4 发布。Hermes 不直接修改 Revit 源码,默认委托 Claude Code 完成编码与代码审查。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Revit 二次开发总控入口(薄封装)。统一做任务分流与环境加载,再路由到子 skill 执行。
Build and deploy Revit 2026 plugins (SuperRoky and FmRoky). Use when compiling, deploying, or troubleshooting build issues for any Revit plugin project. Covers build scripts, SSH sync, git push/pull via GitLab, DeployAddin, Copy-Item deploy, and .addin file formats.
Revit 2026 plugin code patterns, pitfalls, and FAQ. Covers WPF cross-thread, ExternalEvent, preview image extraction, Material namespace conflict, OpenMcdf 3.x, and other common issues. Nice3point-specific patterns → references/nice3point-patterns.md. Scotec/FmRoky patterns → references/scotec-patterns.md.
Review and harden the Revit skill ecosystem against the latest dual-diagram architecture, single-source-of-truth rules, guardrails, and eval evidence. Use when auditing `revit-plugin-dev-workflow`, `revit-build-deploy`, `revit-coding-patterns`, related references, or when skill docs start drifting from the actual Revit development topology/SOP.
Nice3point TUnit 框架在 Revit 插件项目中的工程规范。覆盖测试项目结构、RevitApiTest 基类、HookExecutor 注解、Document Fixture、常见错误。触发条件:写测试、运行测试、测试报错、CI 配置。
| name | revit-plugin-dev-workflow |
| description | Revit 2026 插件开发全生命周期。阶段 0 需求分流 → 阶段 1 Wiki+编码+编译 → 阶段 2 测试 → 阶段 3 维护 → 阶段 4 发布。Hermes 不直接修改 Revit 源码,默认委托 Claude Code 完成编码与代码审查。 |
| metadata | {"author":"Hermes/Roky","revit_version":"2026","dotnet_version":".NET 8 (SuperRoky) + .NET 10 (FmRoky)","templates":"Nice3point.Revit.Templates (SuperRoky only)"} |
| linked_files | {"references":["references/environment.md","references/features.md"]} |
revit-root-router 路由进入。环境加载硬规则:Hermes 走 Revit 工作流时,shell 命令默认用包装脚本执行,避免遗漏私有 env。
~/.hermes/skills/revit/scripts/use-private-env.sh <command>路径说明:文中若出现
~/...,按本机路径等价替换,不影响工作流逻辑。
references/revit-workflow-topology.*(拓扑)+ references/revit-workflow-sop.*(SOP 门禁),确认本次插件线、同步链路、门禁口径${REVIT_API_WIKI_PATH} + ${REVIT_CORPUS_PATH}/index/ + ${REVIT_CORPUS_PATH}/raw/revit-2026/git commit -m "中文描述"(默认必须中文;auto-commit 仅兜底)./build.sh;FmRoky ./build-fmroky.sh当用户给出的是“修 bug / 做优化 / 完成功能”这类任务时,优先把需求收敛成下面五块,再进入编码:
Goal:
[[[[[一句话说明要完成的 Revit 结果]]]]]
Criteria for success:
[[[[[
1. 可验证的完成条件
2. 编译通过
3. Revit 2026 可加载
4. smoke test / 回归通过
5. 不破坏现有命令和 UI
]]]]]
Project constraints:
- 插件线:SuperRoky / FmRoky
- 先查 Revit Wiki / 现有代码 / API 依据
- 不凭印象猜 API
- 明确变更文件和回滚方式
- UI 变更要检查按钮、图标、文案、布局
Implementation defaults:
- 把最容易返工的规则先冻结(范围、边界、异常策略、最小阈值)
- 默认从“选中元素”开始,除非任务明确要求系统级批处理
- 不确定项不要留给子 agent 现猜,先写进口径
Mandatory questions to settle before coding:
1. 处理范围是选中元素还是系统批处理?
2. 尾段/余量如何处理?
3. 连接件按族还是按族类型?
4. 不兼容时是跳过还是整体失败?
5. 复杂网络(如三通/变径/软风管)这版做不做?
6. 最小阈值是多少?
对于“风管分段”这类特别容易返工的任务,先冻结口径再写 spec。不要把问题本身继续写成问题。
① 对照架构图 → topology + sop 双图先确认执行边界
② 选插件线 → SuperRoky(Nice3point/.NET 8)或 FmRoky(Scotec/.NET 10)
③ 查 Wiki → ${REVIT_API_WIKI_PATH} + ${REVIT_CORPUS_PATH}/index/ + ${REVIT_CORPUS_PATH}/raw/revit-2026/ 找 API 签名和示例
④ 写 spec → 明确改什么、怎么改,输出给 Claude Code(含回滚与可观测性)
⑤ 编码+审查 → 委托 Claude Code(delegate_task),一次任务包含编码和审查
⑥ 编译部署 → SuperRoky: ./build.sh | FmRoky: ./build-fmroky.sh
详细阶段说明见下方 §阶段 0~4。红线规则见 §纪律红线。
references/environment.md:环境路径、凭据入口、Git/SSH/NuGet 速查references/features.md:插件功能状态与依赖追踪references/revit-workflow-topology-v5-light.html / .png:系统拓扑图(当前推荐版本)references/revit-workflow-sop.html / .png:SOP 门禁图| 图 | 文件 | 用途 |
|---|---|---|
| 图A:系统拓扑 | references/revit-workflow-topology-v5-light.html / .png | 角色、基础设施、push-pull 链路 |
| 图B:SOP 门禁 | references/revit-workflow-sop.html / .png | 步骤、门禁、回滚分支 |
双图位于 references/ 下;按需打开对应的 HTML 或 PNG 文件即可。
⚠️ 硬门禁:阶段 0 选线前,必须先过双图确认执行边界。跳过 = 返工风险自担。
Id.Value 作为业务排序。PATTERN 负责旧引用/敏感信息,EXTRA_CHECKS 负责 workflow drift。这些规则没有例外。违反任何一条都可能导致编译失败、部署丢失、git 污染。
| # | 规则 | 原因 |
|---|---|---|
| 1 | Hermes 不直接改 Revit 源码文件 | Hermes 不是 C# 专家。"写代码"包括:patch、write_file、terminal 内的 sed/echo/cat 写入,对 .cs .xaml .xaml.cs .addin .csproj 的任何修改。默认委托 Claude Code;必要时可用其它受控代理,但流程与审查门禁不变 |
| 2 | "简单改动"不是借口 | "只是删几行"、"只是改个排序"、"只是改个字符串" — 全都算写代码,都必须走受控代理流程。简单改动的 spec 可以写得很短,但流程不能跳 |
| 3 | 手动提交优先,auto-commit 硬限 2 次 | 默认先手动 git commit -m "中文描述"。build 脚本允许 auto-commit 兜底,但连续 2 次后第 3 次触发 E100 闸门拒绝,要求手动提交清零 |
| 4 | 按插件线使用唯一入口脚本 | SuperRoky 必须走 build.sh,FmRoky 必须走 build-fmroky.sh。手动 scp + dotnet build 只编译到 bin/,不部署到 Addins,还会污染 Windows git 状态 |
| 5 | git 失败即中止,不继续编译 | push/pull 失败说明同步断了,继续编译只会产生不同步的产物 |
| 6 | git 失败禁止 scp 绕过(默认) | scp 覆盖文件会导致 Windows git 脏状态;仅允许走灾备附录并经过人工批准 |
| 7 | 写代码前必须先查 Wiki | Revit 2026 有很多 API 网上教程有但实际不存在,先查 Wiki 避免 90% 编译错误 |
| 8 | 图标同步三处 | csproj Resource + Application.cs SetImage/SetLargeImage + 实际 PNG 文件,缺一不可 |
| 9 | 修完 bug 后检查是否记踩坑 | 同类问题不应出现第二次 |
| 10 | 编码和审查同一任务闭环 | 默认在一次 delegate_task 中完成编码+审查;如需拆分必须在 spec 中说明原因与风险 |
Hermes 只做: Claude Code 做:
├── 分析用户需求 ├── 编写/修改代码
├── 查 Wiki/API 文档 ├── 审查代码质量
├── 编写 spec(要改什么、怎么改) └── 修复合规问题
├── 委托 Claude Code 编码+审查
├── git commit(描述性 message)
├── 按插件线执行 ./build.sh 或 ./build-fmroky.sh 编译部署
└── 验证结果,记录踩坑
角色边界、push/pull 链路、执行门禁以
references/revit-workflow-topology.*与references/revit-workflow-sop.*为准;不再维护正文中的文本版拓扑图。 Ubuntu 管思考和代码,GitLab 管版本,Windows 管编译和验证。两个插件完全独立,框架不同,别串。
⚠️ Windows 端永远只 pull,禁止 push。 所有代码改动必须在 Ubuntu 端完成并 push 到 GitLab,Windows 端只负责拉取、编译、部署。
环境路径、凭据入口、Git/SSH/NuGet 速查统一维护在
references/environment.md;本 skill 只保留流程门禁。
这条闸门的优先级高于 Stage 0 内的所有其他步骤。收到需求后,首先判断 spec 状态,不满足就中止。
| 条件 | 行为 |
|---|---|
| 用户需求附带完整 spec(含目标/变更文件/API 依据/验收标准/回滚策略/可观测性) | ✅ 直接进入选线阶段 |
| 用户需求没有 spec | ⛔ 立即中止,不得进入 Stage 1 编码。回复用户:「先填 spec。以下模板,填完我再推进。」附上 §Spec 模板 |
| 用户说"只是个简单改动,不用 spec" | ⛔ 仍然中止。 回复:「红线规则:简单改动也要 spec。可以写得很短,但流程不能跳。填完模板我马上推进。」 |
| 用户说"你先大概做一下" | ⛔ 仍然中止。 回复:「不能"大概做"。Revit API 猜了必挨打。先定 spec,明确要改什么、怎么验收。」 |
⚠️ 这不是"推荐流程"。这是闸门。违反 = 流程破窗,计入 Review 扣分。
收到任何 Revit 插件开发需求时,先做硬分流,别混框架:
~/revit-plugin-dev/src/SuperRoky~/revit-plugin-dev/Bim.FamilyManager⚠️ 一旦选线,当次任务内不切线。混用配置=高概率返工。
| 需求类型 | 固定步骤(按顺序) | 必备产物 |
|---|---|---|
| 新功能 | Wiki/API 检索 → spec 模板 → Claude Code 编码+审查 → build 脚本 → Revit 验证 | spec、commit、build log、验证结论 |
| 改/删功能 | 定位文件+影响面 → spec 模板 → Claude Code 编码+审查 → build 脚本 → 回归验证 | 影响清单、commit、build log |
| Bug 修复 | 复现+根因 → Wiki/API 交叉验证 → Claude Code 修复+审查 → build 脚本 → 踩坑沉淀 | 根因说明、修复点、FAQ增量 |
| 发布 | release 构建 → smoke 测试 → 产物打包 → 发布记录 | 版本号、zip、发布说明 |
⚠️ 这一步不做,后面全靠猜。猜 Revit API 基本都会挨打。
当需求包含“按长度切分 + 插入连接件 + 批量处理”时,必须在编码前补齐以下口径:
FamilySymbol,UI 建议显示“族名:类型名”)。⚠️ 这 6 条不冻结,后续实现会反复返工(尤其是“全系统范围”和“连接件兼容性”)。
BuildMainPath() → BuildPathStations() → BuildPathLedger() → ExecuteLedgerBreaksOnMainPath() 这条链路,让短支路/短尾段沿连续路径自然参与,而不是在单根 duct 上提前 break。这条是从风管分段实战里提炼出来的:全系统模式的核心不是“多处理几根管”,而是“换成连续路径账本”。
→ 详见 revit-build-deploy skill 的「项目初始化」章节(Nice3point 模板安装、创建项目、同步回 Ubuntu)。
src/MyPlugin/
├── source/ ← 源码在此(不是根目录)
│ ├── MyPlugin.csproj ← ⚠️ csproj 在 source/ 下
│ ├── Application.cs
│ ├── Commands/
│ ├── Views/
│ ├── ViewModels/
│ ├── Resources/Icons/
│ └── MyPlugin.addin
├── tests/ ← TUnit 测试项目
│ └── MyPlugin.Tests.csproj
└── global.json # SDK 8.0.419 + msbuild-sdks Nice3point.Revit.Sdk:6.0.0
csproj / global.json / IsRepackable 等关键配置 → 详见 revit-build-deploy skill 的「csproj 关键属性」和「global.json」章节。
任何涉及 Revit API 的功能开发,必须先查 Wiki 和现有代码,再动手写。
流程:
1. 查 Wiki 示例 → ${REVIT_API_WIKI_PATH} 找现成代码片段
2. 查 API 签名 → ${REVIT_CORPUS_PATH}/raw/revit-2026/core/ grep 方法签名
3. 读现有代码 → search_files 找插件中相关的 Commands/Services
4. 综合分析 → Wiki API + 现有代码结构 → 制定实现方案
5. 写 spec → 委托 Claude Code 编码
具体操作:
# Step 1: 找 Wiki 示例
search_files(pattern="Family|FamilySymbol|LoadFamily", path="${REVIT_API_WIKI_PATH}")
# Step 2: 找 API 签名(如果 entities 没有足够的细节)
search_files(pattern="LoadFamily|FamilySymbol", path="${REVIT_CORPUS_PATH}/raw/revit-2026/core/")
# Step 3: 读插件现有相关代码
search_files(pattern="Family|LoadFamily", path="~/revit-plugin-dev/src/SuperRoky/source/")
# Step 4: 结合需求和代码结构制定方案
# Step 5: 写 spec → 委托 Claude Code
⚠️ 不查 Wiki 直接写 = 猜 API。 Revit 2026 有很多 API 在网上教程里能搜到但实际不存在(如
Family.FamilyPath、UIDocument.PromptToPlaceFamily),编译时才报 CS0117。先查 Wiki 可以避免 90% 的这类问题。
新增功能按钮的图标从 Remix Icon 获取(remix-icon skill)。
图标同步三处(缺一不可):
<Resource Include="Resources\\Icons\\IconName16.png"/>.SetImage("...") + .SetLargeImage("...")source/Resources/Icons/ 目录,16×16 和 32×32 PNG 各一个获取流程:
# 搜索关键词找到合适的图标
python3 ~/.hermes/skills/remix-icon/scripts/fetch_icon.py --keyword "layers" --top 5
# 如果下载失败(GitHub raw 限流),从 remixicon.com 手动下载 SVG
# 然后用 Python cairosvg 或 Pillow 转成 16×16 和 32×32 的 PNG
⚠️ 图标文件必须同时有 16px 和 32px 两个尺寸。Ribbon 大按钮用 32px,小按钮用 16px。
编码和审查都由 Claude Code 完成。Hermes 严禁自己写/改 Revit 插件代码。
如果 delegate_task 连续返回上游错误(如 HTTP 503: Service temporarily unavailable),不要原地空转,也不要违反红线自己改 .cs/.xaml 源码。正确做法:
~/revit-plugin-dev)下的 docs/plans/YYYY-MM-DD-<feature>-spec.md,至少包含:目标、变更文件、API 依据、技术约束、关键修复点、验收标准、回滚策略、可观测性。...-implementation-breakdown.md,把改动拆成代理可直接执行的任务(入口切换、数据结构、算法、summary、UI 文案、构建验证)。dotnet build <csproj>),先区分是新改动编译炸了,还是项目本身已有构建门槛;适用场景:复杂 Revit 需求、源码改动受控、但上游代理临时不可用。这个降级路径的价值在于:把等待期变成有效前置工作,代理一恢复就能直接落地。
Spec 模板(固定字段):
## 目标
(要解决什么问题,成功标准是什么)
## 变更文件
- 路径A:新增/修改/删除
- 路径B:新增/修改/删除
## API 依据
- Wiki/API 签名来源(路径+关键词)
## 技术约束
- 事务边界
- 线程/ExternalEvent 要求
- 阶段排序/过滤规则
## 回归风险
- 可能影响的现有功能
## 验收标准
- 编译通过(配置)
- Revit 加载通过
- 功能 smoke 用例通过
## 非目标
- 本次明确不做什么
## 回滚策略(必填)
- 触发条件:什么情况下需要回滚(如编译失败、Revit 崩溃、功能回归)
- 回滚命令:`git revert <sha>` 或 `git checkout -- <file>` 具体命令
- 验证信号:回滚后确认正常的检查点(如 Revit 启动无报错、旧功能可用)
## 可观测性(必填)
- 日志/输出:改动是否产生新的日志或错误信息
- 监控点:上线后如何确认功能正常(手动验证步骤即可)
模板填完再发给 Claude Code,别把"想法"直接当 spec。
# Hermes 分析需求 → 查 Wiki → 写清楚要改什么
spec = """
## 目标
为 SuperRoky 添加「组元阶段」功能:批量修改 Group 内构件的 CreatedPhaseId 和 DemolishedPhaseId。
## 文件变更
- 新建 source/Commands/GroupPhaseCommand.cs
- 新建 source/Views/GroupPhaseDialog.xaml + .xaml.cs
- 修改 source/Application.cs — 添加 Ribbon 按钮
## 技术约束
- 继承 ExternalCommand,TransactionMode.Manual
- Group 内元素需用 IsPhaseCreatedValid 预过滤,不支持阶段的跳过
- Phase 排序规则:阶段名是纯数字字符串时按数值排序;否则沿用 FilteredElementCollector 返回的项目顺序(不要按 Id.Value 排序)
- 图标:source/Resources/Icons/GroupPhase16.png + GroupPhase32.png(已存在)
- csproj 需加 Resource Include
## API 参考
- Element.CreatedPhaseId / Element.DemolishedPhaseId
- Group.GetMemberIds() 递归处理嵌套 Group
- FilteredElementCollector.OfClass(typeof(Phase))
## 已有代码参考
- source/Commands/XianRenBanBanCommand.cs(同类命令结构)
- source/Application.cs(按钮注册方式)
"""
delegate_task(
goal=f"""为 Revit 2026 插件编写代码并审查。
{spec}
项目: ~/revit-plugin-dev/src/SuperRoky/
API Wiki: ${REVIT_CORPUS_PATH}/raw/revit-2026/ + ${REVIT_API_WIKI_PATH}
审查清单:
1. Transaction 使用是否正确(必须在 tx 内操作文档)
2. 异常处理是否完善(每个元素赋值独立 try-catch)
3. FilteredElementCollector 是否有过滤器
4. 空值检查(doc, uidoc, element)
5. Revit 2026 API 兼容性(无废弃 API)
6. .addin 格式正确
7. 资源文件引用正确(图标 csproj Resource)
8. 命名规范与现有代码一致
发现问题直接修复,返回修改的文件列表、关键实现说明、审查结果。""",
context="项目结构、已有代码、API Wiki 路径",
toolsets=["terminal", "file", "web"]
)
Claude Code 完成编码+审查后,优先手动提交;build 脚本的 auto-commit 有硬上限:
# 推荐:先手动 commit(描述性 message,清零 auto-commit 计数器)
cd ~/revit-plugin-dev/src/SuperRoky
git add -A
git commit -m "feat: 简化组元阶段对话框,阶段排序按项目顺序"
# 再 build.sh(同步+编译+部署)
cd ~/revit-plugin-dev && ./build.sh
# 也允许直接 build.sh(auto-commit 兜底),但连续 2 次后第 3 次触发 E100 闸门拒绝
cd ~/revit-plugin-dev && ./build.sh
⚠️ E100 闸门:连续 2 次 auto-commit 后,build 脚本拒绝继续自动提交并输出修复步骤。手动 commit 后自动清零。两个插件独立计数(
.build-state/.build-state-fmroky)。
两个插件的编译脚本都已自动化:编译成功后自动部署到 Revit Addins 目录,不需要手动复制。
经验补充:SuperRoky 这类 Revit 项目在本地直接
dotnet build往往会被RevitVersion、Microsoft.WindowsDesktop.App或 WindowsDesktop SDK 环境卡住;验收时优先跑仓库自带的./build.sh --build-only(或对应插件脚本),把它当作标准构建入口。
dotnet build source/SuperRoky.csproj -c Debug 不能直接当作通用入口:该项目的包版本依赖 $(RevitVersion).*,如果版本参数未被构建流程注入,会报 '-1.*' is not a valid version string。遇到这种情况,先走仓库构建脚本或确认构建模块是否已经写入 RevitVersion,不要误判成代码编译错误。
源码同步通过 GitLab(${GITLAB_HOST}:8929)完成:
git commit + push → GitLab → Windows git pullgit commit + push gitlab develop:main → GitLab → Windows git pull# SuperRoky — 同步 + 编译 + 部署(一步到位)
cd ~/revit-plugin-dev && ./build.sh
# FmRoky — 同步 + 编译 + 部署(一步到位)
cd ~/revit-plugin-dev && ./build-fmroky.sh
| 脚本 | 同步方式 | 编译 | 自动部署 | 部署目标 |
|---|---|---|---|---|
build.sh | Ubuntu push → GitLab → Windows pull | ✅ build | ✅ Copy-Item | Addins/2026/SuperRoky/ |
build-fmroky.sh | Ubuntu push → GitLab → Windows pull | ✅ build | ✅ Copy-Item | Addins/2026/FmRoky/ |
⚠️ Revit 运行时 DLL 被锁,编译前必须关闭 Revit。
build.sh 的 sync 阶段(git push / git pull)如果失败,流程立即中止,不继续编译部署。
./build.sh
├── sync_files()
│ ├── git push → 失败?→ 打印错误 → exit 1 ⛔
│ └── git pull → 失败?→ 打印修复命令 → exit 1 ⛔
├── build_remote() ← sync 全部成功才到这
└── deploy_remote()
处理流程:
./build.sh 从头开始常见修复:
# GitLab 不可达 → 检查 Docker 容器状态
ssh root@${GITLAB_HOST} "docker ps | grep gitlab"
ssh root@${GITLAB_HOST} "docker restart gitlab"
# Windows 端 git 脏状态 → 强制清理
ssh Administrator@${REVIT_WINDOWS_HOST} "cd C:/Projects/SuperRoky && git checkout -- . && git clean -fd && git fetch origin && git reset --hard origin/main"
# Unraid Docker 端口 RST(sandbox → Unraid Docker 端口不通)→ 加路由
ssh root@${GITLAB_HOST} "ip route add ${DEV_HOST}/32 dev br1"
⚠️ 绝对禁止 git 失败后手动 scp 覆盖文件继续编译。 这会导致 Windows git 状态污染,后续 pull 被 reject。
修完 Revit 相关 bug 并验证通过后,必须判断是否值得记录到本集合的 FAQ 中。
| 根因类型 | 写入位置 | patch 方法 |
|---|---|---|
| Nice3point SDK/Toolkit 专属 | revit-coding-patterns → references/nice3point-patterns.md | skill_manage(action='patch') |
| Scotec.Revit 专属 | revit-coding-patterns → references/scotec-patterns.md | skill_manage(action='patch') |
| 通用 Revit API / WPF 踩坑 | revit-coding-patterns → SKILL.md | skill_manage(action='patch') |
| 编译/部署/同步问题 | revit-build-deploy → SKILL.md | skill_manage(action='patch') |
| 测试框架问题 | revit-tunit-testing → SKILL.md | skill_manage(action='patch') |
与现有条目保持一致:## 简短标题 + 症状描述 → 原因分析 → 修复代码块。
./build.sh --build-only
./build.sh 部署插件详见 revit-tunit-testing skill。测试项目位置:tests/MyPlugin.Tests.csproj
TUnit 纯单元测试要点:不依赖 Revit 进程,通过
RevitApiTestContextmockUIDocument/Document,用[Test]标记测试方法。适合验证 ViewModel 逻辑、数据转换、参数校验等非 UI 逻辑。
| Gate | SuperRoky | FmRoky |
|---|---|---|
| 编译通过 | ./build.sh --build-only | ./build-fmroky.sh --build-only |
| Revit 加载 | Ribbon tab/按钮可见 | scotec tab 功能入口可见 |
| 功能 Smoke | 主流程至少 1 条用例跑通 | 主流程至少 1 条用例跑通 |
| 日志健康 | 无 error / fatal | 无 error / fatal |
| 回归检查 | 受影响旧功能可用 | 受影响旧功能可用 |
任何 gate 不通过:不进入发布阶段。
仅用于 P0 阻断场景(生产环境崩溃、数据损坏风险、客户现场阻断)。
1. 口头/文字向用户声明:本次走 break-glass,说明跳过了哪些步骤
2. 记录 break-glass 日志(写入下方格式,追加到本节末尾)
3. 执行紧急修复(允许直接 Claude Code 编码,跳过完整 spec)
4. 立即 build + 验证
5. 限时补审:修复后 2 小时内补齐完整 spec + 审查记录
| 日期 | 触发人 | 原因 | 跳过步骤 | 补审状态 |
|------|--------|------|----------|----------|
| YYYY-MM-DD | 用户/Agent | 一句话原因 | 如"跳过完整spec" | ✅已补审 / ⏳待补审 |
⚠️ 强审计:所有 break-glass 记录永久保留,不可删除。未补审的条目需在下一工作日内完成。
Bug 修复和新功能走同一条路:Wiki 先行 → Claude Code 编码 + 审查 → build.sh 部署。
${REVIT_CORPUS_PATH}/raw/revit-2026/ 或 ${REVIT_API_WIKI_PATH}./build.sh 验证阶段排序细则已经收口到 revit-coding-patterns。这里不再重复代码示例,只保留一句:数字阶段名按数值排序;非数字阶段名保留 FilteredElementCollector 顺序;禁止把 Id.Value 当业务顺序。
| 旧 API | 新 API |
|---|---|
WALL_HEIGHT_BASE_PARAM | WALL_BASE_HEIGHT_PARAM |
OMNICLASS | CLASSIFICATION |
UNIFORMAT | ASSEMBLY |
REBAR_HOOK_ROTATION_AT_START | REBAR_TERMINATION_ROTATION_AT_START |
ViewportPositioning | ViewPosition |
| CefSharp | 已移除 |
→ 详见 revit-build-deploy skill 的「发布流程」章节。
revit-build-deploy — 编译部署全流程(build.sh、build-fmroky.sh、.addin 格式、常见编译问题)revit-coding-patterns — 代码模式与踩坑 FAQ(DLL 加载、命名空间冲突、WPF 跨线程、DockablePane、预览图等)revit-tunit-testing — TUnit 单元测试规范references/features.md — SuperRoky / FmRoky 功能跟踪(状态、owner、依赖)references/revit-workflow-topology-v5-light.html — 图A:系统拓扑图(角色/基础设施/push-pull,当前推荐版本)references/revit-workflow-sop.html — 图B:标准化流程图(步骤/门禁/回滚)→ 详见 revit-build-deploy 末尾「插件功能现状」章节,或 references/features.md 跟踪表(状态/owner/依赖)。