Skip to main content

rayfin-getting-started

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/docs 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/rayfin, rayfin init, scaffold rayfin, rayfin CLI, rayfin template, universal app, awesome-rayfin gallery, get started with Rayfin

Source facts

Repository
microsoft/rayfin
Last source activity
October 8, 2026 at 20:46
Detected SKILL.md language
English
Stars
651
Forks
71

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
rayfin-getting-started
description
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/docs 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/rayfin, rayfin init, scaffold rayfin, rayfin CLI, rayfin template, universal app, awesome-rayfin gallery, get started with Rayfin
metadata
{"author":"microsoft","version":"0.4.0"}
# Rayfin (Getting Started) Rayfin is a Backend-as-a-Service: define your data model with TypeScript decorators and Rayfin provides auth, a typed data API, storage, and Fabric hosting. This skill only handles *getting started* — getting you from zero into a working Rayfin project, then handing off. The moment you're in a project, the authoritative, version-locked skill at `.agents/skills/rayfin/SKILL.md` — alongside the package docs in `node_modules` and the `rayfin docs` CLI — owns everything else: schema, auth, storage, querying, deployment. Load it and stop using this one. ## Route, don't improvise Rayfin's specifics are version-locked per project — schema/decorator syntax, the typed data API and client queries, auth, storage, and deployment all live in the project's own skill and `rayfin docs`. Never answer them from memory; remembered Rayfin APIs are routinely wrong against the installed version. Get into a project, read `.agents/skills/rayfin/SKILL.md`, then follow it for version-matched signatures. The in-project skill **file** and the `rayfin docs` CLI are available the moment a project exists — including right after you scaffold one, in the same session. The `rayfin` MCP server is an optional extra that most projects do not install; if it happens to be available it is a convenience, never a prerequisite. Lean on the in-project skill file plus `rayfin docs`. Being blocked does not unlock memory. Only treat yourself as blocked if you can reach **none** of the version-matched sources — you can't read `.agents/skills/rayfin/SKILL.md` *and* can't run `rayfin docs` (e.g. tool permissions denied). The `rayfin` MCP server not being installed or loaded is **not** a blocker. When genuinely blocked, say you need those sources to answer accurately and stop there — don't offer a "general approach" or example code "in the meantime"; that stopgap is exactly the fabrication this skill exists to prevent. ## Already in a Rayfin project? Check this first — before scaffolding anything, even when the user says "build" or "set up a new app". A directory is a Rayfin project if it has `rayfin/rayfin.yml` or a `package.json` depending on `@microsoft/rayfin-*`. Environment signals alone are enough: if the workspace context shows either — even when you can't open the files yet — treat it as an existing project and continue in place. Never stand up a nested or sibling project. - **Already in one →** load `.agents/skills/rayfin/SKILL.md` and use `rayfin docs` (or the `rayfin` MCP, if already installed). Stop using this skill. - **Existing non-Rayfin app here →** add Rayfin in place with `npx rayfin init` (don't scaffold a separate project), then load the in-project skill. - **Empty directory →** scaffold (below), then load the in-project skill from the project root. ## Scaffold a new project `npm create @microsoft/rayfin@latest` is a thin wrapper around `rayfin init`. As an agent you run non-interactively (stdin isn't a TTY), so use the `npx -y` form — `npm create` can mishandle piped stdin and strip flags, and `--project-name` is **required** non-interactively. ```bash # Create non-interactively. --project-name is required; the template is pinned. npx -y @microsoft/create-rayfin@latest --project-name <app-name> --template universal-app # Or add Rayfin into an existing/empty directory npx rayfin init [directory] ``` **Always scaffold `universal-app`.** Don't browse the gallery and don't pick a domain-specific template. The Universal App is a deliberately small React + Vite base with a built-in capability router that pulls in the right Rayfin services, npm modules, and skills on demand, so the domain shape (analytics, CRUD, storage, functions) gets decided *inside* the project rather than at scaffold time. The project's own `.agents/skills/` own that decision, and they are version-matched in a way a scaffold-time template choice is not. Mind the project root before loading the in-project skill: `create-rayfin` creates a child project directory (named from `--project-name`, slugified), so `cd` into it; an in-place `rayfin init` scaffolds in the current directory, so you're already there. Once at the project root, load its `.agents/skills/rayfin/SKILL.md` and let its capability router take over.
View on GitHub