[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699YEY2QDVPKTZS3HR9AX84":3,"skill-same:01M699YEY2QDVPKTZS3HR9AX84":55},{"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":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M699YEY2QDVPKTZS3HR9AX84","rayfin-getting-started",null,"Use when starting or creating a NEW Rayfin app, or when a Rayfin task comes up and you are not yet inside a Rayfin project. Gets you into a project with the Rayfin CLI, then hands off to the authoritative, version-locked in-project rayfin skill\u002Fdocs that own all in-project work. Triggers: build a Rayfin app, start a Rayfin project, create a new Rayfin app, create-rayfin, npm create @microsoft\u002Frayfin, rayfin init, scaffold rayfin, rayfin CLI, rayfin template, universal app, awesome-rayfin gallery, get started with Rayfin","microsoft\u002Frayfin","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699VK9NEV8GH0Y5JKT1G8XG",659,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin\u002Fblob\u002Fmain\u002Fskills\u002Frayfin-getting-started\u002FSKILL.md",[],[19,20,21,22,9,23,24],"rayfin","rayfin getting started","cli","docs","init","scaffold","2026-11-10 10:12:30",false,"---\nname: rayfin-getting-started\ndescription: \"Use when starting or creating a NEW Rayfin app, or when a Rayfin task comes up and you are not yet inside a Rayfin project. Gets you into a project with the Rayfin CLI, then hands off to the authoritative, version-locked in-project rayfin skill\u002Fdocs that own all in-project work. Triggers: build a Rayfin app, start a Rayfin project, create a new Rayfin app, create-rayfin, npm create @microsoft\u002Frayfin, rayfin init, scaffold rayfin, rayfin CLI, rayfin template, universal app, awesome-rayfin gallery, get started with Rayfin\"\nmetadata:\n  author: microsoft\n  version: \"0.4.2\"\n---\n\n# Rayfin (Getting Started)\n\nRayfin is a Backend-as-a-Service: define your data model with TypeScript decorators and\nRayfin provides auth, a typed data API, storage, and Fabric hosting.\n\nThis skill only handles *getting started*: getting you from zero into a working Rayfin\nproject, then handing off. The moment you're in a project, the authoritative, version-locked\nskill at `.agents\u002Fskills\u002Frayfin\u002FSKILL.md`, alongside the package docs in `node_modules` and\nthe `rayfin docs` CLI, owns everything else: schema, auth, storage, querying, deployment.\nLoad it and stop using this one.\n\n## Route, don't improvise\n\nRayfin's specifics are version-locked per project — schema\u002Fdecorator syntax, the typed data\nAPI and client queries, auth, storage, and deployment all live in the project's own skill and\n`rayfin docs`. Never answer them from memory; remembered Rayfin APIs are routinely\nwrong against the installed version. Get into a project, read `.agents\u002Fskills\u002Frayfin\u002FSKILL.md`,\nthen follow it for version-matched signatures. The in-project skill **file** and the\n`rayfin docs` CLI are available the moment a project exists — including right after you\nscaffold one, in the same session.\n\nBeing blocked does not unlock memory. Only treat yourself as blocked if you can reach **none**\nof the version-matched sources — you can't read `.agents\u002Fskills\u002Frayfin\u002FSKILL.md` *and* can't\nrun `rayfin docs` (e.g. tool permissions denied). When genuinely blocked, say you need those\nsources to answer accurately and stop there. Don't offer a \"general approach\" or example code\n\"in the meantime\"; that stopgap is exactly the fabrication this skill exists to prevent.\n\n## Already in a Rayfin project?\n\nCheck this first — before scaffolding anything, even when the user says \"build\" or \"set up a\nnew app\". A directory is a Rayfin project if it has `rayfin\u002Frayfin.yml` or a `package.json`\ndepending on `@microsoft\u002Frayfin-*`. Environment signals alone are enough: if the workspace\ncontext shows either — even when you can't open the files yet — treat it as an existing\nproject and continue in place. Never stand up a nested or sibling project.\n\n- **Already in one →** load `.agents\u002Fskills\u002Frayfin\u002FSKILL.md` and use `rayfin docs`.\n  Stop using this skill.\n- **Existing non-Rayfin app here →** add Rayfin in place with\n  `npx -y -p @microsoft\u002Frayfin-cli@latest rayfin init --project-name \u003Capp-name>` (don't\n  scaffold a separate project), then load the in-project skill.\n- **Empty directory →** scaffold (below), then load the in-project skill from the project root.\n\n## Scaffold a new project\n\n`npm create @microsoft\u002Frayfin@latest` is a thin wrapper around `rayfin init`. As an agent you\nrun non-interactively (stdin isn't a TTY), so use the `npx -y` form — `npm create` can\nmishandle piped stdin and strip flags, and `--project-name` is **required** non-interactively.\n\n```bash\n# Use the CLI's bundled default app template. Keep this command on one line\n# so it also works in PowerShell.\nnpx -y @microsoft\u002Fcreate-rayfin@latest --project-name \u003Capp-name> --template blankapp\n\n# Or add Rayfin into an existing directory.\nnpx -y -p @microsoft\u002Frayfin-cli@latest rayfin init --project-name \u003Capp-name> [directory]\n```\n\n**Always use the bundled `blankapp` template.** Don't browse the gallery or pick a\ndomain-specific template.\n\nMind the project root before loading the in-project skill: `create-rayfin` creates a child\nproject directory (named from `--project-name`, slugified), so `cd` into it; an in-place\n`rayfin init` scaffolds in the current directory, so you're already there. Once at the project\nroot, read `AGENTS.md` first when the template ships a capability router, then load\n`.agents\u002Fskills\u002Frayfin\u002FSKILL.md` for every version-locked Rayfin specific.\n","# Rayfin (Getting Started)\n\nRayfin is a Backend-as-a-Service: define your data model with TypeScript decorators and\nRayfin provides auth, a typed data API, storage, and Fabric hosting.\n\nThis skill only handles *getting started*: getting you from zero into a working Rayfin\nproject, then handing off. The moment you're in a project, the authoritative, version-locked\nskill at `.agents\u002Fskills\u002Frayfin\u002FSKILL.md`, alongside the package docs in `node_modules` and\nthe `rayfin docs` CLI, owns everything else: schema, auth, storage, querying, deployment.\nLoad it and stop using this one.\n\n## Route, don't improvise\n\nRayfin's specifics are version-locked per project — schema\u002Fdecorator syntax, the typed data\nAPI and client queries, auth, storage, and deployment all live in the project's own skill and\n`rayfin docs`. Never answer them from memory; remembered Rayfin APIs are routinely\nwrong against the installed version. Get into a project, read `.agents\u002Fskills\u002Frayfin\u002FSKILL.md`,\nthen follow it for version-matched signatures. The in-project skill **file** and the\n`rayfin docs` CLI are available the moment a project exists — including right after you\nscaffold one, in the same session.\n\nBeing blocked does not unlock memory. Only treat yourself as blocked if you can reach **none**\nof the version-matched sources — you can't read `.agents\u002Fskills\u002Frayfin\u002FSKILL.md` *and* can't\nrun `rayfin docs` (e.g. tool permissions denied). When genuinely blocked, say you need those\nsources to answer accurately and stop there. Don't offer a \"general approach\" or example code\n\"in the meantime\"; that stopgap is exactly the fabrication this skill exists to prevent.\n\n## Already in a Rayfin project?\n\nCheck this first — before scaffolding anything, even when the user says \"build\" or \"set up a\nnew app\". A directory is a Rayfin project if it has `rayfin\u002Frayfin.yml` or a `package.json`\ndepending on `@microsoft\u002Frayfin-*`. Environment signals alone are enough: if the workspace\ncontext shows either — even when you can't open the files yet — treat it as an existing\nproject and continue in place. Never stand up a nested or sibling project.\n\n- **Already in one →** load `.agents\u002Fskills\u002Frayfin\u002FSKILL.md` and use `rayfin docs`.\n  Stop using this skill.\n- **Existing non-Rayfin app here →** add Rayfin in place with\n  `npx -y -p @microsoft\u002Frayfin-cli@latest rayfin init --project-name \u003Capp-name>` (don't\n  scaffold a separate project), then load the in-project skill.\n- **Empty directory →** scaffold (below), then load the in-project skill from the project root.\n\n## Scaffold a new project\n\n`npm create @microsoft\u002Frayfin@latest` is a thin wrapper around `rayfin init`. As an agent you\nrun non-interactively (stdin isn't a TTY), so use the `npx -y` form — `npm create` can\nmishandle piped stdin and strip flags, and `--project-name` is **required** non-interactively.\n\n```bash\n# Use the CLI's bundled default app template. Keep this command on one line\n# so it also works in PowerShell.\nnpx -y @microsoft\u002Fcreate-rayfin@latest --project-name \u003Capp-name> --template blankapp\n\n# Or add Rayfin into an existing directory.\nnpx -y -p @microsoft\u002Frayfin-cli@latest rayfin init --project-name \u003Capp-name> [directory]\n```\n\n**Always use the bundled `blankapp` template.** Don't browse the gallery or pick a\ndomain-specific template.\n\nMind the project root before loading the in-project skill: `create-rayfin` creates a child\nproject directory (named from `--project-name`, slugified), so `cd` into it; an in-place\n`rayfin init` scaffolds in the current directory, so you're already there. Once at the project\nroot, read `AGENTS.md` first when the template ships a capability router, then load\n`.agents\u002Fskills\u002Frayfin\u002FSKILL.md` for every version-locked Rayfin specific.\n",{"name":5,"metadata":30,"description":7},{"author":9,"version":31},"0.4.2","main","0979439a7a0806abd0ee48c2619b37f297ae1324","skills\u002Frayfin-getting-started",75,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 01:21:10",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add microsoft\u002Frayfin --skill rayfin-getting-started",{"tool":47,"command":48},"bunx","bunx skills add microsoft\u002Frayfin --skill rayfin-getting-started",{"tool":50,"command":51},"pnpm","pnpm dlx skills add microsoft\u002Frayfin --skill rayfin-getting-started","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin\u002Fblob\u002Fmain\u002Fskills\u002Frayfin-getting-started\u002FSKILL.md",true,[],[56,76,85,104,112,123],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":72,"publishedAt":25},"01M699YCN4ZDW2AMDP4NVJ2QGC","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. Triggers: chart, graph, plot, dashboard, KPI, metric, trend, scorecard, data grid, visualize.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin\u002Fblob\u002Fmain\u002Fsamples\u002Funiversal-app\u002Ftemplate\u002F.agents\u002Fskills\u002Fvisuals\u002FSKILL.md",[62,67],{"categoryNo":63,"categoryName":64,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[58,73,74,75],"visualize","dashboard","components",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":25},"01M699YBEP146MJZJNN8YEBZ2G","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\u002Frayfin\u002Fblob\u002Fmain\u002Fsamples\u002Funiversal-app\u002Ftemplate\u002F.agents\u002Fskills\u002Fschema-discovery\u002FSKILL.md",[],[83,84],"schema discovery","dax",{"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":100,"publishedAt":25},"01M699Y9E80WYFKD1S4MT4B1CS","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\u002Frayfin\u002Fblob\u002Fmain\u002Fsamples\u002Funiversal-app\u002Ftemplate\u002F.agents\u002Fskills\u002Fquery-design\u002FSKILL.md",[91,94,97],{"categoryNo":92,"categoryName":93,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":95,"categoryName":96,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000032","设计师",[101,102,103,84],"query design","design","typescript",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":25},"01M699Y7CKZ55QSYFE827RRVJE","functions-capability","Apply and build the Universal App functions capability. Use for trusted server-side logic, secrets, external APIs, custom model endpoints, published Fabric data agents, webhooks, or privileged operations.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin\u002Fblob\u002Fmain\u002Fsamples\u002Funiversal-app\u002Ftemplate\u002F.agents\u002Fskills\u002Ffunctions-capability\u002FSKILL.md",[],[111],"functions capability",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":25},"01M699Y5R87YE620T78Z30KQSA","fabric-sdk","How to query Fabric data from a running app through the Rayfin connectors client. Use getRayfinClient().connectors.\u003Cname>.executeQuery to run DAX against a semantic model, and toQueryResult to normalize the response.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin\u002Fblob\u002Fmain\u002Fsamples\u002Funiversal-app\u002Ftemplate\u002F.agents\u002Fskills\u002Ffabric-sdk\u002FSKILL.md",[],[119,120,121,19,84,122],"fabric sdk","sdk","rayfin connectors","connectors",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":133,"publishedAt":25},"01M699Y412TNZ8EABAE8TABG0D","fabric-data-agent","Call a published Fabric data agent from a Universal App through a Rayfin function using application auth and MCP streamable HTTP. Use when the request names a Fabric data agent, data-agent MCP endpoint, or asks to chat with governed Fabric data through an app.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frayfin\u002Fblob\u002Fmain\u002Fsamples\u002Funiversal-app\u002Ftemplate\u002F.agents\u002Fskills\u002Ffabric-data-agent\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},[134,135,19,136],"fabric data agent","MCP","auth"]