mcpField
L
laravel:laravel-prompting-patterns

laravel:laravel-prompting-patterns

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

关于 laravel:laravel-prompting-patterns

帮助编写 Laravel 专用提示词的技能,强调使用框架惯用术语来请求符合 Laravel 模式的方案,涵盖数据库查询、验证、API、后台任务和文档引用。

主要功能

  1. 01Eloquent 查询与关联模式
  2. 02验证请求和规则示例
  3. 03REST API 资源模式
  4. 04队列与任务配置示例
  5. 05Laravel 文档引用方式

适用场景

  1. 01请求预加载关联的 Eloquent 查询
  2. 02指定嵌套输入的验证规则
  3. 03规划基于资源的 API 端点
  4. 04描述排队的后台处理流程

安装

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

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:laravel-prompting-patterns

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

详细介绍

Laravel 提示模式

使用 Laravel 的术语来获取符合惯例的代码。笼统的请求只会得到笼统的解决方案,无法充分利用框架。

数据库操作

通用请求

“获取所有活跃用户及其帖子”

Laravel 专属请求

“使用 Eloquent 查询活跃用户,并预加载帖子:

User::where('active', true)
    ->with('posts')
    ->get();

在 User 模型中添加作用域:scopeActive($query)”

关联关系

“为 Posts 和 Tags 设置多对多关联:

  • 创建 post_tag 中间表迁移
  • 在 Post 模型中添加 belongsToMany
  • 在 Tag 模型中添加 belongsToMany
  • 使用 attach()、detach()、sync() 进行管理”
查询优化

“避免帖子索引页出现 N+1 问题:

  • 预加载 author 和 category 关联
  • 使用 withCount('comments') 统计评论总数
  • 为 published_at 和 category_id 添加数据库索引”

验证

通用请求

“验证用户输入”

Laravel 专属请求

“创建 UserStoreRequest 并设置验证规则:

public function rules(): array
{
    return [
        'email' => ['required', 'email', 'unique:users,email'],
        'password' => ['required', 'min:12', Password::defaults()],
        'name' => ['required', 'string', 'max:255'],
    ];
}

在 messages() 方法中添加自定义错误消息”

复杂验证

“验证订单创建:

  • 使用 Rule::exists('products', 'id') 验证产品 ID
  • 验证嵌套的 items 数组:items.*.quantity 必须是整数,且最小值为 1
  • 使用 Rule::requiredIf() 设置有条件的收货地址验证
  • 添加库存检查自定义规则:new HasSufficientStock”

API 端点

通用请求

“为产品创建一个 API”

Laravel 专属请求

“创建符合 RESTful 风格的产品 API:

  • 资源控制器:ProductController,使用 apiResource 路由
  • 使用 ProductResource 转换响应
  • 为索引端点添加带分页的 ProductCollection
  • 使用 Sanctum 中间件保护:auth:sanctum
  • 创建时返回 201,删除时返回 204
  • 使用 ProductStoreRequest 和 ProductUpdateRequest 进行验证”
分页

“为产品 API 添加分页:

  • 在控制器中使用 Product::paginate(20)
  • 使用 ProductResource::collection($products) 返回结果
  • 包含元数据:total、per_page、current_page、last_page
  • 支持 ?page=2 查询参数”
筛选

“为产品 API 添加筛选:

  • 接受 ?category=electronics&min_price=100 查询参数
  • 使用 when() 执行条件查询
  • 提取到 ProductFilters 类中以便复用
  • 在 API 文档中说明查询参数”

后台处理

通用请求

“用户注册后发送电子邮件”

Laravel 专属请求

“注册后分发 SendWelcomeEmail 任务:

SendWelcomeEmail::dispatch($user)
    ->onQueue('emails')
    ->delay(now()->addMinutes(5));
  • 实现 ShouldQueue 接口
  • 添加 $tries = 3 和 $timeout = 30
  • 在 failed() 方法中处理失败
  • 为 Horizon 任务添加标签:$tags = ['user:'.$user->id]”
队列配置

“配置用于支付处理的队列:

  • 支付队列使用 redis 连接
  • 设置 queue:work --queue=payments,default
  • 在配置中将 retry_after 设为 90 秒
  • 使用 Horizon 仪表板进行监控”
任务链

“使用任务链处理订单:

Bus::chain([
    new ValidateInventory($order),
    new ChargePayment($order),
    new SendConfirmation($order),
])->dispatch();

如果任何任务失败,任务链就会停止。在 catch() 回调中处理。”

参考文档

有效引用

“根据 Laravel 的 Eloquent 关联关系文档 实现”

“遵循 Laravel 的 表单请求验证模式”

“使用 Laravel 的 API Resource 模式转换响应”

“按照 Laravel 队列文档 配置队列”

模式目录

模型与 Eloquent:

  • 关系:hasMany、belongsTo、belongsToMany、morphMany
  • 作用域:scopeActive、scopePublished
  • 访问器/修改器:get{Attribute}Attribute、set{Attribute}Attribute
  • 类型转换:protected $casts = ['published_at' => 'datetime']

验证:

  • 表单请求:UserStoreRequest、ProductUpdateRequest
  • 规则:required、unique:table,column、exists:table,column
  • 自定义规则:new Uppercase、Rule::in(['admin', 'user'])

API:

  • 资源:UserResource、ProductCollection
  • 分页:paginate()、simplePaginate()、cursorPaginate()
  • 速率限制:throttle:60,1 中间件

任务与队列:

  • 任务:ShouldQueue、dispatch()、dispatchSync()
  • 链式调用:Bus::chain()、Bus::batch()
  • Horizon:标签、监控、失败任务处理

使用 Laravel 术语。获取 Laravel 解决方案。

评论

支持 Markdown