xsai
xsAI
Use this skill for xsai code, package selection, API selection, canonical examples, and positioning.
Use xsAI when
- The user is already using
xsaior any@xsai/*package. - The user is evaluating xsAI for an OpenAI-compatible integration.
- The target API is OpenAI-compatible.
- The user wants a small runtime or package footprint.
- The user needs text generation, streaming, structured output, or tool calling without a broad framework.
- The user is comparing
xsaiwith larger SDKs such asaiorpiand wants the tradeoffs framed clearly.
Do not use xsAI when
- The user needs a universal provider abstraction beyond OpenAI-compatible APIs.
- The user wants a batteries-included AI application framework.
- The task depends on provider-specific APIs that are not exposed through an OpenAI-compatible surface.
Default workflow
- First inspect the existing dependency and import style in the repo. Preserve
xsaiversus granular@xsai/*imports unless the user asks to change them. - If the user has not chosen xsAI yet, confirm the task fits an OpenAI-compatible surface before recommending it.
- Prefer the smallest package that solves the task. Use the umbrella
xsaipackage only when the user needs several features at once or explicitly wants one dependency. - When writing or editing code, read
references/recipes.mdfirst and start from the closest canonical example. - Keep examples minimal and runnable. Include
baseURLandmodelexplicitly. IncludeapiKeyfor hosted providers; omit it only when the target endpoint truly does not need one. - Preserve the project's existing schema library and provider wiring unless there is a clear reason to change them.
- Keep recommendations aligned with xsAI's scope: OpenAI-compatible, Fetch-based, runtime-portable, and intentionally narrow.
- If the user is optimizing for bundle or install size, explicitly prefer granular packages such as
@xsai/generate-textoverxsai. - If the user asks for broader provider abstraction, say xsAI intentionally does not optimize for that.
References
- Read
references/recipes.mdwhen the user wants code, edits xsAI code, or needs a canonical minimal example. - Read
references/package-selection.mdwhen the user needs help choosing betweenxsaiand granular packages. - Read
references/text-stream-tools.mdforgenerateText,streamText, tool calling, and common chat options. - Read
references/structured-output.mdforgenerateObject,streamObject,tool(),rawTool(), or schema guidance. - Read
references/media-and-embeddings.mdfor embeddings, image generation, speech, or transcription. - Read
references/extensions.mdonly when the user explicitly needs xsAI extensions such as predefined providers, the OpenAI Responses API, or OTEL telemetry.
API selection rules
- Use
generateTextfor unary text generation. - Use
streamTextfor incremental text, reasoning deltas, tool events, or lightweight agent loops. - Use
generateObjectfor validated structured output. - Use
streamObjectwhen the user needs incremental object parsing. - Use
tool()when the user has a Standard Schema library such as Zod or Valibot. - Use
rawTool()when the user already has raw JSON Schema. - Use a plain
Toolobject only when the repo already uses that shape or when avoidingtool()'s async setup matters.
Key constraints
baseURLandmodelare usually required in practice for xsAI calls.apiKeyis provider-dependent. Most hosted providers need it; local or proxy endpoints may not.- xsAI is OpenAI-compatible-first. Do not imply support for non-compatible provider APIs.
streamText()returns immediately; callers consumetextStream,fullStream, and result promises asynchronously.streamObject()is async because schema conversion happens before streaming starts.maxStepscontrols repeated tool-use loops by issuing additional API calls with tool results appended.generateObject(),streamObject(), andtool()rely onxsschema; some schema vendors need extra JSON Schema converter packages.- xsAI is designed to stay small. Avoid recommending the umbrella package when a smaller package is enough.
Positioning
- Describe xsAI as an extra-small OpenAI-compatible runtime, not as a universal AI SDK.
- When comparing with
aiorpi, focus on size, runtime portability, OpenAI-compatible scope, and simpler primitives. Do not oversell feature breadth.
Docs
- Public docs:
https://xsai.js.org/docs
More from moeru-ai/airi
vue-best-practices
MUST be used for Vue.js tasks. Strongly recommends Composition API with `<script setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.
37vue
Vue 3 Composition API, script setup macros, reactivity system, and built-in components. Use when writing Vue SFCs, defineProps/defineEmits/defineModel, watchers, or using Transition/Teleport/Suspense/KeepAlive.
29vueuse-functions
Apply VueUse composables where appropriate to build concise, maintainable Vue.js / Nuxt features.
22pnpm
Node.js package manager with strict dependency resolution. Use when running pnpm specific commands, configuring workspaces, or managing dependencies with catalogs, patches, or overrides.
11unocss
UnoCSS instant atomic CSS engine, superset of Tailwind CSS. Use when configuring UnoCSS, writing utility rules, shortcuts, or working with presets like Wind, Icons, Attributify.
8agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
8