/arc:ai
AI SDK guide
—What it does
AI loads the right patterns for Vercel AI SDK 6 — the version that renamed ~15 core APIs. It detects your installed version, warns about deprecated APIs, and provides guided reference for chat UIs (useChat v6), agents (ToolLoopAgent), structured output (Output.object), streaming, and OpenRouter integration. Run it before building any AI feature to avoid broken code.
—Why it exists
AI SDK v6 renamed or removed ~15 core APIs. Every AI coding tool has memorized the old APIs and will reliably generate broken code. This skill loads the correct patterns so agents produce working code on the first try.
—Design decisions
- —Cross-cutting skill. Available anytime, like /arc:deps or /arc:responsive.
- —Loads both patterns (reference) and constraints (rules). Patterns teach what to do. Rules prevent what not to do.
- —Version-aware. Checks installed AI SDK version and warns about v5 → v6 migration.
Source document
───────────────────────────────────────────────────────────
AI SDK 6 guidance for building AI-powered features.
Step 1: Detect AI SDK
Check package.json for AI SDK:
grep -E '"ai"' package.json
If not found:
AI SDK (`ai` package) not found in this project.
1. Install it — `pnpm add ai @ai-sdk/react @openrouter/ai-sdk-provider`
2. Skip — I'll explain the patterns without a project context
Wait for user choice. If install, run the command and continue.
If found, extract version:
grep -A1 '"ai"' package.json | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'
If version < 6:
⚠ AI SDK version [version] detected. Version 6 has breaking changes that affect
almost every API. The patterns I'll load are for v6+.
If you're migrating, I'll highlight what changed. If you're staying on v5, some
patterns won't apply.
Continue with v6 patterns? (recommended even for planning a migration)
Step 2: Load Reference & Rules
Read the patterns reference:
Read: references/ai-sdk.md
Read the rules (MUST/NEVER constraints):
Read: rules/ai-sdk.md
Step 3: Understand What the User Is Building
Ask what they're working on:
AI SDK reference loaded. What are you building?
1. Chat UI — useChat, message rendering, streaming
2. Agent — tool loops, multi-step reasoning
3. Structured output — typed responses from LLMs
4. Streaming API — streamText, server routes
5. All of the above — full reference
6. Debugging — something isn't working
Use AskUserQuestion with these options.
Step 4: Present Relevant Patterns
Based on user selection, highlight the most relevant sections from the reference:
Chat UI: Focus on useChat v6 setup (DefaultChatTransport, manual input state, sendMessage), toUIMessageStreamResponse, typed tool parts.
Agent: Focus on ToolLoopAgent, stopWhen: stepCountIs(n), InferAgentUIMessage, createAgentUIStreamResponse with uiMessages.
Structured output: Focus on Output.object, Output.array, Output.choice, accessing result.output.
Streaming: Focus on streamText, toUIMessageStreamResponse, createAgentUIStreamResponse.
All: Present the quick migration table and note which sections are available.
Debugging: Ask for the error message. Common issues:
toDataStreamResponse is not a function→ renamed totoUIMessageStreamResponseCannot read property 'args'→ renamed toinputgenerateObject is not a function→ usegenerateTextwithOutput.objectmaxSteps is not a valid option→ usestopWhen: stepCountIs(n)- Request hangs silently → check prompt size (>100K tokens causes silent failures on OpenRouter)
Step 5: Load Project Rules (if .ruler/ exists)
Check for project rules:
ls .ruler/ai-sdk.md 2>/dev/null
If .ruler/ai-sdk.md exists, it's already loaded by build agents. Note this to the user.
If it doesn't exist but .ruler/ does exist:
Your project has coding rules (.ruler/) but no AI SDK rules yet.
Run /arc:rules to update, or I can copy them now.
Step 6: Offer Next Steps
AI SDK context loaded. Ready to build.
1. Start building → /arc:build or /arc:implement
2. Review existing AI code → I'll check for deprecated API usage
3. Set up from scratch → I'll scaffold the provider, route, and component
If user selects "Review existing AI code":
- Grep for deprecated patterns:
generateObject,maxTokens,maxSteps,toDataStreamResponse,addToolResult,part.args,part.result,tool-invocation - Report findings with file:line references and the correct v6 replacement