[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-directus-rstore-nuxt":3,"mdc-p1uiva-key":33,"related-org-directus-rstore-nuxt":1419,"related-repo-directus-rstore-nuxt":1526},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"rstore-nuxt","integrate rstore into Nuxt applications","Use when wiring rstore into a Nuxt app end-to-end — module setup, auto-registered collections\u002Fplugins, SSR cache hydration, generated template\u002Fauto-import issues, and cross-module extension; also use before adding a custom `server\u002Fapi` route, Nitro handler, or ad hoc `useFetch`\u002F`$fetch` composable for collection data in an rstore-powered Nuxt app — prefer rstore collection APIs (`find*`, `query`, `liveQuery`) and plugin hooks over hand-rolled endpoints or fetch refs; pair with the `rstore-vue` skill for collection\u002Fquery\u002Fform behavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"directus","Directus","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdirectus.png",[12,16,19],{"name":13,"slug":14,"type":15},"Nuxt","nuxt","tag",{"name":17,"slug":18,"type":15},"Vue","vue",{"name":20,"slug":21,"type":15},"Frontend","frontend",425,"https:\u002F\u002Fgithub.com\u002Fdirectus\u002Frstore","2026-07-12T07:51:06.114663",null,19,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"The Reactive Data Store for Vue and Nuxt developers.","https:\u002F\u002Fgithub.com\u002Fdirectus\u002Frstore\u002Ftree\u002FHEAD\u002Fpackages\u002Fnuxt\u002Fskills\u002Frstore-nuxt","---\nname: rstore-nuxt\ndescription: \"Use when wiring rstore into a Nuxt app end-to-end — module setup, auto-registered collections\u002Fplugins, SSR cache hydration, generated template\u002Fauto-import issues, and cross-module extension; also use before adding a custom `server\u002Fapi` route, Nitro handler, or ad hoc `useFetch`\u002F`$fetch` composable for collection data in an rstore-powered Nuxt app — prefer rstore collection APIs (`find*`, `query`, `liveQuery`) and plugin hooks over hand-rolled endpoints or fetch refs; pair with the `rstore-vue` skill for collection\u002Fquery\u002Fform behavior.\"\n---\n\n# Rstore Nuxt\n\nWire `@rstore\u002Fvue` into Nuxt through module scanning, generated templates, SSR hydration, and devtools integration.\nUse this skill together with the `@rstore\u002Fvue` skill for collection\u002Fquery\u002Fform semantics.\n\n## Documentation map\n\n| Area | Documentation |\n| --- | --- |\n| Nuxt setup | [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fgetting-started#nuxt](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fgetting-started#nuxt) |\n| Collections and relations | [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fschema\u002Fcollection](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fschema\u002Fcollection), [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fschema\u002Frelations](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fschema\u002Frelations) |\n| Query and mutation model | [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fquery](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fquery), [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fmutation](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fmutation) |\n| Cache and live updates | [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fcache](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fcache), [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Flive](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Flive) |\n| Plugin extension model | [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fsetup](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fsetup), [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fhooks](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fhooks) |\n| Related package skills | `rstore-vue` skill (`@rstore\u002Fvue`) |\n| Skill-local API references | [.\u002Freferences\u002Findex.md](.\u002Freferences\u002Findex.md) |\n\n## Core concepts\n\n| Primitive | Purpose |\n| --- | --- |\n| `rstore.rstoreDirs` | Per-layer directories scanned for collections and plugins |\n| `\u003CrstoreDir>\u002F*.ts` | Collection\u002Frelations exports included in generated schema |\n| `\u003CrstoreDir>\u002Fplugins\u002F*.ts` | Plugin exports included in generated plugin list |\n| `#build\u002F$rstore-collection` | Generated schema template from scanned collection files |\n| `#build\u002F$rstore-plugins` | Generated plugin exports from scanned plugin files |\n| `#build\u002F$restore-options` | Generated options template (`experimentalGarbageCollection`) |\n| Runtime plugin layer | Creates store, installs plugin, serializes\u002Fhydrates cache, injects `$rstore` |\n| `addCollectionImport` \u002F `addPluginImport` | Public extension hooks for other Nuxt modules |\n\n## Quick start\n\n```ts\nexport default defineNuxtConfig({\n  modules: ['@rstore\u002Fnuxt'],\n  rstore: {\n    rstoreDirs: ['rstore'],\n  },\n})\n```\n\nExpected layout:\n\n```text\nrstore\u002F\n  todos.ts\n  users.ts\n  plugins\u002F\n    remote.ts\n```\n\n## Task workflow\n\n1. Register `@rstore\u002Fnuxt` in `modules`.\n2. Keep collections and plugin files inside configured `rstoreDirs`.\n3. Ensure collection files export `default` or named `const` values intended for schema assembly.\n4. Use `useStore()` and auto-imports from `#imports` in app code, not ad hoc store singletons. Before adding a `server\u002Fapi\u002F*.ts` handler, a `defineEventHandler`, or a `useFetch`\u002F`$fetch` composable for collection data, check whether a collection API (`find*`, `query`, `liveQuery`) or a plugin hook already covers it — if the data is Drizzle-backed, see the `rstore-nuxt-drizzle` skill for the generated endpoint + hook story.\n5. For cross-module extension, call `addCollectionImport` \u002F `addPluginImport` from module setup.\n6. Validate generated template output when debugging scan\u002Finjection issues.\n7. For behavior inside collection APIs (`find*`, `query`, forms, hooks), use the `rstore-vue` skill.\n\n## Rely on the generated runtime\n\n- Auto-imports include `withItemType`, `defineCollection`, `defineRstorePlugin`, `defineRstoreModule`, `useStore`, `RStoreSchema`, plus related types.\n- The module generates and uses `#build` templates instead of requiring manual registry wiring.\n- The runtime plugin serializes cache state to `nuxtApp.payload.state.$srstore` on render and hydrates on client load.\n- In development, a devtools plugin is appended automatically by runtime code.\n- `experimentalGarbageCollection` is passed from module options into `createStore`.\n\n## Extending from another Nuxt module\n\n- `addCollectionImport(nuxt, importPath)` appends import sources merged into generated schema.\n- `addPluginImport(nuxt, importPath)` appends plugin imports merged into generated plugin list.\n- Use these APIs instead of mutating `_rstoreCollectionImports`\u002F`_rstorePluginImports` directly.\n- Imported collection modules should export values that are valid store schema entries.\n\n## Guardrails\n\n1. Collection scan warns when files export neither `default` nor named `const`.\n2. Files in scanned collection directories should stay export-focused; extra exported helpers can be pulled into schema by `Object.values(...)`.\n3. Avoid creating your own second Nuxt-side store instance; runtime plugin owns app store lifecycle.\n4. Debug missing data by inspecting generated `#build\u002F$rstore-collection` and `#build\u002F$rstore-plugins`.\n5. Devtools route `\u002F__rstore` is module-owned and served\u002Fproxied by `setupDevToolsUI`; do not duplicate that wiring in app code.\n\n## References\n\n| Topic | Description | Reference |\n| --- | --- | --- |\n| API index | Full map of Nuxt API\u002Fconfig references | [api-index](.\u002Freferences\u002Findex.md) |\n| rstore.rstoreDirs | Collection\u002Fplugin scan directory option | [api-rstore-dirs](.\u002Freferences\u002Fapi-rstore-dirs.md) |\n| rstore.experimentalGarbageCollection | Pass-through garbage collection option | [api-experimental-garbage-collection](.\u002Freferences\u002Fapi-experimental-garbage-collection.md) |\n| addCollectionImport | Extend generated collection imports | [api-add-collection-import](.\u002Freferences\u002Fapi-add-collection-import.md) |\n| addPluginImport | Extend generated plugin imports | [api-add-plugin-import](.\u002Freferences\u002Fapi-add-plugin-import.md) |\n| defineRstorePlugin | Nuxt alias for definePlugin | [api-define-rstore-plugin](.\u002Freferences\u002Fapi-define-rstore-plugin.md) |\n| defineRstoreModule | Nuxt alias for defineModule | [api-define-rstore-module](.\u002Freferences\u002Fapi-define-rstore-module.md) |\n| RStoreSchema | Namespaced schema helper object | [api-rstore-schema](.\u002Freferences\u002Fapi-rstore-schema.md) |\n| useStore (#imports) | Nuxt runtime store accessor | [api-use-store](.\u002Freferences\u002Fapi-use-store.md) |\n| SSR cache hydration ($srstore) | Payload cache serialization\u002Fhydration | [api-cache-hydration](.\u002Freferences\u002Fapi-cache-hydration.md) |\n| Devtools route (\u002F__rstore) | Custom devtools UI route wiring | [api-devtools-route](.\u002Freferences\u002Fapi-devtools-route.md) |\n| Base @rstore\u002Fvue skill | Underlying collection\u002Fquery\u002Fform semantics | `rstore-vue` skill |\n\n## Further reading\n\n- Getting started (Nuxt): [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fgetting-started#nuxt](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fgetting-started#nuxt)\n- Query docs: [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fquery](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fquery)\n- Cache docs: [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fcache](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fcache)\n- Plugin hook docs: [https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fhooks](https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fhooks)\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,68,75,261,267,442,448,618,623,633,639,828,834,934,940,990,996,1073,1079,1364,1370,1413],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","Rstore Nuxt",{"type":39,"tag":47,"props":48,"children":49},"p",{},[50,52,59,61,66],{"type":44,"value":51},"Wire ",{"type":39,"tag":53,"props":54,"children":56},"code",{"className":55},[],[57],{"type":44,"value":58},"@rstore\u002Fvue",{"type":44,"value":60}," into Nuxt through module scanning, generated templates, SSR hydration, and devtools integration.\nUse this skill together with the ",{"type":39,"tag":53,"props":62,"children":64},{"className":63},[],[65],{"type":44,"value":58},{"type":44,"value":67}," skill for collection\u002Fquery\u002Fform semantics.",{"type":39,"tag":69,"props":70,"children":72},"h2",{"id":71},"documentation-map",[73],{"type":44,"value":74},"Documentation map",{"type":39,"tag":76,"props":77,"children":78},"table",{},[79,98],{"type":39,"tag":80,"props":81,"children":82},"thead",{},[83],{"type":39,"tag":84,"props":85,"children":86},"tr",{},[87,93],{"type":39,"tag":88,"props":89,"children":90},"th",{},[91],{"type":44,"value":92},"Area",{"type":39,"tag":88,"props":94,"children":95},{},[96],{"type":44,"value":97},"Documentation",{"type":39,"tag":99,"props":100,"children":101},"tbody",{},[102,122,147,171,195,219,245],{"type":39,"tag":84,"props":103,"children":104},{},[105,111],{"type":39,"tag":106,"props":107,"children":108},"td",{},[109],{"type":44,"value":110},"Nuxt setup",{"type":39,"tag":106,"props":112,"children":113},{},[114],{"type":39,"tag":115,"props":116,"children":120},"a",{"href":117,"rel":118},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fgetting-started#nuxt",[119],"nofollow",[121],{"type":44,"value":117},{"type":39,"tag":84,"props":123,"children":124},{},[125,130],{"type":39,"tag":106,"props":126,"children":127},{},[128],{"type":44,"value":129},"Collections and relations",{"type":39,"tag":106,"props":131,"children":132},{},[133,139,141],{"type":39,"tag":115,"props":134,"children":137},{"href":135,"rel":136},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fschema\u002Fcollection",[119],[138],{"type":44,"value":135},{"type":44,"value":140},", ",{"type":39,"tag":115,"props":142,"children":145},{"href":143,"rel":144},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fschema\u002Frelations",[119],[146],{"type":44,"value":143},{"type":39,"tag":84,"props":148,"children":149},{},[150,155],{"type":39,"tag":106,"props":151,"children":152},{},[153],{"type":44,"value":154},"Query and mutation model",{"type":39,"tag":106,"props":156,"children":157},{},[158,164,165],{"type":39,"tag":115,"props":159,"children":162},{"href":160,"rel":161},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fquery",[119],[163],{"type":44,"value":160},{"type":44,"value":140},{"type":39,"tag":115,"props":166,"children":169},{"href":167,"rel":168},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fmutation",[119],[170],{"type":44,"value":167},{"type":39,"tag":84,"props":172,"children":173},{},[174,179],{"type":39,"tag":106,"props":175,"children":176},{},[177],{"type":44,"value":178},"Cache and live updates",{"type":39,"tag":106,"props":180,"children":181},{},[182,188,189],{"type":39,"tag":115,"props":183,"children":186},{"href":184,"rel":185},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Fcache",[119],[187],{"type":44,"value":184},{"type":44,"value":140},{"type":39,"tag":115,"props":190,"children":193},{"href":191,"rel":192},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fdata\u002Flive",[119],[194],{"type":44,"value":191},{"type":39,"tag":84,"props":196,"children":197},{},[198,203],{"type":39,"tag":106,"props":199,"children":200},{},[201],{"type":44,"value":202},"Plugin extension model",{"type":39,"tag":106,"props":204,"children":205},{},[206,212,213],{"type":39,"tag":115,"props":207,"children":210},{"href":208,"rel":209},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fsetup",[119],[211],{"type":44,"value":208},{"type":44,"value":140},{"type":39,"tag":115,"props":214,"children":217},{"href":215,"rel":216},"https:\u002F\u002Frstore.akryum.dev\u002Fguide\u002Fplugin\u002Fhooks",[119],[218],{"type":44,"value":215},{"type":39,"tag":84,"props":220,"children":221},{},[222,227],{"type":39,"tag":106,"props":223,"children":224},{},[225],{"type":44,"value":226},"Related package skills",{"type":39,"tag":106,"props":228,"children":229},{},[230,236,238,243],{"type":39,"tag":53,"props":231,"children":233},{"className":232},[],[234],{"type":44,"value":235},"rstore-vue",{"type":44,"value":237}," skill (",{"type":39,"tag":53,"props":239,"children":241},{"className":240},[],[242],{"type":44,"value":58},{"type":44,"value":244},")",{"type":39,"tag":84,"props":246,"children":247},{},[248,253],{"type":39,"tag":106,"props":249,"children":250},{},[251],{"type":44,"value":252},"Skill-local API references",{"type":39,"tag":106,"props":254,"children":255},{},[256],{"type":39,"tag":115,"props":257,"children":259},{"href":258},".\u002Freferences\u002Findex.md",[260],{"type":44,"value":258},{"type":39,"tag":69,"props":262,"children":264},{"id":263},"core-concepts",[265],{"type":44,"value":266},"Core concepts",{"type":39,"tag":76,"props":268,"children":269},{},[270,286],{"type":39,"tag":80,"props":271,"children":272},{},[273],{"type":39,"tag":84,"props":274,"children":275},{},[276,281],{"type":39,"tag":88,"props":277,"children":278},{},[279],{"type":44,"value":280},"Primitive",{"type":39,"tag":88,"props":282,"children":283},{},[284],{"type":44,"value":285},"Purpose",{"type":39,"tag":99,"props":287,"children":288},{},[289,306,323,340,357,374,398,417],{"type":39,"tag":84,"props":290,"children":291},{},[292,301],{"type":39,"tag":106,"props":293,"children":294},{},[295],{"type":39,"tag":53,"props":296,"children":298},{"className":297},[],[299],{"type":44,"value":300},"rstore.rstoreDirs",{"type":39,"tag":106,"props":302,"children":303},{},[304],{"type":44,"value":305},"Per-layer directories scanned for collections and plugins",{"type":39,"tag":84,"props":307,"children":308},{},[309,318],{"type":39,"tag":106,"props":310,"children":311},{},[312],{"type":39,"tag":53,"props":313,"children":315},{"className":314},[],[316],{"type":44,"value":317},"\u003CrstoreDir>\u002F*.ts",{"type":39,"tag":106,"props":319,"children":320},{},[321],{"type":44,"value":322},"Collection\u002Frelations exports included in generated schema",{"type":39,"tag":84,"props":324,"children":325},{},[326,335],{"type":39,"tag":106,"props":327,"children":328},{},[329],{"type":39,"tag":53,"props":330,"children":332},{"className":331},[],[333],{"type":44,"value":334},"\u003CrstoreDir>\u002Fplugins\u002F*.ts",{"type":39,"tag":106,"props":336,"children":337},{},[338],{"type":44,"value":339},"Plugin exports included in generated plugin list",{"type":39,"tag":84,"props":341,"children":342},{},[343,352],{"type":39,"tag":106,"props":344,"children":345},{},[346],{"type":39,"tag":53,"props":347,"children":349},{"className":348},[],[350],{"type":44,"value":351},"#build\u002F$rstore-collection",{"type":39,"tag":106,"props":353,"children":354},{},[355],{"type":44,"value":356},"Generated schema template from scanned collection files",{"type":39,"tag":84,"props":358,"children":359},{},[360,369],{"type":39,"tag":106,"props":361,"children":362},{},[363],{"type":39,"tag":53,"props":364,"children":366},{"className":365},[],[367],{"type":44,"value":368},"#build\u002F$rstore-plugins",{"type":39,"tag":106,"props":370,"children":371},{},[372],{"type":44,"value":373},"Generated plugin exports from scanned plugin files",{"type":39,"tag":84,"props":375,"children":376},{},[377,386],{"type":39,"tag":106,"props":378,"children":379},{},[380],{"type":39,"tag":53,"props":381,"children":383},{"className":382},[],[384],{"type":44,"value":385},"#build\u002F$restore-options",{"type":39,"tag":106,"props":387,"children":388},{},[389,391,397],{"type":44,"value":390},"Generated options template (",{"type":39,"tag":53,"props":392,"children":394},{"className":393},[],[395],{"type":44,"value":396},"experimentalGarbageCollection",{"type":44,"value":244},{"type":39,"tag":84,"props":399,"children":400},{},[401,406],{"type":39,"tag":106,"props":402,"children":403},{},[404],{"type":44,"value":405},"Runtime plugin layer",{"type":39,"tag":106,"props":407,"children":408},{},[409,411],{"type":44,"value":410},"Creates store, installs plugin, serializes\u002Fhydrates cache, injects ",{"type":39,"tag":53,"props":412,"children":414},{"className":413},[],[415],{"type":44,"value":416},"$rstore",{"type":39,"tag":84,"props":418,"children":419},{},[420,437],{"type":39,"tag":106,"props":421,"children":422},{},[423,429,431],{"type":39,"tag":53,"props":424,"children":426},{"className":425},[],[427],{"type":44,"value":428},"addCollectionImport",{"type":44,"value":430}," \u002F ",{"type":39,"tag":53,"props":432,"children":434},{"className":433},[],[435],{"type":44,"value":436},"addPluginImport",{"type":39,"tag":106,"props":438,"children":439},{},[440],{"type":44,"value":441},"Public extension hooks for other Nuxt modules",{"type":39,"tag":69,"props":443,"children":445},{"id":444},"quick-start",[446],{"type":44,"value":447},"Quick start",{"type":39,"tag":449,"props":450,"children":455},"pre",{"className":451,"code":452,"language":453,"meta":454,"style":454},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@rstore\u002Fnuxt'],\n  rstore: {\n    rstoreDirs: ['rstore'],\n  },\n})\n","ts","",[456],{"type":39,"tag":53,"props":457,"children":458},{"__ignoreMap":454},[459,494,539,557,595,604],{"type":39,"tag":460,"props":461,"children":464},"span",{"class":462,"line":463},"line",1,[465,471,476,482,488],{"type":39,"tag":460,"props":466,"children":468},{"style":467},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[469],{"type":44,"value":470},"export",{"type":39,"tag":460,"props":472,"children":473},{"style":467},[474],{"type":44,"value":475}," default",{"type":39,"tag":460,"props":477,"children":479},{"style":478},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[480],{"type":44,"value":481}," defineNuxtConfig",{"type":39,"tag":460,"props":483,"children":485},{"style":484},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[486],{"type":44,"value":487},"(",{"type":39,"tag":460,"props":489,"children":491},{"style":490},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[492],{"type":44,"value":493},"{\n",{"type":39,"tag":460,"props":495,"children":497},{"class":462,"line":496},2,[498,504,509,514,519,525,529,534],{"type":39,"tag":460,"props":499,"children":501},{"style":500},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[502],{"type":44,"value":503},"  modules",{"type":39,"tag":460,"props":505,"children":506},{"style":490},[507],{"type":44,"value":508},":",{"type":39,"tag":460,"props":510,"children":511},{"style":484},[512],{"type":44,"value":513}," [",{"type":39,"tag":460,"props":515,"children":516},{"style":490},[517],{"type":44,"value":518},"'",{"type":39,"tag":460,"props":520,"children":522},{"style":521},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[523],{"type":44,"value":524},"@rstore\u002Fnuxt",{"type":39,"tag":460,"props":526,"children":527},{"style":490},[528],{"type":44,"value":518},{"type":39,"tag":460,"props":530,"children":531},{"style":484},[532],{"type":44,"value":533},"]",{"type":39,"tag":460,"props":535,"children":536},{"style":490},[537],{"type":44,"value":538},",\n",{"type":39,"tag":460,"props":540,"children":542},{"class":462,"line":541},3,[543,548,552],{"type":39,"tag":460,"props":544,"children":545},{"style":500},[546],{"type":44,"value":547},"  rstore",{"type":39,"tag":460,"props":549,"children":550},{"style":490},[551],{"type":44,"value":508},{"type":39,"tag":460,"props":553,"children":554},{"style":490},[555],{"type":44,"value":556}," {\n",{"type":39,"tag":460,"props":558,"children":560},{"class":462,"line":559},4,[561,566,570,574,578,583,587,591],{"type":39,"tag":460,"props":562,"children":563},{"style":500},[564],{"type":44,"value":565},"    rstoreDirs",{"type":39,"tag":460,"props":567,"children":568},{"style":490},[569],{"type":44,"value":508},{"type":39,"tag":460,"props":571,"children":572},{"style":484},[573],{"type":44,"value":513},{"type":39,"tag":460,"props":575,"children":576},{"style":490},[577],{"type":44,"value":518},{"type":39,"tag":460,"props":579,"children":580},{"style":521},[581],{"type":44,"value":582},"rstore",{"type":39,"tag":460,"props":584,"children":585},{"style":490},[586],{"type":44,"value":518},{"type":39,"tag":460,"props":588,"children":589},{"style":484},[590],{"type":44,"value":533},{"type":39,"tag":460,"props":592,"children":593},{"style":490},[594],{"type":44,"value":538},{"type":39,"tag":460,"props":596,"children":598},{"class":462,"line":597},5,[599],{"type":39,"tag":460,"props":600,"children":601},{"style":490},[602],{"type":44,"value":603},"  },\n",{"type":39,"tag":460,"props":605,"children":607},{"class":462,"line":606},6,[608,613],{"type":39,"tag":460,"props":609,"children":610},{"style":490},[611],{"type":44,"value":612},"}",{"type":39,"tag":460,"props":614,"children":615},{"style":484},[616],{"type":44,"value":617},")\n",{"type":39,"tag":47,"props":619,"children":620},{},[621],{"type":44,"value":622},"Expected layout:",{"type":39,"tag":449,"props":624,"children":628},{"className":625,"code":627,"language":44,"meta":454},[626],"language-text","rstore\u002F\n  todos.ts\n  users.ts\n  plugins\u002F\n    remote.ts\n",[629],{"type":39,"tag":53,"props":630,"children":631},{"__ignoreMap":454},[632],{"type":44,"value":627},{"type":39,"tag":69,"props":634,"children":636},{"id":635},"task-workflow",[637],{"type":44,"value":638},"Task workflow",{"type":39,"tag":640,"props":641,"children":642},"ol",{},[643,664,676,697,780,798,803],{"type":39,"tag":644,"props":645,"children":646},"li",{},[647,649,654,656,662],{"type":44,"value":648},"Register ",{"type":39,"tag":53,"props":650,"children":652},{"className":651},[],[653],{"type":44,"value":524},{"type":44,"value":655}," in ",{"type":39,"tag":53,"props":657,"children":659},{"className":658},[],[660],{"type":44,"value":661},"modules",{"type":44,"value":663},".",{"type":39,"tag":644,"props":665,"children":666},{},[667,669,675],{"type":44,"value":668},"Keep collections and plugin files inside configured ",{"type":39,"tag":53,"props":670,"children":672},{"className":671},[],[673],{"type":44,"value":674},"rstoreDirs",{"type":44,"value":663},{"type":39,"tag":644,"props":677,"children":678},{},[679,681,687,689,695],{"type":44,"value":680},"Ensure collection files export ",{"type":39,"tag":53,"props":682,"children":684},{"className":683},[],[685],{"type":44,"value":686},"default",{"type":44,"value":688}," or named ",{"type":39,"tag":53,"props":690,"children":692},{"className":691},[],[693],{"type":44,"value":694},"const",{"type":44,"value":696}," values intended for schema assembly.",{"type":39,"tag":644,"props":698,"children":699},{},[700,702,708,710,716,718,724,726,732,734,740,742,748,750,756,757,763,764,770,772,778],{"type":44,"value":701},"Use ",{"type":39,"tag":53,"props":703,"children":705},{"className":704},[],[706],{"type":44,"value":707},"useStore()",{"type":44,"value":709}," and auto-imports from ",{"type":39,"tag":53,"props":711,"children":713},{"className":712},[],[714],{"type":44,"value":715},"#imports",{"type":44,"value":717}," in app code, not ad hoc store singletons. Before adding a ",{"type":39,"tag":53,"props":719,"children":721},{"className":720},[],[722],{"type":44,"value":723},"server\u002Fapi\u002F*.ts",{"type":44,"value":725}," handler, a ",{"type":39,"tag":53,"props":727,"children":729},{"className":728},[],[730],{"type":44,"value":731},"defineEventHandler",{"type":44,"value":733},", or a ",{"type":39,"tag":53,"props":735,"children":737},{"className":736},[],[738],{"type":44,"value":739},"useFetch",{"type":44,"value":741},"\u002F",{"type":39,"tag":53,"props":743,"children":745},{"className":744},[],[746],{"type":44,"value":747},"$fetch",{"type":44,"value":749}," composable for collection data, check whether a collection API (",{"type":39,"tag":53,"props":751,"children":753},{"className":752},[],[754],{"type":44,"value":755},"find*",{"type":44,"value":140},{"type":39,"tag":53,"props":758,"children":760},{"className":759},[],[761],{"type":44,"value":762},"query",{"type":44,"value":140},{"type":39,"tag":53,"props":765,"children":767},{"className":766},[],[768],{"type":44,"value":769},"liveQuery",{"type":44,"value":771},") or a plugin hook already covers it — if the data is Drizzle-backed, see the ",{"type":39,"tag":53,"props":773,"children":775},{"className":774},[],[776],{"type":44,"value":777},"rstore-nuxt-drizzle",{"type":44,"value":779}," skill for the generated endpoint + hook story.",{"type":39,"tag":644,"props":781,"children":782},{},[783,785,790,791,796],{"type":44,"value":784},"For cross-module extension, call ",{"type":39,"tag":53,"props":786,"children":788},{"className":787},[],[789],{"type":44,"value":428},{"type":44,"value":430},{"type":39,"tag":53,"props":792,"children":794},{"className":793},[],[795],{"type":44,"value":436},{"type":44,"value":797}," from module setup.",{"type":39,"tag":644,"props":799,"children":800},{},[801],{"type":44,"value":802},"Validate generated template output when debugging scan\u002Finjection issues.",{"type":39,"tag":644,"props":804,"children":805},{},[806,808,813,814,819,821,826],{"type":44,"value":807},"For behavior inside collection APIs (",{"type":39,"tag":53,"props":809,"children":811},{"className":810},[],[812],{"type":44,"value":755},{"type":44,"value":140},{"type":39,"tag":53,"props":815,"children":817},{"className":816},[],[818],{"type":44,"value":762},{"type":44,"value":820},", forms, hooks), use the ",{"type":39,"tag":53,"props":822,"children":824},{"className":823},[],[825],{"type":44,"value":235},{"type":44,"value":827}," skill.",{"type":39,"tag":69,"props":829,"children":831},{"id":830},"rely-on-the-generated-runtime",[832],{"type":44,"value":833},"Rely on the generated runtime",{"type":39,"tag":835,"props":836,"children":837},"ul",{},[838,886,899,912,917],{"type":39,"tag":644,"props":839,"children":840},{},[841,843,849,850,856,857,863,864,870,871,877,878,884],{"type":44,"value":842},"Auto-imports include ",{"type":39,"tag":53,"props":844,"children":846},{"className":845},[],[847],{"type":44,"value":848},"withItemType",{"type":44,"value":140},{"type":39,"tag":53,"props":851,"children":853},{"className":852},[],[854],{"type":44,"value":855},"defineCollection",{"type":44,"value":140},{"type":39,"tag":53,"props":858,"children":860},{"className":859},[],[861],{"type":44,"value":862},"defineRstorePlugin",{"type":44,"value":140},{"type":39,"tag":53,"props":865,"children":867},{"className":866},[],[868],{"type":44,"value":869},"defineRstoreModule",{"type":44,"value":140},{"type":39,"tag":53,"props":872,"children":874},{"className":873},[],[875],{"type":44,"value":876},"useStore",{"type":44,"value":140},{"type":39,"tag":53,"props":879,"children":881},{"className":880},[],[882],{"type":44,"value":883},"RStoreSchema",{"type":44,"value":885},", plus related types.",{"type":39,"tag":644,"props":887,"children":888},{},[889,891,897],{"type":44,"value":890},"The module generates and uses ",{"type":39,"tag":53,"props":892,"children":894},{"className":893},[],[895],{"type":44,"value":896},"#build",{"type":44,"value":898}," templates instead of requiring manual registry wiring.",{"type":39,"tag":644,"props":900,"children":901},{},[902,904,910],{"type":44,"value":903},"The runtime plugin serializes cache state to ",{"type":39,"tag":53,"props":905,"children":907},{"className":906},[],[908],{"type":44,"value":909},"nuxtApp.payload.state.$srstore",{"type":44,"value":911}," on render and hydrates on client load.",{"type":39,"tag":644,"props":913,"children":914},{},[915],{"type":44,"value":916},"In development, a devtools plugin is appended automatically by runtime code.",{"type":39,"tag":644,"props":918,"children":919},{},[920,925,927,933],{"type":39,"tag":53,"props":921,"children":923},{"className":922},[],[924],{"type":44,"value":396},{"type":44,"value":926}," is passed from module options into ",{"type":39,"tag":53,"props":928,"children":930},{"className":929},[],[931],{"type":44,"value":932},"createStore",{"type":44,"value":663},{"type":39,"tag":69,"props":935,"children":937},{"id":936},"extending-from-another-nuxt-module",[938],{"type":44,"value":939},"Extending from another Nuxt module",{"type":39,"tag":835,"props":941,"children":942},{},[943,954,965,985],{"type":39,"tag":644,"props":944,"children":945},{},[946,952],{"type":39,"tag":53,"props":947,"children":949},{"className":948},[],[950],{"type":44,"value":951},"addCollectionImport(nuxt, importPath)",{"type":44,"value":953}," appends import sources merged into generated schema.",{"type":39,"tag":644,"props":955,"children":956},{},[957,963],{"type":39,"tag":53,"props":958,"children":960},{"className":959},[],[961],{"type":44,"value":962},"addPluginImport(nuxt, importPath)",{"type":44,"value":964}," appends plugin imports merged into generated plugin list.",{"type":39,"tag":644,"props":966,"children":967},{},[968,970,976,977,983],{"type":44,"value":969},"Use these APIs instead of mutating ",{"type":39,"tag":53,"props":971,"children":973},{"className":972},[],[974],{"type":44,"value":975},"_rstoreCollectionImports",{"type":44,"value":741},{"type":39,"tag":53,"props":978,"children":980},{"className":979},[],[981],{"type":44,"value":982},"_rstorePluginImports",{"type":44,"value":984}," directly.",{"type":39,"tag":644,"props":986,"children":987},{},[988],{"type":44,"value":989},"Imported collection modules should export values that are valid store schema entries.",{"type":39,"tag":69,"props":991,"children":993},{"id":992},"guardrails",[994],{"type":44,"value":995},"Guardrails",{"type":39,"tag":640,"props":997,"children":998},{},[999,1017,1029,1034,1052],{"type":39,"tag":644,"props":1000,"children":1001},{},[1002,1004,1009,1011,1016],{"type":44,"value":1003},"Collection scan warns when files export neither ",{"type":39,"tag":53,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":44,"value":686},{"type":44,"value":1010}," nor named ",{"type":39,"tag":53,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":44,"value":694},{"type":44,"value":663},{"type":39,"tag":644,"props":1018,"children":1019},{},[1020,1022,1028],{"type":44,"value":1021},"Files in scanned collection directories should stay export-focused; extra exported helpers can be pulled into schema by ",{"type":39,"tag":53,"props":1023,"children":1025},{"className":1024},[],[1026],{"type":44,"value":1027},"Object.values(...)",{"type":44,"value":663},{"type":39,"tag":644,"props":1030,"children":1031},{},[1032],{"type":44,"value":1033},"Avoid creating your own second Nuxt-side store instance; runtime plugin owns app store lifecycle.",{"type":39,"tag":644,"props":1035,"children":1036},{},[1037,1039,1044,1046,1051],{"type":44,"value":1038},"Debug missing data by inspecting generated ",{"type":39,"tag":53,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":44,"value":351},{"type":44,"value":1045}," and ",{"type":39,"tag":53,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":44,"value":368},{"type":44,"value":663},{"type":39,"tag":644,"props":1053,"children":1054},{},[1055,1057,1063,1065,1071],{"type":44,"value":1056},"Devtools route ",{"type":39,"tag":53,"props":1058,"children":1060},{"className":1059},[],[1061],{"type":44,"value":1062},"\u002F__rstore",{"type":44,"value":1064}," is module-owned and served\u002Fproxied by ",{"type":39,"tag":53,"props":1066,"children":1068},{"className":1067},[],[1069],{"type":44,"value":1070},"setupDevToolsUI",{"type":44,"value":1072},"; do not duplicate that wiring in app code.",{"type":39,"tag":69,"props":1074,"children":1076},{"id":1075},"references",[1077],{"type":44,"value":1078},"References",{"type":39,"tag":76,"props":1080,"children":1081},{},[1082,1103],{"type":39,"tag":80,"props":1083,"children":1084},{},[1085],{"type":39,"tag":84,"props":1086,"children":1087},{},[1088,1093,1098],{"type":39,"tag":88,"props":1089,"children":1090},{},[1091],{"type":44,"value":1092},"Topic",{"type":39,"tag":88,"props":1094,"children":1095},{},[1096],{"type":44,"value":1097},"Description",{"type":39,"tag":88,"props":1099,"children":1100},{},[1101],{"type":44,"value":1102},"Reference",{"type":39,"tag":99,"props":1104,"children":1105},{},[1106,1127,1148,1170,1191,1212,1233,1254,1275,1297,1319,1341],{"type":39,"tag":84,"props":1107,"children":1108},{},[1109,1114,1119],{"type":39,"tag":106,"props":1110,"children":1111},{},[1112],{"type":44,"value":1113},"API index",{"type":39,"tag":106,"props":1115,"children":1116},{},[1117],{"type":44,"value":1118},"Full map of Nuxt API\u002Fconfig references",{"type":39,"tag":106,"props":1120,"children":1121},{},[1122],{"type":39,"tag":115,"props":1123,"children":1124},{"href":258},[1125],{"type":44,"value":1126},"api-index",{"type":39,"tag":84,"props":1128,"children":1129},{},[1130,1134,1139],{"type":39,"tag":106,"props":1131,"children":1132},{},[1133],{"type":44,"value":300},{"type":39,"tag":106,"props":1135,"children":1136},{},[1137],{"type":44,"value":1138},"Collection\u002Fplugin scan directory option",{"type":39,"tag":106,"props":1140,"children":1141},{},[1142],{"type":39,"tag":115,"props":1143,"children":1145},{"href":1144},".\u002Freferences\u002Fapi-rstore-dirs.md",[1146],{"type":44,"value":1147},"api-rstore-dirs",{"type":39,"tag":84,"props":1149,"children":1150},{},[1151,1156,1161],{"type":39,"tag":106,"props":1152,"children":1153},{},[1154],{"type":44,"value":1155},"rstore.experimentalGarbageCollection",{"type":39,"tag":106,"props":1157,"children":1158},{},[1159],{"type":44,"value":1160},"Pass-through garbage collection option",{"type":39,"tag":106,"props":1162,"children":1163},{},[1164],{"type":39,"tag":115,"props":1165,"children":1167},{"href":1166},".\u002Freferences\u002Fapi-experimental-garbage-collection.md",[1168],{"type":44,"value":1169},"api-experimental-garbage-collection",{"type":39,"tag":84,"props":1171,"children":1172},{},[1173,1177,1182],{"type":39,"tag":106,"props":1174,"children":1175},{},[1176],{"type":44,"value":428},{"type":39,"tag":106,"props":1178,"children":1179},{},[1180],{"type":44,"value":1181},"Extend generated collection imports",{"type":39,"tag":106,"props":1183,"children":1184},{},[1185],{"type":39,"tag":115,"props":1186,"children":1188},{"href":1187},".\u002Freferences\u002Fapi-add-collection-import.md",[1189],{"type":44,"value":1190},"api-add-collection-import",{"type":39,"tag":84,"props":1192,"children":1193},{},[1194,1198,1203],{"type":39,"tag":106,"props":1195,"children":1196},{},[1197],{"type":44,"value":436},{"type":39,"tag":106,"props":1199,"children":1200},{},[1201],{"type":44,"value":1202},"Extend generated plugin imports",{"type":39,"tag":106,"props":1204,"children":1205},{},[1206],{"type":39,"tag":115,"props":1207,"children":1209},{"href":1208},".\u002Freferences\u002Fapi-add-plugin-import.md",[1210],{"type":44,"value":1211},"api-add-plugin-import",{"type":39,"tag":84,"props":1213,"children":1214},{},[1215,1219,1224],{"type":39,"tag":106,"props":1216,"children":1217},{},[1218],{"type":44,"value":862},{"type":39,"tag":106,"props":1220,"children":1221},{},[1222],{"type":44,"value":1223},"Nuxt alias for definePlugin",{"type":39,"tag":106,"props":1225,"children":1226},{},[1227],{"type":39,"tag":115,"props":1228,"children":1230},{"href":1229},".\u002Freferences\u002Fapi-define-rstore-plugin.md",[1231],{"type":44,"value":1232},"api-define-rstore-plugin",{"type":39,"tag":84,"props":1234,"children":1235},{},[1236,1240,1245],{"type":39,"tag":106,"props":1237,"children":1238},{},[1239],{"type":44,"value":869},{"type":39,"tag":106,"props":1241,"children":1242},{},[1243],{"type":44,"value":1244},"Nuxt alias for defineModule",{"type":39,"tag":106,"props":1246,"children":1247},{},[1248],{"type":39,"tag":115,"props":1249,"children":1251},{"href":1250},".\u002Freferences\u002Fapi-define-rstore-module.md",[1252],{"type":44,"value":1253},"api-define-rstore-module",{"type":39,"tag":84,"props":1255,"children":1256},{},[1257,1261,1266],{"type":39,"tag":106,"props":1258,"children":1259},{},[1260],{"type":44,"value":883},{"type":39,"tag":106,"props":1262,"children":1263},{},[1264],{"type":44,"value":1265},"Namespaced schema helper object",{"type":39,"tag":106,"props":1267,"children":1268},{},[1269],{"type":39,"tag":115,"props":1270,"children":1272},{"href":1271},".\u002Freferences\u002Fapi-rstore-schema.md",[1273],{"type":44,"value":1274},"api-rstore-schema",{"type":39,"tag":84,"props":1276,"children":1277},{},[1278,1283,1288],{"type":39,"tag":106,"props":1279,"children":1280},{},[1281],{"type":44,"value":1282},"useStore (#imports)",{"type":39,"tag":106,"props":1284,"children":1285},{},[1286],{"type":44,"value":1287},"Nuxt runtime store accessor",{"type":39,"tag":106,"props":1289,"children":1290},{},[1291],{"type":39,"tag":115,"props":1292,"children":1294},{"href":1293},".\u002Freferences\u002Fapi-use-store.md",[1295],{"type":44,"value":1296},"api-use-store",{"type":39,"tag":84,"props":1298,"children":1299},{},[1300,1305,1310],{"type":39,"tag":106,"props":1301,"children":1302},{},[1303],{"type":44,"value":1304},"SSR cache hydration ($srstore)",{"type":39,"tag":106,"props":1306,"children":1307},{},[1308],{"type":44,"value":1309},"Payload cache serialization\u002Fhydration",{"type":39,"tag":106,"props":1311,"children":1312},{},[1313],{"type":39,"tag":115,"props":1314,"children":1316},{"href":1315},".\u002Freferences\u002Fapi-cache-hydration.md",[1317],{"type":44,"value":1318},"api-cache-hydration",{"type":39,"tag":84,"props":1320,"children":1321},{},[1322,1327,1332],{"type":39,"tag":106,"props":1323,"children":1324},{},[1325],{"type":44,"value":1326},"Devtools route (\u002F__rstore)",{"type":39,"tag":106,"props":1328,"children":1329},{},[1330],{"type":44,"value":1331},"Custom devtools UI route wiring",{"type":39,"tag":106,"props":1333,"children":1334},{},[1335],{"type":39,"tag":115,"props":1336,"children":1338},{"href":1337},".\u002Freferences\u002Fapi-devtools-route.md",[1339],{"type":44,"value":1340},"api-devtools-route",{"type":39,"tag":84,"props":1342,"children":1343},{},[1344,1349,1354],{"type":39,"tag":106,"props":1345,"children":1346},{},[1347],{"type":44,"value":1348},"Base @rstore\u002Fvue skill",{"type":39,"tag":106,"props":1350,"children":1351},{},[1352],{"type":44,"value":1353},"Underlying collection\u002Fquery\u002Fform semantics",{"type":39,"tag":106,"props":1355,"children":1356},{},[1357,1362],{"type":39,"tag":53,"props":1358,"children":1360},{"className":1359},[],[1361],{"type":44,"value":235},{"type":44,"value":1363}," skill",{"type":39,"tag":69,"props":1365,"children":1367},{"id":1366},"further-reading",[1368],{"type":44,"value":1369},"Further reading",{"type":39,"tag":835,"props":1371,"children":1372},{},[1373,1383,1393,1403],{"type":39,"tag":644,"props":1374,"children":1375},{},[1376,1378],{"type":44,"value":1377},"Getting started (Nuxt): ",{"type":39,"tag":115,"props":1379,"children":1381},{"href":117,"rel":1380},[119],[1382],{"type":44,"value":117},{"type":39,"tag":644,"props":1384,"children":1385},{},[1386,1388],{"type":44,"value":1387},"Query docs: ",{"type":39,"tag":115,"props":1389,"children":1391},{"href":160,"rel":1390},[119],[1392],{"type":44,"value":160},{"type":39,"tag":644,"props":1394,"children":1395},{},[1396,1398],{"type":44,"value":1397},"Cache docs: ",{"type":39,"tag":115,"props":1399,"children":1401},{"href":184,"rel":1400},[119],[1402],{"type":44,"value":184},{"type":39,"tag":644,"props":1404,"children":1405},{},[1406,1408],{"type":44,"value":1407},"Plugin hook docs: ",{"type":39,"tag":115,"props":1409,"children":1411},{"href":215,"rel":1410},[119],[1412],{"type":44,"value":215},{"type":39,"tag":1414,"props":1415,"children":1416},"style",{},[1417],{"type":44,"value":1418},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1420,"total":1525},[1421,1435,1448,1454,1466,1477,1490,1501,1512],{"slug":1422,"name":1422,"fn":1423,"description":1424,"org":1425,"tags":1426,"stars":22,"repoUrl":23,"updatedAt":1434},"rstore-directus","integrate rstore with Directus","Use when integrating rstore with Directus runtime\u002Fschema helpers, generated Directus collections, Directus REST query options, cache-side Directus filtering, singleton handling, primary key stripping, and Directus-backed create\u002Fupdate\u002Fdelete behavior; also use before writing custom Directus fetch or mutation code around rstore collections. Pair with rstore-vue for collection\u002Fquery\u002Fform semantics and with framework-specific Directus skills for Vite or Nuxt wiring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1427,1430,1433],{"name":1428,"slug":1429,"type":15},"API Development","api-development",{"name":1431,"slug":1432,"type":15},"Database","database",{"name":9,"slug":8,"type":15},"2026-07-12T07:51:07.357988",{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1439,"tags":1440,"stars":22,"repoUrl":23,"updatedAt":1447},"rstore-monospace","integrate rstore with Monospace REST APIs","Use when integrating rstore with Monospace REST and OpenAPI helpers, generated Monospace collections, Monospace REST query options, primary key overrides, createMonospaceRestClient, createMonospaceRstorePlugin, createMonospaceQuery, and schema generation from remote or local OpenAPI documents; also use before writing custom Monospace REST CRUD around rstore collections.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1441,1444],{"name":1442,"slug":1443,"type":15},"OpenAPI","openapi",{"name":1445,"slug":1446,"type":15},"REST API","rest-api","2026-07-12T07:51:08.612664",{"slug":4,"name":4,"fn":5,"description":6,"org":1449,"tags":1450,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1451,1452,1453],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":777,"name":777,"fn":1455,"description":1456,"org":1457,"tags":1458,"stars":22,"repoUrl":23,"updatedAt":1465},"expose Drizzle data in Nuxt applications","Use when exposing Drizzle-backed data in Nuxt, OR before writing a custom `server\u002Fapi` route, Nitro `defineEventHandler`, H3 handler, or REST\u002FCRUD endpoint that reads or writes a Drizzle table — prefer the module's generated endpoints, `allowTables`, `hooksForTable`, and `publishRstoreDrizzleRealtimeUpdate` over hand-rolled routes; also covers generating collections\u002FAPI routes from schema, adding a new Drizzle table to the rstore API, fixing `Collection \"\u003Cname>\" is not allowed` errors, fetch\u002Ffilter\u002Fpaginate, create\u002Fupdate\u002Fdelete, realtime, offline, and table-level access control; pair with `rstore-nuxt` for Nuxt integration and `rstore-vue` for collection\u002Fquery\u002Fform behavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1459,1460,1461,1464],{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":1462,"slug":1463,"type":15},"Drizzle","drizzle",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:10.079641",{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1470,"tags":1471,"stars":22,"repoUrl":23,"updatedAt":1476},"rstore-nuxt-monospace","integrate Monospace into Nuxt applications","Use when wiring Monospace into a Nuxt app with @rstore\u002Fnuxt-monospace, including rstoreMonospace config, remote or local OpenAPI generation, generated #build templates, runtime plugin setup, auto-imported useMonospace, runtimeApiKey handling, primaryKeys, and generated rstore collections. Pair with rstore-monospace for shared REST\u002FOpenAPI behavior, rstore-nuxt for Nuxt store integration, and rstore-vue for query\u002Fform usage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1472,1473,1474,1475],{"name":1428,"slug":1429,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T07:51:12.752798",{"slug":1478,"name":1478,"fn":1479,"description":1480,"org":1481,"tags":1482,"stars":22,"repoUrl":23,"updatedAt":1489},"rstore-vite-directus","integrate Directus into Vite applications","Use when wiring Directus into a plain Vite\u002FVue app with @rstore\u002Fvite-directus, including rstoreDirectus config, virtual:rstore-directus modules, generated rstore-directus.d.ts declarations, build-time Directus introspection, and store setup with the generated schema and directusPlugin. Pair with rstore-directus for shared Directus adapter behavior and rstore-vue for collection\u002Fquery\u002Fform usage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1483,1484,1485,1488],{"name":1428,"slug":1429,"type":15},{"name":9,"slug":8,"type":15},{"name":1486,"slug":1487,"type":15},"Vite","vite",{"name":17,"slug":18,"type":15},"2026-07-12T07:51:11.475964",{"slug":1491,"name":1491,"fn":1492,"description":1493,"org":1494,"tags":1495,"stars":22,"repoUrl":23,"updatedAt":1500},"rstore-vite-monospace","integrate Monospace into Vite applications","Use when wiring Monospace into a plain Vite\u002FVue app with @rstore\u002Fvite-monospace, including rstoreMonospace config, remote or local OpenAPI generation, virtual:rstore-monospace modules, generated rstore-monospace.d.ts declarations, runtimeApiKey handling, primaryKeys, and store setup with the generated schema and monospacePlugin.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1496,1497,1498,1499],{"name":1428,"slug":1429,"type":15},{"name":9,"slug":8,"type":15},{"name":1486,"slug":1487,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T07:51:14.078949",{"slug":235,"name":235,"fn":1502,"description":1503,"org":1504,"tags":1505,"stars":22,"repoUrl":23,"updatedAt":1511},"manage application data with rstore in Vue","Use when handling app data in Vue with `@rstore\u002Fvue` — fetch items\u002Flists, keep queries reactive or live, create\u002Fupdate\u002Fdelete records with forms, manage cache consistency, and debug store\u002Fquery\u002Fsubscription behavior across collections; also use before writing a custom fetch composable, ad hoc fetch ref, or bespoke cache layer for collection data — prefer `find*`, `query`, `liveQuery`, `createForm`, and `definePlugin` hooks over hand-rolled fetching\u002Fcaching.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1506,1509,1510],{"name":1507,"slug":1508,"type":15},"Debugging","debugging",{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T07:51:04.87426",{"slug":1513,"name":1513,"fn":1514,"description":1515,"org":1516,"tags":1517,"stars":1522,"repoUrl":1523,"updatedAt":1524},"monospace","perform data operations on Monospace instances","Use when doing ANY task against a Monospace instance. Triggers: reading, creating, updating, deleting, querying, filtering, sorting, or paginating data via the Monospace REST API or the @monospace\u002Fsdk (createClient, readMany, createOne, updateOne); generating a typed SDK client (`npx @monospace\u002Fsdk generate`, monospace.config.ts); connecting to or using the Monospace MCP server; minting API keys or authenticating; inspecting collections, fields, relations, or schema. Do NOT use for legacy Directus v9 \u002F @directus\u002Fsdk — Monospace is a different product with a different API and SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1518,1519],{"name":1445,"slug":1446,"type":15},{"name":1520,"slug":1521,"type":15},"SDK","sdk",0,"https:\u002F\u002Fgithub.com\u002Fdirectus\u002Fmonospace-agent-skills","2026-07-12T07:51:15.348897",9,{"items":1527,"total":1573},[1528,1534,1539,1545,1552,1559,1566],{"slug":1422,"name":1422,"fn":1423,"description":1424,"org":1529,"tags":1530,"stars":22,"repoUrl":23,"updatedAt":1434},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1531,1532,1533],{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":9,"slug":8,"type":15},{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1535,"tags":1536,"stars":22,"repoUrl":23,"updatedAt":1447},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1537,1538],{"name":1442,"slug":1443,"type":15},{"name":1445,"slug":1446,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1540,"tags":1541,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1542,1543,1544],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":777,"name":777,"fn":1455,"description":1456,"org":1546,"tags":1547,"stars":22,"repoUrl":23,"updatedAt":1465},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1548,1549,1550,1551],{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":1462,"slug":1463,"type":15},{"name":13,"slug":14,"type":15},{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1553,"tags":1554,"stars":22,"repoUrl":23,"updatedAt":1476},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1555,1556,1557,1558],{"name":1428,"slug":1429,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":1478,"name":1478,"fn":1479,"description":1480,"org":1560,"tags":1561,"stars":22,"repoUrl":23,"updatedAt":1489},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1562,1563,1564,1565],{"name":1428,"slug":1429,"type":15},{"name":9,"slug":8,"type":15},{"name":1486,"slug":1487,"type":15},{"name":17,"slug":18,"type":15},{"slug":1491,"name":1491,"fn":1492,"description":1493,"org":1567,"tags":1568,"stars":22,"repoUrl":23,"updatedAt":1500},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1569,1570,1571,1572],{"name":1428,"slug":1429,"type":15},{"name":9,"slug":8,"type":15},{"name":1486,"slug":1487,"type":15},{"name":17,"slug":18,"type":15},8]