primitives — community primitives, thinkex, community, ide skills, Claude Code, Cursor, Windsurf

v0.0.1
GitHub

About this Skill

Perfect for Frontend Agents needing customizable, composable UI components following Radix UI patterns. Rethinking the User Interface of AI

ThinkEx-OSS ThinkEx-OSS
[0]
[0]
Updated: 3/5/2026

Agent Capability Analysis

The primitives skill by ThinkEx-OSS is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance.

Ideal Agent Persona

Perfect for Frontend Agents needing customizable, composable UI components following Radix UI patterns.

Core Value

Empowers agents to build intuitive interfaces with unstyled, modular components, leveraging Radix UI and API references from assistant-ui.com for seamless integration with ThreadPrimitive, ComposerPrimitive, and MessagePrimitive.

Capabilities Granted for primitives

Composing reusable UI elements for threaded conversations
Customizing message layouts with MessagePrimitive
Enhancing user experience with ActionBar components

! Prerequisites & Limits

  • Requires consultation of latest API at assistant-ui.com/llms.txt
  • Limited to components following Radix UI patterns
Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

primitives

Install primitives, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly

assistant-ui Primitives

Always consult assistant-ui.com/llms.txt for latest API.

Composable, unstyled components following Radix UI patterns.

References

Import

tsx
1import { 2 ThreadPrimitive, 3 ComposerPrimitive, 4 MessagePrimitive, 5 ActionBarPrimitive, 6 BranchPickerPrimitive, 7 AttachmentPrimitive, 8 ThreadListPrimitive, 9 ThreadListItemPrimitive, 10} from "@assistant-ui/react";

Primitive Parts

PrimitiveKey Parts
ThreadPrimitive.Root, .Viewport, .Messages, .Empty, .ScrollToBottom
ComposerPrimitive.Root, .Input, .Send, .Cancel, .Attachments
MessagePrimitive.Root, .Content, .Avatar, .If
ActionBarPrimitive.Copy, .Edit, .Reload, .Speak
BranchPickerPrimitive.Previous, .Next, .Number, .Count

Custom Thread Example

tsx
1function CustomThread() { 2 return ( 3 <ThreadPrimitive.Root className="flex flex-col h-full"> 4 <ThreadPrimitive.Empty> 5 <div className="flex-1 flex items-center justify-center"> 6 Start a conversation 7 </div> 8 </ThreadPrimitive.Empty> 9 10 <ThreadPrimitive.Viewport className="flex-1 overflow-y-auto p-4"> 11 <ThreadPrimitive.Messages components={{ 12 UserMessage: CustomUserMessage, 13 AssistantMessage: CustomAssistantMessage, 14 }} /> 15 </ThreadPrimitive.Viewport> 16 17 <ComposerPrimitive.Root className="border-t p-4 flex gap-2"> 18 <ComposerPrimitive.Input className="flex-1 rounded-lg border px-4 py-2" /> 19 <ComposerPrimitive.Send className="bg-blue-500 text-white px-4 py-2 rounded-lg"> 20 Send 21 </ComposerPrimitive.Send> 22 </ComposerPrimitive.Root> 23 </ThreadPrimitive.Root> 24 ); 25}

Conditional Rendering

tsx
1<MessagePrimitive.If user>User only</MessagePrimitive.If> 2<MessagePrimitive.If assistant>Assistant only</MessagePrimitive.If> 3<MessagePrimitive.If running>Generating...</MessagePrimitive.If> 4<MessagePrimitive.If hasBranches>Has edit history</MessagePrimitive.If> 5 6<ComposerPrimitive.If submitting> 7 <ComposerPrimitive.Cancel>Stop</ComposerPrimitive.Cancel> 8</ComposerPrimitive.If> 9 10<ThreadPrimitive.If empty>No messages</ThreadPrimitive.If>

Content Parts

tsx
1<MessagePrimitive.Content components={{ 2 Text: ({ part }) => <p>{part.text}</p>, 3 Image: ({ part }) => <img src={part.image} alt="" />, 4 ToolCall: ({ part }) => <div>Tool: {part.toolName}</div>, 5 Reasoning: ({ part }) => <details><summary>Thinking</summary>{part.text}</details>, 6}} />

Branch Picker

tsx
1<MessagePrimitive.If hasBranches> 2 <BranchPickerPrimitive.Root className="flex items-center gap-1"> 3 <BranchPickerPrimitive.Previous>←</BranchPickerPrimitive.Previous> 4 <span><BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count /></span> 5 <BranchPickerPrimitive.Next>→</BranchPickerPrimitive.Next> 6 </BranchPickerPrimitive.Root> 7</MessagePrimitive.If>

Common Gotchas

Primitives not rendering

  • Wrap in AssistantRuntimeProvider
  • Ensure parent primitive provides context

Styles not applying

  • Primitives are unstyled by default
  • Add className or use @assistant-ui/styles

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is primitives?

Perfect for Frontend Agents needing customizable, composable UI components following Radix UI patterns. Rethinking the User Interface of AI

How do I install primitives?

Run the command: npx killer-skills add ThinkEx-OSS/thinkex. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for primitives?

Key use cases include: Composing reusable UI elements for threaded conversations, Customizing message layouts with MessagePrimitive, Enhancing user experience with ActionBar components.

Which IDEs are compatible with primitives?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for primitives?

Requires consultation of latest API at assistant-ui.com/llms.txt. Limited to components following Radix UI patterns.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add ThinkEx-OSS/thinkex. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use primitives immediately in the current project.

Related Skills

Looking for an alternative to primitives or another community skill for your workflow? Explore these related open-source skills.

View All

widget-generator

Logo of f
f

f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.

149.6k
0
AI

flags

Logo of vercel
vercel

flags is a Next.js feature management skill that enables developers to efficiently add or modify framework feature flags, streamlining React application development.

138.4k
0
Browser

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI