Skills Plugins MCP Prompt Model 博客 我的中心

primitives

$49

DeepseekModel キュレーション済みスキル 品質 良好 · 64 v1.0.0

取得

https://deepseekmodel.com/api/download.php?id=assistant-ui-skills-assistant-ui-skills-primitives-skill-md&format=skill
ダウンロード .skill 標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
name primitives description Builds and customizes assistant-ui chat UI from composable, unstyled @assistant-ui/react primitives that follow Radix-style part composition: ThreadPrimitive (.Root, .Viewport, .ViewportProvider, .ViewportFooter, .Messages, .MessageByIndex, .Unstable_MessageById, .ScrollToBottom, .Suggestions), ComposerPrimitive (.Input, .Send, .Cancel, .Attachments, .AddAttachment, .AttachmentDropzone, .Quote, .Dictate, .Queue, the Unstable_TriggerPopover family for mentions and slash commands), MessagePrimitive (.Parts, .GroupedParts, .Attachments, .Quote, .GenerativeUI, .Error) and MessagePartPrimitive, ActionBarPrimitive plus ActionBarMorePrimitive, BranchPickerPrimitive, AttachmentPrimitive, ErrorPrimitive, AssistantModalPrimitive, ChainOfThoughtPrimitive, SelectionToolbarPrimitive, SuggestionPrimitive, QueueItemPrimitive, and the ThreadList primitives. Use when assembling or styling a custom Thread, Composer, message list, action bar, branch picker, mention or slash command popover, or suggestion grid from building blocks; when wiring headless composer input, input history, dictation, quoting, or file attachments; or when handling message editing, branching, timing, virtualization, custom scrollbars, or grouped chain of thought UI. Covers MessagePrimitive.Parts children render functions for text, image, file, reasoning, source, tool call, data, and generative UI parts, part grouping with groupPartByType (the mcp-app key was removed in 0.15, use standalone-tool-call), conditional rendering with AuiIf in selector form (the per-primitive .If props are deprecated), and gotchas such as wrapping in AssistantRuntimeProvider and adding className since primitives ship unstyled. For prebuilt drop-in UI and CLI scaffolding use setup, for the styled component catalog built on these primitives use elements, for multi-thread sidebar behavior use thread-list. license MIT assistant-ui Primitives Always consult assistant-ui.com/llms.txt for the latest API. Primitives are composable, unstyled components that follow Radix style part composition: a .Root provides context, .PartName children read it, and every part accepts asChild to merge its behavior onto your own element instead of rendering a wrapper. They ship with no styles and no opinions about layout, only behavior: keyboard shortcuts, auto scroll, streaming state, focus management, and disabled logic. Wrap your tree in AssistantRuntimeProvider (or a nested AuiProvider ) before using any of them. References ./references/thread.md -- ThreadPrimitive: viewport, auto scroll, turn anchor, the messages iterator ./references/composer.md -- ComposerPrimitive: root, input, send, cancel, submit behavior ./references/message.md -- MessagePrimitive: the parts pipeline, tool resolution, attachments, quote, error ./references/action-bar.md -- ActionBarPrimitive and the ActionBarMorePrimitive overflow menu ./references/part-grouping.md -- GroupedParts, groupPartByType, chain of thought UI ./references/mentions.md -- @ mentions, / slash commands, custom trigger matchers ./references/composer-input.md -- headless input, input history, dictation, quoting, attachments ./references/messages.md -- editing, branching, message timing, virtualization, scrollbar, image parts ./references/suggestions.md -- Suggestions([...]) , the suggestion adapter, ThreadPrimitive.Suggestions Import import { AuiIf , ThreadPrimitive , ComposerPrimitive , MessagePrimitive , MessagePartPrimitive , ActionBarPrimitive , ActionBarMorePrimitive , BranchPickerPrimitive , AttachmentPrimitive , ErrorPrimitive , AssistantModalPrimitive , ChainOfThoughtPrimitive , SelectionToolbarPrimitive , SuggestionPrimitive , QueueItemPrimitive , ThreadListPrimitive , ThreadListItemPrimitive , ThreadListItemMorePrimitive , } from "@assistant-ui/react" ; Primitive parts Primitive Parts ThreadPrimitive .Root , .Viewport , .ViewportProvider , .ViewportFooter , .Messages , .MessageByIndex , .Unstable_MessageById , .ScrollToBottom , .Suggestions , .SuggestionByIndex , .Suggestion , .Empty (deprecated), .If (deprecated) ComposerPrimitive .Root , .Input , .Send , .Cancel , .AddAttachment , .Attachments , .AttachmentByIndex , .AttachmentDropzone , .Dictate , .StopDictation , .DictationTranscript , .Quote , .QuoteText , .QuoteDismiss , .Queue , .Unstable_TriggerPopoverRoot , .Unstable_TriggerPopover (with .Directive / .Action ), .Unstable_TriggerPopoverCategories , .Unstable_TriggerPopoverCategoryItem , .Unstable_TriggerPopoverItems , .Unstable_TriggerPopoverItem , .Unstable_TriggerPopoverBack , .If (deprecated) MessagePrimitive .Root , .Parts ( .Content is a deprecated alias), .PartByIndex , .GroupedParts , .Unstable_PartsGrouped , .Unstable_PartsGroupedByParentId , .Attachments , .AttachmentByIndex , .Quote , .Error , .GenerativeUI , .If (deprecated) MessagePartPrimitive .Text , .Image , .InProgress , .Messages ActionBarPrimitive .Root , .Copy , .Reload , .Edit , .Speak , .StopSpeaking , .FeedbackPositive , .FeedbackNegative , .ExportMarkdown ActionBarMorePrimitive .Root , .Trigger , .Content , .Item , .Separator BranchPickerPrimitive .Root , .Previous , .Next , .Number , .Count AttachmentPrimitive .Root , .Name , .Remove , .unstable_Thumb ErrorPrimitive .Root , .Message AssistantModalPrimitive .Root , .Trigger , .Content , .Anchor ChainOfThoughtPrimitive .Root , .AccordionTrigger , .Parts (legacy, prefer MessagePrimitive.GroupedParts ) SelectionToolbarPrimitive .Root , .Quote SuggestionPrimitive .Title , .Description , .Trigger QueueItemPrimitive .Text , .Steer , .Remove ThreadListPrimitive .Root , .New , .Items , .ItemByIndex , .LoadMore ThreadListItemPrimitive .Root , .Trigger , .Title , .Archive , .Unarchive , .Delete ThreadListItemMorePrimitive .Root , .Trigger , .Content , .Item , .Separator ThreadListPrimitive , ThreadListItemPrimitive , and ThreadListItemMorePrimitive drive multi-thread sidebars. This skill covers them only in the table above; see thread-list for the full custom UI, CRUD operations, and remote adapter walkthrough. Conditional rendering with AuiIf Reach for AuiIf for every new condition. It takes a selector over the full assistant state ( thread , message , composer , part , attachment ) instead of a fixed set of boolean props, and it replaces the deprecated .If that still ships on ThreadPrimitive , MessagePrimitive , and ComposerPrimitive . < AuiIf condition={ ( s ) => s. thread . isEmpty }> < WelcomeScreen /> </ AuiIf > < AuiIf condition = {(s) => s.thread.isRunning}> < ComposerPrimitive.Cancel > Stop </ ComposerPrimitive.Cancel > </ AuiIf > < AuiIf condition = {(s) => s.message.role === "assistant" && s.message.status?.type === "complete"} > < FollowUpCard /> </ AuiIf > < AuiIf condition = {(s) => s.composer.dictation != null}> < ComposerPrimitive.StopDictation > Stop </ ComposerPrimitive.StopDictation > </ AuiIf > AuiIf.Condition is exported for typing a condition function outside JSX. s.message and s.part are only populated inside a message or part context; s.thread and s.composer are always available. Custom thread example A complete thread built from primitives: welcome suggestions, per role messages with an inline edit composer, an action bar, a branch picker, and a composer footer that swaps Send for Cancel mid run. function CustomThread ( ) { return ( < ThreadPrimitive.Root className = "flex h-full flex-col" > < ThreadPrimitive.Viewport className = "flex flex-1 flex-col gap-4 overflow-y-auto p-4" > < AuiIf condition = {(s) => s.thread.isEmpty}> < div className = "flex flex-1 flex-col items-center justify-center gap-3" > < p > Ask me anything. </ p > < ThreadPrimitive.Suggestions > {() => ( < SuggestionPrimitive.Trigger send className = "rounded-lg border px-3 py-2" > < SuggestionPrimitive.Title /> </ SuggestionPrimitive.Trigger > )} </ ThreadPrimitive.Suggestions > </ div > </ AuiIf > < ThreadPrimitive.Messages > {({ message }) => { if (message.role === "user") { return message.composer.isEditing ? < EditComposer /> : < UserMessage /> ; } return < AssistantMessage /> ; }} </ ThreadPrimitive.Messages > < ThreadPrimitive.ViewportFooter className = "sticky bottom-0 pt-2" > < ComposerPrimitive.Root className = "flex items-end gap-2 rounded-2xl border bg-background p-2" > < ComposerPrimitive.Input placeholder = "Send a message..." rows = {1} className = "flex-1 resize-none bg-transparent px-2 py-1.5 focus:outline-none" /> < AuiIf condition = {(s) => !s.thread.isRunning}> < ComposerPrimitive.Send className = "rounded-full bg-primary px-3 py-1.5 text-primary-foreground" /> </ AuiIf > < AuiIf condition = {(s) => s.thread.isRunning}> < ComposerPrimitive.Cancel className = "rounded-full border px-3 py-1.5" /> </ AuiIf > </ ComposerPrimitive.Root > </ ThreadPrimitive.ViewportFooter > </ ThreadPrimitive.Viewport > </ ThreadPrimitive.Root > ); } function UserMessage ( ) { return ( < MessagePrimitive.Root className = "flex flex-col items-end gap-1" > < MessagePrimitive.Quote > {({ text }) => < blockquote className = "border-l pl-2 text-sm italic" > {text} </ blockquote > } </ MessagePrimitive.Quote > < div className = "max-w-[80%] rounded-2xl bg-primary px-4 py-2 text-primary-foreground" > < MessagePrimitive.Parts > {({ part }) => { if (part.type === "text") return < MessagePartPrimitive.Text /> ; if (part.type === "image") return < MessagePartPrimitive.Image className = "max-w-full rounded-lg" /> ; return null; }} </ MessagePrimitive.Parts > </ div > < ActionBarPrimitive.Root hideWhenRunning autohide = "not-last" > < ActionBarPrimitive.Edit > Edit </ ActionBarPrimitive.Edit > </ ActionBarPrimitive.Root > </ MessagePrimitive.Root > ); } function EditComposer ( ) { return ( < MessagePrimitive.Root className = "flex justify-end" > < ComposerPrimitive.Root className = "w-[80%] rounded-2xl border p-2" > < ComposerPrimitive.Input className = "w-full resize-none bg-transparent focus:outline-none" /> < div className = "flex justify-end gap-2 pt-1" > < ComposerPrimitive.Cancel className = "rounded-md px-2 py-1 text-sm" > Cancel </ ComposerPrimitive.Cancel > < ComposerPrimitive.Send className = "rounded-md bg-primary px-2 py-1 text-sm text-primary-foreground" > Save </ ComposerPrimitive.Send > </ div > </ ComposerPrimitive.Root > </ MessagePrimitive.Root > ); } function AssistantMessage ( ) { return ( <MessagePrimitive.Root className="flex flex-col items-start gap-1"> <div className="max-w-[80%] rounded-2xl bg-muted px-4 py-2"> <MessagePrimitive.Parts> {({ part }) => { switch (part.type) { case "text": return <p className="whitespace-pre-wrap"><MessagePartPrimitive.Text /></p>; case "image": return <MessagePartPrimitive.Image className="max-w-full rounded-lg" />; case "file": return ( <a href={part.data ?? part.url} download={part.filename} className="text-sm underline"> {part.filename ?? part.mimeType} </a> ); case "reasoning": return ( <details className="text-sm text-muted-foreground"> <summary>Thinking</summary> {part.text} </details> ); case "source": return part.sourceType === "url" ? ( <a href={part.url} className="text-sm underline">{part.title ?? part.url}</a> ) : ( <span className="text-sm">{part.title}</span> ); case "tool-call": return part.toolUI ?? <div className="rounded-md border p-2 text-sm">{part.toolName}</div>; case "data": return part.dataRendererUI ?? null; case "generative-ui": return <MessagePrimitive.GenerativeUI />; default: return null; // registered tool and data UIs still render when you return null } }} </MessagePrimitive.Parts> </div> <MessagePrimitive.Error> <ErrorPrimitive.Root className="text-sm text-destructive"> <ErrorPrimitive.Message /> </ErrorPrimitive.Root> </MessagePrimitive.Error> <div className="flex items-center gap-2">
このスキルを起動するキーワード。クリックでコピーできます。

このスキルにはトリガーワードがありません。

ダウンロードした .skill に含まれるフィールド。
フィールド 説明
formatフォーマット識別子(skill/v1)
skill_idスキル固有 ID
nameスキル名
versionバージョン
description説明
categoryカテゴリ(配列)
trigger_wordsトリガーワード
tagsタグ
sourceソース
source_urlソース URL(本ページ)
exported_atエクスポート日時(ダウンロード毎)
system_promptシステムプロンプト本文
model_configモデル設定:provider / model / temperature / max_tokens / top_p
examplesサンプル
install_guide各プラットフォームの導入説明(Coze / Dify / Claude / カスタム)
同じスキルを各プラットフォーム形式で出力できます。
.skill 標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能 ダウンロード
.skillpro 拡張形式。scripts / tools / dependencies / hooks を含む ダウンロード
.json 純粋な JSON 出力。system_prompt とモデル設定のみ ダウンロード
Coze frontmatter 付き Markdown。Coze へのインポート用 ダウンロード
Dify Dify DSL。アプリ作成後にそのままインポート ダウンロード

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。