mantine
Mantine UIコンポーネントライブラリを活用し、Reactアプリケーションの構築を支援し、テーマ設定やフォームのバリデーション、通知機能の実装、レスポンシブなレイアウト構築などを可能にするSkill。
📜 元の英語説明(参考)
Build React applications with the Mantine UI component library. Use when a user asks to use Mantine components, configure themes, implement forms with validation, add notifications, or build responsive layouts with Mantine hooks.
🇯🇵 日本人クリエイター向け解説
Mantine UIコンポーネントライブラリを活用し、Reactアプリケーションの構築を支援し、テーマ設定やフォームのバリデーション、通知機能の実装、レスポンシブなレイアウト構築などを可能にするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o mantine.zip https://jpskill.com/download/15100.zip && unzip -o mantine.zip && rm mantine.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15100.zip -OutFile "$d\mantine.zip"; Expand-Archive "$d\mantine.zip" -DestinationPath $d -Force; ri "$d\mantine.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
mantine.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
mantineフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Mantine — フル機能の React コンポーネントライブラリ
概要
あなたは Mantine のエキスパートです。Mantine は、100 以上のカスタマイズ可能なコンポーネント、50 以上のフック、および CSS-in-JS スタイリングソリューションを備えた React コンポーネントライブラリです。フォーム処理、通知、モーダル、リッチテキスト編集、日付ピッカー、レスポンシブレイアウトなど、洗練された UI を開発者が構築するのを支援します。これらはすべて、優れた TypeScript サポートとアクセシビリティを備えています。
指示
セットアップ
npm install @mantine/core @mantine/hooks @mantine/form @mantine/notifications
npm install @mantine/dates dayjs # Date components
npm install @mantine/tiptap @tiptap/react # Rich text editor
テーマとプロバイダー
// src/App.tsx — Mantine テーマ設定
import { MantineProvider, createTheme } from "@mantine/core";
import { Notifications } from "@mantine/notifications";
import "@mantine/core/styles.css";
import "@mantine/notifications/styles.css";
const theme = createTheme({
primaryColor: "indigo",
fontFamily: "Inter, system-ui, sans-serif",
defaultRadius: "md",
colors: {
brand: ["#f0f0ff", "#d6d6ff", "#b3b3ff", "#8080ff", "#4d4dff", "#1a1aff", "#0000e6", "#0000b3", "#000080", "#00004d"],
},
components: {
Button: { defaultProps: { variant: "filled" } },
TextInput: { defaultProps: { size: "md" } },
},
});
function App() {
return (
<MantineProvider theme={theme} defaultColorScheme="auto">
<Notifications position="top-right" />
<Router />
</MantineProvider>
);
}
コンポーネント
// Mantine コンポーネントを使用したダッシュボードレイアウト
import {
AppShell, Navbar, Header, Group, Text, Badge, Card,
SimpleGrid, Stack, Button, ActionIcon, Menu, Avatar,
Progress, Table, Tabs, Tooltip, ThemeIcon,
} from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
import { notifications } from "@mantine/notifications";
import { IconBell, IconSettings, IconLogout } from "@tabler/icons-react";
function Dashboard() {
const [navOpen, { toggle }] = useDisclosure(true);
return (
<AppShell
navbar={{ width: 260, breakpoint: "sm", collapsed: { mobile: !navOpen } }}
header={{ height: 60 }}
padding="md"
>
<AppShell.Header>
<Group h="100%" px="md" justify="space-between">
<Text size="xl" fw={700}>Dashboard</Text>
<Group>
<ActionIcon variant="subtle" size="lg">
<IconBell size={20} />
</ActionIcon>
<Menu>
<Menu.Target>
<Avatar src={null} alt="User" radius="xl" size="md" />
</Menu.Target>
<Menu.Dropdown>
<Menu.Item leftSection={<IconSettings size={14} />}>Settings</Menu.Item>
<Menu.Divider />
<Menu.Item color="red" leftSection={<IconLogout size={14} />}>Logout</Menu.Item>
</Menu.Dropdown>
</Menu>
</Group>
</Group>
</AppShell.Header>
<AppShell.Main>
<SimpleGrid cols={{ base: 1, sm: 2, lg: 4 }} spacing="md">
<StatsCard title="Revenue" value="$45,200" change="+12%" />
<StatsCard title="Users" value="1,234" change="+5%" />
<StatsCard title="Orders" value="892" change="+18%" />
<StatsCard title="Churn" value="2.1%" change="-0.3%" positive />
</SimpleGrid>
</AppShell.Main>
</AppShell>
);
}
フォーム処理
// バリデーション付きの Mantine フォーム
import { useForm } from "@mantine/form";
import { TextInput, PasswordInput, Select, Checkbox, Button, Stack } from "@mantine/core";
function SignupForm() {
const form = useForm({
initialValues: { name: "", email: "", password: "", role: "", terms: false },
validate: {
name: (v) => (v.length < 2 ? "Name too short" : null),
email: (v) => (/^\S+@\S+$/.test(v) ? null : "Invalid email"),
password: (v) => (v.length < 8 ? "At least 8 characters" : null),
role: (v) => (v ? null : "Select a role"),
terms: (v) => (v ? null : "You must accept terms"),
},
});
return (
<form onSubmit={form.onSubmit((values) => console.log(values))}>
<Stack gap="sm">
<TextInput label="Name" placeholder="Your name" {...form.getInputProps("name")} />
<TextInput label="Email" placeholder="you@example.com" {...form.getInputProps("email")} />
<PasswordInput label="Password" {...form.getInputProps("password")} />
<Select
label="Role"
data={["Developer", "Designer", "Product Manager", "Other"]}
{...form.getInputProps("role")}
/>
<Checkbox label="I accept terms" {...form.getInputProps("terms", { type: "checkbox" })} />
<Button type="submit">Create Account</Button>
</Stack>
</form>
);
}
フック
// Mantine は 50 以上のユーティリティフックを提供します
import {
useDisclosure, useToggle, useDebouncedValue, useLocalStorage,
useClipboard, useMediaQuery, useHotkeys, useIdle, useNetwork,
useDocumentTitle, useIntersection, useScrollIntoView,
} from "@mantine/hooks";
// デバウンスされた検索
const [search, setSearch] = useState("");
const [debounced] = useDebouncedValue(search, 300);
// クリップボード
const clipboard = useClipboard({ timeout: 2000 });
clipboard.copy("Hello!"); // clipboard.copied は 2 秒間 true になります
// レスポンシブ
const isMobile = useMediaQuery("(max-width: 768px)");
// キーボードショートカット
useHotkeys([
["mod+K", () => openSearch()],
["mod+S", () => saveDocument()],
]);
// 型安全なローカルストレージ
const [colorScheme, setColorScheme] = useLocalStorage<"light" | "dark">({
key: "color-scheme",
defaultValue: "light",
});
例
例 1: ユーザーが mantine のセットアップを依頼
ユーザー: "プロジェクト用に mantine をセットアップしてください"
エージェントは以下を行う必要があります:
- システム要件と前提条件を確認する
- mantine をインストールまたは設定する
- 初期プロジェクト構造をセットアップする
- セットアップが正しく動作することを確認する
例 2: ユーザーが mantine で機能を構築することを依頼
ユーザー: "mantine を使用してダッシュボードを作成してください"
(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Mantine — Full-Featured React Component Library
Overview
You are an expert in Mantine, the React component library with 100+ customizable components, 50+ hooks, and a CSS-in-JS styling solution. You help developers build polished UIs with form handling, notifications, modals, rich text editing, date pickers, and responsive layouts — all with excellent TypeScript support and accessibility.
Instructions
Setup
npm install @mantine/core @mantine/hooks @mantine/form @mantine/notifications
npm install @mantine/dates dayjs # Date components
npm install @mantine/tiptap @tiptap/react # Rich text editor
Theme and Provider
// src/App.tsx — Mantine theme configuration
import { MantineProvider, createTheme } from "@mantine/core";
import { Notifications } from "@mantine/notifications";
import "@mantine/core/styles.css";
import "@mantine/notifications/styles.css";
const theme = createTheme({
primaryColor: "indigo",
fontFamily: "Inter, system-ui, sans-serif",
defaultRadius: "md",
colors: {
brand: ["#f0f0ff", "#d6d6ff", "#b3b3ff", "#8080ff", "#4d4dff", "#1a1aff", "#0000e6", "#0000b3", "#000080", "#00004d"],
},
components: {
Button: { defaultProps: { variant: "filled" } },
TextInput: { defaultProps: { size: "md" } },
},
});
function App() {
return (
<MantineProvider theme={theme} defaultColorScheme="auto">
<Notifications position="top-right" />
<Router />
</MantineProvider>
);
}
Components
// Dashboard layout with Mantine components
import {
AppShell, Navbar, Header, Group, Text, Badge, Card,
SimpleGrid, Stack, Button, ActionIcon, Menu, Avatar,
Progress, Table, Tabs, Tooltip, ThemeIcon,
} from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
import { notifications } from "@mantine/notifications";
import { IconBell, IconSettings, IconLogout } from "@tabler/icons-react";
function Dashboard() {
const [navOpen, { toggle }] = useDisclosure(true);
return (
<AppShell
navbar={{ width: 260, breakpoint: "sm", collapsed: { mobile: !navOpen } }}
header={{ height: 60 }}
padding="md"
>
<AppShell.Header>
<Group h="100%" px="md" justify="space-between">
<Text size="xl" fw={700}>Dashboard</Text>
<Group>
<ActionIcon variant="subtle" size="lg">
<IconBell size={20} />
</ActionIcon>
<Menu>
<Menu.Target>
<Avatar src={null} alt="User" radius="xl" size="md" />
</Menu.Target>
<Menu.Dropdown>
<Menu.Item leftSection={<IconSettings size={14} />}>Settings</Menu.Item>
<Menu.Divider />
<Menu.Item color="red" leftSection={<IconLogout size={14} />}>Logout</Menu.Item>
</Menu.Dropdown>
</Menu>
</Group>
</Group>
</AppShell.Header>
<AppShell.Main>
<SimpleGrid cols={{ base: 1, sm: 2, lg: 4 }} spacing="md">
<StatsCard title="Revenue" value="$45,200" change="+12%" />
<StatsCard title="Users" value="1,234" change="+5%" />
<StatsCard title="Orders" value="892" change="+18%" />
<StatsCard title="Churn" value="2.1%" change="-0.3%" positive />
</SimpleGrid>
</AppShell.Main>
</AppShell>
);
}
Form Handling
// Mantine form with validation
import { useForm } from "@mantine/form";
import { TextInput, PasswordInput, Select, Checkbox, Button, Stack } from "@mantine/core";
function SignupForm() {
const form = useForm({
initialValues: { name: "", email: "", password: "", role: "", terms: false },
validate: {
name: (v) => (v.length < 2 ? "Name too short" : null),
email: (v) => (/^\S+@\S+$/.test(v) ? null : "Invalid email"),
password: (v) => (v.length < 8 ? "At least 8 characters" : null),
role: (v) => (v ? null : "Select a role"),
terms: (v) => (v ? null : "You must accept terms"),
},
});
return (
<form onSubmit={form.onSubmit((values) => console.log(values))}>
<Stack gap="sm">
<TextInput label="Name" placeholder="Your name" {...form.getInputProps("name")} />
<TextInput label="Email" placeholder="you@example.com" {...form.getInputProps("email")} />
<PasswordInput label="Password" {...form.getInputProps("password")} />
<Select
label="Role"
data={["Developer", "Designer", "Product Manager", "Other"]}
{...form.getInputProps("role")}
/>
<Checkbox label="I accept terms" {...form.getInputProps("terms", { type: "checkbox" })} />
<Button type="submit">Create Account</Button>
</Stack>
</form>
);
}
Hooks
// Mantine provides 50+ utility hooks
import {
useDisclosure, useToggle, useDebouncedValue, useLocalStorage,
useClipboard, useMediaQuery, useHotkeys, useIdle, useNetwork,
useDocumentTitle, useIntersection, useScrollIntoView,
} from "@mantine/hooks";
// Debounced search
const [search, setSearch] = useState("");
const [debounced] = useDebouncedValue(search, 300);
// Clipboard
const clipboard = useClipboard({ timeout: 2000 });
clipboard.copy("Hello!"); // clipboard.copied is true for 2 seconds
// Responsive
const isMobile = useMediaQuery("(max-width: 768px)");
// Keyboard shortcuts
useHotkeys([
["mod+K", () => openSearch()],
["mod+S", () => saveDocument()],
]);
// Local storage with type safety
const [colorScheme, setColorScheme] = useLocalStorage<"light" | "dark">({
key: "color-scheme",
defaultValue: "light",
});
Examples
Example 1: User asks to set up mantine
User: "Help me set up mantine for my project"
The agent should:
- Check system requirements and prerequisites
- Install or configure mantine
- Set up initial project structure
- Verify the setup works correctly
Example 2: User asks to build a feature with mantine
User: "Create a dashboard using mantine"
The agent should:
- Scaffold the component or configuration
- Connect to the appropriate data source
- Implement the requested feature
- Test and validate the output
Guidelines
- Use the form library —
@mantine/formhandles validation, touched state, and nested fields; don't build your own - Theme over inline styles — Configure component defaults in the theme; avoid prop-based styling on every instance
- Hooks for logic — Mantine's hooks library (
useDisclosure,useDebouncedValue,useLocalStorage) reduces boilerplate - AppShell for layouts — Use
AppShellfor dashboard layouts with navbar, header, aside; handles responsive collapsing - Notifications system — Use
@mantine/notificationsfor toast messages; supports queue, auto-close, and custom components - CSS modules — Mantine v7 uses CSS modules by default; import component styles and extend with your own
- Dark mode built-in — Use
defaultColorScheme="auto"for system preference detection; all components adapt - Tabler icons — Use
@tabler/icons-react(free, MIT) — Mantine is designed to work with Tabler's icon set