{"id":"f35db80d-8f83-4d50-b987-1eb900f62c27","shortId":"Vc6shy","kind":"skill","title":"laravel12","tagline":"Laravel 12 framework development assistant. Use when the user needs to: (1) Create Laravel controllers, (2) Create Laravel models, (3) Create Laravel commands, (4) Create middleware, (5) Create facades, (6) Implement services, (7) Configure routes, (8) Use dependency injection, (","description":"# Laravel 12 开发指南\n\nLaravel 12 框架开发助手，专注于控制器、模型、命令行工具、服务层的快速开发。\n\n## 常用 Artisan 命令\n\n```bash\n# 生成控制器\nphp artisan make:controller UserController\n\n# 生成资源控制器（RESTful）\nphp artisan make:controller UserController --resource\n\n# 生成 API 控制器\nphp artisan make:controller API/UserController --api\n\n# 生成模型\nphp artisan make:model User\n\n# 生成模型 + 迁移文件\nphp artisan make:model User -m\n\n# 生成模型 + 迁移 + 工厂 + 控制器\nphp artisan make:model User -mcf\n\n# 生成命令\nphp artisan make:command ImportDataCommand\n\n# 生成中间件\nphp artisan make:middleware CheckUserRole\n\n# 生成服务提供者（用于注册门面）\nphp artisan make:provider PaymentServiceProvider\n\n# 生成请求验证类\nphp artisan make:request StoreUserRequest\n\n# 生成迁移文件\nphp artisan make:migration create_users_table\n\n# 执行迁移\nphp artisan migrate\n\n# 回滚迁移\nphp artisan migrate:rollback\n\n# 生成 Seeder\nphp artisan make:seeder UserSeeder\n\n# 执行 Seeder\nphp artisan db:seed\n\n# 清除缓存\nphp artisan cache:clear\nphp artisan config:clear\nphp artisan route:clear\nphp artisan view:clear\n\n# 启动开发服务器\nphp artisan serve\n```\n\n## 快速示例\n\n### 控制器\n\n```php\n<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Models\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Http\\JsonResponse;\n\nclass UserController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     */\n    public function index(): JsonResponse\n    {\n        $users = User::all();\n\n        return response()->json([\n            'success' => true,\n            'data' => $users\n        ]);\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     */\n    public function store(Request $request): JsonResponse\n    {\n        $validated = $request->validate([\n            'name' => 'required|string|max:255',\n            'email' => 'required|email|unique:users',\n        ]);\n\n        $user = User::create($validated);\n\n        return response()->json([\n            'success' => true,\n            'data' => $user\n        ], 201);\n    }\n\n    /**\n     * Display the specified resource.\n     */\n    public function show(User $user): JsonResponse\n    {\n        return response()->json([\n            'success' => true,\n            'data' => $user\n        ]);\n    }\n\n    /**\n     * Update the specified resource in storage.\n     */\n    public function update(Request $request, User $user): JsonResponse\n    {\n        $validated = $request->validate([\n            'name' => 'sometimes|string|max:255',\n            'email' => 'sometimes|email|unique:users,email,' . $user->id,\n        ]);\n\n        $user->update($validated);\n\n        return response()->json([\n            'success' => true,\n            'data' => $user\n        ]);\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     */\n    public function destroy(User $user): JsonResponse\n    {\n        $user->delete();\n\n        return response()->json([\n            'success' => true,\n            'message' => 'User deleted successfully'\n        ]);\n    }\n}\n```\n\n### 模型（Eloquent ORM）\n\n```php\n<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass User extends Model\n{\n    use HasFactory, SoftDeletes;\n\n    /**\n     * The table associated with the model.\n     */\n    protected $table = 'users';\n\n    /**\n     * The attributes that are mass assignable.\n     */\n    protected $fillable = [\n        'name',\n        'email',\n        'password',\n    ];\n\n    /**\n     * The attributes that should be hidden for serialization.\n     */\n    protected $hidden = [\n        'password',\n        'remember_token',\n    ];\n\n    /**\n     * The attributes that should be cast.\n     */\n    protected $casts = [\n        'email_verified_at' => 'datetime',\n        'password' => 'hashed',\n    ];\n\n    /**\n     * Get the posts for the user.\n     */\n    public function posts()\n    {\n        return $this->hasMany(Post::class);\n    }\n\n    /**\n     * Get the user's profile.\n     */\n    public function profile()\n    {\n        return $this->hasOne(Profile::class);\n    }\n}\n```\n\n### 命令（Artisan Command）\n\n```php\n<?php\n\nnamespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\nuse App\\Models\\User;\n\nclass ImportDataCommand extends Command\n{\n    /**\n     * The name and signature of the console command.\n     */\n    protected $signature = 'import:data {file} {--force}';\n\n    /**\n     * The console command description.\n     */\n    protected $description = 'Import data from file';\n\n    /**\n     * Execute the console command.\n     */\n    public function handle(): int\n    {\n        $file = $this->argument('file');\n        $force = $this->option('force');\n\n        $this->info(\"Processing file: {$file}\");\n\n        if ($force) {\n            $this->warn('Force mode enabled');\n        }\n\n        // 处理逻辑\n        $bar = $this->output->createProgressBar(100);\n        $bar->start();\n\n        for ($i = 0; $i < 100; $i++) {\n            // 处理数据\n            $bar->advance();\n        }\n\n        $bar->finish();\n        $this->newLine();\n\n        $this->info('Import completed successfully!');\n\n        return Command::SUCCESS;\n    }\n}\n```\n\n### 中间件（Middleware）\n\n```php\n<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Http\\Request;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\nclass CheckUserRole\n{\n    /**\n     * Handle an incoming request.\n     */\n    public function handle(Request $request, Closure $next, string $role): Response\n    {\n        if (!$request->user() || !$request->user()->hasRole($role)) {\n            abort(403, 'Unauthorized action.');\n        }\n\n        return $next($request);\n    }\n}\n```\n\n**注册中间件**（在 `app/Http/Kernel.php` 或 `bootstrap/app.php`）：\n\n```php\n// 全局中间件\nprotected $middleware = [\n    \\App\\Http\\Middleware\\CheckUserRole::class,\n];\n\n// 路由中间件\nprotected $middlewareAliases = [\n    'role' => \\App\\Http\\Middleware\\CheckUserRole::class,\n];\n```\n\n**使用中间件**：\n\n```php\n// 在路由中使用\nRoute::get('/admin', function () {\n    // ...\n})->middleware('role:admin');\n\n// 在控制器构造函数中使用\npublic function __construct()\n{\n    $this->middleware('role:admin');\n}\n```\n\n### 门面（Facade）\n\n**创建服务类**：\n\n```php\n<?php\n\nnamespace App\\Services;\n\nclass PaymentService\n{\n    public function process(array $data): array\n    {\n        // 处理支付逻辑\n        return [\n            'status' => 'success',\n            'transaction_id' => uniqid(),\n        ];\n    }\n\n    public function refund(string $transactionId): bool\n    {\n        // 退款逻辑\n        return true;\n    }\n}\n```\n\n**创建门面类**：\n\n```php\n<?php\n\nnamespace App\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass Payment extends Facade\n{\n    /**\n     * Get the registered name of the component.\n     */\n    protected static function getFacadeAccessor(): string\n    {\n        return 'payment';\n    }\n}\n```\n\n**注册服务提供者**（在 `app/Providers/AppServiceProvider.php`）：\n\n```php\n<?php\n\nnamespace App\\Providers;\n\nuse App\\Services\\PaymentService;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    public function register(): void\n    {\n        $this->app->singleton('payment', function ($app) {\n            return new PaymentService();\n        });\n    }\n}\n```\n\n**使用门面**：\n\n```php\nuse App\\Facades\\Payment;\n\n// 调用门面方法\n$result = Payment::process([\n    'amount' => 100,\n    'currency' => 'USD',\n]);\n\n// 退款\nPayment::refund($transactionId);\n```\n\n### 服务类\n\n```php\n<?php\n\nnamespace App\\Services;\n\nuse App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass UserService\n{\n    /**\n     * Create a new user.\n     */\n    public function create(array $data): User\n    {\n        return User::create([\n            'name' => $data['name'],\n            'email' => $data['email'],\n            'password' => Hash::make($data['password']),\n        ]);\n    }\n\n    /**\n     * Update user information.\n     */\n    public function update(User $user, array $data): User\n    {\n        $user->update($data);\n\n        return $user->fresh();\n    }\n\n    /**\n     * Delete a user.\n     */\n    public function delete(User $user): bool\n    {\n        return $user->delete();\n    }\n\n    /**\n     * Find user by email.\n     */\n    public function findByEmail(string $email): ?User\n    {\n        return User::where('email', $email)->first();\n    }\n}\n```\n\n### 请求验证类\n\n```php\n<?php\n\nnamespace App\\Http\\Requests;\n\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass StoreUserRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     */\n    public function authorize(): bool\n    {\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     */\n    public function rules(): array\n    {\n        return [\n            'name' => 'required|string|max:255',\n            'email' => 'required|email|unique:users,email',\n            'password' => 'required|string|min:8|confirmed',\n        ];\n    }\n\n    /**\n     * Get custom messages for validator errors.\n     */\n    public function messages(): array\n    {\n        return [\n            'name.required' => '用户名不能为空',\n            'email.required' => '邮箱不能为空',\n            'email.email' => '邮箱格式不正确',\n            'email.unique' => '该邮箱已被注册',\n            'password.required' => '密码不能为空',\n            'password.min' => '密码至少需要8个字符',\n            'password.confirmed' => '两次密码输入不一致',\n        ];\n    }\n}\n```\n\n### 路由定义\n\n```php\n<?php\n\nuse App\\Http\\Controllers\\UserController;\nuse Illuminate\\Support\\Facades\\Route;\n\n// RESTful 资源路由\nRoute::resource('users', UserController::class);\n\n// API 路由组\nRoute::prefix('api')->group(function () {\n    Route::get('/users', [UserController::class, 'index']);\n    Route::post('/users', [UserController::class, 'store']);\n    Route::get('/users/{user}', [UserController::class, 'show']);\n    Route::put('/users/{user}', [UserController::class, 'update']);\n    Route::delete('/users/{user}', [UserController::class, 'destroy']);\n});\n\n// 中间件保护的路由\nRoute::middleware(['auth'])->group(function () {\n    Route::get('/dashboard', [DashboardController::class, 'index']);\n});\n```\n\n### 迁移文件\n\n```php\n<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nreturn new class extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up(): void\n    {\n        Schema::create('users', function (Blueprint $table) {\n            $table->id();\n            $table->string('name');\n            $table->string('email')->unique();\n            $table->timestamp('email_verified_at')->nullable();\n            $table->string('password');\n            $table->rememberToken();\n            $table->timestamps();\n            $table->softDeletes();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down(): void\n    {\n        Schema::dropIfExists('users');\n    }\n};\n```\n\n## 官方文档参考\n\n详细文档请参考 `references/` 目录下的官方文档：\n\n### 核心概念\n- **安装**: [references/installation.md](references/installation.md)\n- **配置**: [references/configuration.md](references/configuration.md)\n- **目录结构**: [references/structure.md](references/structure.md)\n- **生命周期**: [references/lifecycle.md](references/lifecycle.md)\n\n### 基础功能\n- **路由**: [references/routing.md](references/routing.md)\n- **控制器**: [references/controllers.md](references/controllers.md)\n- **请求**: [references/requests.md](references/requests.md)\n- **响应**: [references/responses.md](references/responses.md)\n- **视图**: [references/views.md](references/views.md)\n- **Blade 模板**: [references/blade.md](references/blade.md)\n\n### 数据库\n- **数据库配置**: [references/database.md](references/database.md)\n- **查询构造器**: [references/queries.md](references/queries.md)\n- **Eloquent ORM**: [references/eloquent.md](references/eloquent.md)\n- **关联关系**: [references/eloquent-relationships.md](references/eloquent-relationships.md)\n- **迁移**: [references/migrations.md](references/migrations.md)\n- **数据填充**: [references/seeding.md](references/seeding.md)\n\n### 高级功能\n- **验证**: [references/validation.md](references/validation.md)\n- **中间件**: [references/middleware.md](references/middleware.md)\n- **门面**: [references/facades.md](references/facades.md)\n- **依赖注入**: [references/container.md](references/container.md)\n- **服务提供者**: [references/providers.md](references/providers.md)\n- **队列**: [references/queues.md](references/queues.md)\n- **任务调度**: [references/scheduling.md](references/scheduling.md)\n- **缓存**: [references/cache.md](references/cache.md)\n- **事件**: [references/events.md](references/events.md)\n\n### 测试\n- **测试**: [references/testing.md](references/testing.md)\n- **HTTP 测试**: [references/http-tests.md](references/http-tests.md)\n- **数据库测试**: [references/database-testing.md](references/database-testing.md)\n\n### Artisan 命令\n- **Artisan 控制台**: [references/artisan.md](references/artisan.md)\n\n## 开发最佳实践\n\n1. **使用依赖注入**：通过构造函数或方法注入依赖\n2. **遵循 RESTful 规范**：使用资源控制器和标准 HTTP 方法\n3. **使用 Form Request**：将验证逻辑从控制器中分离\n4. **服务层模式**：将业务逻辑放在服务类中\n5. **中间件保护路由**：使用中间件进行权限验证和请求过滤\n6. **门面简化调用**：为常用服务创建门面，提供简洁的静态调用接口\n7. **使用 Eloquent 关联**：充分利用 ORM 的关联功能\n8. **数据库迁移**：所有数据库变更都通过迁移文件管理\n9. **使用队列**：将耗时任务放入队列异步处理\n10. **缓存优化**：合理使用缓存提升性能\n11. **编写测试**：为关键功能编写单元测试和功能测试\n12. **遵循 PSR 规范**：代码风格遵循 PSR-12 标准","tags":["laravel12","awesome","skills","fanqingxuan","agent-skills","ai-agent","claude-code","claude-skills","codex","coding-assistant","developer-tools","qoder"],"capabilities":["skill","source-fanqingxuan","skill-laravel12","topic-agent-skills","topic-ai-agent","topic-claude-code","topic-claude-skills","topic-codex","topic-coding-assistant","topic-developer-tools","topic-qoder","topic-vercel-skills"],"categories":["awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/fanqingxuan/awesome-skills/laravel12","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add fanqingxuan/awesome-skills","source_repo":"https://github.com/fanqingxuan/awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.459","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 19 github stars · SKILL.md body (13,006 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T07:01:12.054Z","embedding":null,"createdAt":"2026-04-18T23:06:28.139Z","updatedAt":"2026-04-23T07:01:12.054Z","lastSeenAt":"2026-04-23T07:01:12.054Z","tsv":"'-12':1218 '/admin':624 '/dashboard':991 '/users':952,958,964,971,978 '0':528 '1':13,1168 '10':1206 '100':523,530,742 '11':1209 '12':3,42,45,1212 '2':17,1171 '201':259 '255':242,298,885 '3':21,1178 '4':25,1183 '403':590 '5':28,1186 '6':31,1189 '7':34,1193 '8':37,896,1200 '9':1203 'abort':589 'action':592 'admin':628,636 'advanc':534 'amount':741 'api':70,77,943,947 'api/usercontroller':76 'app':183,187,346,451,459,552,605,614,643,673,704,707,723,727,734,753,756,839,927 'app/http/kernel.php':598 'app/providers/appserviceprovider.php':700 'appli':872 'appserviceprovid':715 'argument':500 'array':650,652,773,798,879,907 'artisan':52,57,64,73,80,87,97,104,110,117,123,129,137,141,147,154,159,163,167,171,176,446,1161,1163 'assign':385 'assist':6 'associ':373 'attribut':381,392,405 'auth':986 'author':856,863 'bar':519,524,533,535 'bash':54 'blade':1098 'blueprint':1007,1029 'bool':665,815,864 'bootstrap/app.php':600 'cach':160 'cast':409,411 'checkuserrol':113,567,608,617 'class':198,364,431,444,462,566,609,618,645,680,714,764,847,942,954,960,967,974,981,993,1015 'clear':161,165,169,173 'closur':556,577 'command':24,106,447,453,457,465,473,482,493,545 'complet':542 'compon':563,690 'config':164 'configur':35 'confirm':897 'consol':452,456,472,481,492 'construct':632 'control':16,59,66,75,185,201,929 'creat':14,18,22,26,29,132,225,250,766,772,778,1026 'createprogressbar':522 'currenc':743 'custom':899 'dashboardcontrol':992 'data':220,257,275,315,477,487,651,774,780,783,788,799,803 'databas':350,356,361,1000,1005 'datetim':415 'db':155 'delet':330,338,807,812,818,977 'depend':39 'descript':483,485 'destroy':325,982 'determin':851 'develop':5 'display':202,260 'dropifexist':1063 'eloqu':341,351,357,362,1109,1195 'email':243,245,299,301,304,389,412,782,784,822,827,832,833,886,888,891,1038,1042 'email.email':913 'email.required':911 'email.unique':915 'enabl':517 'error':903 'execut':490 'extend':200,366,464,682,716,849,1016 'facad':30,638,674,678,679,683,735,762,934,1011 'factori':352 'file':478,489,498,501,509,510 'fillabl':387 'find':819 'findbyemail':825 'finish':536 'first':834 'forc':479,502,505,512,515 'form':1180 'formrequest':846,850 'foundat':844 'framework':4 'fresh':806 'function':209,230,265,284,324,425,438,495,573,625,631,648,661,693,719,726,771,794,811,824,862,877,905,949,988,1022,1028,1059 'get':418,432,623,684,867,898,951,963,990 'getfacadeaccessor':694 'group':948,987 'handl':496,568,574 'hasfactori':353,369 'hash':417,763,786 'hasmani':429 'hason':442 'hasrol':587 'hidden':396,400 'http':184,192,196,553,559,606,615,840,845,928,1154,1176 'httpfoundat':564 'id':306,658,1032 'illumin':191,195,349,355,360,455,558,676,711,760,843,932,999,1004,1009 'implement':32 'import':476,486,541 'importdatacommand':107,463 'incom':570 'index':210,955,994 'info':507,540 'inform':792 'inject':40 'int':497 'json':217,254,272,312,333 'jsonrespons':197,211,234,269,290,328 'laravel':2,15,19,23,41,44 'laravel12':1 'list':204 'm':91 'make':58,65,74,81,88,98,105,111,118,124,130,148,787,858 'mass':384 'max':241,297,884 'mcf':101 'messag':336,900,906 'middlewar':27,112,548,554,604,607,616,626,634,985 'middlewarealias':612 'migrat':131,138,142,1001,1002,1017,1020,1057 'min':895 'mode':516 'model':20,82,89,99,188,347,358,367,376,460,757 'name':238,294,388,467,687,779,781,881,1035 'name.required':909 'namespac':182,345,450,551,642,672,703,752,838 'need':11 'new':729,768,1014 'newli':224 'newlin':538 'next':578,594 'nullabl':1045 'option':504 'orm':342,1110,1198 'output':521 'password':390,401,416,785,789,892,1048 'password.confirmed':921 'password.min':919 'password.required':917 'payment':681,697,725,736,739,746 'paymentservic':646,709,730 'paymentserviceprovid':120 'php':56,63,72,79,86,96,103,109,116,122,128,136,140,146,153,158,162,166,170,175,180,181,343,344,448,449,549,550,601,620,640,641,670,671,701,702,732,750,751,836,837,924,925,996,997 'post':420,426,430,957 'prefix':946 'process':508,649,740 'profil':436,439,443 'protect':377,386,399,410,474,484,603,611,691 'provid':119,705 'psr':1214,1217 'public':208,229,264,283,323,424,437,494,572,630,647,660,718,770,793,810,823,861,876,904,1021,1058 'put':970 'refer':1067 'references/artisan.md':1165,1166 'references/blade.md':1100,1101 'references/cache.md':1145,1146 'references/configuration.md':1074,1075 'references/container.md':1133,1134 'references/controllers.md':1087,1088 'references/database-testing.md':1159,1160 'references/database.md':1104,1105 'references/eloquent-relationships.md':1114,1115 'references/eloquent.md':1111,1112 'references/events.md':1148,1149 'references/facades.md':1130,1131 'references/http-tests.md':1156,1157 'references/installation.md':1071,1072 'references/lifecycle.md':1080,1081 'references/middleware.md':1127,1128 'references/migrations.md':1117,1118 'references/providers.md':1136,1137 'references/queries.md':1107,1108 'references/queues.md':1139,1140 'references/requests.md':1090,1091 'references/responses.md':1093,1094 'references/routing.md':1084,1085 'references/scheduling.md':1142,1143 'references/seeding.md':1120,1121 'references/structure.md':1077,1078 'references/testing.md':1152,1153 'references/validation.md':1124,1125 'references/views.md':1096,1097 'refund':662,747 'regist':686,720 'rememb':402 'remembertoken':1050 'remov':317 'request':125,193,232,233,236,286,287,292,560,571,575,576,583,585,595,841,860,875,1181 'requir':239,244,882,887,893 'resourc':68,207,226,263,280,320,939 'respons':216,253,271,311,332,565,581 'rest':62,936,1173 'result':738 'return':215,252,270,310,331,427,440,544,593,654,667,696,728,776,804,816,829,865,880,908,1013 'revers':1055 'role':580,588,613,627,635 'rollback':143 'rout':36,168,622,935,938,945,950,956,962,969,976,984,989 'rule':870,878 'run':1018 'schema':1006,1012,1025,1062 'seed':156 'seeder':145,149,152 'serial':398 'serv':177 'servic':33,644,708,754 'serviceprovid':713,717 'show':266,968 'signatur':469,475 'singleton':724 'skill' 'skill-laravel12' 'softdelet':363,370,1054 'sometim':295,300 'source-fanqingxuan' 'specifi':262,279,319 'start':525 'static':692 'status':655 'storag':228,282,322 'store':222,231,961 'storeuserrequest':126,848 'string':240,296,579,663,695,826,883,894,1034,1037,1047 'success':218,255,273,313,334,339,543,546,656 'support':677,712,761,933,1010 'symfoni':562 'tabl':134,372,378,1030,1031,1033,1036,1040,1046,1049,1051,1053 'timestamp':1041,1052 'token':403 'topic-agent-skills' 'topic-ai-agent' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-assistant' 'topic-developer-tools' 'topic-qoder' 'topic-vercel-skills' 'transact':657 'transactionid':664,748 'true':219,256,274,314,335,668,866 'unauthor':591 'uniqid':659 'uniqu':246,302,889,1039 'updat':277,285,308,790,795,802,975 'usd':744 'use':7,38,186,190,194,348,354,359,368,454,458,555,557,561,675,706,710,733,755,759,842,926,931,998,1003,1008 'user':10,83,90,100,133,189,212,213,221,247,248,249,258,267,268,276,288,289,303,305,307,316,326,327,329,337,365,379,423,434,461,584,586,758,769,775,777,791,796,797,800,801,805,809,813,814,817,820,828,830,854,890,940,965,972,979,1027,1064 'usercontrol':60,67,199,930,941,953,959,966,973,980 'userseed':150 'userservic':765 'valid':235,237,251,291,293,309,869,902 'verifi':413,1043 'view':172 'void':721,1024,1061 'warn':514 '专注于控制器':47 '两次密码输入不一致':922 '中间件':547,1126 '中间件保护的路由':983 '中间件保护路由':1187 '为关键功能编写单元测试和功能测试':1211 '为常用服务创建门面':1191 '事件':1147 '代码风格遵循':1216 '任务调度':1141 '使用':1179,1194 '使用中间件':619 '使用中间件进行权限验证和请求过滤':1188 '使用依赖注入':1169 '使用资源控制器和标准':1175 '使用门面':731 '使用队列':1204 '依赖注入':1132 '充分利用':1197 '全局中间件':602 '关联':1196 '关联关系':1113 '创建服务类':639 '创建门面类':669 '合理使用缓存提升性能':1208 '启动开发服务器':174 '命令':53,445,1162 '命令行工具':49 '响应':1092 '回滚迁移':139 '在':597,699 '在控制器构造函数中使用':629 '在路由中使用':621 '基础功能':1082 '处理支付逻辑':653 '处理数据':532 '处理逻辑':518 '安装':1070 '官方文档参考':1065 '密码不能为空':918 '密码至少需要8个字符':920 '将业务逻辑放在服务类中':1185 '将耗时任务放入队列异步处理':1205 '将验证逻辑从控制器中分离':1182 '工厂':94 '常用':51 '开发指南':43 '开发最佳实践':1167 '快速示例':178 '或':599 '所有数据库变更都通过迁移文件管理':1202 '执行':151 '执行迁移':135 '控制台':1164 '控制器':71,95,179,1086 '提供简洁的静态调用接口':1192 '数据填充':1119 '数据库':1102 '数据库测试':1158 '数据库迁移':1201 '数据库配置':1103 '方法':1177 '服务层模式':1184 '服务层的快速开发':50 '服务提供者':1135 '服务类':749 '查询构造器':1106 '标准':1219 '核心概念':1069 '框架开发助手':46 '模型':48,340 '模板':1099 '注册中间件':596 '注册服务提供者':698 '测试':1150,1151,1155 '清除缓存':157 '生命周期':1079 '生成':69,144 '生成中间件':108 '生成命令':102 '生成控制器':55 '生成服务提供者':114 '生成模型':78,84,92 '生成请求验证类':121 '生成资源控制器':61 '生成迁移文件':127 '用于注册门面':115 '用户名不能为空':910 '的关联功能':1199 '目录下的官方文档':1068 '目录结构':1076 '缓存':1144 '缓存优化':1207 '编写测试':1210 '规范':1174,1215 '视图':1095 '该邮箱已被注册':916 '详细文档请参考':1066 '请求':1089 '请求验证类':835 '调用门面方法':737 '资源路由':937 '路由':1083 '路由中间件':610 '路由定义':923 '路由组':944 '迁移':93,1116 '迁移文件':85,995 '退款':745 '退款逻辑':666 '通过构造函数或方法注入依赖':1170 '遵循':1172,1213 '邮箱不能为空':912 '邮箱格式不正确':914 '配置':1073 '门面':637,1129 '门面简化调用':1190 '队列':1138 '验证':1123 '高级功能':1122","prices":[{"id":"9a227408-0626-46e1-a003-a1752c7de8d8","listingId":"f35db80d-8f83-4d50-b987-1eb900f62c27","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"fanqingxuan","category":"awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T23:06:28.139Z"}],"sources":[{"listingId":"f35db80d-8f83-4d50-b987-1eb900f62c27","source":"github","sourceId":"fanqingxuan/awesome-skills/laravel12","sourceUrl":"https://github.com/fanqingxuan/awesome-skills/tree/main/skills/laravel12","isPrimary":false,"firstSeenAt":"2026-04-18T23:06:28.139Z","lastSeenAt":"2026-04-23T07:01:12.054Z"}],"details":{"listingId":"f35db80d-8f83-4d50-b987-1eb900f62c27","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"fanqingxuan","slug":"laravel12","github":{"repo":"fanqingxuan/awesome-skills","stars":19,"topics":["agent-skills","ai-agent","claude-code","claude-skills","codex","coding-assistant","developer-tools","qoder","vercel-skills"],"license":"mit","html_url":"https://github.com/fanqingxuan/awesome-skills","pushed_at":"2026-04-21T16:00:10Z","description":"热门skills推荐,包括编程以及非编程等各种热门实用的skill","skill_md_sha":"437c2c82e3c47cfc60640393501ad4addbdff3ab","skill_md_path":"skills/laravel12/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/fanqingxuan/awesome-skills/tree/main/skills/laravel12"},"layout":"multi","source":"github","category":"awesome-skills","frontmatter":{"name":"laravel12","description":"Laravel 12 framework development assistant. Use when the user needs to: (1) Create Laravel controllers, (2) Create Laravel models, (3) Create Laravel commands, (4) Create middleware, (5) Create facades, (6) Implement services, (7) Configure routes, (8) Use dependency injection, (9) Handle validation, (10) Work with Eloquent ORM, or any other Laravel 12 development tasks. Triggers on phrases like \"创建 Laravel 控制器\", \"生成模型\", \"创建命令\", \"创建中间件\", \"创建门面\", \"生成中间件\", \"生成门面\", \"Laravel 开发\", \"Laravel 12\"."},"skills_sh_url":"https://skills.sh/fanqingxuan/awesome-skills/laravel12"},"updatedAt":"2026-04-23T07:01:12.054Z"}}