vibes-plug 2.14.1 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/.claude/rules/vibes-plug-core.md +5 -0
  2. package/.cursor/rules/vibes-plug-core.mdc +7 -2
  3. package/.cursorrules +8 -2
  4. package/AGENTS.md +23 -2
  5. package/CHANGELOG.md +114 -0
  6. package/CLAUDE.md +10 -3
  7. package/README.md +216 -611
  8. package/bin/vibes.mjs +1104 -0
  9. package/package.json +11 -3
  10. package/plugin.json +4 -3
  11. package/scripts/check-anti-slop.mjs +53 -0
  12. package/scripts/install.js +3 -1
  13. package/scripts/update_skills.js +1 -1
  14. package/scripts/update_skills.mjs +86 -0
  15. package/scripts/validate-skills.mjs +111 -0
  16. package/skills/accessibility-testing-expert/SKILL.md +117 -116
  17. package/skills/affective-computing-emotion-ai/SKILL.md +83 -0
  18. package/skills/agentic-coding-workflow-expert/SKILL.md +297 -0
  19. package/skills/agentic-memory-architect/SKILL.md +52 -0
  20. package/skills/agentic-micro-economy-architect/SKILL.md +92 -0
  21. package/skills/ai-llm-integration-expert/SKILL.md +330 -194
  22. package/skills/ai-media-generation-expert/SKILL.md +173 -172
  23. package/skills/ai-prompt-engineering-expert/SKILL.md +204 -134
  24. package/skills/ai-safety-governance-expert/SKILL.md +223 -0
  25. package/skills/angular-expert/SKILL.md +149 -148
  26. package/skills/anti-slop/SKILL.md +134 -133
  27. package/skills/api-design-expert/SKILL.md +4 -3
  28. package/skills/api-gateway-proxy-expert/SKILL.md +3 -2
  29. package/skills/app-analyzer-optimizer/SKILL.md +4 -3
  30. package/skills/apple-ecosystem-expert/SKILL.md +6 -5
  31. package/skills/astro-framework-expert/SKILL.md +201 -200
  32. package/skills/async-queue-temporal-expert/SKILL.md +218 -217
  33. package/skills/authentication-identity-expert/SKILL.md +174 -173
  34. package/skills/autonomous-red-teamer/SKILL.md +338 -203
  35. package/skills/autonomous-tdd-debugger/SKILL.md +6 -5
  36. package/skills/biome-linter-formatter-expert/SKILL.md +90 -89
  37. package/skills/blockchain-web3-expert/SKILL.md +116 -115
  38. package/skills/brainstorming/SKILL.md +392 -377
  39. package/skills/browser-automation-expert/SKILL.md +260 -222
  40. package/skills/bun-runtime-expert/SKILL.md +5 -4
  41. package/skills/chatbot-messaging-expert/SKILL.md +115 -114
  42. package/skills/ci-cd-devops-architect/SKILL.md +3 -2
  43. package/skills/cloud-hosting-expert/SKILL.md +5 -4
  44. package/skills/coderabbit/SKILL.md +5 -4
  45. package/skills/compliance-gdpr-privacy-expert/SKILL.md +3 -2
  46. package/skills/composable-mach-architect/SKILL.md +338 -0
  47. package/skills/cron-scheduler-expert/SKILL.md +5 -4
  48. package/skills/data-pipeline-etl-expert/SKILL.md +3 -2
  49. package/skills/data-telemetry-expert/SKILL.md +5 -4
  50. package/skills/data-visualization-expert/SKILL.md +155 -154
  51. package/skills/database-orm-expert/SKILL.md +166 -165
  52. package/skills/deep-research-analyst/SKILL.md +182 -136
  53. package/skills/dependency-upgrade-migrator/SKILL.md +11 -10
  54. package/skills/design-system-architect/SKILL.md +4 -3
  55. package/skills/desktop-electron-expert/SKILL.md +129 -128
  56. package/skills/documentation-site-expert/SKILL.md +60 -59
  57. package/skills/doku-mcp-server/SKILL.md +5 -4
  58. package/skills/doku-payment-gateway/SKILL.md +250 -232
  59. package/skills/domain-driven-design-expert/SKILL.md +3 -2
  60. package/skills/e2e-testing-expert/SKILL.md +5 -4
  61. package/skills/ecommerce-expert/SKILL.md +88 -87
  62. package/skills/email-notification-expert/SKILL.md +5 -4
  63. package/skills/ephemeral-generative-ui-architect/SKILL.md +88 -0
  64. package/skills/error-resilience-expert/SKILL.md +14 -13
  65. package/skills/event-driven-architect/SKILL.md +5 -4
  66. package/skills/feature-flag-analytics-expert/SKILL.md +3 -2
  67. package/skills/file-upload-media-expert/SKILL.md +5 -4
  68. package/skills/firebase-security-expert/SKILL.md +5 -4
  69. package/skills/form-validation-expert/SKILL.md +7 -6
  70. package/skills/frontier-ai-models-expert/SKILL.md +116 -0
  71. package/skills/fullstack-expert/SKILL.md +185 -184
  72. package/skills/gemini-agent-booster/SKILL.md +248 -172
  73. package/skills/geospatial-maps-expert/SKILL.md +81 -80
  74. package/skills/global-a11y-i18n-expert/SKILL.md +5 -4
  75. package/skills/glsl-shader-expert/SKILL.md +191 -190
  76. package/skills/go-programming-expert/SKILL.md +5 -4
  77. package/skills/graph-rag-knowledge-expert/SKILL.md +201 -200
  78. package/skills/graphql-apollo-expert/SKILL.md +5 -4
  79. package/skills/headless-cms-expert/SKILL.md +182 -181
  80. package/skills/hig/SKILL.md +5 -4
  81. package/skills/js-backend-expert/SKILL.md +219 -218
  82. package/skills/legacy-code-translator/SKILL.md +6 -5
  83. package/skills/llm-finops-router/SKILL.md +52 -0
  84. package/skills/local-slm-edge-ai-expert/SKILL.md +168 -167
  85. package/skills/logging-error-tracking-expert/SKILL.md +5 -4
  86. package/skills/mcp-server-architect/SKILL.md +315 -307
  87. package/skills/micro-frontend-architect/SKILL.md +5 -4
  88. package/skills/mobile-expo-expert/SKILL.md +5 -4
  89. package/skills/modern-css-native-expert/SKILL.md +190 -189
  90. package/skills/monorepo-architect/SKILL.md +5 -4
  91. package/skills/mpa-orchestrator/SKILL.md +41 -4
  92. package/skills/multi-agent-orchestration/SKILL.md +388 -254
  93. package/skills/mvc-expert/SKILL.md +5 -4
  94. package/skills/n8n-automation-expert/SKILL.md +90 -89
  95. package/skills/nextjs-app-router-expert/SKILL.md +3 -2
  96. package/skills/openapi-swagger-codegen-expert/SKILL.md +4 -3
  97. package/skills/payment-gateway-expert/SKILL.md +131 -128
  98. package/skills/pdf-document-generation-expert/SKILL.md +92 -91
  99. package/skills/performance-web-vitals/SKILL.md +5 -4
  100. package/skills/post-quantum-crypto-migrator/SKILL.md +3 -2
  101. package/skills/prd-architect/SKILL.md +183 -182
  102. package/skills/proactive-background-watcher/SKILL.md +5 -4
  103. package/skills/production-ready-hardener/SKILL.md +10 -9
  104. package/skills/pwa-offline-first-expert/SKILL.md +227 -226
  105. package/skills/pydantic-ai-expert/SKILL.md +162 -161
  106. package/skills/python-programming-expert/SKILL.md +5 -4
  107. package/skills/rate-limit-abuse-prevention/SKILL.md +5 -4
  108. package/skills/realtime-collaboration-expert/SKILL.md +3 -2
  109. package/skills/rich-text-editor-expert/SKILL.md +178 -177
  110. package/skills/rust-programming-expert/SKILL.md +5 -4
  111. package/skills/saas-architect/SKILL.md +155 -154
  112. package/skills/saas-billing/SKILL.md +394 -382
  113. package/skills/saas-multi-tenant/SKILL.md +7 -6
  114. package/skills/scalability-clean-code/SKILL.md +5 -4
  115. package/skills/search-engine-expert/SKILL.md +90 -89
  116. package/skills/self-healing-cloud-orchestrator/SKILL.md +3 -2
  117. package/skills/senior-frontend/SKILL.md +14 -9
  118. package/skills/seo/SKILL.md +4 -4
  119. package/skills/session-memory-manager/SKILL.md +129 -128
  120. package/skills/solidjs-expert/SKILL.md +81 -80
  121. package/skills/spa-orchestrator/SKILL.md +5 -4
  122. package/skills/sse-websocket-streaming-expert/SKILL.md +3 -2
  123. package/skills/state-management-expert/SKILL.md +5 -4
  124. package/skills/supabase-security-expert/SKILL.md +5 -4
  125. package/skills/svelte-sveltekit-expert/SKILL.md +92 -91
  126. package/skills/svg-animation-motion-expert/SKILL.md +3 -2
  127. package/skills/synthetic-data-finetuning-expert/SKILL.md +156 -155
  128. package/skills/tailwind-expert/SKILL.md +62 -5
  129. package/skills/tanstack-query-expert/SKILL.md +5 -4
  130. package/skills/tauri-expert/SKILL.md +5 -4
  131. package/skills/typescript-expert/SKILL.md +5 -4
  132. package/skills/ui-ux-pro-max/SKILL.md +7 -6
  133. package/skills/vector-db-rag-expert/SKILL.md +209 -208
  134. package/skills/vercel-ai-sdk-expert/SKILL.md +226 -181
  135. package/skills/voice-ai-realtime-agent/SKILL.md +243 -242
  136. package/skills/vue-frontend-expert/SKILL.md +5 -4
  137. package/skills/wasm-edge-computing-expert/SKILL.md +3 -2
  138. package/skills/web-3d-graphics-expert/SKILL.md +314 -313
  139. package/skills/web-game-engine-expert/SKILL.md +330 -329
  140. package/skills/web-scraper/SKILL.md +158 -157
  141. package/skills/website-design-cloner/SKILL.md +5 -4
  142. package/skills/webxr-ar-vr-expert/SKILL.md +163 -162
  143. package/skills/wordpress-headless-expert/SKILL.md +145 -144
  144. package/skills/zero-tech-debt-auditor/SKILL.md +115 -0
  145. package/skills/zero-to-prod-orchestrator/SKILL.md +281 -229
  146. package/skills/zero-trust-secret-vault/SKILL.md +3 -2
  147. package/BLUEPRINT.md +0 -319
  148. package/skills/bootstrap-to-modern/SKILL.md +0 -94
  149. package/skills/multiple-entry-points/SKILL.md +0 -91
  150. package/skills/secure-fuzz-testing/SKILL.md +0 -207
  151. package/skills/visual-qa-vision-agent/SKILL.md +0 -71
@@ -1,181 +1,226 @@
1
- ---
2
- name: vercel-ai-sdk-expert
3
- description: "Expert guide for Vercel AI SDK (Core, UI, RSC), streaming structured data, multi-provider model switching, tool calling loops, and React 19/Next.js 15 AI engineering / Panduan ahli Vercel AI SDK, streaming data terstruktur, dan integrasi AI pada React 19/Next.js 15."
4
- author: vibes-plug-swarm
5
- ---
6
-
7
- # Vercel AI SDK Expert (Core, UI & Fullstack AI Engineering)
8
-
9
- [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
-
11
- ---
12
-
13
- <a name="english"></a>
14
- ## English
15
-
16
- ### Orchestration & Integration
17
- Connects and orchestrates with domain skills like `senior-frontend`, `nextjs-app-router-expert`, `ai-llm-integration-expert`, `ui-components-expert`, and `multi-agent-orchestration` to deliver reactive, streaming AI interfaces.
18
-
19
- ### Description
20
- Production-grade guide for building AI applications using the **Vercel AI SDK (Core & UI)**. Covers unified model provider abstraction (`@ai-sdk/anthropic`, `@ai-sdk/openai`, `@ai-sdk/google`), streaming text and structured objects (`streamText`, `streamObject`), dynamic multi-step tool execution loops with `maxSteps`, client-side React 19 hooks (`useChat`, `useCompletion`), streaming data attachments (`createDataStreamResponse`), and generative UI rendering.
21
-
22
- **Swarm Synergy:** Within the **Frontend & UI Swarm**, this skill serves as the AI UI Presentation Lead. It translates complex backend multi-agent outputs and streaming tokens into accessible, beautiful web components in Phase 4 & Phase 5.
23
-
24
- ### Trigger Conditions
25
- - Integrating conversational chat, streaming completions, or generative UI in React 19 / Next.js 15.
26
- - Implementing structured data extraction using `generateObject` or `streamObject` with Zod schemas.
27
- - Building autonomous multi-step tool-calling loops on Next.js Route Handlers or Server Actions.
28
- - Switching seamlessly across frontier providers (Claude 3.7 Sonnet, Gemini 3.8 Flash, OpenAI o3/GPT-4.5, Ollama).
29
- - Building streaming data channels with custom metadata, tool status indicators, and citations.
30
-
31
- ### Vercel AI SDK Architecture (Core vs UI)
32
-
33
- ```
34
- ┌─────────────────────────────────────────────────────────────┐
35
- │ CLIENT LAYER │
36
- │ useChat / useCompletion / Generative UI React Components │
37
- │ • Optimistic updates • Stream reader • Tool invocation │
38
- └──────────────────────────────▲──────────────────────────────┘
39
- │ HTTP SSE / Data Stream Protocol
40
- ┌──────────────────────────────▼──────────────────────────────┐
41
- │ SERVER ROUTE / ACTION │
42
- │ streamText({ │
43
- │ model: anthropic('claude-3-7-sonnet-20250219'), │
44
- │ tools: { weatherTool, dbQueryTool }, │
45
- │ maxSteps: 5, │
46
- │ }).toDataStreamResponse() │
47
- └─────────────────────────────────────────────────────────────┘
48
- ```
49
-
50
- ### Core Implementation Guidelines
51
-
52
- #### 1. Next.js 15 Route Handler with Multi-Step Tool Calling Loop
53
- Use `streamText` with `maxSteps` to enable the model to autonomously call tools, review results, and continue reasoning:
54
- ```typescript
55
- // app/api/chat/route.ts
56
- import { anthropic } from '@ai-sdk/anthropic';
57
- import { streamText, tool } from 'ai';
58
- import { z } from 'zod';
59
-
60
- export const maxDuration = 60; // Allow long-running agentic reasoning
61
-
62
- export async function POST(req: Request) {
63
- const { messages } = await req.json();
64
-
65
- const result = streamText({
66
- model: anthropic('claude-3-7-sonnet-20250219'),
67
- messages,
68
- maxSteps: 5, // Enables iterative tool calling loop
69
- tools: {
70
- calculateMetrics: tool({
71
- description: 'Computes analytical metrics from raw time series data',
72
- parameters: z.object({
73
- datasetId: z.string(),
74
- metricType: z.enum(['p95_latency', 'error_rate', 'throughput']),
75
- }),
76
- execute: async ({ datasetId, metricType }) => {
77
- const data = await fetchDatasetMetrics(datasetId, metricType);
78
- return { datasetId, metricType, value: data.result };
79
- },
80
- }),
81
- },
82
- system: 'You are an elite software performance auditor. Always back up your conclusions with data tool outputs.',
83
- });
84
-
85
- return result.toDataStreamResponse();
86
- }
87
- ```
88
-
89
- #### 2. Streaming Type-Safe Structured Objects (`streamObject`)
90
- Stream structured JSON objects directly into the UI while generating:
91
- ```typescript
92
- import { google } from '@ai-sdk/google';
93
- import { streamObject } from 'ai';
94
- import { z } from 'zod';
95
-
96
- export async function POST(req: Request) {
97
- const { codeDiff } = await req.json();
98
-
99
- const result = streamObject({
100
- model: google('gemini-2.5-flash'),
101
- schema: z.object({
102
- securityVulnerabilities: z.array(z.object({
103
- severity: z.enum(['low', 'medium', 'high', 'critical']),
104
- cwe: z.string(),
105
- explanation: z.string(),
106
- suggestedFix: z.string(),
107
- })),
108
- overallRiskScore: z.number().min(0).max(100),
109
- passesReview: z.boolean(),
110
- }),
111
- prompt: `Audit the following git diff for security regressions:\n${codeDiff}`,
112
- });
113
-
114
- return result.toTextStreamResponse();
115
- }
116
- ```
117
-
118
- #### 3. Client Hook Integration (`useChat` with Tool Invocations)
119
- Render real-time streaming tokens, loading skeletons, and interactive tool call results:
120
- ```tsx
121
- 'use client';
122
-
123
- import { useChat } from '@ai-sdk/react';
124
-
125
- export function AgenticChat() {
126
- const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
127
- maxSteps: 5,
128
- });
129
-
130
- return (
131
- <div className="flex flex-col h-[600px] w-full max-w-2xl mx-auto border rounded-xl p-4 bg-background">
132
- <div className="flex-1 overflow-y-auto space-y-4 pr-2">
133
- {messages.map((m) => (
134
- <div key={m.id} className={`flex ${m.role === 'user' ? 'justify-end' : 'justify-start'}`}>
135
- <div className={`p-3 rounded-lg max-w-[80%] ${m.role === 'user' ? 'bg-primary text-primary-foreground' : 'bg-muted'}`}>
136
- <div className="whitespace-pre-wrap">{m.content}</div>
137
- {m.toolInvocations?.map((toolInvocation) => (
138
- <div key={toolInvocation.toolCallId} className="mt-2 text-xs p-2 bg-black/10 rounded">
139
- <span className="font-semibold">Tool [{toolInvocation.toolName}]:</span>{' '}
140
- {'result' in toolInvocation ? JSON.stringify(toolInvocation.result) : 'Executing...'}
141
- </div>
142
- ))}
143
- </div>
144
- </div>
145
- ))}
146
- </div>
147
- <form onSubmit={handleSubmit} className="flex gap-2 pt-3 border-t">
148
- <input
149
- value={input}
150
- onChange={handleInputChange}
151
- placeholder="Ask the agent..."
152
- className="flex-1 px-3 py-2 border rounded-md"
153
- />
154
- <button type="submit" disabled={isLoading} className="px-4 py-2 bg-primary text-primary-foreground rounded-md">
155
- Send
156
- </button>
157
- </form>
158
- </div>
159
- );
160
- }
161
- ```
162
-
163
- ---
164
-
165
- <a name="bahasa-indonesia"></a>
166
- ## Bahasa Indonesia
167
-
168
- ### Integrasi Orkestrasi
169
- Terhubung dan mengorkestrasi skill domain yang relevan seperti `senior-frontend`, `nextjs-app-router-expert`, `ai-llm-integration-expert`, `ui-components-expert`, dan `multi-agent-orchestration` untuk menghadirkan antarmuka AI yang reaktif dan berlatensi rendah.
170
-
171
- ### Deskripsi
172
- Panduan produksi untuk membangun aplikasi AI menggunakan **Vercel AI SDK (Core & UI)**. Mencakup abstraksi penyedia model terpadu (`@ai-sdk/anthropic`, `@ai-sdk/openai`, `@ai-sdk/google`), streaming teks dan objek terstruktur (`streamText`, `streamObject`), siklus eksekusi tool multi-langkah otonom dengan `maxSteps`, hook klien React 19 (`useChat`, `useCompletion`), streaming respons saluran data (`createDataStreamResponse`), dan rendering Generative UI.
173
-
174
- **Sinergi Swarm:** Di dalam **Frontend & UI Swarm**, skill ini berperan sebagai Pemimpin Presentasi UI AI. Skill ini bertugas mentransformasikan keluaran multi-agen backend dan token streaming menjadi komponen web yang interaktif, aksesibel, dan elegan pada Fase 4 & Fase 5.
175
-
176
- ### Kondisi Pemicu
177
- - Mengintegrasikan chat percakapan, streaming respons, atau generative UI di React 19 / Next.js 15.
178
- - Menerapkan ekstraksi data terstruktur dengan validasi skema Zod via `generateObject` atau `streamObject`.
179
- - Membangun loop pemanggilan tool (*tool-calling loops*) multi-langkah di Route Handler atau Server Actions.
180
- - Beralih fleksibel antar penyedia model frontier (Claude 3.7 Sonnet, Gemini 3.8 Flash, OpenAI o3/GPT-4.5, Ollama).
181
- - Mengelola status eksekusi tool, indikator loading, dan rendering komponen UI secara dinamis saat streaming berlangsung.
1
+ ---
2
+ name: vercel-ai-sdk-expert
3
+ description: "Expert guide for Vercel AI SDK (Core, UI, RSC), streaming structured data, multi-provider model switching, tool calling loops, and React 19/Next.js 15 AI engineering / Panduan ahli Vercel AI SDK, streaming data terstruktur, dan integrasi AI pada React 19/Next.js 15."
4
+ author: vibes-plug-swarm
5
+ version: "3.0.0"
6
+ ---
7
+
8
+ # Vercel AI SDK Expert (Core, UI & Fullstack AI Engineering)
9
+
10
+ [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
11
+
12
+ ---
13
+
14
+ <a name="english"></a>
15
+ ## English
16
+
17
+ ### Orchestration & Integration
18
+ Connects and orchestrates with domain skills like `senior-frontend`, `nextjs-app-router-expert`, `ai-llm-integration-expert`, `design-system-architect, senior-frontend`, and `multi-agent-orchestration` to deliver reactive, streaming AI interfaces.
19
+
20
+ ### Description
21
+ Production-grade guide for building AI applications using the **Vercel AI SDK (Core & UI)**. Covers unified model provider abstraction (`@ai-sdk/anthropic`, `@ai-sdk/openai`, `@ai-sdk/google`), streaming text and structured objects (`streamText`, `streamObject`), dynamic multi-step tool execution loops with `maxSteps`, client-side React 19 hooks (`useChat`, `useCompletion`), streaming data attachments (`createDataStreamResponse`), and generative UI rendering.
22
+
23
+ **Swarm Synergy:** Within the **Frontend & UI Swarm**, this skill serves as the AI UI Presentation Lead. It translates complex backend multi-agent outputs and streaming tokens into accessible, beautiful web components in Phase 4 & Phase 5.
24
+
25
+ ### Trigger Conditions
26
+ - Integrating conversational chat, streaming completions, or generative UI in React 19 / Next.js 15.
27
+ - Implementing structured data extraction using `generateObject` or `streamObject` with Zod schemas.
28
+ - Building autonomous multi-step tool-calling loops on Next.js Route Handlers or Server Actions.
29
+ - Switching seamlessly across frontier providers (Claude 3.7 Sonnet, Gemini 3.8 Flash, OpenAI o3/GPT-4.5, Ollama).
30
+ - Building streaming data channels with custom metadata, tool status indicators, and citations.
31
+
32
+ ### Vercel AI SDK Architecture (Core vs UI)
33
+
34
+ ```
35
+ ┌─────────────────────────────────────────────────────────────┐
36
+ │ CLIENT LAYER │
37
+ │ useChat / useCompletion / Generative UI React Components │
38
+ │ • Optimistic updates • Stream reader • Tool invocation │
39
+ └──────────────────────────────▲──────────────────────────────┘
40
+ │ HTTP SSE / Data Stream Protocol
41
+ ┌──────────────────────────────▼──────────────────────────────┐
42
+ │ SERVER ROUTE / ACTION │
43
+ │ streamText({ │
44
+ │ model: anthropic('claude-3-7-sonnet-20250219'), │
45
+ │ tools: { weatherTool, dbQueryTool }, │
46
+ │ maxSteps: 5, │
47
+ │ }).toDataStreamResponse() │
48
+ └─────────────────────────────────────────────────────────────┘
49
+ ```
50
+
51
+ ### Core Implementation Guidelines
52
+
53
+ #### 1. Next.js 15 Route Handler with Multi-Step Tool Calling Loop
54
+ Use `streamText` with `maxSteps` to enable the model to autonomously call tools, review results, and continue reasoning:
55
+ ```typescript
56
+ // app/api/chat/route.ts
57
+ import { anthropic } from '@ai-sdk/anthropic';
58
+ import { streamText, tool } from 'ai';
59
+ import { z } from 'zod';
60
+
61
+ export const maxDuration = 60; // Allow long-running agentic reasoning
62
+
63
+ export async function POST(req: Request) {
64
+ const { messages } = await req.json();
65
+
66
+ const result = streamText({
67
+ model: anthropic('claude-3-7-sonnet-20250219'),
68
+ messages,
69
+ maxSteps: 5, // Enables iterative tool calling loop
70
+ tools: {
71
+ calculateMetrics: tool({
72
+ description: 'Computes analytical metrics from raw time series data',
73
+ parameters: z.object({
74
+ datasetId: z.string(),
75
+ metricType: z.enum(['p95_latency', 'error_rate', 'throughput']),
76
+ }),
77
+ execute: async ({ datasetId, metricType }) => {
78
+ const data = await fetchDatasetMetrics(datasetId, metricType);
79
+ return { datasetId, metricType, value: data.result };
80
+ },
81
+ }),
82
+ },
83
+ system: 'You are an elite software performance auditor. Always back up your conclusions with data tool outputs.',
84
+ });
85
+
86
+ return result.toDataStreamResponse();
87
+ }
88
+ ```
89
+
90
+ #### 2. Streaming Type-Safe Structured Objects (`streamObject`)
91
+ Stream structured JSON objects directly into the UI while generating:
92
+ ```typescript
93
+ import { google } from '@ai-sdk/google';
94
+ import { streamObject } from 'ai';
95
+ import { z } from 'zod';
96
+
97
+ export async function POST(req: Request) {
98
+ const { codeDiff } = await req.json();
99
+
100
+ const result = streamObject({
101
+ model: google('gemini-3.8-flash'),
102
+ schema: z.object({
103
+ securityVulnerabilities: z.array(z.object({
104
+ severity: z.enum(['low', 'medium', 'high', 'critical']),
105
+ cwe: z.string(),
106
+ explanation: z.string(),
107
+ suggestedFix: z.string(),
108
+ })),
109
+ overallRiskScore: z.number().min(0).max(100),
110
+ passesReview: z.boolean(),
111
+ }),
112
+ prompt: `Audit the following git diff for security regressions:\n${codeDiff}`,
113
+ });
114
+
115
+ return result.toTextStreamResponse();
116
+ }
117
+ ```
118
+
119
+ #### 3. Client Hook Integration (`useChat` with Tool Invocations)
120
+ Render real-time streaming tokens, loading skeletons, and interactive tool call results:
121
+ ```tsx
122
+ 'use client';
123
+
124
+ import { useChat } from '@ai-sdk/react';
125
+
126
+ export function AgenticChat() {
127
+ const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
128
+ maxSteps: 5,
129
+ });
130
+
131
+ return (
132
+ <div className="flex flex-col h-[600px] w-full max-w-2xl mx-auto border rounded-xl p-4 bg-background">
133
+ <div className="flex-1 overflow-y-auto space-y-4 pr-2">
134
+ {messages.map((m) => (
135
+ <div key={m.id} className={`flex ${m.role === 'user' ? 'justify-end' : 'justify-start'}`}>
136
+ <div className={`p-3 rounded-lg max-w-[80%] ${m.role === 'user' ? 'bg-primary text-primary-foreground' : 'bg-muted'}`}>
137
+ <div className="whitespace-pre-wrap">{m.content}</div>
138
+ {m.toolInvocations?.map((toolInvocation) => (
139
+ <div key={toolInvocation.toolCallId} className="mt-2 text-xs p-2 bg-black/10 rounded">
140
+ <span className="font-semibold">Tool [{toolInvocation.toolName}]:</span>{' '}
141
+ {'result' in toolInvocation ? JSON.stringify(toolInvocation.result) : 'Executing...'}
142
+ </div>
143
+ ))}
144
+ </div>
145
+ </div>
146
+ ))}
147
+ </div>
148
+ <form onSubmit={handleSubmit} className="flex gap-2 pt-3 border-t">
149
+ <input
150
+ value={input}
151
+ onChange={handleInputChange}
152
+ placeholder="Ask the agent..."
153
+ className="flex-1 px-3 py-2 border rounded-md"
154
+ />
155
+ <button type="submit" disabled={isLoading} className="px-4 py-2 bg-primary text-primary-foreground rounded-md">
156
+ Send
157
+ </button>
158
+ </form>
159
+ </div>
160
+ );
161
+ }
162
+ ```
163
+
164
+ #### 4. Reasoning Token Streaming
165
+ Handle `part.type === 'reasoning'` in streamText responses to build collapsible thinking UIs.
166
+
167
+ Provider-specific thinking configuration:
168
+ - Anthropic: `thinking: { type: 'enabled', budgetTokens: 10000 }`
169
+ - Google: `thinkingConfig: { thinkingBudget: 10000 }`
170
+ - OpenAI: `reasoningEffort: 'high'`
171
+
172
+ ```typescript
173
+ // Server: Route handler with reasoning streaming
174
+ const result = streamText({
175
+ model: anthropic('claude-3-7-sonnet-20250219'),
176
+ prompt: userMessage,
177
+ providerOptions: {
178
+ anthropic: { thinking: { type: 'enabled', budgetTokens: 10000 } }
179
+ }
180
+ });
181
+ ```
182
+
183
+ ```tsx
184
+ // Client: React component rendering reasoning accordion
185
+ {message.parts?.map((part, i) => {
186
+ if (part.type === 'reasoning') {
187
+ return <ThinkingAccordion key={i} content={part.reasoning} />;
188
+ }
189
+ if (part.type === 'text') {
190
+ return <Markdown key={i}>{part.text}</Markdown>;
191
+ }
192
+ })}
193
+ ```
194
+
195
+ #### 5. Multimodal Attachments in useChat
196
+ Handle user-uploaded images and documents in `useChat` using `experimental_attachments` in the chat input. This allows sending base64 or URL-based image attachments to vision models.
197
+
198
+ ```tsx
199
+ const { messages, input, handleSubmit, handleInputChange } = useChat();
200
+
201
+ const handleFileUpload = (files: FileList) => {
202
+ // Convert to data URLs or upload to storage
203
+ };
204
+
205
+ handleSubmit(e, { experimental_attachments: attachments });
206
+ ```
207
+
208
+ ---
209
+
210
+ <a name="bahasa-indonesia"></a>
211
+ ## Bahasa Indonesia
212
+
213
+ ### Integrasi Orkestrasi
214
+ Terhubung dan mengorkestrasi skill domain yang relevan seperti `senior-frontend`, `nextjs-app-router-expert`, `ai-llm-integration-expert`, `design-system-architect, senior-frontend`, dan `multi-agent-orchestration` untuk menghadirkan antarmuka AI yang reaktif dan berlatensi rendah.
215
+
216
+ ### Deskripsi
217
+ Panduan produksi untuk membangun aplikasi AI menggunakan **Vercel AI SDK (Core & UI)**. Mencakup abstraksi penyedia model terpadu (`@ai-sdk/anthropic`, `@ai-sdk/openai`, `@ai-sdk/google`), streaming teks dan objek terstruktur (`streamText`, `streamObject`), siklus eksekusi tool multi-langkah otonom dengan `maxSteps`, hook klien React 19 (`useChat`, `useCompletion`), streaming respons saluran data (`createDataStreamResponse`), dan rendering Generative UI.
218
+
219
+ **Sinergi Swarm:** Di dalam **Frontend & UI Swarm**, skill ini berperan sebagai Pemimpin Presentasi UI AI. Skill ini bertugas mentransformasikan keluaran multi-agen backend dan token streaming menjadi komponen web yang interaktif, aksesibel, dan elegan pada Fase 4 & Fase 5.
220
+
221
+ ### Kondisi Pemicu
222
+ - Mengintegrasikan chat percakapan, streaming respons, atau generative UI di React 19 / Next.js 15.
223
+ - Menerapkan ekstraksi data terstruktur dengan validasi skema Zod via `generateObject` atau `streamObject`.
224
+ - Membangun loop pemanggilan tool (*tool-calling loops*) multi-langkah di Route Handler atau Server Actions.
225
+ - Beralih fleksibel antar penyedia model frontier (Claude 3.7 Sonnet, Gemini 3.8 Flash, OpenAI o3/GPT-4.5, Ollama).
226
+ - Mengelola status eksekusi tool, indikator loading, dan rendering komponen UI secara dinamis saat streaming berlangsung.