本文へ移動
cccskills
無料GitHub で公開

ui

Use when building or editing frontend UI components, layouts, styling, design system usage, colors, dark mode, or icons.

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/compスター 2,058(GitHub 2,058 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Source Cursor rule: .cursor/rules/ui.mdc. Original Cursor alwaysApply: true.

UI Components

Design System Priority

  1. First choice: @trycompai/design-system
  2. Fallback: @trycompai/ui only if DS doesn't have the component
// ✅ Design system
import { Button, Card, Input, Sheet, Badge } from '@trycompai/design-system';
import { Add, Close, ArrowRight } from '@trycompai/design-system/icons';

// ❌ Don't use when DS has it
import { Button } from '@trycompai/ui/button';
import { Plus } from 'lucide-react';

No className on DS Components

DS components don't accept className. Use variants and props only.

// ✅ Use variants
<Button variant="destructive" size="sm" loading={isLoading}>Delete</Button>
<Button type="submit" iconRight={<ArrowRight size={16} />}>Continue</Button>
<Badge variant="outline">Active</Badge>

// ❌ TypeScript will error
<Button className="bg-red-500">Delete</Button>

Layout with Wrapper Divs

For layout concerns, wrap DS components:

// ✅ Wrapper for width
<div className="w-full">
  <Button>Full Width</Button>
</div>

// ✅ Use Stack for spacing
<Stack gap="4" direction="row">
  <Button>First</Button>
  <Button>Second</Button>
</Stack>

Componentize Repeated Patterns

If a pattern appears 2+ times, extract it:

// Repeated? Make a component
<div className="flex items-center gap-2">
  <div className="w-2 h-2 rounded-full bg-green-500" />
  <span className="text-sm">Active</span>
</div>
// → Create <StatusDot status="active" />

Extension Strategy

When you need new styling:

  1. Check existing variants - component may already support it
  2. Add a variant to the component's cva definition
  3. Create a new component if it's a genuinely new pattern
// Adding a variant
const badgeVariants = cva("...", {
  variants: {
    variant: {
      // existing...
      counter: "bg-muted text-muted-foreground tabular-nums font-mono",
    },
  },
});

Semantic Colors

Use CSS variables, not hardcoded colors:

// ✅ Semantic tokens
<div className="bg-background text-foreground border-border">
<div className="bg-muted text-muted-foreground">
<div className="bg-destructive/10 text-destructive">

// ❌ Hardcoded
<div className="bg-white text-black">
<div className="bg-[#059669]">

Dark Mode

Always support both modes:

// Status colors with dark variants
<div className="bg-green-50 dark:bg-green-950/20 text-green-600 dark:text-green-400">
<div className="bg-red-50 dark:bg-red-950/20 text-red-600 dark:text-red-400">

Icons

Carbon icons from DS, not lucide:

// ✅ Design system icons with size prop
import { Add, Close, ChevronDown } from '@trycompai/design-system/icons';
<Add size={16} />

// ❌ Don't use lucide
import { Plus, X } from 'lucide-react';
<Plus className="h-4 w-4" />

Anti-Patterns

// ❌ Never do these
<div style={{ display: 'flex' }}>              // Inline styles
<Button className="bg-red-500">               // className on DS
<div className="bg-[#059669]">                // Hardcoded colors
<div className="w-[847px]">                   // Arbitrary values

Responsive (MANDATORY — read the responsive-ui skill)

Every UI change must work on mobile (375px), tablet (768px), desktop (1280px), and large desktop (1920px) by default — nobody has to ask. Tailwind is mobile-first: write the base (mobile) layout, widen with sm:/md:/lg:/xl:. No fixed widths without a responsive strategy (hidden sm:block, w-full md:max-w-xs, or a wrapping parent). All the rules above still apply: breakpoint classes go on wrapper divs, never on DS components, and arbitrary pixel values remain an anti-pattern. Wide tables scroll inside the DS Table (overflow-x-auto), never the page. Full rules + repo patterns + checklist: .claude/skills/responsive-ui/SKILL.md.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

The contract every new or modified API endpoint must follow so it is correct for the public OpenAPI spec, the MCP server (npm @trycompai/mcp-server), the ValidationPipe, and the docs. Triggers on "new endpoint", "add API", "new DTO", "@Body", "@RequirePermission", "MCP tool", "edit controller in apps/api", "OpenAPI", or whenever editing controllers under apps/api/src/.

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/comp2,0582026年10月24日 更新

Audit & fix design system usage — migrate @trycompai/ui and lucide-react to @trycompai/design-system

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/comp2,0582026年10月24日 更新

Audit & fix hooks and API usage patterns — eliminate server actions, raw fetch, and stale patterns

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/comp2,0582026年10月24日 更新

Audit & fix RBAC and audit log compliance in API endpoints and frontend components

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/comp2,0582026年10月24日 更新

Audit & fix unit tests for permission-gated components

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/comp2,0582026年10月24日 更新

Configure Better Auth server and client, set up database adapters, manage sessions, add plugins, and handle environment variables. Use when users mention Better Auth, betterauth, auth.ts, or need to set up TypeScript authentication with email/password, OAuth, or plugin configuration.

日本語の概要は準備中です。原文の説明を表示しています。

trycompai/comp2,0582026年10月24日 更新

trycompai のスキルをすべて見る

このスキルの問題を報告する