定义完整的结构化开发流程,包括预研、计划、开发、测试、复查、报告等阶段。所有开发工作必须严格按照此流程执行。
此 skill 定义了严格的软件开发流程,所有开发任务必须按照此流程执行,确保代码质量和项目稳定性。
完整的开发流程包含以下阶段:
目标: 在动手开发前,充分理解问题并设计解决方案。
执行步骤:
方案设计
影响评估
生成预研文档
docs/FEATURE_NAME_预研报告.md输出: 预研方案文档
目标: 获得用户对预研方案的批准。
执行步骤:
重要: ⚠️ 在用户批准预研方案之前,不得进行任何开发工作!
目标: 将方案转化为可执行的开发计划。
执行步骤:
任务分解
制定步骤
生成开发计划
docs/FEATURE_NAME_开发计划.md输出: 开发计划文档
目标: 按照开发计划逐步实现功能。
执行步骤:
严格按计划执行
代码质量
开发日志
输出: 完成的代码 + 开发日志
目标: 确保代码质量,及早发现问题。
执行步骤:
单元测试
go test ./path/to/package集成测试
go test ./test/integration/...系统测试
回归测试
go test ./...编译验证 ⚠️ 新增
# Go 项目整体编译
go build ./...
# 或项目特定的编译命令
# 例如:go build -o nemesisbot.exe ./nemesisbot
验收标准:
输出: 测试报告
目标: 归档开发过程,方便后续查阅。
执行步骤:
整理代码变更
整理开发过程
更新文档
保存整理文档
docs/FEATURE_NAME_开发整理.md输出: 开发整理文档
目标: 发现残留问题和引入的新问题。
执行步骤:
残留问题检测
新问题检测
生成复查报告
输出: 复查报告(包含问题清单)
目标: 修复发现的问题。
执行步骤:
问题修复
回归测试
重要: 修复后必须重新测试!
输出: 修复的代码 + 测试结果
目标: 持续改进,直到没有问题。
执行步骤:
重新复查
判断
重要: 此循环持续直到没有问题为止!
目标: 向用户汇报完整开发过程。
执行步骤:
汇总所有信息
生成最终报告
docs/FEATURE_NAME_最终报告.md向用户汇报
输出: 最终报告 + 汇报给用户
docs/FEATURE_NAME_预研报告.mddocs/FEATURE_NAME_开发计划.mddocs/FEATURE_NAME_开发整理.mddocs/FEATURE_NAME_最终报告.md每个文档应包含:
头部信息
章节结构
状态标记
所有测试文件必须放在 test/ 目录下,按照模块层级组织:
test/
├── unit/ # 单元测试
│ ├── cluster/ # cluster 模块的单元测试
│ │ ├── cluster_test.go
│ │ ├── deadlock_fix_test.go
│ │ ├── p1_fixes_test.go
│ │ ├── handlers/ # handlers 子包的测试
│ │ │ ├── default_test.go
│ │ │ ├── custom_test.go
│ │ │ └── llm_test.go
│ │ └── rpc/ # rpc 子包的测试
│ │ └── llm_forward_handler_test.go
│ ├── channels/ # channels 模块的单元测试
│ └── config/ # config 模块的单元测试
└── integration/ # 集成测试
├── rpc/
├── channels/
└── web/
| 测试类型 | 文件命名 | 位置 | 示例 |
|---|---|---|---|
| 单元测试 | {module}_test.go | test/unit/{module}/ | cluster_test.go |
| 功能测试 | {feature}_test.go | test/unit/{module}/ | deadlock_fix_test.go |
| 集成测试 | {feature}_test.go | test/integration/{module}/ | rpc_test.go |
按模块层级
module/cluster/handlers/ 的测试在 test/unit/cluster/handlers/禁止混合放置
module/ 目录下放置测试文件test/ 目录下测试文件包名
{module}_test 包名package cluster_testimport "github.com/276793422/NemesisBot/module/cluster"Package 声明
// ✅ 正确:使用 _test 后缀
package cluster_test
import (
"github.com/276793422/NemesisBot/module/cluster"
)
访问私有成员
测试文件示例
package cluster_test
import (
"testing"
"github.com/276793422/NemesisBot/module/cluster"
)
func TestClusterStart(t *testing.T) {
c, err := cluster.NewCluster(t.TempDir())
if err != nil {
t.Fatalf("Failed to create cluster: %v", err)
}
if err := c.Start(); err != nil {
t.Fatalf("Failed to start cluster: %v", err)
}
c.Stop()
}
预研优先
计划驱动
测试为王
质量第一
文档完整
编译验证 ⚠️ 新增
编译验证步骤:
# Go 项目
go build ./...
# 或项目特定的编译命令
重要:只有编译成功,才能进入下一阶段!
❌ 禁止跳过预研直接开发 ❌ 禁止预研方案未批准就开始开发 ❌ 禁止没有开发计划就开始编码 ❌ 禁止跳过测试或测试不通过就进入下一阶段 ❌ 禁止发现问题不修复就进入下一阶段 ❌ 禁止没有文档就认为任务完成 ❌ 禁止编译失败就认为开发完成** ⚠️ 新增 ❌ 禁止删除方法后不检查调用方** ⚠️ 新增 ❌ 禁止修改接口后不更新依赖代码** ⚠️ 新增
用户: 我需要你添加一个新功能,实现 XXX
助手: 收到。我将开始结构化开发流程。
📋 阶段 1: 预研阶段
我将进行问题分析和方案设计...
(进行预研工作)
✅ 预研完成
我已经完成了预研,生成了预研报告:
docs/XXX_FEATURE_预研报告.md
📊 预研方案摘要:
- 问题分析:...
- 推荐方案:...
- 风险评估:...
请评估此方案。批准后我将进入开发阶段。
用户: 方案批准,可以开始开发。
助手: 收到批准!
📋 阶段 3: 计划阶段
我将制定详细开发计划...
(制定计划)
✅ 开发计划完成
开发计划已保存到:
docs/XXX_FEATURE_开发计划.md
📋 阶段 4: 开发阶段
开始按计划执行开发...
C:\AI\NemesisBot\NemesisBotC:\AI\NemesisBot\NemesisBot\docsC:\AI\NemesisBot\NemesisBot\test在向用户汇报最终报告前,确认以下事项:
只有所有检查项都完成,开发任务才算真正完成!