[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E221T4MV52CSS5KQFN1K11":3,"skill-same:01M6E221T4MV52CSS5KQFN1K11":102},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":13,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6E221T4MV52CSS5KQFN1K11","laravel-security",null,"Laravel security best practices for authn\u002Fauthz, validation, CSRF, mass assignment, file uploads, secrets, rate limiting, and secure deployment.","7dvq6yrkgs-stack\u002Fplaywright","7dvq6yrkgs-stack","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F251638143?v=4","01M6E061J2AMGWYZ6TK7Y8NM74","01M6E061PQCQJGQMPBERMCFN5G",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Flaravel-security\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36],"security","laravel","laravel security","secure","deployment","best practices","validation","security best practices","file","csrf","file uploads","secrets","uploads","rate limiting","2026-11-10 10:12:30",false,"---\nname: laravel-security\ndescription: Laravel security best practices for authn\u002Fauthz, validation, CSRF, mass assignment, file uploads, secrets, rate limiting, and secure deployment.\norigin: ECC\n---\n\n# Laravel Güvenlik En İyi Uygulamaları\n\nLaravel uygulamalarını yaygın güvenlik açıklarına karşı korumak için kapsamlı güvenlik rehberi.\n\n## Ne Zaman Aktif Edilir\n\n- Kimlik doğrulama veya yetkilendirme ekleme\n- Kullanıcı girişi ve dosya yüklemelerini işleme\n- Yeni API endpoint'leri oluşturma\n- Gizli bilgileri ve ortam ayarlarını yönetme\n- Production deployment'ları sertleştirme\n\n## Nasıl Çalışır\n\n- Middleware temel korumalar sağlar (CSRF için `VerifyCsrfToken`, güvenlik başlıkları için `SecurityHeaders`).\n- Guard'lar ve policy'ler erişim kontrolünü zorlar (`auth:sanctum`, `$this->authorize`, policy middleware).\n- Form Request'ler servislere ulaşmadan önce girişi doğrular ve şekillendirir (`UploadInvoiceRequest`).\n- Rate limiting, auth kontrolleri ile birlikte kötüye kullanım koruması ekler (`RateLimiter::for('login')`).\n- Veri güvenliği encrypted cast'lerden, mass-assignment korumalarından ve signed route'lardan gelir (`URL::temporarySignedRoute` + `signed` middleware).\n\n## Temel Güvenlik Ayarları\n\n- Production'da `APP_DEBUG=false`\n- `APP_KEY` ayarlanmalı ve tehlikeye girdiğinde döndürülmelidir\n- `SESSION_SECURE_COOKIE=true` ve `SESSION_SAME_SITE=lax` ayarlayın (veya hassas uygulamalar için `strict`)\n- Doğru HTTPS algılama için güvenilir proxy'leri yapılandırın\n\n## Session ve Cookie Sertleştirme\n\n- JavaScript erişimini önlemek için `SESSION_HTTP_ONLY=true` ayarlayın\n- Yüksek riskli akışlar için `SESSION_SAME_SITE=strict` kullanın\n- Login ve ayrıcalık değişikliklerinde session'ları yeniden oluşturun\n\n## Kimlik Doğrulama ve Token'lar\n\n- API kimlik doğrulama için Laravel Sanctum veya Passport kullanın\n- Hassas veriler için yenileme akışları ile kısa ömürlü token'ları tercih edin\n- Logout ve tehlikeye girmiş hesaplarda token'ları iptal edin\n\nÖrnek route koruması:\n\n```php\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::middleware('auth:sanctum')->get('\u002Fme', function (Request $request) {\n    return $request->user();\n});\n```\n\n## Parola Güvenliği\n\n- `Hash::make()` ile parolaları hash'leyin ve asla düz metin saklamayın\n- Sıfırlama akışları için Laravel'in password broker'ını kullanın\n\n```php\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Validation\\Rules\\Password;\n\n$validated = $request->validate([\n    'password' => ['required', 'string', Password::min(12)->letters()->mixedCase()->numbers()->symbols()],\n]);\n\n$user->update(['password' => Hash::make($validated['password'])]);\n```\n\n## Yetkilendirme: Policy'ler ve Gate'ler\n\n- Model seviyesi yetkilendirme için policy'leri kullanın\n- Controller'larda ve servislerde yetkilendirmeyi zorlayın\n\n```php\n$this->authorize('update', $project);\n```\n\nRoute seviyesi zorlama için policy middleware kullanın:\n\n```php\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::put('\u002Fprojects\u002F{project}', [ProjectController::class, 'update'])\n    ->middleware(['auth:sanctum', 'can:update,project']);\n```\n\n## Validation ve Veri Temizleme\n\n- Her zaman Form Request'ler ile girişleri doğrulayın\n- Sıkı validation kuralları ve tip kontrolleri kullanın\n- Türetilmiş alanlar için request payload'larına asla güvenmeyin\n\n## Mass Assignment Koruması\n\n- `$fillable` veya `$guarded` kullanın ve `Model::unguard()` kullanmaktan kaçının\n- DTO'ları veya açık attribute mapping'i tercih edin\n\n## SQL Injection Önleme\n\n- Eloquent veya query builder parametre binding kullanın\n- Kesinlikle gerekli olmadıkça raw SQL kullanmaktan kaçının\n\n```php\nDB::select('select * from users where email = ?', [$email]);\n```\n\n## XSS Önleme\n\n- Blade varsayılan olarak çıktıyı escape eder (`{{ }}`)\n- `{!! !!}` sadece güvenilir, temizlenmiş HTML için kullanın\n- Zengin metni özel bir kütüphane ile temizleyin\n\n## CSRF Koruması\n\n- `VerifyCsrfToken` middleware'ini etkin tutun\n- Formlara `@csrf` ekleyin ve SPA istekleri için XSRF token'ları gönderin\n\nSanctum ile SPA kimlik doğrulaması için, stateful isteklerin yapılandırıldığından emin olun:\n\n```php\n\u002F\u002F config\u002Fsanctum.php\n'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost')),\n```\n\n## Dosya Yükleme Güvenliği\n\n- Dosya boyutunu, MIME tipini ve uzantısını doğrulayın\n- Mümkün olduğunda yüklemeleri public path dışında saklayın\n- Gerekirse dosyaları malware için tarayın\n\n```php\nfinal class UploadInvoiceRequest extends FormRequest\n{\n    public function authorize(): bool\n    {\n        return (bool) $this->user()?->can('upload-invoice');\n    }\n\n    public function rules(): array\n    {\n        return [\n            'invoice' => ['required', 'file', 'mimes:pdf', 'max:5120'],\n        ];\n    }\n}\n```\n\n```php\n$path = $request->file('invoice')->store(\n    'invoices',\n    config('filesystems.private_disk', 'local') \u002F\u002F bunu public olmayan bir disk'e ayarlayın\n);\n```\n\n## Rate Limiting\n\n- Auth ve yazma endpoint'lerinde `throttle` middleware'i uygulayın\n- Login, password reset ve OTP için daha sıkı limitler kullanın\n\n```php\nuse Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\RateLimiter;\n\nRateLimiter::for('login', function (Request $request) {\n    return [\n        Limit::perMinute(5)->by($request->ip()),\n        Limit::perMinute(5)->by(strtolower((string) $request->input('email'))),\n    ];\n});\n```\n\n## Gizli Bilgiler ve Kimlik Bilgileri\n\n- Gizli bilgileri asla kaynak kontrolüne commit etmeyin\n- Ortam değişkenlerini ve gizli yöneticileri kullanın\n- Maruz kalma sonrası anahtarları döndürün ve session'ları geçersiz kılın\n\n## Şifreli Attribute'lar\n\nBekleyen hassas sütunlar için encrypted cast'leri kullanın.\n\n```php\nprotected $casts = [\n    'api_token' => 'encrypted',\n];\n```\n\n## Güvenlik Başlıkları\n\n- Uygun yerlerde CSP, HSTS ve frame koruması ekleyin\n- HTTPS yönlendirmelerini zorlamak için güvenilir proxy yapılandırması kullanın\n\nBaşlıkları ayarlamak için örnek middleware:\n\n```php\nuse Illuminate\\Http\\Request;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\nfinal class SecurityHeaders\n{\n    public function handle(Request $request, \\Closure $next): Response\n    {\n        $response = $next($request);\n\n        $response->headers->add([\n            'Content-Security-Policy' => \"default-src 'self'\",\n            'Strict-Transport-Security' => 'max-age=31536000', \u002F\u002F tüm subdomain'ler HTTPS olduğunda includeSubDomains\u002Fpreload ekleyin\n            'X-Frame-Options' => 'DENY',\n            'X-Content-Type-Options' => 'nosniff',\n            'Referrer-Policy' => 'no-referrer',\n        ]);\n\n        return $response;\n    }\n}\n```\n\n## CORS ve API Erişimi\n\n- `config\u002Fcors.php`'de origin'leri kısıtlayın\n- Kimlik doğrulamalı route'lar için wildcard origin'lerden kaçının\n\n```php\n\u002F\u002F config\u002Fcors.php\nreturn [\n    'paths' => ['api\u002F*', 'sanctum\u002Fcsrf-cookie'],\n    'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],\n    'allowed_origins' => ['https:\u002F\u002Fapp.example.com'],\n    'allowed_headers' => [\n        'Content-Type',\n        'Authorization',\n        'X-Requested-With',\n        'X-XSRF-TOKEN',\n        'X-CSRF-TOKEN',\n    ],\n    'supports_credentials' => true,\n];\n```\n\n## Loglama ve PII\n\n- Parolaları, token'ları veya tam kart verilerini asla loglamayın\n- Yapılandırılmış loglarda hassas alanları redakte edin\n\n```php\nuse Illuminate\\Support\\Facades\\Log;\n\nLog::info('User updated profile', [\n    'user_id' => $user->id,\n    'email' => '[REDACTED]',\n    'token' => '[REDACTED]',\n]);\n```\n\n## Bağımlılık Güvenliği\n\n- Düzenli olarak `composer audit` çalıştırın\n- Bağımlılıkları dikkatle sabitleyin ve CVE'lerde hızlıca güncelleyin\n\n## Signed URL'ler\n\nGeçici, kurcalamaya dayanıklı bağlantılar için signed route'ları kullanın.\n\n```php\nuse Illuminate\\Support\\Facades\\URL;\n\n$url = URL::temporarySignedRoute(\n    'downloads.invoice',\n    now()->addMinutes(15),\n    ['invoice' => $invoice->id]\n);\n```\n\n```php\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::get('\u002Finvoices\u002F{invoice}\u002Fdownload', [InvoiceController::class, 'download'])\n    ->name('downloads.invoice')\n    ->middleware('signed');\n```\n","# Laravel Güvenlik En İyi Uygulamaları\n\nLaravel uygulamalarını yaygın güvenlik açıklarına karşı korumak için kapsamlı güvenlik rehberi.\n\n## Ne Zaman Aktif Edilir\n\n- Kimlik doğrulama veya yetkilendirme ekleme\n- Kullanıcı girişi ve dosya yüklemelerini işleme\n- Yeni API endpoint'leri oluşturma\n- Gizli bilgileri ve ortam ayarlarını yönetme\n- Production deployment'ları sertleştirme\n\n## Nasıl Çalışır\n\n- Middleware temel korumalar sağlar (CSRF için `VerifyCsrfToken`, güvenlik başlıkları için `SecurityHeaders`).\n- Guard'lar ve policy'ler erişim kontrolünü zorlar (`auth:sanctum`, `$this->authorize`, policy middleware).\n- Form Request'ler servislere ulaşmadan önce girişi doğrular ve şekillendirir (`UploadInvoiceRequest`).\n- Rate limiting, auth kontrolleri ile birlikte kötüye kullanım koruması ekler (`RateLimiter::for('login')`).\n- Veri güvenliği encrypted cast'lerden, mass-assignment korumalarından ve signed route'lardan gelir (`URL::temporarySignedRoute` + `signed` middleware).\n\n## Temel Güvenlik Ayarları\n\n- Production'da `APP_DEBUG=false`\n- `APP_KEY` ayarlanmalı ve tehlikeye girdiğinde döndürülmelidir\n- `SESSION_SECURE_COOKIE=true` ve `SESSION_SAME_SITE=lax` ayarlayın (veya hassas uygulamalar için `strict`)\n- Doğru HTTPS algılama için güvenilir proxy'leri yapılandırın\n\n## Session ve Cookie Sertleştirme\n\n- JavaScript erişimini önlemek için `SESSION_HTTP_ONLY=true` ayarlayın\n- Yüksek riskli akışlar için `SESSION_SAME_SITE=strict` kullanın\n- Login ve ayrıcalık değişikliklerinde session'ları yeniden oluşturun\n\n## Kimlik Doğrulama ve Token'lar\n\n- API kimlik doğrulama için Laravel Sanctum veya Passport kullanın\n- Hassas veriler için yenileme akışları ile kısa ömürlü token'ları tercih edin\n- Logout ve tehlikeye girmiş hesaplarda token'ları iptal edin\n\nÖrnek route koruması:\n\n```php\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::middleware('auth:sanctum')->get('\u002Fme', function (Request $request) {\n    return $request->user();\n});\n```\n\n## Parola Güvenliği\n\n- `Hash::make()` ile parolaları hash'leyin ve asla düz metin saklamayın\n- Sıfırlama akışları için Laravel'in password broker'ını kullanın\n\n```php\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Validation\\Rules\\Password;\n\n$validated = $request->validate([\n    'password' => ['required', 'string', Password::min(12)->letters()->mixedCase()->numbers()->symbols()],\n]);\n\n$user->update(['password' => Hash::make($validated['password'])]);\n```\n\n## Yetkilendirme: Policy'ler ve Gate'ler\n\n- Model seviyesi yetkilendirme için policy'leri kullanın\n- Controller'larda ve servislerde yetkilendirmeyi zorlayın\n\n```php\n$this->authorize('update', $project);\n```\n\nRoute seviyesi zorlama için policy middleware kullanın:\n\n```php\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::put('\u002Fprojects\u002F{project}', [ProjectController::class, 'update'])\n    ->middleware(['auth:sanctum', 'can:update,project']);\n```\n\n## Validation ve Veri Temizleme\n\n- Her zaman Form Request'ler ile girişleri doğrulayın\n- Sıkı validation kuralları ve tip kontrolleri kullanın\n- Türetilmiş alanlar için request payload'larına asla güvenmeyin\n\n## Mass Assignment Koruması\n\n- `$fillable` veya `$guarded` kullanın ve `Model::unguard()` kullanmaktan kaçının\n- DTO'ları veya açık attribute mapping'i tercih edin\n\n## SQL Injection Önleme\n\n- Eloquent veya query builder parametre binding kullanın\n- Kesinlikle gerekli olmadıkça raw SQL kullanmaktan kaçının\n\n```php\nDB::select('select * from users where email = ?', [$email]);\n```\n\n## XSS Önleme\n\n- Blade varsayılan olarak çıktıyı escape eder (`{{ }}`)\n- `{!! !!}` sadece güvenilir, temizlenmiş HTML için kullanın\n- Zengin metni özel bir kütüphane ile temizleyin\n\n## CSRF Koruması\n\n- `VerifyCsrfToken` middleware'ini etkin tutun\n- Formlara `@csrf` ekleyin ve SPA istekleri için XSRF token'ları gönderin\n\nSanctum ile SPA kimlik doğrulaması için, stateful isteklerin yapılandırıldığından emin olun:\n\n```php\n\u002F\u002F config\u002Fsanctum.php\n'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost')),\n```\n\n## Dosya Yükleme Güvenliği\n\n- Dosya boyutunu, MIME tipini ve uzantısını doğrulayın\n- Mümkün olduğunda yüklemeleri public path dışında saklayın\n- Gerekirse dosyaları malware için tarayın\n\n```php\nfinal class UploadInvoiceRequest extends FormRequest\n{\n    public function authorize(): bool\n    {\n        return (bool) $this->user()?->can('upload-invoice');\n    }\n\n    public function rules(): array\n    {\n        return [\n            'invoice' => ['required', 'file', 'mimes:pdf', 'max:5120'],\n        ];\n    }\n}\n```\n\n```php\n$path = $request->file('invoice')->store(\n    'invoices',\n    config('filesystems.private_disk', 'local') \u002F\u002F bunu public olmayan bir disk'e ayarlayın\n);\n```\n\n## Rate Limiting\n\n- Auth ve yazma endpoint'lerinde `throttle` middleware'i uygulayın\n- Login, password reset ve OTP için daha sıkı limitler kullanın\n\n```php\nuse Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\RateLimiter;\n\nRateLimiter::for('login', function (Request $request) {\n    return [\n        Limit::perMinute(5)->by($request->ip()),\n        Limit::perMinute(5)->by(strtolower((string) $request->input('email'))),\n    ];\n});\n```\n\n## Gizli Bilgiler ve Kimlik Bilgileri\n\n- Gizli bilgileri asla kaynak kontrolüne commit etmeyin\n- Ortam değişkenlerini ve gizli yöneticileri kullanın\n- Maruz kalma sonrası anahtarları döndürün ve session'ları geçersiz kılın\n\n## Şifreli Attribute'lar\n\nBekleyen hassas sütunlar için encrypted cast'leri kullanın.\n\n```php\nprotected $casts = [\n    'api_token' => 'encrypted',\n];\n```\n\n## Güvenlik Başlıkları\n\n- Uygun yerlerde CSP, HSTS ve frame koruması ekleyin\n- HTTPS yönlendirmelerini zorlamak için güvenilir proxy yapılandırması kullanın\n\nBaşlıkları ayarlamak için örnek middleware:\n\n```php\nuse Illuminate\\Http\\Request;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\nfinal class SecurityHeaders\n{\n    public function handle(Request $request, \\Closure $next): Response\n    {\n        $response = $next($request);\n\n        $response->headers->add([\n            'Content-Security-Policy' => \"default-src 'self'\",\n            'Strict-Transport-Security' => 'max-age=31536000', \u002F\u002F tüm subdomain'ler HTTPS olduğunda includeSubDomains\u002Fpreload ekleyin\n            'X-Frame-Options' => 'DENY',\n            'X-Content-Type-Options' => 'nosniff',\n            'Referrer-Policy' => 'no-referrer',\n        ]);\n\n        return $response;\n    }\n}\n```\n\n## CORS ve API Erişimi\n\n- `config\u002Fcors.php`'de origin'leri kısıtlayın\n- Kimlik doğrulamalı route'lar için wildcard origin'lerden kaçının\n\n```php\n\u002F\u002F config\u002Fcors.php\nreturn [\n    'paths' => ['api\u002F*', 'sanctum\u002Fcsrf-cookie'],\n    'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],\n    'allowed_origins' => ['https:\u002F\u002Fapp.example.com'],\n    'allowed_headers' => [\n        'Content-Type',\n        'Authorization',\n        'X-Requested-With',\n        'X-XSRF-TOKEN',\n        'X-CSRF-TOKEN',\n    ],\n    'supports_credentials' => true,\n];\n```\n\n## Loglama ve PII\n\n- Parolaları, token'ları veya tam kart verilerini asla loglamayın\n- Yapılandırılmış loglarda hassas alanları redakte edin\n\n```php\nuse Illuminate\\Support\\Facades\\Log;\n\nLog::info('User updated profile', [\n    'user_id' => $user->id,\n    'email' => '[REDACTED]',\n    'token' => '[REDACTED]',\n]);\n```\n\n## Bağımlılık Güvenliği\n\n- Düzenli olarak `composer audit` çalıştırın\n- Bağımlılıkları dikkatle sabitleyin ve CVE'lerde hızlıca güncelleyin\n\n## Signed URL'ler\n\nGeçici, kurcalamaya dayanıklı bağlantılar için signed route'ları kullanın.\n\n```php\nuse Illuminate\\Support\\Facades\\URL;\n\n$url = URL::temporarySignedRoute(\n    'downloads.invoice',\n    now()->addMinutes(15),\n    ['invoice' => $invoice->id]\n);\n```\n\n```php\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::get('\u002Finvoices\u002F{invoice}\u002Fdownload', [InvoiceController::class, 'download'])\n    ->name('downloads.invoice')\n    ->middleware('signed');\n```\n",{"name":5,"origin":42,"description":7},"ECC","main","a2e3284ed4488780397ee2f78217366e11470dfb","skills\u002Flaravel-security","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright","https:\u002F\u002Fplaywright.dev","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack","2026-04-25 06:04:45",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add 7dvq6yrkgs-stack\u002Fplaywright --skill laravel-security",{"tool":56,"command":57},"bunx","bunx skills add 7dvq6yrkgs-stack\u002Fplaywright --skill laravel-security",{"tool":59,"command":60},"pnpm","pnpm dlx skills add 7dvq6yrkgs-stack\u002Fplaywright --skill laravel-security","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Flaravel-security\u002FSKILL.md",true,[64,70,74,78,82,86,90,94,98],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"_AIWF_IMPORT.json","REFERENCE","参考文档",341,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002F_AIWF_IMPORT.json",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},".skillfish.json",247,"https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Flaravel-security\u002F.skillfish.json",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fcoordinates.md",7111,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Fcoordinates.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fcosmology.md",6482,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Fcosmology.md",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Ffits.md",8670,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Ffits.md",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Ftables.md",9385,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Ftables.md",{"path":91,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Ftime.md",9083,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Ftime.md",{"path":95,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Funits.md",3766,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Funits.md",{"path":99,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fwcs_and_other_modules.md",8515,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fastropy\u002Freferences\u002Fwcs_and_other_modules.md",[103,133,143,153,168,183],{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":121,"publishedAt":37},"01M6E3XK4PRPMQHM7Y98FQPTY1","zyte-api-automation","Automate Zyte API tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzyte-api-automation\u002FSKILL.md",[109,110,113,116],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":111,"categoryName":112,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":117,"categoryName":118,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[122,123,124,125,126,127,128,129,130,131,132],"zyte api automation","api","automation","MCP","tasks","search","Tools","first","automate","composio","via",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":141,"publishedAt":37},"01M6E3XFX6QSTR1QR59NFXJTMA","zylvie-automation","Automate Zylvie tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzylvie-automation\u002FSKILL.md",[139,140],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},[142,124,130,125,126,127,128,129,131,132],"zylvie automation",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":151,"publishedAt":37},"01M6E3XCX2GDYYCHN58ZJHT37M","zoominfo-automation","Automate Zoominfo tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoominfo-automation\u002FSKILL.md",[149,150],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},[152,124,127,128,129,130,131,132,126,125],"zoominfo automation",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":161,"publishedAt":37},"01M6E3X9WJ2T73216WQHHTB9BD","zoho_mail-automation","Automate Zoho Mail tasks via Rube MCP (Composio): email sending, folders, labels, and mailbox management. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoho_mail-automation\u002FSKILL.md",[159,160],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},[162,163,164,124,125,126,127,165,128,129,130,166,131,167,132],"mail","zoho mail automation","zoho","email","management","mailbox",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":179,"publishedAt":37},"01M6E3X719W648XZBW1EC6JQ64","zoho_invoice-automation","Automate Zoho Invoice tasks via Rube MCP (Composio): invoices, estimates, expenses, clients, and payment tracking. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoho_invoice-automation\u002FSKILL.md",[174,175,176],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":177,"categoryName":178,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000040","财务",[180,164,124,126,127,128,129,130,181,182,131,132,125],"zoho invoice automation","tracking","payment",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":191,"publishedAt":37},"01M6E3X28JYTC3QTK32AQF7BYB","zoho_inventory-automation","Automate Zoho Inventory tasks via Rube MCP (Composio): items, orders, warehouses, shipments, and stock management. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoho_inventory-automation\u002FSKILL.md",[189,190],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},[124,192,164,193,129,130,128,127,126,125,131,132,194,195,166],"inventory","zoho inventory automation","stock","orders"]