关于 oma-backend
oma-backend 是用于后端 API 与服务端开发的技能,面向接口、认证、数据库和业务逻辑等工作。它根据项目现有技术栈组织路由、服务和数据访问,并覆盖验证、测试及迁移检查。
主要功能
- 01实现 REST 与 GraphQL 接口
- 02处理认证和授权
- 03开发服务端业务逻辑
- 04设计数据库变更与迁移
- 05运行测试、类型和迁移检查
适用场景
- 01新增 API 端点或后台任务
- 02实现认证流程或数据库集成
- 03修改数据模型并验证迁移
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gracefullight/ stock-checker --skill oma-backend安装后在 Claude Code 中输入/oma-backend确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/checklist.mderror-playbook.mdexamples.mdexecution-protocol.mdorm-reference.mdstack/api-template.pyapi-template.tssnippets.mdstack.yamltech-stack.md详细介绍
后端 Agent - API 与服务端专家
调度
目标
使用项目现有的后端技术栈和清晰的架构边界,实现或审查后端 API、身份验证、数据库集成、服务端业务逻辑和迁移。
意图特征
- 用户请求处理 API、端点、REST、GraphQL、身份验证、服务端、迁移、仓库、服务、路由器或后台作业相关工作。
- 用户需要后端代码来协调验证、业务逻辑、持久化、事务和后端服务。
适用场景
- 构建 REST API 或 GraphQL 端点
- 数据库设计和迁移
- 身份验证与授权
- 服务端业务逻辑
- 后台作业和队列
不适用场景
- 前端 UI -> 使用 Frontend Agent
- 移动端专属代码 -> 使用 Mobile Agent
预期输入
- 目标功能、端点、迁移、身份验证流程或服务端行为
- 现有后端技术栈文件,例如清单、路由、服务、模型和数据库配置
- API 契约、架构、验证规则和持久化要求
- 必需的验证命令或项目约定
预期输出
- 路由器、服务、仓库、模型、迁移或测试文件中的后端代码更改
- 已验证的输入、安全的查询、事务边界和错误处理
- 执行检查清单的验证结果
依赖项
-
项目技术栈清单和现有后端约定
-
resources/execution-protocol.md、resources/checklist.md和resources/orm-reference.md -
可选的
stack/stack.yaml、stack/tech-stack.md、代码片段和 API 模板 -
通过环境变量或密钥管理器配置的数据库、队列、缓存、邮件、身份验证或外部 API 资源
控制流特性
- 根据检测到的技术栈、ORM/查询模式、身份验证要求、迁移影响和事务范围进行分支处理
- 读取和写入代码库文件
- 可能会修改本地数据库迁移或生成的代码
- 不得硬编码密钥,也不得在并发工作之间共享不安全的 ORM 生命周期对象
结构流程
入口
- 首先根据项目文件检测后端技术栈。
- 确定受影响的路由器、服务、仓库、模型、迁移和测试边界。
- 仅在需要时加载特定技术栈的参考资料。
阶段
- 准备:确定技术栈、架构边界和验收标准。
- 获取:读取现有路由、服务、仓库、模型、架构和配置。
- 执行:实现后端更改,包括验证、业务逻辑、持久化和测试。
- 验证:运行相关的 lint、类型、测试、迁移和检查清单命令。
- 完成:报告行为变更、验证结果和未解决的风险。
转换
- 如果存在技术栈文件,应优先遵循其中的说明,再参考通用指南。
- 如果涉及 ORM 性能、关系加载、事务或 N+1 风险,应使用
resources/orm-reference.md。 - 如果数据库架构影响是主要工作,而 API 工作是次要工作,应与
oma-db协作。 - 如果身份验证服务端配置涉及数据库适配器或服务端库,应将其纳入后端范围。
失败与恢复
- 如果无法确定技术栈,请询问用户或建议运行
/stack-set。 - 如果验证失败,应在交接前修复根本原因。
- 如果缺少所需密钥或服务,应记录阻碍事项,并确保代码可配置。
退出
- 成功:后端更改已实现、通过测试,并符合本地架构。
- 部分成功:明确说明阻碍因素、缺失依赖项或验证缺口。
逻辑操作
操作
| 操作 | SSL 原语 | 依据 |
|---|---|---|
| 检测技术栈和约定 | READ | 清单文件、技术栈文件、现有代码 |
| 选择实现边界 | SELECT | 路由器/服务/仓储模式 |
| 验证输入和模式 | VALIDATE | 技术栈验证库 |
| 实现业务逻辑 | WRITE | 服务层代码 |
| 实现持久化 | WRITE | 仓储/模型/迁移代码 |
| 调用外部/后端服务 | CALL_TOOL | 数据库、队列、缓存、身份验证或 API 客户端 |
| 运行验证 | CALL_TOOL | 测试、类型检查、代码检查、迁移 |
| 报告结果 | NOTIFY | 最终摘要 |
工具和辅助工具
- 项目语言/框架工具链
- ORM 或数据库客户端
- 测试、代码检查、类型检查和迁移命令
- 存在时使用特定技术栈的模板和代码片段
标准工作流路径
使用已配置的代码智能提供程序定位文件并检查符号
或内容。对于 Serena,使用 find_file、search_for_pattern、
get_symbols_overview 和 find_symbol。原生搜索仅限于
提供程序排除项以及项目搜索策略允许的非代码路径。
然后运行项目中发现的验证命令,通常包括代码检查/类型检查/测试;涉及架构变更时还包括迁移。若存在 stack/stack.yaml 中的 verify: 命令,优先使用。
资源范围
| 范围 | 资源目标 |
|---|---|
CODEBASE | 后端源代码、测试、模式、迁移 |
LOCAL_FS | 技术栈参考资料和生成的构件 |
PROCESS | 测试、代码检查、类型检查、迁移命令 |
CREDENTIALS | 由环境管理的数据库 URL、API 密钥、密钥 |
NETWORK | 必要时使用的外部 API 或后端服务 |
前置条件
- 能够确定目标行为和受影响的后端边界。
- 可以推断出项目技术栈和验证命令,或已提供这些信息。
- 所需凭据不得放在源代码中。
影响和副作用
- 修改后端源文件、测试,并可能修改迁移。
- 可能改变数据库架构、API 行为、身份验证行为或服务契约。
- 可能需要生成客户端或迁移构件。
护栏
仅当目标项目没有既定选择时,才采用框架、库、架构和数据模型的默认设置。限定范围的编辑不代表可以迁移技术栈或修改无关基础设施。
- DRY(不要重复自己):业务逻辑放在
Service中,数据访问逻辑放在Repository中 - SOLID:
- 单一职责:类和函数应各自承担一项职责
- 依赖反转:使用框架的 DI 机制
- KISS:保持简单明了
架构模式
Router (HTTP) → Service (Business Logic) → Repository (Data Access) → Models
仓储层
- 封装数据库 CRUD 和查询逻辑
- 不包含业务逻辑,返回 ORM 实体
服务层
- 业务逻辑、仓储组合、外部 API 调用
- 仅在此处做业务决策
路由器层
- 接收 HTTP 请求、验证输入、调用服务、返回响应
- 不包含业务逻辑,通过 DI 注入服务
核心规则
- 整洁架构:路由器 → 服务 → 存储库 → 模型
- 路由处理器中不得包含业务逻辑
- 所有输入均须使用技术栈的验证库进行验证
- 只能使用参数化查询(绝不使用字符串插值)
- 身份验证使用 JWT + Argon2id(为兼容旧系统,可接受 bcrypt);对身份验证端点进行速率限制
- 在支持的情况下使用异步;所有签名都添加类型注解
- 通过集中式错误模块使用自定义异常(而非原始 HTTP 异常)
- 明确 ORM 加载策略:查询形状很重要时,不要依赖默认的关系加载
- 明确事务边界:将一个业务操作归入一个请求/服务范围的工作单元
- 安全管理 ORM 生命周期:除非 ORM 明确支持,否则不要在并发工作间共享可变的 ORM 会话/实体管理器/客户端对象
- 验证必需配置:数据库 URL、API 密钥、机密和功能标志均从环境变量或机密管理器中读取。在默认模式和生产模式下,缺少凭据时必须明确报错。确定性固件须通过明确选择的测试/演示模式启用;标明模拟结果,绝不将模拟的支付、身份验证、邮件或其他效果视为真实操作已完成。
- 无状态服务:请求之间不得保留内存中的会话或用户状态;共享状态须使用外部存储(数据库、Redis、缓存)
- 将后端服务视为资源:数据库、队列、缓存、邮件服务均为可替换的附加资源,通过配置连接;存储库层不得假定使用特定实例
技术栈检测
- 优先查看项目文件:阅读现有代码、软件包清单(pyproject.toml、package.json、Cargo.toml、go.mod、pom.xml 等),以确定技术栈
- 其次查看 stack/:如果存在
stack/,将其用作编码规范和代码片段模板的补充参考 - 两者都不存在:询问用户或建议运行
/stack-set
技术栈专属参考
- 技术栈清单(SSOT):
stack/stack.yaml:结构化声明(language、framework、orm)和供oma verify agent backend使用的verify:契约。架构:variants/stack.schema.json。 - 技术栈说明:
stack/tech-stack.md:仅供人工阅读的参考;如有冲突,以stack.yaml为准。 - 代码片段(可直接复制粘贴):
stack/snippets.md - API 模板:
stack/api-template.*
参考资料
-
本地代码工具:
../_shared/core/code-intelligence.md(代码搜索/导航) -
执行步骤(针对所选任务遵循):
resources/execution-protocol.md -
检查清单(交接前运行):
resources/checklist.md -
ORM 参考:
resources/orm-reference.md -
错误恢复:
resources/error-playbook.md -
上下文加载:
../_shared/core/context-loading.md -
澄清:
../_shared/core/clarification-protocol.md -
上下文预算:
../_shared/core/context-budget.md -
经验总结:
../_shared/core/lessons-learned.md(适用于类似的先前失败或用户要求的回顾) -
可观测性移交:
../oma-observability/SKILL.md§Integrations — 传播器/行李数据、跨度约定、日志关联、PII 脱敏