[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CET3A5818B9JNRTMDZPV0H":3,"skill-same:01M6CET3A5818B9JNRTMDZPV0H":458},{"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":28,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":52,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6CET3A5818B9JNRTMDZPV0H","ui-styling",null,"Style UIs with shadcn\u002Fui components (Radix UI + Tailwind CSS). Use for accessible components, themes, dark mode, responsive layouts, design systems, color customization.","hoanghd218\u002Fhuman-interior-a-Ninh","hoanghd218","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F49197448?v=4","01M6CEG06HBF8MQKQX19CR32ME","Hoang218","01M6CEG0AEJJK8ZENKVMYGYGA3",0,"MIT","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40],"ui styling","ui","styling","design","css","components","design systems","shadcn","Tailwind","customization","radix ui","use","2026-11-10 10:12:30",false,"---\nname: ui-styling\ndescription: Style UIs with shadcn\u002Fui components (Radix UI + Tailwind CSS). Use for accessible components, themes, dark mode, responsive layouts, design systems, color customization.\nlicense: MIT\nversion: 1.0.0\n---\n\n# UI Styling Skill\n\nComprehensive skill for creating beautiful, accessible user interfaces combining shadcn\u002Fui components, Tailwind CSS utility styling, and canvas-based visual design systems.\n\n## Reference\n\n- shadcn\u002Fui: https:\u002F\u002Fui.shadcn.com\u002Fllms.txt\n- Tailwind CSS: https:\u002F\u002Ftailwindcss.com\u002Fdocs\n\n## When to Use This Skill\n\nUse when:\n- Building UI with React-based frameworks (Next.js, Vite, Remix, Astro)\n- Implementing accessible components (dialogs, forms, tables, navigation)\n- Styling with utility-first CSS approach\n- Creating responsive, mobile-first layouts\n- Implementing dark mode and theme customization\n- Building design systems with consistent tokens\n- Generating visual designs, posters, or brand materials\n- Rapid prototyping with immediate visual feedback\n- Adding complex UI patterns (data tables, charts, command palettes)\n\n## Core Stack\n\n### Component Layer: shadcn\u002Fui\n- Pre-built accessible components via Radix UI primitives\n- Copy-paste distribution model (components live in your codebase)\n- TypeScript-first with full type safety\n- Composable primitives for complex UIs\n- CLI-based installation and management\n\n### Styling Layer: Tailwind CSS\n- Utility-first CSS framework\n- Build-time processing with zero runtime overhead\n- Mobile-first responsive design\n- Consistent design tokens (colors, spacing, typography)\n- Automatic dead code elimination\n\n### Visual Design Layer: Canvas\n- Museum-quality visual compositions\n- Philosophy-driven design approach\n- Sophisticated visual communication\n- Minimal text, maximum visual impact\n- Systematic patterns and refined aesthetics\n\n## Quick Start\n\n### Component + Styling Setup\n\n**Install shadcn\u002Fui with Tailwind:**\n```bash\nnpx shadcn@latest init\n```\n\nCLI prompts for framework, TypeScript, paths, and theme preferences. This configures both shadcn\u002Fui and Tailwind CSS.\n\n**Add components:**\n```bash\nnpx shadcn@latest add button card dialog form\n```\n\n**Use components with utility styling:**\n```tsx\nimport { Button } from \"@\u002Fcomponents\u002Fui\u002Fbutton\"\nimport { Card, CardHeader, CardTitle, CardContent } from \"@\u002Fcomponents\u002Fui\u002Fcard\"\n\nexport function Dashboard() {\n  return (\n    \u003Cdiv className=\"container mx-auto p-6 grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n      \u003CCard className=\"hover:shadow-lg transition-shadow\">\n        \u003CCardHeader>\n          \u003CCardTitle className=\"text-2xl font-bold\">Analytics\u003C\u002FCardTitle>\n        \u003C\u002FCardHeader>\n        \u003CCardContent className=\"space-y-4\">\n          \u003Cp className=\"text-muted-foreground\">View your metrics\u003C\u002Fp>\n          \u003CButton variant=\"default\" className=\"w-full\">\n            View Details\n          \u003C\u002FButton>\n        \u003C\u002FCardContent>\n      \u003C\u002FCard>\n    \u003C\u002Fdiv>\n  )\n}\n```\n\n### Alternative: Tailwind-Only Setup\n\n**Vite projects:**\n```bash\nnpm install -D tailwindcss @tailwindcss\u002Fvite\n```\n\n```javascript\n\u002F\u002F vite.config.ts\nimport tailwindcss from '@tailwindcss\u002Fvite'\nexport default { plugins: [tailwindcss()] }\n```\n\n```css\n\u002F* src\u002Findex.css *\u002F\n@import \"tailwindcss\";\n```\n\n## Component Library Guide\n\n**Comprehensive component catalog with usage patterns, installation, and composition examples.**\n\nSee: `references\u002Fshadcn-components.md`\n\nCovers:\n- Form & input components (Button, Input, Select, Checkbox, Date Picker, Form validation)\n- Layout & navigation (Card, Tabs, Accordion, Navigation Menu)\n- Overlays & dialogs (Dialog, Drawer, Popover, Toast, Command)\n- Feedback & status (Alert, Progress, Skeleton)\n- Display components (Table, Data Table, Avatar, Badge)\n\n## Theme & Customization\n\n**Theme configuration, CSS variables, dark mode implementation, and component customization.**\n\nSee: `references\u002Fshadcn-theming.md`\n\nCovers:\n- Dark mode setup with next-themes\n- CSS variable system\n- Color customization and palettes\n- Component variant customization\n- Theme toggle implementation\n\n## Accessibility Patterns\n\n**ARIA patterns, keyboard navigation, screen reader support, and accessible component usage.**\n\nSee: `references\u002Fshadcn-accessibility.md`\n\nCovers:\n- Radix UI accessibility features\n- Keyboard navigation patterns\n- Focus management\n- Screen reader announcements\n- Form validation accessibility\n\n## Tailwind Utilities\n\n**Core utility classes for layout, spacing, typography, colors, borders, and shadows.**\n\nSee: `references\u002Ftailwind-utilities.md`\n\nCovers:\n- Layout utilities (Flexbox, Grid, positioning)\n- Spacing system (padding, margin, gap)\n- Typography (font sizes, weights, alignment, line height)\n- Colors and backgrounds\n- Borders and shadows\n- Arbitrary values for custom styling\n\n## Responsive Design\n\n**Mobile-first breakpoints, responsive utilities, and adaptive layouts.**\n\nSee: `references\u002Ftailwind-responsive.md`\n\nCovers:\n- Mobile-first approach\n- Breakpoint system (sm, md, lg, xl, 2xl)\n- Responsive utility patterns\n- Container queries\n- Max-width queries\n- Custom breakpoints\n\n## Tailwind Customization\n\n**Config file structure, custom utilities, plugins, and theme extensions.**\n\nSee: `references\u002Ftailwind-customization.md`\n\nCovers:\n- @theme directive for custom tokens\n- Custom colors and fonts\n- Spacing and breakpoint extensions\n- Custom utility creation\n- Custom variants\n- Layer organization (@layer base, components, utilities)\n- Apply directive for component extraction\n\n## Visual Design System\n\n**Canvas-based design philosophy, visual communication principles, and sophisticated compositions.**\n\nSee: `references\u002Fcanvas-design-system.md`\n\nCovers:\n- Design philosophy approach\n- Visual communication over text\n- Systematic patterns and composition\n- Color, form, and spatial design\n- Minimal text integration\n- Museum-quality execution\n- Multi-page design systems\n\n## Utility Scripts\n\n**Python automation for component installation and configuration generation.**\n\n### shadcn_add.py\nAdd shadcn\u002Fui components with dependency handling:\n```bash\npython scripts\u002Fshadcn_add.py button card dialog\n```\n\n### tailwind_config_gen.py\nGenerate tailwind.config.js with custom theme:\n```bash\npython scripts\u002Ftailwind_config_gen.py --colors brand:blue --fonts display:Inter\n```\n\n## Best Practices\n\n1. **Component Composition**: Build complex UIs from simple, composable primitives\n2. **Utility-First Styling**: Use Tailwind classes directly; extract components only for true repetition\n3. **Mobile-First Responsive**: Start with mobile styles, layer responsive variants\n4. **Accessibility-First**: Leverage Radix UI primitives, add focus states, use semantic HTML\n5. **Design Tokens**: Use consistent spacing scale, color palettes, typography system\n6. **Dark Mode Consistency**: Apply dark variants to all themed elements\n7. **Performance**: Leverage automatic CSS purging, avoid dynamic class names\n8. **TypeScript**: Use full type safety for better DX\n9. **Visual Hierarchy**: Let composition guide attention, use spacing and color intentionally\n10. **Expert Craftsmanship**: Every detail matters - treat UI as a craft\n\n## Reference Navigation\n\n**Component Library**\n- `references\u002Fshadcn-components.md` - Complete component catalog\n- `references\u002Fshadcn-theming.md` - Theming and customization\n- `references\u002Fshadcn-accessibility.md` - Accessibility patterns\n\n**Styling System**\n- `references\u002Ftailwind-utilities.md` - Core utility classes\n- `references\u002Ftailwind-responsive.md` - Responsive design\n- `references\u002Ftailwind-customization.md` - Configuration and extensions\n\n**Visual Design**\n- `references\u002Fcanvas-design-system.md` - Design philosophy and canvas workflows\n\n**Automation**\n- `scripts\u002Fshadcn_add.py` - Component installation\n- `scripts\u002Ftailwind_config_gen.py` - Config generation\n\n## Common Patterns\n\n**Form with validation:**\n```tsx\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform\u002Fresolvers\u002Fzod\"\nimport * as z from \"zod\"\nimport { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from \"@\u002Fcomponents\u002Fui\u002Fform\"\nimport { Input } from \"@\u002Fcomponents\u002Fui\u002Finput\"\nimport { Button } from \"@\u002Fcomponents\u002Fui\u002Fbutton\"\n\nconst schema = z.object({\n  email: z.string().email(),\n  password: z.string().min(8)\n})\n\nexport function LoginForm() {\n  const form = useForm({\n    resolver: zodResolver(schema),\n    defaultValues: { email: \"\", password: \"\" }\n  })\n\n  return (\n    \u003CForm {...form}>\n      \u003Cform onSubmit={form.handleSubmit(console.log)} className=\"space-y-6\">\n        \u003CFormField control={form.control} name=\"email\" render={({ field }) => (\n          \u003CFormItem>\n            \u003CFormLabel>Email\u003C\u002FFormLabel>\n            \u003CFormControl>\n              \u003CInput type=\"email\" {...field} \u002F>\n            \u003C\u002FFormControl>\n            \u003CFormMessage \u002F>\n          \u003C\u002FFormItem>\n        )} \u002F>\n        \u003CButton type=\"submit\" className=\"w-full\">Sign In\u003C\u002FButton>\n      \u003C\u002Fform>\n    \u003C\u002FForm>\n  )\n}\n```\n\n**Responsive layout with dark mode:**\n```tsx\n\u003Cdiv className=\"min-h-screen bg-white dark:bg-gray-900\">\n  \u003Cdiv className=\"container mx-auto px-4 py-8\">\n    \u003Cdiv className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n      \u003CCard className=\"bg-white dark:bg-gray-800 border-gray-200 dark:border-gray-700\">\n        \u003CCardContent className=\"p-6\">\n          \u003Ch3 className=\"text-xl font-semibold text-gray-900 dark:text-white\">\n            Content\n          \u003C\u002Fh3>\n        \u003C\u002FCardContent>\n      \u003C\u002FCard>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n```\n\n## Resources\n\n- shadcn\u002Fui Docs: https:\u002F\u002Fui.shadcn.com\n- Tailwind CSS Docs: https:\u002F\u002Ftailwindcss.com\n- Radix UI: https:\u002F\u002Fradix-ui.com\n- Tailwind UI: https:\u002F\u002Ftailwindui.com\n- Headless UI: https:\u002F\u002Fheadlessui.com\n- v0 (AI UI Generator): https:\u002F\u002Fv0.dev\n","# UI Styling Skill\n\nComprehensive skill for creating beautiful, accessible user interfaces combining shadcn\u002Fui components, Tailwind CSS utility styling, and canvas-based visual design systems.\n\n## Reference\n\n- shadcn\u002Fui: https:\u002F\u002Fui.shadcn.com\u002Fllms.txt\n- Tailwind CSS: https:\u002F\u002Ftailwindcss.com\u002Fdocs\n\n## When to Use This Skill\n\nUse when:\n- Building UI with React-based frameworks (Next.js, Vite, Remix, Astro)\n- Implementing accessible components (dialogs, forms, tables, navigation)\n- Styling with utility-first CSS approach\n- Creating responsive, mobile-first layouts\n- Implementing dark mode and theme customization\n- Building design systems with consistent tokens\n- Generating visual designs, posters, or brand materials\n- Rapid prototyping with immediate visual feedback\n- Adding complex UI patterns (data tables, charts, command palettes)\n\n## Core Stack\n\n### Component Layer: shadcn\u002Fui\n- Pre-built accessible components via Radix UI primitives\n- Copy-paste distribution model (components live in your codebase)\n- TypeScript-first with full type safety\n- Composable primitives for complex UIs\n- CLI-based installation and management\n\n### Styling Layer: Tailwind CSS\n- Utility-first CSS framework\n- Build-time processing with zero runtime overhead\n- Mobile-first responsive design\n- Consistent design tokens (colors, spacing, typography)\n- Automatic dead code elimination\n\n### Visual Design Layer: Canvas\n- Museum-quality visual compositions\n- Philosophy-driven design approach\n- Sophisticated visual communication\n- Minimal text, maximum visual impact\n- Systematic patterns and refined aesthetics\n\n## Quick Start\n\n### Component + Styling Setup\n\n**Install shadcn\u002Fui with Tailwind:**\n```bash\nnpx shadcn@latest init\n```\n\nCLI prompts for framework, TypeScript, paths, and theme preferences. This configures both shadcn\u002Fui and Tailwind CSS.\n\n**Add components:**\n```bash\nnpx shadcn@latest add button card dialog form\n```\n\n**Use components with utility styling:**\n```tsx\nimport { Button } from \"@\u002Fcomponents\u002Fui\u002Fbutton\"\nimport { Card, CardHeader, CardTitle, CardContent } from \"@\u002Fcomponents\u002Fui\u002Fcard\"\n\nexport function Dashboard() {\n  return (\n    \u003Cdiv className=\"container mx-auto p-6 grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n      \u003CCard className=\"hover:shadow-lg transition-shadow\">\n        \u003CCardHeader>\n          \u003CCardTitle className=\"text-2xl font-bold\">Analytics\u003C\u002FCardTitle>\n        \u003C\u002FCardHeader>\n        \u003CCardContent className=\"space-y-4\">\n          \u003Cp className=\"text-muted-foreground\">View your metrics\u003C\u002Fp>\n          \u003CButton variant=\"default\" className=\"w-full\">\n            View Details\n          \u003C\u002FButton>\n        \u003C\u002FCardContent>\n      \u003C\u002FCard>\n    \u003C\u002Fdiv>\n  )\n}\n```\n\n### Alternative: Tailwind-Only Setup\n\n**Vite projects:**\n```bash\nnpm install -D tailwindcss @tailwindcss\u002Fvite\n```\n\n```javascript\n\u002F\u002F vite.config.ts\nimport tailwindcss from '@tailwindcss\u002Fvite'\nexport default { plugins: [tailwindcss()] }\n```\n\n```css\n\u002F* src\u002Findex.css *\u002F\n@import \"tailwindcss\";\n```\n\n## Component Library Guide\n\n**Comprehensive component catalog with usage patterns, installation, and composition examples.**\n\nSee: `references\u002Fshadcn-components.md`\n\nCovers:\n- Form & input components (Button, Input, Select, Checkbox, Date Picker, Form validation)\n- Layout & navigation (Card, Tabs, Accordion, Navigation Menu)\n- Overlays & dialogs (Dialog, Drawer, Popover, Toast, Command)\n- Feedback & status (Alert, Progress, Skeleton)\n- Display components (Table, Data Table, Avatar, Badge)\n\n## Theme & Customization\n\n**Theme configuration, CSS variables, dark mode implementation, and component customization.**\n\nSee: `references\u002Fshadcn-theming.md`\n\nCovers:\n- Dark mode setup with next-themes\n- CSS variable system\n- Color customization and palettes\n- Component variant customization\n- Theme toggle implementation\n\n## Accessibility Patterns\n\n**ARIA patterns, keyboard navigation, screen reader support, and accessible component usage.**\n\nSee: `references\u002Fshadcn-accessibility.md`\n\nCovers:\n- Radix UI accessibility features\n- Keyboard navigation patterns\n- Focus management\n- Screen reader announcements\n- Form validation accessibility\n\n## Tailwind Utilities\n\n**Core utility classes for layout, spacing, typography, colors, borders, and shadows.**\n\nSee: `references\u002Ftailwind-utilities.md`\n\nCovers:\n- Layout utilities (Flexbox, Grid, positioning)\n- Spacing system (padding, margin, gap)\n- Typography (font sizes, weights, alignment, line height)\n- Colors and backgrounds\n- Borders and shadows\n- Arbitrary values for custom styling\n\n## Responsive Design\n\n**Mobile-first breakpoints, responsive utilities, and adaptive layouts.**\n\nSee: `references\u002Ftailwind-responsive.md`\n\nCovers:\n- Mobile-first approach\n- Breakpoint system (sm, md, lg, xl, 2xl)\n- Responsive utility patterns\n- Container queries\n- Max-width queries\n- Custom breakpoints\n\n## Tailwind Customization\n\n**Config file structure, custom utilities, plugins, and theme extensions.**\n\nSee: `references\u002Ftailwind-customization.md`\n\nCovers:\n- @theme directive for custom tokens\n- Custom colors and fonts\n- Spacing and breakpoint extensions\n- Custom utility creation\n- Custom variants\n- Layer organization (@layer base, components, utilities)\n- Apply directive for component extraction\n\n## Visual Design System\n\n**Canvas-based design philosophy, visual communication principles, and sophisticated compositions.**\n\nSee: `references\u002Fcanvas-design-system.md`\n\nCovers:\n- Design philosophy approach\n- Visual communication over text\n- Systematic patterns and composition\n- Color, form, and spatial design\n- Minimal text integration\n- Museum-quality execution\n- Multi-page design systems\n\n## Utility Scripts\n\n**Python automation for component installation and configuration generation.**\n\n### shadcn_add.py\nAdd shadcn\u002Fui components with dependency handling:\n```bash\npython scripts\u002Fshadcn_add.py button card dialog\n```\n\n### tailwind_config_gen.py\nGenerate tailwind.config.js with custom theme:\n```bash\npython scripts\u002Ftailwind_config_gen.py --colors brand:blue --fonts display:Inter\n```\n\n## Best Practices\n\n1. **Component Composition**: Build complex UIs from simple, composable primitives\n2. **Utility-First Styling**: Use Tailwind classes directly; extract components only for true repetition\n3. **Mobile-First Responsive**: Start with mobile styles, layer responsive variants\n4. **Accessibility-First**: Leverage Radix UI primitives, add focus states, use semantic HTML\n5. **Design Tokens**: Use consistent spacing scale, color palettes, typography system\n6. **Dark Mode Consistency**: Apply dark variants to all themed elements\n7. **Performance**: Leverage automatic CSS purging, avoid dynamic class names\n8. **TypeScript**: Use full type safety for better DX\n9. **Visual Hierarchy**: Let composition guide attention, use spacing and color intentionally\n10. **Expert Craftsmanship**: Every detail matters - treat UI as a craft\n\n## Reference Navigation\n\n**Component Library**\n- `references\u002Fshadcn-components.md` - Complete component catalog\n- `references\u002Fshadcn-theming.md` - Theming and customization\n- `references\u002Fshadcn-accessibility.md` - Accessibility patterns\n\n**Styling System**\n- `references\u002Ftailwind-utilities.md` - Core utility classes\n- `references\u002Ftailwind-responsive.md` - Responsive design\n- `references\u002Ftailwind-customization.md` - Configuration and extensions\n\n**Visual Design**\n- `references\u002Fcanvas-design-system.md` - Design philosophy and canvas workflows\n\n**Automation**\n- `scripts\u002Fshadcn_add.py` - Component installation\n- `scripts\u002Ftailwind_config_gen.py` - Config generation\n\n## Common Patterns\n\n**Form with validation:**\n```tsx\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform\u002Fresolvers\u002Fzod\"\nimport * as z from \"zod\"\nimport { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from \"@\u002Fcomponents\u002Fui\u002Fform\"\nimport { Input } from \"@\u002Fcomponents\u002Fui\u002Finput\"\nimport { Button } from \"@\u002Fcomponents\u002Fui\u002Fbutton\"\n\nconst schema = z.object({\n  email: z.string().email(),\n  password: z.string().min(8)\n})\n\nexport function LoginForm() {\n  const form = useForm({\n    resolver: zodResolver(schema),\n    defaultValues: { email: \"\", password: \"\" }\n  })\n\n  return (\n    \u003CForm {...form}>\n      \u003Cform onSubmit={form.handleSubmit(console.log)} className=\"space-y-6\">\n        \u003CFormField control={form.control} name=\"email\" render={({ field }) => (\n          \u003CFormItem>\n            \u003CFormLabel>Email\u003C\u002FFormLabel>\n            \u003CFormControl>\n              \u003CInput type=\"email\" {...field} \u002F>\n            \u003C\u002FFormControl>\n            \u003CFormMessage \u002F>\n          \u003C\u002FFormItem>\n        )} \u002F>\n        \u003CButton type=\"submit\" className=\"w-full\">Sign In\u003C\u002FButton>\n      \u003C\u002Fform>\n    \u003C\u002FForm>\n  )\n}\n```\n\n**Responsive layout with dark mode:**\n```tsx\n\u003Cdiv className=\"min-h-screen bg-white dark:bg-gray-900\">\n  \u003Cdiv className=\"container mx-auto px-4 py-8\">\n    \u003Cdiv className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n      \u003CCard className=\"bg-white dark:bg-gray-800 border-gray-200 dark:border-gray-700\">\n        \u003CCardContent className=\"p-6\">\n          \u003Ch3 className=\"text-xl font-semibold text-gray-900 dark:text-white\">\n            Content\n          \u003C\u002Fh3>\n        \u003C\u002FCardContent>\n      \u003C\u002FCard>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n```\n\n## Resources\n\n- shadcn\u002Fui Docs: https:\u002F\u002Fui.shadcn.com\n- Tailwind CSS Docs: https:\u002F\u002Ftailwindcss.com\n- Radix UI: https:\u002F\u002Fradix-ui.com\n- Tailwind UI: https:\u002F\u002Ftailwindui.com\n- Headless UI: https:\u002F\u002Fheadlessui.com\n- v0 (AI UI Generator): https:\u002F\u002Fv0.dev\n",{"name":5,"license":15,"version":46,"description":7},"1.0.0","main","d0e454f354869d81ce15337bc6aa9e1bf0524a11",".opencode\u002Fskills\u002Fui-styling",1,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh","https:\u002F\u002Faninhhumaninteriorlandingpage1.vercel.app","https:\u002F\u002Fgithub.com\u002Fhoanghd218","2026-08-25 23:13:36",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add hoanghd218\u002Fhuman-interior-a-Ninh --skill ui-styling",{"tool":61,"command":62},"bunx","bunx skills add hoanghd218\u002Fhuman-interior-a-Ninh --skill ui-styling",{"tool":64,"command":65},"pnpm","pnpm dlx skills add hoanghd218\u002Fhuman-interior-a-Ninh --skill ui-styling","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002FSKILL.md",true,[69,75,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,208,212,216,220,223,227,231,235,239,243,247,251,255,259,263,267,271,275,279,283,286,290,293,297,301,305,309,313,317,321,325,329,332,336,339,343,347,351,355,359,363,367,371,375,378,382,386,390,396,400,404,408,412,416,420,424,430,434,438,442,446,450,454],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"canvas-fonts\u002FArsenalSC-OFL.txt","REFERENCE","参考文档",4373,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FArsenalSC-OFL.txt",{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"canvas-fonts\u002FArsenalSC-Regular.ttf","ASSET","资产文件",165848,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FArsenalSC-Regular.ttf",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"canvas-fonts\u002FBigShoulders-Bold.ttf",94528,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBigShoulders-Bold.ttf",{"path":86,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":87,"sourceHtmlUrl":88},"canvas-fonts\u002FBigShoulders-OFL.txt",4397,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBigShoulders-OFL.txt",{"path":90,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":91,"sourceHtmlUrl":92},"canvas-fonts\u002FBigShoulders-Regular.ttf",94396,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBigShoulders-Regular.ttf",{"path":94,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":95,"sourceHtmlUrl":96},"canvas-fonts\u002FBoldonse-OFL.txt",4390,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBoldonse-OFL.txt",{"path":98,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":99,"sourceHtmlUrl":100},"canvas-fonts\u002FBoldonse-Regular.ttf",77168,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBoldonse-Regular.ttf",{"path":102,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":103,"sourceHtmlUrl":104},"canvas-fonts\u002FBricolageGrotesque-Bold.ttf",90952,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBricolageGrotesque-Bold.ttf",{"path":106,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":107,"sourceHtmlUrl":108},"canvas-fonts\u002FBricolageGrotesque-OFL.txt",4403,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBricolageGrotesque-OFL.txt",{"path":110,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":111,"sourceHtmlUrl":112},"canvas-fonts\u002FBricolageGrotesque-Regular.ttf",90920,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FBricolageGrotesque-Regular.ttf",{"path":114,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":115,"sourceHtmlUrl":116},"canvas-fonts\u002FCrimsonPro-Bold.ttf",107352,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FCrimsonPro-Bold.ttf",{"path":118,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":119,"sourceHtmlUrl":120},"canvas-fonts\u002FCrimsonPro-Italic.ttf",108828,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FCrimsonPro-Italic.ttf",{"path":122,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":123,"sourceHtmlUrl":124},"canvas-fonts\u002FCrimsonPro-OFL.txt",4394,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FCrimsonPro-OFL.txt",{"path":126,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":127,"sourceHtmlUrl":128},"canvas-fonts\u002FCrimsonPro-Regular.ttf",106696,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FCrimsonPro-Regular.ttf",{"path":130,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":131,"sourceHtmlUrl":132},"canvas-fonts\u002FDMMono-OFL.txt",4392,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FDMMono-OFL.txt",{"path":134,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":135,"sourceHtmlUrl":136},"canvas-fonts\u002FDMMono-Regular.ttf",48852,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FDMMono-Regular.ttf",{"path":138,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":139,"sourceHtmlUrl":140},"canvas-fonts\u002FEricaOne-OFL.txt",4410,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FEricaOne-OFL.txt",{"path":142,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":143,"sourceHtmlUrl":144},"canvas-fonts\u002FEricaOne-Regular.ttf",24872,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FEricaOne-Regular.ttf",{"path":146,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":147,"sourceHtmlUrl":148},"canvas-fonts\u002FGeistMono-Bold.ttf",78304,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FGeistMono-Bold.ttf",{"path":150,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":151,"sourceHtmlUrl":152},"canvas-fonts\u002FGeistMono-OFL.txt",4388,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FGeistMono-OFL.txt",{"path":154,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":155,"sourceHtmlUrl":156},"canvas-fonts\u002FGeistMono-Regular.ttf",78232,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FGeistMono-Regular.ttf",{"path":158,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":159,"sourceHtmlUrl":160},"canvas-fonts\u002FGloock-OFL.txt",4381,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FGloock-OFL.txt",{"path":162,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":163,"sourceHtmlUrl":164},"canvas-fonts\u002FGloock-Regular.ttf",95156,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FGloock-Regular.ttf",{"path":166,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":167,"sourceHtmlUrl":168},"canvas-fonts\u002FIBMPlexMono-Bold.ttf",136008,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexMono-Bold.ttf",{"path":170,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":171,"sourceHtmlUrl":172},"canvas-fonts\u002FIBMPlexMono-OFL.txt",4363,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexMono-OFL.txt",{"path":174,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":175,"sourceHtmlUrl":176},"canvas-fonts\u002FIBMPlexMono-Regular.ttf",133796,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexMono-Regular.ttf",{"path":178,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":179,"sourceHtmlUrl":180},"canvas-fonts\u002FIBMPlexSerif-Bold.ttf",161000,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexSerif-Bold.ttf",{"path":182,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":183,"sourceHtmlUrl":184},"canvas-fonts\u002FIBMPlexSerif-BoldItalic.ttf",169840,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexSerif-BoldItalic.ttf",{"path":186,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":187,"sourceHtmlUrl":188},"canvas-fonts\u002FIBMPlexSerif-Italic.ttf",170004,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexSerif-Italic.ttf",{"path":190,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":191,"sourceHtmlUrl":192},"canvas-fonts\u002FIBMPlexSerif-Regular.ttf",160380,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FIBMPlexSerif-Regular.ttf",{"path":194,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":195,"sourceHtmlUrl":196},"canvas-fonts\u002FInstrumentSans-Bold.ttf",68084,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSans-Bold.ttf",{"path":198,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":199,"sourceHtmlUrl":200},"canvas-fonts\u002FInstrumentSans-BoldItalic.ttf",70004,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSans-BoldItalic.ttf",{"path":202,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":203,"sourceHtmlUrl":204},"canvas-fonts\u002FInstrumentSans-Italic.ttf",69900,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSans-Italic.ttf",{"path":206,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":107,"sourceHtmlUrl":207},"canvas-fonts\u002FInstrumentSans-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSans-OFL.txt",{"path":209,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":210,"sourceHtmlUrl":211},"canvas-fonts\u002FInstrumentSans-Regular.ttf",68028,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSans-Regular.ttf",{"path":213,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":214,"sourceHtmlUrl":215},"canvas-fonts\u002FInstrumentSerif-Italic.ttf",70868,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSerif-Italic.ttf",{"path":217,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":218,"sourceHtmlUrl":219},"canvas-fonts\u002FInstrumentSerif-Regular.ttf",69312,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FInstrumentSerif-Regular.ttf",{"path":221,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":123,"sourceHtmlUrl":222},"canvas-fonts\u002FItaliana-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FItaliana-OFL.txt",{"path":224,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":225,"sourceHtmlUrl":226},"canvas-fonts\u002FItaliana-Regular.ttf",27184,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FItaliana-Regular.ttf",{"path":228,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":229,"sourceHtmlUrl":230},"canvas-fonts\u002FJetBrainsMono-Bold.ttf",114828,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FJetBrainsMono-Bold.ttf",{"path":232,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":233,"sourceHtmlUrl":234},"canvas-fonts\u002FJetBrainsMono-OFL.txt",4399,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FJetBrainsMono-OFL.txt",{"path":236,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":237,"sourceHtmlUrl":238},"canvas-fonts\u002FJetBrainsMono-Regular.ttf",114904,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FJetBrainsMono-Regular.ttf",{"path":240,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":241,"sourceHtmlUrl":242},"canvas-fonts\u002FJura-Light.ttf",154308,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FJura-Light.ttf",{"path":244,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":245,"sourceHtmlUrl":246},"canvas-fonts\u002FJura-Medium.ttf",154488,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FJura-Medium.ttf",{"path":248,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":249,"sourceHtmlUrl":250},"canvas-fonts\u002FJura-OFL.txt",4380,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FJura-OFL.txt",{"path":252,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":253,"sourceHtmlUrl":254},"canvas-fonts\u002FLibreBaskerville-OFL.txt",4449,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLibreBaskerville-OFL.txt",{"path":256,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":257,"sourceHtmlUrl":258},"canvas-fonts\u002FLibreBaskerville-Regular.ttf",147584,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLibreBaskerville-Regular.ttf",{"path":260,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":261,"sourceHtmlUrl":262},"canvas-fonts\u002FLora-Bold.ttf",133828,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLora-Bold.ttf",{"path":264,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":265,"sourceHtmlUrl":266},"canvas-fonts\u002FLora-BoldItalic.ttf",140332,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLora-BoldItalic.ttf",{"path":268,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":269,"sourceHtmlUrl":270},"canvas-fonts\u002FLora-Italic.ttf",139328,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLora-Italic.ttf",{"path":272,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":273,"sourceHtmlUrl":274},"canvas-fonts\u002FLora-OFL.txt",4423,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLora-OFL.txt",{"path":276,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":277,"sourceHtmlUrl":278},"canvas-fonts\u002FLora-Regular.ttf",133888,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FLora-Regular.ttf",{"path":280,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":281,"sourceHtmlUrl":282},"canvas-fonts\u002FNationalPark-Bold.ttf",79208,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FNationalPark-Bold.ttf",{"path":284,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":233,"sourceHtmlUrl":285},"canvas-fonts\u002FNationalPark-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FNationalPark-OFL.txt",{"path":287,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":288,"sourceHtmlUrl":289},"canvas-fonts\u002FNationalPark-Regular.ttf",76424,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FNationalPark-Regular.ttf",{"path":291,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":171,"sourceHtmlUrl":292},"canvas-fonts\u002FNothingYouCouldDo-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FNothingYouCouldDo-OFL.txt",{"path":294,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":295,"sourceHtmlUrl":296},"canvas-fonts\u002FNothingYouCouldDo-Regular.ttf",32020,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FNothingYouCouldDo-Regular.ttf",{"path":298,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":299,"sourceHtmlUrl":300},"canvas-fonts\u002FOutfit-Bold.ttf",55392,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FOutfit-Bold.ttf",{"path":302,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":303,"sourceHtmlUrl":304},"canvas-fonts\u002FOutfit-OFL.txt",4389,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FOutfit-OFL.txt",{"path":306,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":307,"sourceHtmlUrl":308},"canvas-fonts\u002FOutfit-Regular.ttf",54912,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FOutfit-Regular.ttf",{"path":310,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":311,"sourceHtmlUrl":312},"canvas-fonts\u002FPixelifySans-Medium.ttf",51072,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FPixelifySans-Medium.ttf",{"path":314,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":315,"sourceHtmlUrl":316},"canvas-fonts\u002FPixelifySans-OFL.txt",4395,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FPixelifySans-OFL.txt",{"path":318,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":319,"sourceHtmlUrl":320},"canvas-fonts\u002FPoiretOne-OFL.txt",4366,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FPoiretOne-OFL.txt",{"path":322,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":323,"sourceHtmlUrl":324},"canvas-fonts\u002FPoiretOne-Regular.ttf",45244,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FPoiretOne-Regular.ttf",{"path":326,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":327,"sourceHtmlUrl":328},"canvas-fonts\u002FRedHatMono-Bold.ttf",34420,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FRedHatMono-Bold.ttf",{"path":330,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":123,"sourceHtmlUrl":331},"canvas-fonts\u002FRedHatMono-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FRedHatMono-OFL.txt",{"path":333,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":334,"sourceHtmlUrl":335},"canvas-fonts\u002FRedHatMono-Regular.ttf",34488,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FRedHatMono-Regular.ttf",{"path":337,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":123,"sourceHtmlUrl":338},"canvas-fonts\u002FSilkscreen-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FSilkscreen-OFL.txt",{"path":340,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":341,"sourceHtmlUrl":342},"canvas-fonts\u002FSilkscreen-Regular.ttf",31960,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FSilkscreen-Regular.ttf",{"path":344,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":345,"sourceHtmlUrl":346},"canvas-fonts\u002FSmoochSans-Medium.ttf",59704,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FSmoochSans-Medium.ttf",{"path":348,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":349,"sourceHtmlUrl":350},"canvas-fonts\u002FSmoochSans-OFL.txt",4396,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FSmoochSans-OFL.txt",{"path":352,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":353,"sourceHtmlUrl":354},"canvas-fonts\u002FTektur-Medium.ttf",76248,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FTektur-Medium.ttf",{"path":356,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":357,"sourceHtmlUrl":358},"canvas-fonts\u002FTektur-OFL.txt",4385,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FTektur-OFL.txt",{"path":360,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":361,"sourceHtmlUrl":362},"canvas-fonts\u002FTektur-Regular.ttf",75604,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FTektur-Regular.ttf",{"path":364,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":365,"sourceHtmlUrl":366},"canvas-fonts\u002FWorkSans-Bold.ttf",191304,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FWorkSans-Bold.ttf",{"path":368,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":369,"sourceHtmlUrl":370},"canvas-fonts\u002FWorkSans-BoldItalic.ttf",175772,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FWorkSans-BoldItalic.ttf",{"path":372,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":373,"sourceHtmlUrl":374},"canvas-fonts\u002FWorkSans-Italic.ttf",174280,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FWorkSans-Italic.ttf",{"path":376,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":87,"sourceHtmlUrl":377},"canvas-fonts\u002FWorkSans-OFL.txt","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FWorkSans-OFL.txt",{"path":379,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":380,"sourceHtmlUrl":381},"canvas-fonts\u002FWorkSans-Regular.ttf",188916,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FWorkSans-Regular.ttf",{"path":383,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":384,"sourceHtmlUrl":385},"canvas-fonts\u002FYoungSerif-OFL.txt",4398,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FYoungSerif-OFL.txt",{"path":387,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":388,"sourceHtmlUrl":389},"canvas-fonts\u002FYoungSerif-Regular.ttf",105136,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fcanvas-fonts\u002FYoungSerif-Regular.ttf",{"path":391,"resourceType":392,"resourceTypeDesc":393,"sizeBytes":394,"sourceHtmlUrl":395},"LICENSE.txt","LICENSE","许可证",11357,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002FLICENSE.txt",{"path":397,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":398,"sourceHtmlUrl":399},"references\u002Fcanvas-design-system.md",7888,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Fcanvas-design-system.md",{"path":401,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":402,"sourceHtmlUrl":403},"references\u002Fshadcn-accessibility.md",9976,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Fshadcn-accessibility.md",{"path":405,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":406,"sourceHtmlUrl":407},"references\u002Fshadcn-components.md",11155,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Fshadcn-components.md",{"path":409,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":410,"sourceHtmlUrl":411},"references\u002Fshadcn-theming.md",8672,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Fshadcn-theming.md",{"path":413,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":414,"sourceHtmlUrl":415},"references\u002Ftailwind-customization.md",10171,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Ftailwind-customization.md",{"path":417,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":418,"sourceHtmlUrl":419},"references\u002Ftailwind-responsive.md",8270,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Ftailwind-responsive.md",{"path":421,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":422,"sourceHtmlUrl":423},"references\u002Ftailwind-utilities.md",9980,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Freferences\u002Ftailwind-utilities.md",{"path":425,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":428,"sourceHtmlUrl":429},"scripts\u002F.coverage","SCRIPT","脚本",53248,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002F.coverage",{"path":431,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":432,"sourceHtmlUrl":433},"scripts\u002Frequirements.txt",444,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Frequirements.txt",{"path":435,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":436,"sourceHtmlUrl":437},"scripts\u002Fshadcn_add.py",7991,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Fshadcn_add.py",{"path":439,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":440,"sourceHtmlUrl":441},"scripts\u002Ftailwind_config_gen.py",13643,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Ftailwind_config_gen.py",{"path":443,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":444,"sourceHtmlUrl":445},"scripts\u002Ftests\u002Fcoverage-ui.json",35121,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Ftests\u002Fcoverage-ui.json",{"path":447,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":448,"sourceHtmlUrl":449},"scripts\u002Ftests\u002Frequirements.txt",52,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Ftests\u002Frequirements.txt",{"path":451,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":452,"sourceHtmlUrl":453},"scripts\u002Ftests\u002Ftest_shadcn_add.py",9920,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Ftests\u002Ftest_shadcn_add.py",{"path":455,"resourceType":426,"resourceTypeDesc":427,"sizeBytes":456,"sourceHtmlUrl":457},"scripts\u002Ftests\u002Ftest_tailwind_config_gen.py",12158,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002Fscripts\u002Ftests\u002Ftest_tailwind_config_gen.py",[459,487,504,530,543,557],{"skillNo":460,"name":461,"nameZh":6,"description":462,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":463,"licenseFileUrl":6,"sourceHtmlUrl":464,"categories":465,"keywords":469,"publishedAt":41},"01M6CETP5XP3B7RKRN8A4GTTSP","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\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-testing\u002FSKILL.md",[466],{"categoryNo":467,"categoryName":468,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[470,471,472,473,40,474,475,476,477,478,479,480,481,482,483,484,485,486],"web testing","testing","web","mobile","core web vitals","vitest","security","gestures","automation","playwright","e2e","test","test automation","k6","core","browser","integration",{"skillNo":488,"name":489,"nameZh":6,"description":490,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":491,"categories":492,"keywords":493,"publishedAt":41},"01M6CETJPBMKZE2ZQYJFX5AXHM","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\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[472,494,495,496,497,498,499,500,40,501,502,503],"web frameworks","Next.js","Optimization","turborepo","server","ssr","react","js","router","build",{"skillNo":505,"name":506,"nameZh":6,"description":507,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":508,"categories":509,"keywords":513,"publishedAt":41},"01M6CESYYKE7R0FJGQ4QDY7RKS","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\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fthreejs\u002FSKILL.md",[510],{"categoryNo":511,"categoryName":512,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[506,503,514,40,515,516,517,518,519,520,521,522,523,524,525,472,526,527,528,529],"Spatial","api","integrations","model","Audio","webgl","Animation","actions","examples","shaders","create","webgpu","implement","3D","pbr","gltf",{"skillNo":531,"name":532,"nameZh":6,"description":533,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":534,"categories":535,"keywords":536,"publishedAt":41},"01M6CESH1KR4ZWBY03T64MG8RX","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\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",[],[537,40,538,539,540,541,542],"sequential thinking","analysis","hypothesis","verification","reasoning","planning",{"skillNo":544,"name":545,"nameZh":6,"description":546,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":547,"categories":548,"keywords":552,"publishedAt":41},"01M6CESCRHXH650J32YHHFD1JK","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\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fresearch\u002FSKILL.md",[549],{"categoryNo":550,"categoryName":551,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[545,553,554,538,555,556,476,32,40],"technical","analyze","Evaluation","best practices",{"skillNo":558,"name":542,"nameZh":6,"description":559,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":560,"categories":561,"keywords":564,"publishedAt":41},"01M6CERQV2T39D9QSB4PWM19TC","Plan implementations, design architectures, create technical roadmaps with detailed phases. Use for feature planning, system design, solution architecture, implementation strategy, phase documentation.","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fhuman-interior-a-Ninh\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fplanning\u002FSKILL.md",[562,563],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[542,40,565,566,567,553,568,569,570,524,571,572,32],"implementation","system design","strategy","system","plan","implementation strategy","documentation","architecture"]