[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HNF7F58RCS1HFAYE545EA":3,"skill-same:01M71HNF7F58RCS1HFAYE545EA":112},{"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":53,"commitSha":54,"skillDirectory":55,"forksCount":14,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M71HNF7F58RCS1HFAYE545EA","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.","datnguyense1104\u002Fhom-nay-an-gi","datnguyense1104","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F124538996?v=4","01M71HMY98E9Y6DA31107PHNRE","Dat","01M71HMYADS82R3VSPJSDW68TX",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\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],"ck:better auth","ck","better auth","auth","OAuth","password","use","sessions","for","email","feature","add","Providers","google","rate","typescript","rbac","passkeys","WebAuthn","authentication","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\nargument-hint: \"[auth-method or feature]\"\nmetadata:\n  author: claudekit\n  version: \"2.0.0\"\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,"metadata":49,"description":7,"argument-hint":52},{"author":50,"version":51},"claudekit","2.0.0","[auth-method or feature]","main","b6e032cdf3f5b40e5203dd2ac38ecf4e6c265961",".claude\u002Fskills\u002Fbetter-auth","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104","2026-05-13 15:56:14",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add datnguyense1104\u002Fhom-nay-an-gi --skill \"ck:better-auth\"",{"tool":65,"command":66},"bunx","bunx skills add datnguyense1104\u002Fhom-nay-an-gi --skill \"ck:better-auth\"",{"tool":68,"command":69},"pnpm","pnpm dlx skills add datnguyense1104\u002Fhom-nay-an-gi --skill \"ck:better-auth\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002FSKILL.md",true,[73,79,83,87,91,97,101,105,108],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fadvanced-features.md","REFERENCE","参考文档",10604,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Fadvanced-features.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fdatabase-integration.md",10517,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Fdatabase-integration.md",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Femail-password-auth.md",8567,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Femail-password-auth.md",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Foauth-providers.md",9293,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Freferences\u002Foauth-providers.md",{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002F.coverage","SCRIPT","脚本",53248,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002F.coverage",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"scripts\u002Fbetter_auth_init.py",16448,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Fbetter_auth_init.py",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002Frequirements.txt",402,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Frequirements.txt",{"path":106,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":107},"scripts\u002Ftests\u002F.coverage","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Ftests\u002F.coverage",{"path":109,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Ftests\u002Ftest_better_auth_init.py",15496,"https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbetter-auth\u002Fscripts\u002Ftests\u002Ftest_better_auth_init.py",[113,141,165,199,223,253],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":117,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":123,"publishedAt":44},"01M71J2265Q3MAW1K2VJ7ZPQ4R","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\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-testing\u002FSKILL.md",[120],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[124,125,126,127,25,128,129,130,131,132,133,134,135,136,137,138,32,139,140,30],"testing","ck:web testing","web","web testing","unit","vitals","browser","a11y","mobile","security","k6","target","gestures","vitest","core","e2e","cross-browser",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":44},"01M71J1YDT008XR78BXVP0P8AJ","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\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[148,149,150,126,25,151,152,153,154,155,156,157,158,159,160,161,162,163,164,34],"ck:web frameworks","frameworks","web frameworks","shared","app","apps","caching","react","router","strategies","server","rsc","next","ssr","rendering","turborepo","framework",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":169,"sourceHtmlUrl":170,"categories":171,"keywords":180,"publishedAt":44},"01M71J1DWTE1QMZHACDGDGE0GC","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\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\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,25,185,186,187,188,189,190,191,192,193,194,195,196,197,32,198],"ui styling","ck:ui styling","styling","ui","css","Tailwind","mode","design","themes","design systems","components","component","layout","responsive","shadcn","color","dark","ui components",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":206,"publishedAt":44},"01M71J1AAZNC9P7PJX93D5K1CR","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\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fthreejs\u002FSKILL.md",[205],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[201,25,207,208,209,210,211,212,213,214,215,216,153,217,218,219,220,221,35,222],"threejs","Animation","3D","processing","Audio","physics","model","actions","webgpu","effects","api","create","shaders","post-processing","vr","integrations",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":227,"categories":228,"keywords":237,"publishedAt":44},"01M71J0X8QYTTPZE6G1VNHXS28","ck:stitch","AI design generation with Google Stitch. Generate UI designs from text prompts, export Tailwind\u002FHTML\u002FDESIGN.md, orchestrate design-to-code pipeline. Use for rapid prototyping, UI generation, design exploration.","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fstitch\u002FSKILL.md",[229,230,233,236],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":231,"categoryName":232,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":234,"categoryName":235,"taxonomyType":178,"taxonomyTypeDesc":179},"01JBSEEDCAT000000000000030","开发工程师",{"categoryNo":176,"categoryName":177,"taxonomyType":178,"taxonomyTypeDesc":179},[238,225,25,239,240,186,241,242,188,243,244,245,246,247,248,249,37,250,251,252],"stitch","orchestrate","exploration","pipeline","prototyping","Bash","code","text","generate","read","write","edit","action","export","google stitch",{"skillNo":254,"name":255,"nameZh":6,"description":256,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":117,"licenseFileUrl":257,"sourceHtmlUrl":258,"categories":259,"keywords":262,"publishedAt":44},"01M71J0SEMVWWJ8QKSSW8435F9","ck:skill-creator","Create or update Claude skills with eval-driven iteration. Use for new skills, skill scripts, references, benchmark optimization, description optimization, eval testing, extending Claude's capabilities.","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdatnguyense1104\u002Fhom-nay-an-gi\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fskill-creator\u002FSKILL.md",[260,261],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":231,"categoryName":232,"taxonomyType":21,"taxonomyTypeDesc":22},[263,264,25,265,32,266,267,124,268,269,30,270,271,272,218,273,274,275,276,277],"skill creator","ck:skill creator","creator","iteration","Optimization","eval","new","extending","capabilities","with","references","name","update","scripts","benchmark"]