Chalk Labs
Need help deploying ai-sdk-5?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/vab1997-ai-sdk-5
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: cloud
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
ai-sdk-5- Description
- Vercel AI SDK 5 patterns. Trigger: When building AI features with AI SDK v5 (chat, streaming, tools/function calling, UIMessage parts), including migration from v4.
- License
- Apache-2.0
- Allowed tools
- Read,, Edit,, Write,, Glob,, Grep,, Bash,, WebFetch,, WebSearch,, Task
- Metadata
- author: prowler-cloud · version: 1.0 · auto_invoke: Building AI chat features
- Instructions
- 222 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (1)
- SKILL.md
SKILL.md (first lines)
## Breaking Changes from AI SDK 4
```typescript
// ❌ AI SDK 4 (OLD)
import { useChat } from 'ai'
const { messages, handleSubmit, input, handleInputChange } = useChat({
api: '/api/chat',
})
// ✅ AI SDK 5 (NEW)
import { useChat } from '@ai-sdk/react'
import { DefaultChatTransport } from 'ai'
const { messages, sendMessage } = useChat({
transport: new DefaultChatTransport({ api: '/api/chat' }),
})
```
## Client Setup
```typescript
import { useChat } from "@ai-sdk/react";
import { DefaultChatTransport } from "ai";
import { useState } from "react";
export function Chat() {
const [input, setInput] = useState("");
const { messages, sendMessage, isLoading, error } = useChat({
transport: new DefaultChatTransport({ api: "/api/chat" }),
});
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
if (!input.trim()) return;
sendMessage({ text: input });
setInput("");
};
return (
<div>
<div>
{messages.map((message) => (
<Message key={message.id} message={message} />
))}
</div>
<form onSubmit={handleSubmit}>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Type a message..."
disabled={isLoading}
/>
<button type="submit" disabled={isLoading}>
Send
</button>
</form>
{error && <div>Error: {error.message}</div>}
</div>
);
}
```
## UIMessage Structure (v5)
```typescript
// ❌ Old: message.content was a string
// ✅ New: message.parts is an array
interface UIMessage {
id: string;
role: "user" | "assistant" | "system";
parts: MessagePart[];
}
type MessagePart =
| { type: "text"; text: string }
| { type: "image"; image: string }
| { type: "tool-call"; toolCallId: string; toolName: string; args: unknown }
| { type: "tool-result"; toolCallId: string; result: unknown };
// Extract text from parts
function getMessageText(message: UIMessage): string {
return message.parts
.filter((part): part is { type: "text"; text: string } => part.type === "text")
.map((part) => part.text)
.join("");
}
// Render message
function Message({ message }: { message: UIMessage }) {
return (
<div className={message.role === "user" ? "user" : "assistant"}>
{message.parts.map((part, index) => {
if (part.type === "text") {
return <p key={index}>{part.text}</p>;
}
if (part.type === "image") {
return <img key={index} src={part.image} alt="" />;
}
return null;
})}
</div>
);
}
```
## Server-Side (Route Handler)
```typescript
// app/api/chat/route.ts
import { openai } from '@ai-sdk/openai'
import { streamText } from 'ai'
export async function POST(req: Request) {
const { messages } = await req.json()From vab1997/mecania-assistant, Apache-2.0.
More from vab1997/mecania-assistant
- 0.406score
zustand-5
prowler-cloud
Zustand 5 state management patterns.
SkillDFreshness: DClaude Code - 0.406score
zod-4
prowler-cloud
Zod 4 schema validation patterns.
SkillDFreshness: DClaude Code - 0.406score
prowler-commit
prowler-cloud
Creates professional git commits following conventional-commits format.
SkillDFreshness: DClaude Code +9 - 0.402score
tanstack-start-best-practices
prowler-cloud
TanStack Start best practices for full-stack React applications.
SkillDFreshness: DClaude Code +9 - 0.401score
tailwind-v4-shadcn
vab1997
Set up Tailwind v4 with shadcn/ui using @theme inline pattern and CSS variable architecture.
SkillDFreshness: DClaude Code +9 - 0.401score
tanstack-query
prowler-cloud
Manage server state in React with TanStack Query v5.
SkillDFreshness: DClaude Code +9 - 0.399score
tanstack-form
prowler-cloud
Use TanStack Form for complex forms with Zod validation.
SkillDFreshness: DClaude Code +9 - 0.278score
vercel-react-best-practices
vercel
React and Next.js performance optimization guidelines from Vercel Engineering.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jan 23, 2026 (9 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- Apache-2.0
- Repository
- github.com/vab1997/mecania-assistant
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from prowler-cloud
- 0.843score
prowler-docs
prowler-cloud
Prowler documentation style guide and writing standards.
SkillAFreshness: A★ 3.8KClaude Code - 0.677score
AGENTS.md · prowler-cloud/prowler
prowler-cloud
AGENTS.md from prowler-cloud/prowler: 195 lines covering How to Use This Guide, Available Skills, Project Overview, Python Development and more.
TemplateAFreshness: A★ 15.1KCodex +5 - 0.411score
gh-aw
prowler-cloud
Create and maintain GitHub Agentic Workflows (gh-aw) for Prowler.
SkillDFreshness: DClaude Code - 0.406score
zod-4
prowler-cloud
Zod 4 schema validation patterns.
SkillDFreshness: DClaude Code - 0.406score
zustand-5
prowler-cloud
Zustand 5 state management patterns.
SkillDFreshness: DClaude Code - 0.406score
prowler-commit
prowler-cloud
Creates professional git commits following conventional-commits format.
SkillDFreshness: DClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get ai-sdk-5 running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
ai-sdk-5 skill. Agent Mart. https://agentmart.dev/skills/vab1997-ai-sdk-5 (last updated 2026-10-24)