[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75NEEHT92D2SPZFEWBMSVX9":3,"skill-same:01M75NEEHT92D2SPZFEWBMSVX9":49},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":14,"repositoryHtmlUrl":30,"repositoryHomepageUrl":6,"ownerHtmlUrl":31,"ownerBlogUrl":32,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M75NEEHT92D2SPZFEWBMSVX9","vuejs-composition-api",null,"Write Vue 3 components with the Composition API, script setup, and composables","linktogo\u002Fmaggie","linktogo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F29751338?v=4","01M75NBAKP44KV5ND0WEE3H87P","Fabien Brunet","01M75NBAMC2TEQQ8FMTBA23MET",2,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Fvuejs\u002Fcomposition-api\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: vuejs-composition-api\ndescription: Write Vue 3 components with the Composition API, script setup, and composables\nglobs: [\"**\u002F*.vue\", \"**\u002F*.ts\"]\n---\n\n# Vue Composition API\n\nUse `\u003Cscript setup>` with the Composition API for new components. It gives better\ntype inference and makes logic reuse explicit.\n\n## Rules\n\n- Reach for `ref` for primitives and `reactive` for objects; be consistent within\n  a component. Remember `ref` values need `.value` in script (but not in the\n  template).\n- Derive from state with `computed`, not by writing back into another ref inside\n  a watcher. Computeds are cached and declarative.\n- Use `watch`\u002F`watchEffect` for side effects (fetching on an id change, syncing to\n  storage) — not to compute values that `computed` should own.\n- Extract reusable stateful logic into composables named `useX` that return refs\n  and functions. They compose other composables and hold no template.\n- Define props and emits with `defineProps`\u002F`defineEmits` (typed). Treat props as\n  read-only — emit an event to request a change rather than mutating a prop.\n\n## Anti-patterns\n\n- Mutating a prop directly.\n- A `watch` that sets a ref which another `watch` reacts to — collapse it into a\n  `computed`.\n- Destructuring a `reactive` object, which loses reactivity — use `toRefs` if you\n  must destructure.\n","# Vue Composition API\n\nUse `\u003Cscript setup>` with the Composition API for new components. It gives better\ntype inference and makes logic reuse explicit.\n\n## Rules\n\n- Reach for `ref` for primitives and `reactive` for objects; be consistent within\n  a component. Remember `ref` values need `.value` in script (but not in the\n  template).\n- Derive from state with `computed`, not by writing back into another ref inside\n  a watcher. Computeds are cached and declarative.\n- Use `watch`\u002F`watchEffect` for side effects (fetching on an id change, syncing to\n  storage) — not to compute values that `computed` should own.\n- Extract reusable stateful logic into composables named `useX` that return refs\n  and functions. They compose other composables and hold no template.\n- Define props and emits with `defineProps`\u002F`defineEmits` (typed). Treat props as\n  read-only — emit an event to request a change rather than mutating a prop.\n\n## Anti-patterns\n\n- Mutating a prop directly.\n- A `watch` that sets a ref which another `watch` reacts to — collapse it into a\n  `computed`.\n- Destructuring a `reactive` object, which loses reactivity — use `toRefs` if you\n  must destructure.\n",{"name":5,"globs":24,"description":7},[25,26],"**\u002F*.vue","**\u002F*.ts","main","d884e3c730aa8243273458fa6d7de64bfd3b8bba","skills\u002Fvuejs\u002Fcomposition-api","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie","https:\u002F\u002Fgithub.com\u002Flinktogo","http:\u002F\u002Ffabien-brunet.fr\u002F","Software Architect @Capgemini","2026-11-14 21:45:09",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add linktogo\u002Fmaggie --skill vuejs-composition-api",{"tool":41,"command":42},"bunx","bunx skills add linktogo\u002Fmaggie --skill vuejs-composition-api",{"tool":44,"command":45},"pnpm","pnpm dlx skills add linktogo\u002Fmaggie --skill vuejs-composition-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Fvuejs\u002Fcomposition-api\u002FSKILL.md",true,[],[50,57,64,71,78,85],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":19},"01M75NEGXZPJFCHAE5P31CQX94","vuejs-state-management","Manage Vue application state with Pinia and the right state locality","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Fvuejs\u002Fstate-management\u002FSKILL.md",[],[],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":19},"01M75NEBQJKWVJG8CYZQQB4BFQ","reactjs-hooks","Use React hooks correctly — dependencies, effects, and custom hooks","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Freactjs\u002Fhooks\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M75NE9V7AYPA9QF9H21TKC08","reactjs-component-design","Write small, composable React components with clean props and no needless state","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Freactjs\u002Fcomponent-design\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M75NE64WGJTNTKW3RYVC7394","postgres-query-performance","Diagnose and fix slow PostgreSQL queries with indexes and EXPLAIN","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Fpostgres\u002Fquery-performance\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M75NE3KGES659BWDAZDM6YQ5","postgres-migrations","Write safe, reversible, zero-downtime PostgreSQL schema migrations","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Fpostgres\u002Fmigrations\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M75NE106KTAH8BH7QCFZV74A","nx-task-running","Run Nx tasks efficiently with affected, caching, and target dependencies","https:\u002F\u002Fgithub.com\u002Flinktogo\u002Fmaggie\u002Fblob\u002Fmain\u002Fskills\u002Fnx\u002Ftask-running\u002FSKILL.md",[],[]]