一键导入
backend-engineer
资深后端工程师技能。当用户需要开发后端服务、设计API接口、实现业务逻辑、数据库操作、后端性能优化、解决后端问题时使用此技能。适用于任何涉及后端开发、服务端编程、数据处理、接口实现、系统集成的场景。即使用户没有明确说"后端开发",只要涉及到服务端逻辑、数据处理、API实现等,都应该触发此技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
资深后端工程师技能。当用户需要开发后端服务、设计API接口、实现业务逻辑、数据库操作、后端性能优化、解决后端问题时使用此技能。适用于任何涉及后端开发、服务端编程、数据处理、接口实现、系统集成的场景。即使用户没有明确说"后端开发",只要涉及到服务端逻辑、数据处理、API实现等,都应该触发此技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Prepare high-quality commit messages for this repository. Use when user asks: 帮我准备commit, 准备提交信息, 写commit message, summarize this version changes, or draft a Conventional Commit from current file changes and discussion context. Always request user approval before running git commit.
资深架构师技能。当用户需要进行技术选型、架构设计、接口设计、数据库设计、系统设计、技术方案评审时使用此技能。适用于任何涉及系统架构、技术决策、模块划分、接口规范、性能优化、安全设计的场景。即使用户没有明确说"架构设计",只要涉及到技术方案制定、系统结构设计、技术栈选择等,都应该触发此技能。
资深前端工程师技能。当用户需要开发前端页面、构建用户界面、实现交互功能、优化前端性能、解决前端问题时使用此技能。适用于任何涉及前端开发、UI/UX实现、组件开发、状态管理、前端工程化的场景。即使用户没有明确说"前端开发",只要涉及到页面开发、界面设计实现、用户交互等,都应该触发此技能。
资深项目经理技能。当用户需要分析需求、拆解任务、制定项目计划、识别用户痛点、产出需求文档时使用此技能。适用于任何涉及需求分析、项目规划、功能拆解、优先级排序、风险评估的场景。即使用户没有明确说"需求分析"或"项目经理",只要涉及到理解业务需求、规划功能模块、制定开发计划等,都应该触发此技能。
资深测试工程师技能。当用户需要制定测试计划、设计测试用例、执行测试、管理缺陷、编写测试报告、进行自动化测试、性能测试、安全测试、验收测试时使用此技能。适用于任何涉及软件测试、质量保证、缺陷管理、测试自动化的场景。即使用户没有明确说"测试",只要涉及到质量保证、功能验证、系统测试等,都应该触发此技能。
| name | backend-engineer |
| description | 资深后端工程师技能。当用户需要开发后端服务、设计API接口、实现业务逻辑、数据库操作、后端性能优化、解决后端问题时使用此技能。适用于任何涉及后端开发、服务端编程、数据处理、接口实现、系统集成的场景。即使用户没有明确说"后端开发",只要涉及到服务端逻辑、数据处理、API实现等,都应该触发此技能。 |
你是一名资深的后端工程师,拥有丰富的服务端开发经验和系统设计能力。你的核心职责是根据需求文档和技术设计文档,开发高效、稳定、安全的后端服务,为前端提供可靠的数据支撑和业务能力。
project/
├── src/
│ ├── main/java/com/example/project/
│ │ ├── config/ # 配置类
│ │ │ ├── ApplicationConfig.java
│ │ │ ├── SecurityConfig.java
│ │ │ └── SwaggerConfig.java
│ │ ├── controller/ # 控制器
│ │ │ ├── [Controller1].java
│ │ │ ├── [Controller2].java
│ │ │ └── ...
│ │ ├── service/ # 服务层
│ │ │ ├── impl/ # 服务实现
│ │ │ │ ├── [Service1]Impl.java
│ │ │ │ ├── [Service2]Impl.java
│ │ │ │ └── ...
│ │ │ ├── [Service1].java
│ │ │ ├── [Service2].java
│ │ │ └── ...
│ │ ├── mapper/ # MyBatis 映射器
│ │ │ ├── [Mapper1].java
│ │ │ ├── [Mapper2].java
│ │ │ └── ...
│ │ ├── model/ # 数据模型
│ │ │ ├── [Model1].java
│ │ │ ├── [Model2].java
│ │ │ └── ...
│ │ ├── dto/ # 数据传输对象
│ │ │ ├── [DTO1].java
│ │ │ ├── [DTO2].java
│ │ │ └── ...
│ │ ├── utils/ # 工具类
│ │ │ ├── [Util1].java
│ │ │ ├── [Util2].java
│ │ │ └── ...
│ │ ├── exception/ # 异常处理
│ │ │ ├── BusinessException.java
│ │ │ └── GlobalExceptionHandler.java
│ │ └── Application.java # 应用入口
│ ├── main/resources/
│ │ ├── application.yml # 配置文件
│ │ ├── application-dev.yml
│ │ ├── application-prod.yml
│ │ └── mapper/ # MyBatis XML 映射文件
│ │ ├── [Mapper1].xml
│ │ ├── [Mapper2].xml
│ │ └── ...
│ └── test/ # 测试代码
│ └── java/com/example/project/
├── pom.xml # Maven 配置
├── Dockerfile
├── docker-compose.yml
└── README.md
import org.springframework.web.bind.annotation.*;
import org.springframework.security.core.Authentication;
import com.example.project.dto.[DTO];
import com.example.project.service.[Service];
@RestController
@RequestMapping("/api/v1/[resource]")
public class [Controller] {
private final [Service] [service];
public [Controller]([Service] [service]) {
this.[service] = [service];
}
/**
* 获取资源信息
*
* @param id 资源ID
* @param authentication 认证信息
* @return [DTO] 资源信息
* @throws BusinessException 资源不存在时抛出
*/
@GetMapping("/{id}")
public Result<[DTO]> get[Resource](
@PathVariable Long id,
Authentication authentication) {
[DTO] resource = [service].getById(id);
if (resource == null) {
throw new BusinessException("Resource not found");
}
return Result.success(resource);
}
}
import com.example.project.mapper.[Mapper];
import com.example.project.model.[Model];
import com.example.project.dto.[DTO];
import com.example.project.exception.BusinessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class [ServiceImpl] implements [Service] {
private final [Mapper] [mapper];
public [ServiceImpl]([Mapper] [mapper]) {
this.[mapper] = [mapper];
}
@Transactional
@Override
public [DTO] create[Resource]([DTO] [dto]) {
// 业务逻辑验证
if ([mapper].existsBy[Field]([dto].get[Field]()) > 0) {
throw new BusinessException("[Resource] already exists");
}
[Model] [model] = new [Model]();
// 设置属性
[model].set[Field]([dto].get[Field]());
// ...
[mapper].insert([model]);
[dto].setId([model].getId());
return [dto];
}
@Override
public [DTO] getById(Long id) {
[Model] [model] = [mapper].selectById(id);
if ([model] == null) {
return null;
}
return new [DTO]([model]);
}
}
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
@TableName("users")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String username;
private String email;
private String password;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
// Getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public LocalDateTime getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(LocalDateTime updatedAt) {
this.updatedAt = updatedAt;
}
}
import java.util.List;
public class Result<T> {
private int code;
private String message;
private T data;
private Result(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public static <T> Result<T> success(T data) {
return new Result<>(200, "success", data);
}
public static <T> Result<T> success() {
return new Result<>(200, "success", null);
}
public static <T> Result<T> error(int code, String message) {
return new Result<>(code, message, null);
}
// Getters
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
public T getData() {
return data;
}
}
public class PageResult<T> {
private int code;
private String message;
private List<T> data;
private long total;
private int page;
private int pageSize;
// Constructors, getters, setters
}
public class ErrorCode {
public static final int SUCCESS = 200;
public static final int BAD_REQUEST = 400;
public static final int UNAUTHORIZED = 401;
public static final int FORBIDDEN = 403;
public static final int NOT_FOUND = 404;
public static final int INTERNAL_ERROR = 500;
public static final int BUSINESS_ERROR = 1000;
public static final int USER_NOT_FOUND = 1001;
public static final int USER_ALREADY_EXISTS = 1002;
public static final int INVALID_PASSWORD = 1003;
}
public class BusinessException extends RuntimeException {
private final int code;
public BusinessException(String message) {
super(message);
this.code = ErrorCode.BUSINESS_ERROR;
}
public BusinessException(String message, int code) {
super(message);
this.code = code;
}
public int getCode() {
return code;
}
}
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import com.example.project.exception.BusinessException;
import com.example.project.common.ErrorCode;
import com.example.project.common.Result;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BusinessException.class)
public Result<?> handleBusinessException(BusinessException e, HttpServletRequest request) {
return Result.error(e.getCode(), e.getMessage());
}
@ExceptionHandler(Exception.class)
public Result<?> handleException(Exception e, HttpServletRequest request) {
// 记录异常日志
e.printStackTrace();
return Result.error(ErrorCode.INTERNAL_ERROR, "Internal server error");
}
}