[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BGVHZN0G2JHTQQG3X8FCZ":3,"skill-same:01M69BGVHZN0G2JHTQQG3X8FCZ":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M69BGVHZN0G2JHTQQG3X8FCZ","capability-router",null,"START HERE at the beginning of essentially every build request in this universal Rayfin app. Use this first whenever the user asks to build, create, add, or make something (\"build me an app\", \"add sign-in\", \"let users upload files\", \"show a chart\", \"build a dashboard\", \"store todos\", \"make a Power BI report\") and you need to decide WHICH capabilities to turn on. This skill maps the request to capability packs and tells you, for each, which Fabric service to enable, which npm modules to install, which code to scaffold, and which skill to read next. Triggers: build, create, add, make, app, feature, start, scaffold, capability, which service, what should I install, where do I begin.","microsoft\u002Fawesome-rayfin","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BFJTNT39H6W8XT2H1BZDN",112,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Funiversal-app\u002F.agents\u002Fskills\u002Fcapability-router\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"capability","capability router","router","power","which","you","bi","chart","app","me","show","maps","files","modules","dashboard","decide","capabilities","report","code","fabric","create","power bi","rayfin","scaffold","2026-11-10 10:12:30",false,"---\nname: capability-router\ndescription: >\n  START HERE at the beginning of essentially every build request in this\n  universal Rayfin app. Use this first whenever the user asks to build, create,\n  add, or make something (\"build me an app\", \"add sign-in\", \"let users upload\n  files\", \"show a chart\", \"build a dashboard\", \"store todos\", \"make a Power BI\n  report\") and you need to decide WHICH capabilities to turn on. This skill maps\n  the request to capability packs and tells you, for each, which Fabric service\n  to enable, which npm modules to install, which code to scaffold, and which\n  skill to read next. Triggers: build, create, add, make, app, feature, start,\n  scaffold, capability, which service, what should I install, where do I begin.\n---\n\n# Capability router — pick capabilities, enable services, install modules, activate skills\n\nThis is a **lean universal app** that grows on demand. Your first job for any\nbuild request is to **route**: figure out which capabilities the request needs,\nthen turn on *only* those. Don't build everything; build toward what the user\nasked for.\n\n## The procedure\n\n1. **Classify the request** into one or more capabilities using the matrix below.\n   Most requests need 1–2 packs. When in doubt, start with the smallest set and\n   grow later — you can always route again on the next turn.\n2. **For each chosen pack, in order:**\n   0. **If the pack ships a `pack.json`, scaffold it in one command** — `npm run\n      pack:add -- \u003Cpack>` enables the service, installs the pinned modules,\n      copies the kit, and wires scripts in one idempotent pass (see\n      [`pack-manifest.md`](pack-manifest.md)). Today **`analytics`** ships one, so\n      that whole path is a single command — then jump straight to reading the\n      pack skill. Otherwise, do the manual steps below.\n   1. **Enable the service** — edit `rayfin\u002Frayfin.yml` (see the pack's row).\n      Auth + data + static hosting are already on.\n   2. **Install the modules** — `npm install \u003C…>` for that pack. Install just\n      what the pack needs; skip modules already in `package.json`. (Manifest\n      packs install their own modules; a manual `npm install` is fine for the\n      rest.)\n   3. **Scaffold the code** — create the entities \u002F wiring \u002F files the pack calls\n      for (the pack's row says what; the pack's SKILL.md has the patterns).\n   4. **Read the pack skill** — open `.agents\u002Fskills\u002F\u003Cpack>\u002FSKILL.md` and follow\n      it for the real implementation details. Don't duplicate its guidance here.\n3. **Keep it building**, then deploy with `rayfin up` when you're ready to see it\n   on Fabric (see `AGENTS.md`).\n\n## Capability matrix\n\n| Pack | Route here when the user wants… | Enable in `rayfin.yml` | Install | Scaffold | Then read |\n|---|---|---|---|---|---|\n| **authentication** | sign-in, accounts, login, logout, protected pages, \"who is the current user\", per-user data | `auth` (already on) | — (scaffolding already present) | Wire `AuthProvider` + `bootstrapAuth()` in `src\u002Fmain.tsx`; add the route guard in `src\u002FApp.tsx` | `authentication` |\n| **data-modeling** | records, CRUD, a database, entities, lists, \"save\u002Fstore X\", per-user rows, row-level security | `data` (already on, `dialect: mssql`) + `auth` | `@microsoft\u002Frayfin-data` | Add entity classes under `rayfin\u002Fdata\u002F*.ts`; register them in `rayfin\u002Fdata\u002Fschema.ts`; read\u002Fwrite via the `rayfin-client`; **wire auth** (Rayfin data is always authenticated) | `data-modeling` **+ `authentication`** |\n| **graphein-visuals** | a chart, graph, plot, KPI, table, or small dashboard over app data | — | `graphein` (already present) | Author a `ChartSpec`, drop into `\u003CChart spec={…} \u002F>` (`src\u002Fcomponents\u002FChart.tsx`) | `graphein-visuals` |\n| **analytics** | a **Power BI \u002F semantic-model** dashboard, DAX measures, BI reporting over an existing dataset | one command: **`npm run pack:add -- analytics`** (sets `auth` on \u002F **`data` off**, installs modules, copies `kit\u002F**`, seeds a runnable demo) | — (the command installs them) | — (the command copies the kit + seeds `App.tsx`\u002F`main.tsx`); then wire the semantic model | `analytics` (then `build-workflow`, `visuals`, `dax`, `fabric-data`, `app-design`, `headless-preview`) |\n\n## Notes on routing\n\n- **App-building vs analytics are different shapes.** The app-building packs\n  (`authentication`, `data-modeling`, `graphein-visuals`)\n  build a normal interactive app over Rayfin data, with `data` enabled. The\n  **`analytics`** pack builds a read-only dashboard over an external Power BI\n  **semantic model** (`data` disabled, its own dashboard kit). If the user wants\n  charts over **their own app's data**, use `graphein-visuals`; if they want a\n  dashboard over an **existing Power BI dataset\u002Freport**, use `analytics`.\n- **Charts everywhere.** `graphein-visuals` composes with the app-building packs\n  (e.g. `data-modeling` for the data + `graphein-visuals` for the chart).\n- **Row-level security** lives inside `data-modeling` — route there when the user\n  says \"each user only sees their own …\".\n- **Data implies auth.** Rayfin data is always accessed as an authenticated user\n  (no anonymous access on Fabric), so any request that stores or reads app data —\n  `data-modeling` especially — must **also wire `authentication`**; route to both.\n  A **static page over public data** needs neither. (Analytics is separate: its\n  Power BI model is read through the Fabric embed proxy, which Fabric\n  authenticates — no app `AuthProvider` needed.)\n- **Grow incrementally.** Ship the core of what was asked, let it deploy, then add\n  the next capability. You don't have to wire every pack up front.\n","# Capability router — pick capabilities, enable services, install modules, activate skills\n\nThis is a **lean universal app** that grows on demand. Your first job for any\nbuild request is to **route**: figure out which capabilities the request needs,\nthen turn on *only* those. Don't build everything; build toward what the user\nasked for.\n\n## The procedure\n\n1. **Classify the request** into one or more capabilities using the matrix below.\n   Most requests need 1–2 packs. When in doubt, start with the smallest set and\n   grow later — you can always route again on the next turn.\n2. **For each chosen pack, in order:**\n   0. **If the pack ships a `pack.json`, scaffold it in one command** — `npm run\n      pack:add -- \u003Cpack>` enables the service, installs the pinned modules,\n      copies the kit, and wires scripts in one idempotent pass (see\n      [`pack-manifest.md`](pack-manifest.md)). Today **`analytics`** ships one, so\n      that whole path is a single command — then jump straight to reading the\n      pack skill. Otherwise, do the manual steps below.\n   1. **Enable the service** — edit `rayfin\u002Frayfin.yml` (see the pack's row).\n      Auth + data + static hosting are already on.\n   2. **Install the modules** — `npm install \u003C…>` for that pack. Install just\n      what the pack needs; skip modules already in `package.json`. (Manifest\n      packs install their own modules; a manual `npm install` is fine for the\n      rest.)\n   3. **Scaffold the code** — create the entities \u002F wiring \u002F files the pack calls\n      for (the pack's row says what; the pack's SKILL.md has the patterns).\n   4. **Read the pack skill** — open `.agents\u002Fskills\u002F\u003Cpack>\u002FSKILL.md` and follow\n      it for the real implementation details. Don't duplicate its guidance here.\n3. **Keep it building**, then deploy with `rayfin up` when you're ready to see it\n   on Fabric (see `AGENTS.md`).\n\n## Capability matrix\n\n| Pack | Route here when the user wants… | Enable in `rayfin.yml` | Install | Scaffold | Then read |\n|---|---|---|---|---|---|\n| **authentication** | sign-in, accounts, login, logout, protected pages, \"who is the current user\", per-user data | `auth` (already on) | — (scaffolding already present) | Wire `AuthProvider` + `bootstrapAuth()` in `src\u002Fmain.tsx`; add the route guard in `src\u002FApp.tsx` | `authentication` |\n| **data-modeling** | records, CRUD, a database, entities, lists, \"save\u002Fstore X\", per-user rows, row-level security | `data` (already on, `dialect: mssql`) + `auth` | `@microsoft\u002Frayfin-data` | Add entity classes under `rayfin\u002Fdata\u002F*.ts`; register them in `rayfin\u002Fdata\u002Fschema.ts`; read\u002Fwrite via the `rayfin-client`; **wire auth** (Rayfin data is always authenticated) | `data-modeling` **+ `authentication`** |\n| **graphein-visuals** | a chart, graph, plot, KPI, table, or small dashboard over app data | — | `graphein` (already present) | Author a `ChartSpec`, drop into `\u003CChart spec={…} \u002F>` (`src\u002Fcomponents\u002FChart.tsx`) | `graphein-visuals` |\n| **analytics** | a **Power BI \u002F semantic-model** dashboard, DAX measures, BI reporting over an existing dataset | one command: **`npm run pack:add -- analytics`** (sets `auth` on \u002F **`data` off**, installs modules, copies `kit\u002F**`, seeds a runnable demo) | — (the command installs them) | — (the command copies the kit + seeds `App.tsx`\u002F`main.tsx`); then wire the semantic model | `analytics` (then `build-workflow`, `visuals`, `dax`, `fabric-data`, `app-design`, `headless-preview`) |\n\n## Notes on routing\n\n- **App-building vs analytics are different shapes.** The app-building packs\n  (`authentication`, `data-modeling`, `graphein-visuals`)\n  build a normal interactive app over Rayfin data, with `data` enabled. The\n  **`analytics`** pack builds a read-only dashboard over an external Power BI\n  **semantic model** (`data` disabled, its own dashboard kit). If the user wants\n  charts over **their own app's data**, use `graphein-visuals`; if they want a\n  dashboard over an **existing Power BI dataset\u002Freport**, use `analytics`.\n- **Charts everywhere.** `graphein-visuals` composes with the app-building packs\n  (e.g. `data-modeling` for the data + `graphein-visuals` for the chart).\n- **Row-level security** lives inside `data-modeling` — route there when the user\n  says \"each user only sees their own …\".\n- **Data implies auth.** Rayfin data is always accessed as an authenticated user\n  (no anonymous access on Fabric), so any request that stores or reads app data —\n  `data-modeling` especially — must **also wire `authentication`**; route to both.\n  A **static page over public data** needs neither. (Analytics is separate: its\n  Power BI model is read through the Fabric embed proxy, which Fabric\n  authenticates — no app `AuthProvider` needed.)\n- **Grow incrementally.** Ship the core of what was asked, let it deploy, then add\n  the next capability. You don't have to wire every pack up front.\n",{"name":5,"description":7},"main","6007598ad84bc06f9d584f0d2ba6af970422a9fe","templates\u002Funiversal-app\u002F.agents\u002Fskills\u002Fcapability-router",70,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-13 21:12:07",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add microsoft\u002Fawesome-rayfin --skill capability-router",{"tool":68,"command":69},"bunx","bunx skills add microsoft\u002Fawesome-rayfin --skill capability-router",{"tool":71,"command":72},"pnpm","pnpm dlx skills add microsoft\u002Fawesome-rayfin --skill capability-router","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Funiversal-app\u002F.agents\u002Fskills\u002Fcapability-router\u002FSKILL.md",true,[76],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"pack-manifest.md","REFERENCE","参考文档",4699,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Funiversal-app\u002F.agents\u002Fskills\u002Fcapability-router\u002Fpack-manifest.md",[83,108,131,154,186,217],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":48},"01M70HMXK23DA6CE0T9R4DNDA9","visuals","Use when user wants to incorporate charts, graphs, data grid,  or other visual representations of data into their project. Use VegaVisual and DataGrid components to create these visuals,  utilizing the shared DataTable input, formatting, theme, and interactivity. Covers the onInteraction selection\u002Fclick events host apps consume, named multi-table data input for layered overlays and reference lines, and Vega-Lite native selections.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Fcaldova-reorder\u002F.agents\u002Fskills\u002Fvisuals\u002FSKILL.md",[],[85,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,44,106,107],"shared","click","theme","Charts","for","overlays","project","selection","host","use","apps","when","visual","components","grid","multi","layered","native",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":48},"01M70HMVE4BANY7VVP0JR2GQ92","schema-discovery","Explore Power BI semantic model schemas using DAX INFO functions. Progressive metadata discovery strategy, scope estimation, and narrowing techniques for tables, columns, measures, and relationships.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Fcaldova-reorder\u002F.agents\u002Fskills\u002Fschema-discovery\u002FSKILL.md",[],[115,116,117,27,118,119,94,120,121,122,123,45,124,125,30,126,127,128,129,130],"discovery","schema discovery","schema","scope","model","explore","techniques","strategy","estimation","functions","info","relationships","columns","dax","tables","semantic",{"skillNo":132,"name":46,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":48},"01M70HMQD0PKCKWCY2NQ8VCCYH","Use when doing ANY task involving Rayfin — scaffolding, data models, decorators, auth, deployment, CLI commands, or client setup. Triggers: rayfin, rayfin init, rayfin up, rayfin login, RayfinClient, @entity, @role, @anonymous, @authenticated, @text, @uuid, @int, @decimal, @boolean, @date, @email, @set, @one, @many, DAB, Data API Builder, rayfin.yml, publishableKey, signUp, signIn, signOut, sendMagicLink, handleMagicLinkCallback, ensureSignedInWithFabric, Fabric SSO, Entra ID, rayfin up db apply, rayfin up staticapp deploy, schema.ts, OpaqueSession, onSessionChange, GraphQL select, GraphQL create, GraphQL update, GraphQL delete, findById, executePaginated, RLS policy, row-level security, claims.sub, claims.email, TC39 decorators, config generation, dialect, mssql, postgresql","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Fcaldova-reorder\u002F.agents\u002Fskills\u002Frayfin\u002FSKILL.md",[],[46,137,138,139,140,141,142,143,144,145,146,147,148,101,149,150,151,152,153,44],"builder","SET","decorators","anonymous","auth","db","scaffolding","select","up","init","entra id","api builder","rls","api","text","mssql","postgresql",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":168,"publishedAt":48},"01M70HMFPA9WXWY5X7C14XB11D","rayfin-connectors","Use for Rayfin connectors that wire existing Fabric SQL data sources (Lakehouse, Warehouse, SQL Database) into an app as GraphQL-backed entities. Triggers: rayfin connector, rayfin up connector apply, connectors:, fabric-sqlanalytics, fabric-warehouse, fabric-sqldatabase, kusto, kql, eventhouse, workspaceId, itemId, operations:, AppConnectorsSchema, ConnectorsSchema, rayfin\u002Fconnectors\u002F, metadata.json, connector @role policy, connector claims.sub filter, connector claims.email filter, ConnectorsRayfinClient, rayfin-client.ts, client.connectors, connectorConfig, GraphQLBackedConnector, RestrictedDataApi, schema.ts aggregate, generate entities from metadata, add a use case on specific entities, wire connector into client, call a connector from the SDK, rayfin connector inspect, inspect connector data, sample connector rows, fabric-semanticmodel, --entity, --query, DAX EVALUATE, read-only sample query, rayfin connector search, discover connectable sources, find fabric sources to add, --all-workspaces, --workspace-id, connector search interactive picker, rayfin connector invoke, invoke a connector operation, run executeQuery, --input, --file, RAYFIN_FEATURE_FLAGS, resultSetRowCountLimit, limit rows, row limit, cap rows, too many rows, overflow","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Fcaldova-reorder\u002F.agents\u002Fskills\u002Frayfin-connectors\u002FSKILL.md",[160,163],{"categoryNo":161,"categoryName":162,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":164,"categoryName":165,"taxonomyType":166,"taxonomyTypeDesc":167},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[169,46,170,32,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,94],"rayfin connectors","connectors","inspect","workspaces","search","invoke","filter","cap","generate","data sources","run","read","input","as","kql","limit","email",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":201,"publishedAt":48},"01M70HMD71TMHM9NEZV0870V9B","query-design","Separates DAX data-fetching from TypeScript presentation. Guides when to use  DAX vs. TypeScript vs. Vega-Lite for aggregation, total rows, FORMAT(), SELECTCOLUMNS,  BLANK handling, filtering, multi-grain queries, cross-filtering and cross-highlight subset\u002Foverlay queries, and format strings.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Fcaldova-reorder\u002F.agents\u002Fskills\u002Fquery-design\u002FSKILL.md",[192,195,198],{"categoryNo":193,"categoryName":194,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":196,"categoryName":197,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":199,"categoryName":200,"taxonomyType":166,"taxonomyTypeDesc":167},"01JBSEEDCAT000000000000032","设计师",[202,203,204,205,94,206,207,99,101,208,105,209,210,211,212,213,214,215,216,128],"query design","design","query","overlay","strings","filtering","guides","queries","grain","aggregation","format","typescript","data-fetching","data","when to use",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":221,"categories":222,"keywords":226,"publishedAt":48},"01M70HMAX3MRJWF62P8PAYF1R3","playwright-cli","Automate browser interactions, test web pages and work with Playwright tests.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fawesome-rayfin\u002Fblob\u002Fmain\u002Ftemplates\u002Fcaldova-reorder\u002F.agents\u002Fskills\u002Fplaywright-cli\u002FSKILL.md",[223],{"categoryNo":224,"categoryName":225,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[227,228,229,219,230,231,65,232,233,234,235,236,237,238,239,240],"playwright cli","playwright","cli","pages","tests","Bash","browser","with","test","work","web","test web","npm","automate"]