[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GST4AHECEEQF87BRW0M4B5":3,"skill-same:01M6GST4AHECEEQF87BRW0M4B5":111},{"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":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M6GST4AHECEEQF87BRW0M4B5","ck:better-auth",null,"Add authentication with Better Auth (TypeScript). Use for email\u002Fpassword, OAuth providers (Google, GitHub), 2FA\u002FMFA, passkeys\u002FWebAuthn, sessions, RBAC, rate limiting.","yosnap\u002Fdevdock","yosnap","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F66257788?v=4","01M6GSRTCX7DZKZ29PPYZNEFQG","Paulo Guachizaca","01M6GSRTH6M80S52Z0FSXKVYK4",6,"MIT","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"auth","ck:better auth","better auth","WebAuthn","with","add","feature","rate limiting","use","password","passkeys","google","Providers","mfa","OAuth","email","authentication","rbac","sessions","typescript","2026-11-10 10:12:30",false,"---\nname: ck:better-auth\ndescription: Add authentication with Better Auth (TypeScript). Use for email\u002Fpassword, OAuth providers (Google, GitHub), 2FA\u002FMFA, passkeys\u002FWebAuthn, sessions, RBAC, rate limiting.\nlicense: MIT\nversion: 2.0.0\nargument-hint: \"[auth-method or feature]\"\n---\n\n# Better Auth Skill\n\nBetter Auth is comprehensive, framework-agnostic authentication\u002Fauthorization framework for TypeScript with built-in email\u002Fpassword, social OAuth, and powerful plugin ecosystem for advanced features.\n\n## When to Use\n\n- Implementing auth in TypeScript\u002FJavaScript applications\n- Adding email\u002Fpassword or social OAuth authentication\n- Setting up 2FA, passkeys, magic links, advanced auth features\n- Building multi-tenant apps with organization support\n- Managing sessions and user lifecycle\n- Working with any framework (Next.js, Nuxt, SvelteKit, Remix, Astro, Hono, Express, etc.)\n\n## Quick Start\n\n### Installation\n\n```bash\nnpm install better-auth\n# or pnpm\u002Fyarn\u002Fbun add better-auth\n```\n\n### Environment Setup\n\nCreate `.env`:\n```env\nBETTER_AUTH_SECRET=\u003Cgenerated-secret-32-chars-min>\nBETTER_AUTH_URL=http:\u002F\u002Flocalhost:3000\n```\n\n### Basic Server Setup\n\nCreate `auth.ts` (root, lib\u002F, utils\u002F, or under src\u002Fapp\u002Fserver\u002F):\n\n```ts\nimport { betterAuth } from \"better-auth\";\n\nexport const auth = betterAuth({\n  database: {\n    \u002F\u002F See references\u002Fdatabase-integration.md\n  },\n  emailAndPassword: {\n    enabled: true,\n    autoSignIn: true\n  },\n  socialProviders: {\n    github: {\n      clientId: process.env.GITHUB_CLIENT_ID!,\n      clientSecret: process.env.GITHUB_CLIENT_SECRET!,\n    }\n  }\n});\n```\n\n### Database Schema\n\n```bash\nnpx @better-auth\u002Fcli generate  # Generate schema\u002Fmigrations\nnpx @better-auth\u002Fcli migrate   # Apply migrations (Kysely only)\n```\n\n### Mount API Handler\n\n**Next.js App Router:**\n```ts\n\u002F\u002F app\u002Fapi\u002Fauth\u002F[...all]\u002Froute.ts\nimport { auth } from \"@\u002Flib\u002Fauth\";\nimport { toNextJsHandler } from \"better-auth\u002Fnext-js\";\n\nexport const { POST, GET } = toNextJsHandler(auth);\n```\n\n**Other frameworks:** See references\u002Femail-password-auth.md#framework-setup\n\n### Client Setup\n\nCreate `auth-client.ts`:\n\n```ts\nimport { createAuthClient } from \"better-auth\u002Fclient\";\n\nexport const authClient = createAuthClient({\n  baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL || \"http:\u002F\u002Flocalhost:3000\"\n});\n```\n\n### Basic Usage\n\n```ts\n\u002F\u002F Sign up\nawait authClient.signUp.email({\n  email: \"user@example.com\",\n  password: \"secure123\",\n  name: \"John Doe\"\n});\n\n\u002F\u002F Sign in\nawait authClient.signIn.email({\n  email: \"user@example.com\",\n  password: \"secure123\"\n});\n\n\u002F\u002F OAuth\nawait authClient.signIn.social({ provider: \"github\" });\n\n\u002F\u002F Session\nconst { data: session } = authClient.useSession(); \u002F\u002F React\u002FVue\u002FSvelte\nconst { data: session } = await authClient.getSession(); \u002F\u002F Vanilla JS\n```\n\n## Feature Selection Matrix\n\n| Feature | Plugin Required | Use Case | Reference |\n|---------|----------------|----------|-----------|\n| Email\u002FPassword | No (built-in) | Basic auth | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md) |\n| OAuth (GitHub, Google, etc.) | No (built-in) | Social login | [oauth-providers.md](.\u002Freferences\u002Foauth-providers.md) |\n| Email Verification | No (built-in) | Verify email addresses | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md#email-verification) |\n| Password Reset | No (built-in) | Forgot password flow | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md#password-reset) |\n| Two-Factor Auth (2FA\u002FTOTP) | Yes (`twoFactor`) | Enhanced security | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#two-factor-authentication) |\n| Passkeys\u002FWebAuthn | Yes (`passkey`) | Passwordless auth | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#passkeys-webauthn) |\n| Magic Link | Yes (`magicLink`) | Email-based login | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#magic-link) |\n| Username Auth | Yes (`username`) | Username login | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md#username-authentication) |\n| Organizations\u002FMulti-tenant | Yes (`organization`) | Team\u002Forg features | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#organizations) |\n| Rate Limiting | No (built-in) | Prevent abuse | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#rate-limiting) |\n| Session Management | No (built-in) | User sessions | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#session-management) |\n\n## Auth Method Selection Guide\n\n**Choose Email\u002FPassword when:**\n- Building standard web app with traditional auth\n- Need full control over user credentials\n- Targeting users who prefer email-based accounts\n\n**Choose OAuth when:**\n- Want quick signup with minimal friction\n- Users already have social accounts\n- Need access to social profile data\n\n**Choose Passkeys when:**\n- Want passwordless experience\n- Targeting modern browsers\u002Fdevices\n- Security is top priority\n\n**Choose Magic Link when:**\n- Want passwordless without WebAuthn complexity\n- Targeting email-first users\n- Need temporary access links\n\n**Combine Multiple Methods when:**\n- Want flexibility for different user preferences\n- Building enterprise apps with various auth requirements\n- Need progressive enhancement (start simple, add more options)\n\n## Core Architecture\n\nBetter Auth uses client-server architecture:\n1. **Server** (`better-auth`): Handles auth logic, database ops, API routes\n2. **Client** (`better-auth\u002Fclient`): Provides hooks\u002Fmethods for frontend\n3. **Plugins**: Extend both server\u002Fclient functionality\n\n## Implementation Checklist\n\n- [ ] Install `better-auth` package\n- [ ] Set environment variables (SECRET, URL)\n- [ ] Create auth server instance with database config\n- [ ] Run schema migration (`npx @better-auth\u002Fcli generate`)\n- [ ] Mount API handler in framework\n- [ ] Create client instance\n- [ ] Implement sign-up\u002Fsign-in UI\n- [ ] Add session management to components\n- [ ] Set up protected routes\u002Fmiddleware\n- [ ] Add plugins as needed (regenerate schema after)\n- [ ] Test complete auth flow\n- [ ] Configure email sending (verification\u002Freset)\n- [ ] Enable rate limiting for production\n- [ ] Set up error handling\n\n## Reference Documentation\n\n### Core Authentication\n- [Email\u002FPassword Authentication](.\u002Freferences\u002Femail-password-auth.md) - Email\u002Fpassword setup, verification, password reset, username auth\n- [OAuth Providers](.\u002Freferences\u002Foauth-providers.md) - Social login setup, provider configuration, token management\n- [Database Integration](.\u002Freferences\u002Fdatabase-integration.md) - Database adapters, schema setup, migrations\n\n### Advanced Features\n- [Advanced Features](.\u002Freferences\u002Fadvanced-features.md) - 2FA\u002FMFA, passkeys, magic links, organizations, rate limiting, session management\n\n## Scripts\n\n- `scripts\u002Fbetter_auth_init.py` - Initialize Better Auth configuration with interactive setup\n\n## Resources\n\n- Docs: https:\u002F\u002Fwww.better-auth.com\u002Fdocs\n- GitHub: https:\u002F\u002Fgithub.com\u002Fbetter-auth\u002Fbetter-auth\n- Plugins: https:\u002F\u002Fwww.better-auth.com\u002Fdocs\u002Fplugins\n- Examples: https:\u002F\u002Fwww.better-auth.com\u002Fdocs\u002Fexamples\n","# Better Auth Skill\n\nBetter Auth is comprehensive, framework-agnostic authentication\u002Fauthorization framework for TypeScript with built-in email\u002Fpassword, social OAuth, and powerful plugin ecosystem for advanced features.\n\n## When to Use\n\n- Implementing auth in TypeScript\u002FJavaScript applications\n- Adding email\u002Fpassword or social OAuth authentication\n- Setting up 2FA, passkeys, magic links, advanced auth features\n- Building multi-tenant apps with organization support\n- Managing sessions and user lifecycle\n- Working with any framework (Next.js, Nuxt, SvelteKit, Remix, Astro, Hono, Express, etc.)\n\n## Quick Start\n\n### Installation\n\n```bash\nnpm install better-auth\n# or pnpm\u002Fyarn\u002Fbun add better-auth\n```\n\n### Environment Setup\n\nCreate `.env`:\n```env\nBETTER_AUTH_SECRET=\u003Cgenerated-secret-32-chars-min>\nBETTER_AUTH_URL=http:\u002F\u002Flocalhost:3000\n```\n\n### Basic Server Setup\n\nCreate `auth.ts` (root, lib\u002F, utils\u002F, or under src\u002Fapp\u002Fserver\u002F):\n\n```ts\nimport { betterAuth } from \"better-auth\";\n\nexport const auth = betterAuth({\n  database: {\n    \u002F\u002F See references\u002Fdatabase-integration.md\n  },\n  emailAndPassword: {\n    enabled: true,\n    autoSignIn: true\n  },\n  socialProviders: {\n    github: {\n      clientId: process.env.GITHUB_CLIENT_ID!,\n      clientSecret: process.env.GITHUB_CLIENT_SECRET!,\n    }\n  }\n});\n```\n\n### Database Schema\n\n```bash\nnpx @better-auth\u002Fcli generate  # Generate schema\u002Fmigrations\nnpx @better-auth\u002Fcli migrate   # Apply migrations (Kysely only)\n```\n\n### Mount API Handler\n\n**Next.js App Router:**\n```ts\n\u002F\u002F app\u002Fapi\u002Fauth\u002F[...all]\u002Froute.ts\nimport { auth } from \"@\u002Flib\u002Fauth\";\nimport { toNextJsHandler } from \"better-auth\u002Fnext-js\";\n\nexport const { POST, GET } = toNextJsHandler(auth);\n```\n\n**Other frameworks:** See references\u002Femail-password-auth.md#framework-setup\n\n### Client Setup\n\nCreate `auth-client.ts`:\n\n```ts\nimport { createAuthClient } from \"better-auth\u002Fclient\";\n\nexport const authClient = createAuthClient({\n  baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL || \"http:\u002F\u002Flocalhost:3000\"\n});\n```\n\n### Basic Usage\n\n```ts\n\u002F\u002F Sign up\nawait authClient.signUp.email({\n  email: \"user@example.com\",\n  password: \"secure123\",\n  name: \"John Doe\"\n});\n\n\u002F\u002F Sign in\nawait authClient.signIn.email({\n  email: \"user@example.com\",\n  password: \"secure123\"\n});\n\n\u002F\u002F OAuth\nawait authClient.signIn.social({ provider: \"github\" });\n\n\u002F\u002F Session\nconst { data: session } = authClient.useSession(); \u002F\u002F React\u002FVue\u002FSvelte\nconst { data: session } = await authClient.getSession(); \u002F\u002F Vanilla JS\n```\n\n## Feature Selection Matrix\n\n| Feature | Plugin Required | Use Case | Reference |\n|---------|----------------|----------|-----------|\n| Email\u002FPassword | No (built-in) | Basic auth | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md) |\n| OAuth (GitHub, Google, etc.) | No (built-in) | Social login | [oauth-providers.md](.\u002Freferences\u002Foauth-providers.md) |\n| Email Verification | No (built-in) | Verify email addresses | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md#email-verification) |\n| Password Reset | No (built-in) | Forgot password flow | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md#password-reset) |\n| Two-Factor Auth (2FA\u002FTOTP) | Yes (`twoFactor`) | Enhanced security | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#two-factor-authentication) |\n| Passkeys\u002FWebAuthn | Yes (`passkey`) | Passwordless auth | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#passkeys-webauthn) |\n| Magic Link | Yes (`magicLink`) | Email-based login | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#magic-link) |\n| Username Auth | Yes (`username`) | Username login | [email-password-auth.md](.\u002Freferences\u002Femail-password-auth.md#username-authentication) |\n| Organizations\u002FMulti-tenant | Yes (`organization`) | Team\u002Forg features | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#organizations) |\n| Rate Limiting | No (built-in) | Prevent abuse | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#rate-limiting) |\n| Session Management | No (built-in) | User sessions | [advanced-features.md](.\u002Freferences\u002Fadvanced-features.md#session-management) |\n\n## Auth Method Selection Guide\n\n**Choose Email\u002FPassword when:**\n- Building standard web app with traditional auth\n- Need full control over user credentials\n- Targeting users who prefer email-based accounts\n\n**Choose OAuth when:**\n- Want quick signup with minimal friction\n- Users already have social accounts\n- Need access to social profile data\n\n**Choose Passkeys when:**\n- Want passwordless experience\n- Targeting modern browsers\u002Fdevices\n- Security is top priority\n\n**Choose Magic Link when:**\n- Want passwordless without WebAuthn complexity\n- Targeting email-first users\n- Need temporary access links\n\n**Combine Multiple Methods when:**\n- Want flexibility for different user preferences\n- Building enterprise apps with various auth requirements\n- Need progressive enhancement (start simple, add more options)\n\n## Core Architecture\n\nBetter Auth uses client-server architecture:\n1. **Server** (`better-auth`): Handles auth logic, database ops, API routes\n2. **Client** (`better-auth\u002Fclient`): Provides hooks\u002Fmethods for frontend\n3. **Plugins**: Extend both server\u002Fclient functionality\n\n## Implementation Checklist\n\n- [ ] Install `better-auth` package\n- [ ] Set environment variables (SECRET, URL)\n- [ ] Create auth server instance with database config\n- [ ] Run schema migration (`npx @better-auth\u002Fcli generate`)\n- [ ] Mount API handler in framework\n- [ ] Create client instance\n- [ ] Implement sign-up\u002Fsign-in UI\n- [ ] Add session management to components\n- [ ] Set up protected routes\u002Fmiddleware\n- [ ] Add plugins as needed (regenerate schema after)\n- [ ] Test complete auth flow\n- [ ] Configure email sending (verification\u002Freset)\n- [ ] Enable rate limiting for production\n- [ ] Set up error handling\n\n## Reference Documentation\n\n### Core Authentication\n- [Email\u002FPassword Authentication](.\u002Freferences\u002Femail-password-auth.md) - Email\u002Fpassword setup, verification, password reset, username auth\n- [OAuth Providers](.\u002Freferences\u002Foauth-providers.md) - Social login setup, provider configuration, token management\n- [Database Integration](.\u002Freferences\u002Fdatabase-integration.md) - Database adapters, schema setup, migrations\n\n### Advanced Features\n- [Advanced Features](.\u002Freferences\u002Fadvanced-features.md) - 2FA\u002FMFA, passkeys, magic links, organizations, rate limiting, session management\n\n## Scripts\n\n- `scripts\u002Fbetter_auth_init.py` - Initialize Better Auth configuration with interactive setup\n\n## Resources\n\n- Docs: https:\u002F\u002Fwww.better-auth.com\u002Fdocs\n- GitHub: https:\u002F\u002Fgithub.com\u002Fbetter-auth\u002Fbetter-auth\n- Plugins: https:\u002F\u002Fwww.better-auth.com\u002Fdocs\u002Fplugins\n- Examples: https:\u002F\u002Fwww.better-auth.com\u002Fdocs\u002Fexamples\n",{"name":5,"license":15,"version":49,"description":7,"argument-hint":50},"2.0.0","[auth-method or feature]","main","564d425e7432c375e7fe7e0de9fc079d03078178",".claude\u002Fskills\u002Fbetter-auth",4,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock","https:\u002F\u002Fgithub.com\u002Fyosnap","2026-05-20 17:03:32",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add yosnap\u002Fdevdock --skill \"ck:better-auth\"",{"tool":64,"command":65},"bunx","bunx skills add yosnap\u002Fdevdock --skill \"ck:better-auth\"",{"tool":67,"command":68},"pnpm","pnpm dlx skills add yosnap\u002Fdevdock --skill \"ck:better-auth\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002FSKILL.md",true,[72,78,82,86,90,96,100,104,107],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fadvanced-features.md","REFERENCE","参考文档",10604,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Fadvanced-features.md",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fdatabase-integration.md",10517,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Fdatabase-integration.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Femail-password-auth.md",8567,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Femail-password-auth.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Foauth-providers.md",9293,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Foauth-providers.md",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002F.coverage","SCRIPT","脚本",53248,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002F.coverage",{"path":97,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Fbetter_auth_init.py",16448,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Fbetter_auth_init.py",{"path":101,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002Frequirements.txt",402,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Frequirements.txt",{"path":105,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":106},"scripts\u002Ftests\u002F.coverage","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Ftests\u002F.coverage",{"path":108,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Ftests\u002Ftest_better_auth_init.py",15496,"https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Ftests\u002Ftest_better_auth_init.py",[112,142,166,200,224,245],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":122,"publishedAt":44},"01M6GTDPSDZFE0XCFKBK39BT2J","ck:web-testing","Web testing with Playwright, Vitest, k6. E2E\u002Funit\u002Fintegration\u002Fload\u002Fsecurity\u002Fvisual\u002Fa11y testing. Use for test automation, flakiness, Core Web Vitals, mobile gestures, cross-browser.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-testing\u002FSKILL.md",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[123,124,125,126,127,128,129,130,131,132,133,134,32,135,136,137,138,139,140,141],"testing","web","web testing","ck:web testing","security","gestures","automation","core","browser","k6","e2e","vitest","mobile","visual","type","web vitals","unit","load","cross-browser",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":44},"01M6GTDJ0QR9Z531TG8C3B2GN3","ck:web-frameworks","Build with Next.js (App Router, RSC, SSR, ISR), Turborepo monorepos. Use for React apps, server rendering, build optimization, caching strategies, shared dependencies.","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[124,149,150,151,152,153,154,155,156,157,32,158,159,160,161,162,30,163,164,165],"web frameworks","frameworks","ck:web frameworks","react","ssr","framework","server","turborepo","Optimization","router","next","caching","strategies","shared","app","apps","rendering",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":180,"publishedAt":44},"01M6GTCPB9F326DAZ9RRXEB9J9","ck:ui-styling","Style UIs with shadcn\u002Fui components (Radix UI + Tailwind CSS). Use for accessible components, themes, dark mode, responsive layouts, design systems, color customization.","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002FSKILL.md",[172,175],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":176,"categoryName":177,"taxonomyType":178,"taxonomyTypeDesc":179},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[181,182,183,184,185,186,187,188,189,190,191,192,32,193,194,195,196,197,198,199],"ui styling","ui","styling","ck:ui styling","design","css","components","component","design systems","shadcn","Tailwind","radix ui","responsive","layout","dark mode","ui components","themes","color","mode",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":207,"publishedAt":44},"01M6GTCF8WB87S84M4EQZVCRDG","ck:threejs","Build 3D web apps with Three.js (WebGL\u002FWebGPU). 556 searchable examples, 60 API classes, 20 use cases. Actions: create 3D scene, load model, add animation, implement physics, build VR\u002FXR. Topics: GLTF loader, PBR materials, particle effects, shadows, post-processing, compute shaders, TSL. Integrations: WebGPU, physics engines, spatial audio.","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fthreejs\u002FSKILL.md",[206],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[208,202,209,210,211,212,213,214,215,216,217,218,219,220,30,164,29,221,222,223],"threejs","webgpu","create","shaders","actions","api","Animation","3D","Audio","model","integrations","three","physics","processing","post-processing","vr",{"skillNo":225,"name":226,"nameZh":6,"description":227,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":228,"categories":229,"keywords":230,"publishedAt":44},"01M6GTBBA0E5D1CVZZTFG4HPV3","ck:sequential-thinking","Apply step-by-step analysis for complex problems with revision capability. Use for multi-step reasoning, hypothesis verification, adaptive planning, problem decomposition, course correction.","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",[],[231,232,233,234,235,236,237,238,239,32,240,241,242,28,243,244],"sequential thinking","thinking","ck:sequential thinking","planning","reasoning","verification","hypothesis","analysis","analyze","decomposition","problem","multi","course","revision",{"skillNo":246,"name":247,"nameZh":6,"description":248,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":249,"categories":250,"keywords":254,"publishedAt":44},"01M6GTB26Y169PZFEX59Q9KM7F","ck:research","Research technical solutions, analyze architectures, gather requirements thoroughly. Use for technology evaluation, best practices research, solution design, scalability\u002Fsecurity\u002Fmaintainability analysis.","https:\u002F\u002Fgithub.com\u002Fyosnap\u002Fdevdock\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fresearch\u002FSKILL.md",[251],{"categoryNo":252,"categoryName":253,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[255,247,185,127,256,257,238,239,258,32,259,260,261,262,263],"research","best practices","Evaluation","technical","scalability","technology","requirements","maintainability","architectures"]