[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QFPRSYJSJDNQHZEK4DK296":3,"skill-same:01M6QFPRSYJSJDNQHZEK4DK296":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M6QFPRSYJSJDNQHZEK4DK296","wayfinder-development",null,"Use this skill for Laravel Wayfinder which auto-generates typed functions for Laravel controllers and routes. ALWAYS use this skill when frontend code needs to call backend routes or controller actions. Trigger when: connecting any React\u002FVue\u002FSvelte\u002FInertia frontend to Laravel controllers, routes, building end-to-end features with both frontend and backend, wiring up forms or links to backend endpoints, fixing route-related TypeScript errors, importing from @\u002Factions or @\u002Froutes, or running wayfinder:generate. Use Wayfinder route functions instead of hardcoded URLs. Covers: wayfinder() vite plugin, .url()\u002F.get()\u002F.post()\u002F.form(), query params, route model binding, tree-shaking. Do not use for backend-only task","phhuy38\u002Fworkflow","phhuy38","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F18114441?v=4","01M6QFCHE82VDSV1DG8JCVNWNA","Pham Hoang Huy","01M6QFCHJM4MES80FEMVKDVK4M",0,"MIT","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwayfinder-development\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"wayfinder","wayfinder development","development","get","frontend","wiring","which","errors","URL","inertia","end","svelte","query","up","only","auto","model","laravel","actions","code","2026-11-10 10:12:30",false,"---\nname: wayfinder-development\ndescription: \"Use this skill for Laravel Wayfinder which auto-generates typed functions for Laravel controllers and routes. ALWAYS use this skill when frontend code needs to call backend routes or controller actions. Trigger when: connecting any React\u002FVue\u002FSvelte\u002FInertia frontend to Laravel controllers, routes, building end-to-end features with both frontend and backend, wiring up forms or links to backend endpoints, fixing route-related TypeScript errors, importing from @\u002Factions or @\u002Froutes, or running wayfinder:generate. Use Wayfinder route functions instead of hardcoded URLs. Covers: wayfinder() vite plugin, .url()\u002F.get()\u002F.post()\u002F.form(), query params, route model binding, tree-shaking. Do not use for backend-only task\"\nlicense: MIT\nmetadata:\n  author: laravel\n---\n\n# Wayfinder Development\n\n## Documentation\n\nUse `search-docs` for detailed Wayfinder patterns and documentation.\n\n## Quick Reference\n\n### Generate Routes\n\nRun after route changes if Vite plugin isn't installed:\n```bash\nphp artisan wayfinder:generate --no-interaction\n```\nFor form helpers, use `--with-form` flag:\n```bash\nphp artisan wayfinder:generate --with-form --no-interaction\n```\n\n### Import Patterns\n\n\u003C!-- Controller Action Imports -->\n```typescript\n\u002F\u002F Named imports for tree-shaking (preferred)...\nimport { show, store, update } from '@\u002Factions\u002FApp\u002FHttp\u002FControllers\u002FPostController'\n\n\u002F\u002F Named route imports...\nimport { show as postShow } from '@\u002Froutes\u002Fpost'\n```\n\n### Common Methods\n\n\u003C!-- Wayfinder Methods -->\n```typescript\n\u002F\u002F Get route object...\nshow(1) \u002F\u002F { url: \"\u002Fposts\u002F1\", method: \"get\" }\n\n\u002F\u002F Get URL string...\nshow.url(1) \u002F\u002F \"\u002Fposts\u002F1\"\n\n\u002F\u002F Specific HTTP methods...\nshow.get(1)\nstore.post()\nupdate.patch(1)\ndestroy.delete(1)\n\n\u002F\u002F Form attributes for HTML forms...\nstore.form() \u002F\u002F { action: \"\u002Fposts\", method: \"post\" }\n\n\u002F\u002F Query parameters...\nshow(1, { query: { page: 1 } }) \u002F\u002F \"\u002Fposts\u002F1?page=1\"\n```\n\n## Wayfinder + Inertia\n\nUse Wayfinder with the `\u003CForm>` component:\n\u003C!-- Wayfinder Form (Vue) -->\n```vue\n\u003CForm v-bind=\"store.form()\">\u003Cinput name=\"title\" \u002F>\u003C\u002FForm>\n```\n\n## Verification\n\n1. Run `php artisan wayfinder:generate` to regenerate routes if Vite plugin isn't installed\n2. Check TypeScript imports resolve correctly\n3. Verify route URLs match expected paths\n\n## Common Pitfalls\n\n- Using default imports instead of named imports (breaks tree-shaking)\n- Forgetting to regenerate after route changes\n- Not using type-safe parameter objects for route model binding","# Wayfinder Development\n\n## Documentation\n\nUse `search-docs` for detailed Wayfinder patterns and documentation.\n\n## Quick Reference\n\n### Generate Routes\n\nRun after route changes if Vite plugin isn't installed:\n```bash\nphp artisan wayfinder:generate --no-interaction\n```\nFor form helpers, use `--with-form` flag:\n```bash\nphp artisan wayfinder:generate --with-form --no-interaction\n```\n\n### Import Patterns\n\n\u003C!-- Controller Action Imports -->\n```typescript\n\u002F\u002F Named imports for tree-shaking (preferred)...\nimport { show, store, update } from '@\u002Factions\u002FApp\u002FHttp\u002FControllers\u002FPostController'\n\n\u002F\u002F Named route imports...\nimport { show as postShow } from '@\u002Froutes\u002Fpost'\n```\n\n### Common Methods\n\n\u003C!-- Wayfinder Methods -->\n```typescript\n\u002F\u002F Get route object...\nshow(1) \u002F\u002F { url: \"\u002Fposts\u002F1\", method: \"get\" }\n\n\u002F\u002F Get URL string...\nshow.url(1) \u002F\u002F \"\u002Fposts\u002F1\"\n\n\u002F\u002F Specific HTTP methods...\nshow.get(1)\nstore.post()\nupdate.patch(1)\ndestroy.delete(1)\n\n\u002F\u002F Form attributes for HTML forms...\nstore.form() \u002F\u002F { action: \"\u002Fposts\", method: \"post\" }\n\n\u002F\u002F Query parameters...\nshow(1, { query: { page: 1 } }) \u002F\u002F \"\u002Fposts\u002F1?page=1\"\n```\n\n## Wayfinder + Inertia\n\nUse Wayfinder with the `\u003CForm>` component:\n\u003C!-- Wayfinder Form (Vue) -->\n```vue\n\u003CForm v-bind=\"store.form()\">\u003Cinput name=\"title\" \u002F>\u003C\u002FForm>\n```\n\n## Verification\n\n1. Run `php artisan wayfinder:generate` to regenerate routes if Vite plugin isn't installed\n2. Check TypeScript imports resolve correctly\n3. Verify route URLs match expected paths\n\n## Common Pitfalls\n\n- Using default imports instead of named imports (breaks tree-shaking)\n- Forgetting to regenerate after route changes\n- Not using type-safe parameter objects for route model binding",{"name":5,"license":15,"metadata":49,"description":7},{"author":41},"main","fe13a4254e42a0fa33af0908f0f23953bddcc781",".agents\u002Fskills\u002Fwayfinder-development","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow","https:\u002F\u002Fgithub.com\u002Fphhuy38","2026-05-17 00:59:08",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add phhuy38\u002Fworkflow --skill wayfinder-development",{"tool":62,"command":63},"bunx","bunx skills add phhuy38\u002Fworkflow --skill wayfinder-development",{"tool":65,"command":66},"pnpm","pnpm dlx skills add phhuy38\u002Fworkflow --skill wayfinder-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwayfinder-development\u002FSKILL.md",true,[],[71,77,106,132,156,180],{"skillNo":72,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":76,"publishedAt":44},"01M6QG0WEQASHSC01QDES8374F","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwayfinder-development\u002FSKILL.md",[75],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[24,26,25,28,43,42,41,40,39,38,37,36,27,35,34,33,32,31,30,29],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":87,"publishedAt":44},"01M6QG0HXXX465HV8WNDFPGBWB","tailwindcss-development","Always invoke when the user's message includes 'tailwind' in any form. Also invoke for: building responsive grid layouts (multi-column card grids, product grids), flex\u002Fgrid page structures (dashboards with sidebars, fixed topbars, mobile-toggle navs), styling UI components (cards, tables, navbars, pricing sections, forms, inputs, badges), adding dark mode variants, fixing spacing or typography, and Tailwind v3\u002Fv4 work. The core use case: writing or fixing Tailwind utility classes in HTML templates (Blade, JSX, Vue). Skip for backend PHP logic, database queries, API routes, JavaScript with no HTML\u002FCSS component, CSS file audits, build tool configuration, and vanilla CSS.","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftailwindcss-development\u002FSKILL.md",[83,84],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":85,"categoryName":86,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[88,26,89,90,91,92,93,94,95,96,97,41,98,99,100,101,102,103,104,105],"tailwindcss","tailwindcss development","writing","css","components","component","product","database","api","Tailwind","work","message","database queries","card","utility","mode","variants","invoke",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":115,"publishedAt":44},"01M6QG0C8XRF14SVEMS4XSS99K","pest-testing","Use this skill for Pest PHP testing in Laravel projects only. Trigger whenever any test is being written, edited, fixed, or refactored — including fixing tests that broke after a code change, adding assertions, converting PHPUnit to Pest, adding datasets, and TDD workflows. Always activate when the user asks how to write something in Pest, mentions test files or directories (tests\u002FFeature, tests\u002FUnit, tests\u002FBrowser), or needs browser testing, smoke testing multiple pages for JS errors, or architecture tests. Covers: test()\u002Fit()\u002Fexpect() syntax, datasets, mocking, browser testing (visit\u002Fclick\u002Ffill), smoke testing, arch(), Livewire component tests, RefreshDatabase, and all Pest 4 features. Do not use for factories, seeders, migrations, controllers, models, or non-test PHP code.","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fpest-testing\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[116,117,118,119,120,43,121,122,123,41,124,38,125,126,127,128,129,130,31,131],"testing","pest testing","workflows","change","architecture","browser","browser testing","projects","livewire","files","activate","arch","click","how to","unit","directories",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":44},"01M6QG015XY9KTZ99B2F0XFKTF","laravel-best-practices","Apply this skill whenever writing, reviewing, or refactoring Laravel PHP code. This includes creating or modifying controllers, models, migrations, form requests, policies, jobs, scheduled commands, service classes, and Eloquent queries. Triggers for N+1 and query performance issues, caching strategies, authorization and security patterns, validation, error handling, queue and job configuration, route definitions, and architectural decisions. Also use for Laravel code reviews and refactoring existing Laravel code to follow best practices. Covers any task involving Laravel backend PHP code patterns.","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flaravel-best-practices\u002FSKILL.md",[138],{"categoryNo":85,"categoryName":86,"taxonomyType":21,"taxonomyTypeDesc":22},[140,41,141,90,142,143,43,144,145,146,36,147,148,149,150,151,152,153,154,155],"best practices","laravel best practices","security","performance","issues","refactoring","patterns","route","caching","strategies","commands","error","security patterns","code patterns","reviews","scheduled",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":44},"01M6QFZW99408649R3ZD70SNBG","inertia-vue-development","Develops Inertia.js v3 Vue client-side applications. Activates when creating Vue pages, forms, or navigation; using \u003CLink>, \u003CForm>, useForm, useHttp, setLayoutProps, or router; working with deferred props, prefetching, optimistic updates, instant visits, or polling; or when user mentions Vue with Inertia, Vue pages, Vue forms, or Vue navigation.","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finertia-vue-development\u002FSKILL.md",[162],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[26,164,33,165,166,167,41,168,169,170,171,172,173,174,175,176,177,178,179],"vue","inertia vue development","applications","js","instant","user","router","navigation","forms","pages","v3","link","client","form","with","updates",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":191,"publishedAt":44},"01M6QFZP669V6T0YNTWTTBB6KW","fortify-development","ACTIVATE when the user works on authentication in Laravel. This includes login, registration, password reset, email verification, two-factor authentication (2FA\u002FTOTP\u002FQR codes\u002Frecovery codes), profile updates, password confirmation, or any auth-related routes and controllers. Activate when the user mentions Fortify, auth, authentication, login, register, signup, forgot password, verify email, 2FA, or references app\u002FActions\u002FFortify\u002F, CreateNewUser, UpdateUserProfileInformation, FortifyServiceProvider, config\u002Ffortify.php, or auth guards. Fortify is the frontend-agnostic authentication backend for Laravel that registers all auth routes and controllers. Also activate when building SPA or headless authentication, customizing login redirects, overriding response contracts like LoginResponse, or configuring login throttling. Do NOT activate for Laravel Passport (OAuth2 API tokens), Socialite (OAuth social login), or non-auth Laravel features.","https:\u002F\u002Fgithub.com\u002Fphhuy38\u002Fworkflow\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffortify-development\u002FSKILL.md",[186,189,190],{"categoryNo":187,"categoryName":188,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":85,"categoryName":86,"taxonomyType":21,"taxonomyTypeDesc":22},[26,192,28,193,194,195,42,96,41,196,197,126,198,199,200,201,202,203,204,179],"fortify development","auth","authentication","verification","confirmation","references","social","spa","reset","app","factor","qr","headless"]