[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71QCYPNWDE2MQZ1TF3ED5S4":3,"skill-same:01M71QCYPNWDE2MQZ1TF3ED5S4":173},{"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":16,"sourceHtmlUrl":17,"categories":18,"keywords":24,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":14,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices",null,"MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"vue","best practices","vue best practices","standard","load","use","vite","for","as","typescript","ssr","options","work","pinia","router","api","tasks","files","project","Composition","2026-11-10 13:02:02",false,"---\nname: vue-best-practices\ndescription: MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.\nlicense: MIT\nmetadata:\n  author: github.com\u002Fvuejs-ai\n  version: \"18.0.0\"\n---\n\n# Vue Best Practices Workflow\n\nUse this skill as an instruction set. Follow the workflow in order unless the user explicitly asks for a different order.\n\n## Core Principles\n- **Keep state predictable:** one source of truth, derive everything else.\n- **Make data flow explicit:** Props down, Events up for most cases.\n- **Favor small, focused components:** easier to test, reuse, and maintain.\n- **Avoid unnecessary re-renders:** use computed properties and watchers wisely.\n- **Readability counts:** write clear, self-documenting code.\n\n## 1) Confirm architecture before coding (required)\n\n- Default stack: Vue 3 + Composition API + `\u003Cscript setup lang=\"ts\">`.\n- If the project explicitly uses Options API, load `vue-options-api-best-practices` skill if available.\n- If the project explicitly uses JSX, load `vue-jsx-best-practices` skill if available.\n\n### 1.1 Must-read core references (required)\n\n- Before implementing any Vue task, make sure to read and apply these core references:\n  - `references\u002Freactivity.md`\n  - `references\u002Fsfc.md`\n  - `references\u002Fcomponent-data-flow.md`\n  - `references\u002Fcomposables.md`\n- Keep these references in active working context for the entire task, not only when a specific issue appears.\n\n### 1.2 Plan component boundaries before coding (required)\n\nCreate a brief component map before implementation for any non-trivial feature.\n\n- Define each component's single responsibility in one sentence.\n- Keep entry\u002Froot and route-level view components as composition surfaces by default.\n- Move feature UI and feature logic out of entry\u002Froot\u002Fview components unless the task is intentionally a tiny single-file demo.\n- Define props\u002Femits contracts for each child component in the map.\n- Prefer a feature folder layout (`components\u002F\u003Cfeature>\u002F...`, `composables\u002Fuse\u003CFeature>.ts`) when adding more than one component.\n\n## 2) Apply essential Vue foundations (required)\n\nThese are essential, must-know foundations. Apply all of them in every Vue task using the core references already loaded in section `1.1`.\n\n### Reactivity\n\n- Must-read reference from `1.1`: [reactivity](references\u002Freactivity.md)\n- Keep source state minimal (`ref`\u002F`reactive`), derive everything possible with `computed`.\n- Use watchers for side effects if needed.\n- Avoid recomputing expensive logic in templates.\n\n### SFC structure and template safety\n\n- Must-read reference from `1.1`: [sfc](references\u002Fsfc.md)\n- Keep SFC sections in this order: `\u003Cscript>` → `\u003Ctemplate>` → `\u003Cstyle>`.\n- Keep SFC responsibilities focused; split large components.\n- Keep templates declarative; move branching\u002Fderivation to script.\n- Apply Vue template safety rules (`v-html`, list rendering, conditional rendering choices).\n\n### Keep components focused\n\nSplit a component when it has **more than one clear responsibility** (e.g. data orchestration + UI, or multiple independent UI sections).\n\n- Prefer **smaller components + composables** over one “mega component”\n- Move **UI sections** into child components (props in, events out).\n- Move **state\u002Fside effects** into composables (`useXxx()`).\n\nApply objective split triggers. Split the component if **any** condition is true:\n\n- It owns both orchestration\u002Fstate and substantial presentational markup for multiple sections.\n- It has 3+ distinct UI sections (for example: form, filters, list, footer\u002Fstatus).\n- A template block is repeated or could become reusable (item rows, cards, list entries).\n\nEntry\u002Froot and route view rule:\n\n- Keep entry\u002Froot and route view components thin: app shell\u002Flayout, provider wiring, and feature composition.\n- Do not place full feature implementations in entry\u002Froot\u002Fview components when those features contain independent parts.\n- For CRUD\u002Flist features (todo, table, catalog, inbox), split at least into:\n  - feature container component\n  - input\u002Fform component\n  - list (and\u002For item) component\n  - footer\u002Factions or filter\u002Fstatus component\n- Allow a single-file implementation only for very small throwaway demos; if chosen, explicitly justify why splitting is unnecessary.\n\n### Component data flow\n\n- Must-read reference from `1.1`: [component-data-flow](references\u002Fcomponent-data-flow.md)\n- Use props down, events up as the primary model.\n- Use `v-model` only for true two-way component contracts.\n- Use provide\u002Finject only for deep-tree dependencies or shared context.\n- Keep contracts explicit and typed with `defineProps`, `defineEmits`, and `InjectionKey` as needed.\n\n### Composables\n\n- Must-read reference from `1.1`: [composables](references\u002Fcomposables.md)\n- Extract logic into composables when it is reused, stateful, or side-effect heavy.\n- Keep composable APIs small, typed, and predictable.\n- Separate feature logic from presentational components.\n\n## 3) Consider optional features only when requirements call for them\n\n### 3.1 Standard optional features\n\nDo not add these by default. Load the matching reference only when the requirement exists.\n\n- Slots: parent needs to control child content\u002Flayout -> [component-slots](references\u002Fcomponent-slots.md)\n- Fallthrough attributes: wrapper\u002Fbase components must forward attrs\u002Fevents safely -> [component-fallthrough-attrs](references\u002Fcomponent-fallthrough-attrs.md)\n- Built-in component `\u003CKeepAlive>` for stateful view caching -> [component-keep-alive](references\u002Fcomponent-keep-alive.md)\n- Built-in component `\u003CTeleport>` for overlays\u002Fportals -> [component-teleport](references\u002Fcomponent-teleport.md)\n- Built-in component `\u003CSuspense>` for async subtree fallback boundaries -> [component-suspense](references\u002Fcomponent-suspense.md)\n- Animation-related features: pick the simplest approach that matches the required motion behavior.\n  - Built-in component `\u003CTransition>` for enter\u002Fleave effects -> [transition](references\u002Fcomponent-transition.md)\n  - Built-in component `\u003CTransitionGroup>` for animated list mutations -> [transition-group](references\u002Fcomponent-transition-group.md)\n  - Class-based animation for non-enter\u002Fleave effects -> [animation-class-based-technique](references\u002Fanimation-class-based-technique.md)\n  - State-driven animation for user-input-driven animation -> [animation-state-driven-technique](references\u002Fanimation-state-driven-technique.md)\n\n### 3.2 Less-common optional features\n\nUse these only when there is explicit product or technical need.\n\n- Directives: behavior is DOM-specific and not a good composable\u002Fcomponent fit -> [directives](references\u002Fdirectives.md)\n- Async components: heavy\u002Frarely-used UI should be lazy loaded -> [component-async](references\u002Fcomponent-async.md)\n- Render functions only when templates cannot express the requirement -> [render-functions](references\u002Frender-functions.md)\n- Plugins when behavior must be installed app-wide -> [plugins](references\u002Fplugins.md)\n- State management patterns: app-wide shared state crosses feature boundaries -> [state-management](references\u002Fstate-management.md)\n\n## 4) Run performance optimization after behavior is correct\n\nPerformance work is a post-functionality pass. Do not optimize before core behavior is implemented and verified.\n\n- Large list rendering bottlenecks -> [perf-virtualize-large-lists](references\u002Fperf-virtualize-large-lists.md)\n- Static subtrees re-rendering unnecessarily -> [perf-v-once-v-memo-directives](references\u002Fperf-v-once-v-memo-directives.md)\n- Over-abstraction in hot list paths -> [perf-avoid-component-abstraction-in-lists](references\u002Fperf-avoid-component-abstraction-in-lists.md)\n- Expensive updates triggered too often -> [updated-hook-performance](references\u002Fupdated-hook-performance.md)\n\n## 5) Final self-check before finishing\n\n- Core behavior works and matches requirements.\n- All must-read references were read and applied.\n- Reactivity model is minimal and predictable.\n- SFC structure and template rules are followed.\n- Components are focused and well-factored, splitting when needed.\n- Entry\u002Froot and route view components remain composition surfaces unless there is an explicit small-demo exception.\n- Component split decisions are explicit and defensible (responsibility boundaries are clear).\n- Data flow contracts are explicit and typed.\n- Composables are used where reuse\u002Fcomplexity justifies them.\n- Moved state\u002Fside effects into composables if applicable\n- Optional features are used only when requirements demand them.\n- Performance changes were applied only after functionality was complete.\n","# Vue Best Practices Workflow\n\nUse this skill as an instruction set. Follow the workflow in order unless the user explicitly asks for a different order.\n\n## Core Principles\n- **Keep state predictable:** one source of truth, derive everything else.\n- **Make data flow explicit:** Props down, Events up for most cases.\n- **Favor small, focused components:** easier to test, reuse, and maintain.\n- **Avoid unnecessary re-renders:** use computed properties and watchers wisely.\n- **Readability counts:** write clear, self-documenting code.\n\n## 1) Confirm architecture before coding (required)\n\n- Default stack: Vue 3 + Composition API + `\u003Cscript setup lang=\"ts\">`.\n- If the project explicitly uses Options API, load `vue-options-api-best-practices` skill if available.\n- If the project explicitly uses JSX, load `vue-jsx-best-practices` skill if available.\n\n### 1.1 Must-read core references (required)\n\n- Before implementing any Vue task, make sure to read and apply these core references:\n  - `references\u002Freactivity.md`\n  - `references\u002Fsfc.md`\n  - `references\u002Fcomponent-data-flow.md`\n  - `references\u002Fcomposables.md`\n- Keep these references in active working context for the entire task, not only when a specific issue appears.\n\n### 1.2 Plan component boundaries before coding (required)\n\nCreate a brief component map before implementation for any non-trivial feature.\n\n- Define each component's single responsibility in one sentence.\n- Keep entry\u002Froot and route-level view components as composition surfaces by default.\n- Move feature UI and feature logic out of entry\u002Froot\u002Fview components unless the task is intentionally a tiny single-file demo.\n- Define props\u002Femits contracts for each child component in the map.\n- Prefer a feature folder layout (`components\u002F\u003Cfeature>\u002F...`, `composables\u002Fuse\u003CFeature>.ts`) when adding more than one component.\n\n## 2) Apply essential Vue foundations (required)\n\nThese are essential, must-know foundations. Apply all of them in every Vue task using the core references already loaded in section `1.1`.\n\n### Reactivity\n\n- Must-read reference from `1.1`: [reactivity](references\u002Freactivity.md)\n- Keep source state minimal (`ref`\u002F`reactive`), derive everything possible with `computed`.\n- Use watchers for side effects if needed.\n- Avoid recomputing expensive logic in templates.\n\n### SFC structure and template safety\n\n- Must-read reference from `1.1`: [sfc](references\u002Fsfc.md)\n- Keep SFC sections in this order: `\u003Cscript>` → `\u003Ctemplate>` → `\u003Cstyle>`.\n- Keep SFC responsibilities focused; split large components.\n- Keep templates declarative; move branching\u002Fderivation to script.\n- Apply Vue template safety rules (`v-html`, list rendering, conditional rendering choices).\n\n### Keep components focused\n\nSplit a component when it has **more than one clear responsibility** (e.g. data orchestration + UI, or multiple independent UI sections).\n\n- Prefer **smaller components + composables** over one “mega component”\n- Move **UI sections** into child components (props in, events out).\n- Move **state\u002Fside effects** into composables (`useXxx()`).\n\nApply objective split triggers. Split the component if **any** condition is true:\n\n- It owns both orchestration\u002Fstate and substantial presentational markup for multiple sections.\n- It has 3+ distinct UI sections (for example: form, filters, list, footer\u002Fstatus).\n- A template block is repeated or could become reusable (item rows, cards, list entries).\n\nEntry\u002Froot and route view rule:\n\n- Keep entry\u002Froot and route view components thin: app shell\u002Flayout, provider wiring, and feature composition.\n- Do not place full feature implementations in entry\u002Froot\u002Fview components when those features contain independent parts.\n- For CRUD\u002Flist features (todo, table, catalog, inbox), split at least into:\n  - feature container component\n  - input\u002Fform component\n  - list (and\u002For item) component\n  - footer\u002Factions or filter\u002Fstatus component\n- Allow a single-file implementation only for very small throwaway demos; if chosen, explicitly justify why splitting is unnecessary.\n\n### Component data flow\n\n- Must-read reference from `1.1`: [component-data-flow](references\u002Fcomponent-data-flow.md)\n- Use props down, events up as the primary model.\n- Use `v-model` only for true two-way component contracts.\n- Use provide\u002Finject only for deep-tree dependencies or shared context.\n- Keep contracts explicit and typed with `defineProps`, `defineEmits`, and `InjectionKey` as needed.\n\n### Composables\n\n- Must-read reference from `1.1`: [composables](references\u002Fcomposables.md)\n- Extract logic into composables when it is reused, stateful, or side-effect heavy.\n- Keep composable APIs small, typed, and predictable.\n- Separate feature logic from presentational components.\n\n## 3) Consider optional features only when requirements call for them\n\n### 3.1 Standard optional features\n\nDo not add these by default. Load the matching reference only when the requirement exists.\n\n- Slots: parent needs to control child content\u002Flayout -> [component-slots](references\u002Fcomponent-slots.md)\n- Fallthrough attributes: wrapper\u002Fbase components must forward attrs\u002Fevents safely -> [component-fallthrough-attrs](references\u002Fcomponent-fallthrough-attrs.md)\n- Built-in component `\u003CKeepAlive>` for stateful view caching -> [component-keep-alive](references\u002Fcomponent-keep-alive.md)\n- Built-in component `\u003CTeleport>` for overlays\u002Fportals -> [component-teleport](references\u002Fcomponent-teleport.md)\n- Built-in component `\u003CSuspense>` for async subtree fallback boundaries -> [component-suspense](references\u002Fcomponent-suspense.md)\n- Animation-related features: pick the simplest approach that matches the required motion behavior.\n  - Built-in component `\u003CTransition>` for enter\u002Fleave effects -> [transition](references\u002Fcomponent-transition.md)\n  - Built-in component `\u003CTransitionGroup>` for animated list mutations -> [transition-group](references\u002Fcomponent-transition-group.md)\n  - Class-based animation for non-enter\u002Fleave effects -> [animation-class-based-technique](references\u002Fanimation-class-based-technique.md)\n  - State-driven animation for user-input-driven animation -> [animation-state-driven-technique](references\u002Fanimation-state-driven-technique.md)\n\n### 3.2 Less-common optional features\n\nUse these only when there is explicit product or technical need.\n\n- Directives: behavior is DOM-specific and not a good composable\u002Fcomponent fit -> [directives](references\u002Fdirectives.md)\n- Async components: heavy\u002Frarely-used UI should be lazy loaded -> [component-async](references\u002Fcomponent-async.md)\n- Render functions only when templates cannot express the requirement -> [render-functions](references\u002Frender-functions.md)\n- Plugins when behavior must be installed app-wide -> [plugins](references\u002Fplugins.md)\n- State management patterns: app-wide shared state crosses feature boundaries -> [state-management](references\u002Fstate-management.md)\n\n## 4) Run performance optimization after behavior is correct\n\nPerformance work is a post-functionality pass. Do not optimize before core behavior is implemented and verified.\n\n- Large list rendering bottlenecks -> [perf-virtualize-large-lists](references\u002Fperf-virtualize-large-lists.md)\n- Static subtrees re-rendering unnecessarily -> [perf-v-once-v-memo-directives](references\u002Fperf-v-once-v-memo-directives.md)\n- Over-abstraction in hot list paths -> [perf-avoid-component-abstraction-in-lists](references\u002Fperf-avoid-component-abstraction-in-lists.md)\n- Expensive updates triggered too often -> [updated-hook-performance](references\u002Fupdated-hook-performance.md)\n\n## 5) Final self-check before finishing\n\n- Core behavior works and matches requirements.\n- All must-read references were read and applied.\n- Reactivity model is minimal and predictable.\n- SFC structure and template rules are followed.\n- Components are focused and well-factored, splitting when needed.\n- Entry\u002Froot and route view components remain composition surfaces unless there is an explicit small-demo exception.\n- Component split decisions are explicit and defensible (responsibility boundaries are clear).\n- Data flow contracts are explicit and typed.\n- Composables are used where reuse\u002Fcomplexity justifies them.\n- Moved state\u002Fside effects into composables if applicable\n- Optional features are used only when requirements demand them.\n- Performance changes were applied only after functionality was complete.\n",{"name":5,"license":15,"metadata":50,"description":7},{"author":51,"version":52},"github.com\u002Fvuejs-ai","18.0.0","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Fvue-best-practices","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add pattanation\u002FNorvik --skill vue-best-practices",{"tool":66,"command":67},"bunx","bunx skills add pattanation\u002FNorvik --skill vue-best-practices",{"tool":69,"command":70},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill vue-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",true,[74,79,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":16},"LICENSE.md","LICENSE","许可证",1098,{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fanimation-class-based-technique.md","REFERENCE","参考文档",5026,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fanimation-class-based-technique.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fanimation-state-driven-technique.md",5829,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fanimation-state-driven-technique.md",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fcomponent-async.md",2532,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-async.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fcomponent-data-flow.md",6956,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-data-flow.md",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fcomponent-fallthrough-attrs.md",4047,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-fallthrough-attrs.md",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fcomponent-keep-alive.md",3487,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-keep-alive.md",{"path":106,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fcomponent-slots.md",4469,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-slots.md",{"path":110,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fcomponent-suspense.md",5367,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-suspense.md",{"path":114,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fcomponent-teleport.md",2921,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-teleport.md",{"path":118,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002Fcomponent-transition-group.md",3004,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-transition-group.md",{"path":122,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":123,"sourceHtmlUrl":124},"references\u002Fcomponent-transition.md",2722,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomponent-transition.md",{"path":126,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":127,"sourceHtmlUrl":128},"references\u002Fcomposables.md",7011,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fcomposables.md",{"path":130,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":131,"sourceHtmlUrl":132},"references\u002Fdirectives.md",3803,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fdirectives.md",{"path":134,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":135,"sourceHtmlUrl":136},"references\u002Fperf-avoid-component-abstraction-in-lists.md",4683,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fperf-avoid-component-abstraction-in-lists.md",{"path":138,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":139,"sourceHtmlUrl":140},"references\u002Fperf-v-once-v-memo-directives.md",4769,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fperf-v-once-v-memo-directives.md",{"path":142,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":143,"sourceHtmlUrl":144},"references\u002Fperf-virtualize-large-lists.md",5002,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fperf-virtualize-large-lists.md",{"path":146,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":147,"sourceHtmlUrl":148},"references\u002Fplugins.md",3882,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fplugins.md",{"path":150,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":151,"sourceHtmlUrl":152},"references\u002Freactivity.md",8452,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Freactivity.md",{"path":154,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":155,"sourceHtmlUrl":156},"references\u002Frender-functions.md",3866,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Frender-functions.md",{"path":158,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":159,"sourceHtmlUrl":160},"references\u002Fsfc.md",6216,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fsfc.md",{"path":162,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":163,"sourceHtmlUrl":164},"references\u002Fstate-management.md",3380,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fstate-management.md",{"path":166,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":167,"sourceHtmlUrl":168},"references\u002Fupdated-hook-performance.md",4618,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002Freferences\u002Fupdated-hook-performance.md",{"path":170,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":171,"sourceHtmlUrl":172},"SYNC.md",154,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSYNC.md",[174,203,228,249,270,284],{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":178,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":186,"publishedAt":45},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[182,185],{"categoryNo":183,"categoryName":184,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[187,188,189,32,190,191,192,193,194,195,196,197,198,199,200,201,202],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":178,"licenseFileUrl":207,"sourceHtmlUrl":208,"categories":209,"keywords":211,"publishedAt":45},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[210],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[212,213,214,199,215,216,217,32,218,219,192,220,30,221,222,223,224,225,226,227],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":232,"sourceHtmlUrl":233,"categories":234,"keywords":236,"publishedAt":45},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[235],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[237,238,239,43,240,241,242,243,244,245,246,25,247,248],"functions","vueuse","vueuse functions","nuxt","apply","github","concise","build","https","features","js","composables",{"skillNo":250,"name":251,"nameZh":6,"description":252,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":253,"sourceHtmlUrl":254,"categories":255,"keywords":258,"publishedAt":45},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[256,257],{"categoryNo":183,"categoryName":184,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[259,188,260,25,26,198,261,262,263,242,264,32,265,266,267,30,268,247,269],"vue testing best practices","testing best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":271,"name":272,"nameZh":6,"description":273,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":274,"sourceHtmlUrl":275,"categories":276,"keywords":278,"publishedAt":45},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[277],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[39,25,279,26,280,263,281,242,268,282,283],"vue router best practices","route","guards","navigation","lifecycle",{"skillNo":285,"name":286,"nameZh":6,"description":287,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":178,"licenseFileUrl":6,"sourceHtmlUrl":288,"categories":289,"keywords":296,"publishedAt":45},"01M71QCT1J9SE670TZJENMNH24","vss-summarize-video","Use to summarize a recorded video via the LVS summarization microservice (HITL-gated) with a VLM fallback. Not for report generation or live RTSP captioning.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvss-summarize-video\u002FSKILL.md",[290,293],{"categoryNo":291,"categoryName":292,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":294,"categoryName":295,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000021","资料检索与研究",[297,298,299,300,301,302,303,304,305,306,307,308,32,30,197,242,309,310,311,312],"Video","vss summarize video","summarize","LVS","search","captioning","Blueprint","team","live","fallback","microservice","NVIDIA","operational","via","generation","gated"]