Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Ai Sdk Ui

ASecurity

Build streaming AI user interfaces with AI SDK patterns — message rendering, tool-call displays, loading states, and optimistic updates. Use when creating chat UIs that stream model output and show agent activity.

2 stars
0 votes
0 copies
0 views
Added 9/29/2026
ai-agentsgoapi

Works with

api

Security Analysis

A100/100

Scanned 9/29/2026

$npx -y skills add aicodedecode/awesome-muse-skills --skill ai-sdk-ui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ai Sdk Ui?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Ai Sdk Ui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aicodedecode-ai-sdk-ui/badge)](https://www.skillsdirectory.com/skills/aicodedecode-ai-sdk-ui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: ai-sdk-ui
description: Build streaming AI user interfaces with AI SDK patterns — message rendering, tool-call displays, loading states, and optimistic updates. Use when creating chat UIs that stream model output and show agent activity.
category: ai-research
---

# Streaming AI Interfaces with AI SDK Patterns

Modern AI UIs stream: tokens appear as they're generated, tool calls show as activity, and the 
interface stays responsive throughout. AI SDKs provide the hooks and helpers for this — this 
skill covers the patterns, not any single SDK's API.

## Overview

The core pattern: a `useChat`-style hook manages messages, input, and streaming state; the UI 
renders message parts (text, tool calls, images) as they arrive. Tool invocations render as 
activity cards — "searching…", "reading file…" — so users see the agent working. State 
handling covers the lifecycle: idle, streaming, awaiting tool, error. Get these patterns right and 
the UI feels alive; get them wrong and it feels broken even when the model is fine.

## When to use

- Building a chat interface over a streaming model API.
- Showing agent activity: tool calls, reasoning progress, multi-step work.
- Adding AI features to an existing app: copilots, assistants, smart compose.
- Any UI where the model takes more than a second to respond (which is all of them).

## Core concepts

- **Streaming messages**: render tokens incrementally; handle the stream lifecycle (start, chunk, 
done, error, abort). Never leave the user staring at a spinner with no feedback.
- **Message parts**: messages as lists of parts — text, tool-call, tool-result, image, reasoning. 
Render each part with its own component.
- **Tool-call UI**: show tool activity as it happens — pending, running, complete — with 
human-readable labels, not raw JSON. Collapsible details for the curious.
- **Optimistic updates**: show the user's message immediately; show a typing/progress indicator for 
the assistant. Perceived latency matters as much as real latency.
- **Regeneration and editing**: let users retry a response or edit their message and re-run. These 
are core interactions, not extras.
- **Error and abort**: network failures, rate limits, user-cancelled streams — each needs a clear 
UI state and a recovery action (retry button, not a dead chat).

## Practical workflow

1. Set up the chat hook: messages state, send function, streaming status, abort controller.
2. Build the message list: part-based rendering — text streams in, tool calls show as activity 
cards.
3. Add input with submit-on-enter, disabled-during-streaming (or queueing), and a stop button.
4. Implement tool-call displays: map each tool to a friendly label and status indicator.
5. Handle the unhappy paths: errors with retry, abort with partial-message preservation, empty 
states with suggestions.
6. Polish: auto-scroll management, markdown rendering with sanitization, copy buttons, token/cost 
display if relevant.

```text
UI state machine:
idle → (send) → streaming → (done) → idle
                 ↓ (tool call)
            awaiting-tool → streaming (result in)
                 ↓ (error)              ↓ (abort)
               error → [retry]      partial kept → idle
```

## Common pitfalls

- **No streaming feedback**: waiting for the full response before rendering. Stream from the first 
token.
- **Raw JSON in the UI**: dumping tool calls as JSON blobs. Map tools to human-readable activity.
- **Broken auto-scroll**: jumping while the user reads history. Only auto-scroll when already at 
the bottom.
- **No abort**: users can't stop a runaway generation. Always provide stop.
- **Unsanitized markdown**: rendering model output as HTML without sanitization. XSS via chatbot is 
a real attack.
- **State loss on error**: a failed stream wiping the conversation. Preserve partial messages and 
offer retry.

Attribution

aicodedecodeaicodedecode
View sourceSee grades on GitHubMore from aicodedecode →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →