mcpField
L
laravel:specifying-constraints

laravel:specifying-constraints

github.com/jpcaparasAgent 工作流157113 次安装18 周前更新
代码仓库

关于 laravel:specifying-constraints

为 Laravel 编码 Agent 提供约束编写指南,涵盖性能、安全、测试、架构和依赖要求,帮助将项目需求转化为具体实现标准。

主要功能

  1. 01性能与数据库约束示例
  2. 02安全要求示例
  3. 03测试要求与模板
  4. 04架构模式约束
  5. 05依赖版本与兼容性要求

适用场景

  1. 01为搜索功能明确响应时间和并发目标
  2. 02规定 API 的验证、授权与数据保护
  3. 03为测试设定覆盖率和边界场景
  4. 04指定支付功能应遵循的分层模式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:specifying-constraints

安装后在 Claude Code 中输入/laravel:specifying-constraints确认已加载。

详细介绍

指定约束

约束可引导 AI 提供符合项目要求的解决方案。没有约束时,你得到的代码可能很通用,无法满足你的要求。

性能约束

模糊

“让它更快”

具体

“优化商品搜索:

  • 第 95 百分位的响应时间 < 200ms
  • 支持 1000 个并发用户
  • 使用 Redis 缓存结果 5 分钟
  • 在 name、category_id、published_at 上使用数据库索引
  • 对结果分页,每页最多 50 条
  • 使用预加载避免 N+1 查询”
数据库性能

“在性能约束下查询订单:

  • 使用 select() 仅加载所需列
  • 在一次查询中预加载 items、customer、shipping_address
  • 在 (user_id, created_at, status) 上添加复合索引
  • 使用 chunk() 批量处理超过 1000 条的记录
  • 将查询超时设为 5 秒”

安全约束

模糊

“让它更安全”

具体

“按照以下安全要求实现用户资料更新:

  • 使用 ProfilePolicy@update 进行授权
  • 在 ProfileUpdateRequest 中验证所有输入
  • 清理个人简介字段中的 HTML(移除脚本,允许基本格式)
  • 将每位用户的请求速率限制为每分钟 10 次
  • 使用 bcrypt 对密码进行哈希处理(成本因子为 12)
  • 记录所有资料变更以供审计
  • 使用 $fillable 防止批量赋值漏洞”
API 安全

“保护支付 API:

  • 要求使用 auth:sanctum 中间件
  • 验证 API 令牌是否具有 process-payments 权限
  • 仅使用 HTTPS(在中间件中强制执行)
  • 验证支付提供商的 Webhook 签名
  • 在数据库中加密存储敏感数据
  • 绝不记录信用卡号或令牌
  • 返回通用错误消息(不要泄露系统详情)”

测试约束

模糊

“添加测试”

具体

“测试订单处理功能:

  • 对完整订单流程(创建 → 处理 → 确认)进行功能测试
  • 对 OrderService 方法进行单元测试
  • 测试验证失败情况(支付无效、库存不足)
  • 测试边界情况(数量为零、价格为负)
  • 模拟外部支付网关
  • 使用工厂生成测试数据
  • 业务逻辑的代码覆盖率目标为 80%
  • 测试必须在 < 30 秒内运行完毕”
测试要求

“身份验证测试要求:

  • 测试使用有效凭据成功登录
  • 测试使用无效凭据登录失败
  • 测试速率限制(每分钟最多 5 次尝试)
  • 测试令牌在 24 小时后过期
  • 测试退出登录会使令牌失效
  • 使用 RefreshDatabase trait
  • 测试中不得调用外部 API(使用模拟对象)”

架构约束

遵循的模式

“按照我们的架构实现支付处理:

  • 使用仓储模式:PaymentRepository 用于数据访问
  • 使用服务层:PaymentService 用于业务逻辑
  • 使用作业处理异步工作:ProcessPaymentJob
  • 使用事件:PaymentProcessed、PaymentFailed
  • 控制器仅负责协调,不包含业务逻辑
  • 每个方法的圈复杂度保持在 < 7
  • 遵循 SOLID 原则”
避免的模式

“在以下约束下实现用户管理:

  • 不要在业务逻辑中使用静态方法或 Facade
  • 不要将业务逻辑放入控制器或模型
  • 不要使用全局状态或单例
  • 不要混淆关注点(分离验证、业务逻辑和持久化)
  • 不要使用原始 SQL 查询(使用 Eloquent 或 Query Builder)
  • 不要绕过授权检查”

依赖约束

版本要求

“添加图像处理功能:

  • 使用 intervention/image ^3.0(兼容 Laravel 13.x)
  • 需要 PHP 8.2+
  • 需要 GD 或 Imagick 扩展
  • 与现有的 spatie/laravel-medialibrary ^11.0 兼容
  • 不得与当前依赖冲突”
软件包选择

“选择一个用于生成 PDF 的软件包:

  • 必须支持 Laravel 13.x
  • 必须能处理 UTF-8 和特殊字符
  • 应支持页眉和页脚
  • 优先选择积极维护的软件包(最近 6 个月内有更新)
  • 检查与我们的 PHP 8.2 要求的兼容性
  • 可考虑:barryvdh/laravel-dompdf 或 spatie/laravel-pdf”

约束模板

性能模板
- Response time: < X ms
- Throughput: Y requests/second
- Cache strategy: Redis, TTL Z minutes
- Database: indexes on [columns], eager load [relationships]
- Pagination: max X per page
安全模板
- Authentication: [Sanctum/Passport/Session]
- Authorization: [Policy/Gate]
- Validation: [Form Request class]
- Rate limiting: X requests per Y minutes
- Data protection: [encryption/hashing requirements]
- Audit logging: [what to log]
测试模板
- Coverage: X% on business logic
- Test types: [feature/unit/integration]
- Mocking: [external services to mock]
- Factories: [models to factory]
- Performance: tests complete in < X seconds
- Edge cases: [specific scenarios to test]

快速参考

明确指定约束:

  • 性能 - 响应时间、吞吐量、缓存、索引
  • 安全 - 身份验证、校验、速率限制、数据保护
  • 测试 - 覆盖率、测试类型、模拟、边界情况
  • 架构 - 应遵循/避免的模式、复杂度限制
  • 依赖项 - 版本、兼容性、软件包要求

明确的约束 = 符合项目需求的代码。

评论

支持 Markdown