| name | pr-review-core |
| description | Use when reviewing SwanLab Go core PRs under core/**, running gh pr diff or gh pr review for Go changes, checking cross-platform build tags/goroutine lifecycle/parent process monitoring/console logging/gRPC-protobuf contracts/golangci-lint/go test -race/Go module changes, or gating Go core merge readiness. Reviews locally first and only posts to GitHub after the user confirms. |
PR 审核 (SwanLab Go core)
概述
按照 SwanLab Go core 的仓库约定审核 Pull Request,并用 gh CLI 提交结构化结论。重点确认变更不引入跨平台兼容、进程生命周期、goroutine 安全、gRPC/protobuf 契约、诊断日志和工具链回归。
技术栈:Go 1.26.5(core/.go-version 与 core/go.mod)、golangci-lint v2、gRPC、protobuf、golang.org/x/sys。
适用:core/** Go core PR 合并前审核、gh pr diff / gh pr review、检查 Go core 进程管理/控制台日志/proto/模块/工具链变更。
不适用:SwanLab Python SDK PR(使用 pr-review-lab)、SwanLab-Cloud 前端 PR、无 PR 上下文的单文件编辑、只要求解释代码。
CRITICAL — 审核 PR 前检查文件列表。当包含 swanlab/**、protos/**、scripts/generate_protos.py、pyproject.toml 或 Makefile 时,MUST 先用 Read 工具读取 ../pr-review-lab/SKILL.md 及其 references/domain-contracts.md,按其中的 Python SDK 领域契约审核对应文件。审核结论需同时覆盖两侧范围。
审核流程
审核分为两个阶段,默认只执行阶段一。未获得用户明确确认前,不得向 GitHub 提交任何 review、comment 或审批状态。两阶段结构、独立审核原则、严重性前缀和提交审核格式(inline comment 定位、Review JSON、顶层正文模板)均同 pr-review-lab;以下仅列出 Go core 专属内容。
阶段一:审查(默认)
- 先确认 PR 意图、base 分支、head 分支、文件列表和 Actions 状态,再阅读实现。
gh pr view <PR>
gh pr view <PR> --json files,additions,deletions,baseRefName,headRefName
gh pr diff <PR>
gh pr checks <PR>
- 把 head 分支拉到本地隔离工作区再审核,不要污染用户当前工作区:
git fetch origin pull/<PR>/head:pr-<PR>
git worktree add ../swanlab-pr-<PR> pr-<PR>
- 根据文件列表判断适用领域,按下方"范围参考"读取
references/domain-contracts.md 中对应章节。所有 Go 代码都要检查"Go core 横切质量与代码规范";涉及凭据、网络、日志或文件路径时额外检查安全(同 pr-review-lab 的"安全与隐私")。
- 对关键发现检查 head 分支中的完整文件和调用关系,不只依据 diff 片段。
- 对照
core/ 现有实现、测试和平台实现定级。个人风格偏好不能作为阻塞问题。
- 在对话中输出完整审查意见草稿:结论、逐条 finding(含文件与行号)、验证结果。到此停止,明确告知用户尚未发布,并询问是否发布。
阶段二:发布(需用户显式确认)
仅当用户在阶段一之后明确要求发布时才执行。发布前把最终结论和 event 类型(APPROVE / REQUEST_CHANGES / COMMENT)复述给用户确认。inline comment 提交方式、Review JSON 结构和顶层正文模板见 pr-review-lab "提交审核" 一节——提交时把审核范围复选框替换为下方的 Go core 版本。
发布后回报 review 链接,并清理临时 worktree 和本地分支:
git worktree remove ../swanlab-pr-<PR>
git branch -D pr-<PR>
范围参考
详细规则位于 references/domain-contracts.md。先读取 PR 文件列表,再按下表加载适用章节。路径一律写完整前缀;同一文件命中多行时,读取所有命中章节。
| 变更路径或内容 | 读取章节 |
|---|
core/internal/pkg/process/** | 平台与进程生命周期 |
core/internal/pkg/console/**(含 log/) | 控制台与诊断日志 |
core/proto/**、protos/**、scripts/generate_protos.py | Protobuf 与生成代码 |
core/go.mod、core/go.sum、core/.golangci.yml、core/.go-version、core/Makefile、Makefile(core-* target) | Go 模块、工具链与构建 |
所有 core/** Go 代码、配置和依赖 | Go core 横切质量与代码规范 |
| 凭据、网络、日志、文件路径、用户数据 | 安全与隐私(同 pr-review-lab) |
上表未命中的 core/** 路径仍需按"Go core 横切质量与代码规范"审核,并在 review 中说明该文件按通用标准处理。
验证要求
在 core/ 目录下运行(与 CI test-core-pr.yml 行为一致):
cd core && go test -race $(go list ./... | grep -v /proto/)
cd core && golangci-lint run
cd core && go build ./...
涉及 .proto 时,确认源定义与 Go 生成代码同步;具备完整工具链时在干净或临时工作区运行:
make proto
CI 覆盖 Ubuntu、Windows、macOS,跨平台构建标签和 go test -race。无法在本地覆盖的平台以 PR Actions 为准;Action 未运行或失败时必须如实记录,不能视为通过。
严重性
同 pr-review-lab 严重性:阻塞 / 必须修改 / 建议 / 细节 / 说明。每条 finding 必须使用显式前缀,并说明问题、影响和建议。
顶层正文结构
当 pr-review-core 为唯一适用 skill 时使用以下审核范围;跨语言 PR 与 pr-review-lab 的正文项合并。
## 审核结论: 通过 / 要求修改 / 评论
## 本次 PR 解决的问题
<一句话概述>
## 审核范围
- [x] 平台与进程生命周期: <详情>
- [x] 控制台与诊断日志: <详情>
- [x] Protobuf 与生成代码: <详情>
- [x] Go 模块、工具链与构建: <详情>
- [x] Go core 横切质量与代码规范: <详情>
- [x] 安全、性能与跨平台兼容: <详情>
- [x] 测试与验证: <详情>
## 未挂行发现
<没有则写:无>
## 验证
- [ ] go test -race
- [ ] golangci-lint run
- [ ] go build ./...
- [ ] PR Actions 已通过,或已记录未运行/失败状态
完成验证
阶段一(审查):
阶段二(发布,需用户确认):
参考