mcpField
T
tdesign-vue-next

tdesign-vue-next

github.com/yunfeizhuデザイン・UI10104 回インストール38 週間前に更新
リポジトリ

tdesign-vue-next について

tdesign-vue-next 1.x と Vue 3.3+ 向けの開発ガイドスキルです。開発者による公式ドキュメント準拠のコンポーネント選定を支援し、テーブル、フォーム、テーマ、Chat などの複雑な用途には個別のリファレンスを案内します。

主な機能

  1. 01公式ドキュメントに沿った選定
  2. 02高度なフォームとテーブルのガイド
  3. 03テーマとダークモードのリファレンス
  4. 04Vue 3.3+ と TypeScript の指針
  5. 05実行可能なサンプルの要件

活用シーン

  1. 01Vue インターフェースの部品選定
  2. 02大規模またはサーバー側テーブルの実装
  3. 03バリデーションと動的フォーム項目の追加
  4. 04テーマまたは AI チャットの設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/yunfeizhu/tdesign-vue-next-skill --skill tdesign-vue-next

インストール後、Claude Code で/tdesign-vue-nextを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
cascader-advanced.md
chat-advanced.md
dark-mode.md
dialog-drawer-advanced.md
form-advanced.md
select-advanced.md
table-advanced.md
tdesign-v1.md
theming-advanced.md
tree-advanced.md
upload-advanced.md

詳細

TDesign Vue Next

S - スコープ

  • 対象:tdesign-vue-next@^1 と Vue 3.3 以降
  • 対象範囲:基本コンポーネント、レイアウトコンポーネント、ナビゲーションコンポーネント、入力コンポーネント、データ表示コンポーネント、フィードバックコンポーネント、テーマのカスタマイズ、ダークモード、Chat コンポーネント
  • 対象外:ドキュメント化されていない内部 API、DOM 操作によるハック、TDesign の他の技術スタック(React/Miniprogram)
特に指定がない場合のデフォルト設定
  • 言語:TypeScript + <script setup> 構文
  • スタイル:テーマ設定には CSS 変数と ConfigProvider を使用し、コンポーネント内部のクラス名を直接上書きしないでください
  • プロバイダー:統一した設定のため、アプリのルートで ConfigProvider を 1 つだけ使用してください
  • アイコン:tdesign-icons-vue-next アイコンライブラリを使用してください
  • インポート:コンポーネントを必要に応じてインポートしてください。import { Button } from 'tdesign-vue-next'
スコープのルール(必ず遵守)
  1. TDesign の公式ドキュメントに記載されている API のみを使用してください
  2. props、イベント、コンポーネント名を作り出さないでください
  3. 型チェックを回避するために @ts-ignore を使用しないでください。型に関する問題は、まず公式の型定義を確認してください
  4. バグの可能性がある場合や、ドキュメントと動作に食い違いがある場合は、ユーザーに明確に伝え、Issue の提出を案内してください
  5. サンプルコードは、疑似コードや省略を示すプレースホルダーを含めず、そのまま実行できるものにしてください
複雑な機能のトリガー(該当する Reference を必ず開く)
トリガー条件リファレンス
動的フォーム(FormItem の追加/削除)、フィールド間検証、非同期検証references/form-advanced.md
サーバー側のソート/フィルタリング/ページネーション、仮想スクロール、編集可能なテーブル、ツリーテーブルreferences/table-advanced.md
リモート検索、大規模データセット、ページネーション付き読み込み、カスタムレンダリングreferences/select-advanced.md
ファイルリストの制御、中断後に再開できるアップロード、カスタムアップロードリクエストreferences/upload-advanced.md
ノードの非同期読み込み、checkStrictly、仮想スクロールreferences/tree-advanced.md
非同期読み込み、動的オプション、カスタムパネルreferences/cascader-advanced.md
Dialog/Drawer のネスト、命令型の呼び出し、クローズのインターセプトreferences/dialog-drawer-advanced.md
テーマの高度なカスタマイズ、動的なテーマ切り替え、コンポーネント単位のスタイル上書きreferences/theming-advanced.md
ダークモードの切り替え、システム設定との同期、ローカルのダークモードreferences/dark-mode.md
AI チャットコンポーネント、ストリーミング応答、カスタムメッセージレンダリングreferences/chat-advanced.md
TDesign Vue Next 1.x のバージョン間の違い、アップグレードガイドreferences/tdesign-v1.md
Reference インデックス
トピック説明Reference
バージョンリファレンス1.x バージョンの範囲、アップグレードに関する注意事項references/tdesign-v1.md
フォームの高度な機能動的フォーム、連動バリデーション、非同期バリデーションreferences/form-advanced.md
テーブルの高度な機能仮想スクロール、サーバーサイドデータ、編集可能なセルreferences/table-advanced.md
セレクトの高度な機能リモート検索、ページネーション、カスタムオプションreferences/select-advanced.md
アップロードの高度な機能制御されたアップロード、カスタムリクエスト、再開可能なアップロードreferences/upload-advanced.md
ツリーの高度な機能非同期読み込み、checkStrictly、仮想スクロールreferences/tree-advanced.md
カスケーダーの高度な機能非同期読み込み、動的パネルreferences/cascader-advanced.md
ダイアログ/ドロワーの高度な機能ネストされたレイヤー、命令型呼び出しreferences/dialog-drawer-advanced.md
テーマのカスタマイズCSS 変数、Design Token、動的テーマreferences/theming-advanced.md
ダークモードモード切り替え、システム設定、ローカルのダークモードreferences/dark-mode.md
チャットコンポーネントAI チャット、ストリーミング応答、メッセージのレンダリングreferences/chat-advanced.md

P - プロセス

1) コンポーネント階層を特定する
User requirements
  ├── Basic display → Button / Link / Icon / Typography
  ├── Layout structure → Layout / Grid / Space / Divider
  ├── Navigation interaction → Menu / Tabs / Breadcrumb / Steps / Pagination
  ├── Data input → Form / Input / Select / DatePicker / Upload / ...
  ├── Data display → Table / List / Tree / Card / Descriptions / ...
  ├── Feedback → Message / Notification / Dialog / Drawer / Loading
  └── Advanced scenarios → Chat (AI conversation)
2) 提案を行う前にコンテキストを確認する

コンポーネントを提案する前に、次の点を確認してください。

  • Vue のバージョン(3.3 以降を推奨)
  • ConfigProvider が設定されているか
  • ダークモードへの対応が必要か
  • 特別な i18n 要件があるか
  • データ量(仮想スクロールが必要かどうかに影響します)
3) まず ConfigProvider を設定する
<template>
  <ConfigProvider :global-config="globalConfig">
    <App />
  </ConfigProvider>
</template>

<script setup lang="ts">
import { ConfigProvider } from "tdesign-vue-next";

const globalConfig = {
  // Global configuration
};
</script>
4) コンポーネントの選択ルール
シナリオ推奨コンポーネント備考
シンプルなリスト表示Listデータ量が少なく、複雑な操作がない場合
複雑なデータテーブルTable並べ替え、フィルタリング、ページネーションに対応
大規模なデータテーブルTable + virtual-scroll仮想スクロールを有効にする
ツリーデータの選択TreeSelectツリーの単一選択/複数選択
カスケード選択Cascader複数レベルの連動選択
シンプルなドロップダウンSelect選択肢の数が中程度の場合
リモート検索セレクトSelect + filterable + remoteローカルフィルタリングを無効にする
ファイルのアップロードUploadドラッグ操作、複数ファイルに対応
フォーム入力Form + FormItemバリデーションと送信を一元管理
軽い通知Message操作結果のフィードバック、自動的に閉じる
重要な通知Notificationユーザーの確認が必要、またはアクションを含む場合
確認アクションDialog / Popconfirmコンテキストに応じて選択する
サイドパネルの詳細Drawerページの流れを中断しない場合
AI との会話Chatストリーミングメッセージ、複数ターンの対話
5) フォームの判断フロー
Need to collect user input?
  ├── Yes → Use Form wrapper
  │     ├── Need dynamic add/remove fields? → See form-advanced.md
  │     ├── Need cross-field linking? → See form-advanced.md
  │     └── Simple form → Use FormItem + rules
  └── No → Use input component directly
6) テーブルの判断フロー
Need to display list data?
  ├── Data > 1000 rows? → Enable virtual scroll, see table-advanced.md
  ├── Need server-side pagination/sorting? → See table-advanced.md
  ├── Need editable cells? → See table-advanced.md
  └── Simple table → Use Table + columns + data
7) テーマのカスタマイズに関する判断フロー
Need to customize theme?
  ├── Only modify brand color → ConfigProvider theme prop
  ├── Modify multiple tokens → Override CSS variables
  ├── Deep customization → See theming-advanced.md
  └── Dark mode → See dark-mode.md
8) 複雑なシナリオはReferenceに案内する

複雑なトリガーの表からトリガー条件を特定した場合は、必ず次の対応を行ってください。

  1. これが複雑なシナリオであることをユーザーに伝えます
  2. 対応するReferenceドキュメントを開きます
  3. Referenceで推奨されているパターンに基づいて提案します
9) アクセシビリティとパフォーマンスの確認
  • フォームコントロールに適切なlabelが設定されていることを確認します
  • 大量のデータを扱うシナリオでは、仮想スクロールまたはページネーションを有効にします
  • template内で複雑な計算を行わず、computedを使用します
  • リストのレンダリングで安定したkeyを設定します

O - 出力

必要に応じて出力に含める内容
  1. コンポーネントの推奨:コンポーネント名と選定理由
  2. 最小限の設定:必要なConfigProviderの設定
  3. コード例:そのまま実行できる<script setup>コード
  4. パフォーマンスのヒント:大量のデータや頻繁な更新が発生するシナリオに関する注意事項
  5. Referenceのパス:複雑なシナリオに対応するReferenceドキュメントを案内します
  6. 公式ドキュメントへのリンク:関連コンポーネントの公式ドキュメントURL
出力禁止事項
  1. 検証されていないAPIやprops
  2. 特定の内部実装に依存するハックコード
  3. 不完全なコードスニペット(importや重要な設定の不足)
  4. 他のTDesignテックスタック(React/Miniprogram)向けのコード
  5. ユーザーのVueバージョンと互換性のない構文
回帰チェックリスト
  • ConfigProvider:ルートコンポーネントが設定され、テーマトークンが有効になっていますか
  • Form:rulesが定義され、バリデーションのトリガー(trigger)が正しく、modelが双方向バインディングされていますか
  • Table:row-keyが安定した一意の値を提供し、columnsがcomputedでキャッシュされていますか
  • Select:リモート検索でローカルフィルタリングが無効になっていますか(filterable + :filterがtrueを返す)
  • Upload:制御モードのv-model:filesが正しく更新され、actionまたはrequestMethodが設定されていますか
  • Tree/TreeSelect:keysの設定がデータ構造と一致し、非同期読み込みのload関数がPromiseを返していますか
  • Dialog/Drawer:v-model:visibleが双方向バインディングされ、シナリオに応じてdestroyOnCloseが設定されていますか
  • ダークモード:<html>またはルート要素にtheme-mode属性が追加されていますか
  • アイコン:アイコンがtdesign-icons-vue-nextから正しくインポートされていますか
  • TypeScript:コンポーネントpropsの型が正しく、イベントコールバックのパラメーター型が一致していますか

クイックリファレンス

インストール
npm install tdesign-vue-next
# Icon library
npm install tdesign-icons-vue-next
一括インポート
// main.ts
import { createApp } from "vue";
import TDesign from "tdesign-vue-next";
import "tdesign-vue-next/es/style/index.css";
import App from "./App.vue";

createApp(App).use(TDesign).mount("#app");
オンデマンドインポート(推奨)
// main.ts
import { createApp } from "vue";
import { Button, Input, Form, FormItem } from "tdesign-vue-next";
import "tdesign-vue-next/es/style/index.css";
import App from "./App.vue";

const app = createApp(App);
app.use(Button).use(Input).use(Form).use(FormItem);
app.mount("#app");
最小限の例
<template>
  <ConfigProvider>
    <Form :model="formData" :rules="rules" @submit="onSubmit">
      <FormItem label="Username" name="username">
        <Input v-model="formData.username" placeholder="Enter username" />
      </FormItem>
      <FormItem>
        <Button theme="primary" type="submit">Submit</Button>
      </FormItem>
    </Form>
  </ConfigProvider>
</template>

<script setup lang="ts">
import { reactive } from "vue";
import {
  ConfigProvider,
  Form,
  FormItem,
  Input,
  Button,
} from "tdesign-vue-next";
import type { FormRules, SubmitContext } from "tdesign-vue-next";

const formData = reactive({
  username: "",
});

const rules: FormRules<typeof formData> = {
  username: [{ required: true, message: "Username is required" }],
};

const onSubmit = ({ validateResult }: SubmitContext) => {
  if (validateResult === true) {
    console.log("Submit successful", formData);
  }
};
</script>
公式リソース

コメント