1. AI辅助开发中的Skill体系设计
在当前的AI辅助开发实践中,Skill作为一种包含领域知识、最佳实践和代码模板的知识包,正在成为提升开发效率的重要工具。一个典型的Skill包含以下几个核心组成部分:
- 使用说明文档:详细描述Skill的适用场景、输入输出格式以及最佳实践
- 代码模板:提供可直接使用的代码框架和基础实现
- 示例项目:展示Skill在实际场景中的应用方式
- 辅助脚本:包含自动化工具和辅助功能
1.1 Skill的分层架构设计
合理的Skill体系应该采用分层架构设计,通常可以分为三个主要层次:
1.1.1 Rules层(规范与约束)
Rules层定义了技术栈选型、代码规范等基础约束条件。它的主要作用包括:
- 统一代码规范:确保AI生成的代码风格一致、符合项目约定
- 领域知识注入:传达特定框架、库或技术栈的使用方式
- 避免常见错误:明确禁止危险或不推荐的做法
- 项目特定约束:定义项目特有的架构决策和业务逻辑规则
对于后端开发,Rules层通常可以细分为:
- 技术栈规范
- API设计规范
- 数据库设计原则
- 代码架构规范
- 其他特定规则
1.1.2 Skills层(能力模块)
Skills层包含具体的功能模块实现,例如:
- 工具类Skill
- DAO CRUD Skill
- 消息队列Skill
- 基础Service Skill
- 领域服务库(用户、订单、支付等)
1.1.3 Workflow层(流程自动化)
Workflow层关注开发流程的自动化,包括:
- Git代码审查
- CI/CD配置
- 文档生成
- 其他开发流程相关功能
1.2 Skill的模块化设计原则
在设计Skill时,应该遵循以下模块化原则:
- 关注点分离:每个Skill应该专注于解决一个特定问题
- 可组合性:Skill之间应该能够灵活组合使用
- 可扩展性:Skill应该易于扩展和定制
- 文档完整性:每个Skill都应该有完整的说明文档
当功能较为复杂时,建议将Skill拆分为多个子功能文档,例如:
code复制/mnt/skills/dao-crud/
├── SKILL.md # 主文档
├── 功能1.md # 子功能1
├── 功能2.md # 子功能2
└── templates/ # 代码模板
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. DAO层CRUD Skill详解
2.1 Spring Boot JPA DAO Skill设计
一个典型的Spring Boot JPA DAO Skill包含以下核心功能:
- 根据自然语言生成数据库表结构DDL和索引建议
- 生成Entity、Repository、QueryParam和通用查询方法
- 为已有表增删字段并同步更新相关代码
2.1.1 架构分层设计
DAO Skill通常采用以下分层结构:
code复制domain/ # 实体类
├── BaseAuditEntity.java
└── [EntityName].java
repository/ # 数据访问层
└── [EntityName]Repository.java
param/ # 查询参数DTO
└── [EntityName]QueryParam.java
2.1.2 技术栈约定
- 数据库:MySQL
- ORM框架:Spring Data JPA
- 主键生成:雪花算法
- 审计字段:自动填充创建/修改时间和创建/修改人
- 代码简化:Lombok
- 查询方式:JPA Specification
2.1.3 强制规范
- 所有实体必须继承BaseAuditEntity
- 禁止使用数据库外键约束
- 禁止使用JPA关联映射
- 关联关系通过冗余ID字段表示
- 所有类、字段必须有完整的Javadoc注释
- DDL中表和列必须带COMMENT
2.2 数据库表结构生成
2.2.1 DDL生成示例
输入自然语言描述:
"创建一个商品表,包含商品名称、商品编码、商品类型、价格、库存数量、商品状态"
输出MySQL DDL:
sql复制CREATE TABLE `product` (
`id` BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)',
`name` VARCHAR(255) NOT NULL COMMENT '商品名称',
`code` VARCHAR(64) NOT NULL COMMENT '商品编码,全局唯一',
`type` VARCHAR(32) NOT NULL COMMENT '商品类型:NORMAL-普通商品,GIFT-赠品',
`price` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '商品价格(单位:元)',
`stock` INT NOT NULL DEFAULT 0 COMMENT '库存数量',
`status` VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '商品状态:ACTIVE-上架,INACTIVE-下架,DELETED-已删除',
`created_at` BIGINT NOT NULL COMMENT '创建时间(毫秒时间戳)',
`updated_at` BIGINT NOT NULL COMMENT '修改时间(毫秒时间戳)',
`created_by` BIGINT COMMENT '创建人ID',
`updated_by` BIGINT COMMENT '修改人ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表:存储商品基础信息及库存状态';
2.2.2 索引建议规则
索引建议遵循以下优先级:
- 唯一约束 → 唯一索引
- 高频精确查询 → 普通索引
- 高频组合查询 → 组合索引
- 范围查询 → 普通索引
- 模糊查询 → 全文索引
2.3 查询参数设计
2.3.1 字段命名规则
- 模糊查询字段(name、title):保持单数形式
- 集合查询字段(type、code、status、level):使用复数形式
- 时间范围字段:使用startXxx和endXxx格式
2.3.2 查询类型判断规则
| 字段关键词 | 查询类型 | 参数类型 | 示例 |
|---|---|---|---|
| type, code | IN查询 | List | List types |
| name, title | LIKE查询 | String | String name |
| *Time, *At | BETWEEN查询 | 两个参数 | Long startCreatedAt, Long endCreatedAt |
2.4 注意事项与最佳实践
-
时间戳处理:
- 统一使用Long类型存储毫秒时间戳
- BaseAuditEntity中的时间字段均为Long类型
-
金额字段处理:
- 使用BigDecimal类型
- 数据库中使用DECIMAL(10,2)存储
- 避免使用Double或Float
-
枚举值存储:
- 使用VARCHAR存储
- 不使用@Enumerated注解
- 在注释中明确枚举的所有可选值
-
分页默认值:
- 默认使用PageRequest.of(0, 20)
- 第一页索引为0,每页20条记录
3. 基础Service Skill设计
3.1 基础Service的特点
基础Service通常具有以下特征:
- 系统核心依赖的基础数据模型
- 变更频率低
- 被多个业务模块复用
- 功能相对稳定
以EHR系统为例,典型的EmployeeService和OrgService就属于基础Service。
3.2 EmployeeService设计示例
3.2.1 核心查询方法
-
查询员工花名册:
- 方法:queryEmployeeRoster(QueryParam param)
- 功能:按多维度查询员工详细信息
- 返回:员工基础信息+关联属性
-
查询员工变动时间轴:
- 方法:queryEmployeeChangesTimeline
- 功能:查询员工组织/岗位变动历史
- 返回:时间轴形式的变动记录
-
查询员工基础列表:
- 方法:listEmployees
- 功能:快速查询员工列表
- 返回:仅基础信息,不包含附加属性
3.2.2 方法选择指南
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 完整员工档案 | queryEmployeeRoster | 包含所有关联属性 |
| 晋升调岗记录 | queryEmployeeChangesTimeline | 时间轴展示 |
| 下拉选择器 | listEmployees | 轻量级,性能好 |
3.2.3 注意事项
- 数据权限:queryEmployeeRoster支持数据权限控制
- 性能考虑:大批量查询优先使用listEmployees
- 时间范围:查询时间轴时建议限制合理范围
- 状态过滤:明确指定员工状态,避免查询不需要的数据
4. Git Workflow Skill设计
4.1 Git Workflow核心功能
-
自动生成Commit Message:
- 基于git diff分析变更
- 生成符合Conventional Commits规范的提交信息
-
代码审查:
- 多维度审查代码质量
- 包括正确性、安全性、性能等
-
Pull Request管理:
- 创建、描述、管理GitHub PR
- 提供PR审查清单
4.2 安全约束与禁止操作
4.2.1 绝对禁止的操作
-
删除分支:
bash复制
git branch -d <branch> git push origin --delete <branch> -
强制推送:
bash复制
git push --force -
硬重置:
bash复制
git reset --hard -
修改历史记录:
bash复制git rebase -i git commit --amend # 如果已推送
4.2.2 安全原则
- 只读优先:优先使用只读命令
- 确认机制:危险操作需用户明确确认
- 数据保护:不执行可能导致代码丢失的命令
- 非破坏性:优先使用安全替代方案
- 用户主导:即使用户要求危险操作,也要先说明后果
4.3 Commit Message生成规范
4.3.1 Commit Type规范
| Type | 使用场景 | 示例 |
|---|---|---|
| feat | 新功能 | feat(user): add email verification |
| fix | Bug修复 | fix(auth): handle null token |
| docs | 文档变更 | docs(readme): update steps |
| refactor | 重构 | refactor(service): extract method |
4.3.2 生成步骤
- 读取git diff --staged
- 分析变更内容
- 生成commit message
- 向用户展示并确认
示例输出:
code复制feat(employee): add employee roster query API
Implement EmployeeService.queryEmployeeRoster() to support:
- Multi-dimension filtering
- Data permission control
- Complete employee details
Closes #123
4.4 代码审查要点
4.4.1 审查维度
-
正确性:
- 逻辑正确性
- 边界条件处理
- 错误处理完整性
-
安全性:
- SQL注入风险
- XSS漏洞
- 敏感信息处理
-
性能:
- 避免N+1查询
- 数据库查询优化
- 大数据量处理
-
可读性:
- 命名清晰
- 注释完整
- 代码结构清晰
4.4.2 审查反馈格式
使用优先级标记:
- Critical:必须修复的问题
- Important:重要但不阻塞的问题
- Suggestion:优化建议
4.5 PR管理规范
4.5.1 PR描述模板
code复制## Summary
- 简要描述PR的目的和内容
## Changes
- 变更点1
- 变更点2
## Test Plan
- [ ] 单元测试已通过
- [ ] 手动测试场景1
## Related Issues
Closes #123
## Breaking Changes
- 不兼容的变更说明
4.5.2 PR审查清单
- 阅读PR描述,理解变更目的
- 运行代码审查工作流
- 检查测试覆盖
- 提供审查意见
- 决定是否批准
5. Skill体系实践中的思考
5.1 Skill组合与复用
在实际项目中,Skill可以通过组合形成更高层级的复合Skill,例如:
- 在Dao Skill基础上构建control-service-dao全链路Skill
- 扩展消息队列相关Skill
- 组合多个基础Skill形成领域特定解决方案
5.2 现实困境与挑战
Skill体系构建面临的核心挑战不是技术实现,而是:
- 需求理解:是否真正理解问题本质
- 问题拆解:能否将复杂问题拆解为可执行任务
5.3 未来发展方向
未来的开发者可能需要具备以下能力:
- 定义问题的能力
- 拆解复杂度的能力
- 组织AI能力的能力
软件工程将越来越强调:
- 问题定义而非代码实现
- 架构设计而非细节编码
- 质量保障而非bug修复
5.4 实践经验总结
- 从简单开始:先构建基础Skill,再逐步扩展
- 注重文档:每个Skill都要有完整说明
- 安全第一:特别是涉及自动化操作的Skill
- 持续迭代:根据实际使用反馈不断优化
- 组合创新:通过Skill组合创造新价值
在实际使用中,我发现Skill体系的价值不仅在于提高效率,更重要的是:
- 沉淀团队知识
- 统一开发规范
- 降低新人学习成本
- 提高代码质量一致性
一个实用的建议是:从团队最常重复的工作开始构建Skill,这样能最快看到效果并获得团队支持。
