tdesign-miniprogram — Claude Code skill: TDesign components
A skill that tells the agent how to build WeChat mini program UIs with Tencent's TDesign library: 60+ components, dark mode, theme customization.
npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a claude-codeWhat tdesign-miniprogram does
The skill kicks in when you build a WeChat mini program on top of TDesign. It carries a component reference with import paths — Button, Input, Dialog, Calendar, Table, Upload and more, grouped by category. The agent drops the right path into usingComponents and writes the matching tag in WXML.
Installing the library itself is npm i tdesign-miniprogram -S --production. Then you edit configs by hand: remove "style": "v2" from app.json or styles clash, add packNpmManually and packNpmRelationList to project.config.json, and for TypeScript projects map tdesign-miniprogram/* in tsconfig.json. Build npm in DevTools afterwards via Tools - Build npm, then tick Compile JS to ES5. Worth checking your build settings before the agent starts generating pages.
The skill also covers dark mode, style customization and the chat components. Building npm in DevTools is not optional — imports won't resolve without it.
What it helps with
- wire TDesign into a WeChat mini program without style conflicts
- find the exact import path for a component
- assemble a form from Input, Picker and Upload
- set up dark mode and theme customization
- build a chat interface from TDesign components
Example prompts for the agent
- add a t-button to this page using TDesign
- set up dark mode for my TDesign mini program
- what's the import path for the Calendar component in tdesign-miniprogram?
How to install tdesign-miniprogram
1Skills CLI (Vercel)
npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a claude-code2Manually: put the files in place
~/.claude/skills/tdesign-miniprogram/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/tdesign-miniprogram/
1Skills CLI (Vercel)
npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a codex2Manually: put the files in place
.agents/skills/tdesign-miniprogram/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a cursor2Manually: put the files in place
.cursor/skills/tdesign-miniprogram/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install joneqian/claude-skills-suite tdesign-miniprogram2Manually: put the files in place
.github/skills/tdesign-miniprogram/SKILL.md1Skills CLI (Vercel)
npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a gemini-cli2Platform CLI
gemini skills install https://github.com/joneqian/claude-skills-suite --path skills/tdesign-miniprogramManually: put the files in place
.devin/skills/tdesign-miniprogram/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about tdesign-miniprogram
How do I install tdesign-miniprogram in Claude?
Run npx skills add joneqian/claude-skills-suite --skill tdesign-miniprogram -a claude-code. The skill lands at ~/.claude/skills/tdesign-miniprogram/SKILL.md.
What does the tdesign-miniprogram skill do?
It gives the agent a reference for TDesign components in WeChat mini programs: categories, import paths, WXML usage and theme setup.
What has to change in the project after installing the library?
Remove "style": "v2" from app.json, add packNpmManually and packNpmRelationList to project.config.json, and map tdesign-miniprogram/* in tsconfig.json for TypeScript. Then build npm in DevTools.
Source text
SKILL.md · MIT
---
name: tdesign-miniprogram
description: TDesign Mini Program UI component library by Tencent. Use for building WeChat mini apps with TDesign components, design system, and best practices.
---
# TDesign Mini Program Skill
TDesign WeChat Mini Program component library, an enterprise-level design system by Tencent. Provides 60+ high-quality components with dark mode support, theme customization, and more.
## When to Use This Skill
This skill should be triggered when:
- Developing WeChat Mini Programs with TDesign component library
- Using TDesign UI components (Button, Input, Dialog, etc.)
- Implementing interfaces following TDesign design specifications
- Configuring TDesign themes and style customization
- Building AI chat interfaces (using TDesign Chat components)
- Implementing dark mode adaptation
## Quick Start
### Installation
```bash
npm i tdesign-miniprogram -S --production
```
### Modify app.json
Remove `"style": "v2"` from `app.json` to avoid style conflicts.
### Modify project.config.json
Add the following to the `setting` section of `project.config.json`:
```json
{
"setting": {
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "./package.json",
"miniprogramNpmDistDir": "./"
}
]
}
}
```
### Modify tsconfig.json (TypeScript projects)
```json
{
"paths": {
"tdesign-miniprogram/*": [
"./miniprogram/miniprogram_npm/tdesign-miniprogram/*"
]
}
}
```
> After modifying project.config.json, build npm in WeChat DevTools: `Tools - Build npm`
> After successful build, check `Compile JS to ES5`
### Using Components
Import in page or component JSON file:
```json
{
"usingComponents": {
"t-button": "tdesign-miniprogram/button/button"
}
}
```
Use in WXML:
```html
<t-button theme="primary">Button</t-button>
```
## Component Categories
### Basic Components (6)
| Component | Description | Import Path |
| --------- | ---------------------- | ------------------------------------- |
| Button | Button | `tdesign-miniprogram/button/button` |
| Divider | Divider | `tdesign-miniprogram/divider/divider` |
| Fab | Floating Action Button | `tdesign-miniprogram/fab/fab` |
| Icon | Icon | `tdesign-miniprogram/icon/icon` |
| Layout | Layout | `tdesign-miniprogram/row/row` |
| Link | Link | `tdesign-miniprogram/link/link` |
### Navigation Components (8)
| Component | Description | Import Path |
| --------- | --------------- | --------------------------------------- |
| BackTop | Back to Top | `tdesign-miniprogram/back-top/back-top` |
| Drawer | Drawer | `tdesign-miniprogram/drawer/drawer` |
| Indexes | Index List | `tdesign-miniprogram/indexes/indexes` |
| Navbar | Navigation Bar | `tdesign-miniprogram/navbar/navbar` |
| SideBar | Side Navigation | `tdesign-miniprogram/side-bar/side-bar` |
| Steps | Steps | `tdesign-miniprogram/steps/steps` |
| TabBar | Bottom Tab Bar | `tdesign-miniprogram/tab-bar/tab-bar` |
| Tabs | Tabs | `tdesign-miniprogram/tabs/tabs` |
### Input Components (16)
| Component | Description | Import Path |
| -------------- | ---------------- | ------------------------------------------------------- |
| Calendar | Calendar | `tdesign-miniprogram/calendar/calendar` |
| Cascader | Cascader | `tdesign-miniprogram/cascader/cascader` |
| CheckBox | Checkbox | `tdesign-miniprogram/checkbox/checkbox` |
| DateTimePicker | Date Time Picker | `tdesign-miniprogram/date-time-picker/date-time-picker` |
| Input | Input | `tdesign-miniprogram/input/input` |
| Picker | Picker | `tdesign-miniprogram/picker/picker` |
| Radio | Radio | `tdesign-miniprogram/radio/radio` |
| Rate | Rate | `tdesign-miniprogram/rate/rate` |
| Search | Search | `tdesign-miniprogram/search/search` |
| Slider | Slider | `tdesign-miniprogram/slider/slider` |
| Stepper | Stepper | `tdesign-miniprogram/stepper/stepper` |
| Switch | Switch | `tdesign-miniprogram/switch/switch` |
| Textarea | Textarea | `tdesign-miniprogram/textarea/textarea` |
| TreeSelect | Tree Select | `tdesign-miniprogram/tree-select/tree-select` |
| Upload | Upload | `tdesign-miniprogram/upload/upload` |
| Form | Form | `tdesign-miniprogram/form/form` |
### Data Display Components (18)
| Component | Description | Import Path |
| ----------- | ------------ | ----------------------------------------------- |
| Avatar | Avatar | `tdesign-miniprogram/avatar/avatar` |
| Badge | Badge | `tdesign-miniprogram/badge/badge` |
| Cell | Cell | `tdesign-miniprogram/cell/cell` |
| Collapse | Collapse | `tdesign-miniprogram/collapse/collapse` |
| CountDown | Countdown | `tdesign-miniprogram/count-down/count-down` |
| Empty | Empty State | `tdesign-miniprogram/empty/empty` |
| Footer | Footer | `tdesign-miniprogram/footer/footer` |
| Grid | Grid | `tdesign-miniprogram/grid/grid` |
| Image | Image | `tdesign-miniprogram/image/image` |
| ImageViewer | Image Viewer | `tdesign-miniprogram/image-viewer/image-viewer` |
| Progress | Progress | `tdesign-miniprogram/progress/progress` |
| Result | Result | `tdesign-miniprogram/result/result` |
| Skeleton | Skeleton | `tdesign-miniprogram/skeleton/skeleton` |
| Sticky | Sticky | `tdesign-miniprogram/sticky/sticky` |
| Swiper | Swiper | `tdesign-miniprogram/swiper/swiper` |
| Table | Table | `tdesign-miniprogram/table/table` |
| Tag | Tag | `tdesign-miniprogram/tag/tag` |
| List | List | `tdesign-miniprogram/list/list` |
### Feedback Components (12)
| Component | Description | Import Path |
| --------------- | ----------------- | --------------------------------------------------------- |
| ActionSheet | Action Sheet | `tdesign-miniprogram/action-sheet/action-sheet` |
| Dialog | Dialog | `tdesign-miniprogram/dialog/dialog` |
| DropdownMenu | Dropdown Menu | `tdesign-miniprogram/dropdown-menu/dropdown-menu` |
| Guide | Guide | `tdesign-miniprogram/guide/guide` |
| Loading | Loading | `tdesign-miniprogram/loading/loading` |
| Message | Message | `tdesign-miniprogram/message/message` |
| NoticeBar | Notice Bar | `tdesign-miniprogram/notice-bar/notice-bar` |
| Overlay | Overlay | `tdesign-miniprogram/overlay/overlay` |
| Popup | Popup | `tdesign-miniprogram/popup/popup` |
| PullDownRefresh | Pull Down Refresh | `tdesign-miniprogram/pull-down-refresh/pull-down-refresh` |
| SwipeCell | Swipe Cell | `tdesign-miniprogram/swipe-cell/swipe-cell` |
| Toast | Toast | `tdesign-miniprogram/toast/toast` |
### AI Chat Components (9)
| Component | Description | Import Path |
| ------------- | --------------- | --------------------------------------------------- |
| ChatList | Chat List | `tdesign-miniprogram/chat-list/chat-list` |
| ChatMessage | Chat Message | `tdesign-miniprogram/chat-message/chat-message` |
| ChatSender | Chat Sender | `tdesign-miniprogram/chat-sender/chat-sender` |
| ChatContent | Chat Content | `tdesign-miniprogram/chat-content/chat-content` |
| ChatActionbar | Chat Action Bar | `tdesign-miniprogram/chat-actionbar/chat-actionbar` |
| ChatLoading | Chat Loading | `tdesign-miniprogram/chat-loading/chat-loading` |
| ChatMarkdown | Chat Markdown | `tdesign-miniprogram/chat-markdown/chat-markdown` |
| ChatThinking | Chat Thinking | `tdesign-miniprogram/chat-thinking/chat-thinking` |
| Attachments | Attachments | `tdesign-miniprogram/attachments/attachments` |
## Common Patterns
### Button
```html
<!-- Basic Buttons -->
<t-button theme="primary" size="large">Primary Button</t-button>
<t-button theme="light" size="large">Light Button</t-button>
<t-button size="large">Default Button</t-button>
<!-- Outline and Text Buttons -->
<t-button theme="primary" size="large" variant="outline"
>Outline Button</t-button
>
<t-button theme="primary" size="large" variant="text">Text Button</t-button>
<!-- Icon Button -->
<t-button
theme="primary"
icon="app"
content="Icon Button"
size="large"
></t-button>
<!-- Loading State -->
<t-button theme="primary" size="large" loading>Loading</t-button>
<!-- Disabled State -->
<t-button theme="primary" size="large" disabled>Disabled</t-button>
<!-- Block Button -->
<t-button theme="primary" size="large" block>Block Button</t-button>
<!-- Ghost Button (transparent background) -->
<t-button theme="primary" ghost size="large">Ghost Button</t-button>
```
### Input
```json
{
"usingComponents": {
"t-input": "tdesign-miniprogram/input/input"
}
}
```
```html
<t-input
label="Label"
placeholder="Please enter"
value="{{value}}"
bind:change="onChange"
/>
```
### Dialog
```json
{
"usingComponents": {
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
```
```html
<t-dialog
visible="{{visible}}"
title="Dialog Title"
content="Dialog content"
confirm-btn="Confirm"
cancel-btn="Cancel"
bind:confirm="onConfirm"
bind:cancel="onCancel"
/>
```
### Toast
```javascript
import Toast from 'tdesign-miniprogram/toast/index';
Toast({
context: this,
selector: '#t-toast',
message: 'Toast message',
});
```
### AI Chat Interface
```json
{
"usingComponents": {
"t-chat-list": "tdesign-miniprogram/chat-list/chat-list",
"t-chat-message": "tdesign-miniprogram/chat-message/chat-message",
"t-chat-sender": "tdesign-miniprogram/chat-sender/chat-sender"
}
}
```
```html
<t-chat-list layout="single">
<t-chat-message
avatar="{{item.avatar}}"
name="{{item.name}}"
content="{{item.content}}"
role="{{item.role}}"
/>
<view slot="footer">
<t-chat-sender bind:send="onSend" />
</view>
</t-chat-list>
```
```javascript
Component({
data: {
messages: [
{
role: 'user',
content: [{ type: 'text', data: 'Hello' }],
},
{
role: 'assistant',
content: [{ type: 'text', data: 'Hello! How can I help you?' }],
},
],
},
methods: {
onSend(e) {
const { value } = e.detail;
// Handle send message
},
},
});
```
## Style Customization
### Method 1: Using Style Attribute
```html
<t-button style="color: red">Custom Style</t-button>
<t-button custom-style="color: red">Custom Style</t-button>
```
### Method 2: Disable Style Isolation
Override styles directly in page:
```css
.t-button--primary {
background-color: navy;
}
```
In custom components, enable `styleIsolation`:
```javascript
Component({
options: {
styleIsolation: 'shared',
},
});
```
### Method 3: External Style Classes
```html
<t-button t-class="my-button-class">Button</t-button>
```
```css
.my-button-class {
background-color: navy !important;
}
```
### Method 4: CSS Variables
TDesign provides rich CSS variables for theme customization:
```css
page {
--td-button-primary-bg-color: #0052d9;
--td-button-border-radius: 8rpx;
}
```
## Dark Mode
### 1. Modify app.json
```json
{
"darkmode": true
}
```
### 2. Import Design Token
In `app.wxss`:
```css
@import 'miniprogram_npm/tdesign-miniprogram/common/style/theme/_index.wxss';
```
### 3. Use CSS Variables
```css
.text {
color: var(--td-text-color-secondary);
}
```
### 4. Special Component Adaptation
For components wrapped in `custom-tab-bar` or `root-portal`, add `.page` class:
```html
<view class="page">
<t-tab-bar />
</view>
```
## Reference Files
This skill includes comprehensive documentation in `references/`:
### Basic Documentation
- **miniprogram/getting-started.md** - Quick start guide
- **miniprogram/overview.md** - Component overview
- **miniprogram/custom-style.md** - Style customization
- **miniprogram/custom-theme.md** - Theme customization
- **miniprogram/dark-mode.md** - Dark mode
### Component Documentation (miniprogram/components/)
- **button.md** - Button
- **input.md** - Input
- **dialog.md** - Dialog
- **form.md** - Form
- ... more component docs
### AI Chat Component Documentation (miniprogram-chat/)
- **getting-started.md** - Chat component quick start
- **sse.md** - SSE streaming
- **components/chat-message.md** - Chat message
- **components/chat-sender.md** - Chat sender
- **components/chat-list.md** - Chat list
- ... more chat component docs
Use `Read` tool to access specific reference files when detailed API information is needed.
## Key Requirements
- Minimum base library version: `^2.12.0`
- Build npm in WeChat DevTools required
- Remove `"style": "v2"` from `app.json`
## Resources
- [TDesign Official Documentation](https://tdesign.tencent.com/miniprogram/overview)
- [GitHub Repository](https://github.com/Tencent/tdesign-miniprogram)
- [Component Demo Mini Program](https://developers.weixin.qq.com/s/NSVqRNmh8l5a)
## Notes
- This skill was automatically generated from TDesign official documentation
- Reference files preserve the structure and examples from source docs
- Some reference content remains in Chinese as per official documentation
© joneqian · MIT · joneqian/claude-skills-suite