用途
BubbleTea Code Review 用于审查基于 BubbleTea 框架编写的终端 UI(TUI)代码。它关注代码是否符合 Elm 架构,以及 model/update/view 模式与 Lipgloss 样式是否使用得当。当需要审查使用 BubbleTea 的终端界面代码时,可以使用该技能。
主要能力
该技能围绕若干审查维度组织检查项,并提供参考文档:
- Elm 架构与 tea.Cmd 作为数据:参考 references/elm-architecture.md
- 模型状态与消息处理:参考 references/model-update.md
- 视图渲染与 Lipgloss 样式:参考 references/view-styling.md
- 组件组合与 Huh 表单:参考 references/composition.md
- Bubbles 组件(list、table 等):参考 references/bubbles-components.md
审查清单覆盖以下方面:
架构:Update() 中无阻塞 I/O(文件、网络、sleep);返回 tea.Cmd 的辅助函数不应被标记为阻塞;所有异步操作使用命令。
模型与 Update:模型不可变(Update 返回新模型而非修改原模型);Init 返回正确的初始命令(或 nil);Update 处理所有预期消息类型;处理 WindowSizeMsg 以支持响应式布局;多个命令使用 tea.Batch;正确使用 tea.Quit 退出。
视图与样式:View 是纯函数(无副作用);Lipgloss 样式只定义一次,不在 View 中定义;按键绑定使用 key.Matches 配合 help.KeyMap。
组件:子组件更新正确传播;Bubbles 组件初始化时设置尺寸;Huh 表单通过 Update 循环嵌入(而非 Run())。
使用方式
该技能采用硬性门控(hard gates)顺序推进,只有每个通过条件客观成立时才继续,以减少对 tea.Cmd 和缺乏依据的阻塞性判断的误报:
- G1 — 防误报:在记录关于 tea.Cmd 返回值、Update 上的值接收者或嵌套子 Update 的发现之前,先浏览 NOT Issues 部分或阅读 references/elm-architecture.md。
- G2 — 阻塞/可疑 I/O 的证据:每个 Critical/Major 发现都要指明文件路径 + 行号(或简短引用片段),展示阻塞调用、位置错误的 huh.Form.Run 或其他被断言的反模式,而非假设。
- G3 — 验证:在发布审查输出之前,对每个拟议发现应用 review-verification-protocol。
何时加载参考文档:
- 首次审查 BubbleTea → elm-architecture.md(防止误报)
- 审查 Update 函数逻辑 → model-update.md
- 审查 View 函数、样式 → view-styling.md
- 审查组件层级 → composition.md
- 使用 Bubbles 组件 → bubbles-components.md
适用场景
适用于审查使用 BubbleTea 编写的终端 UI 代码,尤其是需要判断 Elm 架构、model/update/view 模式、Lipgloss 样式、组件组合与 Bubbles 组件使用是否规范时。
限制与注意事项
该技能特别强调避免误报。以下模式是正确的,不应被标记为问题:
- return m, m.loadData():tea.Cmd 立即返回,运行时异步执行
- Update() 上的值接收者:BubbleTea 标准模式,模型按值返回
- 嵌套 m.child, cmd = m.child.Update(msg):正常的组件组合
- 返回 tea.Cmd 的辅助函数:创建命令描述符,Update 中无 I/O
- tea.Batch(cmd1, cmd2):命令由运行时并发执行
以下才是真正的问题,应当标记:
- Update 中的 os.ReadFile():阻塞 UI 线程
- Update 中的 http.Get():网络 I/O 阻塞
- Update 中的 time.Sleep():冻结 UI
- Update 中的 <-channel(阻塞):可能无限期阻塞
- Update 中的 huh.Form.Run():阻塞调用
审查问题包括:Update() 是否无阻塞 I/O(而非“cmd 辅助函数是否阻塞”);Update 中模型是否不可变;Lipgloss 样式是否只定义一次而非在 View 中;是否处理 WindowSizeMsg 以支持调整大小;按键绑定是否用 help.KeyMap 记录;Bubbles 组件尺寸是否正确。
关于该技能的收费、价格、平台等具体信息,资料中暂未提供。