laguagu/claude-code-nextjs-skills/ai-sdk-6

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Vercel AI SDK v6 development, for projects already on ai@6. Use when building or maintaining AI agents, chatbots, tool integrations, streaming apps, or structured output in a v6 codebase. New projects and ai@7 code use ai-sdk-7; an unknown version goes through ai-sdk. Covers ToolLoopAgent, useChat, generateText, streamText, tool approval, provider tools, MCP integration, and Output patterns.

Install

npx vskill@latest install laguagu/claude-code-nextjs-skills/ai-sdk-6

SKILL.md

AI SDK 6 maintenance

Apply this skill only to ai@6 projects. Resolve compatible provider and UI packages from the existing manifest/lockfile. Use ai-sdk when the major is unknown and ai-sdk-7 for an authorized upgrade.

Read the resolved ai/docs/, provider docs and source/types for the exact minor release. In a monorepo, resolve from the app using the dependency. Default web docs and repository main can describe v7. ai bundles docs/ from 6.0.32; the tree mirrors the website paths (mapping in ai-sdk). If installed docs are unavailable, select the ai@<resolved-version> tag in vercel/ai and read content/docs/. Feature links here use a checked v6 documentation snapshot as a fallback; match the project's release when available. This tag selects documentation, not an application dependency version.

Boundaries that differ from old and new code

  • Text functions use system; ToolLoopAgent uses instructions.
  • Loop limits use stopWhen: stepCountIs(...). Text functions default to one

step (tool execution without a follow-up answer); ToolLoopAgent defaults to 20.

  • convertToModelMessages is async; await it.
  • Use text functions with Output for new schema output; legacy object

functions are deprecated.

  • Tools use inputSchema; SDK-executed approval is tool-level needsApproval.

V6 does not know v7's toolApproval: unless a typecheck rejects it, it is ignored and the tool runs without approval.

  • React useChat owns messages and stream status, not form input. Use the

appropriate transport and UI-message response protocol.

  • Core completion callbacks are onFinish; result usage is final-step usage,

while totalUsage covers all steps.

Use a configured model verified for the actual provider. Typecheck and test a multi-turn stream with relevant tool/approval/error states after integration changes.

Core shape

Checked with ai@6.0.298, @ai-sdk/react@3.0.301, zod@4.6.5, React 19 and TypeScript 5.9: tsc --noEmit, plus a mock-model run through one tool step and the follow-up answer. A string model resolves through the AI Gateway. In v7, system, stepCountIs and result.toUIMessageStreamResponse() become instructions, isStepCount and createUIMessageStreamResponse({ stream: toUIMessageStream({ stream: result.stream }) }).

ts
// app/api/chat/route.ts
import { convertToModelMessages, stepCountIs, streamText, tool, validateUIMessages,
type InferUITools, type UIDataTypes, type UIMessage } from 'ai';
import { z } from 'zod';
const tools = {
weather: tool({
inputSchema: z.object({ city: z.string() }),
execute: async ({ city }) => ({ city, celsius: 21 }),
}),
};
export type ChatMessage = UIMessage<never, UIDataTypes, InferUITools<typeof tools>>;
export async function POST(req: Request) {
const { messages } = await req.json();
const uiMessages = await validateUIMessages<ChatMessage>({ messages, tools });
const result = streamText({
model: 'provider/model-id', // configured gateway ID, or a provider instance
system: 'Answer briefly.',
messages: await convertToModelMessages(uiMessages),
tools,
stopWhen: stepCountIs(5),
});
return result.toUIMessageStreamResponse();
}
tsx
// app/page.tsx
'use client';
import { useChat } from '@ai-sdk/react';
import { DefaultChatTransport } from 'ai';
import type { ChatMessage } from './api/chat/route';
const transport = new DefaultChatTransport<ChatMessage>({ api: '/api/chat' });
export default function Chat() {
const { messages, sendMessage, status } = useChat<ChatMessage>({ transport });
return (
<form action={(form) => void sendMessage({ text: String(form.get('text')) })}>
{messages.map((m) => <div key={m.id}>{m.parts.map((part, i) =>
part.type === 'text' ? <p key={i}>{part.text}</p>
: part.type === 'tool-weather' && part.state === 'output-available'
? <p key={i}>{part.output.city}: {part.output.celsius} °C</p> : null)}</div>)}
<input name="text" disabled={status === 'submitted' || status === 'streaming'} />
</form>
);
}

Read for the feature

  • Agents: loop limits, call options and context.
  • Core functions: output and stream contracts.
  • Tools: execution, approval and typed states.
  • UI hooks: transport, restoration and stream lifetime.
  • Middleware: provider interception.
  • MCP: transport and cleanup.
  • Workflows: when a loop needs explicit orchestration.
  • Examples: version-matched official implementations.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
12
Repository forks
4
7-day trend score
13

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 17 Mar 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/laguagu/claude-code-nextjs-skills/ai-sdk-6/badge)](https://verified-skill.com/skills/laguagu/claude-code-nextjs-skills/ai-sdk-6)

Something wrong with this skill or its page? Tell us.